#We have defined the two types of nodes.

#now define the transmission and recovery functions:
def trans_time_function(source, target, tau):
    if G.node[source]['type'] is 'A':
        return random.expovariate(2*tau)
    else:
        return random.expovariate(tau)
    
def rec_time_function(node, gamma):
    return random.expovariate(gamma)

tau = 0.4
gamma = 1.
sim = EoN.fast_nonMarkov_SIR(G, trans_time_function, rec_time_function, 
                             trans_time_args=(tau,), rec_time_args=(gamma,),
                             rho = 0.01, return_full_data=True)
                             
t, S, I, R = sim.summary()
plt.plot(t, I, label='Total Infecteds')

t1, S1, I1, R1 = sim.summary(nodelist = [node for node in G if G.node[node]['type']=='A'])
plt.plot(t1, I1, label = 'Partition 1')

t2, S2, I2, R2 = sim.summary(nodelist = [node for node in G if G.node[node]['type']=='B'])
plt.plot(t2, I2, label = 'Partition 2')

plt.legend()
plt.xlabel('$t$')
plt.ylabel('Infecteds')
plt.savefig('bipartite.png')
Пример #2
0
D_s = [1, 2, 4]
tau_s = [0.1, 0.3, 0.7]
initial_inf_count = 100

total = len(D_s) * len(tau_s) * len(conn_num_s)
cnt = 0
for conn_num in conn_num_s:
    for D in D_s:
        for tau in tau_s:

            G = nx.fast_gnp_random_graph(N, conn_num / (N - 1.))
            t, S, I, R = EoN.fast_nonMarkov_SIR(
                G,
                trans_time_fxn=trans_time_fxn,
                rec_time_fxn=rec_time_fxn,
                trans_time_args=(tau, ),
                rec_time_args=(D, ),
                initial_infecteds=range(initial_inf_count))
            data_dict = {
                'rec_time': D,
                'trans_time': tau,
                't': t,
                'I': I,
                'S': S,
                'R': R,
                'population': N,
                'conn_num': conn_num
            }
            results.append(data_dict)
            cnt += 1
def rec_time_fxn(u, K, gamma):
    duration = 0
    for counter in range(K):
        duration += random.expovariate(K * gamma)
    return duration


def trans_time_fxn(u, v, tau):
    return random.expovariate(tau)


display_ts = scipy.linspace(0, 50, 26)
for G, filename in ([regular, 'fig9p2a.png'], [ER, 'fig9p2b.png']):
    plt.clf()
    Isum = scipy.zeros(len(display_ts))
    for K, symbol in ([1, 's'], [3, 'd']):
        for counter in range(iterations):
            t, S, I, R = EoN.fast_nonMarkov_SIR(G,
                                                trans_time_fxn=trans_time_fxn,
                                                trans_time_args=(tau, ),
                                                rec_time_fxn=rec_time_fxn,
                                                rec_time_args=(K, gamma),
                                                rho=rho)
            newI = EoN.subsample(display_ts, t, I)
            Isum += newI
        Isum /= iterations
        plt.plot(display_ts, Isum, symbol)
    plt.xlabel('$t$')
    plt.ylabel('Prevalence')
    plt.savefig(filename)