(self)
| 112 | self.batch_it = self.batch_iter(self.node2idx) |
| 113 | |
| 114 | def _gen_sampling_table(self): |
| 115 | |
| 116 | # create sampling table for vertex |
| 117 | power = 0.75 |
| 118 | numNodes = self.node_size |
| 119 | node_degree = np.zeros(numNodes) # out degree |
| 120 | node2idx = self.node2idx |
| 121 | |
| 122 | for edge in self.graph.edges(): |
| 123 | node_degree[node2idx[edge[0]] |
| 124 | ] += self.graph[edge[0]][edge[1]].get('weight', 1.0) |
| 125 | |
| 126 | total_sum = sum([math.pow(node_degree[i], power) |
| 127 | for i in range(numNodes)]) |
| 128 | norm_prob = [float(math.pow(node_degree[j], power)) / |
| 129 | total_sum for j in range(numNodes)] |
| 130 | |
| 131 | self.node_accept, self.node_alias = create_alias_table(norm_prob) |
| 132 | |
| 133 | # create sampling table for edge |
| 134 | numEdges = self.graph.number_of_edges() |
| 135 | total_sum = sum([self.graph[edge[0]][edge[1]].get('weight', 1.0) |
| 136 | for edge in self.graph.edges()]) |
| 137 | norm_prob = [self.graph[edge[0]][edge[1]].get('weight', 1.0) * |
| 138 | numEdges / total_sum for edge in self.graph.edges()] |
| 139 | |
| 140 | self.edge_accept, self.edge_alias = create_alias_table(norm_prob) |
| 141 | |
| 142 | def batch_iter(self, node2idx): |
| 143 |
no test coverage detected