本文整理汇总了C++中TreeTemplate::hasSameTopologyAs方法的典型用法代码示例。如果您正苦于以下问题:C++ TreeTemplate::hasSameTopologyAs方法的具体用法?C++ TreeTemplate::hasSameTopologyAs怎么用?C++ TreeTemplate::hasSameTopologyAs使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类TreeTemplate
的用法示例。
在下文中一共展示了TreeTemplate::hasSameTopologyAs方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: main
int main() {
//Get some leaf names:
vector<string> leaves(100);
for (size_t i = 0; i < leaves.size(); ++i)
leaves[i] = "leaf" + TextTools::toString(i);
for (unsigned int j = 0; j < 1000; ++j) {
//Generate a random tree, without branch lengths:
TreeTemplate<Node>* tree = TreeTemplateTools::getRandomTree(leaves, true);
TreeTemplate<Node>* tree2 = new TreeTemplate<Node>(*tree);
if (!tree->hasSameTopologyAs(*tree2))
return 1; //Error!!!
tree2->getRootNode()->swap(0,1);
//cout << "First test passed." << endl;
if (!tree->hasSameTopologyAs(*tree2))
return 1; //Error!!!
//cout << "Second test passed." << endl;
//Convert tree to string and read it again:
string newick = TreeTemplateTools::treeToParenthesis(*tree);
TreeTemplate<Node>* tree3 = TreeTemplateTools::parenthesisToTree(newick, true, TreeTools::BOOTSTRAP, false, false);
if (!tree->hasSameTopologyAs(*tree3))
return 1; //Error!!!
//cout << "Third test passed." << endl;
//-------------
delete tree;
delete tree2;
delete tree3;
}
//Try to parse a string:
TreeTemplate<Node>* tree4 = TreeTemplateTools::parenthesisToTree("((A:1,B:2):3,C:4);");
cout << TreeTemplateTools::treeToParenthesis(*tree4) << endl;
delete tree4;
TreeTemplate<Node>* tree5 = TreeTemplateTools::parenthesisToTree("((A:1,B:2):3,C:4):5;");
cout << TreeTemplateTools::treeToParenthesis(*tree5) << endl;
delete tree5;
Newick tReader;
istringstream iss6("((A,B),C);");
TreeTemplate<Node>* tree6 = tReader.read(iss6);
cout << TreeTemplateTools::treeToParenthesis(*tree6) << endl;
delete tree6;
istringstream iss7("((A:1,B:2):3,C:4):5;");
TreeTemplate<Node>* tree7 = tReader.read(iss7);
cout << TreeTemplateTools::treeToParenthesis(*tree7) << endl;
delete tree7;
istringstream iss8("((A:1,B:2)80:3,C:4)2:5;");
TreeTemplate<Node>* tree8 = tReader.read(iss8);
cout << TreeTemplateTools::treeToParenthesis(*tree8) << endl;
vector<int> ids = tree8->getNodesId();
for (size_t i = 0; i < ids.size(); ++i) {
cout << "Node " << ids[i] << ":" << endl;
if (tree8->getNode(ids[i])->hasBranchProperty(TreeTools::BOOTSTRAP))
cout << "N: BOOTSTRAP=" << dynamic_cast<Number<double>*>(tree8->getNode(ids[i])->getBranchProperty(TreeTools::BOOTSTRAP))->getValue() << endl;
vector<string> branchPpt = tree8->getNode(ids[i])->getBranchPropertyNames();
}
delete tree8;
istringstream iss9("((A,B)aa,C)2;");
tReader.enableExtendedBootstrapProperty("ESS");
TreeTemplate<Node>* tree9 = tReader.read(iss9);
cout << TreeTemplateTools::treeToParenthesis(*tree9) << endl;
ids = tree9->getNodesId();
for (size_t i = 0; i < ids.size(); ++i) {
cout << "Node " << ids[i] << ":" << endl;
vector<string> nodePpt = tree9->getNode(ids[i])->getNodePropertyNames();
for (size_t j = 0; j < nodePpt.size(); ++j)
if (tree9->getNode(ids[i])->hasNodeProperty(nodePpt[j]))
cout << "N: " << nodePpt[j] << "=" << dynamic_cast<BppString*>(tree9->getNode(ids[i])->getNodeProperty(nodePpt[j]))->toSTL() << endl;
vector<string> branchPpt = tree9->getNode(ids[i])->getBranchPropertyNames();
for (size_t j = 0; j < branchPpt.size(); ++j)
if (tree9->getNode(ids[i])->hasBranchProperty(branchPpt[j]))
cout << "B: " << branchPpt[j] << "=" << dynamic_cast<BppString*>(tree9->getNode(ids[i])->getBranchProperty(branchPpt[j]))->toSTL() << endl;
}
delete tree9;
//Test file parsing:
TreeTemplate<Node>* tree10 = TreeTemplateTools::getRandomTree(leaves, true);
Newick tWriter;
tWriter.write(*tree10, "tmp_tree.dnd");
Tree* test = tReader.read("tmp_tree.dnd");
if (!TreeTools::haveSameTopology(*tree10, *test))
return 1;
cout << "Newick I/O ok." << endl;
//Multiple trees:
vector<Tree *> trees;
for (unsigned int i = 0; i < 100; ++i) {
trees.push_back(TreeTemplateTools::getRandomTree(leaves, true));
}
tWriter.write(trees, "tmp_trees.dnd");
vector<Tree *> trees2;
tReader.read("tmp_trees.dnd", trees2);
//.........这里部分代码省略.........