Mercurial > repos > guerler > springsuite
comparison planemo/lib/python3.7/site-packages/networkx/generators/ego.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:32:28 -0400 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
0:d30785e31577 | 1:56ad4e20f292 |
---|---|
1 """ | |
2 Ego graph. | |
3 """ | |
4 # Copyright (C) 2010 by | |
5 # Aric Hagberg <hagberg@lanl.gov> | |
6 # Dan Schult <dschult@colgate.edu> | |
7 # Pieter Swart <swart@lanl.gov> | |
8 # All rights reserved. | |
9 # BSD license. | |
10 __author__ = """\n""".join(['Drew Conway <drew.conway@nyu.edu>', | |
11 'Aric Hagberg <hagberg@lanl.gov>']) | |
12 __all__ = ['ego_graph'] | |
13 | |
14 import networkx as nx | |
15 | |
16 | |
17 def ego_graph(G, n, radius=1, center=True, undirected=False, distance=None): | |
18 """Returns induced subgraph of neighbors centered at node n within | |
19 a given radius. | |
20 | |
21 Parameters | |
22 ---------- | |
23 G : graph | |
24 A NetworkX Graph or DiGraph | |
25 | |
26 n : node | |
27 A single node | |
28 | |
29 radius : number, optional | |
30 Include all neighbors of distance<=radius from n. | |
31 | |
32 center : bool, optional | |
33 If False, do not include center node in graph | |
34 | |
35 undirected : bool, optional | |
36 If True use both in- and out-neighbors of directed graphs. | |
37 | |
38 distance : key, optional | |
39 Use specified edge data key as distance. For example, setting | |
40 distance='weight' will use the edge weight to measure the | |
41 distance from the node n. | |
42 | |
43 Notes | |
44 ----- | |
45 For directed graphs D this produces the "out" neighborhood | |
46 or successors. If you want the neighborhood of predecessors | |
47 first reverse the graph with D.reverse(). If you want both | |
48 directions use the keyword argument undirected=True. | |
49 | |
50 Node, edge, and graph attributes are copied to the returned subgraph. | |
51 """ | |
52 if undirected: | |
53 if distance is not None: | |
54 sp, _ = nx.single_source_dijkstra(G.to_undirected(), | |
55 n, cutoff=radius, | |
56 weight=distance) | |
57 else: | |
58 sp = dict(nx.single_source_shortest_path_length(G.to_undirected(), | |
59 n, cutoff=radius)) | |
60 else: | |
61 if distance is not None: | |
62 sp, _ = nx.single_source_dijkstra(G, | |
63 n, cutoff=radius, | |
64 weight=distance) | |
65 else: | |
66 sp = dict(nx.single_source_shortest_path_length(G, n, cutoff=radius)) | |
67 | |
68 H = G.subgraph(sp).copy() | |
69 if not center: | |
70 H.remove_node(n) | |
71 return H |