Allow CV policies to be composed over subregions. (#1078)
* Move `cv_policy` classes to new source files. * Remove `cv_policy_flag::single_root_cv`. * Allow all supplied `cv_policy` makers to be restricted a domain specified by a region: the policy is then applied per component, with the boundary points of the completion of the components included. * Expose `cv_policy` domain in public interface. * Add `components` function for splitting an extent into disconnected components. Add comment describing what is meant by connected in this context. * Rename `super` region function to `complete`. * Add region expression functions `complement` and `difference`. * Add new locset expression function `boundary` which returns the extrmal points of each component of a region. * Add new locset expression `cboundary` which returns the extremal points of the completion of each component of the region, which is what we need to close off CVs generated by region-restricted CV policies. * Add locset expression `support` which returns the multiset support of the points in a locset, i.e. all points in the locset but with multiplicity one. * Replace hodgepodge of `join` expressions in `cv_policy` implementations with locset `support` and `sum`. * Inline `mcable::prox_loc` and `mcable::dist_loc`. * Add cv policy combinators +_and |. * Add `util::foldl` which acts like `std::accumulate` for ranges, except it explicitly allows mutation of the sequence, and pass the accumulation value by rvalue. * Add unit tests for mextent components, new locset expressions. * Remove spherical soma cases from `cv_policy` testing. * Extent `cv_policy` unit tests to cover new functionality. * Rejig `cv_policy` unit tests to use the morphology testing predicates. * Add `cv_policy` documentation to cable cell docs. Fixes #1058.
Showing
- arbor/CMakeLists.txt 1 addition, 0 deletionsarbor/CMakeLists.txt
- arbor/cable_cell_param.cpp 0 additions, 108 deletionsarbor/cable_cell_param.cpp
- arbor/cv_policy.cpp 158 additions, 0 deletionsarbor/cv_policy.cpp
- arbor/include/arbor/cable_cell_param.hpp 1 addition, 145 deletionsarbor/include/arbor/cable_cell_param.hpp
- arbor/include/arbor/cv_policy.hpp 206 additions, 0 deletionsarbor/include/arbor/cv_policy.hpp
- arbor/include/arbor/morph/locset.hpp 12 additions, 1 deletionarbor/include/arbor/morph/locset.hpp
- arbor/include/arbor/morph/morphology.hpp 42 additions, 12 deletionsarbor/include/arbor/morph/morphology.hpp
- arbor/include/arbor/morph/primitives.hpp 7 additions, 2 deletionsarbor/include/arbor/morph/primitives.hpp
- arbor/include/arbor/morph/region.hpp 9 additions, 2 deletionsarbor/include/arbor/morph/region.hpp
- arbor/morph/locset.cpp 93 additions, 0 deletionsarbor/morph/locset.cpp
- arbor/morph/morphology.cpp 27 additions, 0 deletionsarbor/morph/morphology.cpp
- arbor/morph/primitives.cpp 6 additions, 8 deletionsarbor/morph/primitives.cpp
- arbor/morph/region.cpp 71 additions, 5 deletionsarbor/morph/region.cpp
- arbor/util/rangeutil.hpp 33 additions, 0 deletionsarbor/util/rangeutil.hpp
- doc/cpp_cable_cell.rst 118 additions, 0 deletionsdoc/cpp_cable_cell.rst
- python/morph_parse.cpp 1 addition, 1 deletionpython/morph_parse.cpp
- test/unit/CMakeLists.txt 1 addition, 0 deletionstest/unit/CMakeLists.txt
- test/unit/common_morphologies.hpp 3 additions, 12 deletionstest/unit/common_morphologies.hpp
- test/unit/test_cv_geom.cpp 7 additions, 7 deletionstest/unit/test_cv_geom.cpp
- test/unit/test_cv_layout.cpp 4 additions, 0 deletionstest/unit/test_cv_layout.cpp
Please register or sign in to comment