Skip to content
Snippets Groups Projects
  1. Oct 09, 2020
  2. Oct 08, 2020
  3. Oct 07, 2020
  4. Oct 06, 2020
  5. Oct 05, 2020
    • Brent Huisman's avatar
      Update Python examples (#1166) · d3e99c23
      Brent Huisman authored
      * Python examples: Updated to use region expressions (quotes)
      * Python examples: Uniform plotting
      * Python examples: Removed tutorial directory (example roughly matches python/example/single_cell_model.py)
      * Python examples: Rewrote flat_cell_builder() to segment_tree()
      d3e99c23
    • 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
      67b178cb
    • Benjamin Cumming's avatar
    • Sam Yates's avatar
      Tighten SWC requirements, comments. (#1170) · 4339ffed
      Sam Yates authored
      * Remove contiguous numbering requirement from 'strict' mode SWC
      parsing, as it is not necessary for correct interpretation as a segment
      tree.
      * Describe in the swcio.hpp header how (strict) swc data is interpreted
      as a segment tree.
      * Demonstrate in unit tests that out-of-order and non-contiguously
      numbered records are valid for `parse_swc`.
      * Add unit test for `as_segment_tree`.
      4339ffed
  6. Oct 01, 2020
  7. Sep 30, 2020
    • Sam Yates's avatar
      New SWC parser broke `load_swc_allen`. (#1165) · 09e6e1b5
      Sam Yates authored
      * Minor output formatting fix for `swc_record`.
      * Modify the Python `load_swc_allen` implementation to cope with SWC
      record ids not necessarily being contiguous, and with SWC record parent
      ids corresponding to record ids, not 0-based indices.
      09e6e1b5
  8. Sep 29, 2020
  9. Sep 28, 2020
    • Sam Yates's avatar
      Rewrite SWC reader code. (#1127) · 11a6ef6d
      Sam Yates authored
      * Simplify scanning of SWC records.
      * `parse_swc` now retains metadata read from SWC comments.
      * `parse_swc` is given two modes, relaxed and strict. Strict mode enforces contiguous record numbering and rejects SWC that looks like it has a single-point soma.
      * Subtype `swc_error` according to error mode.
      * Remove `point` class and corresponding unit tests.
      * Add a RAII stream formatting flag saver, used in SWC record output operator.
      * Replace included 1-point soma SWC example with a regular SWC from NeuroMorpho.
      11a6ef6d
  10. Sep 25, 2020
    • Sam Yates's avatar
      Fix error introduced by PR merge. (#1162) · 70e3c902
      Sam Yates authored
      70e3c902
    • Nora Abi Akar's avatar
      Sanitize recipe (#1143) · af4d773b
      Nora Abi Akar authored
      * Raise an exception if:
      1. `recipe.num_souces(gid)` != number of detectors placed on the cell.
      2. `recipe.num_targets(gid)`  != number of synapses placed on the cell.
      3. `recipe.connections_on(gid)` has connections with non-existent source or target gids or lids
      * Raise better exception for gap junctions
      * Fix unit test 
      
      Addresses #681 
      af4d773b
    • Sam Yates's avatar
      Address c++17 TODO comments. (#1159) · 906dd478
      Sam Yates authored
      * Use structured bindings where noted (there are likely other opportunities in the code).
      * Use `if constexpr` to simplify some template-dispatched code.
      * Remove `arb::uitl::get`, as it is no longer required now that util::variant is replaced.
      * Add `_v` utility inline constexpr template values.
      
      Part of the C++17 migration task #1022.
      906dd478
    • Sam Yates's avatar
      Replace arb::util::optional with std::optional. (#1158) · d5ace349
      Sam Yates authored
      * Substitute `std::optional<T>` for `arb::util::optional<T>` for non-reference types T.
      * Remove reference-deducing `util::value_by_key`; replace usages with new function `util::ptr_by_key`.
      * Add some missing header includes that were required but included only transitively.
      * Remove `operator<<` overload for optional in python/strprintf.hpp; replace with utility wrapper class that catches `std::optional<T>`.
      * Wrap some `std::optional` values with `to_string` in ostream output in python lib.
      
      Fixes #1154.
      d5ace349
    • Benjamin Cumming's avatar
      remove spurious const_cast (#1161) · 6b561d15
      Benjamin Cumming authored
      6b561d15
    • Sam Yates's avatar
      Add NeuroML2 morphology support in new library. (#1148) · 3c453b64
      Sam Yates authored
      * Add CMake infrastructure for new `arbornml` library comprising Arbor's NeuroML2 (C++) support.
      * Implement NeuroML2 parsing and interpretation, using libxml2 for XML parsing.
      * Add associated documentation, unit tests.
      * Replace `arb::util::optional` with `std::optional` in stitch morphology interface.
      * Add optional prefix to `arb::label_dict` import.
      * Update CI to test arbornml, with associated workarounds for OS X targets.
      * Remove glob functionality from `sup`, as it is no longer needed (it was used for lmorpho) and it triggers yet another OS X issue.
      
      Fixes #1088.
      3c453b64
  11. Sep 22, 2020
    • Benjamin Cumming's avatar
      Move region/locset S-expr evaluation from python lib to Arbor lib. (#1157) · 3ba5f437
      Benjamin Cumming authored
      * Move label and s-expr parsing code and unit tests from Python to arbor C++ library.
      * Update `locset` and `region` constructors that take string arguments to parse strings as s-expressions or "quoted" labels.
      * Modify the input stream modifier used to parse asc files to use a lookup table for substitutions, renamed it transmogrifier.                                                             
      * Replace `hopefully` type implemented in python headers with an `arb::util::expected`.
      * Add `ARBDEV_COLOR` CMake option that forces gcc and clang to always output color output.
      * Allow arbitrary strings in labels in region and locset expressions.
      * Add `parse_region_expression` and `parse_locset_expression` functions alongside the existing `parse_label_expression` function for use when a region or locset is expected. These calls will promote a quoted string `"label"` to `(region "label")` or 
       `(locset "label")` respectively.
      * Add user-defined string literals for labels so that the C++ interface can use `"soma"_lab` instead of awkward escaping `"\"soma\""`.
      * Simplify Python wrapper code.
      3ba5f437
  12. Sep 18, 2020
    • Sam Yates's avatar
      Replace `util::any` and `util::variant` with std:: equivalents. (#1152) · 30e4c684
      Sam Yates authored
      * Replace usages of `util::any` with `std::any`.
      * Modify `util::any_cast` so that it forwards `std::any` arguments to `std::any_cast`; move into own header.
      * Prevent `std::unique_any` from implicitly encapsulating `std::any` objects.
      * Replace `test_any.cpp` unit tests with `test_any_cast.cpp` unit tests.
      * Replace some usages of `std::is_same<X, Y>::value` with `std::is_same_v<X, Y>` as part of general C++17ification.
      * Remove `util/variant.hpp`, `test_variant.cpp`.
      * Replace occurrences of `util::variant` with `std::variant`.
      * Replace `util::variant::get<N>` with `std::get<N>`.
      * Replace `util::get_if<N>` with `std::get_if<N>`, passing a pointer to variant instead of a ref or value.
      * Add some standard #includes where they were required in the source, but only included transitively.
      * Some minor comment tidying and fix-ups.
      * Update C++ API docs.
      
      Fixes #1144.
      30e4c684
    • Sam Yates's avatar
      Fix misleading typo in cable cel python docs. (#1153) · 72df06e6
      Sam Yates authored
      Fixes #1149.
      72df06e6
  13. Sep 17, 2020
    • Nora Abi Akar's avatar
      Optional Ion data (#1147) · 3bfd82d3
      Nora Abi Akar authored
      * Make the members of `cable_cell_ion_data`  optional.
      * Add separate methods for painting `init_int_concentration` , `init_ext_concentration` and `init_reversal_potential` on the cell.
      3bfd82d3
  14. Sep 16, 2020
  15. Sep 14, 2020
    • Sam Yates's avatar
      Replace `util::either` with `util::expected`. (#1142) · 74e911e6
      Sam Yates authored
      * Implement a workalike for the proposed `std::expected` class: see http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p0323r9.html .
      * Replace use of `either` with `expected` in `mprovider`, `mechanism_catalogue`, `util::partition_range`, and `pyarb::hopefully`.
      * Replace use of `either` with `variant` in `util::sentinel_iterator`.
      * Add `in_place_t` constructor for `util::optional`.
      * Fix move assignment bug in `util::variant`.
      * Remove `util/either.hpp` and associated tests.
      
      Fixes #1135. 
      74e911e6
    • Benjamin Cumming's avatar
      Update to C++17 (#1141) · 74411404
      Benjamin Cumming authored
      * Update CMake CXX version.
      * Make CUDA 10 a minimum requirement and remove CUDA 9 support code.
      * Set up g++ Travis tests to use g++ 8.
      * Explicitly set C++14 version for nvcc.
      * Properly split cuda compilation, including in unit tests.
      * Remove unnecessary modcc `SOLVE` warning.
      * Update pybind11 module to tag v2.5.0
      * Replace `util::size` and `util::data` with `std::` equivalents.
      74411404
  16. Sep 08, 2020
  17. Sep 07, 2020
  18. Aug 31, 2020
    • Sam Yates's avatar
      Extend place_pwlin interface for multivalued. (#1124) · 57415f0b
      Sam Yates authored
      * Add `equal_range()` method to `pw_elements`.
      * Simplify `embed_pwlin`, `place_pwlin` implementations, in particular the handling of zero-length branches.
      * Scale segment positions in `embed_pwlin` by divding by branch_length, instead of multiplying by the reciprocal, as the latter is a false economy after all the caveats that need to be checked to preserve ordering and bounds.
      * Add new method `place_pwlin::all_at()`, which gives all the points that correspond to a single `mlocation`.
      * Add new method `place_pwlin::all_segments()`, providing the set of segments and/or partial-segments that correspond to an extent.
      * Add new method `place_pwlin::segments()`, which provides a minimal set of segments and/or partial-segments that map onto an extent.
      * Extend unit tests to suit.
      
      Fixes #1116 and #1068.
      57415f0b
  19. 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.
      23a24b5a
    • Sam Yates's avatar
      Merge pull request #1123 from halfflat/feature/stitch-morphology · 135e91ac
      Sam Yates authored
      New PR post master rollback; squashed and rebased, but reprises #1111.
      
      * Add (forward) ordered forest implementation, tests.
      * Add `segment` region expression; to ease implementation, `msegment` now also knows its own id.
      * Add `stitch_builder` and `stitched_morphology`. A stitch corresponds to a labelled, linearly-interpolated segment which can be attached at any point along a parent stitch. A `stitched_morphology` takes a `stitch_builder` object and constructs a segment tree and morphology, and provides a dictionary of stitch labels to segment indices and region expressions.
      * Add `import` method for `label_dict`, so that the label dictionary returned by `stitched_morphology` can be merged with an existing dictionary.
      * Add section on stitch builder etc. to cable cell docs.
      * Update cable cell docs to remove out of date info and to provide some context.
      * Describe ordered forest datastructure and interface in a long comment at the beginning of the header file.
      135e91ac
    • Sam Yates's avatar
      Retrieve probe metadata from simulator object. (#1101) · 3cc73f1e
      Sam Yates authored
      * Add `get_probe_metadata` method to `simulator` that forwards probe metadata queries to appropriate cell group, via new interface method in cell group base class.
      * Replace `gid_to_local_` map in simulator implementation with a map that takes gid to local cell index _and_ local cell group index.
      * Move scheduler association map mutex into the cell group where it is being used (i.e. `mc_cell_group`).
      * Add generic (`visit`-able) interface to specifc fvm-probe types for accessing metadata via `any_ptr`.
      * Implement (override) `get_probe_metadata` method for `mc_cell_group`.
      * Use new cv policy API for LFP example discretization.
      * Use new probe metadata API to simplify LFP example sampler callback.
      * Add `on_components` locset expression that gives points a relative distance from the head of each component of a region.
      * Simplify implementation of thingification of `ls::boundary`.
      
      Fixes #1079 
      3cc73f1e