def sim_and_plot(G, tau, gamma, rho, tmax, tcount, ax): t, S, I = EoN.fast_SIS(G, tau, gamma, rho=rho, tmax = tmax) report_times = scipy.linspace(0, tmax, tcount) I = EoN.subsample(report_times, t, I) ax.plot(report_times, I/N, color='grey', linewidth=5, alpha=0.3) t, S, I, = EoN.SIS_heterogeneous_meanfield_from_graph(G, tau, gamma, rho=rho, tmax=tmax, tcount=tcount) ax.plot(t, I/N, '--') t, S, I = EoN.SIS_compact_pairwise_from_graph(G, tau, gamma, rho=rho, tmax=tmax, tcount=tcount) ax.plot(t, I/N) t, S, I = EoN.SIS_homogeneous_pairwise_from_graph(G, tau, gamma, rho=rho, tmax=tmax, tcount=tcount) ax.plot(t, I/N, '-.')
plt.plot(t, I, color='r', alpha=0.3) # Now compare with ODE predictions. # - Read in the degree distribution of G # - and use rho to initialize the various model equations. # - There are versions of these functions that allow you to specify the initial conditions rather than starting from a graph. # # In[10]: #we expect a homogeneous model to perform poorly because the degree #distribution is very heterogeneous t, S, I = EoN.SIS_homogeneous_pairwise_from_graph(G, tau, gamma, rho=rho, tmax=tmax) plt.plot(t, I, '-.', label='Homogeneous pairwise', linewidth=5) t, S, I = EoN.SIS_heterogeneous_meanfield_from_graph(G, tau, gamma, rho=rho, tmax=tmax) plt.plot(t, I, ':', label='Heterogeneous meanfield', linewidth=5) t, S, I = EoN.SIS_compact_pairwise_from_graph(G, tau, gamma, rho=rho,