Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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 ()
Пример #5
0
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)