diff options
| author | jeanpouget-abadie <jean.pougetabadie@gmail.com> | 2015-02-04 18:39:03 -0500 |
|---|---|---|
| committer | jeanpouget-abadie <jean.pougetabadie@gmail.com> | 2015-02-04 18:39:03 -0500 |
| commit | 393cba417046147286001e7317a36db148545bb1 (patch) | |
| tree | 42f3060330b28d1a7a069da9b70ae0a8b214ef40 /src/cascade_creation.py | |
| parent | 0e6ef8ce1055b3a524e2432ffda76f1acceed3d3 (diff) | |
| download | cascades-393cba417046147286001e7317a36db148545bb1.tar.gz | |
routine commit
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 |
