當前位置: 首頁>>代碼示例>>Python>>正文


Python networkx.dfs_preorder_nodes方法代碼示例

本文整理匯總了Python中networkx.dfs_preorder_nodes方法的典型用法代碼示例。如果您正苦於以下問題:Python networkx.dfs_preorder_nodes方法的具體用法?Python networkx.dfs_preorder_nodes怎麽用?Python networkx.dfs_preorder_nodes使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在networkx的用法示例。


在下文中一共展示了networkx.dfs_preorder_nodes方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: downstream_elements

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def downstream_elements(self, cluster):
        """
        This method finds all elements contained in a cluster from a
        hierarchical clustering by visiting all downstream clusters
        and adding their elements.

        :param cluster: the name of the parent cluster

        :returns: element list


        """
        if cluster in self.hier_graph.leaves():
            return self.clu2elm_dict[cluster]
        else:
            el = set([])
            for c in nx.dfs_preorder_nodes(self.hier_graph, cluster):
                try:
                    el.update(self.clu2elm_dict[c])
                except KeyError:
                    pass

            return el 
開發者ID:Hoosier-Clusters,項目名稱:clusim,代碼行數:25,代碼來源:clustering.py

示例2: graph_search

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def graph_search(graph, target_species):
    """Search nodal graph and generate list of species to remove

    Parameters
    ----------
    graph : networkx.DiGraph
        graph representing reaction system
    target_species : list
        List of target species to search from

    Returns
    -------
    reached_species : list of str
        List of species reachable from targets in graph

    """
    reached_species = []
    for target in target_species:
        reached_species += list(networkx.dfs_preorder_nodes(graph, target))
    reached_species = list(set(reached_species))

    return reached_species 
開發者ID:Niemeyer-Research-Group,項目名稱:pyMARS,代碼行數:24,代碼來源:drg.py

示例3: _n_at_node

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def _n_at_node(self, node):
        return sum(self._G.node[(pop, idx)]['lineages']
                   for pop, idx in nx.dfs_preorder_nodes(self._G, node)
                   if idx == 0) 
開發者ID:popgenmethods,項目名稱:momi2,代碼行數:6,代碼來源:demography.py

示例4: random_prune_regraft

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def random_prune_regraft(self):
        roots = self.roots()
        subtree_root = np.random.choice(self.nodes(), 1)[0]
        while subtree_root in roots and (len(roots) == 1):
            subtree_root = np.random.choice(self.nodes(), 1)[0]

        subtree_vertices = self.subgraph(
            nx.dfs_preorder_nodes(self, subtree_root)).nodes()
        prune_vertex = list(self.predecessors(subtree_root))[0]

        graft_vertex = np.random.choice(self.nodes(), 1)[0]
        while (graft_vertex in subtree_vertices) or\
              (graft_vertex in roots) or\
              (graft_vertex == prune_vertex):
            graft_vertex = np.random.choice(self.nodes(), 1)[0]

        # now we have to do the graph edits

        # merge connections through the pruned vertex
        for source in self.predecessors(prune_vertex):
            for sink in self.successors(prune_vertex):
                if sink != subtree_root:
                    self.add_edge(source, sink)

        # prune the vertex
        self.remove_node(prune_vertex)

        # reattach the pruned vertex
        for source in list(self.predecessors(graft_vertex)):
            self.add_edge(source, prune_vertex)
            self.remove_edge(source, graft_vertex)

        # reattach the subtree
        self.add_edge(prune_vertex, subtree_root)
        self.add_edge(prune_vertex, graft_vertex) 
開發者ID:Hoosier-Clusters,項目名稱:clusim,代碼行數:37,代碼來源:dag.py

示例5: verify_nx_algorithm_equivalence

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def verify_nx_algorithm_equivalence(self, tree, g):
        for root in tree.roots:
            self.assertTrue(nx.is_directed_acyclic_graph(g))

            # test descendants
            self.assertSetEqual(
                {u for u in tree.nodes() if tree.is_descendant(u, root)},
                set(nx.descendants(g, root)) | {root},
            )

            # test MRCA
            if tree.num_nodes < 20:
                for u, v in itertools.combinations(tree.nodes(), 2):
                    mrca = nx.lowest_common_ancestor(g, u, v)
                    if mrca is None:
                        mrca = -1
                    self.assertEqual(tree.mrca(u, v), mrca)

            # test node traversal modes
            self.assertEqual(
                list(tree.nodes(root=root, order="breadthfirst")),
                [root] + [v for u, v in nx.bfs_edges(g, root)],
            )
            self.assertEqual(
                list(tree.nodes(root=root, order="preorder")),
                list(nx.dfs_preorder_nodes(g, root)),
            ) 
開發者ID:tskit-dev,項目名稱:tskit,代碼行數:29,代碼來源:test_highlevel.py

示例6: dfs_preorder_nodes

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def dfs_preorder_nodes(G, source=None):
    """Produce nodes in a depth-first-search pre-ordering starting
    from source.

    Parameters
    ----------
    G : NetworkX graph

    source : node, optional
       Specify starting node for depth-first search and return edges in
       the component reachable from source.

    Returns
    -------
    nodes: generator
       A generator of nodes in a depth-first-search pre-ordering.

    Examples
    --------
    >>> G = nx.Graph()
    >>> G.add_path([0,1,2])
    >>> print(list(nx.dfs_preorder_nodes(G,0)))
    [0, 1, 2]

    Notes
    -----
    Based on http://www.ics.uci.edu/~eppstein/PADS/DFS.py
    by D. Eppstein, July 2004.

    If a source is not specified then a source is chosen arbitrarily and
    repeatedly until all components in the graph are searched.
    """
    pre=(v for u,v,d in nx.dfs_labeled_edges(G,source=source)
         if d['dir']=='forward')
    # potential modification: chain source to beginning of pre-ordering
    # return chain([source],pre)
    return pre 
開發者ID:SpaceGroupUCL,項目名稱:qgisSpaceSyntaxToolkit,代碼行數:39,代碼來源:depth_first_search.py

示例7: test_preorder_nodes

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def test_preorder_nodes(self):
        assert_equal(list(nx.dfs_preorder_nodes(self.G,source=0)),
                     [0, 1, 2, 4, 3])
        assert_equal(list(nx.dfs_preorder_nodes(self.D)),[0, 1, 2, 3]) 
開發者ID:SpaceGroupUCL,項目名稱:qgisSpaceSyntaxToolkit,代碼行數:6,代碼來源:test_dfs.py

示例8: transitive_closure

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def transitive_closure(G):
    """ Returns transitive closure of a directed graph

    The transitive closure of G = (V,E) is a graph G+ = (V,E+) such that
    for all v,w in V there is an edge (v,w) in E+ if and only if there
    is a non-null path from v to w in G.

    Parameters
    ----------
    G : NetworkX DiGraph
        Graph

    Returns
    -------
    TC : NetworkX DiGraph
        Graph

    Raises
    ------
    NetworkXNotImplemented
        If G is not directed

    References
    ----------
    .. [1] http://www.ics.uci.edu/~eppstein/PADS/PartialOrder.py

    """
    TC = nx.DiGraph()
    TC.add_nodes_from(G.nodes_iter())
    TC.add_edges_from(G.edges_iter())
    for v in G:
        TC.add_edges_from((v, u) for u in nx.dfs_preorder_nodes(G, source=v)
                          if v != u)
    return TC 
開發者ID:SpaceGroupUCL,項目名稱:qgisSpaceSyntaxToolkit,代碼行數:36,代碼來源:dag.py

示例9: test_preorder_nodes

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def test_preorder_nodes(self):
        assert_equal(list(nx.dfs_preorder_nodes(self.G, source=0)),
                     [0, 1, 2, 4, 3])
        assert_equal(list(nx.dfs_preorder_nodes(self.D)), [0, 1, 2, 3]) 
開發者ID:holzschu,項目名稱:Carnets,代碼行數:6,代碼來源:test_dfs.py

示例10: dls_test_preorder_nodes

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def dls_test_preorder_nodes(self):
        assert_equal(list(nx.dfs_preorder_nodes(self.G, source=0,
                                                depth_limit=2)), [0, 1, 2])
        assert_equal(list(nx.dfs_preorder_nodes(self.D, source=1,
                                                depth_limit=2)), ([1, 0])) 
開發者ID:holzschu,項目名稱:Carnets,代碼行數:7,代碼來源:test_dfs.py

示例11: transitive_closure

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def transitive_closure(G):
    """ Returns transitive closure of a directed graph

    The transitive closure of G = (V,E) is a graph G+ = (V,E+) such that
    for all v,w in V there is an edge (v,w) in E+ if and only if there
    is a non-null path from v to w in G.

    Parameters
    ----------
    G : NetworkX DiGraph
        A directed graph

    Returns
    -------
    NetworkX DiGraph
        The transitive closure of `G`

    Raises
    ------
    NetworkXNotImplemented
        If `G` is not directed

    References
    ----------
    .. [1] http://www.ics.uci.edu/~eppstein/PADS/PartialOrder.py

    """
    TC = G.copy()
    for v in G:
        TC.add_edges_from((v, u) for u in nx.dfs_preorder_nodes(G, source=v)
                          if v != u)
    return TC 
開發者ID:holzschu,項目名稱:Carnets,代碼行數:34,代碼來源:dag.py

示例12: dls_test_preorder_nodes

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def dls_test_preorder_nodes(self):
        assert_equal(list(nx.dfs_preorder_nodes(self.G, source=0,
                     depth_limit=2)), [0, 1, 2])
        assert_equal(list(nx.dfs_preorder_nodes(self.D, source=1,
                     depth_limit=2)), ([1, 0])) 
開發者ID:aws-samples,項目名稱:aws-kube-codesuite,代碼行數:7,代碼來源:test_dfs.py

示例13: transitive_closure

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def transitive_closure(G):
    """ Returns transitive closure of a directed graph

    The transitive closure of G = (V,E) is a graph G+ = (V,E+) such that
    for all v,w in V there is an edge (v,w) in E+ if and only if there
    is a non-null path from v to w in G.

    Parameters
    ----------
    G : NetworkX DiGraph
        A directed graph

    Returns
    -------
    NetworkX DiGraph
        The transitive closure of `G`

    Raises
    ------
    NetworkXNotImplemented
        If `G` is not directed

    References
    ----------
    .. [1] http://www.ics.uci.edu/~eppstein/PADS/PartialOrder.py

    """
    TC = nx.DiGraph()
    TC.add_nodes_from(G.nodes())
    TC.add_edges_from(G.edges())
    for v in G:
        TC.add_edges_from((v, u) for u in nx.dfs_preorder_nodes(G, source=v)
                          if v != u)
    return TC 
開發者ID:aws-samples,項目名稱:aws-kube-codesuite,代碼行數:36,代碼來源:dag.py

示例14: kosaraju_strongly_connected_components

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def kosaraju_strongly_connected_components(G, source=None):
    """Generate nodes in strongly connected components of graph.

    Parameters
    ----------
    G : NetworkX Graph
        An directed graph.

    Returns
    -------
    comp : generator of sets
        A genrator of sets of nodes, one for each strongly connected
        component of G.

    Raises
    ------
    NetworkXNotImplemented:
        If G is undirected.

    Examples
    --------
    Generate a sorted list of strongly connected components, largest first.

    >>> G = nx.cycle_graph(4, create_using=nx.DiGraph())
    >>> G.add_cycle([10, 11, 12])
    >>> [len(c) for c in sorted(nx.kosaraju_strongly_connected_components(G),
    ...                         key=len, reverse=True)]
    [4, 3]

    If you only want the largest component, it's more efficient to
    use max instead of sort.

    >>> largest = max(nx.kosaraju_strongly_connected_components(G), key=len)

    See Also
    --------
    connected_components
    weakly_connected_components

    Notes
    -----
    Uses Kosaraju's algorithm.

    """
    with nx.utils.reversed(G):
        post = list(nx.dfs_postorder_nodes(G, source=source))

    seen = set()
    while post:
        r = post.pop()
        if r in seen:
            continue
        c = nx.dfs_preorder_nodes(G, r)
        new = {v for v in c if v not in seen}
        yield new
        seen.update(new) 
開發者ID:SpaceGroupUCL,項目名稱:qgisSpaceSyntaxToolkit,代碼行數:58,代碼來源:strongly_connected.py

示例15: dfs_postorder_nodes

# 需要導入模塊: import networkx [as 別名]
# 或者: from networkx import dfs_preorder_nodes [as 別名]
def dfs_postorder_nodes(G, source=None, depth_limit=None):
    """Generate nodes in a depth-first-search post-ordering starting at source.

    Parameters
    ----------
    G : NetworkX graph

    source : node, optional
       Specify starting node for depth-first search and return edges in
       the component reachable from source.

    depth_limit : int, optional (default=len(G))
       Specify the maximum search depth.

    Returns
    -------
    nodes: generator
       A generator of nodes in a depth-first-search post-ordering.

    Examples
    --------
    >>> G = nx.path_graph(5)
    >>> list(nx.dfs_postorder_nodes(G, source=0))
    [4, 3, 2, 1, 0]
    >>> list(nx.dfs_postorder_nodes(G, source=0, depth_limit=2))
    [1, 0]

    Notes
    -----
    If a source is not specified then a source is chosen arbitrarily and
    repeatedly until all components in the graph are searched.

    The implementation of this function is adapted from David Eppstein's
    depth-first search function in `PADS`_, with modifications
    to allow depth limits based on the Wikipedia article
    "`Depth-limited search`_".

    .. _PADS: http://www.ics.uci.edu/~eppstein/PADS
    .. _Depth-limited search: https://en.wikipedia.org/wiki/Depth-limited_search

    See Also
    --------
    dfs_edges
    dfs_preorder_nodes
    dfs_labeled_edges
    """
    edges = nx.dfs_labeled_edges(G, source=source, depth_limit=depth_limit)
    return (v for u, v, d in edges if d == 'reverse') 
開發者ID:holzschu,項目名稱:Carnets,代碼行數:50,代碼來源:depth_first_search.py


注:本文中的networkx.dfs_preorder_nodes方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。