本文整理汇总了C++中DeBruijnNode::labelNeighbouringNodesAsDrawn方法的典型用法代码示例。如果您正苦于以下问题:C++ DeBruijnNode::labelNeighbouringNodesAsDrawn方法的具体用法?C++ DeBruijnNode::labelNeighbouringNodesAsDrawn怎么用?C++ DeBruijnNode::labelNeighbouringNodesAsDrawn使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类DeBruijnNode
的用法示例。
在下文中一共展示了DeBruijnNode::labelNeighbouringNodesAsDrawn方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: labelNeighbouringNodesAsDrawn
//This function recursively labels all nodes as drawn that are within a
//certain distance of this node. Whichever node called this will
//definitely be drawn, so that one is excluded from the recursive call.
void DeBruijnNode::labelNeighbouringNodesAsDrawn(int nodeDistance, DeBruijnNode * callingNode)
{
if (m_highestDistanceInNeighbourSearch > nodeDistance)
return;
m_highestDistanceInNeighbourSearch = nodeDistance;
if (nodeDistance == 0)
return;
DeBruijnNode * otherNode;
for (size_t i = 0; i < m_edges.size(); ++i)
{
otherNode = m_edges[i]->getOtherNode(this);
if (otherNode == callingNode)
continue;
if (g_settings->doubleMode)
otherNode->m_drawn = true;
else //single mode
{
if (otherNode->isPositiveNode())
otherNode->m_drawn = true;
else
otherNode->getReverseComplement()->m_drawn = true;
}
otherNode->labelNeighbouringNodesAsDrawn(nodeDistance-1, this);
}
}
示例2: buildOgdfGraphFromNodesAndEdges
//The startingNodes and nodeDistance parameters are only used if the graph scope
//is not WHOLE_GRAPH.
void AssemblyGraph::buildOgdfGraphFromNodesAndEdges(std::vector<DeBruijnNode *> startingNodes, int nodeDistance)
{
if (g_settings->graphScope == WHOLE_GRAPH)
{
QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
while (i.hasNext())
{
i.next();
//If double mode is off, only positive nodes are drawn. If it's
//on, all nodes are drawn.
if (i.value()->isPositiveNode() || g_settings->doubleMode)
i.value()->setAsDrawn();
}
}
else //The scope is either around specified nodes or around nodes with BLAST hits
{
for (size_t i = 0; i < startingNodes.size(); ++i)
{
DeBruijnNode * node = startingNodes[i];
//If we are in single mode, make sure that each node is positive.
if (!g_settings->doubleMode && node->isNegativeNode())
node = node->getReverseComplement();
node->setAsDrawn();
node->setAsSpecial();
node->labelNeighbouringNodesAsDrawn(nodeDistance, 0);
}
}
//First loop through each node, adding it to OGDF if it is drawn.
QMapIterator<QString, DeBruijnNode*> i(m_deBruijnGraphNodes);
while (i.hasNext())
{
i.next();
if (i.value()->isDrawn())
i.value()->addToOgdfGraph(m_ogdfGraph);
}
//Then loop through each determining its drawn status and adding it
//to OGDF if it is drawn.
for (size_t i = 0; i < m_deBruijnGraphEdges.size(); ++i)
{
m_deBruijnGraphEdges[i]->determineIfDrawn();
if (m_deBruijnGraphEdges[i]->isDrawn())
m_deBruijnGraphEdges[i]->addToOgdfGraph(m_ogdfGraph);
}
}