In [5]:
import numpy as np
import pandas as pd
import nibabel as nib
from nilearn import input_data, image
Define paths to input data (taken from an fmriprep run on OpenNeuro).
In [19]:
bold_T1w_preproc = '/Users/dlurie/Dropbox/Projects/avalanche/avalanche/data/ds000133/sub-01/pre/sub-01_ses-pre_task-rest_run-01_bold_space-MNI152NLin2009cAsym_preproc.nii.gz'
In [20]:
bold_T1w_brainmask = '/Users/dlurie/Dropbox/Projects/avalanche/avalanche/data/ds000133/sub-01/pre/sub-01_ses-pre_task-rest_run-01_bold_space-MNI152NLin2009cAsym_brainmask.nii.gz'
In [8]:
bold_confounds = '/Users/dlurie/Dropbox/Projects/avalanche/avalanche/data/ds000133/sub-01/pre/sub-01_ses-pre_task-rest_run-01_bold_confounds.tsv'
Load confounds.
In [9]:
all_confounds = pd.read_csv(bold_confounds, sep='\t')
In [10]:
all_confounds.columns
Out[10]:
In [12]:
nuisance_vars = all_confounds[['aCompCor00', 'aCompCor01', 'aCompCor02', 'aCompCor03', 'aCompCor04', 'aCompCor05',
'X', 'Y', 'Z', 'RotX', 'RotY', 'RotZ']].copy()
Calculate Friston-24 (Yan et al. variant) Motion Parameters
In [14]:
# Create squared versions of each motion parameter at Tt
for mopar in ['X', 'Y', 'Z', 'RotX', 'RotY', 'RotZ']:
sq_col_name = mopar+'sq'
sq_col_data = np.square(nuisance_vars[mopar])
nuisance_vars.loc[:,sq_col_name] = sq_col_data
In [15]:
zpad = pd.Series([0])
for mopar in nuisance_vars.columns[-12:]:
pv_col_name = mopar+'_t-1'
pv_col_data = zpad.append(nuisance_vars[mopar], ignore_index=True)[:-1]
nuisance_vars.loc[:,pv_col_name] = pv_col_data
In [16]:
nuisance_vars.columns
Out[16]:
Load EPI image and brain mask.
In [21]:
epi_img = image.load_img(bold_T1w_preproc)
In [22]:
mask_img = image.load_img(bold_T1w_brainmask)
Clean EPI image (do not standardize values)
In [41]:
clean_img = image.clean_img(epi_img, detrend=True, standardize=False, confounds=nuisance_vars.as_matrix(), low_pass=0.1, high_pass=0.01, t_r=1.671)
In [42]:
clean_img.to_filename('/Users/dlurie/Dropbox/Projects/avalanche/avalanche/data/ds000133/sub-01/pre/sub-01_ses-pre_task-rest_run-01_bold_space-MNI152NLin2009cAsym_clean.nii.gz')
Clean EPI image (standardize values)
In [39]:
clean_img_std = image.clean_img(epi_img, detrend=True, standardize=True, confounds=nuisance_vars.as_matrix(), low_pass=0.1, high_pass=0.01, t_r=1.671)
In [40]:
clean_img_std.to_filename('/Users/dlurie/Dropbox/Projects/avalanche/avalanche/data/ds000133/sub-01/pre/sub-01_ses-pre_task-rest_run-01_bold_space-MNI152NLin2009cAsym_clean_std.nii.gz')
Smooth standardized image
In [47]:
clean_img_std_fwhm6 = image.smooth_img(clean_img_std, 6)
In [48]:
clean_img_std_fwhm6.to_filename('/Users/dlurie/Dropbox/Projects/avalanche/avalanche/data/ds000133/sub-01/pre/sub-01_ses-pre_task-rest_run-01_bold_space-MNI152NLin2009cAsym_clean_std_fwhm6.nii.gz')
Define paths to input data (taken from an fmriprep run on OpenNeuro).
In [1]:
bold_T1w_preproc = '/Users/dlurie/Dropbox/Projects/avalanche/avalanche/data/ds000133/sub-01/post/sub-01_ses-post_task-rest_run-01_bold_space-MNI152NLin2009cAsym_preproc.nii.gz'
In [2]:
bold_T1w_brainmask = '/Users/dlurie/Dropbox/Projects/avalanche/avalanche/data/ds000133/sub-01/post/sub-01_ses-post_task-rest_run-01_bold_space-MNI152NLin2009cAsym_brainmask.nii.gz'
In [3]:
bold_confounds = '/Users/dlurie/Dropbox/Projects/avalanche/avalanche/data/ds000133/sub-01/post/sub-01_ses-post_task-rest_run-01_bold_confounds.tsv'
Load confounds.
In [6]:
all_confounds = pd.read_csv(bold_confounds, sep='\t')
In [7]:
all_confounds.columns
Out[7]:
In [8]:
nuisance_vars = all_confounds[['aCompCor00', 'aCompCor01', 'aCompCor02', 'aCompCor03', 'aCompCor04', 'aCompCor05',
'X', 'Y', 'Z', 'RotX', 'RotY', 'RotZ']].copy()
Calculate Friston-24 (Yan et al. variant) Motion Parameters
In [9]:
# Create squared versions of each motion parameter at Tt
for mopar in ['X', 'Y', 'Z', 'RotX', 'RotY', 'RotZ']:
sq_col_name = mopar+'sq'
sq_col_data = np.square(nuisance_vars[mopar])
nuisance_vars.loc[:,sq_col_name] = sq_col_data
In [10]:
zpad = pd.Series([0])
for mopar in nuisance_vars.columns[-12:]:
pv_col_name = mopar+'_t-1'
pv_col_data = zpad.append(nuisance_vars[mopar], ignore_index=True)[:-1]
nuisance_vars.loc[:,pv_col_name] = pv_col_data
In [11]:
nuisance_vars.columns
Out[11]:
Load EPI image and brain mask.
In [12]:
epi_img = image.load_img(bold_T1w_preproc)
In [13]:
mask_img = image.load_img(bold_T1w_brainmask)
Clean EPI image (do not standardize values)
In [14]:
clean_img = image.clean_img(epi_img, detrend=True, standardize=False, confounds=nuisance_vars.as_matrix(), low_pass=0.1, high_pass=0.01, t_r=1.671)
In [15]:
clean_img.to_filename('/Users/dlurie/Dropbox/Projects/avalanche/avalanche/data/ds000133/sub-01/post/sub-01_ses-post_task-rest_run-01_bold_space-MNI152NLin2009cAsym_clean.nii.gz')
Clean EPI image (standardize values)
In [16]:
clean_img_std = image.clean_img(epi_img, detrend=True, standardize=True, confounds=nuisance_vars.as_matrix(), low_pass=0.1, high_pass=0.01, t_r=1.671)
In [17]:
clean_img_std.to_filename('/Users/dlurie/Dropbox/Projects/avalanche/avalanche/data/ds000133/sub-01/post/sub-01_ses-post_task-rest_run-01_bold_space-MNI152NLin2009cAsym_clean_std.nii.gz')
Smooth standardized image
In [18]:
clean_img_std_fwhm6 = image.smooth_img(clean_img_std, 6)
In [19]:
clean_img_std_fwhm6.to_filename('/Users/dlurie/Dropbox/Projects/avalanche/avalanche/data/ds000133/sub-01/post/sub-01_ses-post_task-rest_run-01_bold_space-MNI152NLin2009cAsym_clean_std_fwhm6.nii.gz')