def create_models(self):

        self.generic_cell = IafActivityCell(
            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,
            tau1=self.get_bioparameter("iaf_tau1").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 = 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)
    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=self.get_bioparameter("cell_length").value, 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 = GradedSynapse(id="exc_syn",
                                conductance =        self.get_bioparameter("exc_syn_conductance").value,
                                delta =              self.get_bioparameter("exc_syn_delta").value,
                                Vth =                self.get_bioparameter("exc_syn_vth").value,
                                erev =               self.get_bioparameter("exc_syn_erev").value,
                                k =                  self.get_bioparameter("exc_syn_k").value)


        self.inh_syn = GradedSynapse(id="inh_syn",
                                conductance =        self.get_bioparameter("inh_syn_conductance").value,
                                delta =              self.get_bioparameter("inh_syn_delta").value,
                                Vth =                self.get_bioparameter("inh_syn_vth").value,
                                erev =               self.get_bioparameter("inh_syn_erev").value,
                                k =                  self.get_bioparameter("inh_syn_k").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)
Exemple #3
0
 def create_muscle_to_muscle_syn(self):
     self.muscle_to_muscle_elec_syn = GapJunction(
         id="muscle_to_muscle_elec_syn",
         conductance=self.get_bioparameter(
             "muscle_to_muscle_elec_syn_gbase").value)
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",
                         Vth="-55mV",
                         k="0.025per_ms",
                         erev="0mV")
nml_doc.graded_synapses.append(grad_syn)

pfs = PoissonFiringSynapse(id='pfs',
Exemple #5
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
               self.leak_reversal, self.tau1))


generic_cell = IafActivityCell(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,
                               tau1=iaf_tau1.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)

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

offset_current = PulseGenerator(
    id="offset_current",
    delay="0ms",
    duration=unphysiological_offset_current_dur.value,
    amplitude=unphysiological_offset_current.value)