Exemplo n.º 1
0
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]
Exemplo n.º 2
0
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]
Exemplo n.º 3
0
### 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]),