MCPcopy Create free account
hub / github.com/PKU-ASAL/Simulated-Data / graph_taylor

Method graph_taylor

src/Sysdig/real-time/ProvGraph.py:268–330  ·  view source on GitHub ↗
(self,g)

Source from the content-addressed store, hash-verified

266
267 return -1
268 def graph_taylor(self,g):
269 cnt = 0
270 remove_nodes_list = set()
271 for node in g.nodes:
272 if g.degree(node) < 5 or node in remove_nodes_list:
273 continue
274 merge_node = defaultdict(list)
275 rbp = RandomBinaryProjections('rbp', 10)
276 engine = Engine(256, lshashes=[rbp])
277
278 for i in g.successors(node):
279 if i in remove_nodes_list:
280 continue
281 name = self.GetNodeNewName(i)
282 if name == -1:
283 continue
284 v = np.array([])
285 if self.GetNodeType(i) == APTLOG_NODE_TYPE.PROCESS:
286 v = self.GetEmbedding(name.split('/'), self.c2v)
287 else:
288 v = self.GetEmbedding(name.split('/'), self.w2v)
289 candidate = engine.neighbours(np.array(v))
290 if len(candidate) != 0 and candidate[0][2] < 0.01:
291 c = candidate[0][1]
292 else:
293 c = name
294 engine.store_vector(np.array(v), name)
295 merge_node[c].append(i)
296 for i in merge_node:
297 if len(merge_node[i]) >= 5:
298 g = self.merge_nodes(g,merge_node[i][1:],merge_node[i][0],remove_nodes_list)
299 remove_nodes_list |= set(merge_node[i][1:])
300 rbp = RandomBinaryProjections('rbp', 10)
301 engine = Engine(256, lshashes=[rbp])
302 merge_node = defaultdict(list)
303 for i in g.predecessors(node):
304 if i in remove_nodes_list:
305 continue
306 name = self.GetNodeNewName(i)
307 if name == -1:
308 continue
309 v = np.array([])
310 if self.GetNodeType(i) == APTLOG_NODE_TYPE.PROCESS:
311 v = self.GetEmbedding(name.split('/'), self.c2v)
312 else:
313 v = self.GetEmbedding(name.split('/'), self.w2v)
314 candidate = engine.neighbours(np.array(v))
315 if len(candidate) != 0 and candidate[0][2] < 0.01:
316 c = candidate[0][1]
317 else:
318 c = name
319 engine.store_vector(np.array(v), name)
320
321 merge_node[c].append(i)
322
323 for i in merge_node:
324 if len(merge_node[i]) >= 5:
325 g = self.merge_nodes(g,merge_node[i][1:],merge_node[i][0],remove_nodes_list)

Callers 1

MergeGraphMethod · 0.95

Calls 4

GetNodeNewNameMethod · 0.95
GetNodeTypeMethod · 0.95
GetEmbeddingMethod · 0.95
merge_nodesMethod · 0.95

Tested by

no test coverage detected