- Aug 29, 2019
-
-
* 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.
-
- Jul 15, 2019
-
-
Nora Abi Akar authored
Addresses issues #814 and #815. * Change the discretization so that a spherical soma comprises its own CV. * Modify the `div_compartment_integrator` to accommodate the single CV soma, adjusting the discretization of the most proximal branches, adding a half-size CV attached to the soma, so as to leave the remainder of the discretization the same. * Rename the confusing `ncomp` to `ncv` inside the discretization code.
-
- Jul 10, 2019
-
-
Sam Yates authored
Implement implicit derivation of mechanisms. * When a mechanism of the form "foo/param=value,..." or "foo/newion" is requested from a mechanism catalogue, attempt to perform a derive the information or override set from the mechanism "foo" using the given global parameter settings and/or ion remappings given in the name. * Split mechanism catalogue implementation into a private catalogue state with non-throwing behaviour and without any implicit mutation, with mechanism_catalogue methods responsible for throwing any generated errors, with the aim of avoiding throw/catch in expected program flow. Implements #807.
-
- Jul 05, 2019
-
-
* correct doc for meter_report and small word fixes * shift make_report to next section
-
Benjamin Cumming authored
Remove the dead `cell_connection_shim` from the python wrapper. Fix the connection printer to take an `arb::cell_connection` argument, to fix a runtime python crash caused by passing an `arb::cell_connection` where a `cell_connection_shim` was expected.
-
- Jul 03, 2019
-
-
Wraps the `meter_manager` with - the constructor - `start(ctx)` - `checkpoint(name, ctx)` - `checkpoint_names` - `times` and the `meter_report` with - `make_meter_report(meter_manager, ctx)` Fixes #765
-
- Jul 02, 2019
-
-
Add docs for Python wrapper to ReadTheDocs: - Overview, Common Types, Hardware Management, Recipes, Domain Decomposition, Simulations, Metering - Installing Arbor: Optional Requirements (Python), Buidling and Installing (Python Frontend), and Installation (Python Module) Missing (, since not implemented yet): - probes - arbor-sup - hint maps in domain_decomposition - reset, events, empty schedule in event_generator Also does not cover unit testing (since doc is user-centric). Makes also defaults and units in wrapper consistent. Fixes #766
-
Add missing check of whether to use direct or indirect indexing for simd procedure calls. fixes #804
-
Address inconsistencies in unit conversions between current updates, initialization, ionic currents etc. Fixes issues #793 and #798. * Correct units in comments for ion state iX_ to a current density. * Remove conversion factor for NMODL current densities [mA/cm²] to Arbor current densities [A/m²] from layout weight: from the point of view of Arbor, mechanisms now write in units that Arbor uses natively. * Remove weight_ as a magic modcc variable; applying weight_ is now performed directly by code generated by printers. * Change IndexedVariable interface: remove redundant index_name; remove 'op'. Whether external data is accumulated or assigned is now a property of the corresponding sourceKind. * Conversion factors for NMODL <-> Arbor are collated in printerutils.cpp, determined by the external data sourceKind. * Permit direct assignment of external data, as opposed to a weighted sum. This behaviour will be required for reversal potential handling...
-
- Jun 27, 2019
-
-
Sam Yates authored
* Add `::arb::` decoration to `fvm_value_type` and `fvm_index_type` in modcc simd cprinter output. * Return stream from unwind stack trace printer. Fixes #801 and also a long standing (but low impact) bug in unwind code.
-
Sam Yates authored
* Correctly decorate required names from arb:: namespace. * Put the unit test mechanisms in the 'testing::' namespace, to exercise this functionality.
-
- Jun 25, 2019
-
-
Sam Yates authored
Building validation data with python2 can raise an import error for `builtins`. * Catch import error, and import from `__builtin__` instead.
-
- Jun 24, 2019
-
-
Benjamin Cumming authored
Support for recording spikes generated by a simulation in the Python wrapper * Implement a `spike_recorder` that holds a shared pointer to a `std::vector` of spikes, and a callback for the `arb::simulation` spike recording API. * Add `python/example/ring.py` that creates a ring network, then records and prints spikes. * Some fixes to get the full `recipe` -> `domain_decomposition` -> `simulation` -> `spikes` workflow to work * always use default `global_parameters`: user customization of global parameters for cable cells can wait until the ion species interface is finished. * change the Python recipe interface for `recipe::connections_on` to use `pybind11::objects` because of shim. * Some small improvements to error and help messages. Fixes #764
-
- Jun 20, 2019
-
-
Benjamin Cumming authored
-
- Jun 17, 2019
-
-
* Make global parameters and ion rebindings part of the instantiate interface, rather than insist that all concrete mechanisms implement these as methods. * Mechanism catalogue instance() returns a pair, comprising the concrete mechanism for the requested backend, together with the override data. * Extend catalgoue derive() method to take a list of old ion name -> new ion name remappings for a mechanism. * Add exceptions for ion remapping errors, and check for these errors. * Add convenience function for reparameterizing a mechanism with a single ion dependency over other ions. (This will be used for the future nernst pre-supplied mechanism.) * Add unit tests for: chained renamings of ion names across multiple derivations; correct shared state ion assignment after renamings; ion remapping exceptions; parameterize_over_ion.
-
- Jun 14, 2019
-
-
* cmake/FindUnwind.cmake used the wrong variable (caused by commit ad1c78ab) * CMakeLists.txt seems to use wrong syntax for providing a compiler define of `WITH_UNWIND` (used in `arbor/util/unwind.cpp`)
-
- Jun 12, 2019
-
-
Benjamin Cumming authored
Fixes #782 * consistent formatting of strings returned by `__repr__` and `__str__` for wrapped types * rename enum wrappers to be less verbose, where it makes sense.
-
Benjamin Cumming authored
Add full wrappers for - `lif_cell` - `spike_source_cell` - `benchmark_cell And an opaque wrapper for cable_cell with a helper function that generates a random morphology identical to the ones in the nsuite benchmarks. Fixes #767.
-
Wrap `arb::simulation` type and interface for running `run()`, resetting `reset()`, and `set_binning_policy(policy, bin_interval)`. Wrap `enum binning_kind`, used to set event binning on `simulation` API. Fixes #763
-
Extended USEION VALENCE support. * Augment modcc parser to accept identifier or signed integer after VALENCE. * Treat identifer after VALENCE as global scalar, tied to ionic charge. * Add ionic charge field to mechanism ion parameter pointers, replacing scalar in shared state with a length-1 array. * Verify presence of ion name and check ion charge against numeric valence in mechanism info when discretizing in `fvm_build_mechanism_data`. * Pass ion info, coalesce_synapse global state to `fvm_build_mechanism_data` just via cable cell global properties. * Add more unit-test only mechanisms (test_ca_read_valence, test_cl_valence). * Add unit tests for valence verification and reading into mechanism state (multicore only). * Update existing unit tests for new interfaces. Implements #780.
-
- Jun 07, 2019
-
-
* Change occurances of 'ionKind' to corresponding string values in test_parser.cpp. * Add unit-modcc to travis script. Fixes #775.
-
Domain decomposition in python wrapper * functions: `partition_load_balance` * types: `group_description` and `domain_decomposition` Also includes * remove comment that `gid` in a `group_description` must be sorted. * a host of small clean ups of python wrapper Fixes #761
-
- Jun 05, 2019
-
-
akuesters authored
clean up stringification in python wrappers
-
Benjamin Cumming authored
-
akuesters authored
move python wrapper for schedules to their own files
-