Example #1
0
                       name='transmission_weight')

H = nx.DiGraph()
H.add_node('S')
H.add_edge('E', 'I', rate=0.6, weight_label='expose2infect_weight')
H.add_edge('I', 'R', rate=0.1)

J = nx.DiGraph()
J.add_edge(('I', 'S'), ('I', 'E'),
           rate=0.1,
           weight_label='transmission_weight')
IC = defaultdict(lambda: 'S')
for node in range(200):
    IC[node] = 'I'

return_statuses = ('S', 'E', 'I', 'R')

t, S, E, I, R = EoN.Gillespie_Arbitrary(G,
                                        H,
                                        J,
                                        IC,
                                        return_statuses,
                                        tmax=float('Inf'))

plt.semilogy(t, S, label='Susceptible')
plt.semilogy(t, E, label='Exposed')
plt.semilogy(t, I, label='Infected')
plt.semilogy(t, R, label='Recovered')
plt.legend()

plt.savefig('SEIR.png')
import EoN
import networkx as nx
from collections import defaultdict
import matplotlib.pyplot as plt

N = 50000
G = nx.fast_gnp_random_graph(N, 5. / (N - 1))

H = nx.DiGraph(
)  #DiGraph showing possible transitions that don't require an interaction
H.add_edge('I', 'R', rate=1.4)  #I->R
H.add_edge('R', 'S', rate=0.2)  #R->S

J = nx.DiGraph()  #DiGraph showing transition that does require an interaction.
J.add_edge(('I', 'S'), ('I', 'I'), rate=1)  #IS->II

IC = defaultdict(lambda: 'S')
for node in range(200):
    IC[node] = 'I'

return_statuses = ('S', 'I', 'R')

t, S, I, R = EoN.Gillespie_Arbitrary(G, H, J, IC, return_statuses, tmax=30)

plt.plot(t, S, label='Susceptible')
plt.plot(t, I, label='Infected')
plt.plot(t, R, label='Recovered')
plt.legend()
plt.savefig('SIRS.png')
J.add_edge(('II', 'RS'), ('II', 'RI'), rate = 0.2)
J.add_edge(('RI', 'SS'), ('RI', 'SI'), rate = 1)
J.add_edge(('RI', 'IS'), ('RI', 'II'), rate = 1)
J.add_edge(('RI', 'RS'), ('RI', 'RI'), rate = 1)
J.add_edge(('IS', 'SS'), ('IS', 'IS'), rate = 0.2)
J.add_edge(('IS', 'SI'), ('IS', 'II'), rate = 0.2)
J.add_edge(('IS', 'SR'), ('IS', 'IR'), rate = 0.2)
J.add_edge(('II', 'SS'), ('II', 'IS'), rate = 0.2)
J.add_edge(('II', 'SI'), ('II', 'II'), rate = 0.2)
J.add_edge(('II', 'SR'), ('II', 'IR'), rate = 0.2)
J.add_edge(('IR', 'SS'), ('IR', 'IS'), rate = 1)
J.add_edge(('IR', 'SI'), ('IR', 'II'), rate = 1)
J.add_edge(('IR', 'SR'), ('IR', 'IR'), rate = 1)


return_statuses = ('SS', 'SI', 'SR', 'IS', 'II', 'IR', 'RS', 'RI', 'RR')

initial_size = 700
IC = defaultdict(lambda: 'SS')
for node in range(initial_size):
    IC[node] = 'II'


t, SS, SI, SR, IS, II, IR, RS, RI, RR = EoN.Gillespie_Arbitrary(G, H, J, IC, return_statuses, 
                                        tmax = float('Inf'))    

plt.semilogy(t, IS+II+IR, '-.', label = 'Infected with disease 1')
plt.semilogy(t, SI+II+RI, '-.', label = 'Infected with disease 2') 

plt.legend()
plt.savefig('Cooperate.png')