Current version: PhysIO Toolbox Release R2022a, v8.1.0
April 5th, 2022
- Compatibility of whole code base with Matlab compiler in order to run
spm_make_standalone
- provides oppurtunity to run SPM Batch Editor GUI version of PhysIO without Matlab license requirement
- compiled version readily available within Neurodesk
- BIDS Read-in for separate cardiac/respiratory trace files (e.g., due to different sampling frequencies)
- see GitHub Issue #164 and pull request #167 by @alexsayal
- Additional unit tests for new read-in and example data
- Switch for certain toolbox functions (e.g.,
imtool
) to only run in non-compiled code
- Documentation (function headers, see Github issue #149)
- Typos in unused function (spotted in compilation)
- Synchronization SIEMENS AcquisitionLog / Physiological files (see Github issue #172)
- better visualization of sync, clearer error messages if dummy scans not found
- Citation of novel TAPAS paper in README and CITATION
-
New method for computing respiratory volume per unit time (RVT) via the Hilbert transform.
- Publication: Harrison et al., "A Hilbert-based method for processing respiratory timeseries", NeuroImage, 2021. https://doi.org/10.1016/j.neuroimage.2021.117787
- This is now the default option, but the old method is available by
setting
physio.model.rvt.method = 'peaks'
(or the equivalent within the SPM batch editor).
-
Respiratory preprocessing now includes an optional de-spiking step based on median filtering.
-
Now possible to change the frequencies of the respiratory filtering during preprocessing via
physio.preproc.respiratory.filter
(or the equivalent within the SPM batch editor). -
More robust detrending of raw respiratory timeseries via windowed padding before filtering.
- version number
physio.version
in physio-struct (Gitlab issue #101)
- Subfolder of SPM in path (fieldtrip) created ambiguous function calls
to overloaded functions (Gitlab issue #102 and Gihub issue #110)
- e.g.,
filtfilt
intapas_physio_filter_respiratory
created flat regressors for v7.3 for Siemens VD example dataset - now subfolders of SPM will be removed when calling
tapas_physio_main_create_regressors
- e.g.,
- PPU read-in works for BioPac mat-file now
- correct column labels and cardiac modality (Github Issue #103)
- thank you to Manon Durand-Ruel @mdurandruel for reporting
- Added descriptive names for the multiple regressors matrix.
- Closes GitLab issue #82.
- Now possible to straightforwardly inspect
physio.model.R
and the contents ofphysio.model.output_multiple_regressors
usingphysio.model.R_column_names
. - Added
tapas_physio_guess_regressor_names()
to maintain backwards compatibility.
- New example datasets Siemens VB PPU3T with DICOM Sync (courtesy of Alexander Ritter, Jena, Germany)
- More versatile control on figure visibility, saving and closing during
main
andreview
runs of PhysIO- feature provided by Stephan Heunis, TU Eindhoven, The Netherlands (github issue #89)
- figures can now be plotted in the background without disturbing interactive Matlab sessions, and can be (more) selectively saved and closed during execution of
tapas_physio_review
- more comprehensive support within
tapas_physio_main_create_regressors
to follow
- Bug(s) when checking SPM and PhysIO paths in
tapas_physio_init
under certain particular Matlab path environment settings (Gitlab merge request !37)- e.g., when add
physio-public/code
manually without subfolder - or if spm existed as a folder name without being added to path
- e.g., when add
- Reimplemented
tapas_physio_filter_respiratory.m
.- Closes GitLab issue #98.
- Reduces the cut-off frequency of the high-pass filter, so as to behave more like a detrending step. Previous value of 0.1 Hz could distort e.g. sigh breaths, which can easily last upwards of 10 s.
- Reimplements the filters themselves, with a higher filter order, extra padding, and a two step high-pass and low-pass procedure (i.e. rather than band pass) to improve the overall stability.
- Meaningful error message for
auto_matched
peak detection, if time series is too short- at least 20 peaks (and pulse templates) are required to create a pulse template
- this is now stated explicitly, if time series is too short
- reported by Joy Schuurmans Stekhoven, TNU, as gitlab issue #92
- Corrected documentation for
preproc.cardiac.initial_cpulse_select.min
parameter- threshold for peak relative to z-scored time series, not correlation
- reported by Sam Harrison, TNU, as gitlab issue #95
- Stop docked figure default throwing error with
-nodisplay
- allows generating saved figure without a display, e.g., on remote server
- bugfix provided by Sam Harrison, TNU
- Bugfix manual peak selection (Github issue #85, Gitlab #90)
- did not work because of figure handling
- Bugfix Siemens VB (
*.resp, *.puls, *.ecg
)- Synchronization to DICOM time stamp did not work for extended physiological recordings (not starting/ending with functional run) due to ignored absolute start time stamp
- reported by Alexander Ritter, Jena, Germany (Github issue #55, Gitlab #87)
- probably fixes Github issue #63 (Gitlab #86) as well
- PhysIO: removed Matlab statistics toolbox dependency for PCA by SVD implementation (thanks to Benoît Beranger, pull request 64)
- new function
tapas_physio_pca
allows for switch between stats and native SVD implementation of PCA - comes with unit tests checking equivalency
- new function
requirements.txt
making dependencies on Matlab and specific toolboxes explicitmax_heart_rate_bpm
now a user parameter to adjust prior on max allowed heart rate for cardiac pulse detection (method = 'auto_matched'
)- bandpass-filtering of cardiac data during preprocessing now possible
(
preproc.cardiac.filter
) - Added integration tests for all examples in
tests/integration
for both SPM Batch Editor and Matlab-only configuration scripts. Reference data provided inexamples/TestReferenceResults/examples
- Toned down and replaced irrelevant peak height and missing cardiac pulse warnings (github issue #51)
- Updated README to include external contributors and recent findings about impact of physiological noise for serial correlations (Bollmann2018)
- Added unit tests for convolution and moved all to
tests/unit
- Corrected half-width shift of response functions for HRV and RVT regressors by
erroneous use of Matlab
conv
- For details on the bug, its impact and fix, see our specific Release Info on RVT/HRV Bugfix
- other references: TNU gitlab issue #83, found and fixed by Sam Harrison,
TNU, see
tapas_physio_conv
)
- Bugfix
tapas_physio_init()
not working, because dependent on functions inutils
subfolder not in path;utils
added to path tapas_physio_review
for motion parameters (found and fixed by Sam Harrison, TNU)- visualization error for regressor orthogonalization (github issue #57),
when only
'RETROICOR'
set was chosen
- BIDS reader and example (Brain Imaging Data Structure,
http://bids.neuroimaging.io/bids_spec.pdf) for
*_physio.tsv[.gz]/.json
files - Added BioPac txt-File read-in and example
- Template example with all physio-fields for matlab script and settings as in default SPM batch
- Started unit testing framework in folder
tests
- example functions for findpeaks and BIDS readin
- reference data saved with example data in subfolder
TestReferenceResults
- reference data reflects physio structure after running example scripts with PhysIO R2019a
- put all functions in
code
into subfolders relating to different modules:readin
,sync
,preproc
,model
,assess
,utils
(gitlab-issue #58)- updated deployment
tapas_physio_init
because of that - updated figure names to reflect respective code module
- updated deployment
- matlab-script examples now contain more comments
- fixed internal bug that prepended absolute paths to input logfiles in automatic example generation
tapas_physio_create_noise_rois_regressors
with more flexible ROI reslicing options (speed-up) and usesspm_erode
(no Matlab image processing toolbox needed), thanks to a contribution by Benoît Béranger- introduced semantic version numbers for all previous releases, and changed Release numbering to R style
- extended documentation (FAQ, new read-in BIDS)
- several bugfixes (Sep 18 - Mar 19), see GitHub Issues
tapas_physio_findpeaks
now refers to current Matlab signal processing toolbox implementation, instead of copy of older version- some Matlab toolbox dependencies by custom simplified functions (e.g.,
suptitle
)
- fixed bug for matching of Philips SCANPHYSLOG-files (Gitlab #62), if physlogs were acquired on different days, but similar times
- BioPac txt-file reader (for single file, resp/cardiac/trigger data in different columns)
- fixed bug for 3D nifti array read-in in tapas_physio_create_noise_rois_regressors (github issue #24, gitlab #52)
- documentation.{html,pdf} export nicer with different FAQ numbering
- initialization function
tapas_physio_init()
to check Matlab paths, including SPM for batch processing - Extended motion diagnostics via Framewise displacement (Power et al., 2012)
- Outlier motion models generate 'spike' regressors from FD outliers (gitlab issue #)
- Censoring of intervals with bad physiological recordings in RETROICOR regressors (github issue #11, gitlab #36)
- Added examples of Siemens VD (Tics Format, Prisma) and Human Connectome Project (HCP) format
- Updated read-in examples of all vendors (Siemens, Philips, GE) to latest PhysIO Toolbox version.
- Updated
README.md
to reflect changes to example download, new references - Extended Wiki documentation, in particular examples and read-in formats
- Included references to external ETH gitlab physio-doc repo and wiki
- New Human Connectome Project reader for preprocessed Siemens 3-column logfiles (
*Physio_log.txt
) - Updated Siemens Reader for Multiband patches(CMRR), versions EJA_1
- including multi-echo data (4,5 columns)
- multi-channel ECG data
- significant speed up of read-in
- generalized framework for later changes to format
- interpolation of different sampling rates RESP/CARDIAC
- updated README about documentation, new support policy and TAPAS on GitHub
- extended FAQ
- Included Markdown-based documentation via Wiki (also CITATION, LICENSE, CHANGELOG.md)
- Included FAQ in Wiki
- Split git repositories into public, dev, examples, and added wiki, to disentangle development from deployed toolbox code and data
- Bugfix and Typo correction
- Philips SCANPYHSLOG for their software release 5.1.7.
- Substantially improved Siemens interface, both for VB/VD and 3T/7T releases
- several bugfixes
- based on extensive user feedback from Berlin and Brisbane
- New functionality tapas_physio_overlay_contrasts.m to display non-physio contrasts automatically as well
- Software version for accepted PhysIO Toolbox Paper: doi:10.1016/j.jneumeth.2016.10.019
- Tested and expanded versions of examples
- Improved stability by bugfixes and compatibility to Matlab R2016
- Slice-wise regressor creation
- Detection of constant physiological time series (detachment, clipping)
- Refactoring of report_contrasts and compute_tsnr_gains as standalone functionality
- Improved Read-in capabilities (Siemens respiration data, BioPac .mat)
- Migration from svn (r904) to git (tnurepository) for version control
- Software version for Toolbox Paper submission
- Noise ROIs modeling
- Extended motion models (24 parameters, Volterra expansion)
- HRV/RVT models with optional multiple delay regressors
- Report_contrasts with automatic contrast generation for all regressor groups
- compute_tsnr_gains for individual physiological regressor groups
- consistent module naming (scan_timing, preproc)
- Visualisation improvement (color schemes, legends)
- Compatibility tested for SPM12, small bugfixes Batch Dependencies
- Cleaner Batch Interface with grouped sub-menus (cfg_choice)
- new model: 'none' to just read out physiological raw data and preprocess, without noise modelling
- Philips: Scan-timing via gradient log now automatized (gradient_log_auto)
- Siemens: Tics-Logfile read-in (proprietary, needs Siemens-agreement)
- All peak detections (cardiac/respiratory) now via auto_matched algorithm
- Adapt plots/saving for Matlab R2014b
- Read-in of Siemens plain text log files; new example dataset for Siemens
- Speed up and debugging of auto-detection method for noisy cardiac data => new method thresh.cardiac.initial_cpulse_select.method = 'auto_matched'
- Error handling for temporary breathing belt failures (Eduardo Aponte, TNU Zurich)
- slice-wise regressors can be created by setting sqpar.onset_slice to a index vector of slices
- SPM matlabbatch GUI implemented (Call via Batch -> SPM -> Tools -> TAPAS PhysIO Toolbox)
- improved, automatic heartbeat detection for noisy ECG now standard for ECG and Pulse oximetry (courtesy of Steffen Bollmann)
- QuickStart-Manual and PhysIO-Background presentation expanded/updated
- job .m/.mat-files created for all example datasets
- bugfixes cpulse-initial-select method-handling (auto/manual/load)
- Cardiac and Respiratory response function regressors integrated in workflow (heart rate and breathing volume computation)
- Handling of Cardiac and Respiratory Logfiles only
- expanded documentation (Quickstart.pdf and Handbook.pdf)
- read-in of custom log files, e.g. for BrainVoyager peripheral data
- more informative plots and commenting (especially in tapas_physio_new).
- computation of heart and breathing rate in Philips/PPU/main_PPU.m
- prefix of functions with tapas_*
- complete modularization of reading/preprocessing/regressor creation for peripheral physiological data
- manual selection of missed heartbeats in ECG/pulse oximetry (courtesy of Jakob Heinzle)
- support for logfiles from GE scanners (courtesy of Steffen Bollmann, KiSpi Zuerich)
- improved detection of pulse oximetry peaks (courtesy of Steffen Bollmann)
- improved documentation
- consistent function names (prefixed by "physio_")
NOTE: Your main_ECG/PPU.m etc. scripts from previous versions (<=r159) will not work with this one any more. Please adapt one of the example scripts for your needs (~5 min of work). The main benefit of this version is a complete new variable structure that is more sustainable and makes the code more readable.