#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')
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)