Changes from v 1.0

New in v 1.0.8

Bug fixes in basic_discrete_SIS.

Changed the discrete SIS and SIR code so that the initial infections occur at t=-1 for the simulation_investigation objects.

New in v 1.0.7

No changes (fixing an error in a tag)

New in v 1.0.6

Documentation for Gillespie_complex_contagion now includes an example.

Removed print command (left over from debugging) from Gillespie_complex_contagion.

New in v 1.0.5

Reintroduced Gillespie_Arbitrary which just calls Gillespie_simple_contagion and provides a warning that it will be discontinued later.

New in v 1.0.4

Have added

Gillespie_complex_contagion which can handle complex contagions.

The old Gillespie_Arbitrary has been renamed Gillespie_simple_contagion. I have fixed a bug in previous versions that prevented it from handling weighted graphs.

Gillespie_Arbitrary is now back-compatible to networkx 1.11 (but it has been renamed).

Readthedocs is now providing documentation for each function.

New in v 1.0.3

No changes to package, but a small change attempting to get readthedocs to correctly build.

New in v 1.0.2

No changes (I accidentally made a typo just before uploading v1.0.1 to pypi and I can’t reupload with the same name).

New in v 1.0.1

Returning transmission chains

When simulations have return_full_data=True, the returned object now includes information on who infected whom at each time. This can be accessed through:

transmissions which returns a list of tuples (t,u,v) stating that node u infected node v at time t.

transmission_tree which returns a directed multi graph where an edge from u to v with attribute ‘time’ equal to t means u infected v at time t.

(note that in an SIS epidemic, this “tree” may have cycles and repeated edges)

(addresses issue 21 )

Non-SIS/SIR processes

It is now possible to run a wide range of non-SIS/SIR processes spreading in a network. These processes include competing diseases, SIRS disease, SEIR disease, and quite a few other options. This is done using:


Examples are here.

Currently this does not accept return_full_data=True, and it requires that the events all occur as Poisson processes (that is, it makes sense to say that there is a rate at which things happen, and that rate depends on the status of the nodes and perhaps some property of the node or the partnership, but nothing else).

(addresses issues 13 & 17)