Skip to main content

load fMRIprep confounds in python

Project description

load_confounds

Load a sensible subset of the fMRI confounds generated with fMRIprep in python (Esteban et al., 2018). Warning: This package is at an alpha stage of development. The API may still be subject to changes.

Binder All Contributors collaborate brainhack Pipy Badge Codacy Badge Maintainability CircleCI codecov black

Installation

Install with pip (Python >=3.5):

pip install load_confounds

TL;DR

Load confounds using the 36P denoising strategy of Ciric et al. 2017:

from load_confounds import Params36
from nilearn.input_data import NiftiMasker 

# load_confounds auto-detects the companion .tsv file (which needs to be in the same directory)
file = "path/to/file/sub-01_ses-001_bold.nii.gz"
confounds = Params36().load(file)

# Use the confounds in a nilearn maker 
masker = NiftiMasker(smoothing_fwhm=5, standardize=True)
img = masker.fit_transform(file, confounds=confounds)

It is also possible to fine-tune a subset of noise components and their parameters:

from load_confounds import Confounds
confounds = Confounds(strategy=['high_pass', 'motion', 'global'], motion="full").load(file)

You can check our tutorial on MyBinder for more info Binder

Noise components

The following noise components are supported. Check the docstring of Confounds for more info on the parameters for each type of noise.

  • motion the motion parameters including 6 translation/rotation (basic), and optionally derivatives, squares, and squared derivatives (full).
  • high_pass basis of discrete cosines covering slow time drift frequency band.
  • wm_csf the average signal of white matter and cerebrospinal fluid masks (basic), and optionally derivatives, squares, and squared derivatives (full).
  • global the global signal (basic), and optionally derivatives, squares, and squared derivatives (full).
  • compcor the results of a PCA applied on a mask based on either anatomy (anat), temporal variance (temp), or both (combined).
  • ica_aroma the results of an idependent component analysis (ICA) followed by identification of noise components. This can be implementing by incorporating ICA regressors (basic) or directly loading a denoised file (full).
  • scrub regressors coding for time frames with excessive motion, using threshold on frame displacement and standardized DVARS (basic) and suppressing short time windows using the (Power et al., 2014) appreach (full).

Predefined strategies

The predefined strategies are all adapted from Ciric et al. 2017. Check the docstring of each strategy for more info and a list of parameters.

Strategy high_pass motion wm_csf global compcor ica_aroma scrub
Params2 x basic
Params6 x basic
Params9 x basic basic basic
Params9Scrub x basic basic full
Params24 x full
Params36 x full full full
Params36Scrub x full full full
AnatCompCor x full anat
TempCompCor x temp
ICAAROMA x basic full
AROMAGSR x basic basic full
AggrICAAROMA x basic basic basic

A note on nifti files and file collections

Note that if a .nii.gz file is specified, load_confounds will automatically look for the companion tsvconfound file generated by fMRIprep. It is also possible to specify a list of confound (or imaging) files, in which case load_confounds will return a list of numpy ndarray.

A note on low pass filtering

Low pass filtering is a common operation in resting-state fMRI analysis, and is featured in all preprocessing strategies of the Ciric et al. (2017) paper. fMRIprep does not output the discrete cosines for low pass filtering. Instead, this operation can be implemented directly with the nilearn masker, using the argument low_pass. Be sure to also specify the argument tr in the nilearn masker if you use low_pass.

A note on high pass filtering and detrending

Nilearn masker features two arguments to remove slow time drifts: high_pass and detrend. Both of these operations are redundant with the high_pass regressors generated by fMRIprep, and included in all load_confounds strategies. Do not use nilearn's high_pass or detrend options with these strategies. It is however possible to use a flexible Confounds loader to exclude the high_pass noise components, and then rely on nilearn's high pass filterning or detrending options. This is not advised with compcor or ica_aroma analysis, which have been generated with the high_pass components of fMRIprep.

A note on demeaning confounds

Unless you use the detrend or high_pass options of nilearn maskers, it may be important to demean the confounds. This is done by default by load_confounds, and is required to properly regress out confounds using nilearn with the standardize=False, standardize=True or standardize="zscore" options. If you want to use standardize="psc", you will need to turn off the demeaning in load_confounds, which can be achieved using, e.g.:

from load_confounds import Params6
conf = Params6(demean=False)

A note on the choice of strategies

We decided to focus our strategy catalogue on a reasonable but limited set of choices, and followed (mostly) the Ciric et al. (2017) reference. However, there are other strategies proposed in benchmarks such as (Parkes et al. 2018, Mascali et al. 2020). Advanced users can still explore these other choices using the flexible Confounds API, which can be used to reproduce most denoising strategies in a single short and readable command.

A note on denoising benchmarks

There has been a number of benchmarks you may want to refer to in order to select a denoising strategy (e.g. Ciric et al., 2017, Parkes et al. 2018, Mascali et al., 2020). However, a number of caveats do apply and the conclusions of these studies may not directly apply to load_confounds strategies. First, the noise regressors generated by fMRIprep do not necessarily follow the same implementations as these papers did. For example, the way load_confounds implements scrubbing is by adding regressors, while Ciric et al. (2017) excluded outlier time points prior to regressing other confounds. There are also other aspects of the fMRI preprocessing pipelines which are not controlled by load_confounds. For example, Ciric et al. (2017) did apply image distortion correction in all preprocessing strategies. This step is controlled by fMRIprep, and cannot be changed through load_confounds.

Funding

Development of this library was supported in part by the Canadian Consortium on Neurodegeneration in Aging (CCNA) and in part by the Courtois Foundation.

References

Ciric R, Wolf DH, Power JD, Roalf DR, Baum GL, Ruparel K, Shinohara RT, Elliott MA, Eickhoff SB, Davatzikos C., Gur RC, Gur RE, Bassett DS, Satterthwaite TD. Benchmarking of participant-level confound regression strategies for the control of motion artifact in studies of functional connectivity. Neuroimage. 2017. doi:10.1016/j.neuroimage.2017.03.020

Esteban O, Markiewicz CJ, Blair RW, Moodie CA, Isik AI, Erramuzpe A, Kent JD, Goncalves M, DuPre E, Snyder M, Oya H, Ghosh SS, Wright J, Durnez J, Poldrack RA, Gorgolewski KJ. fMRIPrep: a robust preprocessing pipeline for functional MRI. Nat Meth. 2018; doi: 10.1038/s41592-018-0235-4

Mascali, D, Moraschi, M, DiNuzzo, M, et al. Evaluation of denoising strategies for task‐based functional connectivity: Equalizing residual motion artifacts between rest and cognitively demanding tasks. Hum Brain Mapp. 2020; 1– 24. doi: 10.1002/hbm.25332

Parkes, L., Fulcher, B., Yucel, M., & Fornito, A. (2018). An evaluation of the efficacy, reliability, and sensitivity of motion correction strategies for resting-state functional MRI. NeuroImage, 171, 415-436. doi: 10.1016/j.neuroimage.2017.12.073

Power JD, Mitra A, Laumann TO, Snyder AZ, Schlaggar BL, Petersen SE. Methods to detect, characterize, and remove motion artifact in resting state fMRI. Neuroimage 2014 84:320-41. doi: 10.1016/j.neuroimage.2013.08.048

Contributors ✨

Thanks goes to these wonderful people (emoji key):


François Paugam

🚇 💻 👀 ⚠️ 🔣

HanadS

💻 ⚠️ 🔣 🚇 📖 🤔

Elizabeth DuPre

🤔

Hao-Ting Wang

🤔 💻 🔣 📖 ⚠️ 🐛

Pierre Bellec

💻 🐛 🤔 🚇 ⚠️ 🔣 📋 🚧 📆

Steven Meisler

🐛 ⚠️ 🔣 💻 📖 🤔

Chris Markiewicz

🤔

Shima Rastegarnia

🐛

Thibault PIRONT

💻

m-w-w

📖

This project follows the all-contributors specification. Contributions of any kind welcome!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for load-confounds, version 0.11.1
Filename, size File type Python version Upload date Hashes
Filename, size load_confounds-0.11.1.tar.gz (60.7 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page