-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathasianfilter.py
155 lines (121 loc) · 3.38 KB
/
asianfilter.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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
import re
import operator
enumclass = []
finaldict = {}
ctr = 1
pricelist = []
netpricet = 0
netprice = 0
filename = "test-combined1995.txt"
edgelist = []
namelist = []
namedict = {}
dctr = 1
total_pre_calc = 0
with open(filename, "r", encoding='utf-16') as ins:
namelisttemp = []
for line in ins:
# print(line)
valctr = 0
value = re.findall(': [0-9]*', line)
for val in value:
# print(val)
valctr = int(val[2:])
# print(valctr)
netpricet += valctr
# print(netpricet)
# input("enter")
total_pre_calc = netpricet
threshold = int(netpricet*0.9)
anamelist = []
with open("asianlist.txt", "r") as ins:
for line in ins:
anamelist.append(line[:-1])
with open(filename, "r", encoding='utf-16') as ins:
namelist = []
for line in ins:
valctr = 0
value = re.findall(': [0-9]*', line)
for val in value:
valctr = int(val[2:])
netprice += valctr
if(len(value) == 0):
continue
idx = line.find('-->')
if idx == -1:
idx = line.find('<--')
vertex_a = line[0:idx-1]
vertex_b = line[idx+4:line.find(':')-1]
# vertex_a = re.findall(".*[><-]", line)[0][:-4]
# vertex_b = re.findall('[><-].* : ',line)[0][4:-3]
if vertex_a not in anamelist and vertex_b not in anamelist:
continue
# print(str(vertex_a) + ' -- ' + str(vertex_b))
temp = []
i1 = 0
i2 = 0
if vertex_a in namelist:
i1 = namedict[vertex_a]
else:
namelist.append(vertex_a)
namedict[vertex_a] = dctr
i1 = dctr
dctr += 1
if vertex_b in namelist:
i2 = namedict[vertex_b]
else:
namelist.append(vertex_b)
namedict[vertex_b] = dctr
i2 = dctr
dctr += 1
edge = tuple(sorted([i1, i2]))
if edge in finaldict:
finaldict[edge] += valctr
else:
finaldict[edge] = valctr
if(vertex_a < vertex_b):
temp.append(vertex_a)
temp.append(vertex_b)
else:
temp.append(vertex_b)
temp.append(vertex_a)
edgelist.append(temp)
# print(netprice)
# print(len(edgelist))
edgelist = set(tuple(row) for row in edgelist)
print(len(namelist))
# print(finaldict)
sorted_d = sorted(finaldict.items(), key=operator.itemgetter(1), reverse=True)
delcount = 0
while threshold < total_pre_calc:
threshold += sorted_d[-1][1]
finaldict.pop(sorted_d[-1][0])
# print("deleted " + str(sorted_d[-1]))
del sorted_d[-1]
delcount += 1
sorted_d.pop()
# print(delcount)
# input("enter")
uniquenodelist = []
for edge in finaldict:
if edge[0] not in uniquenodelist:
uniquenodelist.append(edge[0])
if edge[1] not in uniquenodelist:
uniquenodelist.append(edge[1])
todel = []
for edge in finaldict:
if edge[0] == edge[1]:
todel.append(edge)
for edge in todel:
finaldict.pop(edge)
uniqueedges = []
# print(anamelist)
for edge in finaldict:
if edge not in uniqueedges:
edgeswap = []
edgeswap.append(edge[1])
edgeswap.append(edge[0])
if edgeswap not in uniqueedges:
uniqueedges.append(edge)
for edge in uniqueedges:
print(str(edge[0]) + " " + str(edge[1]))