Ejemplo n.º 1
0
def biexp_current(input, tau1, tau2, current_name=None, unit=amp):
    '''
    Biexponential synaptic current.
    current_name = name of current variable
    '''
    current_name = current_name or unique_id()
    current = Current() + biexp_synapse(input, tau1, tau2, unit, current_name)
    current.set_current_name(current_name)
    return current
Ejemplo n.º 2
0
def alpha_current(input, tau, current_name=None, unit=amp):
    '''
    Alpha synaptic current.
    current_name = name of current variable
    '''
    current_name = current_name or unique_id()
    current = Current() + alpha_synapse(input, tau, unit, current_name)
    current.set_current_name(current_name)
    return current
Ejemplo n.º 3
0
def alpha_current(input, tau, current_name=None, unit=amp):
    '''
    Alpha synaptic current.
    current_name = name of current variable
    '''
    current_name = current_name or unique_id()
    current = Current() + alpha_synapse(input, tau, unit, current_name)
    current.set_current_name(current_name)
    return current
Ejemplo n.º 4
0
def biexp_current(input, tau1, tau2, current_name=None, unit=amp):
    '''
    Biexponential synaptic current.
    current_name = name of current variable
    '''
    current_name = current_name or unique_id()
    current = Current() + biexp_synapse(input, tau1, tau2, unit, current_name)
    current.set_current_name(current_name)
    return current
Ejemplo n.º 5
0
def exp_current(input, tau, current_name=None, unit=amp):
    '''
    Exponential synaptic current.
    input = name of input variable (where presynaptic spikes act).
    current_name = name of current variable
    '''
    current_name = current_name or unique_id()
    current = Current() + exp_synapse(input, tau, unit, current_name)
    current.set_current_name(current_name)
    return current
Ejemplo n.º 6
0
def exp_current(input, tau, current_name=None, unit=amp):
    '''
    Exponential synaptic current.
    input = name of input variable (where presynaptic spikes act).
    current_name = name of current variable
    '''
    current_name = current_name or unique_id()
    current = Current() + exp_synapse(input, tau, unit, current_name)
    current.set_current_name(current_name)
    return current
Ejemplo n.º 7
0
def alpha_conductance(input, E, tau, conductance_name=None, unit=siemens):
    '''
    Alpha synaptic conductance.
    conductance_name = name of conductance variable
    E = synaptic reversal potential
    '''
    conductance_name = conductance_name or unique_id()
    return Current('I=g*(E-vm): amp', I=input + '_current', g=conductance_name, E=E) + \
           alpha_synapse(input, tau, unit, conductance_name)
Ejemplo n.º 8
0
def K_current_int(gmax, EK, current_name=None):
    return Current('''
     I=gmax*n**4*(EK-vm) : amp
     dn/dt=alphan*(1-n)-betan*n : 1
     alphan=.05*(vm+34.*mV)/(1-exp(-(vm+34.*mV)/(10.*mV)))/mV/ms : Hz
     betan=.625*exp(-(vm+44.*mV)/(80.*mV))/ms : Hz
     ''',
                   gmax=gmax,
                   EK=EK,
                   I=current_name)
Ejemplo n.º 9
0
def K_current_HH(gmax, EK, current_name=None):
    '''
    Hodkin-Huxley K+ current.
    Resting potential is 0 mV.
    '''
    current_name = current_name or unique_id()
    return Current('''
    I=gmax*n**4*(EK-vm) : amp
    dn/dt=alphan*(1-n)-betan*n : 1
    alphan=.01*(10*mV-vm)/(exp(1-.1*vm/mV)-1)/mV/ms : Hz
    betan=.125*exp(-.0125*vm/mV)/ms : Hz
    ''', gmax=gmax, EK=EK, I=current_name, current_name=current_name)
Ejemplo n.º 10
0
def Na_current_int(gmax, ENa, current_name=None):
    return Current('''
     I=gmax/((1+betam/alpham)**3)*h*(ENa-vm) : amp
     dh/dt=alphah*(1-h)-betah*h : 1
     alpham=.5*(vm+35.*mV)/(1-exp(-(vm+35.*mV)/(10.*mV)))/mV/ms : Hz
     betam=20.*exp(-(vm+60.*mV)/(18.*mV))/ms : Hz
     alphah=.35*exp(-(vm+58.*mV)/(20.*mV))/ms : Hz
     betah=5./(1.+exp(-(vm+28.*mV)/(10.*mV)))/ms : Hz
     ''',
                   gmax=gmax,
                   ENa=ENa,
                   I=current_name)
Ejemplo n.º 11
0
def Na_current_HH(gmax, ENa, current_name=None):
    '''
    Hodkin-Huxley Na+ current.
    '''
    current_name = current_name or unique_id()
    return Current('''
    I=gmax*m**3*h*(ENa-vm) : amp
    dm/dt=alpham*(1-m)-betam*m : 1
    dh/dt=alphah*(1-h)-betah*h : 1
    alpham=.1*(25*mV-vm)/(exp(2.5-.1*vm/mV)-1)/mV/ms : Hz
    betam=4*exp(-.0556*vm/mV)/ms : Hz
    alphah=.07*exp(-.05*vm/mV)/ms : Hz
    betah=1./(1+exp(3.-.1*vm/mV))/ms : Hz
    ''', gmax=gmax, ENa=ENa, I=current_name, current_name=current_name)
Ejemplo n.º 12
0
def leak_current(gl, El, current_name=None):
    '''
    Leak current: gl*(El-vm)
    '''
    current_name = current_name or unique_id()
    return Current('I=gl*(El-vm) : amp', gl=gl, El=El, I=current_name, current_name=current_name)
Ejemplo n.º 13
0
    def __init__(self,
                 params=default_params,
                 pyr_params=pyr_params(),
                 inh_params=inh_params(),
                 plasticity_params=plasticity_params(),
                 background_input=None,
                 task_inputs=None,
                 clock=defaultclock):
        self.params = params
        self.pyr_params = pyr_params
        self.inh_params = inh_params
        self.plasticity_params = plasticity_params
        self.background_input = background_input
        self.task_inputs = task_inputs

        ## Set up equations

        # Exponential integrate-and-fire neuron
        eqs = exp_IF(params.C, params.gL, params.EL, params.VT, params.DeltaT)

        eqs += Equations('g_muscimol : nS')
        # AMPA conductance - recurrent input current
        eqs += exp_synapse('g_ampa_r', params.tau_ampa, siemens)
        eqs += Current('I_ampa_r=g_ampa_r*(E-vm): amp', E=params.E_ampa)

        # AMPA conductance - background input current
        eqs += exp_synapse('g_ampa_b', params.tau_ampa, siemens)
        eqs += Current('I_ampa_b=g_ampa_b*(E-vm): amp', E=params.E_ampa)

        # AMPA conductance - task input current
        eqs += exp_synapse('g_ampa_x', params.tau_ampa, siemens)
        eqs += Current('I_ampa_x=g_ampa_x*(E-vm): amp', E=params.E_ampa)

        # Voltage-dependent NMDA conductance
        eqs += biexp_synapse('g_nmda', params.tau1_nmda, params.tau2_nmda,
                             siemens)
        eqs += Equations('g_V = 1/(1+(Mg/3.57)*exp(-0.062 *vm/mV)) : 1 ',
                         Mg=params.Mg)
        eqs += Current('I_nmda=g_V*g_nmda*(E-vm): amp', E=params.E_nmda)

        # GABA-A conductance
        eqs += exp_synapse('g_gaba_a', params.tau_gaba_a, siemens)
        eqs += Current('I_gaba_a=(g_gaba_a+g_muscimol)*(E-vm): amp',
                       E=params.E_gaba_a)

        eqs += InjectedCurrent('I_dcs: amp')

        # Total synaptic conductance
        eqs += Equations(
            'g_syn=g_ampa_r+g_ampa_x+g_ampa_b+g_V*g_nmda+g_gaba_a : siemens')
        eqs += Equations(
            'g_syn_exc=g_ampa_r+g_ampa_x+g_ampa_b+g_V*g_nmda : siemens')
        # Total synaptic current
        eqs += Equations(
            'I_abs=(I_ampa_r**2)**.5+(I_ampa_b**2)**.5+(I_ampa_x**2)**.5+(I_nmda**2)**.5+(I_gaba_a**2)**.5 : amp'
        )

        NeuronGroup.__init__(self,
                             params.network_group_size,
                             model=eqs,
                             threshold=-20 * mV,
                             refractory=1 * ms,
                             reset=params.Vr,
                             compile=True,
                             freeze=True,
                             clock=clock)

        self.init_subpopulations()

        self.init_connectivity(clock)
Ejemplo n.º 14
0
def leak_current_int(gl, El, current_name=None):
    return Current('I=gl*(El-vm) : amp', gl=gl, El=El, I=current_name)
Ejemplo n.º 15
0
     betah=5./(1.+exp(-(vm+28.*mV)/(10.*mV)))/ms : Hz
     ''',
                   gmax=gmax,
                   ENa=ENa,
                   I=current_name)


c = Clock(dt=.01 * ms)  # more precise
El = -65 * mV
EK = -90 * mV
ENa = 55 * mV
eqs = MembraneEquation(0.01 * uF) + leak_current_int(
    .003 * msiemens, El, current_name='Il')
eqs += K_current_int(0.36 * msiemens, EK, current_name='IK')
eqs += Na_current_int(1.20 * msiemens, ENa)
eqs += Current(I='Iapp:amp')

neuron = NeuronGroup(1, eqs)

neuron.h = 1.
neuron.n = .1
neuron.vm = -64 * mV

trace = StateMonitor(neuron, 'vm', record=True)

run(100 * ms)
neuron.Iapp = 0.

run(100 * ms)
print trace[0] / mV
plot(trace.times / ms, trace[0] / mV)