- Nov 27, 2019
-
-
Also emit "abs" in cexpr_emit.cpp because the simd backend implements abs Fixes #887
-
Calling vector::reserve to increase the size of the synapse vector by 1 causes significant performance degradation.
-
Fixes #892
-
- Nov 26, 2019
-
-
Completely remove managed memory from the gpu backend. `managed_vector<level>` is split into: - A device vector of structs containing meta data about each level - A device vector containing concatenated lengths of each branch in a level for all levels - A device vector containing concatenated parents of each branch in a level for all levels All other instances of managed memory in `matrix_fine` are easily replaced by device vectors Managed memory is also removed from the unit tests. Fixes #841
-
- Oct 30, 2019
-
-
Benjamin Cumming authored
* Make access to `segment`s in a `cable_cell` read only * Change cell constructor to require morphology and label dictionary; `make_cable_cell` no longer required. * Consolidate paint/place functionality on `cable_cell`. * Add simple cell builder wrapping new API for use in unit tests. * Remove validation test code: appropriate validation tests will need to be implemented in nsuite. Fixes #871
-
Nora Abi Akar authored
* Remove improper std::move of mechanism description with for loop in cell::paint().
-
- Oct 23, 2019
-
-
Nora Abi Akar authored
* Fix modcc segmentation fault caused by improper check for the presence of a symbol, triggered when a symbol defined in a RANGE is absent from the ASSIGNED and PARAMETER blocks.
-
Nora Abi Akar authored
* Accept `tok::ne` for conditional expressions in modcc, and emit correctly as '!=' in `cexpr_emit`.
-
- Oct 22, 2019
-
-
Nora Abi Akar authored
* Add support for non-linear kinetic schemes in modcc, using a non-linear backwards Euler method with a fixed number of iterations of Newton's method.
-
- Oct 04, 2019
-
-
Sam Yates authored
* Provide correct assignment operator.
-
- Oct 02, 2019
-
-
Ensure that errors in Python callbacks that are called from multithreaded C++ code propogate the correct Python error back to the parent Python callback site, and that no callbacks are called from other threads if an error has already ocurred. - protects each recipe callback with a mutex, stores python exception, catches and throws python exception if occured - methods calling recipe (in simulation and partition_load_balance) are protected as well by try catch, resets and rethrows python exception (if occured) or else throws C++ exception fixes #792
-
Sets the diameter of a CV as the diameter at the middle of a CV Exposes the diameter in `shared_state` and `mechanism` Adds support in modcc to treat `diam` as a special parameter Implements unit tests Fixes #850
-
* Add new `cv_policy` class that wraps classes derived from `cv_policy_base`, which in turn provide a facility for producing CV boundaries on morphology trees from a `cable_cell`. * Implement fixed-CVs-per-branch and maximum-CV-length policies, with flags that allow for single-CV oots and for CVs that terminate at fork points or which are centred on fork points. * Expose locset `join` expressions. * Add `empty()` test method on `morphology`. * Expose branch length on `em_morphology` via member function. * Account for the length of a spherical root branch in `em_morphology`. * Test for validity but do not canonicalize locations when thingifying. * Rename `root_sample_has_same_tag_as_child` to `root_sample_tag_differs_from_children` to better reflect sense of test. * Add unit tests for CV policies, branch_length method.
-
- Oct 01, 2019
-
-
Nora Abi Akar authored
* Modify `SparseSolverVisitor` to allow solving kinetic equations at steady state. Addresses #837
-
- Sep 30, 2019
-
-
- Implement inlining functions with multiple statements - Implement inlining nested function calls - Implement inlining if/else statements. Compilation fails if a function fails to set the return value. Fixes #741, #742, #862
-
- 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
-
- Sep 23, 2019
-
-
Benjamin Cumming authored
WIP on implementation of new cable cell API. * Hide implementation and state using PIMPL * Add consistent `place` methods for adding synapse, stimuls, gap junction site and spike detectors to `cable_cell`. * Add default constructor for `region` and `locset` that create empty `nil` instances.
-
- Sep 16, 2019
-
-
* Remove or implement move ctor/assign operations for ostream-derived classes. * Add explicit test for a zero row in modcc's sparse and linear solver finalize routines. * Forward declare `morphology_impl` as a struct. * Remove redundant capture in a lambda expression in fvm_layout.cpp. * Add extra parens in an assign-and-test condition in mechcat.cpp.
-
- Sep 10, 2019
-
-
Benjamin Cumming authored
* Add `minset` method for location lists that computes the minimal set by the partial order imposed by the morphology tree.
-
- Sep 09, 2019
-
-
Benjamin Cumming authored
* Add new "embedded morphology" `em_morphology`, constructed from a `morphology`, that: caches derived information such as terminal points, locations of sample points, branch lengths; provides services for canonicalizing locations and interpolation; and is used for the realisation of regions and locsets (see below). * Add simple DSL for describing locsets and regions, which are abstract descriptions of sets of locations and regions on morphologies, together with a set of operations. * Add a new class `label_dict` that associates names with regions and locsets. * Extend `cable_cell` to hold a `label_dict` argument, which is used by a new method `paint` for associating mechanisms with regions. Fixes #845.
-
- Sep 02, 2019
-
-
Nora Abi Akar authored
* Adds modcc support for COMPARTMENT statements of the form: `COMPARTMENT v {state_0, state_1, ..., state_n}`. * Use `COMPARTMENT` values `v` to multiply the derivative of state variables `state_0, state_1, ..., state_n` in associated kinetic scheme blocks. Fixes #838.
-
- Aug 29, 2019
-
-
* Change VERSION to 0.2.3-dev.
-
New version to capture fix to Arbor's installed CMake config module and optional libunwind dependance.
-
Benjamin Cumming authored
* libunwind is optional, and off by default. * fix description of CMake option
-
* Replace derivation of cylindrical cable equation formula with S–L approach. * Relate analysis of cylindrical form to Rallpack 1 in a separate section. * Add analysis of tapered cable case. * Unify discussion of cable with constant electrical properties but varying geometry. * Add section describing how one can well-estimate the inter-cell flux given point samples or CV means for the membrane voltage.
-
Benjamin Cumming authored
Refactor the example code so that all examples have a single C++ source file, and the source file, source path and executable all have the same name. Fixes #847.
-
-
- Aug 26, 2019
-
-
-
* Set VERSION to 0.2.1. * Add .zenodo.json metadata file which will hopefully ease our auto-DOI-publishing woes. * Remove .json from .gitignore.
-
- Aug 21, 2019
-
-
Add support for parsing and processing `LINEAR` blocks: Changes: * `SOLVE` expressions can be called from inside an `INITIAL` block, but only if they are solving a linear system * Tilde expressions can now be either linear expressions or reaction expressions * Linear expressions need to be rewritten before being sent to the solver, this is done using `LinearRewriter` * The linear system is setup in `LinearSolverVisitor` fills the lhs and rhs of the symbolic matrix * The matrix is recued using `gj_reduce`, which now works on non-diagonal matrices. Fixes #839
-
- Aug 19, 2019
-
-
Benjamin Cumming authored
-
Fix `mc_cell_group.gpu_test`: use the nerst equations for the reversal potential calculation for `na`, `ca` and `k`
-
Benjamin Cumming authored
* Replace old `arb::morphology` class with new `arb::sample_tree` and `arb::morphology` types, where `arb::sample_tree` manages a set of morphology sample points and their topology, and `arb::morphology` presents a branch-based view over samples described by an `arb::sample_tree`. The new classes support morphologies with cable-like or spherical somata. * Supply a new conversion routine for forming a `arb::cable_cell` from a morphology, with support for both classes of soma. Fixes #835
-
- Aug 16, 2019
-
-
- wraps `partition_hint` struct for python - `partition_hint`struct in `load_balance.hpp` is adjusted in a way that in case of zero unsigned int `cpu_group_size`/`gpu_group_size` it is set to the default value (via setter/getter) - adds documentation for `partition_hint` - adds testing for `domain_decomposition` including `partition_hint` (in unit and unit_distributed) - adds `partition_hint` in example `ring.py` - corrects `config.cpp` (and doc) to test for `ARB_GPU_ENABLED` instead of `ARB_WITH_GPU` Fixes #776 Addresses #799, #769
-
- Aug 15, 2019
-
-
Add modcc support for processing `CONSERVE` statements in `KINETIC` blocks. The `KineticRewriter` remains unchanged. The `SparseSolverVisitor` is modified. If one or more `CONSERVE` statements are present, corresponding rows in the symbolic matrix, which would otherwise represent differential equations, are replaced by the content of the conserve statements. Addresses #828 and #830
-
- Aug 12, 2019
-
-
* add interface for Python users to query schedule event times * add schedule event tests and assertions * add schedule events to doc
-
- Aug 09, 2019
-
-
Remove managed memory from the GPU stack data type that is used for spike collection on the GPU back end. Now the stack has explicit synchronization points, that are called from the host, for: * copying stack state from GPU to host memory where it can be interrogated. * resetting the stack state on the GPU to empty. Fixes #810.
-
- Aug 08, 2019
-
-
Also remove vestigial segment::length_constant() virtual function. Fixes #831.
-
- Jul 29, 2019
-
-
Nora Abi Akar authored
Addresses #824. * Add modcc support for `CONSTANT` blocks in NMODL, subject to the following constraints: - Any identifier declared in the `CONSTANT` block may only be used after that declaration (including within the `CONSTANT` block itself). - Units in the `CONSTANT` block are parsed but not processed. - Values assigned to identifiers inside the `CONSTANT` block may only be signed numeric literals, or an already declared constant, possibly preceded by unary minus.
-
Sam Yates authored
* Collect cable cell parameter setting structures into `include/cable_cell_param.hpp`. * Restructure electrical specifications (axial resistance, membrane capacitance) and ionic concentrations and reversal potentials on cable cells, so that these can be specified with a global default, per-cell defaults, and per-segment values. * Allow reversal potentials to be set by a mechanism of a new kind 'revpot', which are prohibited from maintaining state or writing to any shared state other than ionic reversal potentials. * Specify reversal potential mechanisms as global defaults or per-cell. Reversal potential mechanisms may not be specified at the level of a segment in order to avoid non-linearities arising from the discretization. * Supply default cable cell parameter data that matches NEURON values (this is _not_ used by default). * Replace the d_lambda calculation with one that approximates more faithfully the effect of tapered segments, and which will use the electrical values inherited by cell or global defaults. * Supply a bundled mechanism 'nernst' that replaces the previous hard-coded Nernst potential calculation, for use (together with ion rebinding) in the new ion description scheme. * All ions used in a cable_cell model must be present in the top level global parameter table, together with their charge. * Extend semantics of external variables in modcc, to permit direct assignment (as opposed to just += or -=.) * Extend `util::binary_search_index` to allow for a projection functional analagous to other range utilites. * Add documentation on the cable cell API, sketching over many of the details, but describing in particular the interface changes for default parameters and reversal potential behaviour. * Adjust pyarb for new API * Hard code global cable cell properties in the python recipe shim to useneuron default parameters.
-