- Jun 24, 2020
-
-
Benjamin Cumming authored
Update core library: * support derivation of named mechanisms in catalogue from a string description of the parent. * fix bug in radois_ge region expression that was finding region_lt. * fix test for radius_ge region expression Add support for mechanism, global properties and catalogue shenanigans to python wrapper
-
- Jun 12, 2020
-
-
Sam Yates authored
* Make recipe return probes as a vector. * Remove `probe_id` from `probe_info`. * Rename `fvm_probe_info` to `fvm_probe_data` (everything was being called info, and it was getting confusing). * Make `probe_association_map` specific to `mc_cell_group`/`fvm_lowered_cell`. * Change probe_association_map representation: unordered map for probe_id -> tag; unordered multimap for probe_id -> fvm_probe_data. This allows multiple probes to be associated with the same probe id. * Call sampler callback separately for each probe with the same probe_id. * Replace location-based probes with locset equivalents. * Add index for probes sharing a probe id. * Bundle all probe metadata (id, tag, index, probe-specific meta) into `probe_metadata` struct for passing to sampler callbacks. * Change simple_sampler to work on `trace_vector`, a vector of `trace_data`. The _i_th element is the data from probe with index i. * Consolidate hash composition and `std::hash` specialization code in new header. * Update python lib for new API. * Update tests and examples for new recipe, internal probe, and simple_sampler APIs. * Update docs to suit.
-
- May 22, 2020
-
-
Sam Yates authored
Fixes #589 and #730, providing cell-wide probes and a correct total trans-membrane current. Fixes #822, providing spatial interpolation of membrane voltages as governed by cable resistivity and diameter. * Add partition of point mechanism target vector by cell index to `fvm_mechanism_config`. * Fix sign error in axial current interpolation. * Replace `fvm_probe_info` with class that wraps a variant type capturing one of a set of backend-cellgroup probe translation representations: `fvm_probe_scalar`, `fvm_probe_interpolated`, `fvm_probe_multi`, `fvm_probe_weighted_multi`, `fvm_probe_membrance_currents`. * Refactor `fvm_lowered_cell_impl::resolve_probe_address` so that it avoids the long chain of if-else tests on wrapped `any` type with an invocation of `util::any_visitor`. Each specific cable cell probe address representation is translated into one of the intermediate `fvm_probe_info` variants via an overload of `resolve_probe`. * Add new non-scalar cell probe address types for all-of-cell values, including point mechanism state, density mechanism state, ion currents and concentrations, membrane voltage by CV cable, and total trans-mebrane currents. The latter are ultimately calculated by computing the net axial current fluxes in each CV. * Add `util::any_ptr` field to the sampling function interface, pointing to constant-per-simulation-run metadata associated with a probe address. Underlying metadata type varies between probe types. * Extend `simple_sampler` so that it optionally captures sampler metadata. * Add special case to `simple_sampler` for vector-valued sample data, allowing it to translate from a pointer-pair range to a std::vector. * Fix minor bugs in `util::variant`. * Add to `mc_cell_group` the logic for translating each intermediate probe representation to a sampler callback invocation, reusing temporary scratch vectors across calls. * Add unit comments to `embed_pwlin_data`. * Add probe variety demonstration `probe-demo` to examples, covering most of the new cable cell probe classes. * Add `util::any_visitor` runtime-type dependent dispatcher class. * Add `util::overload` helper for generating overloaded functional objects from individual functions, lambdas or functionals. * Extend probe unit tests in `test_probe.cpp` to cover new probe address types. * Add unit tests for `any_visitor` and `overload`.
-
- Sep 25, 2019
-
-
akuesters authored
Adds * to `recipe.cpp`: `num_probes` and `get_probe` with helper function `cable_probe(kind, id, location)` * `sample.cpp`: `sample` type with attributes `time` and `value`; a `sampler` with `samples()` and `clear()` and helper functions `attach_sampler(sim, dt)` for adding all probes as well as `attach_sampler(sim, dt, probe_id)` for adding one probe * `morphology.cpp`: `location` as `arb::mlocation` with `branch` and `position` * corresponding docs and example * update to new cable cell semantics in c++ validation test fixes #762
-