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
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
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
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 ])
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])])
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] ) ])
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)
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
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) ])
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]])
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] ] )