Skip to content

Global radiomics feature calculation parameters

Aditya P. Apte edited this page Jun 25, 2020 · 28 revisions

Parameters used for radiomics calculation are supplied via user-defined .json file. Users can create a copy of the template .json file and modify as per the dataset. Following sections describe various elements of radiomics settings in details.

Structure names:

Names of structures to extract radiomics are specified via the structures field. Users can standardize structure names by using this tool. An example definition of structures field with two structures, roi1 and roi2 is as shown below:

"structures": ["roi1","roi2"]

Image types:

Radiomics can be calculated for the original and the derived images. All derived images under the texture calculation are supported. An example definition of imageType field with original and wavelet filtered images is as shown below:

"imageType": {
  		  "Original": {},
		  "Wavelets": {
				"Wavelets": "Haar",
				"Index": "",
				"Direction": "HLH"
			      }

              }

It is possible to specify multiple parameters for the same class of the derived image as a list of parameter dictionaries. For example, to extract radiomics from different directional filtered wavelet images:

"imageType": {
  		  "Original": {},
		  "Wavelets": [{
				"Wavelets": "Haar",
				"Index": "",
				"Direction": "HLH"
			      },
                              {
				"Wavelets": "Haar",
				"Index": "",
				"Direction": "HHH"
			      }]

	    }

Settings for various features:

Settings for various types of radiomics features are specified within the settings dictionary. Additionally, the perturbation dictionary specifies the sequence of perturbation chains (Zwanenburg et al) to be applied before feature extraction. This dictionary can be left empty in case no perturbation is to be applied. Note that this dictionary will be left empty for radiomics extraction for outcomes modeling.

"settings": {		   
    "resample": { # Leave empty if no resampling is required
		 "resolutionXCm": 0.1, # resampling resolution in L-R
		 "resolutionYCm": 0.1, # resampling resolution in A-P
		 "resolutionZCm": 0.1, # resampling resolution in S-I
		 "interpMethod": "sinc" # "linear" or "sinc"
	         },
   "padding": { # Leave empty if no padding is required
                "method": "expand",   # Padding method. Supported options include "expand","padzeros", 
                                      # "circular","replicate","symmetric", and "none".
                "size": [5,5,5]       # Amount of padding [no. rows, no. cols, no. slices] 
              }, 
   "perturbation": { # Leave empty if no perturbation is required
 	            "sequence": "RV", # any combination of RVCT
	            "angle2DStdDeg": 7, # std dev to sample angle from normal distribution.
		    "volScaleStdFraction": 0.01, # std dev to sample volume scale from normal distribution.
		    "superPixVol": 0.005 # volume of super pixel in cc
		   },

    "firstOrder" :{ 
		   "binWidthEntropy": 25, #Used to discretize image for entropy calculation.
		   "offsetForEnergy": 0 # Typically, set to 1000 for CT scans and 0 for other modalities with (+)ve image intensities.
                  },
    "texture" :{ 
                 "numGrLevels": [], # number of gray levels to use. Leave empty to use a fixed binwidth.
	         "binwidth": 25, # binwidth to discretize an image.
                 "minSegThreshold": -500, # minimum segmentation threshold. Segmentation mask is adjusted to exclude voxels below this value.
                 "maxSegThreshold": 1000, # maximum segmentation threshold. Segmentation mask is adjusted to exclude voxels above this value.
		 "minClipIntensity": -500, # minimum clipping intensity. Values less than this are clipped to this value. Clipping is used to ensure identical bins (same start & end intensities across a cohort). Can be left empty to use min intensity from the dataset.
		 "maxClipIntensity": 1000, # maximum clipping intensity. Values greater than this are clipped to this value.  Clipping is used to ensure identical bins (same start & end intensities across a cohort). Can be left empty to use max intensity from the dataset.
                 "directionality": "2D", # "2D" (4 directional offsets are used - 0,45,90,135) or "3D" (13 directional offsets are used)
		 "avgType": "feature", # "feature" (average of features from different offsets)  or "textureMatrix" (feature resulting from texture matrix averaged across different offsets)
		 "voxelOffset": 1, # voxel neighbor distance for Haralick texture calculation.
		 "patchRadiusVox": [3, 3, 3], # patch radius for NGTDM and NGLDM features. Resulting patches are of size 2*patchRadiusVox + 1
		 "imgDiffThresh": 10 # difference threshold for NGTDM and NGLDM features.
                },

    "shape" :{ 
	      "rcs": [] # [numRows, numCols, numSlics] to resample scan for shape calculation.. This should be chosen to create a fine enough mesh without too much computational overload. Leave empty to use the resolution same as that of the image.
             },

    "peakValley" :{ 
		   "peakRadius": [2, 2, 0], # neighborhood patch radius for averaging intensities.
		   "units": "vox"  # Supported options: "vox" (voxels), "cm" (physical units).	
                  },

    "ivh" :{ 
	    "binwidth": 0.1,
	    "xForIxCc": [200,300,400], # Vector of absolute intensities (e.g. -50:20:100 for    CT, 0:2:28; % PET SUV).
            "xForIxPct": [20, 30, 40], # Vector of percentage volumes
            "xForVxAbs": [0, 10, 30], # Vector of absolute volumes [cc]
	    "xForVxPct": [10, 30, 30] # Vector of percent intensity cutoff			    
           }		   	

       }

Features

Extraction of features belonging to a particular class is specified via featureClass dictionary. The dictionary for each feature class contains the featureList field which lists the features required for that class. If featureList contains all, then all features will be generated for that class.

"featureClass":{
			

        "shape": {
	           "featureList": ["compactness","sphericity"]
                 },

        "firstOrder": {
			"featureList": ["totalEnergy"]
	              },

	"glcm": {
	         "featureList": ["all"]
                },

	"glrlm": {
		   "featureList": ["RLN"]                                 
	         },

	"glszm": {
			          
                 },

	"gldm": {
			    
                },

	"gtdm": {			    	
                                  
	         }

               }

Clone this wiki locally