Diff of /R/ct_dcm2nii.R [000000] .. [242173]

Switch to unified view

a b/R/ct_dcm2nii.R
1
2
#' CT DICOM to NIfTI conversion
3
#'
4
#' @param basedir (character) directory to get files
5
#' @param merge_files Should files be merged, passed do \code{\link{dcm2nii}}
6
#' options
7
#' @param verbose print diagnostic messages
8
#' @param drop_dim passed to \code{\link{readnii}} for dropping empty
9
#' dimensions
10
#' @param ... Additional parameters passed to \code{\link{dcm2nii}}
11
#' @param ignore_roi_if_multiple additional argument to pass to
12
#' \code{\link{check_dcm2nii}} to remove ROI overlays if present
13
#'
14
#' @return A list or singular \code{nifti} image
15
#' @export
16
#'
17
#' @importFrom dcm2niir dcm2nii check_dcm2nii
18
#' @importFrom neurobase rescale_img check_nifti
19
ct_dcm2nii = function(basedir = ".", merge_files = TRUE,
20
                      verbose = TRUE,
21
                      drop_dim = TRUE, ...,
22
                      ignore_roi_if_multiple = FALSE,
23
                      fail_on_error = FALSE) {
24
  if (!merge_files) {
25
    warning(
26
      paste0(
27
      "ichseg < v0.19.0 had overridden merge_files = FALSE (bug),",
28
      " please be aware for reproducibility."
29
      )
30
    )
31
  }
32
  out = dcm2nii(basedir, merge_files = merge_files, verbose = verbose,
33
                ...)
34
  if (fail_on_error && out$result > 0) {
35
    stop("Error in result from dcm2nii and fail_on_error = TRUE")
36
  }
37
  res = check_dcm2nii(out, ignore_roi_if_multiple = ignore_roi_if_multiple)
38
  img = lapply(res, function(x){
39
    if (verbose) {
40
      message("# reading in image")
41
    }
42
    img = check_nifti(res, drop_dim = drop_dim)
43
    if (verbose) {
44
      message("# rescaling data")
45
    }
46
    img = rescale_img(img, min.val = -1024,
47
                      max.val = 3071,
48
                      drop_dim = drop_dim)
49
  })
50
  if (length(res) == 1) {
51
    img = img[[1]]
52
  }
53
  attr(img, "dcm2nii_result") = out$result
54
  return(img)
55
}