EoN.SIR_heterogeneous_pairwise

EoN.SIR_heterogeneous_pairwise(Sk0, Ik0, Rk0, SkSl0, SkIl0, tau, gamma, tmin=0, tmax=100, tcount=1001, return_full_data=False, Ks=None)[source]

Encodes System (5.15) of Kiss, Miller, & Simon. Please cite the book if using this algorithm.

In the text this is often referred to as the “heterogeneous mean-field model closed at the level of triples”

[dot{S}_k] = -tau [S_k I] [dot{I}_k] = tau [S_k I] - gamma [I_k] [dot{R}_k] = gamma [I_k] (but using Rk=Nk-Sk-Ik for this equation) [dot{S_kI_l}] = -gamma[S_k I_l] + tau([S_k S_l I] - [I S_k I_l]

  • [S_k I_l])

[dot{S_kS_l}] = -tau([S_k S_l I] + [I S_k S_l])

[A_l S_k I] = ((k-1)/k) [A_l S_k] [S_k I]/ [S_k] [I S_k A_l] = ((k-1)/k) [I S_k] [S_k A_l]/ [S_k]

Arguments:

Sk0 numpy array,

(if Ks is defined, the definition changes slightly, see below)

Sk0[k] is number of degree k susceptible at time 0.

Ik0 numpy array

(if Ks is defined, the definition changes slightly, see below)

as in Sk0

Rk0 numpy array

(if Ks is defined, the definition changes slightly, see below)

as in Sk0

SkSl0 numpy 2D array

(if Ks is defined, the definition changes slightly, see below)

SkSl0[k][l] is [S_kS_l] at 0

SkIl0 numpy 2D array

(if Ks is defined, the definition changes slightly, see below)

as in SkSl0

tau positive float

transmission rate

gamma number

recovery rate

tmin number (default 0)

minimum report time

tmax number (default 100)

maximum report time

tcount integer (default 1001)

number of reports

return_full_data boolean (default False)

If True, return times, Sk, Ik, Rk, SkIl, SkSl If False, return times, S, I, R

Ks numpy array. (default None)

(helps prevent memory errors) if some degrees are not observed, then the corresponding entries of these arrays are zero. This can lead to memory errors in the case of a network with many missing degrees. So Ks is an (assumed) ordered vector stating which Ks are actually observed. Then the Sk0[i] is the number of nodes that are susceptible and have degree Ks[i]. Similarly for Ik0 and SkIl0 etc.

Returns:

if return_full_data is True

returns times, S, I, R, Sk, Ik, Rk, SkIl, SkSl

if return_full_data is False

return times, S, I, R

SAMPLE USE:

import networkx as nx
import EoN