Package: nii-plot
nii-plotPlot mean NIfTI timeseriesInstallationpipinstallnii-plotMotivationWhen dealing with volumetric timeseries data it can be useful to view a high-level aggregate view of the timeseries.This package provides a way to easily visualize 4D NIfTI images by plotting the volume-wise mean timeseries.For example, a command like:nii-plot-i'1:'-t'Multi-delay PCASL'/path/to/nii/file.nii.gzmight yield something like:Usagenii-plotexposes a CLI:nii-plot$ nii-plot --help
usage: nii-plot [-h] [-p PERCENTILE | -m MASK] [-i INDEX_SPEC]
                [-s | -q | -l] [-t TITLE] [-x X_LABEL] [-y Y_LABEL]
                [-v] [-D]
                path

positional arguments:
  path                  The NIfTI file

optional arguments:
  -h, --help            show this help message and exit
  -p PERCENTILE, --percentile PERCENTILE
                        Percentile to use to threshold the data.
                        Value in the image above that percentile
                        will be used in computing the volume-wise
                        means. (default: 50.0)
  -m MASK, --mask MASK  Mask NIfTI image. Only non-zero voxels in
                        this image are included in the mean
                        computation. Must be the same (spatial)
                        shape as the input file.
  -i INDEX_SPEC, --index-spec INDEX_SPEC
                        Volume indicies to include in the plot. Can
                        use numpy-like slicing (start:stop[:step]),
                        for example, to plot the first volume, then
                        the 10th and 11th volumes, then from the
                        16th to the end, we could write:
                        '0,9:11,15:'. (default: '::')
  -s, --scatter         Plot the mean time series as a scatter plot
  -q, --paired-scatter  Plot a paired scatter plot (useful for ASL
                        data)
  -l, --line            Plot the mean time series as a line chart
  -t TITLE, --title TITLE
                        Plot title
  -x X_LABEL, --x-label X_LABEL
                        X-axis label
  -y Y_LABEL, --y-label Y_LABEL
                        Y-axis label
  -v, --version         show program's version number and exit
  -D, --debug           run program in debug modeSupplying a maskBy default,nii-plotwill threshold the input image,excludingfrom the mean computationall voxels with values falling below the 50th percentile.This choice of percentile value at which to threshold may not be desirable, hence the value can be changed via the-p/--percentileoption. The argument to this option should be an int or float between0and100. To effectively "turn off" thresholding you can specify:--percentile=0.If you would prefer that the mean computation happen only across voxels in a specific mask, then you can use the-m/--maskoption (mutually exclusive to-p/--percentile). In this case the volume-wise mean computation willonly include voxels which correspond to voxels in the mask image whose value is greater than 0.Selecting which volumes to plotYou can choose which volumes are plotted bynii-plotby supplying anindex spec.An index spec is a comma-separated list of strings where each entry in the list is either an integer (i.e. a volume index) or a numpy-style slice expression (start:stop[:step]).For example, to plot the 1st volume, the 10th and 11th volumes, and the 16th volume to the end of the timeseries, we could write:0,9:11,15:, i.e. this is a comma-separated list of 3 values:0,9:11, and15:.0means include the0thvolume,9:11means include all volumes from index9(inclusive) to index11(exclusive),15:means include all volumes from index15(inclusive) to the end of the timeseries.IMPORTANT: volume indexing is0-basedPlot typeBy default,nii-plotwill produce a line plot (as shown above). You can change to a scatter plot using the-s/--scatterflag.There is another plot type which is useful when visualizing ASL data, which is thepaired-scatterplot (-q/--paired-scatter), which looks like:ContributingHave or install a recent version ofpoetry(version >= 1.1)Fork the repoSetup a virtual environment (however you prefer)Runpoetry installRunpre-commit installAdd your changes (adding/updating tests is always nice too)Commit your changes + push to your forkOpen a PR