ICA-AROMA Software Package: a data-driven method to identify and remove head motion-related artefacts from functional MRI data.
Clone or download
maartenmennes Merge pull request #26 from fladd/master
Python dependencies added
Latest commit a629eb7 Jun 7, 2018

README.md

ICA-AROMA

ICA-AROMA (i.e. ‘ICA-based Automatic Removal Of Motion Artifacts’) concerns a data-driven method to identify and remove motion-related independent components from fMRI data. To that end it exploits a small, but robust set of theoretically motivated features, preventing the need for classifier re-training and therefore providing direct and easy applicability. This beta-version package requires installation of Python2.7 and FSL. Read the provided 'Manual.pdf' for a description on how to run ICA-AROMA. Make sure to first install all required python packages: python2.7 -m pip install -r requirements.txt.

! NOTE: Previous versions of the ICA-AROMA scripts (v0.1-beta & v0.2-beta) contained a crucial mistake at the denoising stage of the method. Unfortunately this means that the output of these scripts is incorrect! The issue is solved in version v0.3-beta onwards. It concerns the Python scripts uploaded before the 27th of April 2015.

Log report (applied changes from v0.2-beta to v0.3-beta):

  1. Correct for incorrect definition of the string of indices of the components to be removed by fsl_regfilt:

    changed denIdxStr = np.char.mod('%i',denIdx) to denIdxStr = np.char.mod('%i',(denIdx+1))

  2. Now take the maximum of the 'absolute' value of the correlation between the component time-course and set of realignment parameters:

    changed maxTC[i,:] = corMatrix.max(axis=1) to corMatrixAbs = np.abs(corMatrix) maxTC[i,:] = corMatrixAbs.max(axis=1)

  3. Correct for the fact that the defined frequency-range, used for the high-frequency content feature, in few cases did not include the final Nyquist frequency due to limited numerical precision:

    changed step = Ny / FT.shape[0] f = np.arange(step,Ny,step) to f = Ny*(np.array(range(1,FT.shape[0]+1)))/(FT.shape[0])