Skip to content

Commit 808243f

Browse files
committed
fix struc2vec
1 parent 9bb9279 commit 808243f

11 files changed

Lines changed: 18299 additions & 57 deletions

File tree

.DS_Store

2 KB
Binary file not shown.

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -147,3 +147,6 @@ cython_debug/
147147
# Mac OS file
148148
*.DS_Store
149149

150+
# struc2vec pickles
151+
semb/methods/struc2vec/pickles/
152+

semb/.DS_Store

0 Bytes
Binary file not shown.

semb/methods/node2vec/method.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def train(self):
2929
model = Word2Vec(walks, size=self.params['dim'], window=self.params['window_size'],
3030
min_count=0, sg=1, workers=self.params['workers'], iter=self.params['iter'])
3131
self.model = model
32-
print(g.G)
32+
# print(g.G)
3333
self.embeddings = dict()
3434
for cur_node in g.G.nodes():
3535
self.embeddings[cur_node] = self.model.wv.get_vector(str(cur_node)).tolist()

semb/methods/struc2vec/algorithms.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,7 @@ def generate_random_walks(num_walks,walk_length,workers,vertices):
185185
save_random_walks(walks)
186186

187187
def save_random_walks(walks):
188-
with open('random_walks.txt', 'w') as file:
188+
with open(walk_fname, 'w') as file:
189189
for walk in walks:
190190
line = ''
191191
for v in walk:

semb/methods/struc2vec/algorithms_distances.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -607,7 +607,7 @@ def generate_distances_network(workers):
607607
logging.info('Creating distance network...')
608608

609609
os.system("rm "+returnPickle().replace(' ', '\ ')+"weights_distances-layer-*.pickle")
610-
print('!!!!!')
610+
# print('!!!!!')
611611
print("rm "+returnPickle().replace(' ', '\ ')+"weights_distances-layer-*.pickle")
612612
with ProcessPoolExecutor(max_workers=1) as executor:
613613
job = executor.submit(generate_distances_network_part1,workers)

semb/methods/struc2vec/graph.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -229,7 +229,7 @@ def load_matfile(file_, variable_name="network", undirected=True):
229229
def from_networkx(G_input, undirected=True):
230230
G = Graph()
231231

232-
for idx, x in enumerate(G_input.nodes_iter()):
232+
for idx, x in enumerate(G_input.nodes()):
233233
for y in iterkeys(G_input[x]):
234234
G[x].append(y)
235235

semb/methods/struc2vec/method.py

Lines changed: 46 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -5,48 +5,56 @@
55
from gensim.models.word2vec import LineSentence
66
from time import time
77
from . import graph
8+
from .utils import *
9+
from .graph import *
810
from semb.methods import BaseMethod
911

1012
"""
1113
Driver for learning Struc2Vec embedding
1214
"""
1315
class Method(BaseMethod):
1416

15-
__PARAMS__ = dict(dim=128, walk_length=80, num_walks=10, window_size=10, util_layer=None, \
16-
iter=5, worker=1, weighted=False, directed=False, opt1=False, opt2=False, opt3=False)
17-
18-
19-
def exec_struc2vec(self):
20-
# execute struc2vec
21-
if self.params['opt3']:
22-
until_layer = self.params['until_layer']
23-
else:
24-
until_layer = None
25-
G = struc2vec.Graph(self.graph, self.params['directed'],
26-
self.params['worker'], untilLayer=until_layer)
27-
if self.params['opt1']:
28-
G.preprocess_neighbors_with_bfs_compact()
29-
else:
30-
G.preprocess_neighbors_with_bfs()
31-
if self.params['opt2']:
32-
G.create_vectors()
33-
G.calc_distances(compactDegree=self.params['opt1'])
34-
else:
35-
G.calc_distances_all_vertices(compactDegree=self.params['opt1'])
36-
37-
G.create_distances_network()
38-
G.preprocess_parameters_random_walk()
39-
G.simulate_walks(self.params['num_walks'], self.params['walk_length'])
40-
41-
def learn_embeddings(self):
42-
walks = LineSentence('random_walks.txt')
43-
self.model = Word2Vec(walks, size=self.params['dim'], window=self.params['window_size'],
44-
min_count=0, hs=1, sg=1, workers=self.params['worker'], iter=self.params['iter'])
45-
self.embeddings = self.model.wv
46-
47-
def get_id(self):
48-
return "struc2vec"
49-
50-
def train(self):
51-
self.exec_struc2vec()
52-
self.learn_embeddings()
17+
__PARAMS__ = dict(dim=128, walk_length=80, num_walks=10, window_size=10, until_layer=None, \
18+
iter=5, workers=1, weighted=False, directed=False, opt1=False, opt2=False, opt3=False)
19+
20+
21+
def exec_struc2vec(self):
22+
# execute struc2vec
23+
if self.params['opt3']:
24+
until_layer = self.params['until_layer']
25+
else:
26+
until_layer = None
27+
graph = from_networkx(self.graph, not self.params['directed'])
28+
G = struc2vec.Graph(graph, self.params['directed'], self.params['workers'], untilLayer=until_layer)
29+
30+
if self.params['opt1']:
31+
G.preprocess_neighbors_with_bfs_compact()
32+
else:
33+
G.preprocess_neighbors_with_bfs()
34+
if self.params['opt2']:
35+
G.create_vectors()
36+
G.calc_distances(compactDegree=self.params['opt1'])
37+
else:
38+
G.calc_distances_all_vertices(compactDegree=self.params['opt1'])
39+
40+
G.create_distances_network()
41+
G.preprocess_parameters_random_walk()
42+
G.simulate_walks(self.params['num_walks'], self.params['walk_length'])
43+
44+
45+
46+
def learn_embeddings(self):
47+
walks = LineSentence(walk_fname)
48+
self.model = Word2Vec(walks, size=self.params['dim'], window=self.params['window_size'],
49+
min_count=0, hs=1, sg=1, workers=self.params['workers'], iter=self.params['iter'])
50+
51+
self.embeddings = dict()
52+
for cur_node in self.graph.nodes():
53+
self.embeddings[cur_node] = self.model.wv.get_vector(str(cur_node)).tolist()
54+
55+
def get_id(self):
56+
return "struc2vec"
57+
58+
def train(self):
59+
self.exec_struc2vec()
60+
self.learn_embeddings()

0 commit comments

Comments
 (0)