Skip to content
Snippets Groups Projects
  1. 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.
  2. Aug 26, 2020
  3. Aug 13, 2020
  4. 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
  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 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.
  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. Apr 26, 2019
  8. Mar 04, 2019
    • noraabiakar's avatar
      Add gap junction and cell documentation (#706) · 3cf0554b
      noraabiakar authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Add gap junctions and improve general model overview in docs.
      
      * Replace Arbor Model::Common Types with Arbor Model::Concepts, that introduces the concept of cells, connections and gap junctions. 
      * Add gap junction documentation to cpp:recipe
      * Document the implicit rule forcing cells connected by gap junctions to be in the same cell group.
      * Add documentation that discusses core concepts in Arbor models.
      3cf0554b
  9. Mar 01, 2019
    • Benjamin Cumming's avatar
      Hardware API documentation (#707) · 1c89fbbd
      Benjamin Cumming authored
      Update Hardware API documentation
      
      * split the domain decomposition and hardware API docs into separate pages
      * update hardware API to reflect new *libarbor* and *libarborenv*
      * add basic documentation for `optional`, `any` and `unique_any` types.
  10. 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.
  11. 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
    • akuesters's avatar
      Python PR #667 (#668) · fa549238
      akuesters authored and Benjamin Cumming's avatar Benjamin Cumming committed
      First step towards the Python front end.
      
      This commit sets up the structure of the python implementation
      * directory structure
      * git submodule for pybind11
      * best practices for making bindings with pybind11
      * unit testing for the python front end
      
      It implements the following features in the Python front end
      * execution contexts
      * gpu detection
      * thread count detection
      * MPI initialization helpers.
      
      Fixes #667.
      fa549238
  12. Sep 17, 2018
    • noraabiakar's avatar
      Dry-run mode (#582) · a2b39382
      noraabiakar authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Dry-run mode: 
      * An implementation of distributed_context that is used to mimic the performance of running an MPI distributed simulation with n ranks.
      * Verifiable against an MPI run with the same parameters. 
      
      Implementation: 
      * Describe the model on a single domain (tile) and translate it to however many domains we want to mimic using arb::tile and arb::symmetric_recipe. This allows us to know the exact behavior of the entire system by only running the simulation on a single node.
      * Mimic communication between domains using arb::dry_run_context
      
      Example: 
      * dryrun in example/ is a verifiable example of using dry-run mode with mc_cells
      
      Other:
      * Documentation of dry-run mode 
      * unit test for dry_run_context 
      a2b39382
  13. Aug 30, 2018
    • Benjamin Cumming's avatar
      Opaque Public Context (#576) · d637c8bc
      Benjamin Cumming authored
      Make the execution context presented to users an opaque handle, moving all implementation of the gpu, thread and distributed contexts into the back end.
      
      * move `execution_context` and `distributed_context` definitions to the back end
      * create `execution_context` handle called `context` in the public API
      * provide `make_context` helper functions that build different context configurations (default, user-specified local resources, with MPI)
      * update documentation for all parts of the public API that touch contexts
      * move `distributed_context` docs to the developer documentation (from the public API docs)
  14. Jun 01, 2018
    • Benjamin Cumming's avatar
      Runtime distributed context (#485) · 5fde0b00
      Benjamin Cumming authored and Sam Yates's avatar Sam Yates committed
      Move from choosing the distributed communication model from a compile time choice (the old `arb::communication::communication_policy` type) to a run time decision.
      
      * Add `arb::distributed_context` class that provides the required interface for distributed communication implementations, using type-erasure to provide value semantics.
      * Add two implementations for the distributed context: `arb::mpi_context` and `arb::local_context`.
      * Allow distribution over a user-supplied MPI communicator by providing it as an argument to `arb::mpi_context`.
      * Add `mpi_error` exception type to wrap MPI errors.
      * Move contents of the `arb::communication` namespace to the `arb` namespace.
      * Add preprocessor for-each utility `ARB_PP_FOREACH`.
      * Rewrite all examples and tests to use the new distributed context interface.
      * Add documentation for distributed context class and semantics, and update documentation for load balancer and simulation classes accordingly.
      
      Fixes #472
      5fde0b00
  15. Apr 11, 2018
    • Ben Cumming's avatar
      Domain decomposition and simulation C++ API docs (#471) · 4c742a57
      Ben Cumming authored and Sam Yates's avatar Sam Yates committed
      Add two new documentation pages for the C++ API
      
      * Add domain decomposition page that covers `domain_decomposition`, `node_info` and `partition_load_balance`.
      * Add simulation page that describes `arb::simulation` API interface.
      * Fix some small typos elsewhere in the docs.
      * Use `std::move` when adding spike callbacks to `arb::simulation` (useful if callbacks are stateful).
      4c742a57
  16. Apr 05, 2018
    • Ben Cumming's avatar
      Add C++ docs for recipe (#461) · bc6fcffd
      Ben Cumming authored and Sam Yates's avatar Sam Yates committed
      Add some C++ API documentation.
      
      * Create C++ API section in docs.
      * Document `arb::recipe`: both a class reference along with more explanatory text and best practices guide.
      * Add some class documentation of basic types required to understand recipe definition.
      * Some in-code comment clean up.
      * Change `arb::cell_kind` from a vanilla enum to a scoped enum.
      bc6fcffd
  17. Mar 29, 2018
  18. Mar 27, 2018
    • Ben Cumming's avatar
      Installation Guide (#459) · 0cf65a4c
      Ben Cumming authored
      Added an installation guide to the Read The Docs
      Removed the outdated build/install information from README.md
      Link from README to Read The Docs
      Updated the splash page for Read The Docs
      0cf65a4c
  19. Mar 16, 2018
    • Sam Yates's avatar
      SIMD wrappers for Arbor generated mechanisms. (#450) · 2dff9c41
      Sam Yates authored
      This provides a bunch of SIMD intrinsic wrappers as a precursor to the SIMD printers.
      
      The aim is that the SIMD printer can be agnostic regarding the particular vector architecture.
      
      The design is based rather loosely on the proposal P0214R6 for C++ Parallelism TS 2. The transcendental function implementations are adapted from the existing SIMD architecture-specific code, which in turn are based on the Cephes library algorithms.
      
      The custom CSS for the html documentation have been tweaked.
      2dff9c41
  20. Mar 15, 2018
    • Ben Cumming's avatar
      Multithreading friendly profiler (#447) · 1e461b1b
      Ben Cumming authored and Sam Yates's avatar Sam Yates committed
      Replace the profiler with a simpler design that works for nested multi-threaded regions.
      
      * Replace hierarchical profiler accounting with strictly exclusive regions.
      * Make tree grouping of profile data a presentation concern.
      * Uncouple profiler semantics from Arbor classes such as `model`.
      * Add thorough documentation for the new profiler to the library documentation.
      1e461b1b
  21. Sep 01, 2017
    • Sam Yates's avatar
      New sampling API implementation. (#335) · 8739fd55
      Sam Yates authored
      Towards resolution of issue #283.
      
      * Replace probe/sample infrastructure with new API as outlined in the `sampling_api.rst` documentation.
      * Separate `cell` probe information from `cell` description object.
      * Add `--list` option to `tsplot`, to summarize available time series for plotting together with their metadata.
      * Add `--sample-dt` option to validation tests.
      * Change validation time series comparison behaviour: linf distance metric now estimated by comparing reference data points against linearly interpreted simulation samples, rather than the other way around.
      * Add utility class `any_ptr` which allows lightweight and type-checked access to a type-erased pointer.
      * Replace `singleton_recipe` with two simple recipe base classes used for unit and validation tests, in `tests/simple_recipes.hpp`.
      * Simplify RSS cell implementation.
      * Add statistical functions for testing of probabilistic methods in `tests/unit/stats.hpp` (and .cpp):
         * simple summary stats class;
         * Kolmogorov–Smirnov one-sided statistic and CDF;
         * approximate Poisson CDF.
      * Simplify and refactor miniapp `sample_trace` code.
      * Add new utility class `handle_set` for managing a collection of integer handles. (Near-simplest implementation.)
      * Relax const-ness constraints on `transform_iterator`.
      8739fd55
  22. Aug 24, 2017
    • Ben Cumming's avatar
      Basic Sphinx Documentation (#328) · 610fd857
      Ben Cumming authored and Sam Yates's avatar Sam Yates committed
      Adds support for building documentation with Sphinx from reStructuredText-formatted files in the `doc` subdirectory. Automatic building has been verified with ReadTheDocs.
      
      * Add basic documentation to the `doc` path.
      * Use a git submodule and associated CMake to pull in ReadTheDocs theme at configuration time.
      610fd857