Skip to content

Commit abf031b

Browse files
committed
update to meet networkx version
1 parent bd8a7a0 commit abf031b

File tree

2 files changed

+61
-54
lines changed

2 files changed

+61
-54
lines changed

heta/HETA.py

+24-22
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ def get_ego_graph(g, s, t, l):
113113
index = EGO_NETWORK + str(l - 1)
114114
node_list = set()
115115
for ng in nx.neighbors(g, s):
116-
if ng != t: node_list = node_list | g.node[ng][index]
116+
if ng != t: node_list = node_list | g.nodes[ng][index]
117117
return node_list - set([s])
118118

119119

@@ -123,20 +123,20 @@ def processing_link_property(iter_item):
123123
## from s to t
124124

125125
base_st_nodes = set([s, t])
126-
c.node[s][0] = set() ## for removing previously accessed neighbor nodes (0~(l-1) layer neighbors)
127-
c.node[t][0] = set() ## same as above, for the other end
126+
c.nodes[s][0] = set() ## for removing previously accessed neighbor nodes (0~(l-1) layer neighbors)
127+
c.nodes[t][0] = set() ## same as above, for the other end
128128
s0 = set()
129129
t0 = set()
130130

131131
for i in range(sp):
132132
l = i + 1
133133

134-
#c.node[s][l] = get_outgoing_ego_graph(c, s, t, l) - c.node[s][0] - base_st_nodes
135-
#c.node[t][l] = get_incoming_ego_graph(c, t, s, l) - c.node[t][0] - base_st_nodes
136-
c.node[s][l] = get_ego_graph(c, s, t, l) - s0 - base_st_nodes
137-
c.node[t][l] = get_ego_graph(c, t, s, l) - t0 - base_st_nodes
134+
#c.nodes[s][l] = get_outgoing_ego_graph(c, s, t, l) - c.nodes[s][0] - base_st_nodes
135+
#c.nodes[t][l] = get_incoming_ego_graph(c, t, s, l) - c.nodes[t][0] - base_st_nodes
136+
c.nodes[s][l] = get_ego_graph(c, s, t, l) - s0 - base_st_nodes
137+
c.nodes[t][l] = get_ego_graph(c, t, s, l) - t0 - base_st_nodes
138138

139-
common_nodes = (c.node[s][l] & c.node[t][l]) | (c.node[s][l] & c.node[t][l-1]) | (c.node[s][l-1] & c.node[t][l])
139+
common_nodes = (c.nodes[s][l] & c.nodes[t][l]) | (c.nodes[s][l] & c.nodes[t][l-1]) | (c.nodes[s][l-1] & c.nodes[t][l])
140140

141141
index1 = 'w'+str(l)+'a' ## same as article, from inferior view
142142
#index2 = 'w'+str(l)+'b' ## from superior view
@@ -146,23 +146,23 @@ def processing_link_property(iter_item):
146146
g[s][t][index1] = 0
147147
#g[s][t][index2] = 0
148148
else:
149-
part1_a = min(len(c.node[s][l] ), len(c.node[t][l]) )
150-
part2_a = min(len(c.node[s][l] ), len(c.node[t][l-1]))
151-
part3_a = min(len(c.node[s][l-1]), len(c.node[t][l]) )
149+
part1_a = min(len(c.nodes[s][l] ), len(c.nodes[t][l]) )
150+
part2_a = min(len(c.nodes[s][l] ), len(c.nodes[t][l-1]))
151+
part3_a = min(len(c.nodes[s][l-1]), len(c.nodes[t][l]) )
152152
denominator_a = float(part1_a + part2_a + part3_a)
153-
#part1_b = max(len(c.node[s][l] ), len(c.node[t][l]) )
154-
#part2_b = max(len(c.node[s][l] ), len(c.node[t][l-1]))
155-
#part3_b = max(len(c.node[s][l-1]), len(c.node[t][l]) )
153+
#part1_b = max(len(c.nodes[s][l] ), len(c.nodes[t][l]) )
154+
#part2_b = max(len(c.nodes[s][l] ), len(c.nodes[t][l-1]))
155+
#part3_b = max(len(c.nodes[s][l-1]), len(c.nodes[t][l]) )
156156
#denominator_b = float(part1_b + part2_b + part3_b)
157157
g[s][t][index1] = float(len(common_nodes)) / denominator_a
158158
#g[s][t][index2] = float(len(common_nodes)) / denominator_b
159159

160160
c.graph[GRAPH_KEY_COMMON_NODES_LIST + str(l)].append(g[s][t][index1])
161161

162-
#c.node[s][0] |= c.node[s][l]
163-
#c.node[t][0] |= c.node[t][l]
164-
s0 |= c.node[s][l]
165-
t0 |= c.node[t][l]
162+
#c.nodes[s][0] |= c.nodes[s][l]
163+
#c.nodes[t][0] |= c.nodes[t][l]
164+
s0 |= c.nodes[s][l]
165+
t0 |= c.nodes[t][l]
166166
#pair = { g[s][t][ind]:v for ind,v in g[s][t].items() }
167167
#gnote = { GRAPH_KEY_COMMON_NODES_LIST + str(l): c.graph[GRAPH_KEY_COMMON_NODES_LIST + str(l)] for l in range(1, sp+1) }
168168
#compute_link_prop_bar.update(1)
@@ -176,11 +176,11 @@ def generate_ego_graph(g, sp):
176176
for r in range(sp):
177177
for n in g.nodes(data = False):
178178
if r == 0:
179-
g.node[n][EGO_NETWORK + str(r)] = set([n])
179+
g.nodes[n][EGO_NETWORK + str(r)] = set([n])
180180
else:
181-
g.node[n][EGO_NETWORK + str(r)] = set(g.node[n][EGO_NETWORK + str(r - 1)])
181+
g.nodes[n][EGO_NETWORK + str(r)] = set(g.nodes[n][EGO_NETWORK + str(r - 1)])
182182
for ng in nx.neighbors(g, n):
183-
g.node[n][EGO_NETWORK + str(r)] = g.node[n][EGO_NETWORK + str(r)] | g.node[ng][EGO_NETWORK + str(r - 1)]
183+
g.nodes[n][EGO_NETWORK + str(r)] = g.nodes[n][EGO_NETWORK + str(r)] | g.nodes[ng][EGO_NETWORK + str(r - 1)]
184184

185185

186186
def compute_link_property(g, sp):
@@ -353,7 +353,9 @@ def bridge_or_bond(ginput, times=100, external=None, threads=4, kmax=None,
353353
#random_pre = random_prefix
354354

355355
# use only the largest weakly connected component
356-
g = sorted(nx.connected_component_subgraphs(ginput, copy=False), key=len, reverse=True)[0]
356+
# g = sorted(nx.connected_component_subgraphs(ginput, copy=False), key=len, reverse=True)[0] # deprecated
357+
largest_cc = max(nx.connected_components(ginput), key=len)
358+
g = ginput.subgraph(largest_cc).copy()
357359

358360
#kmax = max(1, int(nx.average_shortest_path_length(g) / 2.0)) # 決定每個節點要外看幾層,決定強弱連結
359361

heta/HETA2.py

+37-32
Original file line numberDiff line numberDiff line change
@@ -123,7 +123,7 @@ def get_ego_graph(g, s, t, l):
123123
index = EGO_NETWORK + str(l - 1)
124124
node_list = set()
125125
for ng in nx.neighbors(g, s):
126-
if ng != t: node_list = node_list | g.node[ng][index]
126+
if ng != t: node_list = node_list | g.nodes[ng][index]
127127
return node_list - set([s])
128128
129129
@@ -133,20 +133,20 @@ def processing_link_property(iter_item):
133133
## from s to t
134134
135135
base_st_nodes = set([s, t])
136-
c.node[s][0] = set() ## for removing previously accessed neighbor nodes (0~(l-1) layer neighbors)
137-
c.node[t][0] = set() ## same as above, for the other end
136+
c.nodes[s][0] = set() ## for removing previously accessed neighbor nodes (0~(l-1) layer neighbors)
137+
c.nodes[t][0] = set() ## same as above, for the other end
138138
s0 = set()
139139
t0 = set()
140140
141141
for i in range(sp):
142142
l = i + 1
143143
144-
#c.node[s][l] = get_outgoing_ego_graph(c, s, t, l) - c.node[s][0] - base_st_nodes
145-
#c.node[t][l] = get_incoming_ego_graph(c, t, s, l) - c.node[t][0] - base_st_nodes
146-
c.node[s][l] = get_ego_graph(c, s, t, l) - s0 - base_st_nodes
147-
c.node[t][l] = get_ego_graph(c, t, s, l) - t0 - base_st_nodes
144+
#c.nodes[s][l] = get_outgoing_ego_graph(c, s, t, l) - c.nodes[s][0] - base_st_nodes
145+
#c.nodes[t][l] = get_incoming_ego_graph(c, t, s, l) - c.nodes[t][0] - base_st_nodes
146+
c.nodes[s][l] = get_ego_graph(c, s, t, l) - s0 - base_st_nodes
147+
c.nodes[t][l] = get_ego_graph(c, t, s, l) - t0 - base_st_nodes
148148
149-
common_nodes = (c.node[s][l] & c.node[t][l]) | (c.node[s][l] & c.node[t][l-1]) | (c.node[s][l-1] & c.node[t][l])
149+
common_nodes = (c.nodes[s][l] & c.nodes[t][l]) | (c.nodes[s][l] & c.nodes[t][l-1]) | (c.nodes[s][l-1] & c.nodes[t][l])
150150
151151
index1 = 'w'+str(l)+'a' ## same as article, from inferior view
152152
#index2 = 'w'+str(l)+'b' ## from superior view
@@ -156,23 +156,23 @@ def processing_link_property(iter_item):
156156
g[s][t][index1] = 0
157157
#g[s][t][index2] = 0
158158
else:
159-
part1_a = min(len(c.node[s][l] ), len(c.node[t][l]) )
160-
part2_a = min(len(c.node[s][l] ), len(c.node[t][l-1]))
161-
part3_a = min(len(c.node[s][l-1]), len(c.node[t][l]) )
159+
part1_a = min(len(c.nodes[s][l] ), len(c.nodes[t][l]) )
160+
part2_a = min(len(c.nodes[s][l] ), len(c.nodes[t][l-1]))
161+
part3_a = min(len(c.nodes[s][l-1]), len(c.nodes[t][l]) )
162162
denominator_a = float(part1_a + part2_a + part3_a)
163-
#part1_b = max(len(c.node[s][l] ), len(c.node[t][l]) )
164-
#part2_b = max(len(c.node[s][l] ), len(c.node[t][l-1]))
165-
#part3_b = max(len(c.node[s][l-1]), len(c.node[t][l]) )
163+
#part1_b = max(len(c.nodes[s][l] ), len(c.nodes[t][l]) )
164+
#part2_b = max(len(c.nodes[s][l] ), len(c.nodes[t][l-1]))
165+
#part3_b = max(len(c.nodes[s][l-1]), len(c.nodes[t][l]) )
166166
#denominator_b = float(part1_b + part2_b + part3_b)
167167
g[s][t][index1] = float(len(common_nodes)) / denominator_a
168168
#g[s][t][index2] = float(len(common_nodes)) / denominator_b
169169
170170
c.graph[GRAPH_KEY_COMMON_NODES_LIST + str(l)].append(g[s][t][index1])
171171
172-
#c.node[s][0] |= c.node[s][l]
173-
#c.node[t][0] |= c.node[t][l]
174-
s0 |= c.node[s][l]
175-
t0 |= c.node[t][l]
172+
#c.nodes[s][0] |= c.nodes[s][l]
173+
#c.nodes[t][0] |= c.nodes[t][l]
174+
s0 |= c.nodes[s][l]
175+
t0 |= c.nodes[t][l]
176176
#pair = { g[s][t][ind]:v for ind,v in g[s][t].items() }
177177
#gnote = { GRAPH_KEY_COMMON_NODES_LIST + str(l): c.graph[GRAPH_KEY_COMMON_NODES_LIST + str(l)] for l in range(1, sp+1) }
178178
#compute_link_prop_bar.update(1)
@@ -186,18 +186,18 @@ def generate_ego_graph(g, sp):
186186
for r in range(sp):
187187
for n in g.nodes(data = False):
188188
if r == 0:
189-
g.node[n][EGO_NETWORK + str(r)] = set([n])
189+
g.nodes[n][EGO_NETWORK + str(r)] = set([n])
190190
else:
191-
g.node[n][EGO_NETWORK + str(r)] = set(g.node[n][EGO_NETWORK + str(r - 1)])
191+
g.nodes[n][EGO_NETWORK + str(r)] = set(g.nodes[n][EGO_NETWORK + str(r - 1)])
192192
for ng in nx.neighbors(g, n):
193-
g.node[n][EGO_NETWORK + str(r)] = g.node[n][EGO_NETWORK + str(r)] | g.node[ng][EGO_NETWORK + str(r - 1)]
193+
g.nodes[n][EGO_NETWORK + str(r)] = g.nodes[n][EGO_NETWORK + str(r)] | g.nodes[ng][EGO_NETWORK + str(r - 1)]
194194
195195
c.graph[GRAPH_KEY_COMMON_NODES_LIST + str(l)].append(g[s][t][index1])
196196
197-
#c.node[s][0] |= c.node[s][l]
198-
#c.node[t][0] |= c.node[t][l]
199-
s0 |= c.node[s][l]
200-
t0 |= c.node[t][l]
197+
#c.nodes[s][0] |= c.nodes[s][l]
198+
#c.nodes[t][0] |= c.nodes[t][l]
199+
s0 |= c.nodes[s][l]
200+
t0 |= c.nodes[t][l]
201201
#pair = { g[s][t][ind]:v for ind,v in g[s][t].items() }
202202
#gnote = { GRAPH_KEY_COMMON_NODES_LIST + str(l): c.graph[GRAPH_KEY_COMMON_NODES_LIST + str(l)] for l in range(1, sp+1) }
203203
#compute_link_prop_bar.update(1)
@@ -315,7 +315,7 @@ def compute_link_property(g, sp):
315315
return g
316316

317317

318-
def random_once(g, kmax, Q=100):
318+
def random_once(g, kmax, Q=2):
319319
#rg = nx.DiGraph(nx.directed_configuration_model(list(d for n, d in g.in_degree()), list(d for n, d in g.out_degree()), create_using = nx.DiGraph()))
320320
rg = g.copy()
321321
if g.number_of_edges() > 2:
@@ -372,8 +372,9 @@ def get_external_threshold(g, kmax, times, random_pre):
372372
random_results = []
373373
#global pbar_pool
374374
#pbar_pool = tqdm(total=times)#, desc='randomizing with no. thread: '+str(threads))
375-
tt0 = time.time()
376-
TIME = time.time()
375+
if not(silent):
376+
tt0 = time.time()
377+
TIME = time.time()
377378
if g.number_of_edges()>100:
378379
#print 'start randomizing with no. thread: '+str(threads)
379380
pool = pathos.multiprocessing.ProcessingPool(nodes=threads_no)
@@ -384,8 +385,9 @@ def get_external_threshold(g, kmax, times, random_pre):
384385
for c in range(times):
385386
random_results.append((randomizing((c, g, kmax, random_pre))))
386387
#pbar_pool.close()
387-
tt1 = time.time()
388-
print('randomizing used time: {} minutes'.format((tt1-tt0)/60.))
388+
if not(silent):
389+
tt1 = time.time()
390+
print('randomizing used time: {} minutes'.format((tt1-tt0)/60.))
389391

390392
for i in range(kmax):
391393
rgmeans[str(i + 1)] = [ meas[str(i + 1)] for meas, stds in random_results ]
@@ -436,7 +438,9 @@ def bridge_or_bond(ginput, times=100, external=None, threads=4, kmax=None,
436438
#random_pre = random_prefix
437439

438440
# use only the largest weakly connected component
439-
g = sorted(nx.connected_component_subgraphs(ginput, copy=False), key=len, reverse=True)[0]
441+
# g = sorted(nx.connected_component_subgraphs(ginput, copy=False), key=len, reverse=True)[0] # deprecated
442+
largest_cc = max(nx.connected_components(ginput), key=len)
443+
g = ginput.subgraph(largest_cc).copy()
440444

441445
#kmax = max(1, int(nx.average_shortest_path_length(g) / 2.0)) # 決定每個節點要外看幾層,決定強弱連結
442446

@@ -451,7 +455,7 @@ def bridge_or_bond(ginput, times=100, external=None, threads=4, kmax=None,
451455
if not(silent): print('computing link property R')
452456
g = compute_link_property(g, kmax)
453457

454-
if not(silent): print('calculating external threshold')
458+
if not(silent): print('computing external threshold')
455459
if output_random:
456460
if not os.path.exists(random_dir):
457461
os.makedirs(random_dir)
@@ -462,6 +466,7 @@ def bridge_or_bond(ginput, times=100, external=None, threads=4, kmax=None,
462466
if not(silent): print('external threshold is provided, skipped randomization')
463467
ext_dic = external
464468

469+
if not(silent): print('last step: identifying edge types')
465470
#g, bonds, Lbridges, Gbridges, silks, int_dic = edge_type_identification(g, kmax, ext_dic, return_all_list=True)
466471
if not(ext_dic is None):
467472
g, int_dic = edge_type_identification(g, kmax, ext_dic, return_all_list=False)

0 commit comments

Comments
 (0)