EoN.basic_discrete_SIR¶
- EoN.basic_discrete_SIR(G, p, initial_infecteds=None, initial_recovereds=None, rho=None, tmin=0, tmax=inf, *, rng=None, return_full_data=False, sim_kwargs=None)[source]¶
Performs simple discrete SIR simulation assuming constant transmission probability p.
From figure 6.8 of Kiss, Miller, & Simon. Please cite the book if using this algorithm.
Does a simulation of the simple case of all nodes transmitting with probability p independently to each neighbor and then recovering.
- Arguments:
- G networkx Graph
The network the disease will transmit through.
- p number
transmission probability
- initial_infecteds node or iterable of nodes
if a single node, then this node is initially infected
if an iterable, then whole set is initially infected
if None, then choose randomly based on rho.
If rho is also None, a random single node is chosen.
If both initial_infecteds and rho are assigned, then there is an error.
- initial_recovereds as for initial_infecteds, but for initially
recovered nodes.
- rho number (default None)
initial fraction infected. number initially infected is int(round(G.order()*rho))
The default results in a single randomly chosen initial infection.
- tmin float (default 0)
start time
- tmax float (default infinity)
stop time (if not extinct first).
- rng random number generator
If None, will be set to np.random.default_rng()
- return_full_data boolean (default False)
Tells whether a Simulation_Investigation object should be returned.
- sim_kwargs keyword arguments
Any keyword arguments to be sent to the Simulation_Investigation object Only relevant if
return_full_data=True
- Returns:
if return_full_data is False returns
t, S, I, R numpy arrays
these numpy arrays give all the times observed and the number in each state at each time.
- Or
if return_full_data is Truereturns full_data Simulation_Investigation object
from this we can extract the status history of all nodes We can also plot the network at given times and even create animations using class methods.
- SAMPLE USE:
import networkx as nx import EoN import matplotlib.pyplot as plt G = nx.fast_gnp_random_graph(1000,0.002) t, S, I, R = EoN.basic_discrete_SIR(G, 0.6) plt.plot(t,S) #This sample may be boring if the randomly chosen initial infection #doesn't trigger an epidemic.