algorithms.diagnostics.timediff¶
Module: algorithms.diagnostics.timediff
¶
Time series diagnostics
These started life as tsdiffana.m
- see
http://imaging.mrc-cbu.cam.ac.uk/imaging/DataDiagnostics
Oliver Josephs (FIL) gave me (MB) the idea of time-point to time-point subtraction as a diagnostic for motion and other sudden image changes.
Functions¶
-
nipy.algorithms.diagnostics.timediff.
time_slice_diffs
(arr, time_axis=-1, slice_axis=None)[source]¶ Time-point to time-point differences over volumes and slices
We think of the passed array as an image. The image has a “time” dimension given by time_axis and a “slice” dimension, given by slice_axis, and one or more other dimensions. In the case of imaging there will usually be two more dimensions (the dimensions defining the size of an image slice). A single slice in the time dimension we call a “volume”. A single entry in arr is a “voxel”. For example, if time_axis == 0, then
v = arr[0]
would be the first volume in the series. The volumev
above hasv.size
voxels. If, in addition, slice_axis == 1, then for the volumev
(above)s = v[0]
would be a “slice”, withs.size
voxels. These are obviously terms from neuroimaging.- Parameters
arr : array_like
Array over which to calculate time and slice differences. We’ll call this array an ‘image’ in this doc.
time_axis : int, optional
axis of arr that varies over time. Default is last
slice_axis : None or int, optional
axis of arr that varies over image slice. None gives last non-time axis.
- Returns
results : dict
T
is the number of time points (arr.shape[time_axis]
)S
is the number of slices (arr.shape[slice_axis]
)v
is the shape of a volume (rollimg(arr, time_axis)[0].shape
)d2[t]
is the volume of squared differences between voxels at time pointt
and time pointt+1
results has keys:
- ‘volume_mean_diff2’(T-1,) array
array containing the mean (over voxels in volume) of the squared difference from one time point to the next
- ‘slice_mean_diff2’(T-1, S) array
giving the mean (over voxels in slice) of the difference from one time point to the next, one value per slice, per timepoint
- ‘volume_means’(T,) array
mean over voxels for each volume
vol[t] for t in 0:T
- ‘slice_diff2_max_vol’v[:] array
volume, of same shape as input time point volumes, where each slice is is the slice from
d2[t]
for t in 0:T-1, that has the largest variance acrosst
. Thus each slice in the volume may well result from a different difference time point.
- ‘diff2_mean_vol``v[:] array
volume with the mean of
d2[t]
across t for t in 0:T-1.
- Raises
ValueError : if time_axis refers to same axis as slice_axis
-
nipy.algorithms.diagnostics.timediff.
time_slice_diffs_image
(img, time_axis='t', slice_axis='slice')[source]¶ Time-point to time-point differences over volumes and slices of image
- Parameters
img : Image
The image on which to perform time-point differences
time_axis : str or int, optional
Axis indexing time-points. Default is ‘t’. If time_axis is an integer, gives the index of the input (domain) axis of img. If time_axis is a str, can be an input (domain) name, or an output (range) name, that maps to an input (domain) name.
slice_axis : str or int, optional
Axis indexing MRI slices. If slice_axis is an integer, gives the index of the input (domain) axis of img. If slice_axis is a str, can be an input (domain) name, or an output (range) name, that maps to an input (domain) name.
- Returns
results : dict
arr refers to the array as loaded from img
T
is the number of time points (img.shape[time_axis]
)S
is the number of slices (img.shape[slice_axis]
)v
is the shape of a volume (rollimg(img, time_axis)[0].shape
)d2[t]
is the volume of squared differences between voxels at time pointt
and time pointt+1
results has keys:
- ‘volume_mean_diff2’(T-1,) array
array containing the mean (over voxels in volume) of the squared difference from one time point to the next
- ‘slice_mean_diff2’(T-1, S) array
giving the mean (over voxels in slice) of the difference from one time point to the next, one value per slice, per timepoint
- ‘volume_means’(T,) array
mean over voxels for each volume
vol[t] for t in 0:T
- ‘slice_diff2_max_vol’v[:] image
image volume, of same shape as input time point volumes, where each slice is is the slice from
d2[t]
for t in 0:T-1, that has the largest variance acrosst
. Thus each slice in the volume may well result from a different difference time point.
- ‘diff2_mean_vol``v[:] image
image volume with the mean of
d2[t]
across t for t in 0:T-1.