diff options
| author | jeanpouget-abadie <jean.pougetabadie@gmail.com> | 2014-11-23 23:22:35 -0500 |
|---|---|---|
| committer | jeanpouget-abadie <jean.pougetabadie@gmail.com> | 2014-11-23 23:22:35 -0500 |
| commit | 1c08943bed693d3110634fc3e5bd0f4631066db0 (patch) | |
| tree | 07481593339b975bb222da6fd1a743a524276dcf /jpa_test/cascade_creation.py | |
| parent | ff79230b49760a37b57590c0b6e9907500486114 (diff) | |
| download | cascades-1c08943bed693d3110634fc3e5bd0f4631066db0.tar.gz | |
messy cascade_creation.py
Diffstat (limited to 'jpa_test/cascade_creation.py')
| -rw-r--r-- | jpa_test/cascade_creation.py | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/jpa_test/cascade_creation.py b/jpa_test/cascade_creation.py new file mode 100644 index 0000000..88798cd --- /dev/null +++ b/jpa_test/cascade_creation.py @@ -0,0 +1,38 @@ +import networkx as nx +import numpy as np + +def icc_cascade(G, p_init): + """ + input: graph with prob as edge attr + returns: 2D boolean matrix with indep. casc. + where True means node was active at that time step + p_init: proba that node in seed set + """ + susceptible = np.ones(G.number_of_nodes(), dtype=bool) + active = np.random.rand(G.number_of_nodes()) < p_init + susceptible = susceptible - active + cascade = [] + while sum(active) and sum(susceptible): + cascade.append(active) + tmp = np.zeros(G.number_of_nodes(), dtype=bool) + for node in np.where(active)[0]: + #rand_p = np.random.rand(G.degree(2)) + for edge in G.edges(node, data=True): + tmp[edge[1]] += np.random.rand() < edge[2]["weight"] \ + and susceptible[edge[1]] + active = tmp + susceptible = susceptible - active + return cascade + +def test(): + """ + unit test + """ + G = nx.erdos_renyi_graph(500, .15, directed=True) + for edge in G.edges(data=True): + edge[2]['weight'] = .1*np.random.rand() + + print len(icc_cascade(G, p_init=.1)) + +if __name__ == "__main__": + test() |
