-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathparser.py
More file actions
66 lines (55 loc) · 2.01 KB
/
Copy pathparser.py
File metadata and controls
66 lines (55 loc) · 2.01 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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
import sys
def get_vertex(line):
return int(line.split()[0])
def parse_file(graph_filename, num_machines, masters_workers):
with open(graph_filename, 'r') as graph_file:
lines = graph_file.readlines()
v_to_m_dict = {}
curr_counter = 0
for line in lines:
if line[0] < '0' or line[0] > '9':
continue
u, v = line.split()
if u not in v_to_m_dict:
v_to_m_dict[u] = curr_counter
curr_counter += 1
if v not in v_to_m_dict:
v_to_m_dict[v] = curr_counter
curr_counter += 1
num_vertices = curr_counter
v_to_m_dict = {v: masters_workers[2+num_machines*i/num_vertices] for v,i in v_to_m_dict.items()}
return v_to_m_dict, num_vertices
# process vertices results into 1
def combine_files(output_filename, collected_files):
supersteps = []
unsorted_pairs = []
for collected_file in collected_files:
with open(collected_file, 'r') as input_file:
lines = input_file.readlines()
supersteps.append(int(lines[0]))
for line in lines[1:]:
x, y = line.split()
unsorted_pairs.append((int(x), float(y)))
with open(output_filename, 'w') as output_file:
for x,y in sorted(unsorted_pairs, key=lambda x:-x[1]):
output_file.write('{} {}\n'.format(x,y))
assert(len(set(supersteps)) <= 1)
def collect_vertices_info(file_edges, file_values, file_messages, vertices_info):
with open(file_edges, 'r') as edges:
edge_lines = edges.readlines()
with open(file_values, 'r') as values:
value_lines = values.readlines()
with open(file_messages, 'r') as messages:
message_lines = messages.readlines()
assert(len(edge_lines) == len(value_lines)-1 == len(message_lines)-1)
for i in range(len(edge_lines)):
edge_info = edge_lines[i].split()
value_info = value_lines[i+1].split()
message_info = message_lines[i+1].split()
assert(edge_info[0] == value_info[0] == message_info[0])
edges = edge_info[1:]
value = value_info[1]
first_len = message_info[1]
messages = message_info[2:]
assert(edge_info[0] not in vertices_info)
vertices_info[edge_info[0]] = (edges,value,first_len,messages)