Exemplo n.º 1
0
    const Genome *
Mutator::mutate(const Genome &genome) const
{
  Genome *newGenome = new Genome(genome.getCountOfBases() + basesGained,genome.getCountOfBases() + basesGained);
    int nPieces = genome.getNumPieces();
    const Genome::Piece *pieces = genome.getPieces();
    for (int i = 0; i < nPieces; ++i) {
        const Genome::Piece &piece = pieces[i];
        unsigned start = piece.beginningOffset;
        unsigned end = i + 1 < nPieces ? pieces[i + 1].beginningOffset : genome.getCountOfBases();
        unsigned size = end - start;
        const Base *bases = genome.getSubstring(start, size);
        const char *name = piece.name;
        // printf("DEBUG: mutating %s of size %u, from %u to %u\n", name, size, start, end);
        newGenome->startPiece(name);
        getOrElse(chromMutators, string(name)).mutate(bases, bases + size, newGenome);
    }
    return newGenome;
}
Exemplo n.º 2
0
 Pos getTranslation(const string &chrom, Pos pos) const {
     return getOrElse(chromMutators, chrom).getTranslation(pos);
 }
Exemplo n.º 3
0
const Value& EntityMap<Key, Value>::getOrElse(WeakPointer<const Key> key, const Value& value) const {
  return getOrElse(key->getUniqueId(), value);
}
Exemplo n.º 4
0
const Value& EntityMap<Key, Value>::getOrElse(const Key* key, const Value& value) const {
  return getOrElse(key->getUniqueId(), value);
}