Releases: amnsbr/cubnm
Releases · amnsbr/cubnm
v0.1.0
Changes
New Features
- Implemented YAML-based model definition and code generation using
mako, which simplifies the process of adding new models. - Rewrote the custom model definition guide accordingly.
- Added Jansen-Rit (
JR) and Wilson-Cowan (WC) models. - Added WSL support, with minor limitations (e.g., lack of progress printing due to CUDA restrictions on Windows).
- In the rWW model,
w_pandJ_Nare now used as free parameters instead ofwEEandwEI. - Default values are now automatically assigned for parameters not explicitly defined as free or fixed by the user.
Minor Changes
- Included model equations in their docstrings.
- Added a table of included models to documentation.
- Added
test_get_noiseto validate noise shuffling. - Removed “Quick Start” from the documentation.
- Removed
ext_outas aSimGroupoption. - Use
loggingfor warnings. - Added a warning for potential CPU–GPU discrepancies in the Kuramoto model (#24).
- Added an option to fix heterogeneous parameters when defining a
BNMProblem. - Rewrote installation guide.
Bug Fixes
- Fixed
get_noiseassumption of defaultdtandbw_dt(now supports custom integration steps) - Fixed incorrect noise reshuffling when
bw_dt≠ default (1.0 msec). - Fixed incorrect delay calculation when
dt != 1.0. - Resolved a double-free memory error occurring when in the same session
SimGroup.Nwas increased in a subsequentSimGroup.run()call. - Fixed nvrtc and cublas issues in containers.
- Various minor API and logic fixes.
Full changelog: v0.0.7...v0.1.0
v0.1.0rc1
Changes
New Features
- Implemented YAML-based model definition and code generation using
mako, which simplifies the process of adding new models. - Rewrote the custom model definition guide accordingly.
- Added Jansen-Rit (
JR) and Wilson-Cowan (WC) models. - Added WSL support, with minor limitations (e.g., lack of progress printing due to CUDA restrictions on Windows).
- In the rWW model,
w_pandJ_Nare now used as free parameters instead ofwEEandwEI. - Default values are now automatically assigned for parameters not explicitly defined as free or fixed by the user.
Minor Changes
- Added
test_get_noiseto validate noise shuffling. - Removed “Quick Start” from the documentation.
- Removed
ext_outas aSimGroupoption. - Use
loggingfor warnings. - Added a warning for potential CPU–GPU discrepancies in the Kuramoto model (#24).
- Added an option to fix heterogeneous parameters when defining a
BNMProblem.
Bug Fixes
- Fixed
get_noiseassumption of defaultdtandbw_dt(now supports custom integration steps) - Fixed incorrect noise reshuffling when
bw_dt≠ default (1.0 msec). - Fixed incorrect delay calculation when
dt != 1.0. - Resolved a double-free memory error occurring when in the same session
SimGroup.Nwas increased in a subsequentSimGroup.run()call. - Various minor API and logic fixes.
Full changelog: v0.0.7...v0.1.0rc1
v0.0.7
Changes
- Added tutorials for grid search, homogeneous CMA-ES, map-based heterogeneous CMA-ES, node-based heterogeneous CMA-ES, and batch optimization
- Replaced example data with HCP-YA data (two groups + two subjects)
- Generating noise as
doublerather thanfloat. As a result simulation outputs will be different compared to previous versions because of different noise sequences - Added plotting functions for plotting history of optimizers as well as the low-dimensional parameter spaces
- In map-based heterogeneity set bounds for regional parameter values
- Removed Bayesian optimization
- Removed
serialmode of running simulations on GPUs - Fixes including performance issues in large grids and a few other minor fixes
v0.0.6
Changes
- Improved documentation, including a tutorial on how to contribute new models, and a tutorial on basics of BNMs and using the toolbox to run a single simulation
- Converted grid search to an optimizer
GridOptimizer, for a more unified API with the other optimizers, with additional support for heterogeneous problems and proper saving of the grid outputs - Added support to calculate FC correlation and FCD KS distance between empirical and simulated data on GPU using CuPy (used as an optional dependency
- Example SC and BOLD data was changed to MICA-MICs dataset sub-HC001 data with additional parcellations included, but FC and FCDs are removed (and will be calculated on the fly based on BOLD). In addition, the data of other subjects can be loaded given path to MICA-MICs micapipe output.
- In simulations with delay, the amount of delay between the nodes are calculated on the fly and directly within the device, which improves performance
- Added support for calculating FC (not yet FCD) in co-launch mode
- Initial support for AMD GPUs (work in progress; currently only works when building from source)
- In batch optimization, the optimal simulations of different optimizers are also run in a batch (previously they were run serially)
- In CMAES the population size of the initial generation is not fixed to 20 and rather is the same as subsequent generations
- Core errors are more gracefully handled, raising them as Python errors rather than exiting the program
- Added tests for optimizers
- Added more getters/setters to
SimGroupto allow properly setting the properties of objects after instantiation - Bug fixes, most importantly including memory leaks in batch optimization, handling of numerical unstability of analytical FIC in rWW, using Balloon-Windkessel parameters other than
'friston2003', and handling of NaN GOF measures.
E-I development project v0.0.5
The version of toolbox used in the revised manuscript of E-I development project (https://github.com/amnsbr/eidev). This release is created for the purpose of archiving the repository at Zenodo.
v0.0.5
Changes
- Enabled custom integration step for the synaptic (
dt) and BOLD models (bw_dt) - Added cooperative launch mode which supports running a few simulations with massive number of nodes (e.g. A100 would support 55k simulations*nodes)
- Enabled empirical BOLD as a user input. Then FC and FCD are calculated from the BOLD signal consistent with the simulations.
- Made FC and FCD calculations optional (but still when FCD is calculated FC must be calculated)
- Enabled batch optimization. In this mode multiple
PymooOptimizerinstances can be run in parallel using a single GPU and without requiring CPU parallelization. This works by combining individualSimGroupinstances of the optimizers into aMultiSimGroup. - Added tests for optimizers
- Changed some of the defaults (interhemispheric connections are not excluded from FC/D, and numerical FIC is not done in rWW)
- Minor fixes including: detects GPUs based on
nvidia-smi, fixed optimize error with models other than rWW, fixed error with TR and states sampling lower than 1 sec
v0.0.4
Changes
- Considerable improvement in GPU performance (especially with higher number of simulations and nodes) due to coalesced reading of the structural connectome from unified memory
- Added a generic test for testing consistency of simulations in current and future models
- Return initialization and running time of simulations to user (recorded in
SimGroup.init_timeandSimGroup.run_timeafter simulations are run) - Minor fixes
v0.0.3
Changes
- Added command line interface
- Added stable and development Docker containers (but need more testing across different platforms)
- Added support for oscillation-based models and included Kuramoto model as an example of such models
- Created a boilerplate macro which will make it easier to add new models and reduces code repetition
- Noise can be returned to user (if
noise_outis set toTrue) - Versions will be set automatically by
versioneer
v0.0.2
Changes
- Added documentations (https://cubnm.readthedocs.io/en/latest/index.html) and example Kaggle notebooks
- Major changes in the core CUDA/C++ code structure with a modular design to support additional models
- Added
rWWEx, excitatory-only reduced Wong Wang model (Deco et al. 2013), in addition torWWwhich was supported previously - Added conduction delay support to CPU simulations
- Added option to save time series of model states which can be sampled every TR (default) or at custom sampling rates
- Added MANY_NODES mode for 200-500 node simulations (only available when building from source)
- Shows progress of GPU simulations in verbose mode
- Tests of expected output compare the entire arrays of simulated data to the expected rather than a specific index
- Added serial implementation of simulations on GPU which use one thread per simulation and loops through nodes. This is experimental and at small N much slower than the default parallel mode.
- Added support for variable SCs across parallel simulations. This feature can be used for future support of parallel optimization runs (different optimizer seeds or different subjects) and was used in the
escbranch. - Various fixes most importantly including a bug resulting in an extra sample in the simulated BOLD, and a bug resulting in improper use of device heap memory which lead to crashes specially at large Ns
E-I development project
Includes the version of the code used in https://github.com/amnsbr/eidev. This release is created for the purpose of archiving the repository at Zenodo.