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)
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
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)
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)
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)
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
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)
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",
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)
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