Skip to content

Releases: amnsbr/cubnm

v0.1.0

14 Nov 16:58

Choose a tag to compare

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_p and J_N are now used as free parameters instead of wEE and wEI.
  • 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_noise to validate noise shuffling.
  • Removed “Quick Start” from the documentation.
  • Removed ext_out as a SimGroup option.
  • Use logging for 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_noise assumption of default dt and bw_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.N was increased in a subsequent SimGroup.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

22 Oct 13:22

Choose a tag to compare

v0.1.0rc1 Pre-release
Pre-release

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_p and J_N are now used as free parameters instead of wEE and wEI.
  • Default values are now automatically assigned for parameters not explicitly defined as free or fixed by the user.

Minor Changes

  • Added test_get_noise to validate noise shuffling.
  • Removed “Quick Start” from the documentation.
  • Removed ext_out as a SimGroup option.
  • Use logging for 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_noise assumption of default dt and bw_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.N was increased in a subsequent SimGroup.run() call.
  • Various minor API and logic fixes.

Full changelog: v0.0.7...v0.1.0rc1

v0.0.7

14 Jul 09:31

Choose a tag to compare

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 double rather than float. 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 serial mode of running simulations on GPUs
  • Fixes including performance issues in large grids and a few other minor fixes

v0.0.6

15 Apr 11:07

Choose a tag to compare

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 SimGroup to 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

29 Nov 16:53

Choose a tag to compare

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

04 Oct 17:16

Choose a tag to compare

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 PymooOptimizer instances can be run in parallel using a single GPU and without requiring CPU parallelization. This works by combining individual SimGroup instances of the optimizers into a MultiSimGroup.
  • 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

09 Sep 12:14

Choose a tag to compare

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_time and SimGroup.run_time after simulations are run)
  • Minor fixes

v0.0.3

20 Aug 19:28

Choose a tag to compare

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_out is set to True)
  • Versions will be set automatically by versioneer

v0.0.2

20 May 18:12

Choose a tag to compare

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 to rWW which 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 esc branch.
  • 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

18 Jun 14:41

Choose a tag to compare

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.