- May 04, 2021
-
-
Sebastian Schmitt authored
-
- Feb 19, 2021
-
-
thorstenhater authored
-
- Feb 17, 2021
-
-
Sebastian Schmitt authored
-
- Feb 15, 2021
-
-
Sebastian Schmitt authored
-
- Feb 08, 2021
-
-
Benjamin Cumming authored
Reomove Travis CI integration. * remove Travis yaml and build scripts * remove Travis badges from README and RTD docs * replace Travis badge with GitHub Actions badge * add a RTD badge to the README Fixes #1338.
-
- Feb 03, 2021
-
-
thorstenhater authored
First phase of dynamically loaded mechanism catalogues. - Add functionality to load and use catalogues from DSOs in Python and C++. - Add documentation and support scripts to build catalogues DSOs. - Re-factor CMakeLists.txt for mechanisms - Limitations - Needs (compatible, preferably identical) arbor sources when building catalogues - Can only work on MacOS and Linux (uses dlfnc)
-
- Jan 06, 2021
-
-
Sebastian Schmitt authored
* Add the ability to use json and pybind11 libraries installed on the system instead of the vesrsions of those libraries bundled as submodules in the Arbor repository * Turned on by default * Toggled using the new `ARB_USE_BUNDLED_LIBS` CMake flag * Update documentation for installation * Update CI and pip workflows to opt in to the bundled libraries
-
- Dec 18, 2020
-
-
Nora Abi Akar authored
* Add 2 new examples to `python/examples` and their corresponding tutorials in the docs. 1. `single_cell_detailed.py` : a slightly more complex example using `single_cell_model` 2. `single_cell_detailed_recipe.py`: equivalent to `single_cell_detailed.py` but using a recipe. * Change `load_swc`-> `load_swc_arbor` for consistency. * Run Sphinx with specified PYTHON_EXECUTABLE. * Set PYTHONPATH env var in doc/CMakeLists.txt, such that it propagates correctly, including locally. * Build pyarb BEFORE html such that docs build can import arbor in Github Actions script.
-
- Dec 14, 2020
-
-
Benjamin Cumming authored
Make the `cable_cell` interface read only by passing the decorations to its constructor in a new `decor` type. C++ library * Remove the paint/place/set_default interface from `cable_cell` * Create a `decor` type that: * stores lists of paintings and placings * stores a set of cable cell parameters * uses the `paint`, `place`, `set_default` interface that was deprecated from `cable_cell`. * Create `paintable`, `placeable` and `defaultable` variants that are sum types over the respective types that can be painted, placed and defaulted. * Remove the overloaded `cable_cell::paint`, `cable_cell::place`, `cable_cell::set_default` methods to single methods that consume the sum types. Unit Tests * Many small changes because many many tests use cable cell API. * There were no `cable_cell` unit tests! Not such a big deal, since cable_cell is tested implicitly in so many other tests * but I added cable_cell tests: not much at the moment but will quickly fill up as we work on reading, writing, etc. Python * Wrap the new decor type. * Update cable cell type to reflect read only API. * Wrap the cv_policy types and implement the same operator overloading.
-
- Nov 18, 2020
-
-
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.
-
- Oct 09, 2020
-
-
Nora Abi Akar authored
* Add some log messages in python examples * Add python examples to CI
-
- Sep 25, 2020
-
-
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.
-
- Aug 06, 2020
-
-
Brent Huisman authored
Update all Python scripts used during build/testing/running Arbor to explicitly use Python 3.
-
- May 22, 2020
-
-
Nora Abi Akar authored
Travis CI is failing on some simd tests for `ARB_ARCH=native` GCC appears to be setting incorrect flags in the Travis environment for `-march=native`. Using `-march=skylake-avx512/haswell/etc` fixes the errors.
-
- Feb 25, 2020
-
-
Benjamin Cumming authored
Improve the Python wrapper generation and installation: - install a proper module that can be extended with Python code; - give the user more control over where to install the module (e.g. as a user package or in a virtualenv). During building, the following sub-directory is built in the build director (`CMAKE_BINARY_DIR`) ``` └── python └── arbor ├── __init__.py ├── arbor.so └── VERSION ``` This path can then be copied VERBATIM to the target installation path. By default this will be in `CMAKE_INSTALL_PREFIX/lib/python%d.%d/site-packages`. An additional CMake parameter `ARB_PYTHON_PREFIX` can be used to specify an alternative destination for installing the Python module. The Python part of the wrapper, implemented in `__init__.py` is currently very limited, only providing `__version__` and `__config__` variables. The installation guide was updated to cover the Python installation.
-
- Feb 04, 2020
-
-
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
-
- Jun 07, 2019
-
-
* Change occurances of 'ionKind' to corresponding string values in test_parser.cpp. * Add unit-modcc to travis script. Fixes #775.
-
- Mar 15, 2019
-
-
Python 3.6 is tested (serial and mpi), in particular: - 3.6.3 on linux with a virtualenv, - 3.6.5 as downgrade from 3.7 on osx as in https://stackoverflow.com/questions/52584907/how-to-downgrade-python-from-3-7-to-3-6?rq=1 (other solutions did not work) Fixes #715
-
- Mar 04, 2019
-
-
Remove the miniapp example. * Remove the miniapp source from example/miniapp. * Remove references to miniapp from CMake files. * Remove miniapp from the travis tests. * Fix unused variable warning in brunel miniapp.
-
- Oct 16, 2018
-
-
- Oct 12, 2018
-
-
Sam Yates authored
* Use python3 version of print. * Use dict update method instead of item concatenation, as in Python3 dict.items() no longer returns a list.
-
- Oct 01, 2018
-
-
changes: - .travis.yml: - added matrix for different osx's, since enumeration style only works for `env` and `compiler` - scripts/travis/build.sh: - changed getting compiler version from ``${CXX} -dumpversion`` to ``${CXX} --version | grep -m1 ""`` - added `--oversubscribe` flag to `mpiexec` on Mac to allow more processes on a node than processing elements - added `--mca btl tcp,self` flag for Open MPI to use the "tcp" and "self" BTLs for transporting MPI messages on Mac
-
- Jul 24, 2018
-
-
- Task system is no longer a single system private to the implementation of the threading backend and used everywhere. A separate task_system can be used (with a specified number of threads) for every simulation. - arb::execution_context is the interface to task_system and the previously defined distributed_context - TBB and serial support has been removed. Cthreads is the only threading backend available.
-
- Jun 25, 2018
-
-
CMake and build refactoring * Use CUDA as first-class language (leading to CMake 3.9 minimum version requirement). * Use 'modern CMake' interface libraries for compiler options, include file and library dependency tracking. Interface library targets: * `arbor-deps`: compiler options and library requirements for the `libarbor.a` static library, as governed by configure-time options and environment. * `arbor-private-headers`: include path for non-installed headers, as required by unit tests and arbor itself. * `arbor-aux`: helper classes and utilities used across tests and examples. * `ext-json`, `ext-tclap`, `ext-tbb`, `ext-benchmark`, `ext-sphinx_rtd_theme`: externally maintained software that we include (directly or via submodule) in the `ext/` subdirectory. * Single static library `libarbor.a` includes all built-in modules and CUDA objects. * Simply configuration options: * `ARB_WITH_TRACE`, `ARB_AUTORUN_MODCC_ON_CHANGES` `ARB_SYSTEM_TYPE` removed. * External `modcc` is provided by `ARB_MODCC` configuration option; if provided `modcc` is still buildable, but is not included in the default target. * `ARB_PRIVATE_TBBLIB`, defaulting to `OFF`, instructs the build to make TBB from the included submodule. * Extend `ErrorTarget` functionality to provide a dummy target or an error target based on a condition. * Generate header version defines and library version variables based on git status and project version, via new script `include/git-source-id`. * All generated binaries now placed in `bin/` subdirectory at build. * Install targets installs: public headers (incomplete); static library; `modcc` tool; `lmorpho` executable; `html` documentation (examples, tests and validation data are currently not installed). * Executable targets have had the `.exe` suffix removed; unit tests are labelled `unit` (arbor unit tests), `unit-modcc` (modcc unit tests), `unit-local` (distributed tests with local context), `unit-mpi` (distributed tests with MPI context). * More graceful handling of configure-time detection of `nrniv`, Julia and required Julia modules for validation data generation. * Add `cmake/FindJulia.cmake`, `cmake/FindTBB.cmake` package finders, and adjust `cmake/FindUnwind.cmake` to use link library-style properties. * Adjust travis script to test `unit-local` and `unit-mpi` if appropriate. * Simply documentation `conf.py`. Source relocation and reorganization * All external project sources and files moved to `ext/`. * Source code refactoring to decouple library-using code from the configure-time definitions that govern arbor behaviour: removes conditional code in public headers that depends upon `ARB_WITH_X`-type definitions at compile time. Affected code is is in the public interfaces for MPI, the threading implementation, and the profiler. * Remove `util/debug.hpp`; split out functionality for pretty-printing from assertion handling. * Make FVM cell non-physical voltage check a run-time cell-group parameter. * Move spike double buffer implementation to `simulation.cpp`. * Make timer utility wrap POSIX `clock_gettime` independent of threading configuration. * Make `mpi_error` derive from `system_error` and follow C++11 `system_error` semantics. * `EXPECTS` macro replaced by `arb_assert` macro. * JSON dependency removed from `libarbor.a` and header files: moved to auxiliary library. * Publicly visible macros garner an `ARB_` prefix as required. * Move SWC test file to `test/unit` directory. * Work-in-progress splitting of public from private includes: as a convention not entirely adhered to as yet, private headers within arbor source are included with `""`, public headers with `<>`. Modcc interface changes * Expose via `--namespace` option the functionality that sets the namespace in generated code. * Use `--profile` option to add profiler hooks to generated code; uses public function interface directly rather than `PE/PL` macros in order to avoid public `PE` and `PL` defines.
-
- Dec 22, 2017
-
-
Wouter Klijn authored
A small script to compare files containing (gid, time) pairs. The list do not have to be sorted in time or gid order. A details error is displayed on differences.
-
- Dec 20, 2017
-
-
* Rename `miniapps` subdirectory to `example`. * Have all example executables be built under `example` in the build directory. * Update Travis CI to run miniapp from new path.
-
- Nov 30, 2017
-
-
Wouter Klijn authored
Restructure the miniapp in such a way that we have to option to have multiple parallel mini-applications. Move the original miniapp directory to a miniapps directory. Output executable also in a nested miniapps directory. Update the Travis to point to the new executable location.
-
- Sep 28, 2017
-
-
Sam Yates authored
* Use ARB_ and arb_ as variable prefixes in place of NMC_ and nmc_. * Replace references to 'NestMC' and 'NEST MC' to refer instead to Arbor. * Use 'arbor' as the sim name in generated validation data. * Reflow long-line paragraphs in `tests/ubench/README.md`. * Change names of CUDA mechanism and CUDA kernel libraries to include arbor name.
-
Sam Yates authored
Change nest::mc namespaces to arb
-
- Sep 11, 2017
-
-
Ben Cumming authored
Add support for continuous integration with Travis CI. This implements bare bones support that can be extended over time. Travis CI test environments: All use gcc 5. Test the serial distributed back end with serial and cthread threading backends. Test mpi with cthread. The tbb test failed sporadically because CMake, so it is disabled for now. The test script: Builds the unit tests, global_communication tests and miniapp. Asserts that all unit and global_communication tests pass. Asserts that the miniapp runs successfully. does not test miniapp output for now. There is plenty of scope for improving the tests. A key improvement will be to use validated output for the validation and miniapp to provide some validation. There were some small fixes required to make the tests pass on Travis communication/mpi.hpp now sets default size and rank values of 1 and 0 respectively to allow all unit tests to pass when built with MPI. The wrappers around MPI API calls use const_cast to support MPI implementations that are not "const aware". A missing header was added to tests/unit/test_range to make std::unordered_multimap available.`
-
- Sep 01, 2017
-
-
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`.
-
- Jun 19, 2017
-
-
Sam Yates authored
Finalizes #184 and includes fix for #285. This PR constitutes a brutal rebase of the `devel/async-integration` branch onto current master: git patch, baby. Implements asynchronous integration of cells within an `fvm_multicell` instance together with the code to implement efficient device-side event delivery. Summarized patch notes from the development branch: * Add four new views in mechanism state: * `vec_ci`: cv index to cell index (w.r.t. one lowered multicell instance) map. * `vec_t`: current or integration starting time, indexed by cell. * `vec_t_to`: integration stopping time, indexed by cell. * `vec_dt`: pre-computed delta between `vec_t` and `vec_t_to`, to address performance regression on multicore backend. * Extend notion of indexed view in `modcc` to encompass `CellIndexedVariable` variables, which have a per-cell value. * Add/change 'built-in' variables `t`, `t_to`, and `dt` for NMODL. * Additional utility functions: * `util::minmax_value`: return one-pass reduction for minimum and maximum. * `util::fill`: range-compatible wrapper for `std::fill`. * `util::empty` now works across arbitrary sequences (defaults to calling `empty()` method if it exists). * Extends C++17-like functionality for path testing and manipulation (c.f. PR #233). * Use a cached copy of the per-cell time vector for queries in `fvm_multicell`. * Modifies back-end matrix assembly, threshold detection and stimulus implementations to be asynchronous-friendly. * Rename some back-end mechanism variables for clarity, now that there are multiple sorts of cell index vectors present. `cell_index` for example has been renamed to `cell_cv_divs` where it acts as a partition division of cv indices (length 1+#cells), and `cell_to_cv` where it acts as a map from cell to index of first cv for that cell (length #cells). * Move common event-delivery types (`target_handle`, `deliverable_event`) to `src/backends/event.hpp`. * Add `multi_event_stream` data structure for `gpu` and `multicore` backends, which handles multiple streams of events, bulk loaded but individually popped. * Add unit tests for `multi_event_stream`. * Document event delivery process and abstraction in `src/backends/event_delivery.md`. * Virtualize `mechanism::deliver_events`. * Perform event delivery in `fvm_multicell::step_integration()`, using the backend-provided interfaces. * Add zero dt check/support to matrix state implementations. * Add zero dt unit tests for multicore and gpu back-end matrices. * Add debugging helper `util::sepval` for printing/tracing container values. * Add trace csv output option to miniapp. * Add GPU kernel and unit test for end-of-integration time step test. By default, keep using the copy-to-host-and-test method, as it is faster for cell counts up to circa 10k; investigate adaptive/threshold solutions in the future. * Explicitly compute and store per-cell and per-compartment `dt` from integration time bounds. * Determine lower bound on number of integration steps per interval in order to avoid explicit checking of minimum cell times each step. * Avoid any time value checking for samplers in the integration loop if none of them could be triggered in the interval.
-
- Apr 06, 2017
-
-
Sam Yates authored
* Add perl program `cc-filter`, a general purpose by-line text filter with built-in default rules for filtering text containing C++ types and expressions. * Add documentation for the tool to the scripts `README.md` file. * Add demonstration table `filters/massif-strip-cxx` for using `cc-filter` with valgrind massif output.
-
- Mar 23, 2017
-
-
Fixes #152 * Remove OpenMP back end implementation. * Remove CMake options for OpenMP. * Simplify the threading model selection code in CMake. * Remove Extrae benchmarking scripts, which require OpenMP.
-
- Jan 21, 2017
-
-
Alexander Peyser authored
-
- Nov 14, 2016
-
-
Ben Cumming authored
This PR is part of the gpu feature merge. The GPU implementation is not implemented here. Instead, we focus on refactoring of the original "multicore" back end so that it is ready for adding the GPU back end. This is a big and messy change, for which I am sorry. ## build System - A `WITH_CUDA` option has been added to the main CMakeLists. This finds the CUDA toolkit, and sets CUDA compiler flags, and will build unit tests for the gpu back end. - The CMakeLists that generates mechanisms with modcc has been updated to generate CUDA mechanisms. - the library is now named `libnestmc` instead of `libcellalgo` - merge the external libraries that are optionally linked againts (tbb, libunwind, etc) into a single `EXTERNAL_LIBRARIES` list for ease of linking ## modcc - the cprinter and cudaprinter have had small changes to generate mechanism files that are compatible with the refactored library. ## algorithms - the indexes into algorithm was "rangified". An algorithm `index_into_iterator` takes two ranges as inputs to make a range that lazily generates the index of sub into super set. ## backends - made a new path `src/backends/` for backend specific type and implementation code. - currently: - complete support for the `multicore` and `gpu` backends - `gpu` back end is not optimized or validated - the back end implementations are in `src/backends` - a single `backend` class, `nest::mc::{multicore,gpu}::backend`, is provides all backend specific type and implementation details fro each backend - storage containers - Hines matrix assembly for FVM method - Hines matrix solver - mechanism "factory" ## lowered fvm cells - removed `fvm_cell` because this can be modelled with an `fvm_multicell` with one cell. - refactored to use backend type and implementation from `fvm_policy` - use `std::vector` instead of containers in `nest::mc::memory::` where possible when building cells. ## memory library Refactor the "memory" library, making it much simpler and better integrated into the rest of the application. However, it is still far from perfect. The `Coordinator` approach needs to be improved, most likely by putting target-specific wisdom into pointers (which could obviate the need for a `const_array_view` type. 1. renaming and moving - move from `vector/` to `src/memory` - move into the `nest::mc` namespace, i.e. all types and functions are now in `nest::mc::memory` - change from camel case nameing scheme to NestMC style naming. 2. simplification - remove the CRTP cruft that was used to make operator overloading work for operations like copying from one range into another, and filling a range with a constant value. These have been replaced with `memory::fill()` and `memory::copy()` helper functions. This simplified the code _a lot_, and makes code clearer in user land. ``` // before vec(0, 5) = other; // now memory::copy(other, vec(0, 5)); ``` - add some wrappers in `src/memory/wrappers.hpp` that help with making views. These are particularly useful for passing `std::vector` through interfaces that expect a view. ## debug backtraces Added stack traces for debugging. - support for OSX and Linux via libunwind - backtraces can be generated manually `nest::mc::util::backtrace().print()` - creates a new file and dumps trace into file - prints message to `stderr` with file name and instructions on how to analyse - backtraces are also automatically generated when an assertion `EXPECTS` statement fails - a python script in `scripts/print_backtrace` pretty prints the output with file name, line number and demangled symbols ## util simplification and consolidation The `src/util.hpp` file was removed - much of its contents were dead code and just removed - useful components like `pprintf` and `make_unique` were moved into the `src/utils` path in standalone files There was a lot of overlap between functionality provided in `src/memory/util.hpp` and existing functions/types in the `nest::mc::util` namespace. The `memory` implementations were removed, and their `nest::mc::util` counterparts used. There is still some work remaining, namely moving the rest of the `src/memory/util.hpp` into `src/util/...`
-
- Nov 04, 2016
-
-
Ivan Martinez authored
* first version of openmp threading back end * adding openmp parallel sort implementation * OpenMP sort working * Support for units syntax within state block. * Add soma-less cable cell to test cells. Also: * Ensure intrinsic and passive properties properly set on test cells. * Change bulk resistivity default. * Align defaults with values used in most of the NEURON validation scripts. * Use consistent 100 Ω·m bulk resistivity across both NEURON test models and basic validation cells. * OpenMP back end working * Add Extrae+paraver support, needs to fix compilation warnings * Reorganize validation data generation * Move generation and data to top-level validation directory. * Make BUILD_VALIDATION_DATA and VALIDATION_DATA_DIR cache vars. * Add helper CMake functions for data generation. Note `validation/ref/numeric/foo.sh` is just a placeholder. * Bugfix: hh_soma.jl * Use consistent scaling for y[1] scalar voltage in hh_soma.jl * Also: add more reserved target names to CMakeLists.txt helper function. * Refactor convergence tests; add numeric soma ref. * Amend data directory path in validation tests. * Enmodulate `hh_soma.jl` * Add HH channel reference data generations script. * Switch `validate_soma.cpp` to numeric reference data. * Consolidate common code in `validate_ball_and_stick.cpp` * Add (nearly) Rallpack1 validation test (see below). * Gentle failure on absence of reference data in `validate_ball_and_stick.cpp` Can't yet override mechanism default parameter values, so the cable cell model added to `test_common_cells.hpp` lets the default stand; validation script will have to use the default membrane conductance rather than that given by Rallpack1. * Add Rallpack1 validation, plus bugfix, clean * Implement Rallpack1 validation test (with a workaround for inability to set membrane conductance). * Fix bug in L≠1 case in PassiveCable.jl (this may still be wrong). * Fix bug in peak delta computation in trace analysis when both traces have no local maxima. * Gentle failure on missing `numeric_soma.json` * Allow multiple `-s` selection operations for `tsplot`, acting disjunctively. * Remove errant test file. * file's cleanup * Remove tabs * Use correct routine in numeric_rallpack1.jl x0.3 * Configure-time test for julia * `math::infinity<>()` wrapper for infinity * Use name `i_e` for Stim current density * Use `math::infinity<>()` for infinite value * Adds unit tests for the STATE block. * Add "lib" to search prefixes for libtbb * Fix quoting error in library search. * Add "lib" to prefixes when system is "Linux". * Address deprecated use of 'symbol' warning. Julia 0.5 deprecates use of `symbol` instead of `Symbol`. This patch just substitutes the correct call. * Address deprecated use of 'symbol' warning. Julia 0.5 deprecates use of `symbol` instead of `Symbol`. This patch just substitutes the correct call. * Addresses PR comments. * Unit tests for math.hpp * Tests for `math::pi`, `math::lerp`, `math::area_frustrum` and `math::volume_frustrum` * Fix `math:pi<long double>()`. * Extend range, view functionality. * New `filter` view: lazily selects based on predicate. * Generic `front` and `back` for sequences. * New rangeutil STL wrappers `stable_sort_by`, `all_of`, `any_of`. * Consolidate common utility unit testing structures into `tests/unit/common.hpp` * Add `ball_and_squiggle` model; fix `ball_and_taper`. * Make `test_common_cells.hpp` and `ball_and_taper.py` agree. * Add `ball_and_squiggle` model that has a tapering undulating profile. * Address PR#46 review comments. * Add documentation of template parameters for `filter_iterator`. * Document use of `uninitalized<F>` for holding functional objects in `filter_iterator` and `transform_iterator` * Consolidate validation test code (issue #41) * Simplify trace analysis and reporting code in `trace_analysis.hpp` * Consolidate convergence test run procedures into new class `convergence_test_runner`. * New compartment info structure for FVM. * Make `algorithm::sum`, `algorithm::mean` more generic, allowing use with array types. * Add `div_compartment` compartment representation, that holds geometric information for each half of a compartment that will then be used in calculating control volumes. * Add three compartmentalisation schemes/policies that discretize a segment into `div_compartment` objects: * `div_compartment_by_ends` divides based only on the segment end points and radii. * `div_compartment_sampler` forms frusta by sampling the segment radius at each compartment boundary * `div_compartment_integrator` computes the compartment areas and volumes exactly by summing all frustra in the intersection of the segment and the compartmnet span. * Extrae linked at execution time * cleaning project * Complex compartments * Use divided compartments to determine FVM coefficients. * Pick correct control volume in FVM from sgement position (avoids off-by-half error.) * Add colour override functionality to tsplot: `--colour` option. * Add const accessor for cell soma. * Source formatting, comments in `math.hpp` * Fix `range_view`: was using incorrectly named type trait. * Add unit test for `range_view`. * Allow points of discontinuity to be omitted from L-infinity norm calculations. * Add `-d, --min-dt` option to `validate.exe` to control time step in validation convergence tests. * Add validation test: confirm divided compartment policy does not effect results on simple frustrum dendrites. * Change default max compartments on validation tests to 100 (ad hoc observed convergence limit at dt circa 0.001 ms; finder spatial division would required much finer dt.) * Make NEURON validation data generation scripts use CVODE by default, and with `secondorder=2` when non-zero `dt` is given. * Remove division policy type parameter. * Use only `div_compartment_integrator` for compartmentalization in `fvm_multicell`. The policy will later be moved to a backend policy class. * For now, disable validation tests that test different division policies (see above). * Tweak comments and remove redundant `using`, following comments on PR#54. * Minor twicks and corrections
-
- Oct 30, 2016
-
-
Sam Yates authored
* Use divided compartments to determine FVM coefficients. * Pick correct control volume in FVM from sgement position (avoids off-by-half error.) * Add colour override functionality to tsplot: `--colour` option. * Add const accessor for cell soma. * Source formatting, comments in `math.hpp` * Fix `range_view`: was using incorrectly named type trait. * Add unit test for `range_view`. * Allow points of discontinuity to be omitted from L-infinity norm calculations. * Add `-d, --min-dt` option to `validate.exe` to control time step in validation convergence tests. * Add validation test: confirm divided compartment policy does not effect results on simple frustrum dendrites. * Change default max compartments on validation tests to 100 (ad hoc observed convergence limit at dt circa 0.001 ms; finder spatial division would required much finer dt.) * Make NEURON validation data generation scripts use CVODE by default, and with `secondorder=2` when non-zero `dt` is given.
-
- Oct 26, 2016
-
-
Sam Yates authored
* Implement Rallpack1 validation test (with a workaround for inability to set membrane conductance). * Fix bug in L≠1 case in PassiveCable.jl (this may still be wrong). * Fix bug in peak delta computation in trace analysis when both traces have no local maxima. * Gentle failure on missing `numeric_soma.json` * Allow multiple `-s` selection operations for `tsplot`, acting disjunctively.
-
- Oct 24, 2016
-
-
Sam Yates authored
* Move generation and data to top-level validation directory. * Make BUILD_VALIDATION_DATA and VALIDATION_DATA_DIR cache vars. * Add helper CMake functions for data generation. Note `validation/ref/numeric/foo.sh` is just a placeholder.
-