(self, node, depth,sense)
| 519 | return subgraph |
| 520 | |
| 521 | def GetforeSubgraph(self, node, depth,sense): |
| 522 | subgraph = set() |
| 523 | if depth == 0: |
| 524 | return subgraph |
| 525 | # score = {} |
| 526 | # for i in self.G.successors(node): |
| 527 | # score[i] = self.G.out_degree(i)/self.G.in_degree(i) |
| 528 | |
| 529 | # score = sorted(score.items(), key=lambda d: d[1], reverse=True)[:5] |
| 530 | # node_list = [i[0] for i in score] |
| 531 | # score = {} |
| 532 | # attr_list = {} |
| 533 | # for i in self.G.successors(node): |
| 534 | # name = self.GetNodeAttr(i) |
| 535 | # if name in attr_list: |
| 536 | # s1 = self.G.out_degree(i)/(self.G.in_degree(i) + 1) + self.GetNodeScore(i)/10 |
| 537 | # if s1 > score[attr_list[name]]: |
| 538 | # attr_list[name] = i |
| 539 | # score[i] = s1 |
| 540 | # else: |
| 541 | # attr_list[name] = i |
| 542 | # score[i] = self.G.out_degree(i)/(self.G.in_degree(i) + 1) + self.GetNodeScore(i)/10 |
| 543 | # new_score = {k:score[k] for k in list(attr_list.values())} |
| 544 | |
| 545 | # new_score = sorted(new_score.items(), key=lambda d: d[1], reverse=True)[:5] |
| 546 | # node_list = [i[0] for i in new_score] |
| 547 | |
| 548 | score = {} |
| 549 | attr_list = {} |
| 550 | for i in self.G.successors(node): |
| 551 | score[i] = (self.GetNodeScore(i),self.G.out_degree(i)/ (self.G.in_degree(i) + 1)) |
| 552 | |
| 553 | new_score = sorted(score.items(), key=lambda d: (d[1][0],d[1][1]), reverse=True)[:10] |
| 554 | node_list = [i[0] for i in new_score] |
| 555 | |
| 556 | for i in node_list: |
| 557 | if i in sense: |
| 558 | continue |
| 559 | sense.add(i) |
| 560 | subgraph.add(i) |
| 561 | x = self.GetforeSubgraph(i,depth - 1,sense) |
| 562 | subgraph |= x |
| 563 | |
| 564 | return subgraph |
| 565 | |
| 566 | def propagation(self,update_node_list, f_depth = 5, b_depth = 5, alg = 'sum'): |
| 567 | if alg == 'sum': |
no test coverage detected