void MappedSegmentMapAcrossTest::testTopSegment(AlignmentConstPtr alignment, TopSegmentIteratorConstPtr top) { const Genome* parent = top->getGenome()->getParent(); const Genome* other = top->getGenome()->getName() == "child1" ? alignment->openGenome("child2") : alignment->openGenome("child1"); set<MappedSegmentConstPtr> results; top->getMappedSegments(results, other, NULL, false); CuAssertTrue(_testCase, results.size() == 1); MappedSegmentConstPtr mseg = *results.begin(); CuAssertTrue(_testCase, mseg->getSource()->getGenome() == top->getGenome()); CuAssertTrue(_testCase, mseg->getSource()->getStartPosition() == top->getStartPosition()); CuAssertTrue(_testCase, mseg->getSource()->getLength() == top->getLength()); CuAssertTrue(_testCase, mseg->getSource()->getReversed() == top->getReversed()); BottomSegmentIteratorConstPtr bottom = parent->getBottomSegmentIterator(); bottom->toParent(top); TopSegmentIteratorConstPtr sister = other->getTopSegmentIterator(); sister->toChildG(bottom, other); CuAssertTrue(_testCase, mseg->getGenome() == sister->getGenome()); CuAssertTrue(_testCase, mseg->getStartPosition() == sister->getStartPosition()); CuAssertTrue(_testCase, mseg->getLength() == sister->getLength()); CuAssertTrue(_testCase, mseg->getReversed() == sister->getReversed()); }
void MappedSegmentMapDownTest::testBottomSegment( AlignmentConstPtr alignment, BottomSegmentIteratorConstPtr bottom, hal_size_t childIndex) { const Genome* child = bottom->getGenome()->getChild(childIndex); set<MappedSegmentConstPtr> results; bottom->getMappedSegments(results, child, NULL, false); CuAssertTrue(_testCase, results.size() == 1); MappedSegmentConstPtr mseg = *results.begin(); CuAssertTrue(_testCase, mseg->getSource()->getGenome() == bottom->getGenome()); CuAssertTrue(_testCase, mseg->getSource()->getStartPosition() == bottom->getStartPosition()); CuAssertTrue(_testCase, mseg->getSource()->getLength() == bottom->getLength()); CuAssertTrue(_testCase, mseg->getSource()->getReversed() == bottom->getReversed()); TopSegmentIteratorConstPtr top = child->getTopSegmentIterator(); top->toChild(bottom, childIndex); CuAssertTrue(_testCase, mseg->getGenome() == top->getGenome()); CuAssertTrue(_testCase, mseg->getStartPosition() == top->getStartPosition()); CuAssertTrue(_testCase, mseg->getLength() == top->getLength()); CuAssertTrue(_testCase, mseg->getReversed() == top->getReversed()); }
void MappedSegmentMapUpTest::testTopSegment(AlignmentConstPtr alignment, TopSegmentIteratorConstPtr top, const string& ancName) { const Genome* parent = alignment->openGenome(ancName); set<MappedSegmentConstPtr> results; top->getMappedSegments(results, parent, NULL, false); CuAssertTrue(_testCase, results.size() == 1); MappedSegmentConstPtr mseg = *results.begin(); CuAssertTrue(_testCase, mseg->getSource()->getGenome() == top->getGenome()); CuAssertTrue(_testCase, mseg->getSource()->getStartPosition() == top->getStartPosition()); CuAssertTrue(_testCase, mseg->getSource()->getLength() == top->getLength()); CuAssertTrue(_testCase, mseg->getSource()->getReversed() == top->getReversed()); BottomSegmentIteratorConstPtr bottom = parent->getBottomSegmentIterator(); bottom->toParent(top); // extra hop for when top is in grand child if (bottom->getGenome() != parent) { TopSegmentIteratorConstPtr temp = bottom->getGenome()->getTopSegmentIterator(); temp->toParseUp(bottom); bottom->toParent(temp); } CuAssertTrue(_testCase, mseg->getGenome() == bottom->getGenome()); CuAssertTrue(_testCase, mseg->getStartPosition() == bottom->getStartPosition()); CuAssertTrue(_testCase, mseg->getLength() == bottom->getLength()); CuAssertTrue(_testCase, mseg->getReversed() == bottom->getReversed()); }
void MappedSegmentParseTest::testTopSegment(AlignmentConstPtr alignment, TopSegmentIteratorConstPtr top) { const Genome* parent = alignment->openGenome("parent"); set<MappedSegmentConstPtr> results; top->getMappedSegments(results, parent, NULL, false); vector<bool> covered(top->getLength(), false); CuAssertTrue(_testCase, results.size() >= 1); set<MappedSegmentConstPtr>::iterator i = results.begin(); for (; i != results.end(); ++i) { MappedSegmentConstPtr mseg = *i; CuAssertTrue(_testCase, mseg->getSource()->getGenome() == top->getGenome()); CuAssertTrue(_testCase, mseg->getGenome() == parent); for (hal_index_t j = mseg->getStartPosition(); j <= mseg->getEndPosition(); ++j) { CuAssertTrue(_testCase, covered[j] == false); covered[j] = true; } CuAssertTrue(_testCase, mseg->getStartPosition() == mseg->getSource()->getStartPosition()); CuAssertTrue(_testCase, mseg->getEndPosition() == mseg->getSource()->getEndPosition()); set<MappedSegmentConstPtr> tResults; mseg->getMappedSegments(tResults, top->getGenome(), NULL, false); CuAssertTrue(_testCase, tResults.size() == 1); MappedSegmentConstPtr tmseg = *tResults.begin(); CuAssertTrue(_testCase, tmseg->getGenome() == top->getGenome()); CuAssertTrue(_testCase, tmseg->getSource()->getGenome() == mseg->getGenome()); CuAssertTrue(_testCase, tmseg->getStartPosition() == mseg->getStartPosition()); CuAssertTrue(_testCase, tmseg->getEndPosition() == mseg->getEndPosition()); CuAssertTrue(_testCase, tmseg->getSource()->getStartPosition() == mseg->getStartPosition()); CuAssertTrue(_testCase, tmseg->getSource()->getEndPosition() == mseg->getEndPosition()); } }
void MappedSegmentMapExtraParalogsTest::checkCallBack(AlignmentConstPtr alignment) { validateAlignment(alignment); const Genome *grandChild1 = alignment->openGenome("grandChild1"); const Genome *grandChild2 = alignment->openGenome("grandChild2"); const Genome *root = alignment->openGenome("root"); TopSegmentIteratorConstPtr top = grandChild2->getTopSegmentIterator(); set<MappedSegmentConstPtr> results; // First, check that by default we will only get the homologies in // or before the MRCA. (in this case, just seg 0 of grandChild1). top->getMappedSegments(results, grandChild1, NULL, true); CuAssertTrue(_testCase, results.size() == 1); MappedSegmentConstPtr mseg = *results.begin(); // Source information should be preserved CuAssertTrue(_testCase, mseg->getSource()->getGenome() == top->getGenome()); CuAssertTrue(_testCase, mseg->getSource()->getStartPosition() == top->getStartPosition()); CuAssertTrue(_testCase, mseg->getSource()->getLength() == top->getLength()); CuAssertTrue(_testCase, mseg->getSource()->getReversed() == top->getReversed()); // Check target information is correct CuAssertTrue(_testCase, mseg->getGenome() == grandChild1); CuAssertTrue(_testCase, mseg->getStartPosition() == 2); CuAssertTrue(_testCase, mseg->getLength() == 3); CuAssertTrue(_testCase, mseg->getReversed() == true); // Check that by using the grandparent as the coalescence limit we // will get all the paralogs. top->getMappedSegments(results, grandChild1, NULL, true, 0, root); CuAssertTrue(_testCase, results.size() == 3); set<MappedSegmentConstPtr>::iterator i = results.begin(); bool found[3] = {false, false, false}; for (; i != results.end(); ++i) { // Source information should be preserved CuAssertTrue(_testCase, mseg->getSource()->getGenome() == top->getGenome()); CuAssertTrue(_testCase, mseg->getSource()->getStartPosition() == top->getStartPosition()); CuAssertTrue(_testCase, mseg->getSource()->getLength() == top->getLength()); CuAssertTrue(_testCase, mseg->getSource()->getReversed() == top->getReversed()); // Check target information is correct CuAssertTrue(_testCase, mseg->getGenome() == grandChild1); CuAssertTrue(_testCase, mseg->getStartPosition() == 2 || mseg->getStartPosition() == 5 || mseg->getStartPosition() == 8); CuAssertTrue(_testCase, mseg->getLength() == 3); CuAssertTrue(_testCase, mseg->getReversed() == true); found[mseg->getArrayIndex()] = true; } }
void MappedSegmentMapDupeTest::checkCallBack(AlignmentConstPtr alignment) { validateAlignment(alignment); const Genome* parent = alignment->openGenome("parent"); const Genome* child1 = alignment->openGenome("child1"); const Genome* child2 = alignment->openGenome("child2"); TopSegmentIteratorConstPtr top = child1->getTopSegmentIterator(); set<MappedSegmentConstPtr> results; top->getMappedSegments(results, child2, NULL, true); // CuAssertTrue(_testCase, results.size() == 3); MappedSegmentConstPtr mseg = *results.begin(); CuAssertTrue(_testCase, mseg->getSource()->getGenome() == top->getGenome()); CuAssertTrue(_testCase, mseg->getSource()->getStartPosition() == top->getStartPosition()); CuAssertTrue(_testCase, mseg->getSource()->getLength() == top->getLength()); CuAssertTrue(_testCase, mseg->getSource()->getReversed() == top->getReversed()); BottomSegmentIteratorConstPtr bottom = parent->getBottomSegmentIterator(); bottom->toParent(top); TopSegmentIteratorConstPtr sister = child2->getTopSegmentIterator(); sister->toChildG(bottom, child2); CuAssertTrue(_testCase, mseg->getGenome() == sister->getGenome()); CuAssertTrue(_testCase, mseg->getStartPosition() == sister->getStartPosition()); CuAssertTrue(_testCase, mseg->getLength() == sister->getLength()); CuAssertTrue(_testCase, mseg->getReversed() == sister->getReversed()); top = child2->getTopSegmentIterator(); results.clear(); sister = child1->getTopSegmentIterator(); top->getMappedSegments(results, child1, NULL, true); CuAssertTrue(_testCase, results.size() == 3); bool found[3] = {false}; set<MappedSegmentConstPtr>::iterator i = results.begin(); for (; i != results.end(); ++i) { MappedSegmentConstPtr mseg = *i; CuAssertTrue(_testCase, mseg->getSource()->getGenome() == top->getGenome()); CuAssertTrue(_testCase, mseg->getSource()->getStartPosition() == top->getStartPosition()); CuAssertTrue(_testCase, mseg->getSource()->getLength() == top->getLength()); CuAssertTrue(_testCase, mseg->getSource()->getReversed() == top->getReversed()); BottomSegmentIteratorConstPtr bottom = parent->getBottomSegmentIterator(); bottom->toParent(top); TopSegmentIteratorConstPtr sister = child2->getTopSegmentIterator(); sister->toChildG(bottom, child1); CuAssertTrue(_testCase, mseg->getGenome() == sister->getGenome()); CuAssertTrue(_testCase, mseg->getLength() == sister->getLength()); found[mseg->getArrayIndex()] = true; } CuAssertTrue(_testCase, found[0] == true); CuAssertTrue(_testCase, found[1] == true); CuAssertTrue(_testCase, found[2] == true); }