- Oct 22, 2021
-
-
Nora Abi Akar authored
Adds support for user-defined gap junction mechanisms. Fixes #1600. - API Change: Wrap `mechanism_desc` in one of `density`, `synapse`, `junction` to be able to differentiate the kind of placed mechanism between point and junction mechanisms. - API Change: The `ggap` parameter of a `gap_junction_connection` renamed to `weight` and is not a unit-less parameter. - Mechanism ABI change: New `peer_index` vector which stores the indices of the peer sites of a gap-junction-connection. New mechanism kind. - Internal API change: `shared_state` no longer controls the gap junction current contribution, that is now handled in the mechanism callbacks. - Modcc change: Add `JUNCTION_PROCESS` and `v_peer` keywords to nmodl, the first to identify a gap-junction mechanism, the second to access the peer voltage of a gap-junction connection. Modify modcc to be able to compile nmodl and generate correct code. - Behavior change: gap-junctions now contribute to both the current and co...
-
- Jun 29, 2021
-
-
thorstenhater authored
1. All s-exp parsing has migrated to `arborio` 2. CV policies can now be read from string as per #1334. This is needed for the GUI project. 2. No longer can `arb::locset` and `arb::region` be constructed from mere strings 2. We have `arborio::literals` to construct `region`s, `locset`s, and `cv_policy`s in the form of `_rg`, `_ls`, and `_cvp`. 3. The `_lab` suffix now constructs an object that converts to `named` morphologies, rather than a simple string. 4. Constructors of `region` and `locset` are now properly guarded 5. Consequently, a lot of missing inheritance from `region_tag` and `locset_tag` was retrofitted. Closes #1334 Closes #1419
-
- Jun 18, 2021
-
-
Nora Abi Akar authored
New structs and types: * `cell_tag_type` (std::string): for labelling placeable items on a cell. The label refers to a number of items placed on a locset, equal to the number of locations in a locset. The number of locations in not always known to the user, so the previous way of using indices for items was no longer sufficient. * `lid_selection_policy`: for allowing a user to select a single item from a group of items sharing a label. Currently only `round_robin` and `assert_univalent` are supported. * `cell_local_label_type` and `cell_global_label_type`: for identifying the target and source of a connection or gap_junction connection. * `cell_label_ranges`, and `cell_labels_and_gids`: for propagating information about the labelled items on the cell from the cell groups back to the simulation and communicator. * `label_resolution_map` and `resolver`: for selecting an item (and retaining state) from a labelled group of items on a cell according to a user-selected policy. Changes to the model-initialization: * The `communicator` now needs `label_resolution_maps` constructed from the cell group data in order to build the `connections` vectors. * The `simulation_state` object handles the transfer of the information when it is constructed. * Spike exchange at runtime remains unchanged, because `communicator::connections` remains unchanged. Changes to cells, cell_groups and recipe: * `decor::place` expects a third label parameter, no longer returns an `lid_range`. * `lif`, `source`, and `benchmark` cells need source/target labels in their constructors. * A `cell_group` needs to save data about the gid/labels/lid_ranges of each cell, to propagate back to the `communicator` constructor. * Connections/gap junction connections are formed between {label, policy} pairs on cells instead of indices. * `num_sources`, `num_targets`, `num_gap_junction_sites` deleted from `recipe`. Additional changes: * Add MPI wrapper for exchanging vectors of strings. * Corresponding updates to unit tests, Python wrapper, C++ and Python examples, documentation. Fixes #1394
-
- Dec 14, 2020
-
-
Benjamin Cumming authored
Make the `cable_cell` interface read only by passing the decorations to its constructor in a new `decor` type. C++ library * Remove the paint/place/set_default interface from `cable_cell` * Create a `decor` type that: * stores lists of paintings and placings * stores a set of cable cell parameters * uses the `paint`, `place`, `set_default` interface that was deprecated from `cable_cell`. * Create `paintable`, `placeable` and `defaultable` variants that are sum types over the respective types that can be painted, placed and defaulted. * Remove the overloaded `cable_cell::paint`, `cable_cell::place`, `cable_cell::set_default` methods to single methods that consume the sum types. Unit Tests * Many small changes because many many tests use cable cell API. * There were no `cable_cell` unit tests! Not such a big deal, since cable_cell is tested implicitly in so many other tests * but I added cable_cell tests: not much at the moment but will quickly fill up as we work on reading, writing, etc. Python * Wrap the new decor type. * Update cable cell type to reflect read only API. * Wrap the cv_policy types and implement the same operator overloading.
-
- Sep 22, 2020
-
-
Benjamin Cumming authored
* Move label and s-expr parsing code and unit tests from Python to arbor C++ library. * Update `locset` and `region` constructors that take string arguments to parse strings as s-expressions or "quoted" labels. * Modify the input stream modifier used to parse asc files to use a lookup table for substitutions, renamed it transmogrifier. * Replace `hopefully` type implemented in python headers with an `arb::util::expected`. * Add `ARBDEV_COLOR` CMake option that forces gcc and clang to always output color output. * Allow arbitrary strings in labels in region and locset expressions. * Add `parse_region_expression` and `parse_locset_expression` functions alongside the existing `parse_label_expression` function for use when a region or locset is expected. These calls will promote a quoted string `"label"` to `(region "label")` or `(locset "label")` respectively. * Ad...
-
- Jul 13, 2020
-
-
Benjamin Cumming authored
* Remove spherical root/soma from morphology representations and logic. * Replace `sample_tree` with `segment_tree`, which represents sample points in pairs and allows the representation of detached branches and cable segments. * Remove sample point properties and predicates. * Remove `cv_policy_flag::single_root_cv` as somata with a single attached dendrite will have a representation in the morphology of a single branch. * Remove `arb::math::{volume/area}_sphere`, which are no longer being used. * Remove spherical root special cases from `embed_pwlin` and `place_pwlin` objects. * Add textual representation of `mnpos` in morphology exception text. * Rename `sample_tree_from_swc` to `segement_tree_from_swc` and remove any special casing for one point somata. * Remove `msample` and `mbranch` types. * Update unit tests and python wrapper to reflect the changes.
-