diff options
Diffstat (limited to 'src/cascade_creation.py')
| -rw-r--r-- | src/cascade_creation.py | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/cascade_creation.py b/src/cascade_creation.py index 1c365b9..a71fce7 100644 --- a/src/cascade_creation.py +++ b/src/cascade_creation.py @@ -9,9 +9,11 @@ class InfluenceGraph(nx.DiGraph): """ networkX graph with mat and logmat attributes """ - def __init__(self, max_proba=None, min_proba=None, *args, **kwargs): + def __init__(self, max_proba=None, min_proba=None,sparse_edges=False, + *args, **kwargs): self.max_proba = max_proba self.min_proba = min_proba + self.sparse_edges=sparse_edges super(InfluenceGraph, self).__init__(*args, **kwargs) def erdos_init(self, n, p): @@ -61,8 +63,16 @@ class InfluenceGraph(nx.DiGraph): @property def mat(self): if not hasattr(self, '_mat'): - self._mat = self.max_proba * np.random.rand(len(self), len(self) + if self.min_proba is None or self.max_proba is None: + print("You forgot to initialize the min and max proba") + self._mat = np.zeros((self.number_of_nodes(), self.number_of_nodes())) + else: + self._mat = self.max_proba * np.random.rand(len(self), len(self) ) * np.asarray(nx.adjacency_matrix(self).todense().T) + if self.sparse_edges: + #Adding sparse non-edges to the graph! + self._mat += .1 * np.random.rand(len(self), len(self) + ) * np.random.binomial(1, p=.33, size=(len(self), len(self))) return self._mat @property @@ -175,7 +185,7 @@ def add_edges_from_proba_vector(G, p_node, node, floor_cstt): floor_parent = np.nonzero(p_node*(p_node > floor_cstt)) for parent in floor_parent[0]: G.add_edge(parent, node) - #TODO: update G's mat matrix + G.mat[node] = p_node.T return G |
