Skip to content
Snippets Groups Projects
Commit 1e939ae6 authored by Sam Yates's avatar Sam Yates Committed by Benjamin Cumming
Browse files

Replace em_morphology middle layer API. (#918)

* Consolidate embedding-dependent morphology data in new class `embed_pwlin`, which provides sample location lookup, handles branch and radius queries, and performs piecewise-constant integration over a branch by length, branch surface area, or inverse cross-sectional area.
* Extend region and locset expressions to represent named regions/locsets.
* Rearrange morphology-related functionality so that morphology-independent functions are provided via `morph/primitives.hpp` and topological functionality via `morph/morphology.hpp` and `morphology` methods.
* Provide new class `mprovider` which gathers a morphology, its embedding, and a concrete label dictionary.
* Populate mprovider concrete region/locset maps at initialization time, throwing exceptions if there are unresolved references or circular dependencies.
* Gather and unify morphology-related exceptions in `morphexcept.hpp/cpp`, unifying error text and providing programmatically readable associated data, akin to `arbexcept.hpp/cpp`.
* Simplify cable_cell painting/placing interfaces.
* Add generic representation of piecewise-specified data with `pw_elements` classes.
* Add representation of rational-polynomial interpolatated elements over the unit interval; sufficient for embedding integration services, but the implemented algorithm is subject to singularities if data can be represented by a lower-order denominator than requested.
* Move `sum` from `algorithms` to `util`.
* Make `util::either` public.
* Add unit tests for existing morphology primitive operations.
* Add unit tests for new functionality/APIs.
parent fa5ac6c1
No related branches found
No related tags found
Showing
with 464 additions and 421 deletions
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment