aboutsummaryrefslogtreecommitdiffstats
path: root/src/cascade_creation.py
diff options
context:
space:
mode:
authorjeanpouget-abadie <jean.pougetabadie@gmail.com>2015-02-04 18:39:03 -0500
committerjeanpouget-abadie <jean.pougetabadie@gmail.com>2015-02-04 18:39:03 -0500
commit393cba417046147286001e7317a36db148545bb1 (patch)
tree42f3060330b28d1a7a069da9b70ae0a8b214ef40 /src/cascade_creation.py
parent0e6ef8ce1055b3a524e2432ffda76f1acceed3d3 (diff)
downloadcascades-393cba417046147286001e7317a36db148545bb1.tar.gz
routine commit
Diffstat (limited to 'src/cascade_creation.py')
-rw-r--r--src/cascade_creation.py16
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