Radiomics entropy=0?

Hi, a quick question.

No matter if I study a label after segmenting the largest cross section of the image or the tumor volume, I keep getting Entropy = -0.0 with Radiomics.

Any tip?
Thanks.
Leandro.

@carba86 Is that the firstorder Entropy? If so, what are the values for firstorder:Range and the value for the setting “binWidth” you used during extraction?

An entropy of 0 usually points to a ‘flat region’, i.e. all voxels have the same gray value AFTER DISCRETIZATION, this can be caused in a situation where the range of grayvalues is (much) smaller than the binwidth, causing all voxels to belong to the same bin: i.e. same grayvalue and a ‘flat region’

Regards,

Joost

Thanks Joost and sorry it’s taken me a while to write you back. Analyzing numbers obtained with Radiomics, I see that this inconsistency does not only happen with Entropy but with other features as well, firstorder specially. I attach screen captures of Radiomics settings and numbers obtained (each column representing a different patient).

I look forward to hearing from you guys, you are always of great help.

Kind regards,
Leandro.

The entropy 0 is indeed caused by a too-large bin width (set to 25 in your case). Many of your scans show a lot lower range (max ~4, range < 5). This will result in flat regions.

Moreover, some of your scans are VERY different (e.g. max ~15,000), which, as predicted, do not result in entropy = 0.

My advise would be to use a parameter file and enable normalization with an adapted bin width. See more on customizing the extraction and the parameter file in pyradiomics’ documentation

Thanks Joost once again.
Do you think binwidth setting will correct other discrepancies I see for example in ngtdm or glcm ?

Yes, although I also advise to enable normalization, as the range in some of your images is very, very large, compared to most of your other images.

Hi Joost, by adapted binwidth do you mean something like this? (my data are MR images, 3D volumes with apron 1 mm slice thickness)

imageType:
Original: {}

featureClass:
shape:
firstorder:
glcm:
glrlm:
glszm:
gldm:

setting:
normalize: true
normalizeScale: 100
interpolator: ‘sitkBSpline’
resampledPixelSpacing: [1, 1, 1]
binWidth: 5
dynamicBinning: true
voxelArrayShift: 300
label: 1

One more thing, I get to different scenes (values of firstorder:range) depending on how I normalize my original images. Which would be the correct option?

  1. NORMALIZING WITH THE SIMPLE FILTER EXTENSION IN 3DSLICER


  1. NORMALIZING WITH PARAMETER FILE

Out of your provided examples, I’d say go for method 2. Using it this way also includes the additional scaling factor (100) which is matched to the binwidth of 5. If you want to use Slicer’s normalization, update the binwidth to 0.05.

As to your parameter file. That looks fine to me. The only comment I have is that parameter dynamicBinning will not be accepted, as it is not part of the master branch of PyRadiomics and therefore also not part of the Radiomics module.

Do you recommend using a binwidth of 5 although range in scene 2 is aprox<350?

@carba86 yes, I generally try to aim for a compromise that results in about 10-100 bins for the bulk of the cases in the dataset.