Contents
- Anatomical dataset basics
- Show the dataset contents using cosmo_disp. Where can you see the
- There are a lot of zero values in the dataset. Find all non-zero values
- Using cosmo_plot_slices, show a sagittal view of the dataset
- ds.fa.i contains, for each feature (voxel), an index for the
- Advanced exercise: set all voxels around a center voxel at
Anatomical dataset basics
In this example, load a brain as a CoSMoMVPA dataset and visualize it in matlab
- For CoSMoMVPA's copyright information and license terms, #
- see the COPYING file distributed with CoSMoMVPA. #
% Set the path. config = cosmo_config(); data_path = fullfile(config.tutorial_data_path, 'ak6', 's01'); % Set filename fn = fullfile(data_path, 'brain.nii'); % Load with cosmo_fmri_dataset and assign to a variable 'ds' % >@@> ds = cosmo_fmri_dataset(fn); % <@@<
Show the dataset contents using cosmo_disp. Where can you see the
number of voxels in the three spatial dimensions? >@@>
cosmo_disp(ds); % the number of voxels in the spatial dimensions are present in % ds.a.vol.dim, and are also indicated by the sizes of ds.a.fdim.values % <@@< % Show a histogram of all values in the dataset. For bonus points add axis % labels. % Hint: all data is present in ds.samples % >@@> hist(ds.samples, 100); xlabel('intensity'); ylabel('count'); % <@@<
.a .vol .mat [ 0 0 1 -84.9 -0.938 0 0 124 0 0.938 0 -65.8 0 0 0 1 ] .xform 'scanner_anat' .dim [ 256 256 160 ] .fdim .labels { 'i' 'j' 'k' } .values { [ 1 2 3 ... 254 255 256 ]@1x256 [ 1 2 3 ... 254 255 256 ]@1x256 [ 1 2 3 ... 158 159 160 ]@1x160 } .sa struct (empty) .samples [ 0 0 0 ... 0 0 0 ]@1x10485760 .fa .i [ 1 2 3 ... 254 255 256 ]@1x10485760 .j [ 1 1 1 ... 256 256 256 ]@1x10485760 .k [ 1 1 1 ... 160 160 160 ]@1x10485760

There are a lot of zero values in the dataset. Find all non-zero values
in ds.samples, and plot a histogram of those. What do the two bumps represent? >@@>
nonzero_mask = ds.samples ~= 0; nonzero_samples = ds.samples(ds.samples ~= 0); hist(nonzero_samples, 100); xlabel('intensity'); ylabel('count'); % <@@<

Using cosmo_plot_slices, show a sagittal view of the dataset
>@@>
cosmo_plot_slices(ds); % <@@< % Make a copy of the dataset ds_copy = ds;

ds.fa.i contains, for each feature (voxel), an index for the
anterior-posterior position of that voxel. Set all voxels that have a value of less than 100 for ds.fa.i to zero, and plot the results >@@>
ds_copy.samples(ds.fa.i < 100) = 0; cosmo_plot_slices(ds_copy); % <@@< % Store the results in a nifti file for visualization using cosmo_map2fmri output_path = config.output_data_path; fn_out = fullfile(output_path, 'anatomical_dataset_posterior.nii'); % >@@> cosmo_map2fmri(ds_copy, fn_out); % <@@<

Advanced exercise: set all voxels around a center voxel at
i=150,j=100,k=50 within a 40-voxel radius to zero, and display the result
center_ijk = [150; 100; 50]; radius = 40; % >@@> ds_copy2 = ds; all_ijk = [ds_copy2.fa.i; ... ds_copy2.fa.j; ... ds_copy2.fa.k]; % compute difference dimension-wise delta = bsxfun(@minus, center_ijk, all_ijk); % Pythogoras squared_distance_from_center = sum(delta.^2, 1); % define mask mask = squared_distance_from_center <= radius^2; % set voxels to zero ds_copy2.samples(:, mask) = 0; % show result cosmo_plot_slices(ds_copy2); % <@@<
