Source code for tvb.rateML.generatedModels.rwongwang

from tvb.simulator.models.base import Model, ModelNumbaDfun
import numpy
from numpy import *
from numba import guvectorize, float64
from tvb.basic.neotraits.api import NArray, Final, List, Range

[docs]class RwongwangT(ModelNumbaDfun): a_E = NArray( label=":math:`a_E`", default=numpy.array([310.0]), domain=Range(lo=0., hi=500., step=1.), doc="""""" ) b_E = NArray( label=":math:`b_E`", default=numpy.array([125.0]), domain=Range(lo=0., hi=200., step=1.), doc="""""" ) d_E = NArray( label=":math:`d_E`", default=numpy.array([0.160]), domain=Range(lo=0.0, hi=0.2, step=0.001), doc="""""" ) a_I = NArray( label=":math:`a_I`", default=numpy.array([615.0]), domain=Range(lo=0., hi=1000., step=1.), doc="""""" ) b_I = NArray( label=":math:`b_I`", default=numpy.array([177.0]), domain=Range(lo=0.0, hi=200.0, step=1.0), doc="""""" ) d_I = NArray( label=":math:`d_I`", default=numpy.array([0.087]), domain=Range(lo=0.01, hi=0.2, step=0.001), doc="""""" ) gamma_E = NArray( label=":math:`gamma_E`", default=numpy.array([0.641 / 1000.0]), domain=Range(lo=0.0, hi=0.001, step=0.00001), doc="""""" ) tau_E = NArray( label=":math:`tau_E`", default=numpy.array([100.0]), domain=Range(lo=50., hi=150., step=1.), doc="""""" ) w_plus = NArray( label=":math:`w_plus`", default=numpy.array([1.4]), domain=Range(lo=0.0, hi=2.0, step=0.01), doc="""""" ) w_E = NArray( label=":math:`w_E`", default=numpy.array([1.0]), domain=Range(lo=0.0, hi=2.0, step=0.01), doc="""""" ) gamma_I = NArray( label=":math:`gamma_I`", default=numpy.array([1.0 / 1000.0]), domain=Range(lo=0.0, hi=0.002, step=0.0001), doc="""""" ) tau_I = NArray( label=":math:`tau_I`", default=numpy.array([10.0]), domain=Range(lo=5., hi=150., step=1.0), doc="""""" ) w_I = NArray( label=":math:`w_I`", default=numpy.array([0.7]), domain=Range(lo=0.0, hi=1.0, step=0.01), doc="""""" ) I_0 = NArray( label=":math:`I_0`", default=numpy.array([0.382]), domain=Range(lo=0.0, hi=1.0, step=0.001), doc="""""" ) J_N = NArray( label=":math:`J_N`", default=numpy.array([0.15]), doc="""""" ) J_I = NArray( label=":math:`J_I`", default=numpy.array([1.0]), doc="""""" ) G = NArray( label=":math:`G`", default=numpy.array([2.0]), doc="""""" ) lamda = NArray( label=":math:`lamda`", default=numpy.array([0.0]), doc="""""" ) J_NMDA = NArray( label=":math:`J_NMDA`", default=numpy.array([0.15]), doc="""""" ) JI = NArray( label=":math:`JI`", default=numpy.array([1.0]), doc="""""" ) state_variable_range = Final( label="State Variable ranges [lo, hi]", default={"V": numpy.array([0.0, 1.0]), "W": numpy.array([0.0, 1.0])}, doc="""state variables""" ) state_variable_boundaries = Final( label="State Variable boundaries [lo, hi]", default={"V": numpy.array([0.0, 1.0]), "W": numpy.array([0.0, 1.0])}, ) variables_of_interest = List( of=str, label="Variables or quantities available to Monitors", choices=('V', 'W', ), default=('V', 'W', ), doc="Variables to monitor" ) state_variables = ['V', 'W'] _nvar = 2 cvar = numpy.array([0,1,], dtype = numpy.int32)
[docs] def dfun(self, vw, c, local_coupling=0.0): vw_ = vw.reshape(vw.shape[:-1]).T c_ = c.reshape(c.shape[:-1]).T deriv = _numba_dfun_RwongwangT(vw_, c_, self.a_E, self.b_E, self.d_E, self.a_I, self.b_I, self.d_I, self.gamma_E, self.tau_E, self.w_plus, self.w_E, self.gamma_I, self.tau_I, self.w_I, self.I_0, self.J_N, self.J_I, self.G, self.lamda, self.J_NMDA, self.JI, local_coupling) return deriv.T[..., numpy.newaxis]
@guvectorize([(float64[:], float64[:], float64, float64, float64, float64, float64, float64, float64, float64, float64, float64, float64, float64, float64, float64, float64, float64, float64, float64, float64, float64, float64, float64[:])], '(n),(m)' + ',()'*21 + '->(n)', nopython=True) def _numba_dfun_RwongwangT(vw, coupling, a_E, b_E, d_E, a_I, b_I, d_I, gamma_E, tau_E, w_plus, w_E, gamma_I, tau_I, w_I, I_0, J_N, J_I, G, lamda, J_NMDA, JI, local_coupling, dx): "Gufunc for RwongwangT model equations." # long-range coupling c_pop0 = coupling[0] c_pop1 = coupling[1] V = vw[0] W = vw[1] # derived variables tmp_I_E = a_E * ((w_E * I_0) + (w_plus * J_NMDA) * V + c_pop0 - JI*W) - b_E tmp_H_E = tmp_I_E/(1.0-exp((-1.0 * d_E) * tmp_I_E)) tmp_I_I = (a_I*(((w_I * I_0)+(J_NMDA * V))-W))-b_I tmp_H_I = tmp_I_I/(1.0-exp((-1.0 * d_I)*tmp_I_I)) dx[0] = ((-1.0 / tau_E)* V)+(tmp_H_E*(1-V)*gamma_E) dx[1] = ((-1.0 / tau_I)* W)+(tmp_H_I*gamma_I)