New revpot and per-cell/segment parameters. (#823)
* 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.
Showing
- arbor/CMakeLists.txt 2 additions, 1 deletionarbor/CMakeLists.txt
- arbor/backends/gpu/shared_state.cpp 52 additions, 69 deletionsarbor/backends/gpu/shared_state.cpp
- arbor/backends/gpu/shared_state.cu 12 additions, 38 deletionsarbor/backends/gpu/shared_state.cu
- arbor/backends/gpu/shared_state.hpp 21 additions, 23 deletionsarbor/backends/gpu/shared_state.hpp
- arbor/backends/multicore/mechanism.cpp 1 addition, 1 deletionarbor/backends/multicore/mechanism.cpp
- arbor/backends/multicore/shared_state.cpp 53 additions, 73 deletionsarbor/backends/multicore/shared_state.cpp
- arbor/backends/multicore/shared_state.hpp 21 additions, 21 deletionsarbor/backends/multicore/shared_state.hpp
- arbor/cable_cell.cpp 55 additions, 0 deletionsarbor/cable_cell.cpp
- arbor/cable_cell_param.cpp 67 additions, 0 deletionsarbor/cable_cell_param.cpp
- arbor/fvm_layout.cpp 427 additions, 134 deletionsarbor/fvm_layout.cpp
- arbor/fvm_layout.hpp 13 additions, 4 deletionsarbor/fvm_layout.hpp
- arbor/fvm_lowered_cell_impl.hpp 46 additions, 18 deletionsarbor/fvm_lowered_cell_impl.hpp
- arbor/include/arbor/cable_cell.hpp 19 additions, 37 deletionsarbor/include/arbor/cable_cell.hpp
- arbor/include/arbor/cable_cell_param.hpp 157 additions, 0 deletionsarbor/include/arbor/cable_cell_param.hpp
- arbor/include/arbor/ion_info.hpp 0 additions, 11 deletionsarbor/include/arbor/ion_info.hpp
- arbor/include/arbor/mechanism.hpp 1 addition, 1 deletionarbor/include/arbor/mechanism.hpp
- arbor/include/arbor/segment.hpp 2 additions, 75 deletionsarbor/include/arbor/segment.hpp
- arbor/util/maputil.hpp 13 additions, 0 deletionsarbor/util/maputil.hpp
- doc/cpp_cable_cell.rst 260 additions, 0 deletionsdoc/cpp_cable_cell.rst
- doc/index.rst 1 addition, 0 deletionsdoc/index.rst
Please register or sign in to comment