-
Notifications
You must be signed in to change notification settings - Fork 5
/
utils.py
50 lines (46 loc) · 1.23 KB
/
utils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
import networkx as nx
def to_motivo_edgelist(filename, G):
map_d = {}
index = 0
for i in G.nodes:
map_d[i] = index
index+= 1
num_labeled_G = nx.relabel_nodes(G, map_d)
di_G = nx.to_directed(num_labeled_G)
cs = str(len(G.nodes))+' '+str(len(G.edges))
fh = open(filename + ".txt", "w")
fh.write(cs+'\n')
fh.close()
fh = open(filename + ".txt", "ab")
nx.write_edgelist(di_G,fh, data=False)
fh.close()
return map_d
def get_start_digit(v):
if v==0:
return 0
if v<0:
v = -v
while v<1:
v = v*10
return int(str(v)[:1])
def attribute_to_weight(G, target_digit=1, attribute_name='weight'):
pos_list = []
neg_list = []
for e in G.edges:
start_digit = get_start_digit(G[e[0]][e[1]][attribute_name])
if start_digit==0:
continue
if start_digit==target_digit:
pos_list.append(e)
else:
neg_list.append(e)
return pos_list, neg_list
def get_key(my_dict, vals):
result = []
for key, value in my_dict.items():
if value in vals:
result.append(key)
if len(result) != len(vals):
print('some vals not in dict')
return []
return result