Skip to content

Releases: OHBA-analysis/osl-dynamics

v1.2.1

14 Apr 15:17
Compare
Choose a tag to compare

PyPi release: https://pypi.org/project/osl-dynamics/1.2.1/

Changes:

  • Docs: 'Using BMRC' page removed from readthedocs, it is now a readme on the repo.
  • Analysis:
    • analysis.statistics module and examples for evoked response and comparing groups.
    • Added Fisher kernel analysis code and example.
  • Data: enforced n_window is odd; fixed bigs in trim_time_series.
  • Simulation: new simulation class for soft mixtures with subject variability.
  • Config API: more complete implementation for performing dynamic network analysis.

v1.2.0

20 Mar 14:37
Compare
Choose a tag to compare

PyPi release: https://pypi.org/project/osl-dynamics/1.2.0/

Changes:

  • Rewrote the implementation of learnable tensors:
    • This means models trained with previous versions of osl-dynamics are incompatible.
  • Data:
    • Fixed ordering bug when loading prepared data.
    • Can now load MNE Raw/Epochs fif files.
  • SE-DyNeMo: developed a directional version.
  • HMM:
    • Modified the implementation of hmm.Model.random_state_time_course_initialization.
    • Added new methods to calculate the variational free energy and exact model evidence.
  • Interface: new simplified config based user interface for the HMM/DyNeMo.
  • Logging:
    • Replaced print statements with a logger.
    • Removed ncols=98 from tqdm progress bars.
  • Post-hoc analysis:
    • Updated the functions used to threshold alphas.
  • Added the Glasser and AAL parcellation.
  • Updated dependencies: now includes mne and seaborn.

v1.1.7

13 Feb 14:47
Compare
Choose a tag to compare

PyPI release: https://pypi.org/project/osl-dynamics/1.1.7/.

Changes:

  • Compatibility with TensorFlow v2.10+:
    • The default behaviour of TensorFlow initialisers was changed in 2.10:
    • This osl-dynamics release ensures the correct behaviour of reseting the model with the latest TensorFlow versions (2.10 and 2.11).
    • This release can be used with old TensorFlow versions (<2.10) without a problem.

v1.1.6

12 Feb 20:05
Compare
Choose a tag to compare

PyPI release: https://pypi.org/project/osl-dynamics/1.1.6/.

Changes:

  • Data: option to parallelise loading and data preparation.
  • Models:
    • Save method now records the version of osl-dynamics used in the config.yml file.
    • HMM/DyNeMo/State-DyNeMo: option to learn diagonal covariances.
  • Bugs fixes:
    • Calculating static power spectra with one subject
    • Power maps were not being saved as images.
  • Documentation: major update to tutorials and description of models.

v1.1.5

30 Jan 21:18
Compare
Choose a tag to compare

PyPI release: https://pypi.org/project/osl-dynamics/1.1.5/.

Note, this version has a bug when saving power maps, if you pass filename=<>.png then it is not saved. This will be fixed in the next release.

Changes:

  • Major update for tutorials and documentation.
  • Updated the installation instructions.
  • HMM: return inferred alphas as float32; cleaned up learning rate schedule parameters.
  • Data object: new method to filter the raw data.
  • Post-hoc analysis:
    • refactored the code, summary statistic functions are now in osl_dynamics.analysis.modes;
    • added new functions: switching rates, static multitaper PSD, simple moving average, spectral reordering, eigenvector connectivity.
    • by default we standardise the data (on a per subject basis) before calculating spectra.
  • Examples: added script to plot parcellations.

v1.1.4

20 Dec 14:09
Compare
Choose a tag to compare

PyPI release: https://pypi.org/project/osl-dynamics/1.1.4/.

This release has a fully validated HMM.

Changes:

  • Added the option to add an error to the diagonal of a matrix - can be specified in the config.
  • Switched to a fully python based HMM and significantly reduced the training time - also validated against the c-library implementation.
  • Added more features to the HMM: learning rate decay for the observation model; option to train on a subset of the full dataset in each epoch.
  • Parallelised post-hoc calculation of power/coherence spectra.
  • Added new initialisation methods to State-DyNeMo.
  • Fixed an important bug in preparing amplitude envelope data.
  • Added an option to specify a p-value to decide the threshold of a two-component GMM fit.
  • Combined the Data object into one big class, which simplified the docs.

v1.1.3

27 Oct 15:17
Compare
Choose a tag to compare

PyPI release: https://pypi.org/project/osl-dynamics/1.1.3/.

Changes:

  • Improved import speed.
  • Can now save and load a model with its config.
  • Added an OPM example.
  • Option to specify a different number of mean activity and FC modes in M-DyNeMo.
  • New glass brain connectivity plot function.
  • Added features to calculate static quantities, such as the static power spectra, functional connectivity.

v1.1.2

18 Aug 15:15
Compare
Choose a tag to compare

PyPI release: https://pypi.org/project/osl-dynamics/1.1.2/.

This release contains small tweaks that generally improve training stability.

Changes:

  • Rewrote initialisation of observation model parameters.
  • Added methods for different initialisation options.
  • Add a small error to covariance matrices to improve training stability (avoids cholesky decomposition/KL loss error.)
  • Fixed specification of the inverse wishart prior regularisation for covariance matrices.

v1.1.1

04 Aug 15:40
Compare
Choose a tag to compare

PyPI release: https://pypi.org/project/osl-dynamics/1.1.1/.

Changes:

  • Bug in the initialisation of mode means/covariance was fixed.
  • Added regularisers for observation model parameters (mean vectors, covariance/correlation matrices).
  • Added option to pass the osl_dynamics.data.Data object to train/evaluate a model.
  • Worked on the HMM model: simulation example now complete; real data example is still a work in progress.
  • Added dynemo.Model.random_subject_initialization.
  • Renamed:
    • hmm.alpha -> hmm.gamma.
    • DyNeSt -> State-DyNeMo.
    • dynemo.Model.initialize -> multistart_initialization.
    • inference.modes.time_courses -> inference.modes.argmax_time_courses.

v1.1.0

21 Jul 12:24
Compare
Choose a tag to compare

PyPI release: https://pypi.org/project/osl-dynamics/1.1.0/.

Changes:

  • Installation: we now support python 3.10 and tensorflow 2.9.
  • Data object improvements: load txt; loading from memmap optional.
  • Models: subject embedding model added; added regularisation for observation model parameters.
  • Parameter initialisation: added a small random error to the identity matrix that's used to initialise covariances.
  • Examples: new simulation and fMRI examples.
  • Analysis: refactored GMM connectivity thresholding.

Note there is a bug in the initialisation of the mode means/covariances. They are initialised to normally distributed random numbers, this is an issue if you can not learning the mode means/covariances. This is fixed in v1.1.1.