Releases: OHBA-analysis/osl-dynamics
v1.2.1
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 intrim_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
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
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
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
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
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
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
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
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
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.