def test_rhs(Y, t, beta1_rho, beta2, gammab, v, b, d, dv, dEEE, bc_coeff_mat, bm_coeff_mat, mospop, mosprime, mosin, fun, mos_coeff, p): # Here beta1 = beta1/rho_v, where Nv = theta_v/rho_v eps = .001 s = Y[0:p] i = Y[p:2 * p] r = Y[2 * p:3 * p] sv = Y[-2] iv = Y[-1] alpha_val = alpha_calc(bloodmeal.bloodmeal_function(bm_coeff_mat, t), BirdCount.birdcounts_function(bc_coeff_mat, t)) theta = BirdCount.birdcounts_function( bc_coeff_mat, t) # Theta is the vector of the MCMC sample coeffieicents theta_v = bloodmeal.vector_pop(mos_coeff, t) denom = numpy.dot(theta, alpha_val) lambdab = beta1_rho * v * iv * numpy.array(alpha_val) * theta_v / denom lambdav = v * (numpy.dot(beta2 * i * theta, alpha_val)) / denom # Bird Mortality ds = BirdCount.Xi(bc_coeff_mat, t) * ((1 - eps) - s) - lambdab * s di = BirdCount.Xi(bc_coeff_mat, t) * (eps - i) + lambdab * s - gammab * i dr = gammab * i - r * BirdCount.Xi(bc_coeff_mat, t) dsv = bloodmeal.Xi(mos_coeff, t) * iv - lambdav * sv div = lambdav * sv - bloodmeal.Xi(mos_coeff, t) * iv dY = 365. / 2 * numpy.hstack( (ds, di, dr, dsv, div)) # the 365/2 is the rate of change of the time transform return dY
def rhs(Y, t, beta1, beta2, gammab, v, b, d, dv, dEEE, bc_coeff_mat, bm_coeff_mat, mospop, mosprime, mosin, fun, mos_coeff, p): # Consider adding epsilon term , for proportion infected entering population eps = .001 eps = .001 s = Y[0:p] i = Y[p:2 * p] r = Y[2 * p:3 * p] sv = Y[-2] iv = Y[-1] alpha_val = alpha_calc(bloodmeal.bloodmeal_function(bm_coeff_mat, t), BirdCount.birdcounts_function(bc_coeff_mat, t)) N = BirdCount.birdcounts_function(bc_coeff_mat, t) denom = numpy.dot(N, alpha_val) lambdab = beta1 * v * iv * numpy.array(alpha_val) / denom lambdav = v * (numpy.dot(beta2 * i, alpha_val)) / denom # Bird Mortality ds = BirdCount.xi(bc_coeff_mat, t) * (1 - eps) - lambdab * s - BirdCount.F( bc_coeff_mat, t) * s / N di = BirdCount.xi(bc_coeff_mat, t) * eps + lambdab * s - gammab * i - BirdCount.F( bc_coeff_mat, t) * i / N dr = gammab * i - BirdCount.F(bc_coeff_mat, t) * r / N dsv = bloodmeal.vector_in(mos_coeff, t) - lambdav * sv - bloodmeal.fun( mos_coeff, t) * sv #Need to be updated div = lambdav * sv - bloodmeal.fun(mos_coeff, t) * iv # Need to be updated #dSv = mospop(t) - dIv dY = numpy.hstack((ds, di, dr, dsv, div)) return dY
def log_test_rhs(Y, t, beta1_rho, beta2, gammab, v, b, d, dv, dEEE, bc_coeff_mat, bm_coeff_mat, mospop, mosprime, mosin, fun, mos_coeff, p): eps = .001 Y = Y.clip(-20, numpy.inf) s = Y[0:p] i = Y[p:2 * p] sv = Y[-2] iv = Y[-1] alpha_val = alpha_calc(bloodmeal.bloodmeal_function(bm_coeff_mat, t), BirdCount.birdcounts_function(bc_coeff_mat, t)) theta = BirdCount.birdcounts_function( bc_coeff_mat, t) # Theta is the vector of the MCMC sample coeffieicents theta_v = bloodmeal.vector_pop(mos_coeff, t) denom = numpy.dot(theta, alpha_val) lambdab = beta1_rho * v * numpy.exp(iv) * numpy.array( alpha_val) * theta_v / denom lambdav = v * (numpy.dot(beta2 * numpy.exp(i) * theta, alpha_val)) / denom # Bird Mortality #ds = BirdCount.Xi(bc_coeff_mat,t)*((1-eps)*numpy.exp(-s)-1)-lambdab ds = BirdCount.Xi(bc_coeff_mat, t) * ( (1 - eps) * numpy.exp(-s) - 1) - lambdab * numpy.where(s <= -20, 0, 1) di = BirdCount.Xi(bc_coeff_mat, t) * ( eps * numpy.exp(-i) - 1) + lambdab * numpy.exp(s - i) - gammab #dr = gammab*numpy.exp(i-r) - BirdCount.Xi(bc_coeff_mat,t) dsv = bloodmeal.Xi(mos_coeff, t) * numpy.exp(iv - sv) - lambdav div = lambdav * numpy.exp(sv - iv) - bloodmeal.Xi(mos_coeff, t) dY = numpy.hstack((ds, di, dsv, div)) return dY
def eval_ode_results(Y, bm_coeff_mat, bc_coeff_mat, mos_coeff, tstart, tend, bird_data_file, flag, alpha=1): import pylab birdnames = pd.read_csv(bird_data_file, index_col=0).index name_list = list(birdnames) name_list.append('Vector') T = scipy.linspace(tstart, tend, 1001) p = len(bm_coeff_mat[:, 0]) + 1 s, i, r, sv, iv = get_SIR_vals(Y, p) bc = numpy.zeros((p, len(T))) bm = numpy.zeros((p, len(T))) alpha_val = numpy.zeros((p, len(T))) mos_pop = numpy.zeros(len(T)) for j in range(len(T)): bc[:, j] = BirdCount.birdcounts_function(bc_coeff_mat, T[j]) bm[:, j] = bloodmeal.bloodmeal_function(bm_coeff_mat, T[j]) alpha_val[:, j] = alpha_calc(bm[:, j], bc[:, j]) mos_pop[j] = bloodmeal.vector_pop(mos_coeff, T[j]) sym = ['b', 'g', 'r', 'c', 'm', 'y', 'k', '--', 'g--'] pylab.figure(1) for k in range(p): #if k==p: # pylab.plot(T,mos_pop,sym[k]) #else: pylab.plot(T, bc[k], sym[k], alpha=alpha) pylab.title("Populations") pylab.legend(name_list) N = s + i + r N = numpy.clip(N, 0, numpy.inf) pylab.figure(2) for k in range(p): if flag == 0: temp = numpy.divide(i[:, k], N[:, k]) elif flag == 1: temp = i[:, k] elif flag == 2: temp = numpy.exp(i[:, k]) pylab.plot(T, temp, sym[k], alpha=alpha) pylab.legend(birdnames) pylab.title("Infected Birds") pylab.figure(3) for k in range(p): pylab.plot(T, alpha_val[k], alpha=alpha) pylab.legend(birdnames) pylab.title("Feeding Index Values") return ()
def get_ODE_vals(Y, T, beta1_rho, beta2, gammab, v, b, d, dv, dEEE, bc_coeff_mat, bm_coeff_mat, mospop, mosprime, mosin, fun, mos_coeff, p): ds = [] di = [] dsv = [] div = [] lbdv = [] alpha = [] eps = .001 s = Y[0:p] i = Y[p:2 * p] sv = Y[-2] iv = Y[-1] dt = T[1] - T[0] for t in T: alpha_val = alpha_calc(bloodmeal.bloodmeal_function(bm_coeff_mat, t), BirdCount.birdcounts_function(bc_coeff_mat, t)) theta = BirdCount.birdcounts_function( bc_coeff_mat, t) # Theta is the vector of the MCMC sample coeffieicents theta_v = bloodmeal.vector_pop(mos_coeff, t) denom = numpy.dot(theta, alpha_val) lambdab = beta1_rho * v * iv * numpy.array(alpha_val) * theta_v / denom lambdav = v * (numpy.dot(beta2 * i * theta, alpha_val)) / denom # Bird Mortality ds.append( BirdCount.Xi(bc_coeff_mat, t) * ((1 - eps) - s) - lambdab * s) di.append( BirdCount.Xi(bc_coeff_mat, t) * (eps - i) + lambdab * s - gammab * i) #dr = gammab*numpy.exp(i-r) - BirdCount.Xi(bc_coeff_mat,t) dsv.append(bloodmeal.Xi(mos_coeff, t) * iv - lambdav * sv) div.append(lambdav * sv - bloodmeal.Xi(mos_coeff, t) * iv) alpha.append(alpha_val) s += ds[-1] * dt i += di[-1] * dt sv += dsv[-1] * dt iv += div[-1] * dt lbdv.append(lambdav) return (ds, di, dsv, div, lbdv, alpha)