Skip to content
Snippets Groups Projects
  1. Jul 29, 2019
    • Sam Yates's avatar
      New revpot and per-cell/segment parameters. (#823) · fd4f4def
      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.
  2. Jul 15, 2019
    • Nora Abi Akar's avatar
      Make the soma a separate CV (#816) · 7a6c15f5
      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.
      7a6c15f5
  3. Jul 10, 2019
    • Sam Yates's avatar
      Implement implicit derivation of mechanisms. (#817) · 54b6b68c
      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.
  4. Jul 05, 2019
  5. Jul 03, 2019
    • akuesters's avatar
      Python wrapper: profiler (#796) · 92620aa3
      akuesters authored and Benjamin Cumming's avatar Benjamin Cumming committed
      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
      92620aa3
  6. Jul 02, 2019
    • akuesters's avatar
      Python wrapper: documentation (#799) · 1f4eacd2
      akuesters authored and Benjamin Cumming's avatar Benjamin Cumming committed
      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
      1f4eacd2
    • Nora Abi Akar's avatar
      pass correct index to simd procedure calls (#805) · 74df9f5a
      Nora Abi Akar authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Add missing check of whether to use direct or indirect indexing for simd procedure calls.
      
      fixes #804
      74df9f5a
    • Sam Yates's avatar
      Rejig weight and conversions for modcc (#800) · f9f34ccf
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      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...
      f9f34ccf
  7. Jun 27, 2019
  8. Jun 25, 2019
  9. Jun 24, 2019
    • Benjamin Cumming's avatar
      Python spikes (#788) · 726328c4
      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 
      726328c4
  10. Jun 20, 2019
  11. Jun 17, 2019
    • Sam Yates's avatar
      Implement mechanism ion rebinding. (#786) · b1b584fa
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      * 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.
      b1b584fa
  12. Jun 14, 2019
  13. Jun 12, 2019
    • Benjamin Cumming's avatar
      Uniform str() and repr() in python type wrappers (#785) · 78359ad7
      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.
      78359ad7
    • Benjamin Cumming's avatar
      Python wrappers for cell types (#784) · 9bd29a9b
      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.
      9bd29a9b
    • akuesters's avatar
      Py feature simulation (#778) · 9769c679
      akuesters authored and Benjamin Cumming's avatar Benjamin Cumming committed
      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 
      9769c679
    • Sam Yates's avatar
      Extend and implement extended VALENCE semantics (#781) · 76d10ff1
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      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.
      76d10ff1
  14. Jun 07, 2019
  15. Jun 05, 2019
  16. Jun 04, 2019
    • akuesters's avatar
      Py feature recipe wo probes (#768) · a6ddd515
      akuesters authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Fixes #760
      
      Wraps arbor recipe (without probes, i.e. num_probes, probe_info, get_probe) including 
      
      - cell_connection, 
      - gap_junction_connection, 
      - recipe with
        - num_cells
        - cell_description
        - cell_kind
        - num_sources
        - num_targets
        - num_gap_junctions_sites
        - event_generators
        - connections_on
        - gap_junctions_on
        - global_properties
      - enum cell_kind in `identifiers.cpp`
      a6ddd515
  17. May 29, 2019
  18. May 23, 2019
  19. May 20, 2019
  20. May 17, 2019
    • Nora Abi Akar's avatar
      modcc fixes (#745) · e84a0e36
      Nora Abi Akar authored
      * Fixes segmentation faults; output compiler errors instead.
      * Consume units if provided in function/procedure prototypes or after function prototype.
      * Consume UNITSON/UNITSOFF.
      * Consume and store VALENCE as an ion property.
      e84a0e36
  21. May 09, 2019
  22. May 07, 2019
    • Sam Yates's avatar
      Add conductivity to implicit voltage solve step for stability. (#735) · e07f64fa
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Changes implicit solve step from:
      > solve (c/δt + L) v' = c/δt v - J
      
      to
      > solve (c/δt + g + L)v' = (c/δt +g) v - J
      
      where _c_ is capacitance, _g_ is membrane conductance, _J_ is membrane current.
      
      * Compute conductivity contribution for mechanisms from symbolic d/dv of current contribution (extracted from linearity test.)
      * Add new modcc 'source kind' for conductivity; tie to `vec_g_`.
      * Add conductivity field to fvm shared state.
      * Include conductivity in matrix assemblies for solution.
      
      Fixes #633.
      e07f64fa
  23. Apr 26, 2019