-
Sam Yates authored
Validation of simulation results by comparing L-infinity distance and maximum peak displacement in voltage traces taken at mid-points and end-points of sections. Note that these tests will broadly _fail_ at this point. Reference data generation and visualization: * Use voltage traces as validation data from NEURON; refactor generation scripts. * Generate validation data as a dependency of `validation.exe`. * Store validation data in a `tsplot`-compatible format. * Extend `tsplot` to handle multiple time series per file, a non-time 'time' axis (see `-A` option), filtering of time series by meta data queries (see `-s` option). * Remove pre-generated spike-time validation data files. Core extensions: * Add a single-cell `singleton_recipe` recipe wrapper. * Allow cell descriptions to be cloned (explicitly) for use with this wrapper. * Add `simple_sampler` which maintains a trace of scalar observables as a vector of (time, value) pairs. * Allow cell groups to be exposed from `model` (used for post-synaptic event injection in synapse validation test.) Utility extensions: * Add `math::signum` function. * Fix `value_type` determination in `util::transform_iterator` where the underlying iterator dereferences to a reference type. * Add `util::max_element_by` and `util::max_value` sequence utilities to `rangeutil.hpp`. * Small bug fixes for `util::optional` (one const correctness case, and proper behaviour for implicit conversion of `nothing_t` to `optional<void>`.) * Generic `util::first` and `util::second` accessor functional objects for reference access to `std::pair` fields in the absence of generic lambda functions. * Add `util::path` for path manipulation, corresponding to a subset of C++17 `std::filesystem::path` functionality. Only POSIX path semantics supported at this point. Validation tests: * Rework all validation tests as comparisons of voltage trace data against a (presumably converged) reference trace generated by NEURON. * Add options to `validation.exe` driver for verbose output of test results (`-v`), limiting the compartment number in convergence tests (`-m`) and saving the generated traces to a `tsplot`-compatilble JSONfile (`-o`). * Gather trace comparison metrics and analysis into `trace_analysis.hpp` and `trace_analysis.cpp`. * Add super simple command line argument parsing utility `tinyopt.hpp`. * Make a consistent naming of `ball_and_3stick` model across sources. * New `ball_and_taper` model.
ee3b83c5