Discretization¶
Before Arbor can actually simulate the behavior of a cell using the interplay of morpholgy, mechanisms, etc it needs to turn the contiguous morphology into a collection of discrete, conical sub-volumes. These are called ‘compartments’ or ‘control volumes’ (CV). The granularity of the subdivision controls the precision of the simulation and its computational cost. We describe the expression syntax and API methods below.
Arbor offers a set of composable discretization policies
- (cv-policy-explicit locset region)¶
Use the subdivision as given by
locsetAPI
cv_policy_explicit(locset)
- (cv-policy-max-extent ext region flags)¶
Subdivision into CVs of at most
ext\(\mu m\). In the vicinity of fork points, smaller CVs might be used to avoid producing CVs containing forks, unlessflagsis(flag-interior-forks).API
cv_policy_max_extent_um(length_um, region=all(), flags=none), length in \(\mu m\)cv_policy_max_extent(quantity, region=all(), flags=none), length will be converted from conformingquantity
- (cv-policy-fixed-per-branch count region flags)¶
Subdivide each branch into
countequal CVs. In the vicinity of fork points, smaller CVs might be used to avoid producing CVs containing forks, unlessflagsis(flag-interior-forks).API
cv_policy_fixed_per_branch(count, region=all(), flags=none)
- (cv-policy-every-segment region)¶
Each segment — as given during morphology construction — will produce one CV.
API
cv_policy_every_segment(region=all())
- (cv-policy-default) = (cv-policy-fixed-per-branch 1)¶
Each branch will produce one CV.
API
default_cv_policy()
- (cv-policy-single region)¶
The whole region will produce one CV.
API
cv_policy_single(region=all())
In all cases region is optional and defaults to (all), i.e. the whole
cell. These policies compose through
- (join cvp1 cvp2)¶
Use the union of the boundary points defined by
cvp1andcvp2.API
cvp1 + cvp2
- (replace cvp1 cvp2)¶
Use the boundary points defined by
cvp1everywhere except wherecvp2is defined. There, use those ofcvp2.
API
cvp1 | cvp2