Skip to content
Snippets Groups Projects
  1. Feb 04, 2020
    • Benjamin Cumming's avatar
      Python Interface (#948) · cfad427a
      Benjamin Cumming authored
      A big update that wraps over 90% of the public C++ API, with enough functionality to let Python users to perform useful modelling.
      
      Key features
      - wrapping of cable cell functionality
        - user-defined explicit compartmentalisation not supported
      - `single_cell_model` abstraction unique to the Python wrapper that simplifies developing and testing single cell models
      - one-dimensional cell builder for Python wrapper that simplfies building cells that 
        - in and of itself limited in scope, but a very useful example of mapping a richer morphology builder onto `sample_tree`s.
      - parsing of region and location expressions from strings
        - implements a generic s-expression parser that we can use for other purposes later
  2. Jan 24, 2020
    • Sam Yates's avatar
      Replace cable cell discretization. (#941) · b7361a1f
      Sam Yates authored
      Replace branch/cable-based cell representation and discretization with
      free specification of control volumes over the cell morphology.
      
      Implements functionality required for issues #859 and #732, and the
      reworking of inter-CV conductance computation addresses issue #635,
      although there is possible room for improvement by treating CV voltages
      as averages rather than point estimates.
      
      * Remove arbor/segment.hpp and segment-based representation in `cable_cell`.
      * Add a new discretization policy `cv_policy_every_sample` that replaces
        the `compartments_from_discretization` flag in the `cable_cell`
        constructor.
      * Remove use of `cable_cell::num_compartments()` in example code (see
        issue #940).
      * Add command line argument to `single_cell` example to specify number
        of CVs per branch.
      * Replace fvm layout `fvm_discretization` with new representation
        `fvm_cv_discretization`, which in turn wraps a `cv_geometry` object
        representing CVs as cables w...
  3. Oct 30, 2019
    • Benjamin Cumming's avatar
      cable_cell segment interface read-only (#889) · 49264f60
      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 
      49264f60
  4. Sep 23, 2019
    • Benjamin Cumming's avatar
      Cable cell (#865) · aaa42b77
      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.
      aaa42b77
  5. 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 ...
  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
  7. 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
  8. Jun 12, 2019
    • 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