def load_example_fmri_dataset(name='1slice', literal=False): """Load minimal fMRI dataset that is shipped with PyMVPA.""" from mvpa2.datasets.sources.openfmri import OpenFMRIDataset from mvpa2.datasets.mri import fmri_dataset from mvpa2.misc.io import SampleAttributes basedir = pathjoin(pymvpa_dataroot, 'haxby2001') mask = {'1slice': pathjoin(pymvpa_dataroot, 'mask.nii.gz'), '25mm': pathjoin(basedir, 'sub001', 'masks', '25mm', 'brain.nii.gz')}[name] if literal: model = 1 subj = 1 openfmri = OpenFMRIDataset(basedir) ds = openfmri.get_model_bold_dataset(model, subj, flavor=name, mask=mask, noinfolabel='rest') # re-imagine the global time_coords of a concatenated time series # this is only for the purpose of keeping the example data in the # exact same shape as it has always been. in absolute terms this makes no # sense as there is no continuous time in this dataset ds.sa['run_time_coords'] = ds.sa.time_coords ds.sa['time_coords'] = np.arange(len(ds)) * 2.5 else: if name == '25mm': raise ValueError("The 25mm dataset is no longer available with " "numerical labels") attr = SampleAttributes(pathjoin(pymvpa_dataroot, 'attributes.txt')) ds = fmri_dataset(samples=pathjoin(pymvpa_dataroot, 'bold.nii.gz'), targets=attr.targets, chunks=attr.chunks, mask=mask) return ds
def load_example_fmri_dataset(): """Load minimal fMRI dataset that is shipped with PyMVPA.""" from mvpa2.datasets.mri import fmri_dataset from mvpa2.misc.io import SampleAttributes attr = SampleAttributes(os.path.join(pymvpa_dataroot, 'attributes.txt')) ds = fmri_dataset(samples=os.path.join(pymvpa_dataroot, 'bold.nii.gz'), targets=attr.targets, chunks=attr.chunks, mask=os.path.join(pymvpa_dataroot, 'mask.nii.gz')) return ds
def load_example_fmri_dataset(name='1slice', literal=False): """Load minimal fMRI dataset that is shipped with PyMVPA.""" from mvpa2.datasets.mri import fmri_dataset from mvpa2.misc.io import SampleAttributes dspath, mask = { '1slice': (pymvpa_dataroot, 'mask.nii.gz'), '25mm': (os.path.join(pymvpa_dataroot, 'tutorial_data_25mm', 'data'), 'mask_brain.nii.gz') }[name] if literal: attr = SampleAttributes(os.path.join(dspath, 'attributes_literal.txt')) else: attr = SampleAttributes(os.path.join(dspath, 'attributes.txt')) ds = fmri_dataset(samples=os.path.join(dspath, 'bold.nii.gz'), targets=attr.targets, chunks=attr.chunks, mask=os.path.join(dspath, mask)) return ds
def load_datadb_tutorial_data(path=os.path.join( pymvpa_datadbroot, 'tutorial_data', 'tutorial_data', 'data'), roi='brain'): """Loads the block-design demo dataset from PyMVPA dataset DB. Parameters ---------- path : str Path of the directory containing the dataset files. roi : str or int or tuple or None Region Of Interest to be used for masking the dataset. If a string is given a corresponding mask image from the demo dataset will be used (mask_<str>.nii.gz). If an int value is given, the corresponding ROI is determined from the atlas image (mask_hoc.nii.gz). If a tuple is provided it may contain int values that a processed as explained before, but the union of a ROIs is taken to produce the final mask. If None, no masking is performed. """ import nibabel as nb from mvpa2.datasets.mri import fmri_dataset from mvpa2.misc.io import SampleAttributes if roi is None: mask = None elif isinstance(roi, str): mask = os.path.join(path, 'mask_' + roi + '.nii.gz') elif isinstance(roi, int): nimg = nb.load(os.path.join(path, 'mask_hoc.nii.gz')) tmpmask = nimg.get_data() == roi mask = nb.Nifti1Image(tmpmask.astype(int), nimg.get_affine(), nimg.get_header()) elif isinstance(roi, tuple) or isinstance(roi, list): nimg = nb.load(os.path.join(path, 'mask_hoc.nii.gz')) if externals.versions['nibabel'] >= '1.2': img_shape = nimg.shape else: img_shape = nimg.get_shape() tmpmask = np.zeros(img_shape, dtype='bool') for r in roi: tmpmask = np.logical_or(tmpmask, nimg.get_data() == r) mask = nb.Nifti1Image(tmpmask.astype(int), nimg.get_affine(), nimg.get_header()) else: raise ValueError("Got something as mask that I cannot handle.") attr = SampleAttributes(os.path.join(path, 'attributes.txt')) ds = fmri_dataset(samples=os.path.join(path, 'bold.nii.gz'), targets=attr.targets, chunks=attr.chunks, mask=mask) return ds