EoN.SIR_pair_based¶
-
EoN.
SIR_pair_based
(G, tau, gamma, rho=None, nodelist=None, Y0=None, X0=None, XY0=None, XX0=None, tmin=0, tmax=100, tcount=1001, transmission_weight=None, recovery_weight=None, return_full_data=False)[source]¶ Encodes System (3.39) of Kiss, Miller, & Simon. Please cite the book if using this algorithm.
WARNING This does not solve the pairwise equations. Look at SIR_homogeneous_pairwise and SIR_heterogeneous_pairwise for that.
This system solves equations for an SIR disease model spreading on a given graph. It captures the dependence with pairs, but not triples.
It will be exact for a tree.
There are NO CORRECTIONS for the existence of TRIANGLES or any other CYCLES.
Some corrections for triangles are provided in the text, but not implemented here.
See also: Hadjichrysanthou and Sharkey Epidemic control analysis: Desigining targeted intervention
strategies against epidemics propagated on contact networks,Journal of Theoretical Biology
Arguments: G networkx Graph
- tau positive float
- transmission rate of disease
- gamma number
- global recovery rate
- rho float between 0 and 1 (default
None
) - proportion assumed initially infected. If None, then Y0 is used if Y0 is also None, then rho = 1./N
- nodelist list
- list of nodes in
G
in the some prescribed order (just since there is no guarantee thatG
returns nodes in the same order if things change a bit.) - Y0 numpy array
- the array of initial infection probabilities for each node in order as in nodelist/
- X0 numpy array (default
None
) - probability a random node is initially susceptible. the probability of initially recovered will be 1-X0-Y0. By default we assume no initial recoveries, so X0=1-Y0 will be assumed unless both Y0 and X0 are given.
- XY0 2D numpy array (default
None
) (each dimension has length number of nodes of G) XY0[i,j] is probability node i is susceptible and j is
infected.- if None, then assumes that infections are introduced
- randomly according to Y0.
- XX0 2D numpy array (default
None
) (each dimension has length number of nodes of G) XX0[i,j] is probability nodes i and j are susceptible. if None, then assumes that infections are introduced
randomly according to Y0.- tmin number (default 0)
- minimum report time
- tmax number (default 100)
- maximum report time
- tcount integer (default 1001)
- number of reports
- transmission_weight string
- the label for a weight given to the edges. G.edge[i][j][transmission_weight] = g_{ij}
- 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)
- if True:
- returns times, S, I, R, Xs, Ys, Zs, XY, XX
- if False:
- returns times, S, I, R
Returns: - if return_full_data is True:
- returns times, S, I, R, Xs, Ys, Zs, XY, XX
- if … is False:
- returns times, S, I, R
SAMPLE USE: import networkx as nx import EoN G = nx.fast_gnp_random_graph(1000,0.004) nodelist = G.nodes() Y0 = np.array([1 if node<10 else 0 for node in nodelist]) #infect first 10 t, S, I, R = EoN.SIR_pair_based(G, nodelist, Y0, 2, 0.5, tmax = 4, tcount = 101) plt.plot(t,I)