algorithms.diagnostics.timediff¶
Module: algorithms.diagnostics.timediff
¶
Time series diagnostics
These started life as tsdiffana.m
 see
http://imaging.mrccbu.cam.ac.uk/imaging/DataDiagnostics
Oliver Josephs (FIL) gave me (MB) the idea of timepoint to timepoint 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)¶ Timepoint to timepoint 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 nontime 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’ : (T1,) array
 array containing the mean (over voxels in volume) of the squared difference from one time point to the next
 ‘slice_mean_diff2’ : (T1, 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:T1, 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:T1.
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')¶ Timepoint to timepoint differences over volumes and slices of image
Parameters: img : Image
The image on which to perform timepoint differences
time_axis : str or int, optional
Axis indexing timepoints. 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’ : (T1,) array
 array containing the mean (over voxels in volume) of the squared difference from one time point to the next
 ‘slice_mean_diff2’ : (T1, 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:T1, 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:T1.