pauldmccarthy / fsleyes

This is a mirror. Feel free to use the issue tracker. PRs welcome.
https://git.fmrib.ox.ac.uk/fsl/fsleyes/fsleyes/
Other
22 stars 11 forks source link

Add support for n-dimensional volumes (n>4) #93

Closed smoia closed 1 year ago

smoia commented 3 years ago

I use almost only FSLeyes to visualise nifti volumes, however sometimes I use AFNI programs for analysis (e.g. 3dDeconvolve, 3dLMEr, 3dICC, ...). While FSL libraries standard behaviour is to output either different files or output a non-temporal dimension using the fourth dimension of the nifti volume (e.g. MELODIC IC components), AFNI programs usually reserve the 4th dimensions of volumes for the temporal domain, preferring to use n>4 dimensions (usually the 5th dimension) to output different statistical results (e.g. the beta maps of a GLM). I don't know what is the most common behaviour among other softwares (e.g. ANTs, Freesurfer, ...), although the nifti header supports more than 4 dimensions.

While it's not impossible to split N-dimensional volumes into 3D ones and upload those in FSLeyes, it would be great if FSLeyes could support navigating through those other dimensionalities in order to work naturally with other softwares results (e.g. AFNI), especially if the 4th dimension is de facto empty.

pauldmccarthy commented 3 years ago

Hi @smoia, have you tried playing with the Dimension / Dim setting? It allows you to set which dimension the Volume setting iterates through.

image

https://open.win.ox.ac.uk/pages/fsl/fsleyes/fsleyes/userdoc/overlays.html#volume

smoia commented 2 years ago

Hello @pauldmccarthy ! Thank you for the redirection! How do I set this property in fsl render? Does the --volume flag change dimension when the declared number is higher than the length in the lowest dimension? In that case, which dimension is cycled through first? The highest or the lowest?

pauldmccarthy commented 2 years ago

Aah, unfortunately that option is not exposed on the command-line. I will be releasing a new version of FSLeyes soon though, so will add that to the list.

The --volume option does not affect the selected dimension - it is clamped to the bounds of the selected dimension (which is currently always the fourth, because the dimension option is not yet exposed).

Rather than add a --dimension option which would allow you to select the dimension that the --volume option is applied to, what I might do is add an option which allows a vector of indices to be passed on the command line, specifying the index for each non-spatial dimension. For example, to show the volume [:, :, :, 1, 3, 4] from a 6D image, fsleyes 6d_image.nii.gz --dimensions 1,3,4. Or something like that.

smoia commented 2 years ago

That sounds great, thank you @pauldmccarthy !

pauldmccarthy commented 2 years ago

Hi @smoia apologies for the delay; this option is now available as of FSLeyes 1.4.0 (the --index flag), released a couple of weeks ago :)