Example #1
0
    def __init__(self, **parameters):
        # define ion channel parameters
        leak = Mechanism('pas', e=-65, g=parameters['g_leak'])
        hh = Mechanism('hh',
                       gl=parameters['g_leak'],
                       el=-65,
                       gnabar=parameters['gnabar'],
                       gkbar=parameters['gkbar'])
        # create cable sections
        self.soma = Section(L=30, diam=30, mechanisms=[hh])
        self.apical = Section(L=600,
                              diam=2,
                              nseg=5,
                              mechanisms=[leak],
                              parent=self.soma,
                              connect_to=1)
        self.basilar = Section(L=600,
                               diam=2,
                               nseg=5,
                               mechanisms=[leak],
                               parent=self.soma)
        self.axon = Section(L=1000, diam=1, nseg=37, mechanisms=[hh])
        # synaptic input
        self.apical.add_synapse('ampa', 'Exp2Syn', e=0.0, tau1=0.1, tau2=5.0)

        # needed for PyNN
        self.source_section = self.soma
        self.source = self.soma(0.5)._ref_v
        self.parameter_names = ('g_leak', 'gnabar', 'gkbar')
        self.traces = {}
        self.recording_time = False
    def __init__(self, **parameters):

        # Create single compartment Rubin and Terman GP cell section, i.e. soma section
        self.soma = Section(L=parameters['L'],
                            diam=parameters['diam'],
                            nseg=parameters['nseg'],
                            Ra=parameters['Ra'],
                            cm=parameters['cm'],
                            mechanisms=[
                                Mechanism('myions'),
                                Mechanism('GPeA',
                                          gnabar=0.04,
                                          gkdrbar=0.0042,
                                          gkcabar=0.1e-3,
                                          gcatbar=6.7e-5,
                                          kca=2,
                                          gl=4e-5)
                            ])

        # Initialize ion concentrations
        h("cai0_ca_ion = 5e-6 ")
        h("cao0_ca_ion = 2")
        h("ki0_k_ion = 105")
        h("ko0_k_ion = 3")
        h("nao0_na_ion = 108")
        h("nai0_na_ion = 10")

        # insert current source
        self.stim = h.IClamp(0.5, sec=self.soma)
        self.stim.delay = 0
        self.stim.dur = 1e12
        self.stim.amp = parameters['bias_current']

        # Add DBS stimulation current to neuron model
        self.DBS_stim = h.IClamp(0.5, sec=self.soma)
        self.DBS_stim.delay = 0
        self.DBS_stim.dur = 1e9
        self.DBS_stim.amp = 0

        # Append the DBS stimulation iclamps to global list
        GV.GPe_stimulation_iclamps.append(self.DBS_stim)

        # Add AMPA and GABAa synapses to the cell, i.e. add to the soma section
        self.AMPA = h.AMPA_S(0.5, sec=self.soma)
        self.GABAa = h.GABAa_S(0.5, sec=self.soma)

        # needed for PyNN
        self.source_section = self.soma
        self.source = self.soma(0.5)._ref_v
        self.rec = h.NetCon(self.source, None,
                            sec=self.soma)  # Needed to clear the simulator
        self.spike_times = h.Vector(0)
        self.parameter_names = ('L', 'diam', 'nseg', 'Ra', 'cm',
                                'bias_current_density')
        self.traces = {}
        self.recording_time = False
Example #3
0
 def insert_mechanism(self, mech):
     """
     Insert density mechanism into cell
     :param mech:
     """
     if isinstance(mech, basestring):
         mech = Mechanism(mech)
     mech.insert_into(self.soma)
     self.setRevVar()
     self.setConc()
Example #4
0
 def create_mechanisms(self, g_na_bar=2000, g_k_bar=5, g_im_bar=0.00012,
                       g_pas_k=0.000125, p_na=0.23, p_cl=0.4,
                       **kwargs):
     g_pas_na = g_pas_k * p_na
     g_pas_cl = g_pas_k * p_cl
     # mechanisms
     self.na = Mechanism('na', gbar=g_na_bar)
     self.kv = Mechanism('kv', gbar=g_k_bar)
     self.im = Mechanism('im', gkbar=g_im_bar)
     self.pasghk = Mechanism('pasghk', gclpbar=g_pas_cl, gnapbar=g_pas_na, gkpbar=g_pas_k)
     self.mechanisms.append(self.na)
     self.mechanisms.append(self.kv)
     self.mechanisms.append(self.im)
     self.mechanisms.append(self.pasghk)
    def __init__(self, **parameters):

        # Create single compartment Otsuka STN cell section, i.e. soma section
        self.soma = Section(L=parameters['L'],
                            diam=parameters['diam'],
                            nseg=parameters['nseg'],
                            Ra=parameters['Ra'],
                            cm=parameters['cm'],
                            mechanisms=[
                                Mechanism('myions'),
                                Mechanism('stn',
                                          gnabar=49e-3,
                                          gkdrbar=57e-3,
                                          gkabar=5e-3,
                                          gkcabar=1.0e-3,
                                          gcalbar=15e-3,
                                          gcatbar=5e-3,
                                          kca=2,
                                          gl=0.35e-3)
                            ])
        # Initialize ion concentrations
        h("cai0_ca_ion = 5e-6 ")
        h("cao0_ca_ion = 2")
        h("ki0_k_ion = 105")
        h("ko0_k_ion = 3")
        h("nao0_na_ion = 108")
        h("nai0_na_ion = 10")

        # Add bias current to neuron model
        self.stim = h.IClamp(0.5, sec=self.soma)
        self.stim.delay = 0
        self.stim.dur = 1e12
        self.stim.amp = parameters['bias_current']  # bias current density (nA)

        # Add AMPA and GABAa synapses to the cell, i.e. add to the soma section
        self.AMPA = h.AMPA_S(0.5, sec=self.soma)
        self.GABAa = h.GABAa_S(0.5, sec=self.soma)

        # needed for PyNN
        self.source_section = self.soma
        self.source = self.soma(0.5)._ref_v
        self.rec = h.NetCon(self.source, None,
                            sec=self.soma)  # Needed to clear the simulator
        self.spike_times = h.Vector(0)
        self.parameter_names = ('L', 'diam', 'nseg', 'Ra', 'cm',
                                'bias_current')
        self.traces = {}
        self.recording_time = False
Example #6
0
 def __init__(self,
              ion_type,
              current_type,
              L=20,
              diam=20,
              Ra=150,
              g_pas=0.00003334):
     self.ion_type = ion_type
     self.current_type = current_type
     leak = Mechanism('pas', e=-65, g=g_pas)
     self.soma = Section(L, diam, Ra=Ra, mechanisms=[leak])
    def __init__(self, **parameters):

        # Create single compartment Rubin and Terman Thalamic cell section, i.e. soma section
        self.soma = Section(L=parameters['L'],
                            diam=parameters['diam'],
                            nseg=parameters['nseg'],
                            Ra=parameters['Ra'],
                            cm=parameters['cm'],
                            mechanisms=(Mechanism('thalamic_i_leak'),
                                        Mechanism('thalamic_i_na_k'),
                                        Mechanism('thalamic_i_t')))
        """
		# Note: Thalamic current has no bias current in original paper, i.e. bias_current_density = 0
		#       Can be added in if required.
		# insert current source
		self.stim = h.IClamp(0.5, sec=self.soma)
		self.stim.delay = 0
		self.stim.dur = 1e12
		self.stim.amp = parameters['bias_current_density']*(self.area())*(0.001) 	# (0.001 or 1e-3) is conversion factor so pA -> nA
		"""

        # insert synaptic noise
        self.noise = h.SynNoise(0.5, sec=self.soma)
        self.noise.f0 = 0
        self.noise.f1 = 0.3

        # Add AMPA and GABAa synapses to the cell, i.e. add to the soma section
        self.AMPA = h.AMPA_S(0.5, sec=self.soma)
        self.GABAa = h.GABAa_S(0.5, sec=self.soma)

        # needed for PyNN
        self.source_section = self.soma
        self.source = self.soma(0.5)._ref_v
        self.rec = h.NetCon(self.source, None,
                            sec=self.soma)  # Needed to clear the simulator
        self.spike_times = h.Vector(0)
        self.parameter_names = ('L', 'diam', 'nseg', 'Ra', 'cm',
                                'bias_current_density')
        self.traces = {}
        self.recording_time = False
    def __init__(self, **parameters):

        # Create single compartment Destexhe Interneuron cell section, i.e. soma section
        self.soma = Section(L=parameters['L'],
                            diam=parameters['diam'],
                            nseg=parameters['nseg'],
                            Ra=parameters['Ra'],
                            cm=parameters['cm'],
                            mechanisms=(Mechanism('interneuron_i_leak'),
                                        Mechanism('interneuron_i_na'),
                                        Mechanism('interneuron_i_k')))

        # Add bias current to neuron model - current amplitude is in terms of original model paper, nA
        self.stim = h.IClamp(0.5, sec=self.soma)
        self.stim.delay = 0
        self.stim.dur = 1e12
        self.stim.amp = parameters['bias_current_amp']  # nA

        # insert synaptic noise
        self.noise = h.SynNoise(0.5, sec=self.soma)
        self.noise.f0 = 0
        self.noise.f1 = 0.3

        # Add AMPA and GABAa synapses to the cell, i.e. add to the soma section
        self.AMPA = h.AMPA_S(0.5, sec=self.soma)
        self.GABAa = h.GABAa_S(0.5, sec=self.soma)

        # needed for PyNN
        self.source_section = self.soma
        self.source = self.soma(0.5)._ref_v
        self.rec = h.NetCon(
            self.source, None,
            sec=self.source_section)  # Needed to clear the simulator
        self.spike_times = h.Vector(0)
        self.parameter_names = ('L', 'diam', 'nseg', 'Ra', 'cm',
                                'bias_current_amp')
        self.traces = {}
        self.recording_time = False
def without_ih():
    # Model with standard potassium und sodium currents

    model = AxonWithBoutons(axon_mechanisms=[
        Mechanism('nax', gbar=nax_axon),
        Mechanism('Kv1', gbar=Kv1_axon),
        Mechanism('leakNa', g=leakNa_axon),
        Mechanism('leakK', g=leakK_axon),
    ],
                            bouton_mechanisms=[
                                Mechanism('nax', gbar=nax_bouton),
                                Mechanism('Kv1', gbar=Kv1_bouton),
                                Mechanism('leakNa', g=leakNa_bouton),
                                Mechanism('leakK', g=leakK_bouton),
                            ],
                            all_ena=myena,
                            all_ek=myek)
    return model
Example #10
0
 def create_mechanisms(self,**kwargs):
     Rm = 20000  # Ohm cm^2 membrane resistance
     self.pas = Mechanism('pas', e=-65, g=(1.0 / Rm))
     assert self.pas.parameters['g'] > 0, "division not working correctly"
     self.mechanisms.append(self.pas)
    def __init__(self, **parameters):

        # Create cortical pyramidal neuron soma compartment using Pospischil (2008) single compartment model
        self.soma = Section(L=parameters['soma_L'],
                            diam=parameters['soma_diam'],
                            nseg=parameters['soma_nseg'],
                            Ra=parameters['soma_Ra'],
                            cm=parameters['soma_cm'],
                            mechanisms=(Mechanism('cortical_soma_i_leak'),
                                        Mechanism('cortical_soma_i_na'),
                                        Mechanism('cortical_soma_i_k'),
                                        Mechanism('cortical_soma_i_m')))

        # Create cortical pyramidal neuron axon compartments using Foust (2011) axon model
        self.ais = Section(L=parameters['ais_L'],
                           diam=parameters['ais_diam'],
                           nseg=parameters['ais_nseg'],
                           Ra=parameters['ais_Ra'],
                           cm=parameters['ais_cm'],
                           mechanisms=(Mechanism('cortical_axon_i_leak',
                                                 g_l=3.3e-5),
                                       Mechanism('cortical_axon_i_na',
                                                 g_Na=4000e-4),
                                       Mechanism('cortical_axon_i_kv',
                                                 g_Kv=20e-4),
                                       Mechanism('cortical_axon_i_kd',
                                                 g_Kd=0.015)),
                           parent=self.soma)

        # Use loop to create myelin and node sections of axon
        self.myelin = []
        self.node = []
        for i in np.arange(parameters['num_axon_compartments']):
            if i == 0:
                self.myelin.append(
                    Section(L=parameters['myelin_L'],
                            diam=parameters['myelin_diam'],
                            nseg=11,
                            Ra=parameters['myelin_Ra'],
                            cm=parameters['myelin_cm'],
                            mechanisms=(Mechanism('cortical_axon_i_leak',
                                                  g_l=0),
                                        Mechanism('cortical_axon_i_na',
                                                  g_Na=10e-4)),
                            parent=self.ais))
            else:
                self.myelin.append(
                    Section(L=parameters['myelin_L'],
                            diam=parameters['myelin_diam'],
                            nseg=11,
                            Ra=parameters['myelin_Ra'],
                            cm=parameters['myelin_cm'],
                            mechanisms=(Mechanism('cortical_axon_i_leak',
                                                  g_l=0),
                                        Mechanism('cortical_axon_i_na',
                                                  g_Na=10e-4)),
                            parent=self.node[i - 1]))

            self.node.append(
                Section(L=parameters['node_L'],
                        diam=parameters['node_diam'],
                        nseg=parameters['node_nseg'],
                        Ra=parameters['node_Ra'],
                        cm=parameters['node_cm'],
                        mechanisms=(Mechanism('cortical_axon_i_leak',
                                              g_l=0.02),
                                    Mechanism('cortical_axon_i_na',
                                              g_Na=2800e-4),
                                    Mechanism('cortical_axon_i_kv', g_Kv=5e-4),
                                    Mechanism('cortical_axon_i_kd',
                                              g_Kd=0.0072)),
                        parent=self.myelin[i]))

        self.collateral = Section(
            L=parameters['collateral_L'],
            diam=parameters['collateral_diam'],
            nseg=parameters['collateral_nseg'],
            Ra=parameters['collateral_Ra'],
            cm=parameters['collateral_cm'],
            mechanisms=(Mechanism('cortical_axon_i_leak'),
                        Mechanism('cortical_axon_i_na', g_Na=1333.33333e-4),
                        Mechanism('cortical_axon_i_kv', g_Kv=10e-4),
                        Mechanism('cortical_axon_i_kd', g_Kd=0.006)),
            parent=self.node[-1])

        middle_index = int((parameters['num_axon_compartments'] / 2.0))
        self.middle_node = self.node[middle_index]
        self.middle_myelin = self.myelin[middle_index]

        # Add extracellular and xtra mechanisms to collateral
        self.collateral.insert('extracellular')
        self.collateral.insert('xtra')

        # Assign default rx values to the segments rx_xtra
        #  - these values are updated in the main run file
        # 	 where rx is calculated as the transfer resistance
        #    for each collateral segments to the stimulation
        #    electrode in the homogenous extracellular medium
        for seg in self.collateral:
            seg.xtra.rx = seg.x * 3e-1

        # Setting pointers to couple extracellular and xtra mechanisms for simulating extracellular DBS
        for seg in self.collateral:
            h.setpointer(seg._ref_e_extracellular, 'ex', seg.xtra)
            h.setpointer(seg._ref_i_membrane, 'im', seg.xtra)

        # Add bias current to neuron model - current amplitude is in terms of original model paper, nA
        self.stim = h.IClamp(0.5, sec=self.soma)
        self.stim.delay = 0
        self.stim.dur = 1e12
        self.stim.amp = parameters['soma_bias_current_amp']

        # insert synaptic noise
        self.noise = h.SynNoise(0.5, sec=self.soma)
        self.noise.f0 = 0
        self.noise.f1 = 0.3

        # Add AMPA and GABAa synapses to the cell, i.e. add to the soma section
        self.AMPA = h.AMPA_S(0.5, sec=self.soma)
        self.GABAa = h.GABAa_S(0.5, sec=self.soma)

        # needed for PyNN
        self.source = {
            'soma': self.soma(0.5)._ref_v,
            'middle_axon_node': self.middle_node(0.5)._ref_v,
            'collateral': self.collateral(0.5)._ref_v
        }
        self.source_section = {
            'soma': self.soma,
            'middle_axon_node': self.middle_node,
            'collateral': self.collateral
        }
        self.rec = h.NetCon(self.source['collateral'],
                            None,
                            sec=self.source_section['collateral']
                            )  # Needed to clear the simulator
        self.spike_times = h.Vector(0)
        self.traces = {}
        self.recording_time = False
        self.parameter_names = ()
Example #12
0
 def add_kcc2(self, **kwargs):
     kcc2 = Mechanism('KCC2', **kwargs)
     for section in self.sections:
         kcc2.insert_into(section)
     self.kcc2_inserted = True
     return self