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

Switch to side-by-side view

--- a
+++ b/R/ct_dcm2nii.R
@@ -0,0 +1,55 @@
+
+#' CT DICOM to NIfTI conversion
+#'
+#' @param basedir (character) directory to get files
+#' @param merge_files Should files be merged, passed do \code{\link{dcm2nii}}
+#' options
+#' @param verbose print diagnostic messages
+#' @param drop_dim passed to \code{\link{readnii}} for dropping empty
+#' dimensions
+#' @param ... Additional parameters passed to \code{\link{dcm2nii}}
+#' @param ignore_roi_if_multiple additional argument to pass to
+#' \code{\link{check_dcm2nii}} to remove ROI overlays if present
+#'
+#' @return A list or singular \code{nifti} image
+#' @export
+#'
+#' @importFrom dcm2niir dcm2nii check_dcm2nii
+#' @importFrom neurobase rescale_img check_nifti
+ct_dcm2nii = function(basedir = ".", merge_files = TRUE,
+                      verbose = TRUE,
+                      drop_dim = TRUE, ...,
+                      ignore_roi_if_multiple = FALSE,
+                      fail_on_error = FALSE) {
+  if (!merge_files) {
+    warning(
+      paste0(
+      "ichseg < v0.19.0 had overridden merge_files = FALSE (bug),",
+      " please be aware for reproducibility."
+      )
+    )
+  }
+  out = dcm2nii(basedir, merge_files = merge_files, verbose = verbose,
+                ...)
+  if (fail_on_error && out$result > 0) {
+    stop("Error in result from dcm2nii and fail_on_error = TRUE")
+  }
+  res = check_dcm2nii(out, ignore_roi_if_multiple = ignore_roi_if_multiple)
+  img = lapply(res, function(x){
+    if (verbose) {
+      message("# reading in image")
+    }
+    img = check_nifti(res, drop_dim = drop_dim)
+    if (verbose) {
+      message("# rescaling data")
+    }
+    img = rescale_img(img, min.val = -1024,
+                      max.val = 3071,
+                      drop_dim = drop_dim)
+  })
+  if (length(res) == 1) {
+    img = img[[1]]
+  }
+  attr(img, "dcm2nii_result") = out$result
+  return(img)
+}
\ No newline at end of file