本文整理汇总了C++中AlignmentConstPtr::openGenome方法的典型用法代码示例。如果您正苦于以下问题:C++ AlignmentConstPtr::openGenome方法的具体用法?C++ AlignmentConstPtr::openGenome怎么用?C++ AlignmentConstPtr::openGenome使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AlignmentConstPtr
的用法示例。
在下文中一共展示了AlignmentConstPtr::openGenome方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: checkCallBack
void MappedSegmentMapUpTest::checkCallBack(AlignmentConstPtr alignment)
{
validateAlignment(alignment);
const Genome* child1 = alignment->openGenome("child1");
const Genome* child2 = alignment->openGenome("child2");
TopSegmentIteratorConstPtr top = child2->getTopSegmentIterator();
testTopSegment(alignment, top, "parent");
top->slice(1,2);
testTopSegment(alignment, top, "parent");
top->toReverse();
testTopSegment(alignment, top, "parent");
top = child1->getTopSegmentIterator();
testTopSegment(alignment, top, "parent");
top->slice(1,2);
testTopSegment(alignment, top, "parent");
top->toReverse();
testTopSegment(alignment, top, "parent");
const Genome* g1 = alignment->openGenome("g1");
for (hal_size_t i = 0; i < g1->getNumTopSegments(); ++i)
{
top = g1->getTopSegmentIterator(i);
testTopSegment(alignment, top, "parent");
top->slice(1,0);
testTopSegment(alignment, top, "parent");
top->toReverse();
testTopSegment(alignment, top, "parent");
top->slice(0,1);
testTopSegment(alignment, top, "parent");
top->toReverse();
testTopSegment(alignment, top, "parent");
}
}
示例2: checkCallBack
void GenomeCreateTest::checkCallBack(AlignmentConstPtr alignment)
{
const Genome* dudGenome = alignment->openGenome("Zebra");
CuAssertTrue(_testCase, dudGenome == NULL);
const Genome* ancGenome = alignment->openGenome("AncGenome");
const MetaData* ancMeta = ancGenome->getMetaData();
CuAssertTrue(_testCase, ancMeta->get("Young") == "Jeezy");
const Genome* leaf1Genome = alignment->openGenome("Leaf1");
const Genome* leaf2Genome = alignment->openGenome("Leaf2");
const Genome* leaf3Genome = alignment->openGenome("Leaf3");
CuAssertTrue(_testCase, ancGenome->getName() == "AncGenome");
CuAssertTrue(_testCase, leaf1Genome->getName() == "Leaf1");
CuAssertTrue(_testCase, leaf2Genome->getName() == "Leaf2");
CuAssertTrue(_testCase, leaf3Genome->getName() == "Leaf3");
CuAssertTrue(_testCase, ancGenome->getSequenceLength() == 1000000);
CuAssertTrue(_testCase, ancGenome->getNumTopSegments() == 5000);
CuAssertTrue(_testCase, ancGenome->getNumBottomSegments() == 700000);
CuAssertTrue(_testCase, leaf1Genome->getSequenceLength() == 1000000);
CuAssertTrue(_testCase, leaf1Genome->getNumTopSegments() == 700000);
CuAssertTrue(_testCase, leaf1Genome->getNumBottomSegments() == 0);
CuAssertTrue(_testCase, leaf2Genome->getSequenceLength() == 2000000);
CuAssertTrue(_testCase, leaf2Genome->getNumTopSegments() == 700000);
CuAssertTrue(_testCase, leaf2Genome->getNumBottomSegments() == 0);
CuAssertTrue(_testCase, leaf3Genome->getSequenceLength() == 3000000);
CuAssertTrue(_testCase, leaf3Genome->getNumTopSegments() == 700000);
CuAssertTrue(_testCase, leaf3Genome->getNumBottomSegments() == 0);
}
示例3: copyFromTopAlignment
void copyFromTopAlignment(AlignmentConstPtr topAlignment,
AlignmentPtr mainAlignment, const string &genomeName)
{
Genome *mainReplacedGenome = mainAlignment->openGenome(genomeName);
const Genome *topReplacedGenome = topAlignment->openGenome(genomeName);
topReplacedGenome->copyTopDimensions(mainReplacedGenome);
topReplacedGenome->copyTopSegments(mainReplacedGenome);
mainReplacedGenome->fixParseInfo();
// Copy bot segments for the parent and top segments for the
// siblings of the genome that's being replaced
Genome *mainParent = mainReplacedGenome->getParent();
const Genome *topParent = topReplacedGenome->getParent();
topParent->copyBottomDimensions(mainParent);
topParent->copyBottomSegments(mainParent);
mainParent->fixParseInfo();
vector<string> siblings = mainAlignment->getChildNames(mainParent->getName());
for (size_t i = 0; i < siblings.size(); i++)
{
if (siblings[i] != genomeName)
{
Genome *mainChild = mainAlignment->openGenome(siblings[i]);
const Genome *topChild = topAlignment->openGenome(siblings[i]);
topChild->copyTopDimensions(mainChild);
topChild->copyTopSegments(mainChild);
mainChild->fixParseInfo();
}
}
}
示例4: testTopSegment
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());
}
示例5: checkCallBack
void TopSegmentIteratorReverseTest::checkCallBack(AlignmentConstPtr alignment)
{
BottomSegmentIteratorConstPtr bi;
TopSegmentIteratorConstPtr 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);
}
示例6: checkAlignment
void LodManager::checkAlignment(hal_size_t minQuery,
const string& path,
AlignmentConstPtr alignment)
{
if (alignment->getNumGenomes() == 0)
{
stringstream ss;
ss << "No genomes found in base alignment specified in " << path;
throw hal_exception(ss.str());
}
#ifndef NDEBUG
if (minQuery == 0)
{
vector<string> leafNames = alignment->getLeafNamesBelow(
alignment->getRootName());
string name = !leafNames.empty() ? leafNames[0] : alignment->getRootName();
const Genome* genome = alignment->openGenome(name);
bool seqFound = genome->containsDNAArray();
alignment->closeGenome(genome);
if (seqFound == false)
{
stringstream ss;
ss << "HAL file for highest level of detail (0) in " << path
<< "must contain DNA sequence information.";
throw hal_exception(ss.str());
}
}
#endif
}
示例7: printBranches
static void printBranches(ostream& os, AlignmentConstPtr alignment)
{
const Genome* root = alignment->openGenome(alignment->getRootName());
set<const Genome*> genomes;
getGenomesInSubTree(root, genomes);
genomes.insert(root);
bool first = true;
for (set<const Genome*>::iterator i = genomes.begin(); i != genomes.end();
++i)
{
if ((*i)->getParent() != NULL)
{
if (!first)
{
os << " ";
}
else
{
first = false;
}
os << (*i)->getName();
}
}
os << endl;
}
示例8: printNumSegments
void printNumSegments(ostream& os, AlignmentConstPtr alignment,
const string& genomeName)
{
const Genome* genome = alignment->openGenome(genomeName);
if (genome == NULL)
{
throw hal_exception(string("Genome ") + genomeName + " not found.");
}
os << genome->getNumTopSegments() << " " << genome->getNumBottomSegments()
<< endl;
}
示例9: copyFromBottomAlignment
void copyFromBottomAlignment(AlignmentConstPtr bottomAlignment,
AlignmentPtr mainAlignment,
const string &genomeName)
{
// Copy genome & bottom segments for the genome that's being replaced
Genome *mainReplacedGenome = mainAlignment->openGenome(genomeName);
const Genome *botReplacedGenome = bottomAlignment->openGenome(genomeName);
botReplacedGenome->copyDimensions(mainReplacedGenome);
botReplacedGenome->copySequence(mainReplacedGenome);
botReplacedGenome->copyBottomDimensions(mainReplacedGenome);
botReplacedGenome->copyBottomSegments(mainReplacedGenome);
mainReplacedGenome->fixParseInfo();
// Copy top segments for the children
vector<string> children = mainAlignment->getChildNames(genomeName);
for (size_t i = 0; i < children.size(); i++)
{
Genome *mainChild = mainAlignment->openGenome(children[i]);
const Genome *botChild = bottomAlignment->openGenome(children[i]);
botChild->copyTopDimensions(mainChild);
botChild->copyTopSegments(mainChild);
mainChild->fixParseInfo();
}
}
示例10: printGenomes
void printGenomes(ostream& os, AlignmentConstPtr alignment)
{
const Genome* root = alignment->openGenome(alignment->getRootName());
set<const Genome*> genomes;
getGenomesInSubTree(root, genomes);
genomes.insert(root);
for (set<const Genome*>::iterator i = genomes.begin(); i != genomes.end();
++i)
{
if (i != genomes.begin())
{
os << ",";
}
os << (*i)->getName();
}
os << endl;
}
示例11: printBedSequenceStats
void printBedSequenceStats(ostream& os, AlignmentConstPtr alignment,
const string& genomeName)
{
const Genome* genome = alignment->openGenome(genomeName);
if (genome == NULL)
{
throw hal_exception(string("Genome ") + genomeName + " not found.");
}
if (genome->getNumSequences() > 0)
{
SequenceIteratorConstPtr seqIt = genome->getSequenceIterator();
SequenceIteratorConstPtr seqEnd = genome->getSequenceEndIterator();
for (; !seqIt->equals(seqEnd); seqIt->toNext())
{
os << seqIt->getSequence()->getName() << "\t"
<< 0 << "\t"
<< seqIt->getSequence()->getSequenceLength() << "\n";
}
}
os << endl;
}
示例12: validateAlignment
void hal::validateAlignment(AlignmentConstPtr alignment)
{
deque<string> bfQueue;
bfQueue.push_back(alignment->getRootName());
while (bfQueue.empty() == false)
{
string name = bfQueue.back();
bfQueue.pop_back();
if (name.empty() == false)
{
const Genome* genome = alignment->openGenome(name);
if (genome == NULL)
{
throw hal_exception("Failure to open genome " + name);
}
validateGenome(genome);
vector<string> childNames = alignment->getChildNames(name);
for (size_t i = 0; i < childNames.size(); ++i)
{
bfQueue.push_front(childNames[i]);
}
}
}
}
示例13: main
int main(int argc, char *argv[])
{
CLParserPtr optParser = initParser();
string inPath, botAlignmentPath, topAlignmentPath, parentName, insertName,
childName, leafName;
double upperBranchLength, leafBranchLength;
bool noMarkAncestors;
try {
optParser->parseOptions(argc, argv);
inPath = optParser->getArgument<string>("inFile");
botAlignmentPath = optParser->getArgument<string>("botAlignmentFile");
topAlignmentPath = optParser->getArgument<string>("topAlignmentFile");
parentName = optParser->getArgument<string>("parentName");
insertName = optParser->getArgument<string>("insertName");
childName = optParser->getArgument<string>("childName");
leafName = optParser->getArgument<string>("leafName");
upperBranchLength = optParser->getArgument<double>("upperBranchLength");
leafBranchLength = optParser->getArgument<double>("leafBranchLength");
noMarkAncestors = optParser->getFlag("noMarkAncestors");
} catch (exception &e) {
optParser->printUsage(cerr);
return 1;
}
AlignmentPtr mainAlignment = openHalAlignment(inPath, optParser);
AlignmentConstPtr botAlignment = openHalAlignment(botAlignmentPath,
optParser);
AlignmentConstPtr topAlignment = openHalAlignment(topAlignmentPath,
optParser);
mainAlignment->insertGenome(insertName, parentName, childName,
upperBranchLength);
mainAlignment->addLeafGenome(leafName, insertName, leafBranchLength);
// Insert the new intermediate node.
Genome *insertGenome = mainAlignment->openGenome(insertName);
const Genome *topInsertGenome = topAlignment->openGenome(insertName);
const Genome *botInsertGenome = botAlignment->openGenome(insertName);
topInsertGenome->copyDimensions(insertGenome);
topInsertGenome->copyTopDimensions(insertGenome);
botInsertGenome->copyBottomDimensions(insertGenome);
topInsertGenome->copySequence(insertGenome);
topInsertGenome->copyTopSegments(insertGenome);
topInsertGenome->copyMetadata(insertGenome);
botInsertGenome->copyBottomSegments(insertGenome);
insertGenome->fixParseInfo();
// Copy the bottom segments for the parent genome from the top alignment.
Genome *parentGenome = mainAlignment->openGenome(parentName);
const Genome *botParentGenome = topAlignment->openGenome(parentName);
botParentGenome->copyBottomDimensions(parentGenome);
botParentGenome->copyBottomSegments(parentGenome);
parentGenome->fixParseInfo();
// Fix the parent's other children as well.
vector<string> allChildren = mainAlignment->getChildNames(parentName);
for (size_t i = 0; i < allChildren.size(); i++)
{
if (allChildren[i] != insertName)
{
Genome *outGenome = mainAlignment->openGenome(allChildren[i]);
const Genome *topSegmentsGenome = topAlignment->openGenome(allChildren[i]);
topSegmentsGenome->copyTopDimensions(outGenome);
topSegmentsGenome->copyTopSegments(outGenome);
outGenome->fixParseInfo();
}
}
// Copy the top segments for the child genome from the bottom alignment.
Genome *childGenome = mainAlignment->openGenome(childName);
const Genome *topChildGenome = botAlignment->openGenome(childName);
topChildGenome->copyTopDimensions(childGenome);
topChildGenome->copyTopSegments(childGenome);
childGenome->fixParseInfo();
// Copy the entire genome for the leaf from the bottom alignment.
Genome *outLeafGenome = mainAlignment->openGenome(leafName);
const Genome *inLeafGenome = botAlignment->openGenome(leafName);
inLeafGenome->copy(outLeafGenome);
if (!noMarkAncestors) {
markAncestorsForUpdate(mainAlignment, insertName);
}
mainAlignment->close();
botAlignment->close();
topAlignment->close();
}
示例14: main
int main(int argc, char** argv)
{
CLParserPtr optionsParser = hdf5CLParserInstance();
optionsParser->setDescription("Rertrieve chain (pairwise alignment) "
"information from a hal database.\n"
"WARNING: THIS TOOL WAS NEVER FINISHED OR"
" TESTED. USE AT OWN RISK. PLEASE "
"CONSIDER halLiftover --outPSL INSTEAD.");
optionsParser->addArgument("halFile", "path to hal file to analyze");
optionsParser->addArgument("genome", "(query) genome to process");
optionsParser->addOption("sequence", "sequence name in query genome ("
"all sequences if not specified)", "\"\"");
optionsParser->addOption("start", "start position in query genome", 0);
optionsParser->addOption("length", "maximum length of chain to output.", 0);
optionsParser->addOption("chainFile", "path for output file. stdout if not"
" specified", "\"\"");
optionsParser->addOption("maxGap",
"maximum indel length to be considered a gap within"
" a chain.",
20);
string halPath;
string chainPath;
string genomeName;
string sequenceName;
hal_size_t start;
hal_size_t length;
hal_size_t maxGap;
try
{
optionsParser->parseOptions(argc, argv);
halPath = optionsParser->getArgument<string>("halFile");
genomeName = optionsParser->getArgument<string>("genome");
sequenceName = optionsParser->getOption<string>("sequence");
start = optionsParser->getOption<hal_size_t>("start");
length = optionsParser->getOption<hal_size_t>("length");
chainPath = optionsParser->getOption<string>("chainFile");
maxGap = optionsParser->getOption<hal_size_t>("maxGap");
}
catch(exception& e)
{
cerr << e.what() << endl;
optionsParser->printUsage(cerr);
exit(1);
}
try
{
cerr << "WARNING: THIS TOOL WAS NEVER FINISHED OR TESTED. USE AT OWN RISK."
<< " PLEASE CONSIDER halLiftover --outPSL INSTEAD." <<endl;
AlignmentConstPtr alignment = openHalAlignmentReadOnly(halPath,
optionsParser);
const Genome* genome = alignment->openGenome(genomeName);
if (genome == NULL)
{
throw hal_exception(string("Genome not found: ") + genomeName);
}
hal_index_t endPosition =
length > 0 ? start + length : genome->getSequenceLength();
const Sequence* sequence = NULL;
if (sequenceName != "\"\"")
{
sequence = genome->getSequence(sequenceName);
if (sequence == NULL)
{
throw hal_exception(string("Sequence not found: ") + sequenceName);
}
start += sequence->getStartPosition();
endPosition =
length > 0 ? start + length : sequence->getSequenceLength();
}
ofstream ofile;
ostream& outStream = chainPath == "\"\"" ? cout : ofile;
if (chainPath != "\"\"")
{
ofile.open(chainPath.c_str());
if (!ofile)
{
throw hal_exception(string("Error opening output file ") +
chainPath);
}
}
TopSegmentIteratorConstPtr top = genome->getTopSegmentIterator();
top->toSite(start, false);
// do slicing here;
GappedTopSegmentIteratorConstPtr gtop =
genome->getGappedTopSegmentIterator(top->getArrayIndex(), maxGap);
// need to review!
Chain chain;
chain._id = 0;
while (gtop->getRightArrayIndex() <
(hal_index_t)genome->getNumTopSegments() &&
//.........这里部分代码省略.........
示例15: main
int main(int argc, char** argv)
{
CLParserPtr optionsParser = initParser();
string halPath;
string srcGenomeName;
string srcBedPath;
string tgtGenomeName;
string tgtBedPath;
bool noDupes;
bool append;
int inBedVersion;
int outBedVersion;
bool keepExtra;
bool outPSL;
bool outPSLWithName;
bool tab;
try
{
optionsParser->parseOptions(argc, argv);
halPath = optionsParser->getArgument<string>("halFile");
srcGenomeName = optionsParser->getArgument<string>("srcGenome");
srcBedPath = optionsParser->getArgument<string>("srcBed");
tgtGenomeName = optionsParser->getArgument<string>("tgtGenome");
tgtBedPath = optionsParser->getArgument<string>("tgtBed");
noDupes = optionsParser->getFlag("noDupes");
append = optionsParser->getFlag("append");
inBedVersion = optionsParser->getOption<int>("inBedVersion");
outBedVersion = optionsParser->getOption<int>("outBedVersion");
keepExtra = optionsParser->getFlag("keepExtra");
outPSL = optionsParser->getFlag("outPSL");
outPSLWithName = optionsParser->getFlag("outPSLWithName");
tab = optionsParser->getFlag("tab");
}
catch(exception& e)
{
cerr << e.what() << endl;
optionsParser->printUsage(cerr);
exit(1);
}
try
{
if (outPSLWithName == true)
{
outPSL = true;
}
if (outPSL == true)
{
outBedVersion = 12;
}
AlignmentConstPtr alignment = openHalAlignmentReadOnly(halPath,
optionsParser);
if (alignment->getNumGenomes() == 0)
{
throw hal_exception("hal alignmenet is empty");
}
const Genome* srcGenome = alignment->openGenome(srcGenomeName);
if (srcGenome == NULL)
{
throw hal_exception(string("srcGenome, ") + srcGenomeName +
", not found in alignment");
}
const Genome* tgtGenome = alignment->openGenome(tgtGenomeName);
if (tgtGenome == NULL)
{
throw hal_exception(string("tgtGenome, ") + tgtGenomeName +
", not found in alignment");
}
ifstream srcBed;
istream* srcBedPtr;
if (srcBedPath == "stdin")
{
srcBedPtr = &cin;
}
else
{
srcBed.open(srcBedPath.c_str());
srcBedPtr = &srcBed;
if (!srcBed)
{
throw hal_exception("Error opening srcBed, " + srcBedPath);
}
}
ios_base::openmode mode = append ? ios::out | ios::app : ios_base::out;
ofstream tgtBed;
ostream* tgtBedPtr;
if (tgtBedPath == "stdout")
{
tgtBedPtr = &cout;
}
else
{
tgtBed.open(tgtBedPath.c_str(), mode);
tgtBedPtr = &tgtBed;
if (!tgtBed)
//.........这里部分代码省略.........