import numpy as np # Estimate r data = np.loadtxt('ecoli.csv', delimiter=',') t_e = data[:,0] N_e = data[:,1] i = 2 # Data point (i,i+1) used to estimate r r = (N_e[i+1] - N_e[i])/(N_e[i]*(t_e[i+1] - t_e[i])) print 'Estimated r=%.5f' % r # Can experiment with r values and see if the model can # match the data better T = 1200 # cell can divide after T sec t_max = 5*T # 5 generations in experiment t = np.linspace(0, t_max, 1000) dt = t[1] - t[0] N = np.zeros(t.size) N[0] = 100 for n in range(0, len(t)-1, 1): N[n+1] = N[n] + r*dt*N[n] import matplotlib.pyplot as plt plt.plot(t, N, 'r-', t_e, N_e, 'bo') plt.xlabel('time [s]'); plt.ylabel('N') plt.legend(['model', 'experiment'], loc='upper left') plt.show()