Skip to content

Cable Cell Morphologies

Ben Cumming edited this page Mar 3, 2019 · 2 revisions

The current library interface for constructing cell morphologies needs improvement. The problems with the current approach include

  • No way to label segments and sub-regions of cells for later reference.
    • there are three existing "cable" types: sphere, dendrite and axon
    • these are implemented as classes that inherit from a an abstract segment base class.
  • The term segment is used in a non-standard way. In Neuron a segment is a compartment, and in NeuroML a segment is the smallest atomic unit for constructing a cell.
  • The morphology description includes information about the multi-compartment discretization, specifically the number of compartments per segment.

Proposed structure

There are four different components required to construct a discretized multi-compartment cell, ready for simulation. The first three components describe the cell and its dynamics, and the fourth is meta-data pertaining to the numeric solution method:

  1. Morphologies: the cell morphology, described by a set of connected segments.
  2. Labels: subsets of the morphology, e.g. "dendrite", "soma", "hillock", "spine"
  3. Dynamics: ion channels, synapses, capacitance, resistance etc: assigned to labels, segments or branches.
  4. Discretization Meta-data: description of how the morphology should be decomposed into compartments for a specific discretization/numeric solver.

Morphologies

Proposed Approach

The approach would be to implement each of the components first in C++, then in Python.

  1. C++ API for morphologies, including both programatic and SWC inputs.
  2. Python wrapper for morphologies.
  3. C++ API for labels
  4. Python wrapper labels
  5. C++ API for dynamics
  6. Python wrapper for dynamics
  7. C++ API for discretization meta-data
  8. C++ implement FVM discretization using cell description and meta-data
  9. Design file format for describing cells
  10. C++ API for both input and output of the file format.
  11. Python wrapper for IO