Skip to content
Snippets Groups Projects
  1. Aug 10, 2021
  2. 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
  3. 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
  4. 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
  5. 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`
  6. 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.
  7. Oct 09, 2020
  8. Oct 08, 2020
  9. Oct 05, 2020
    • Brent Huisman's avatar
      Docs restructure for 0.4 (#1167) · 67b178cb
      Brent Huisman authored
      * Synced pages between Concepts, Python API and C++ API wherever possible
          * Recipe pages conform between the three section (concepts, python, c++)
          * Cell, Cable Cell and Cell * pages are rearranged and provided with some copy explaining the relationship between them.
      * Moved Python API out of Concepts
      * Renamed Concepts "How does Arbor work?"
      * Added Python Module Index plus mock import of Arbor for RTD build (unfortunately won't show there)
      * Broke out Interconnectivity (synapses) page.
      * Reworked Single Cell Model page into a quick start, with lots of cross referencing.
      * Tweaked logo.
      * Added Spack to install options.
      * Updated blurb.
      * Documentation now follows EU capitalization rules.
      * Assorted typofixes
  10. Aug 27, 2020
    • Benjamin Cumming's avatar
      Pydoc (#1122) · 23a24b5a
      Benjamin Cumming authored
      This PR adds a bunch of high-level docs for concepts related to single cell models.
        * morphologies
        * labels (region and locset expressions)
        * mechanisms
        * cable cells
      
      It adds some python scripts to the `doc` path, which are called during documentation building to generate images of cell morphologies, regions and locsets that are generated in a separate script that uses the Arbor Python API.
      
      The docs are not complete: the cable cell and mechanism docs are unfinished, and the tutorial section needs to build on these concepts to give more detailed step by step examples.
  11. Sep 25, 2019
    • akuesters's avatar
      Python feature probes and samples (#872) · 8e985d40
      akuesters authored
      Adds
      
      * to `recipe.cpp`: 
      `num_probes` and `get_probe` with helper function `cable_probe(kind, id, location)`
      * `sample.cpp`: 
      `sample` type with attributes `time` and `value`; a `sampler` with `samples()` and `clear()` and helper functions `attach_sampler(sim, dt)` for adding all probes as well as `attach_sampler(sim, dt, probe_id)` for adding one probe
      * `morphology.cpp`: 
      `location` as `arb::mlocation` with `branch` and `position` 
      * corresponding docs and example
      * update to new cable cell semantics in c++ validation test
      
      fixes #762
  12. Aug 12, 2019
  13. 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
  14. Feb 27, 2019
    • Benjamin Cumming's avatar
      Documentation: update install guide. (#699) · 49d87aba
      Benjamin Cumming authored
      Update the installation guide to reflect the latest supported tool,
      compiler and library versions.
      
      Remove the Python docs, because they documented features that have not
      been implemented yet. The Python docs can be added incrementally as
      features are implemented.
      
      Start work on oupdating the documenetation for hardware interfaces and
      domain decomposition.
  15. Feb 26, 2019
    • akuesters's avatar
      Python Documentation PR (#687) · fa7ea458
      akuesters authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Update documentation for Python.
      
          splits the conceptual model ideas from the C++ docs into their own section
          has C++ and Python docs for recipes, domain decomposition, etc.
      
      fixes #667
      
      Added the following documentation (structure):
      
      GETTING STARTED:
      
          Installing Arbor/Requirements/Optional Requirements/Python
          Installing Arbor/Building and Installing Arbor/Python Front End
      
      MODEL BASICS:
      
          Overview
          Common Types
          Recipes
          Domain Decomposition
          Simulations
      
      PYTHON:
      
          Overview
          Common Types
          Recipes
          Domain Decomposition
          Simulations
      
      DEVELOPERS:
      
          Python Profiler
          Python Unit Testing
      
      GETTING STARTED has two added sections of optional requirements using python and how to build the python front end.
      
      MODEL BASICS describes Arbor's concepts in general (independent of programming language), thus general information on concepts in C++ API was moved here/ added.
      
      PYTHON describes Arbor's python frontend in the same structure as MODEL BASICS and C++ API ( needs updates as soon as features are added/changed in new python PR).
      
      DEVELOPERS section has two added sections for meter management and unit testing with python front end.
      
      Further, some corrections in existing documentation (for obvious errors, e.g. duplicate text, not ending sentences) and referencing sections were done.
      fa7ea458