-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdataset.py
More file actions
42 lines (30 loc) · 1.14 KB
/
Copy pathdataset.py
File metadata and controls
42 lines (30 loc) · 1.14 KB
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
import pandas as pd
import networkx as nx
import argparse
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('--edges', type=str, help='input csv file')
parser.add_argument('--sep', type=str, default='\t')
parser.add_argument('--output', type=str)
return parser.parse_args()
def get_node(node):
return node.strip().split(':')[0]
def get_type(node):
return node.strip().split(':')[1]
def main(args):
edges = pd.read_csv(args.edges, sep=args.sep, names=['node1', 'node2', 'weight'])
G = nx.Graph()
edges['type1'] = edges['node1'].apply(get_type)
edges['node1'] = edges['node1'].apply(get_node)
edges['type2'] = edges['node2'].apply(get_type)
edges['node2'] = edges['node2'].apply(get_node)
for i, n in edges.iterrows():
G.add_edge(n['node1'], n['node2'], weight=n['weight'])
for i, n in edges.iterrows():
G.nodes[n['node1']]['type'] = n['type1']
G.nodes[n['node2']]['type'] = n['type2']
nx.write_gpickle(G, 'datasets/%s' %args.output)
if __name__ == "__main__":
args = parse_args()
print(args.sep)
main(args)