Getting Started#
To build our first model, we start by creating a definition consisting of soma and basal_dendrite.
We’ll begin by defining hh and pas in the soma, and pas in the dendrites:
from arborize import define_model
definition = define_model({
"cable_types": {
"soma": {
"cable": {
"Ra": 100,
"cm": 1,
},
"mechanisms": {
"hh": {
"gnabar": 0.12,
"gkbar": 0.036,
"gl": 0.0003,
"el": -54.3,
},
},
},
"basal_dendrite": {
"cable": {
"Ra": 100,
"cm": 1,
},
"mechanisms": {
"pas": {
"g": 0.001,
"e": -65,
},
},
},
},
})
Next up we need to get a schematic, download this morphology from NeuroMorpho as morpho.swc, then we can create a file schematic from it:
from arborize import file_schematic
schematic = file_schematic("morpho.swc", definition)
Hint
Arborize uses MorphIO to load schematics
from file. The points are labelled with the SectionType
enum.
We’re ready to build a cell:
from arborize import neuron_build
cell = neuron_build(schematic)
Hint
Arborize’s NEURON builder uses Patch to construct NEURON objects. It provides many convenience functions.
Let’s record the soma and plot the results:
from patch import p
import plotly.express as px
r = cell.soma[0].record()
cell.basal_dendrite[0].iclamp(delay=5, duration=1, amplitude=0.1, x=1)
t = p.time
p.celsius = 6.3
p.run(100)
px.line(x=list(r), y=list(t)).show()
To create variants of your cell model, pass the template definition to define_model
:
variant = define_model(definition, {
"cable_types": {
"soma": {
"mechanisms": {
"hh": {
"gkbar": 0.172
}
}
}
}
})
We can now plot the difference between the 2 cell types:
from patch import p
import plotly.express as px
wildtype_schematic = file_schematic("morpho.swc", definition)
wildtype_cell = neuron_build(schematic)
variant_schematic = file_schematic("morpho.swc", variant)
variant_cell = neuron_build(variant_schematic)
wildtype_cell.basal_dendrite[0].iclamp(delay=5, duration=1, amplitude=0.1, x=1)
variant_cell.basal_dendrite[0].iclamp(delay=5, duration=1, amplitude=0.1, x=1)
r_wt = wildtype_cell.soma[0].record()
r_var = variant_cell.soma[0].record()
t = p.time
p.celsius = 6.3
p.run(100)
px.line(x=list(r), y=list(t)).show()