def create_models(self):

        self.generic_cell = IafCell(id="generic_iaf_cell", 
                                    C =                 self.get_bioparameter("iaf_C").value,
                                    thresh =            self.get_bioparameter("iaf_thresh").value,
                                    reset =             self.get_bioparameter("iaf_reset").value,
                                    leak_conductance =  self.get_bioparameter("iaf_conductance").value,
                                    leak_reversal =     self.get_bioparameter("iaf_leak_reversal").value)


        self.exc_syn = ExpTwoSynapse(id="exc_syn",
                                gbase =         self.get_bioparameter("chem_exc_syn_gbase").value,
                                erev =          self.get_bioparameter("chem_exc_syn_erev").value,
                                tau_decay =     self.get_bioparameter("chem_exc_syn_decay").value,
                                tau_rise =      self.get_bioparameter("chem_exc_syn_rise").value)


        self.inh_syn = ExpTwoSynapse(id="inh_syn",
                                gbase =         self.get_bioparameter("chem_inh_syn_gbase").value,
                                erev =          self.get_bioparameter("chem_inh_syn_erev").value,
                                tau_decay =     self.get_bioparameter("chem_inh_syn_decay").value,
                                tau_rise =      self.get_bioparameter("chem_inh_syn_rise").value)

        self.elec_syn = ExpTwoSynapse(id="elec_syn",
                                gbase =         self.get_bioparameter("elec_syn_gbase").value,
                                erev =          self.get_bioparameter("elec_syn_erev").value,
                                tau_decay =     self.get_bioparameter("elec_syn_decay").value,
                                tau_rise =      self.get_bioparameter("elec_syn_rise").value)


        self.offset_current = PulseGenerator(id="offset_current",
                                delay= self.get_bioparameter("unphysiological_offset_current_del").value,
                                duration= self.get_bioparameter("unphysiological_offset_current_dur").value,
                                amplitude= self.get_bioparameter("unphysiological_offset_current").value)
Esempio n. 2
0
def create_n_connection_synapse(prototype_syn, n, nml_doc):

    new_id = "%s_%sconns"%(prototype_syn.id, str(n).replace('.', '_'))

    if not existing_synapses.has_key(new_id):

        if isinstance(prototype_syn, ExpTwoSynapse):
            magnitude, unit = split_neuroml_quantity(prototype_syn.gbase)
            new_syn = ExpTwoSynapse(id=new_id,
                                gbase =       "%s%s"%(magnitude*n, unit),
                                erev =        prototype_syn.erev,
                                tau_decay =   prototype_syn.tau_decay,
                                tau_rise =    prototype_syn.tau_rise)

            existing_synapses[new_id] = new_syn
            nml_doc.exp_two_synapses.append(new_syn)

        elif isinstance(prototype_syn, GapJunction):
            magnitude, unit = split_neuroml_quantity(prototype_syn.conductance)
            new_syn = GapJunction(id=new_id,
                                  conductance =       "%s%s"%(magnitude*n, unit))

            existing_synapses[new_id] = new_syn
            nml_doc.gap_junctions.append(new_syn)

    else:
        new_syn = existing_synapses[new_id]

    return new_syn
Esempio n. 3
0
    def get_inh_syn(self, pre_cell, post_cell, type):
        self.found_specific_param = False

        specific_param_template = '%s_to_%s_chem_inh_syn_%s'
        if type == 'neuron_to_neuron':
            gbase = self.get_conn_param(pre_cell, post_cell, specific_param_template,
                                                              'neuron_to_neuron_chem_inh_syn_%s', 'gbase')
            erev = self.get_conn_param(pre_cell, post_cell, specific_param_template,
                                                             'chem_inh_syn_%s', 'erev')
            decay = self.get_conn_param(pre_cell, post_cell, specific_param_template,
                                                              'chem_inh_syn_%s', 'decay')
            rise = self.get_conn_param(pre_cell, post_cell, specific_param_template,
                                                             'chem_inh_syn_%s', 'rise')

            conn_id = 'neuron_to_neuron_inh_syn'

        elif type == 'neuron_to_muscle':
            gbase = self.get_conn_param(pre_cell, post_cell, specific_param_template,
                                                              'neuron_to_muscle_chem_inh_syn_%s', 'gbase')
            erev = self.get_conn_param(pre_cell, post_cell, specific_param_template,
                                                             'chem_inh_syn_%s', 'erev')
            decay = self.get_conn_param(pre_cell, post_cell, specific_param_template,
                                                              'chem_inh_syn_%s', 'decay')
            rise = self.get_conn_param(pre_cell, post_cell, specific_param_template,
                                                             'chem_inh_syn_%s', 'rise')
            conn_id = 'neuron_to_muscle_inh_syn'

        if self.found_specific_param:
            conn_id = '%s_to_%s_inh_syn' % (pre_cell, post_cell)

        return ExpTwoSynapse(id=conn_id,
                             gbase=gbase,
                             erev=erev,
                             tau_decay=decay,
                             tau_rise=rise)
Esempio n. 4
0
    def create_neuron_to_muscle_syn(self):
        self.neuron_to_muscle_exc_syn = ExpTwoSynapse(id="neuron_to_muscle_exc_syn",
                                gbase =         self.get_bioparameter("neuron_to_muscle_chem_exc_syn_gbase").value,
                                erev =          self.get_bioparameter("chem_exc_syn_erev").value,
                                tau_decay =     self.get_bioparameter("chem_exc_syn_decay").value,
                                tau_rise =      self.get_bioparameter("chem_exc_syn_rise").value)


        self.neuron_to_muscle_inh_syn = ExpTwoSynapse(id="neuron_to_muscle_inh_syn",
                                gbase =         self.get_bioparameter("neuron_to_muscle_chem_inh_syn_gbase").value,
                                erev =          self.get_bioparameter("chem_inh_syn_erev").value,
                                tau_decay =     self.get_bioparameter("chem_inh_syn_decay").value,
                                tau_rise =      self.get_bioparameter("chem_inh_syn_rise").value)

        self.neuron_to_muscle_elec_syn = GapJunction(id="neuron_to_muscle_elec_syn",
                               conductance =    self.get_bioparameter("neuron_to_muscle_elec_syn_gbase").value)
Esempio n. 5
0
    def create_neuron_to_neuron_syn(self):
        self.neuron_to_neuron_exc_syn = ExpTwoSynapse(id="neuron_to_neuron_exc_syn",
                                gbase =         self.get_bioparameter("neuron_to_neuron_chem_exc_syn_gbase").value,
                                erev =          self.get_bioparameter("chem_exc_syn_erev").value,
                                tau_decay =     self.get_bioparameter("chem_exc_syn_decay").value,
                                tau_rise =      self.get_bioparameter("chem_exc_syn_rise").value)

        self.neuron_to_neuron_inh_syn = ExpTwoSynapse(id="neuron_to_neuron_inh_syn",
                                gbase =         self.get_bioparameter("neuron_to_neuron_chem_inh_syn_gbase").value,
                                erev =          self.get_bioparameter("chem_inh_syn_erev").value,
                                tau_decay =     self.get_bioparameter("chem_inh_syn_decay").value,
                                tau_rise =      self.get_bioparameter("chem_inh_syn_rise").value)

        self.neuron_to_neuron_elec_syn = ExpTwoSynapse(id="neuron_to_neuron_elec_syn",
                                gbase =         self.get_bioparameter("neuron_to_neuron_elec_syn_gbase").value,
                                erev =          self.get_bioparameter("elec_syn_erev").value,
                                tau_decay =     self.get_bioparameter("elec_syn_decay").value,
                                tau_rise =      self.get_bioparameter("elec_syn_rise").value)
Esempio n. 6
0
def create_n_connection_synapse(prototype_syn, n, nml_doc):
    
    new_id = "%s_%iconns"%(prototype_syn.id, n)
    
    if not existing_synapses.has_key(new_id):
        
        magnitude, unit = split_neuroml_quantity(prototype_syn.gbase)
        new_syn = ExpTwoSynapse(id=new_id,
                            gbase =       "%f%s"%(magnitude*n, unit),
                            erev =        prototype_syn.erev,
                            tau_decay =   prototype_syn.tau_decay,
                            tau_rise =    prototype_syn.tau_rise)
                            
        existing_synapses[new_id] = new_syn 
        nml_doc.exp_two_synapses.append(new_syn)        
    else:
        new_syn = existing_synapses[new_id]
        
    return new_syn
Esempio n. 7
0
unphysiological_offset_current = BioParameter("unphysiological_offset_current", "0.21nA", "KnownError", "0")
unphysiological_offset_current_dur = BioParameter("unphysiological_offset_current_dur", "200ms", "KnownError", "0")


generic_cell = IafCell(id="generic_iaf_cell", 
                            C =                 iaf_C.value,
                            thresh =            iaf_thresh.value,
                            reset =             iaf_reset.value,
                            leak_conductance =  iaf_conductance.value,
                            leak_reversal =     iaf_leak_reversal.value)


exc_syn = ExpTwoSynapse(id="exc_syn",
                        gbase =         chem_exc_syn_gbase.value,
                        erev =          chem_exc_syn_erev.value,
                        tau_decay =     chem_exc_syn_decay.value,
                        tau_rise =      chem_exc_syn_rise.value)
    

inh_syn = ExpTwoSynapse(id="inh_syn",
                        gbase =         chem_inh_syn_gbase.value,
                        erev =          chem_inh_syn_erev.value,
                        tau_decay =     chem_inh_syn_decay.value,
                        tau_rise =      chem_inh_syn_rise.value)


offset_current = PulseGenerator(id="offset_current",
                        delay="0ms",
                        duration=unphysiological_offset_current_dur.value,
                        amplitude=unphysiological_offset_current.value)
Esempio n. 8
0
                     v0="-70mV",
                     thresh="30mV",
                     a="0.02",
                     b="0.2",
                     c="-65.0",
                     d="6")

nml_doc.izhikevich_cells.append(iz0)

syn0 = ExpOneSynapse(id="syn0", gbase="14nS", erev="0mV", tau_decay="3ms")

nml_doc.exp_one_synapses.append(syn0)

syn1 = ExpTwoSynapse(id="syn1",
                     gbase="2nS",
                     erev="0mV",
                     tau_rise="1ms",
                     tau_decay="3ms")

nml_doc.exp_two_synapses.append(syn1)

gj = GapJunction(id="gj1", conductance="10pS")

nml_doc.gap_junctions.append(gj)

sil_syn = SilentSynapse(id="silent1")
nml_doc.silent_synapses.append(sil_syn)

grad_syn = GradedSynapse(id="gs1",
                         conductance="0.5pS",
                         delta="5mV",
Esempio n. 9
0
    def create_models(self):

        self.generic_cell = Cell(id="GenericCell")

        morphology = Morphology()
        morphology.id = "morphology_" + self.generic_cell.id

        self.generic_cell.morphology = morphology

        prox_point = Point3DWithDiam(
            x="0",
            y="0",
            z="0",
            diameter=self.get_bioparameter("cell_diameter").value)
        dist_point = Point3DWithDiam(
            x="0",
            y="0",
            z="0",
            diameter=self.get_bioparameter("cell_diameter").value)

        segment = Segment(id="0",
                          name="soma",
                          proximal=prox_point,
                          distal=dist_point)

        morphology.segments.append(segment)

        self.generic_cell.biophysical_properties = BiophysicalProperties(
            id="biophys_" + self.generic_cell.id)

        mp = MembraneProperties()
        self.generic_cell.biophysical_properties.membrane_properties = mp

        mp.init_memb_potentials.append(
            InitMembPotential(
                value=self.get_bioparameter("initial_memb_pot").value))

        mp.specific_capacitances.append(
            SpecificCapacitance(
                value=self.get_bioparameter("specific_capacitance").value))

        mp.spike_threshes.append(
            SpikeThresh(value=self.get_bioparameter("spike_thresh").value))

        mp.channel_densities.append(
            ChannelDensity(
                cond_density=self.get_bioparameter("leak_cond_density").value,
                id="Leak_all",
                ion_channel="Leak",
                erev=self.get_bioparameter("leak_erev").value,
                ion="non_specific"))

        mp.channel_densities.append(
            ChannelDensity(cond_density=self.get_bioparameter(
                "k_slow_cond_density").value,
                           id="k_slow_all",
                           ion_channel="k_slow",
                           erev=self.get_bioparameter("k_slow_erev").value,
                           ion="k"))

        mp.channel_densities.append(
            ChannelDensity(cond_density=self.get_bioparameter(
                "k_fast_cond_density").value,
                           id="k_fast_all",
                           ion_channel="k_fast",
                           erev=self.get_bioparameter("k_fast_erev").value,
                           ion="k"))

        mp.channel_densities.append(
            ChannelDensity(cond_density=self.get_bioparameter(
                "ca_boyle_cond_density").value,
                           id="ca_boyle_all",
                           ion_channel="ca_boyle",
                           erev=self.get_bioparameter("ca_boyle_erev").value,
                           ion="ca"))

        ip = IntracellularProperties()
        self.generic_cell.biophysical_properties.intracellular_properties = ip

        # NOTE: resistivity/axial resistance not used for single compartment cell models, so value irrelevant!
        ip.resistivities.append(Resistivity(value="0.1 kohm_cm"))

        # NOTE: Ca reversal potential not calculated by Nernst, so initial_ext_concentration value irrelevant!
        species = Species(id="ca",
                          ion="ca",
                          concentration_model="CaPool",
                          initial_concentration="0 mM",
                          initial_ext_concentration="2E-6 mol_per_cm3")

        ip.species.append(species)

        self.exc_syn = ExpTwoSynapse(
            id="exc_syn",
            gbase=self.get_bioparameter("chem_exc_syn_gbase").value,
            erev=self.get_bioparameter("chem_exc_syn_erev").value,
            tau_decay=self.get_bioparameter("chem_exc_syn_decay").value,
            tau_rise=self.get_bioparameter("chem_exc_syn_rise").value)

        self.inh_syn = ExpTwoSynapse(
            id="inh_syn",
            gbase=self.get_bioparameter("chem_inh_syn_gbase").value,
            erev=self.get_bioparameter("chem_inh_syn_erev").value,
            tau_decay=self.get_bioparameter("chem_inh_syn_decay").value,
            tau_rise=self.get_bioparameter("chem_inh_syn_rise").value)

        self.elec_syn = GapJunction(
            id="elec_syn",
            conductance=self.get_bioparameter("elec_syn_gbase").value)

        self.offset_current = PulseGenerator(
            id="offset_current",
            delay=self.get_bioparameter(
                "unphysiological_offset_current_del").value,
            duration=self.get_bioparameter(
                "unphysiological_offset_current_dur").value,
            amplitude=self.get_bioparameter(
                "unphysiological_offset_current").value)
Esempio n. 10
0
def create_n_connection_synapse(prototype_syn, n, nml_doc, existing_synapses):

    new_id = "%s_%sconns"%(prototype_syn.id, str(n).replace('.', '_'))
    if type(n) is float:
        new_id = "%s_%sconns" % (prototype_syn.id, get_str_from_expnotation(n).replace('.', '_'))
    
    if isinstance(prototype_syn, ExpTwoSynapse):
        new_id = "%s"%(prototype_syn.id)

    if not existing_synapses.has_key(new_id):

        if isinstance(prototype_syn, ExpTwoSynapse):
            
            new_syn = ExpTwoSynapse(id=new_id,
                                gbase =       prototype_syn.gbase,
                                erev =        prototype_syn.erev,
                                tau_decay =   prototype_syn.tau_decay,
                                tau_rise =    prototype_syn.tau_rise)

            existing_synapses[new_id] = new_syn
            nml_doc.exp_two_synapses.append(new_syn)

        elif isinstance(prototype_syn, GapJunction):
            magnitude, unit = bioparameters.split_neuroml_quantity(prototype_syn.conductance)
            cond = "%s%s" % (magnitude * n, unit)
            if type(n) is float:
                cond = "%s%s" % (get_str_from_expnotation(magnitude * n), unit)
            new_syn = GapJunction(id=new_id,
                                  conductance =       cond)

            existing_synapses[new_id] = new_syn
            nml_doc.gap_junctions.append(new_syn)

        elif isinstance(prototype_syn, GradedSynapse):
            magnitude, unit = bioparameters.split_neuroml_quantity(prototype_syn.conductance)
            cond = "%s%s" % (magnitude * n, unit)
            if type(n) is float:
                cond = "%s%s" % (get_str_from_expnotation(magnitude * n), unit)
            new_syn = GradedSynapse(id=new_id,
                                    conductance =       cond,
                                    delta =             prototype_syn.delta,
                                    Vth =               prototype_syn.Vth,
                                    erev =              prototype_syn.erev,
                                    k =                 prototype_syn.k)

            existing_synapses[new_id] = new_syn
            nml_doc.graded_synapses.append(new_syn)

        elif isinstance(prototype_syn, GradedSynapse2):
            magnitude, unit = bioparameters.split_neuroml_quantity(prototype_syn.conductance)
            cond = "%s%s" % (magnitude * n, unit)
            if type(n) is float:
                cond = "%s%s" % (get_str_from_expnotation(magnitude * n), unit)
            new_syn = GradedSynapse2(id=new_id,
                                    conductance =       cond,
                                    ar =                prototype_syn.ar,
                                    ad =                prototype_syn.ad,
                                    beta =              prototype_syn.beta,
                                    vth =               prototype_syn.vth,
                                    erev =              prototype_syn.erev)

            existing_synapses[new_id] = new_syn
            nml_doc.graded_synapses.append(new_syn)

    else:
        new_syn = existing_synapses[new_id]

    return new_syn