EoN.fast_SIR

EoN.fast_SIR(G, tau, gamma, initial_infecteds=None, initial_recovereds=None, rho=None, tmin=0, tmax=inf, transmission_weight=None, recovery_weight=None, *, rng=None, return_full_data=False, sim_kwargs=None)[source]

fast SIR simulation for exponentially distributed infection and recovery times

From figure A.3 of Kiss, Miller, & Simon. Please cite the book if using this algorithm.

Arguments:

G networkx Graph

The underlying network

tau number

transmission rate per edge

gamma number

recovery rate per node

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 iterable of nodes (default None)

this whole collection is made recovered. Currently there is no test for consistency with initial_infecteds. Understood that everyone who isn’t infected or recovered initially is initially susceptible.

rho number

initial fraction infected. number is int(round(G.order()*rho))

tmin number (default 0)

starting time

tmax number (default Infinity)

maximum time after which simulation will stop. the default of running to infinity is okay for SIR, but not for SIS.

transmission_weight string (default None)

the label for a weight given to the edges. transmission rate is G.adj[i][j][transmission_weight]*tau

recovery_weight string (default None))

a label for a weight given to the nodes to scale their recovery rates gamma_i = G.nodes[i][recovery_weight]*gamma

return_full_data boolean (default False)

Tells whether a Simulation_Investigation object should be returned.

rng random number generator

If None, will be set to np.random.default_rng()

sim_kwargs keyword arguments

Any keyword arguments to be sent to the Simulation_Investigation object Only relevant if return_full_data=True

Returns:

times, S, I, R numpy arrays

Or if return_full_data is True

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 create animations using class methods.

SAMPLE USE:

import networkx as nx
import EoN
import matplotlib.pyplot as plt

G = nx.configuration_model([1,5,10]*100000)
initial_size = 10000
gamma = 1.
tau = 0.3
t, S, I, R = EoN.fast_SIR(G, tau, gamma,
                            initial_infecteds = range(initial_size))

plt.plot(t, I)