Changelog

Unreleased changes (available on the dev branch)

Added

  • An example notebook for ICA source extraction was added, by Jacqueline Behrendt. (#112)

  • Added TwoSurfaceHeadmodel.scale_to_headsize and TwoSurfaceHeadmodel.scale_to_landmarks to adjust the head model’s size to the head circumferences or digitized landmarks, respectively. By Eike Middell.

  • The factory method cedalion.dot.get_standard_headmodel to construct the TwoSurfaceHeadModel of the standard Colin27 and ICBM-152 heads was added, by Eike Middell.

  • Added cedalion.xrutils.dot_dataarray_csr for matrix products between xr.DataArray and scipy.sparse arrays, by Eike Middell.

Changed

  • Refactored cedalion.plots into cedalion.vis and its subpackages. This cleans up the code structure and should help with discovering existing functions. The package cedalion.vis.blocks emphasizes building blocks for larger visualizations. Please refer to examples/plots_visualization/12_plots_example.ipynb to get an overview. Importing cedalion.plots will throw a deprecation warning to trigger adoption. By Eike Middell.

  • Renamed LabeledPointCloud to LabeledPoints.

  • Split up the .nirs submodule into .nirs.cw, .nirs.fd and .nirs.td.

  • Merged the submodules cedalion.datasets and cedalion.data. All functions to access example datasets are now available under cedalion.data.

  • The fiducial landmarks of the standard Colin27 and ICBM-152 heads changed. Using the landmark builder 10-10 coordinates were calculated for both heads. These are now available when head models are created with get_standard_headmodel. The example notebook 48_headmodel_landmarks_verification.ipynb documents the origin of all landmarksand quantitatively compares the output of the LandmarkBuilder to published coordinates. By Eike Middell.

  • Added the parameter mode to TwoSurfaceHeadModel.align_and_snap_to_scalp to switch between constrained affine transformations (translation, rotation, isotropic scaling) and unconstrained affine transformations (also anisotropic scaling, shearing and reflection). The default behaviour from align_and_snap_to_scalp was changed from constrained to unconstrained affine transformations.

  • The image reconstruction methods were refactored to offer more regularization methods
    (including spatial basis functions) as well as direct and indirect reconstructions and to provide a simpler interface to the user. All functions are now located under cedalion.dot. By Laura Carlton, Alexander von Lühmann and Eike Middell. (#130)

  • For the Colin27 and ICBM-152 heads the label for the coordinate reference system was changed from 'aligned' to 'mni'.

  • The ninja HD and UHD cap coordinates were changed from a right-handed to a left-handed coordinate system, by Nils Harmening. (#110)

  • Changed the names of several motion correction algorithms from motion_correct.motion_correct_X to motion_correct.X. Argument names were made PEP8 compliant. The example 22_motion_artefacts_and_correction was improved. By Eike Middell.

Deprecated

Removed

Fixed

  • Fixed a bug in motion_correct_wavelet affecting the selection of coefficients for IQR-based thresholding. The issue caused unintended suppression of high-frequency components, particularly near the end of recordings. Changed by Eike Middell.

  • Fixed a bug in the stopping criterion of motion_correct.pca_recurse caused by an inverted boolean mask of motion artifacts, by Eike Middell.

  • Fixed an issue with constant regressors when fitting a GLM using the AR-IRLS method. The autoregressive filter used to account for serial correlations was not properly applied to them. The fix ignores samples at the beginning of the time series until the filter is initialized, by Eike Middell.

Version 25.1.0 (2025-06-22)

All dependencies have been updated to recent versions. Please rebuild the environment.

New Features:

  • Added Schaefer atlas-based parcel labels for ICBM152 and Colin27 head models via FreeSurfer surface mapping, by Shakiba Moradi.

  • Spatial and measurement noise regularization options in image reconstruction, by David Boas. (#86)

  • Improved import of optode and electrode coordinates, by Nils Harmening. (#95)

  • The interfaces for the fluence and sensitivity computations were changed to allow out-of-core computations, by Eike Middell.

  • Precomputed sensitivities for all example datasets, including the ninjaCap whole head probe, are availabe in cedalion.data, by Eike Middell.

  • Make all example notebooks run on Google Colab integration, by Josef Cutler. (#96)

  • Added functionality to add synthetic HRFs to resting state data, by Thomas Fischer. (#77)

  • Added functionality to add synthetic artifacts to fNIRS data , by Josef Cutler.

  • Added AMPD algorithm for heart beat detection from [SBW12], by Isa Musisi.

  • Functionality for global physiology removal, by Alexander von Lühmann. (#106)

  • Multimodal source decomposition methods, including most CCA variants, by Tomas Codina. (#102)

  • The interface to fit GLMs changed. The GLM solver is now based on statsmodels and we integrated the AR-IRLS algorithm, by Ted Huppert and Eike Middell. (#68)

  • Added wavelet motion correction from [MD12], by Josef Cutler. (#72)

  • New multi-view animated image reconstruction plots, by David Boas and Alexander von Lühmann.

  • Thresholding and visualizing probe sensitivity to brain parcels, by Alexander von Lühmann.

  • Improvements to the time-series plots, by David Boas. (#85, #108)

Bugfixes:

Version 25.0.0 (2025-01-21)