Dataset Basics

Load datasets using cosmo_fmri_dataset

This function loads data stored in a nifti file and return a dataset struct where the data are stored in the 2-D array in field dataset.samples

For each of the three masks ('brain','ev','vt'), print the number of voxels when loading the dataset with that mask.

Hint: the number of voxels is given by the number of columns in dataset.samples

  1. For CoSMoMVPA's copyright information and license terms, #
  2. see the COPYING file distributed with CoSMoMVPA. #

Contents

Set the datapath

config=cosmo_config();
data_path=fullfile(config.tutorial_data_path,'ak6','s01');

Compute number of voxels in each mask

Hints: -In order not to get overwhelmed, solve a simple problem first and then generalize from it. -First write some code in which you load data with full brain mask. Generalization: -Next, you could just copy and alter that code such that you do the same thing with the other masks -A more elegant solution would be to put the three mask names into a cell array and to write a loop that performs the same set of operations on the members of the cell array (i.e. the three different mask names

% Let's start with the simple approach.
% Set the filename
% >@@>
mask_fn = fullfile(data_path, 'brain_mask.nii');
% <@@<

% Load the dataset and store in struct 'ds'
% >@@>
ds=cosmo_fmri_dataset(mask_fn);
% <@@<

% Compute number of features that are greater than zero
% hint: use ds.samples
nfeatures=sum(ds.samples>0);

fprintf('There are %d voxels in the whole brain mask\n', nfeatures);
% <@@<

% Now do the same with the EV and VT masks.
% >@@>
mask_fn = fullfile(data_path, 'vt_mask.nii');
ds=cosmo_fmri_dataset(mask_fn);
nfeatures=sum(ds.samples>0);

fprintf('There are %d voxels in the ventral-temporal mask\n', nfeatures);

mask_fn = fullfile(data_path, 'ev_mask.nii');
ds=cosmo_fmri_dataset(mask_fn);
nfeatures=sum(ds.samples>0);
fprintf('There are %d voxels in the early-visual brain mask\n', nfeatures);

% <@@<
%
% And here is space for the more elegant solution in which you define a
% list of mask names and apply the operation in a loop for all masks in the
% list
maskNames = {'brain_mask.nii', 'vt_mask.nii', 'ev_mask.nii'};
data_fn = fullfile(data_path, 'glm_T_stats_perrun.nii');

for iMask=1:numel(maskNames)
    % >@@>
    mask_fn=fullfile(data_path, maskNames{iMask});
    ds=cosmo_fmri_dataset(mask_fn);
    nfeatures=sum(ds.samples>0);
    fprintf('There are %6d voxels in the mask ''%s''\n', nfeatures, maskNames{iMask});
    % <@@<
end
There are 43822 voxels in the whole brain mask
There are 400 voxels in the ventral-temporal mask
There are 300 voxels in the early-visual brain mask
There are  43822 voxels in the mask 'brain_mask.nii'
There are    400 voxels in the mask 'vt_mask.nii'
There are    300 voxels in the mask 'ev_mask.nii'