Censor bad volumes from ASL data.

aslCensoring(
  asl,
  mask = NULL,
  nuis = NA,
  method = "outlier",
  reject.pairs = FALSE,
  ...
)

Arguments

asl

input asl image

mask

mask for calculating perfusion

nuis

fixed nuisance parameters

method

one of 'outlier', 'robust', or 'scor'. See Details.

reject.pairs

whether to reject only tag-control pairs of images, as opposed to single images. Rejecting pairs of images is necessary for non-regression-based ASL averaging methods.

...

Additional arguments to pass to censoring method. See Details.

Value

vector of the same length as number of timepoints in asl, with 1 indicating the corresponding timepoint is included and 0 indicating exclusion.

Details

aslCensoring is an interface to ASL timepoint censoring algorithms. Three options are currently provided, with different additional arguments:

  1. outlier Outlier rejection from Tan et al. This method rejects volumes that are either far from the mean of the time-series or whose standard deviation is far from the standard deviations of the individual volumes. Accepts two additional arguments:

    • sigma.mean: how many standard deviations the mean of the volume can be from the mean of all the volumes before being thrown out.

    • sigma.sd: how many standard deviations from the mean of standard deviations can the standard deviation of the volume be before being thrown out.

  2. robust Uses a robust regression approach to estimate volumes with high leverage. Accepts three arguments:

    • nuis: Nuisance regressors to use as covariates.

    • robthresh: Threshold for weights on leverage estimates. Points with weights under this value will be thrown out; defaults to 0.95.

    • skip: Proportion of points to skip when estimating leverage. Defaults to 20 (1/20 of the image is used).

  3. scor SCOR method of Dolui et al. No parameters.

References

Tan H. et al., ``A Fast, Effective Filtering Method for Improving Clinical Pulsed Arterial Spin Labeling MRI,'' JMRI 2009.

Examples

set.seed(1) nvox <- 5 * 5 * 5 * 30 dims <- c(5, 5, 5, 30) voxvals <- array(rnorm(nvox) + 500, dim=dims) voxvals[, , , 5] <- voxvals[, , , 5] + 600 asl <- makeImage(dims, voxvals) censored <- aslCensoring(asl) testthat::expect_equal(mean(censored$asl.inlier), 248.071606610979) testthat::expect_equal(censored$which.outliers, c(5L, 6L))