本文整理汇总了C++中BottomSegmentIteratorPtr::getStartPosition方法的典型用法代码示例。如果您正苦于以下问题:C++ BottomSegmentIteratorPtr::getStartPosition方法的具体用法?C++ BottomSegmentIteratorPtr::getStartPosition怎么用?C++ BottomSegmentIteratorPtr::getStartPosition使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BottomSegmentIteratorPtr
的用法示例。
在下文中一共展示了BottomSegmentIteratorPtr::getStartPosition方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: checkCallBack
void TopSegmentIteratorReverseTest::checkCallBack(const Alignment *alignment) {
BottomSegmentIteratorPtr bi;
TopSegmentIteratorPtr ti, ti2;
const Genome *parent1 = alignment->openGenome("parent1");
const Genome *child1 = alignment->openGenome("child1");
ti = child1->getTopSegmentIterator();
bi = parent1->getBottomSegmentIterator();
ti2 = child1->getTopSegmentIterator();
ti2->toChild(bi, 0);
CuAssertTrue(_testCase, ti->getStartPosition() == 0);
CuAssertTrue(_testCase, ti->getLength() == 10);
CuAssertTrue(_testCase, ti->getReversed() == false);
CuAssertTrue(_testCase, ti2->getStartPosition() == 9);
CuAssertTrue(_testCase, ti2->getLength() == 10);
CuAssertTrue(_testCase, ti2->getReversed() == true);
bi->slice(1, 3);
ti2->toChild(bi, 0);
CuAssertTrue(_testCase, bi->getStartPosition() == 1);
CuAssertTrue(_testCase, bi->getLength() == 6);
CuAssertTrue(_testCase, ti2->getStartPosition() == 8);
CuAssertTrue(_testCase, ti2->getLength() == 6);
string buffer;
bi->getString(buffer);
CuAssertTrue(_testCase, buffer == "CCTACG");
ti2->getString(buffer);
CuAssertTrue(_testCase, buffer == "CACGTA");
bi = child1->getBottomSegmentIterator();
CuAssertTrue(_testCase, bi->getReversed() == false);
ti->toParseUp(bi);
CuAssertTrue(_testCase, ti->getStartPosition() == 0);
CuAssertTrue(_testCase, ti->getLength() == 5);
bi->toReverse();
ti->toParseUp(bi);
CuAssertTrue(_testCase, ti->getStartPosition() == 4);
CuAssertTrue(_testCase, ti->getLength() == 5);
bi->toReverse();
CuAssertTrue(_testCase, bi->getReversed() == false);
bi->toRight();
ti->toParseUp(bi);
CuAssertTrue(_testCase, ti->getStartPosition() == 5);
CuAssertTrue(_testCase, ti->getLength() == 5);
bi->toReverse();
ti->toParseUp(bi);
CuAssertTrue(_testCase, ti->getStartPosition() == 9);
CuAssertTrue(_testCase, ti->getLength() == 5);
}
示例2: checkBottomSegments
void checkBottomSegments(Genome *genome, hal_size_t width, CuTest *testCase) {
hal_size_t numChildren = genome->getNumChildren();
BottomSegmentIteratorPtr bottomIt = genome->getBottomSegmentIterator();
hal_size_t n = genome->getNumBottomSegments();
hal_index_t startPos = 0;
for (; bottomIt->getArrayIndex() < n; bottomIt->toRight(), startPos += width) {
CuAssertTrue(testCase, bottomIt->getStartPosition() == startPos);
for (hal_size_t i = 0; i < numChildren; i++) {
if (startPos < 170) {
CuAssertStrEquals(testCase, "Sequence2", genome->getSequenceBySite(startPos)->getName().c_str());
CuAssertTrue(testCase, bottomIt->bseg()->getChildIndex(i) == 13 + bottomIt->getArrayIndex());
} else {
CuAssertStrEquals(testCase, "Sequence1", genome->getSequenceBySite(startPos)->getName().c_str());
CuAssertTrue(testCase, bottomIt->bseg()->getChildIndex(i) == bottomIt->getArrayIndex() - 17);
}
}
}
}
示例3: checkCallBack
void GenomeCopyTest::checkCallBack(const Alignment *alignment) {
// FIXME: halAlignment->open() fails miserably but
// openHalAlignmentReadOnly works? Probably some state isn't cleared
// on close.
AlignmentPtr tmp(getTestAlignmentInstances(alignment->getStorageFormat(), _path, WRITE_ACCESS));
_secondAlignment = tmp;
const Genome *ancGenome = alignment->openGenome("AncGenome");
CuAssertTrue(_testCase, ancGenome->getName() == "AncGenome");
CuAssertTrue(_testCase, ancGenome->getSequenceLength() == 1000000);
CuAssertTrue(_testCase, ancGenome->getNumTopSegments() == 0);
CuAssertTrue(_testCase, ancGenome->getNumBottomSegments() == 700000);
const MetaData *ancMeta = ancGenome->getMetaData();
CuAssertTrue(_testCase, ancMeta->get("Young") == "Jeezy");
const Genome *leafGenome = alignment->openGenome("LeafGenome1");
string ancSeq = "CAT";
hal_index_t n = ancGenome->getSequenceLength();
DnaIteratorPtr dnaIt = ancGenome->getDnaIterator();
for (; dnaIt->getArrayIndex() < n; dnaIt->toRight()) {
size_t i = dnaIt->getArrayIndex() % ancSeq.size();
CuAssertTrue(_testCase, dnaIt->getBase() == ancSeq[i]);
}
TopSegmentIteratorPtr topIt = leafGenome->getTopSegmentIterator();
n = leafGenome->getNumTopSegments();
for (; topIt->getArrayIndex() < n; topIt->toRight()) {
CuAssertTrue(_testCase, topIt->getStartPosition() == topIt->getArrayIndex());
CuAssertTrue(_testCase, topIt->getLength() == 1);
CuAssertTrue(_testCase, topIt->tseg()->getParentIndex() == 3);
CuAssertTrue(_testCase, topIt->tseg()->getParentReversed() == true);
CuAssertTrue(_testCase, topIt->tseg()->getBottomParseIndex() == 5);
if (topIt->getArrayIndex() != 6) {
CuAssertTrue(_testCase, topIt->tseg()->getNextParalogyIndex() == 6);
} else {
CuAssertTrue(_testCase, topIt->tseg()->getNextParalogyIndex() == 7);
}
}
BottomSegmentIteratorPtr botIt = ancGenome->getBottomSegmentIterator();
n = ancGenome->getNumBottomSegments();
for (; botIt->getArrayIndex() < n; botIt->toRight()) {
CuAssertTrue(_testCase, botIt->getStartPosition() == botIt->getArrayIndex());
CuAssertTrue(_testCase, botIt->getLength() == 1);
CuAssertTrue(_testCase, botIt->bseg()->getChildIndex(0) == 3);
CuAssertTrue(_testCase, botIt->bseg()->getChildReversed(0) == true);
CuAssertTrue(_testCase, botIt->bseg()->getTopParseIndex() == 5);
}
const Genome *copyRootGenome = _secondAlignment->openGenome("copyRootGenome");
const Genome *copyLeafGenome = _secondAlignment->openGenome("LeafGenome1");
CuAssertTrue(_testCase, copyRootGenome->getName() == "copyRootGenome");
CuAssertTrue(_testCase, copyRootGenome->getSequenceLength() == 1000000);
CuAssertTrue(_testCase, copyRootGenome->getNumTopSegments() == 0);
CuAssertTrue(_testCase, copyRootGenome->getNumBottomSegments() == 700000);
CuAssertTrue(_testCase, copyLeafGenome->getName() == "LeafGenome1");
CuAssertTrue(_testCase, copyLeafGenome->getSequenceLength() == 1000000);
CuAssertTrue(_testCase, copyLeafGenome->getNumTopSegments() == 5000);
CuAssertTrue(_testCase, copyLeafGenome->getNumBottomSegments() == 0);
const MetaData *copyMeta = copyRootGenome->getMetaData();
CuAssertTrue(_testCase, copyMeta->get("Young") == "Jeezy");
n = copyRootGenome->getSequenceLength();
dnaIt = copyRootGenome->getDnaIterator();
for (; dnaIt->getArrayIndex() < n; dnaIt->toRight()) {
size_t i = dnaIt->getArrayIndex() % ancSeq.size();
CuAssertTrue(_testCase, dnaIt->getBase() == ancSeq[i]);
}
topIt = copyLeafGenome->getTopSegmentIterator();
n = copyLeafGenome->getNumTopSegments();
for (; topIt->getArrayIndex() < n; topIt->toRight()) {
CuAssertTrue(_testCase, topIt->getStartPosition() == topIt->getArrayIndex());
CuAssertTrue(_testCase, topIt->getLength() == 1);
CuAssertTrue(_testCase, topIt->tseg()->getParentIndex() == 3);
CuAssertTrue(_testCase, topIt->tseg()->getParentReversed() == true);
CuAssertTrue(_testCase, topIt->tseg()->getBottomParseIndex() == 5);
if (topIt->getArrayIndex() != 6) {
CuAssertTrue(_testCase, topIt->tseg()->getNextParalogyIndex() == 6);
} else {
CuAssertTrue(_testCase, topIt->tseg()->getNextParalogyIndex() == 7);
}
}
botIt = copyRootGenome->getBottomSegmentIterator();
n = copyRootGenome->getNumBottomSegments();
for (; botIt->getArrayIndex() < n; botIt->toRight()) {
CuAssertTrue(_testCase, botIt->getStartPosition() == botIt->getArrayIndex());
CuAssertTrue(_testCase, botIt->getLength() == 1);
CuAssertTrue(_testCase, botIt->bseg()->getChildIndex(0) == 3);
CuAssertTrue(_testCase, botIt->bseg()->getChildReversed(0) == true);
CuAssertTrue(_testCase, botIt->bseg()->getTopParseIndex() == 5);
}
_secondAlignment->close();
remove(_path.c_str());
}
示例4: copyBottomSegments
void Genome::copyBottomSegments(Genome *dest) const
{
assert(getNumBottomSegments() == dest->getNumBottomSegments());
hal_size_t inNc = getNumChildren();
hal_size_t outNc = dest->getNumChildren();
// The child indices aren't consistent across files--make sure each bottom
// segment points to the correct children
vector<string> inChildNames;
vector<string> outChildNames;
for (hal_size_t inChild = 0; inChild < inNc; ++inChild)
{
inChildNames.push_back(getChild(inChild)->getName());
}
for (hal_size_t outChild = 0; outChild < outNc; ++outChild)
{
outChildNames.push_back(dest->getChild(outChild)->getName());
}
map<hal_size_t, hal_size_t> inChildToOutChild;
for (hal_size_t inChild = 0; inChild < inNc; inChild++)
{
hal_size_t outChild;
for (outChild = 0; outChild < outNc; outChild++)
{
if (inChildNames[inChild] == outChildNames[outChild])
{
inChildToOutChild[inChild] = outChild;
break;
}
}
if (outChild == outNc)
{
inChildToOutChild[inChild] = outNc;
}
}
// Go through each sequence in this genome, find the matching
// sequence in the dest genome, then copy over the segments for each
// sequence.
SequenceIteratorConstPtr seqIt = getSequenceIterator();
SequenceIteratorConstPtr seqEndIt = getSequenceEndIterator();
for (; seqIt != seqEndIt; seqIt->toNext())
{
const Sequence *inSeq = seqIt->getSequence();
const Sequence *outSeq = dest->getSequence(inSeq->getName());
BottomSegmentIteratorPtr inBot = inSeq->getBottomSegmentIterator();
BottomSegmentIteratorPtr outBot = outSeq->getBottomSegmentIterator();
cout << "DEBUG: inSeq name: " << inSeq->getName() << ", outSeq name: " << outSeq->getName() << endl;
if (inSeq->getName() != outSeq->getName()) {
// This check is important enough that it can't be an assert.
stringstream ss;
ss << "When copying bottom segments: segment #" << inBot->getArrayIndex() << " of source genome is from sequence " << inBot->getSequence()->getName() << ", but segment #" << outBot->getArrayIndex() << " is from sequence " << outBot->getSequence()->getName();
throw hal_exception(ss.str());
}
if (inSeq->getNumBottomSegments() != outSeq->getNumBottomSegments()) {
stringstream ss;
ss << "When copying bottom segments: sequence " << inSeq->getName() << " has " << inSeq->getNumBottomSegments() << " in genome " << getName() << ", while it has " << outSeq->getNumBottomSegments() << " in genome " << dest->getName();
throw hal_exception(ss.str());
}
hal_index_t inSegmentEnd = inSeq->getBottomSegmentArrayIndex() + inSeq->getNumBottomSegments();
cout << "DEBUG: inSegmentStart: " << inSeq->getBottomSegmentArrayIndex() << " inSegmentEnd: " << inSegmentEnd << " num bottom segments: " << inSeq->getNumBottomSegments() << endl;
for (; inBot->getArrayIndex() < inSegmentEnd; inBot->toRight(),
outBot->toRight())
{
hal_index_t outStartPosition = inBot->getStartPosition() - inSeq->getStartPosition() + outSeq->getStartPosition();
cout << "Decided on outStartPosition " << outStartPosition << " for seg index " << outBot->getArrayIndex() << " (src index " << inBot->getArrayIndex() << ")" << endl;
if (dest->getSequenceBySite(outStartPosition) != outSeq) {
stringstream ss;
ss << "When copying bottom segments from " << getName() << " to " << dest->getName() << ": expected destination sequence " << outSeq->getName() << " for segment # " << inBot->getArrayIndex() << " but got " << dest->getSequenceBySite(outStartPosition)->getName();
throw hal_exception(ss.str());
}
outBot->setCoordinates(outStartPosition, inBot->getLength());
for(hal_size_t inChild = 0; inChild < inNc; inChild++) {
hal_size_t outChild = inChildToOutChild[inChild];
if (outChild != outNc) {
outBot->setChildIndex(outChild, inBot->getChildIndex(inChild));
cout << "genome " << getName() << ": Set child index " << inChild << " to " << inBot->getChildIndex(inChild) << endl;
outBot->setChildReversed(outChild, inBot->getChildReversed(inChild));
}
}
outBot->setTopParseIndex(inBot->getTopParseIndex());
}
}
}