def get_nii_data_from_folder(folder, use_verbs=False): # inside the folder, search only for betasXX.nii files beta_map_regex = r'betas(\d{2}).nii$' beta_map_filter = re_filter(beta_map_regex) beta_files = filter(beta_map_filter, glob.glob( os.path.join(folder, "*"))) beta_files = sorted(beta_files) # get mask file. It must be in same folder mask_file = os.path.join(folder, "mask.nii") #new_folder = '/volatile/thirion/mygit/worddecoding/brain_reading/fmri/vl100318/fmri/' ## ugly #mask_file = os.path.join(new_folder, "HO_epi.nii") masker = NiftiMasker(mask_file, smooth=3.) masker.fit(beta_files[0]) masked_nii_data = [masker.transform(beta_file) for beta_file in beta_files] # this returns a 3D array with dimensions # (sessions, trials, voxels) masked_nii_data = np.array(masked_nii_data) # return only the useful values: The last 6 are # drift regressors and are thrown away masked_nii_data = masked_nii_data[:, :-6, :] if use_verbs: return masked_nii_data else: # In case we do not want the verbs (default case) # we need to remove the lines corresponding to verbs masked_nii_data = masked_nii_data.reshape(-1, masked_nii_data.shape[-1]) masked_nii_data = masked_nii_data[:, masked_nii_data.std(0) > 0] _, verbs, _, _, _ = parse_stimuli() return masked_nii_data[verbs == False]
def get_nii_data_from_folder(folder, use_verbs=False): # inside the folder, search only for betasXX.nii files beta_map_regex = r'betas(\d{2}).nii$' beta_map_filter = re_filter(beta_map_regex) beta_files = filter(beta_map_filter, glob.glob(os.path.join(folder, "*"))) beta_files = sorted(beta_files) # get mask file. It must be in same folder mask_file = os.path.join(folder, "mask.nii") #new_folder = '/volatile/thirion/mygit/worddecoding/brain_reading/fmri/vl100318/fmri/' ## ugly #mask_file = os.path.join(new_folder, "HO_epi.nii") masker = NiftiMasker(mask_file, smooth=3.) masker.fit(beta_files[0]) masked_nii_data = [masker.transform(beta_file) for beta_file in beta_files] # this returns a 3D array with dimensions # (sessions, trials, voxels) masked_nii_data = np.array(masked_nii_data) # return only the useful values: The last 6 are # drift regressors and are thrown away masked_nii_data = masked_nii_data[:, :-6, :] if use_verbs: return masked_nii_data else: # In case we do not want the verbs (default case) # we need to remove the lines corresponding to verbs masked_nii_data = masked_nii_data.reshape(-1, masked_nii_data.shape[-1]) masked_nii_data = masked_nii_data[:, masked_nii_data.std(0) > 0] _, verbs, _, _, _ = parse_stimuli() return masked_nii_data[verbs == False]
### Visualize the mask ######################################################## import pylab as pl import numpy as np import nibabel pl.figure() pl.axis('off') pl.imshow(np.rot90(nibabel.load(dataset.func[0]).get_data()[..., 20, 0]), interpolation='nearest', cmap=pl.cm.gray) ma = np.ma.masked_equal(mask, False) pl.imshow(np.rot90(ma[..., 20]), interpolation='nearest', cmap=pl.cm.autumn, alpha=0.5) pl.title("Mask") ### Preprocess data ########################################################### nifti_masker.fit(dataset.func[0]) fmri_masked = nifti_masker.transform(dataset.func[0]) ### Run an algorithm ########################################################## from sklearn.decomposition import FastICA n_components = 20 ica = FastICA(n_components=n_components, random_state=42) components_masked = ica.fit_transform(fmri_masked.T).T ### Reverse masking ########################################################### components = nifti_masker.inverse_transform(components_masked) ### Show results ############################################################## components_data = np.ma.masked_equal(components.get_data(), 0) pl.figure() pl.axis('off') pl.imshow(np.rot90(nibabel.load(dataset.func[0]).get_data()[..., 20, 0]),