Skip to content
Snippets Groups Projects
  1. Feb 03, 2020
  2. Jan 30, 2020
    • Sam Yates's avatar
      Address poor fvm_cv_discretize performance. (#949) · 59df0da0
      Sam Yates authored
      * Provide (internal) locset wrapper for mlocation_list so as to avoid quadratic mlocation sum(...) behaviour.
      * Add ubench for fvm_discretize, with lmorpho-generated test SWC.
      * Rewire `cv_policy_every_sample` to produce a locset that thingifies faster.
      
      Fixes #946 .
  3. Jan 28, 2020
    • Sam Yates's avatar
      Fix error in pw_ratpoly building in embed_pwlin. (#945) · 717f7cb5
      Sam Yates authored
      * Fix '==' vs '=' error in assignment.
      * Use last element (index 2) not index 1 of parent area and ixa tile to start from on new branch.
      * Expose cross-branch consistency via point-to-point integration functions for branch length and area.
      * Extend unit tests to suit.
    • Nora Abi Akar's avatar
      Add new regions and locsets (#944) · b6d24da4
      Nora Abi Akar authored
      Extends the available locset/region expressions.
      
      * Add `distal_interval` and `proximal_interval` expressions that return a region defined by an initial locset and a distance to extend in the distal or proximal directions respectively.
      * Add `radius_lt`, `radius_le`, `radius_gt`, `radius_ge` region expressions describing the subset of the morphology with radius less than (or less than or equal to etc.) a given value.
      * Add `z_dist_from_soma_lt`, `z_dist_from_soma_le`, `z_dist_from_soma_gt`, `z_dist_from_soma_ge` region expressions describing the subset of the morphology which is less than (resp. less than or equal to, etc.) the given distance along the z-axis from the root sample.
      * Add `uniform` locset expression giving a uniformly sampled set of locations from a given region based on a supplied PRNG seed value and a closed interval [left, right] of elements from the corresponding pseudo-random sequence.
      * Add `Random123` as a library to `ext` and `util::uniform` ...
      b6d24da4
  4. 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...
  5. Jan 23, 2020
    • Nora Abi Akar's avatar
      Modcc: Add vectorization support for conditionals (#930) · 31cae053
      Nora Abi Akar authored
      * Add support for conditionals with the SIMD printer by using `where_expresssions` to mask assignments to range variables that happen inside if/else blocks. Assignments to non-range variables are executed non-masked when correctness is ensured. 
      
      Fixes #836 
      31cae053
    • Sam Yates's avatar
      Make region/locset interface more consistent. (#943) · f4add04f
      Sam Yates authored
      * Add implicit conversions from mlocation and mlocation_list to locset.
      * Add implicit conversions from mcable and mcable_list to region.
      * Change arguments for `ls::location` to `(branch, position)`.
      * Extend unit tests to suit.
      * Make locset and region wrapping less promiscuous by demanding that
      expression implementation classes derive from locset_tag or region_tag
      respectively.
  6. Jan 22, 2020
  7. Jan 20, 2020
  8. Jan 09, 2020
    • Sam Yates's avatar
      Add typed-map interface/implementation for paint/place. (#929) · e7714926
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Builds on PR #918 
      
      Prepare public API on `cable_cell` for substitution of discretization implementation in `fvm_layout`.
      
      * Add `mcable_map` for representing cable-wise constant data on a morphology.
      * Paint cell ion initial values and physical properties by specific setter types, replacing use of `cable_cell_local_parameter_set`.
      * Allow cell default ion/physical properties to be set via same setter types, which set corresponding fields in cell's `default_parameters` field.
      * Store placed/painted items each in a `static_typed_map` object in the cable cell implementation class; provide public access method to typed maps.
      e7714926
  9. Jan 07, 2020
    • Nora Abi Akar's avatar
      Choose pivot on the diagonal if possible, otherwise choose leftmost element (#933) · 20801634
      Nora Abi Akar authored
      * Choose the pivot on the diagonal if possible when performing symbolic Gaussian elimination in modcc-generated mechanisms.
      20801634
    • Sam Yates's avatar
      Replace em_morphology middle layer API. (#918) · 1e939ae6
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      * Consolidate embedding-dependent morphology data in new class `embed_pwlin`, which provides sample location lookup, handles branch and radius queries, and performs piecewise-constant integration over a branch by length, branch surface area, or inverse cross-sectional area.
      * Extend region and locset expressions to represent named regions/locsets.
      * Rearrange morphology-related functionality so that morphology-independent functions are provided via `morph/primitives.hpp` and topological functionality via `morph/morphology.hpp` and `morphology` methods.
      * Provide new class `mprovider` which gathers a morphology, its embedding, and a concrete label dictionary.
      * Populate mprovider concrete region/locset maps at initialization time, throwing exceptions if there are unresolved references or circular dependencies.
      * Gather and unify morphology-related exceptions in `morphexcept.hpp/cpp`, unifying error text and providing programmatically readable associated d...
      1e939ae6
  10. Dec 20, 2019
  11. Dec 16, 2019
  12. Dec 11, 2019
    • Sam Yates's avatar
      Fix support for i686 32-bit target. (#923) · 7fadb0b5
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      * Use alternative hashing of cell_member_type values for 32-bit target.
      * Correctly match i686 as a "-march=" style target for gcc and clang.
      * Correct a signed/unsigned comparison warning in test_algorithms.cpp with -Wall.
      * Avoid spurious SIMD unit test failure for exprelr by using expm1 instead of exp - 1 in denominator when computing expected results.
      7fadb0b5
  13. Dec 10, 2019
  14. Dec 09, 2019
  15. Dec 07, 2019
  16. Dec 05, 2019
  17. Dec 02, 2019
  18. Nov 28, 2019
  19. Nov 27, 2019
  20. Nov 26, 2019
    • Nora Abi Akar's avatar
      Remove managed memory from cuda backend (#902) · 25759e6f
      Nora Abi Akar authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Completely remove managed memory from the gpu backend.
      `managed_vector<level>` is split into:
      - A device vector of structs containing meta data about each level 
      - A device vector containing concatenated lengths of each branch in a level for all levels
      - A device vector containing concatenated parents of each branch in a level for all levels
      
      All other instances of managed memory in `matrix_fine` are easily replaced by device vectors  
      Managed memory is also removed from the unit tests. 
      
      Fixes #841
      25759e6f
  21. 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
    • Nora Abi Akar's avatar
      Fix double move in cable_cell::paint (#898) · deec65e9
      Nora Abi Akar authored
      * Remove improper std::move of mechanism description with for loop in cell::paint().
      deec65e9
  22. Oct 23, 2019
  23. Oct 22, 2019
  24. Oct 04, 2019
  25. Oct 02, 2019
    • akuesters's avatar
      Python wrapper: thread safe recipe (#882) · f30c4204
      akuesters authored and Benjamin Cumming's avatar Benjamin Cumming committed
      Ensure that errors in Python callbacks that are called from multithreaded C++ code propogate the correct Python error back to the parent Python callback site, and that no callbacks are called from other threads if an error has already ocurred.
      - protects each recipe callback with a mutex, stores python exception, catches and throws python exception if occured
      - methods calling recipe (in simulation and partition_load_balance) are protected as well by try catch, resets and rethrows python exception (if occured) or else throws C++ exception
      
      fixes #792
      f30c4204