[3b2327]: / R / radiomics_lung.R

Download this file

58 lines (33 with data), 1.5 kB

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#' 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)
}