Example #1
0
def ddegrad(s, c, t):
    Xslag = 0.0
    Plag = 0.0
    Xllag = 0.0

    if (t>c[7] and t<plyt_added): # if t > T for lysogenic phage
        Xllag = p.pastvalue(4, t - c[7], 0)

    if (t>(c[7]+plyt_added)): # if t > T for both phages
        Xslag = p.pastvalue(1,t-c[7],0)
        Plag = p.pastvalue(3,t-c[7],0)
        Xllag = p.pastvalue(4,t-c[7],0)

    g = array([0.0,0.0,0.0,0.0,0.0,0.0])

    # s[0] = S(t), s[1] = Xs(t), s[2] = Xi(t), s[3] = P(t), s[4] = Xl(t), s[5] = Pt(t)
    # S = D*(S0-S)  - Xs*u*S/(Km+S)*(1/Y) - Xi*u*S/(Km+S)*(1/Y) - Xl*u*S/(Km+S)*(1/Y)
    g[0] = c[2]*(c[1]-s[0]) - s[1]*(c[0]*s[0])/(c[5]+s[0])*(1/c[6]) - s[2]*(c[0]*s[0])/(c[5]+s[0])*(1/c[6]) - s[4]*(c[0]*s[0])/(c[5]+s[0])*(1/c[6])
    # Xs = Xs*u*S/(Km+S) - Ki*Xs*P - Ki*Xs*Pt - D*Xs
    g[1] = s[1]*c[0]*s[0]/(c[5]+s[0]) - c[3]*s[1]*s[3] - c[3]*s[1]*s[5] - c[2]*s[1]
    # Xi = Ki*Xs*P - D*Xi - exp(-D*T)*Ki*Xs(t-T)P(t-T)
    g[2] = 0
    # P = b*exp(-D*T)*Ki*Xs(t-T)P(t-T) - Ki*Xs*P - D*P
    g[3] = 0
    if (t>plyt_added): # after plyt_added hours lytic phage is added
        # Xi = Ki*Xs*P - D*Xi - exp(-D*T)*Ki*Xs(t-T)P(t-T)
        g[2] = c[3]*s[1]*s[3] - c[2]*s[2] - exp(-c[2]*c[7])*c[3]*Xslag*Plag
        # P = exp(-D*T)*b*Ki*Xs(t-T)P(t-T) - Ki*Xs*P - Ki*Xl*P - Ki*Xi*P - D*P
        g[3] = exp(-c[2]*c[7])*c[4]*c[3]*Xslag*Plag - c[3]*s[1]*s[3] - c[3]*s[4]*s[3] - c[3]*s[2]*s[3] - c[2]*s[3]
    # Xl = Xl*u*S/(Km+S) + Ki*Xs*Pt - q*exp(-D*T)*Xl(t-T) - -D*Xl
    g[4] = s[4]*(c[0]*s[0])/(c[5]+s[0]) + c[3]*s[1]*s[5] -c[8]*exp(-c[2]*c[7])*Xllag -c[2]*s[4]
    # Pt = b*q*exp(-D*T)*Xl(t-T)  - Ki*Xs*Pt - Ki*Xl*Pt - Ki*Xi*Pt - D*Pt
    g[5] = c[4]*c[8]*exp(-c[2]*c[7])*Xllag - c[3]*s[1]*s[5] - c[3]*s[4]*s[5] - c[3]*s[2]*s[5] - c[2]*s[5]
    return g
Example #2
0
def ddegrad(s, c, t):

    # constant past history
    J_lag = 0.
    A_lag = 0.
    MJ = 0.

    if t > s[3]:
        J_lag = pydde.pastvalue(0, t - s[3], 0)
        A_lag = pydde.pastvalue(1, t - s[3], 0)
        MJ = A_lag * b(t - s[3]) * q1(
            A_lag, t - s[3]) * (mat_J(t) / mat_J(t - s[3])) * s[2]

    if any(s < 0):
        print('spp: %s, +mean: %s, +ampl, %s' % (spp, delta_mean, delta_ampl))
        print('t: %e, J_lag: %e, s: %s' % (t, J_lag, s))

    dJdt = s[1] * b(t) * q1(s[1], t) - MJ - (1 + q4(s[0], t)) * dJ(t) * s[0]

    dAdt = MJ - (1 + q2(s[1], t)) * dA(t) * s[1]

    dSdt = s[2] * ((mat_J(t) / mat_J(t - s[3])) *
                   (q4(J_lag, t - s[3]) + 1) * dJ(t - s[3]) - dJ(t) *
                   (q4(s[0], t) + 1))

    dtaudt = 1. - mat_J(t) / mat_J(t - s[3])

    return array([dJdt, dAdt, dSdt, dtaudt])
def ddegrad(s, c, t):

    Xslag = 0.0
    Plag = 0.0

    if (t > c[7]):  # if t > T
        Xslag = p.pastvalue(1, t - c[7], 0)
        Plag = p.pastvalue(3, t - c[7], 0)

    g = array([0.0, 0.0, 0.0, 0.0])

    # s[0] = S(t), s[1] = Xs(t), s[2] = Xl(t), s[3] = P(t)
    # S = D*(S0-S) - Xs*u*S/(Km+S)*(1/Y) - Xl*u*S/(Km+S)*(1/Y)
    g[0] = c[2] * (c[1] - s[0]) - s[1] * (c[0] * s[0]) / (c[5] + s[0]) * (
        1 / c[6]) - s[2] * (c[0] * s[0]) / (c[5] + s[0]) * (1 / c[6])
    # Xs = Xs*u*S/(Km+S) - Ki*Xs*P - D*Xs
    g[1] = s[1] * c[0] * s[0] / (c[5] +
                                 s[0]) - c[3] * s[1] * s[3] - c[2] * s[1]
    # Xi = Xl*u*S/(Km+S) + Ki*Xs*P - q*Xl - -D*Xl
    g[2] = s[2] * c[0] * s[0] / (
        c[5] + s[0]) + c[3] * s[1] * s[3] - c[7] * s[2] - c[2] * s[2]
    # P = bqXl - Ki*Xs*P - D*P
    g[3] = c[4] * c[7] * s[2] - c[3] * s[1] * s[3] - c[2] * s[3]

    return g
Example #4
0
def ddegrad(s, c, t):

    Xslag = 0.0
    Plag = 0.0

    if (t > c[7]):  # if t > T
        Xslag = p.pastvalue(1, t - c[7], 0)
        Plag = p.pastvalue(3, t - c[7], 0)

    g = array([0.0, 0.0, 0.0, 0.0])

    # s[0] = S(t), s[1] = Xs(t), s[2] = Xi(t), s[3] = P(t)
    # S = D*(S0-S) - Xs*u*S/(Km+S)*(1/Y) - Xi*u*S/(Km+S)*(1/Y)
    g[0] = c[2] * (c[1] - s[0]) - s[1] * (c[0] * s[0]) / (c[5] + s[0]) * (
        1 / c[6]) - s[2] * (c[0] * s[0]) / (c[5] + s[0]) * (1 / c[6])
    # Xs = Xs*u*S/(Km+S)*(1/Y) - Ki*Xs*P - D*Xs
    g[1] = s[1] * c[0] * s[0] / (c[5] +
                                 s[0]) - c[3] * s[1] * s[3] - c[2] * s[1]
    # Xi = Ki*Xs*P - D*Xi - exp(-D*T)*Ki*Xs(t-T)P(t-T)
    g[2] = c[3] * s[1] * s[3] - c[2] * s[2] - exp(
        -c[2] * c[7]) * c[3] * Xslag * Plag
    # P = b*exp(-D*T)*Ki*Xs(t-T)P(t-T) - Ki*Xs*P - D*P
    g[3] = c[4] * exp(
        -c[2] * c[7]) * c[3] * Xslag * Plag - c[3] * s[1] * s[3] - c[2] * s[3]

    return g
Example #5
0
    def ddegrad(s, c, t):
        """Equations defining time evolution of the system. Returns the value of the derivative at time t

        :param s: state variables
        :param c: constants
        :param t: time
        :return:
        """

        max_delay = max(c[6:10])
        if t > max_delay:
            delayed_values = [
                pydde.pastvalue(0, t - c[6], 0),  # x1d11
                pydde.pastvalue(1, t - c[7], 1),  # x2d12
                pydde.pastvalue(0, t - c[8], 2),  # x1d21
                pydde.pastvalue(1, t - c[9], 3)  # x2d22
            ]
        else:
            # initial_state taken from the outer scope
            delayed_values = [
                initial_state[0], initial_state[1], initial_state[0],
                initial_state[1]
            ]

        inputs = [
            c[2] * delayed_values[0] - c[3] * delayed_values[1] + c[14] -
            s[0] * s[2],
            c[4] * delayed_values[2] - c[5] * delayed_values[3] - c[15]
        ]

        theta_dot = 0
        return np.array([
            1 / c[0] * (-s[0] + s1(inputs[0])),
            1 / c[1] * (-s[1] + s2(inputs[1])), theta_dot
        ])
Example #6
0
def sddegrad(s, c, t):
    g = array([0.0,0.0])
    g[0] = -c[0]*s[0]*s[1]
    g[1] = -c[5]*s[1]
    if (t>c[4]):
        g[1] = c[3]*p.pastvalue(0,t-c[4],0)*p.pastvalue(1,t-c[4],0)-c[5]*s[1]
    return g
def ddegrad(s, c, t):
    """Retorna o gradiente de x, o lado direito da equação a ser integrada"""

    # condição inicial constante
    alag = [c[-2], c[-1]]

    if t > c[0]:
        # aqui entra o delay
        alag[0] = pydde.pastvalue(0, t - c[0], 0)
    if t > c[2]:
        alag[1] = pydde.pastvalue(1, t - c[2], 1)

    return array([s[0] * (1.0 - alag[0] - c[1] * alag[1]), c[4] * s[1] * (1.0 - alag[1] - c[3] * alag[0])])
Example #8
0
def ddegradErk(s, c, t):
	ap = c[0]; am=c[1]; bp= c[2]; bm=c[3]; kint=c[4]; krec=c[5]; kdegR=c[6]; kintC=c[7]; bmf=c[8];
	amf = c[9]; kdegC= c[10]; ksyn=c[11]; krecC= c[12]; mus=c[13]; lambdas=c[14]; kappas=c[15];
	tau = c[16]

	L = s[0]
	R = s[1]
	M = s[2]
	P = s[3]
	Re = s[4]
	Me = s[5]
	Pe = s[6]
	S = s[7]

	Pelag = 0.0
    	if (t>tau):
        	Pelag = p.pastvalue(6,t-tau,0)

	dLdt = -2*ap*L*R+am*M
	dRsdt = -2*ap*L*R+am*M-bp*M*R+2*bm*P-kint*R+krec*Re+ksyn
	dMsdt = 2*ap*L*R-am*M-bp*M*R+2*bm*P-kint*M
	dPsdt = bp*M*R-2*bm*P-kintC*P
	dRedt = kint*R-krec*Re-kdegR*Re+2*bmf*Pe+amf*Me
	dMedt = kint*M+2*bmf*Pe-amf*Me
	dPedt = kintC*P-2*bmf*Pe
	dSdt = 	-mus*(S)+lambdas*(Pelag)/(Pelag+kappas)

	return np.array([dLdt, dRsdt, dMsdt, dPsdt, dRedt, dMedt, dPedt, dSdt])		
def ddegrad(s, c, t):
    Xslag = 0.0
    Plag = 0.0
    Xllag = 0.0

    if (t > c[7] and t < plyt_added):  # if t > T for lysogenic phage
        Xllag = p.pastvalue(4, t - c[7], 0)

    if (t > (c[7] + plyt_added)):  # if t > T for both phages
        Xslag = p.pastvalue(1, t - c[7], 0)
        Plag = p.pastvalue(3, t - c[7], 0)
        Xllag = p.pastvalue(4, t - c[7], 0)

    if (s[1] < 1.0e-15):
        # if concentration of Xs drops below 1.0e-15 add time to the array
        Xs_extinction_times.append(t)

    g = array([0.0, 0.0, 0.0, 0.0, 0.0, 0.0])

    # s[0] = S(t), s[1] = Xs(t), s[2] = Xi(t), s[3] = P(t), s[4] = Xl(t), s[5] = Pt(t)
    # S = - Xs*u*S/(Km+S)*(1/Y) - Xi*u*S/(Km+S)*(1/Y) - Xl*u*S/(Km+S)*(1/Y)
    g[0] = -s[1] * (c[0] * s[0]) / (c[5] + s[0]) * (1 / c[6]) - s[2] * (
        c[0] * s[0]) / (c[5] + s[0]) * (1 / c[6]) - s[4] * (c[0] * s[0]) / (
            c[5] + s[0]) * (1 / c[6])
    # Xs = Xs*u*S/(Km+S)*(1/Y) - Ki*Xs*P - Ki*Xs*Pt
    g[1] = s[1] * c[0] * s[0] / (
        c[5] + s[0]) - c[3] * s[1] * s[3] - c[3] * s[1] * s[5]
    # Xi = Ki*Xs*P - Ki*Xs(t-T)P(t-T)
    g[2] = 0
    # P = b*Ki*Xs(t-T)P(t-T) - Ki*Xs*P
    g[3] = 0
    if (t > plyt_added):  # after plyt_added hours lytic phage is added
        # Xi = Ki*Xs*P - Ki*Xs(t-T)P(t-T)
        g[2] = c[3] * s[1] * s[3] - c[3] * Xslag * Plag
        # P = b*Ki*Xs(t-T)P(t-T) - Ki*Xs*P - Ki*Xl*P - Ki*Xi*P
        g[3] = c[4] * c[3] * Xslag * Plag - c[3] * s[1] * s[3] - c[3] * s[
            4] * s[3] - c[3] * s[2] * s[3]
    # Xl = Xl*u*S/(Km+S) + Ki*Xs*Pt - q*Xl(t-T)
    g[4] = s[4] * (c[0] * s[0]) / (c[5] +
                                   s[0]) + c[3] * s[1] * s[5] - c[8] * Xllag
    # Pt = b*q*Xl(t-T)  - Ki*Xs*Pt - Ki*Xl*Pt - Ki*Xi*Pt
    g[5] = c[4] * c[8] * Xllag - c[3] * s[1] * s[5] - c[3] * s[4] * s[5] - c[
        3] * s[2] * s[5]
    return g
def ddegrad(s, c, t):
    """Retorna o gradiente de x, o lado direito da equação a ser integrada"""
    # condição inicial constante 
    alag = c[-1]
    
    if t > c[0]:
        # aqui entra o delay
        alag = pydde.pastvalue(0, t-c[0], 0)

    return array([ - alag * ( 1.0 + (1.0 + c[1] * cos(t)) * s[0] ) ])
Example #11
0
 def odegrad(s, c, t):
     time_delay = c[0]
     if (t > time_delay):
         state_delay = np.zeros_like(s)
         for i in range(len(s)):
             state_delay[i] = pydde.pastvalue(i, t - time_delay, 0)
         controls = nn_controller.compute_control(state_delay)
     else:
         controls = nn_controller.compute_control(
             initial_state)  # np.zeros((2,))
     return d_state(s, controls, mass)
Example #12
0
def ddegrad(s, c, t):

    Xslag = 0.0
    Plag = 0.0

    if (t > c[7]):  # if t > T
        Xslag = p.pastvalue(1, t - c[7], 0)
        Plag = p.pastvalue(3, t - c[7], 0)

    g = array([0.0, 0.0, 0.0, 0.0, 0.0, 0.0])

    # s[0] = S(t), s[1] = Xs(t), s[2] = Xi(t), s[3] = P(t), s[4] = Xl(t), s[5] = Pt(t)
    # S = D*(S0-S) - Xs*u*S/(Km+S)*(1/Y) - Xi*u*S/(Km+S)*(1/Y)
    g[0] = c[2] * (c[1] - s[0]) - s[1] * (c[0] * s[0]) / (c[5] + s[0]) * (
        1 / c[6]) - s[2] * (c[0] * s[0]) / (c[5] + s[0]) * (1 / c[6])
    # Xs = Xs*u*S/(Km+S)*(1/Y) - Ki*Xs*P - D*Xs
    g[1] = s[1] * c[0] * s[0] / (c[5] +
                                 s[0]) - c[3] * s[1] * s[3] - c[2] * s[1]
    # Xi = Ki*Xs*P - D*Xi - exp(-D*T)*Ki*Xs(t-T)P(t-T)
    g[2] = 0
    # P = b*exp(-D*T)*Ki*Xs(t-T)P(t-T) - Ki*Xs*P - D*P
    g[3] = 0
    # Xl = Xl*u*S/(Km+S)*(1/Y) + Ki*Xs*P - q*Xl - -D*Xl
    g[4] = s[4] * (c[0] * s[0]) / (c[5] + s[0]) * (
        1 / c[6]) + c[3] * s[1] * s[5] - c[8] * s[4] - c[2] * s[4]
    # Pt = bqXl - Ki*Xs*P - D*P
    g[5] = c[4] * c[8] * s[4] - c[3] * s[1] * s[5] - c[2] * s[5]
    if (t > 3):  # After 3h introduce lytic phage
        # Xi = Ki*Xs*P - D*Xi - exp(-D*T)*Ki*Xs(t-T)P(t-T)
        g[2] = c[3] * s[1] * s[3] - c[2] * s[2] - exp(
            -c[2] * c[7]) * c[3] * Xslag * Plag
        # P = b*exp(-D*T)*Ki*Xs(t-T)P(t-T) - Ki*Xs*P - D*P
        g[3] = c[4] * exp(
            -c[2] *
            c[7]) * c[3] * Xslag * Plag - c[3] * s[1] * s[3] - c[2] * s[3]
    return g
Example #13
0
def ddegrad(s, c, t):
    """Retorna o gradiente de x, o lado direito da equação a ser integrada"""

    # condição inicial constante 
    alag = 0.2
    
    if t > c[0]:
        # aqui entra o delay
        alag = p.pastvalue(0,t-c[0],0)

    r = 1.0
    if t > 6000:
        r -= r * 2e-3
    elif t > 2000:
        r -= r * 5e-7 * (t-2000)

    return array([ r * s[0] * (1.0 - alag) ])
Example #14
0
def ddegrad(s, c, t):
    alag = 0.0
    if (t > c[0]):
        alag = p.pastvalue(0, t - c[0], 0)
    return array([c[2] * alag * exp(-alag / c[3]) - c[1] * s[0]])
Example #15
0
def ddegrad(s, c, t):
    alag = 0.0
    if (t>c[0]):
        alag = p.pastvalue(0,t-c[0],0)
    return array( [ c[2]*alag*exp(-alag/c[3])-c[1]*s[0] ] )