- Sep 30, 2020
-
-
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.
-
- Sep 29, 2020
-
-
Sam Yates authored
-
Nora Abi Akar authored
* Update `dryrun` to generate some spikes again, add a voltage printer. * Fix `ring.py` recipe. * Fix labels in `single_cell_builder.py` and `single_cell_swc.py`.
-
- Sep 28, 2020
-
-
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.
-
- Sep 25, 2020
-
-
Sam Yates authored
-
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
-
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.
-
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.
-
Benjamin Cumming authored
-
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.
-
- Sep 22, 2020
-
-
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.
-
- Sep 18, 2020
-
-
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.
-
Sam Yates authored
Fixes #1149.
-
- Sep 17, 2020
-
-
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.
-
- Sep 16, 2020
-
-
Nora Abi Akar authored
-
- Sep 14, 2020
-
-
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.
-
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.
-
- Sep 08, 2020
-
-
Benjamin Cumming authored
Switch `arb::util::either` to `arb::util::variant` in the Python wrapper. Fixes #1133
-
- Sep 07, 2020
-
-
Sam Yates authored
* Fix copy-paste error that led to legitimate copies throwing a bad_variant_access exception. * Fix exception safety for the case when an error thrown in copy assignment takes the lhs to valueless. * Fix wrong valueless semantics associated with an exception being thrown during move assignment. * Add unit tests that exercise these issues. Fixes #1136.
-
Benjamin Cumming authored
Update flat_cell_builder docs and add deprecation warning. Addresses #1129.
-
- Aug 31, 2020
-
-
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.
-
- Aug 27, 2020
-
-
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.
-
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...
-
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
-
- Aug 26, 2020
-
-
Brent Huisman authored
Update the docs landing page and add pip install from git. Fixes #1118
-
- Aug 20, 2020
-
-
Nora Abi Akar authored
The `vec_t_` time vector is already available to the mechanisms, but not exposed. It is indexed by `cell_index` instead of directly by the `node_index` (`vec_t[vec_ci_[node_index_[i]]]`). This kind of indexing was previously unavailble. It has not been added to the printers. This PR also includes some cleanup in the vectorized code printer. Address #1109
-
- Aug 13, 2020
-
-
Brent Huisman authored
Guide Python users to the Python installation steps early in the installation guide.
-
- Aug 10, 2020
-
-
Brent Huisman authored
Added Issue templates to help guide usage-related questions towards 'Discussions'.
-
Brent Huisman authored
-
- Aug 06, 2020
-
-
Brent Huisman authored
Update all Python scripts used during build/testing/running Arbor to explicitly use Python 3.
-
thorstenhater authored
* Check for self-assignment in `device_reference::operator=(const device_reference&)`. * Return reference to self in ` device_reference::operator=(const device_reference&)`. * Prohibit default construction of `device_reference` and clarify copy semantics.
-
- Aug 05, 2020
-
-
Brent Huisman authored
The tiniest of fixes: mechanisms/generate_catalogue had a bang line incompatible with newer Linux platforms without python.
-
- Jul 28, 2020
-
-
Sam Yates authored
* Correct hash implementation. * Add ==, != comparisons. Fixes #1093
-
Brent Huisman authored
-
- Jul 24, 2020
-
-
thorstenhater authored
Rename import method to avoid Python keyword collision.
-
- Jul 23, 2020
-
-
Harmen Stoppels authored
This is copied from DLA Future. It should set the CI status on the commit from the PR instead of just on the Bors commit. This way the gitlab CI status also appears in the checks section below the PR.
-
Nora Abi Akar authored
Fix a Python example that was out of date.
-
thorstenhater authored
Make all pointer arguments to kernels `__restrict__` to avoid unnecessary loads. The effect on the busyring benchmark (swapped pas -> hh) with 8192 cells on a V100 GPU (time for model-run in seconds): ``` |----------+-------| | Baseline | After | |----------+-------| | 2.347 | 2.268 | | 2.345 | 2.262 | | 2.321 | 2.276 | | 2.323 | 2.267 | | 2.330 | 2.249 | |----------+-------| | 2.321 | 2.249 | |----------+-------| ```
-
- Jul 21, 2020
-
-
Benjamin Cumming authored
* add parse_swc_allen method * small fixes and clean up * add test for incomplete branches and make error messages more consistent * add extra swc assertion, and remove single sample special case
-
- Jul 13, 2020
-
-
Benjamin Cumming authored
* Remove spherical root/soma from morphology representations and logic. * Replace `sample_tree` with `segment_tree`, which represents sample points in pairs and allows the representation of detached branches and cable segments. * Remove sample point properties and predicates. * Remove `cv_policy_flag::single_root_cv` as somata with a single attached dendrite will have a representation in the morphology of a single branch. * Remove `arb::math::{volume/area}_sphere`, which are no longer being used. * Remove spherical root special cases from `embed_pwlin` and `place_pwlin` objects. * Add textual representation of `mnpos` in morphology exception text. * Rename `sample_tree_from_swc` to `segement_tree_from_swc` and remove any special casing for one point somata. * Remove `msample` and `mbranch` types. * Update unit tests and python wrapper to reflect the changes.
-