R/radiomics_lung.R

Defines functions radiomics_lung

Documented in radiomics_lung

#' Radiomic Calculation on Lung CTs
#'
#' Calculate individual radiomic features on the whole 3D lung, left and right lungs separately
#'
#' @param img CT scan in ANTs image file format
#' @param mask Mask of CT scan in ANTs image file format
#' @param sides Choose to calculate radiomic features on the right and/or left lungs. Note: Right lung = 1, left lung = 2, non-lung = 0
#' @param featuresFirst First level radiomic features to calculate
#' @param featuresSpatial Spatial radiomic features to calculate
#'
#' @return Values from selected features for both left and right lungs
#' @importFrom ANTsR maskImage
#' @export
radiomics_lung <- function(img,
                          mask,
                          sides = c("right", "left"),
                          featuresFirst = c('mean', 'sd', 'skew', 'kurtosis', 'min', 'q1', 'median', 'q3', 'max','energy', 'rms', 'uniformity', 'entropy'),
                          featuresSpatial = c('mi', 'gc', 'fd')){

  featuresMask <- lapply(sides, function(side){

    if(side == "right"){mv = 1}
    if(side == "left"){mv = 2}

    # Put image in array format and remove non-mask values
    img2 <- as.array(img)
    mask2 <- as.array(mask)
    img2[mask2 != mv] <- NA

    # Calculate features
    features1 <- radiomics_first(img2, featuresFirst)
    features2 <- radiomics_spatial(img2, featuresSpatial)
    return(c(features1, features2))
  })
  names(featuresMask) <- sides

  return(featuresMask)
}
neuroconductor-devel/lungct documentation built on April 1, 2021, 4:40 a.m.