AIM-Harvard / pyradiomics

Open-source python package for the extraction of Radiomics features from 2D and 3D images and binary masks. Support: https://discourse.slicer.org/c/community/radiomics
http://pyradiomics.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
1.14k stars 493 forks source link

shifting intensity range of normalized images + shape features of 2D extraction #402

Closed DonnieKim411 closed 5 years ago

DonnieKim411 commented 6 years ago

Hello Radiomics community!

I have some questions regarding to dealing with negative intensity voxels.

I have brain tumor (glioma) MRI data set and it has been normalized relative to white matter (subtract mean and divide by iqr of white matter). Hence, some tumor region voxels have negative values.

Now, I understand that voxelarrayshift is implemented to

ensure that voxels with the lowest gray values contribute the least to Energy, instead of voxels with gray level intensity closest to 0

Which makes sense. Now, it also made me wonder if I can do the same with some other metrics, like 90th percentile, 10th percentile, mean, minimum ,maximum, etc...

The reason I am asking is... all it really does is "shifting" from one range to other. And later on, say I wanna perform "feature selection" ... and I wanna do univariate analysis which only takes non-negative values...

So the question is... what would be the confounding factors?

Separately, I am trying to do 2D feature extraction and I am trying to figure out which of the "shape" features would be irrelevant if I do so... any insight on this?

Cheers,

JoostJM commented 6 years ago

As to your first question, this is implemented to ensure the expected behaviour in those features (which assume that to lowest feature values have the lowest contribution to the overall value. This only holds true in case of non-negative intensities, due to a square in the formula).

Your use case is somewhat different, as pyradiomics has multiple features which may produce negative results even when all source image intensities are positive.

What kind of univariate analysis are you planning to do that requires only non-negative numbers?

You can implement a similar shift yourself, but be careful, if the shift is to great, the difference between feature values may seem to be unimportant (e.g. if the expected range is [-1, 1] and you shift by +100, a difference of 2 does not seem that much, whereas in truth, it really is).

As to your other question, shape is in essence a 3D based extraction module. So even if you do a forced 2D extraction (with 3D data), the shape features will still be 3D based (although some of them are specifically 2D, such as Maximum2DDiameter). If your input is 2D (single slice), most shape features will still be relevant, although some will be similar, such as again the maximum diameters, and some irrelevant (maximum diameter that moves out-of-plane), flatness and least axis (both always 0).