-
Nora Abi Akar authored
* add neuroML example * no test, because GH actions arbor is built without neuroML support
Unverifiede9277301
Cable cell morphology
A location on :attr:`branch`, where :attr:`pos`, in the range 0 ≤ pos ≤ 1
,
gives the relative position
between the proximal and distal ends of the branch. The position is in terms
of branch path length, so for example, on a branch of path length 100 μm pos=0.2
corresponds to 20 μm and 80 μm from the proximal and distal ends of the
branch respectively.
An unbranched cable that is a subset of a branch.
The values of 0 ≤ prox ≤ dist ≤ 1
are the relative position
of the cable's end points on the branch, in terms
of branch path length. For example, on a branch of path length 100 μm, the values
:attr:`prox` =0.2, :attr:`dist` =0.8 describe a cable that starts and
ends 20 μm and 80 μm along the branch respectively.
A location of a cell morphology at a fixed location in space. Describes the location of the as three-dimensional coordinates (:attr:`x`, :attr:`y`, :attr:`z`) and the :attr:`radius` of the cable.
A segment tree is a description of a the segments and their connections Segment trees comprise a sequence of segments starting from at lease one root segment, together with a parent-child adjacency relationship where a child segment is distal to its parent. Branches in the tree occur where a segment has more than one child. Furthermore, a segment can not have more than one parent. In this manner, neuron morphologies are modeled as a tree, where cables that represent dendrites and axons can branch, but branches can not rejoin. A segment tree is a segment-based description of a cell's morphology.
The tree is constructed by appending segments to the tree. Segments are numbered starting at 0 in the order that they are added, with the first segment getting id 0, the second segment id 1, and so forth.
A segment can not be added before its parent, hence the first segment is always at the root. In this manner, a segment tree is always guaranteed to be in a correct state, with consistent parent-child indexing, and with n segments numbered from 0 to n-1.
To illustrate how a segment tree is constructed by appending segments, take the segment tree used in the :ref:`documentation above <morph-label-seg-fig>`.
Which is constructed as follows.
import arbor
from arbor import mpoint
from arbor import mpos
tree = arbor.segment_tree()
# Start with a cylinder segment for the soma (with tag 1)
tree.append(mnpos, mpoint(0, 0.0, 0, 2.0), mpoint( 4, 0.0, 0, 2.0), tag=1)
# Construct the first section of the dendritic tree,
# comprised of segments 1 and 2, attached to soma segment 0.
tree.append(0, mpoint(4, 0.0, 0, 0.8), mpoint( 8, 0.0, 0, 0.8), tag=3)
tree.append(1, mpoint(8, 0.0, 0, 0.8), mpoint(12, -0.5, 0, 0.8), tag=3)
# Construct the rest of the dendritic tree.
tree.append(2, mpoint(12, -0.5, 0, 0.8), mpoint(20, 4.0, 0, 0.4), tag=3)
tree.append(3, mpoint(20, 4.0, 0, 0.4), mpoint(26, 6.0, 0, 0.2), tag=3)
tree.append(2, mpoint(12, -0.5, 0, 0.5), mpoint(19, -3.0, 0, 0.5), tag=3)
tree.append(5, mpoint(19, -3.0, 0, 0.5), mpoint(24, -7.0, 0, 0.2), tag=3)
tree.append(5, mpoint(19, -3.0, 0, 0.5), mpoint(23, -1.0, 0, 0.2), tag=3)
tree.append(7, mpoint(23, -1.0, 0, 0.2), mpoint(26, -2.0, 0, 0.2), tag=3)
# Two segments that define the axon, with the first at the root, where its proximal
# end will be connected with the proximal end of the soma segment.
tree.append(mnpos, mpoint(0, 0.0, 0, 2.0), mpoint(-7, 0.0, 0, 0.4), tag=2)
tree.append(9, mpoint(-7, 0.0, 0, 0.4), mpoint(-10, 0.0, 0, 0.4), tag=2)
Discretisation and CV policies
The set of boundary points used by the simulator is determined by a :ref:`CV policy <morph-cv-policies>`. These are objects of type :cpp:class:`cv_policy`, which has the following public methods:
Specific CV policy objects are created by functions described below.
These all take a region
parameter that restrict the
domain of applicability of that policy; this facility is useful for specifying
differing discretisations on different parts of a cell morphology. When a CV
policy is constrained in this manner, the boundary of the domain will always
constitute part of the CV boundary point set.