from tvbo import SimulationExperiment
exp = SimulationExperiment.from_string("""
label: "NeuroML Ex18: HH with GHK"
dynamics:
name: na_k_ca
iri: neuroml:cell
parameters:
diameter: { value: 1.0 }
length: { value: 10.0 }
specificCapacitance: { value: 1.0, unit: uF_per_cm2 }
initMembPotential: { value: -65.0, unit: mV }
spikeThresh: { value: 0, unit: mV }
resistivity: { value: 0.1, unit: kohm_cm }
network_temperature: { value: 16.3, unit: degC }
components:
# ── Na channel ──
na_chan:
name: na_chan
iri: neuroml:ionChannelHH
parameters:
conductance: { value: 10, unit: pS }
species: { description: na }
condDensity: { value: 0.12, unit: S_per_cm2 }
erev: { value: 50.799202, unit: mV }
ion: { description: na }
components:
m:
name: m
iri: neuroml:gateHHrates
parameters:
instances: { value: 3 }
components:
q10Settings:
name: q10Settings
iri: neuroml:q10ExpTemp
parameters:
q10Factor: { value: 3 }
experimentalTemp: { value: 6.3, unit: degC }
forwardRate:
name: forwardRate
iri: neuroml:HHExpLinearRate
parameters:
rate: { value: 1, unit: per_ms }
midpoint: { value: -40, unit: mV }
scale: { value: 10, unit: mV }
reverseRate:
name: reverseRate
iri: neuroml:HHExpRate
parameters:
rate: { value: 4, unit: per_ms }
midpoint: { value: -65, unit: mV }
scale: { value: -18, unit: mV }
h:
name: h
iri: neuroml:gateHHrates
parameters:
instances: { value: 1 }
components:
q10Settings:
name: q10Settings
iri: neuroml:q10ExpTemp
parameters:
q10Factor: { value: 3 }
experimentalTemp: { value: 6.3, unit: degC }
forwardRate:
name: forwardRate
iri: neuroml:HHExpRate
parameters:
rate: { value: 0.07, unit: per_ms }
midpoint: { value: -65, unit: mV }
scale: { value: -20, unit: mV }
reverseRate:
name: reverseRate
iri: neuroml:HHSigmoidRate
parameters:
rate: { value: 1, unit: per_ms }
midpoint: { value: -35, unit: mV }
scale: { value: 10, unit: mV }
# ── K channel ──
k_chan:
name: k_chan
iri: neuroml:ionChannelHH
parameters:
conductance: { value: 10, unit: pS }
species: { description: k }
condDensity: { value: 0.036, unit: S_per_cm2 }
erev: { value: -77.0, unit: mV }
ion: { description: k }
components:
n:
name: n
iri: neuroml:gateHHrates
parameters:
instances: { value: 4 }
components:
q10Settings:
name: q10Settings
iri: neuroml:q10ExpTemp
parameters:
q10Factor: { value: 3 }
experimentalTemp: { value: 6.3, unit: degC }
forwardRate:
name: forwardRate
iri: neuroml:HHExpLinearRate
parameters:
rate: { value: 0.1, unit: per_ms }
midpoint: { value: -55, unit: mV }
scale: { value: 10, unit: mV }
reverseRate:
name: reverseRate
iri: neuroml:HHExpRate
parameters:
rate: { value: 0.125, unit: per_ms }
midpoint: { value: -65, unit: mV }
scale: { value: -80, unit: mV }
# ── Ca channel (uses GHK permeability) ──
ca_chan:
name: ca_chan
iri: neuroml:ionChannelHH
parameters:
conductance: { value: 10, unit: pS }
species: { description: ca }
permeability: { value: 2.5e-7, unit: m_per_s }
ion: { description: ca }
components:
p:
name: p
iri: neuroml:gateHHrates
parameters:
instances: { value: 2 }
components:
q10Settings:
name: q10Settings
iri: neuroml:q10Fixed
parameters:
fixedQ10: { value: 0.5 }
experimentalTemp: { value: 6.3, unit: degC }
forwardRate:
name: forwardRate
iri: neuroml:HHExpLinearRate
parameters:
rate: { value: 1, unit: per_ms }
midpoint: { value: -40, unit: mV }
scale: { value: 10, unit: mV }
reverseRate:
name: reverseRate
iri: neuroml:HHExpRate
parameters:
rate: { value: 4, unit: per_ms }
midpoint: { value: -65, unit: mV }
scale: { value: -18, unit: mV }
# ── Leak channel ──
leak:
name: leak
iri: neuroml:ionChannelPassive
parameters:
conductance: { value: 10, unit: pS }
species: { description: non_specific }
condDensity: { value: 0.0003, unit: S_per_cm2 }
erev: { value: -53.1, unit: mV }
ion: { description: non_specific }
# ── Calcium concentration model ──
simple_decay:
name: simple_decay
iri: neuroml:fixedFactorConcentrationModel
parameters:
ion: { description: ca }
restingConc: { value: 3e-6, unit: mM }
decayConstant: { value: 1.0, unit: ms }
rho: { value: 3e-1, unit: mol_per_m_per_A_per_s }
initialConcentration: { value: 5e-6, unit: mM }
initialExtConcentration: { value: 2, unit: mM }
# ── Current clamp ──
IClamp:
name: IClamp
iri: neuroml:pulseGenerator
parameters:
delay: { value: 4, unit: ms }
duration: { value: 6.0, unit: ms }
amplitude: { value: 0.005, unit: nA }
network:
number_of_nodes: 1
integration:
method: euler
step_size: 0.001
duration: 50.0
time_scale: ms
""" )
print (f"Model: { exp. dynamics. name if exp. dynamics else 'network' } " )
print (f"Components: { list (exp.dynamics.modes.keys())} " )
Model: na_k_ca
Components: ['IClamp', 'ca_chan', 'k_chan', 'leak', 'na_chan', 'simple_decay']