Skip to content
Snippets Groups Projects
  1. Jan 26, 2022
    • Brent Huisman's avatar
      v0.6-rc (#1814) · cf99bdce
      Brent Huisman authored
      * bump version to v0.6-rc
      * Update `MANIFEST.in` and `scripts/run_python_examples.sh`
      * Update Release instructions `docs/contrib/release.rst`
      * Fix missing quotes in `python/example/single_cell_nml.py`
      * Add testing to sdist creation in `ciwheel.yml`
      * Rename `basic.yml` to `test-everything.yml`
         * Remove Python examples step from matrix (mostly because plotting takes much CPU on macos)
         * change to build /w nml
         * add test of pip builds (`pip install` in addition to CMake builds)
            * Python examples are tested here, once is enough.
      cf99bdce
    • Thorsten Hater's avatar
      Remove footgun: Catalogue Lifetimes (#1807) · b01aa58b
      Thorsten Hater authored
      # Changes
      
      - `cable_cell_global_properties` now holds a catalogue directy
      - fixes for tests, examples, and python bindings accordingly
      
      # Linked Issues
      Fixes #1446 
      b01aa58b
  2. Jan 12, 2022
  3. Nov 15, 2021
  4. Oct 22, 2021
    • Nora Abi Akar's avatar
      Gap Junction mechanisms (#1682) · dc371e5d
      Nora Abi Akar authored
      Adds support for user-defined gap junction mechanisms. Fixes #1600.
      
      - API Change: Wrap `mechanism_desc` in one of `density`, `synapse`, `junction` to be able to differentiate the kind of placed mechanism between point and junction mechanisms. 
      - API Change: The `ggap` parameter of a `gap_junction_connection` renamed to `weight` and is not a unit-less parameter. 
      - Mechanism ABI change: New `peer_index` vector which stores the indices of the peer sites of a gap-junction-connection. New mechanism kind. 
      - Internal API change: `shared_state` no longer controls the gap junction current contribution, that is now handled in the mechanism callbacks.
      - Modcc change: Add `JUNCTION_PROCESS` and `v_peer` keywords to nmodl, the first to identify a gap-junction mechanism, the second to access the peer voltage of a gap-junction connection. Modify modcc to be able to compile nmodl and generate correct code.
      - Behavior change: gap-junctions now contribute to both the current and conductance of a CV as opposed to just the current.
      - Add new "gj" mechanism, to replace the built-in constant-conductance based linear gap-junction implementation.
      - Fix unit tests.
      - Fix python wrapper. 
      - Fix docs. 
      dc371e5d
    • Benjamin Cumming's avatar
      Add locset expressions for proximal and distal translation of locations (#1671) · 5cc7d4dc
      Benjamin Cumming authored
      Add `proximal-translate` and `distal-translate` locset expressions.
      
      Fixes #1662
      5cc7d4dc
  5. Oct 12, 2021
  6. Oct 08, 2021
  7. Oct 06, 2021
  8. Oct 04, 2021
  9. Aug 16, 2021
  10. Aug 10, 2021
  11. Jul 29, 2021
    • thorstenhater's avatar
      Implement mechanism ABI · ff12bb82
      thorstenhater authored
      Implements #1376.
      
      * Provide a common C linkage ABI for externally compiled mechanisms, for both CPU and GPU.
      * Remove mechanism type hierarchy (`concrete_mechanism` etc.), and move corresponding functionality to the back-end shared state objects. Mechanism catalogue is no longer indexed by type id.
      * Distinguish between SIMD optimal alignment and SIMD width with new `min_align` attribute. Mechanisms provide both pieces of information via ABI.
      ff12bb82
  12. Jul 27, 2021
  13. Jul 02, 2021
  14. Jun 29, 2021
    • thorstenhater's avatar
      Add S-Exp for CV Policies (#1511) · a297ff44
      thorstenhater authored
      1. All s-exp parsing has migrated to `arborio`
      2. CV policies can now be read from string as per #1334. This is needed for the GUI project.
      2. No longer can `arb::locset` and `arb::region` be constructed from mere strings
      2. We have `arborio::literals` to construct `region`s, `locset`s, and `cv_policy`s in the form of `_rg`, `_ls`, and `_cvp`.
      3. The `_lab` suffix now constructs an object that converts to `named` morphologies, rather than a simple string.
      4. Constructors of `region` and `locset` are now properly guarded
      5. Consequently, a lot of missing inheritance from `region_tag` and `locset_tag` was retrofitted.
      
      Closes #1334 
      Closes #1419 
      a297ff44
  15. Jun 18, 2021
    • Nora Abi Akar's avatar
      Labels instead of indices for placeable item identfication. (#1504) · e0e18976
      Nora Abi Akar authored
      New structs and types:
      * `cell_tag_type` (std::string): for labelling placeable items on a cell. The label refers to a number of items placed on a locset, equal to the number of locations in a locset. The number of locations in not always known to the user, so the previous way of using indices for items was no longer sufficient. 
      * `lid_selection_policy`: for allowing a user to select a single item from a group of items sharing a label. Currently only `round_robin` and `assert_univalent` are supported. 
      * `cell_local_label_type` and `cell_global_label_type`: for identifying the target and source of a connection or gap_junction connection. 
      * `cell_label_ranges`, and `cell_labels_and_gids`: for propagating information about the labelled items on the cell from the cell groups back to the simulation and communicator. 
      * `label_resolution_map` and `resolver`: for selecting an item (and retaining state) from a labelled group of items on a cell according to a user-selected policy.
      
      Changes to the model-initialization: 
      * The `communicator` now needs `label_resolution_maps` constructed from the cell group data in order to build the `connections` vectors. 
      * The `simulation_state` object handles the transfer of the information when it is constructed. 
      * Spike exchange at runtime remains unchanged, because `communicator::connections` remains unchanged. 
      
      Changes to cells, cell_groups and recipe:
      * `decor::place` expects a third label parameter, no longer returns an `lid_range`.
      * `lif`, `source`, and `benchmark` cells need source/target labels in their constructors. 
      * A `cell_group` needs to save data about the gid/labels/lid_ranges of each cell, to propagate back to the `communicator` constructor. 
      * Connections/gap junction connections are formed between {label, policy} pairs on cells instead of indices. 
      * `num_sources`, `num_targets`, `num_gap_junction_sites` deleted from `recipe`.
      
      Additional changes:
      * Add MPI wrapper for exchanging vectors of strings. 
      * Corresponding updates to unit tests, Python wrapper, C++ and Python examples, documentation.
      
      Fixes #1394
      e0e18976
  16. Jun 16, 2021
  17. May 17, 2021
  18. Apr 21, 2021
  19. Mar 30, 2021
  20. Mar 29, 2021
    • Nora Abi Akar's avatar
      Remove `gid` attribute of target of a connection, and local gap-junction site... · db0041a5
      Nora Abi Akar authored
      Remove `gid` attribute of target of a connection, and local gap-junction site of a gap-junction connection (#1467)
      
      * Change the type of the target of a `connection` from `cell_member_type` to `cell_lid_type`. The target cell's gid is always known in both the recipe and simulation.
      * Change the type of the local site of a `gap_junction_connection` from `cell_member_type` to `cell_lid_type`, and make it such that the first argument of the connection is the peer site, and the second the local site. The local cell's gid is always known in both the recipe and simulation.
      * Change the type of the target of an `event_generator` from `cell_member_type` to `cell_lid_type`. The target cell's gid is always known in both the recipe and simulation.
      * New `cell_spike_events` and `cse_vector` for `simulation::inject_events`.
      * Simplify recipe sanity checks and remove associated exception types. 
      * Fix unit tests, examples, docs
      db0041a5
  21. Mar 23, 2021
  22. Mar 17, 2021
    • Brent Huisman's avatar
      Port of Brunel example (#1404) · c326ab3b
      Brent Huisman authored
      * Add Python version of brunel.cpp example.
      * Enforce consistency in units: both C++ and Python APIs use unit `kHz` for all frequencies.
      * Align Python version `poisson_schedule` signature with C++ equivalent.
      * Update unit tests to suit API changes.
      * Update documentation to suit, along with minor additions related to networks and interconnectivity.
      * Add `brunel.py` to `basic.yml` tests
      c326ab3b
  23. Feb 18, 2021
    • Brent Huisman's avatar
      Tutorials: ring network (#1313) · 506ff916
      Brent Huisman authored
      * Tutorial ring network added. A few typos fixed, crosslinks fixed.
      * MPI tutorial added.
      * Improved SVG generation, added separate label scaling, increased default label size.
      * Bugfix: didnt generate cable region in gen-labels.py used in `concepts/morphology.rst`.
      * Termified Interconnectivity page.
      * Termified probe nomenclature page. Will be moved in [this PR](https://github.com/arbor-sim/arbor/issues/1353) from python/simulation to concepts/probes_samplers.
      506ff916
  24. Feb 17, 2021
  25. Feb 11, 2021
  26. Feb 03, 2021
    • thorstenhater's avatar
      Allow dynamically creating and loading of mechanism catalogue (#1287) · aa1b6f04
      thorstenhater authored
      First phase of dynamically loaded mechanism catalogues.
      
      - Add functionality to load and use catalogues from DSOs in Python and C++.
      - Add documentation and support scripts to build catalogues DSOs.
      - Re-factor CMakeLists.txt for mechanisms
      - Limitations
        - Needs (compatible, preferably identical) arbor sources when building catalogues
        - Can only work on MacOS and Linux (uses dlfnc)
      aa1b6f04
  27. Jan 14, 2021
    • Brent Huisman's avatar
      Docs: define branch, mlocation, cv default. (#1302) · b10238e0
      Brent Huisman authored
      * Used Sphinx glossary directive to create terms that can be referred to in `concepts/morphology.rst` and `concepts/labels.rst`.
      * Added note box on difference with Neuron, add source for NEURON cylinder discretisation
      * Parameters added to svg generation script: turn off colors, root
      * Fix cpp TOC duplication, match ordering in other sections.
      * State default cv policy
      * center/re -> midpoints
      * Clarify and remove compartment term
      b10238e0
  28. Jan 08, 2021
  29. Jan 05, 2021
  30. Dec 18, 2020
    • Nora Abi Akar's avatar
      Docs: Python examples (#1279) · 6ebfb3db
      Nora Abi Akar authored
      * Add 2 new examples to `python/examples` and their corresponding tutorials in the docs. 
          1. `single_cell_detailed.py` : a slightly more complex example using `single_cell_model`
          2. `single_cell_detailed_recipe.py`: equivalent to `single_cell_detailed.py` but using a recipe. 
      * Change `load_swc`-> `load_swc_arbor` for consistency.
      * Run Sphinx with specified PYTHON_EXECUTABLE.
      * Set PYTHONPATH env var in doc/CMakeLists.txt, such that it propagates correctly, including locally.
      * Build pyarb BEFORE html such that docs build can import arbor in Github Actions script.
      6ebfb3db
  31. Dec 14, 2020
    • Nora Abi Akar's avatar
      Expose global_properties in Python recipes (#1273) · 5fdfb02e
      Nora Abi Akar authored
      Extend Ptyhon recipe wrapper to support setting of global cell properties.
      
      * Rename `pyrecipe::get_probes` to `py_recipe::probes`
      * Remove `global_properties_shim` : It's easy to make mistakes with the class, as it holds a `mechanism_catalogue` and a `cable_cell_global_properties` which holds a pointer to the catalogue. This would likely have caused issues with the users.
      * Expose `py_recipe::global_properties`
      5fdfb02e
    • Benjamin Cumming's avatar
      Decor (#1235) · ac63809f
      Benjamin Cumming authored
      Make the `cable_cell` interface read only by passing the decorations
      to its constructor in a new `decor` type.
      
      C++ library
      * Remove the paint/place/set_default interface from `cable_cell`
      * Create a `decor` type that:
        * stores lists of paintings and placings
        * stores a set of cable cell parameters
        * uses the `paint`, `place`, `set_default` interface that was deprecated
          from `cable_cell`.
      * Create `paintable`, `placeable` and `defaultable` variants that are sum types
        over the respective types that can be painted, placed and defaulted.
      * Remove the overloaded `cable_cell::paint`, `cable_cell::place`,
        `cable_cell::set_default` methods to single methods that consume the sum types.
      
      Unit Tests
      * Many small changes because many many tests use cable cell API.
      * There were no `cable_cell` unit tests! Not such a big deal, since cable_cell
        is tested implicitly in so many other tests
        * but I added cable_cell tests: not much at the moment but will quickly fill
          up as we work on reading, writing, etc.                                                            
      
      Python
      * Wrap the new decor type.
      * Update cable cell type to reflect read only API.
      * Wrap the cv_policy types and implement the same operator overloading.
      ac63809f
  32. Nov 18, 2020
    • Sam Yates's avatar
      Expose diverse probes in Python API. (#1225) · 1bfe96bc
      Sam Yates authored
      Major changes in Python library and documentation:
      
      * Add global state (immutable after initialization) for the Python module that
        manages the mapping between probe metadata types and the method by which the
        corresponding [sample data can be collected and presented as Python objects.
        This is necessary for decoupling the implementation of the simulation wrapper
        from that of the various cable cell probe types.
      
      * Wrap each of the C++ cable cell probe types with a Python function that
        returns a `probe_info` object.
      
      * Add code for converting and accumulating C++ probe metadata and sample
        data, registered in the module global state against the metadata type info.
      
      * Make the `arbor.simulator` object responsible for recording all spike and
        sample data, with corresponding new methods.
      
      * Use NumPy arrays and structured datatypes for returning spike and
        sample data.
      
      * Place Python schedule proxies under an abstract interface so that consumers
        of the proxies can be made generic over schedule types.
      
      * Add unit tests for the `arbor.simulator` class and its new functionality,
        including distributed spike collection.
      
      * Rework all Python API documentation concerning probes, sampling, and spike
        recording; add information on newly exposed cable cell probe addresses.
      
      * Add new python example `single_cell_recipe.py` which is a generic recipe
        version of `single_cell_model.py`.
      
      * Adjust other code in the wrapper and examples to accommodate these changes.
      
      Minor changes in Python library:
      
      * Add equality tests for `arbor.location` and `arbor.cable` Python classes.
      
      * Use the `py::` namespace shorthand more often in the Python wrapping sources.
      
      * Add an implicit conversion for a pair of numbers to `arbor.cell_member`, so
        that e.g. probe ids can be specified simply as `(gid, index)`.
      
      * Add an implicit conversion from a tuple to `arbor.mpoint` so that a
        morphological point can be specified simply as `(x, y, z, radius)`.
      
      * Modify the interface to `arbor.regular_schedule` so that the overloads
        correspond more closely to the C++ API. In particular,
        `arbor.regular_schedule(dt)` now describes a schedule with times 0, dt, 2*dt,
        etc.
      
      Minor changes in C++ library:
      
      * Change test in FVM lowered cell implementation and exception message for
        `bad_source_description`: assert number of detectors is exactly the number
        of sources promised by the recipe.
      
      * Add comment describing `probe_metadata` object in `sampling.hpp` which
        asserts that the type and value of probe-specific metadata completely
        determines the correct interpretation of sampled data provided to a callback.
      1bfe96bc
  33. Nov 17, 2020
  34. Nov 10, 2020
  35. Oct 09, 2020