Example #1
0
void SequenceUpdateTest::createCallBack(Alignment *alignment) {
    hal_size_t alignmentSize = alignment->getNumGenomes();
    CuAssertTrue(_testCase, alignmentSize == 0);

    Genome *ancGenome = alignment->addRootGenome("AncGenome", 0);

    size_t numSequences = 1000;
    vector<Sequence::Info> seqVec;
    for (size_t i = 0; i < numSequences; ++i) {
        hal_size_t len = 1 + i * 5 + i;
        string name = "sequence" + std::to_string(i);
        seqVec.push_back(Sequence::Info(name, len, i, i * 2));
    }
    ancGenome->setDimensions(seqVec);
    alignment->closeGenome(ancGenome);
    ancGenome = alignment->openGenome("AncGenome");

    vector<Sequence::UpdateInfo> updateVec;
    for (size_t i = 0; i < numSequences / 2; ++i) {
        const Sequence *sequence = ancGenome->getSequence("sequence" + std::to_string(i));
        updateVec.push_back(Sequence::UpdateInfo(sequence->getName(), i * 7));
    }
    ancGenome->updateTopDimensions(updateVec);

    updateVec.clear();
    for (size_t i = 0; i < numSequences / 3; ++i) {
        const Sequence *sequence = ancGenome->getSequence("sequence" + std::to_string(i));
        updateVec.push_back(Sequence::UpdateInfo(sequence->getName(), i * 5));
    }
    ancGenome->updateBottomDimensions(updateVec);
}