We are running a classification analysis and were wondering about the field cfg.searchlight.spherical. How are the voxels considered to be part of the sphere? Specifically around the edges. Additionally, by making cfg.searchlight.spherical = 0, does the searchlight become a cube?
That’s a great question! All voxels are included that are less than radius from the searchlight center (not less or equal). This means that there aren’t 6 “spikes” looking out of all searchlights, this choice makes them slightly rounder.
Regarding the spherical part: Data are often acquired with a slice gap or non-isotropic voxels. For example, your data may be collected in 2x2x3mm. Since a voxel just counts as a voxel, a regular searchlight would then be larger along the z-axis, i.e. while it is spherical in voxel space, it would be elongated in world space. To correct for this, you can set cfg.searchlight.spherical = 1. It will then use world space and squeeze searchlights along the elongated dimensions, always using the smallest dimension as a reference.
Other searchlight shapes are currently not supported.
Thanks for your answer!
How can we check the number of voxels included in a searchlight? Our guess is that the field cfg.searchlight.size (res_cfg.mat from the resulting files) contains that value, but we haven’t managed to calculate it ourselves. Specifically, with a radius of 3 (voxel units) we get a cfg.searchlight.size = 93.
And could you provide more details about how the searchlight is squeezed?
That is correct. You can calculate this yourself (this mimicks the process of creating our searchlight): sl_size = 3; [x,y,z] = ndgrid(-sl_size:sl_size); % distances in a grid around a center 0 in coordinates x,y,z, we just pick the minimum size for a given radius, it could also be any larger number really, i.e. this is only for computational reasons sl_mask = (x.^2+y.^2+z.^2) < sl_size^2; % this is squared euclidean distance, in your case SL is size 3 disp(sum(sl_mask(:))) % this will provide the number of entries where mask is positive
Not sure how. What is unclear about this statement?
For example, if voxel sizes are bigger for the z direction, then the distance function along the third dimension would be adapted. mask = x.^2 + y.^2 + f*z.^2 < sl_size^2;