Operating system:Windows 10 enterprise
Slicer version:3D slicer 4.13.0-2021-12-15
I was extracting features using the Slicer radiomics module from GTV of RTStruct. But when I see the table containing the features most of the GLCM and NGTDM features give ‘zero’ as the output as seen in the image, I am not sure where I am going wrong. Some of the feature values look identical too.
Python interactor displays the below message:
Slicer radiomics window is as below.
Any help would be appreciated.
Firstorder: range is 9, while your binwidth is set to 64. This means that after discretization, all pixels are assigned to the same bin, resulting in a ‘flat region’. Your features reflect this.
Thanks for your response and I appreciate it.
Then if possible could you please suggest the ideal bin width that gives me accurate feature values?
Also if I won’t set resampled voxel size, still I get an answer, so is there a default voxel size value?
Thanks in advance
The ‘ideal’ bin width is a bit tricky. See also the documentation of PyRadiomics.
Generally, my advice would be to run an extraction using just firstorder on your entire dataset. Then, choose a binwidth so, that you would get between 10 and 100 bins for the largest part of your dataset. (use the feature range. If the values of this features are between, say, 50 and 500, choose bin width of 5).
As to size resampling, this is mainly to make your dataset more homogeneous and isotropic. See also the documentation. Try not to oversample too much (i.e. don’t resample to .5 if you have a slice thickness > 2). In your case, I’d suggest 3x3x3 or 3.5x3.5x3.5. Again, this depends on your entire dataset. Is there much variation in spacing? Choose a good compromise.
Thanks for your suggestions.
Actually, I intended to set the number of grey levels as 64 which may correspond to a binwidth of 0.47? Please correct me if I am wrong.
Regarding the resampling, I don’t think there is much variation in spacing. It is mostly 3.52mm x 3.52mm x3.27mm.
Even if I don’t set a value for spatial resampling and bin width why I am getting feature values?
Even if you don’t set a bin width, a default value is applied. If you don’t set a resampling size, no resampling is performed.
If you want a specific number of bins, you can set the binCount to 64. This is not recommended as this imposes a normalization on the ROI, which can remove valuable information. (Consider 2 cases where 1 has a very heterogeneous tumor with a range of 300, and a very homogeneous one with a range of 10. Using a fixed bin count will make both tumors seem more or less equally heterogeneous, as the meaning of a discretized gray value is different between the 2 tumors. In the first case it will likely reflect true difference, whereas in the second it will mostly reflect noise).
Thanks very much for your detailed reply.
What would be the default bin width set? Is it 25, as I can read here? The difference between bin count and bin width is something related to absolute and relative quantisation?
In which scenario a bin width of 64 can be applied? Does it depend on the feature values obtained as you suggested before?
So it is advised to specify bin width than bin count for CT/PT images.
I was finding the first order range of my entire data set to find the ideal bin width. But with a particular patient data, I have the following values of the first order.
Most of the first-order feature values are zero.
The Dicom tree appears as below
The loaded image is as below.
Hope you would be able to help with your suggestions.
In this case, the image you use for feature extraction only contains 0’s, so of course no valid binwidth can be computed. This is also visible in your screenshot, the image is completely white…
Thank you very much for your reply. But the provider of this dataset on The Cancer Imaging Archive used this image for feature extraction using Matlab package(developed by the same provider) and it worked.
I was trying to make it work on 3Dslicer, but I am not sure why it behaves differently.
Would you mind giving me a suggestion for binwidth if my first order range varies between 1 and 30?
I cannot provide a suggestion of binwidth as I mentioned above. The image you are using is invalid and would compute wrong answers with the matlab package too. As you can see in the visualization in Slicer and the diagnostics feature “diagnostics_image-original_minimum” and “diagnostics_image-original_maximum”, this image contains only 0’s. I.e. there is no information in this image. Maybe you have selected the wrong image as input or something failed in a conversion step?
A very important step of any radiomics or AI workflow is the validation of your dataset. Garbage in = garbage out
I’m noticing your image is a SUV image. Those usually have very small values and require a floating point datatype. Is it possible you force a conversion to an integer datatype somewhere? That would be a possible cause for the error in your image.
Thanks for your reply in detail.
I had asked for a suggestion of binwidth based on the first-order range I could find for other patient images (not for the image given above which contains only 0’s, and as you said the SUV values for these kind of images are small )
Is the binwidth of 0.2 is appropriate to accommodate first-order range varying between 1 and 30?
I was extracting features using the image which I have previously shared (HN-CHUS-030) using LIFEx https://www.lifexsoft.org/ and the series description( LOR-RAMLA and PTRTstruct)and the loaded image appears as given below:
I could calculate the features including PET SUV parameters using LIFEx.
But the same image with the same series loaded to 3D slicer appears differently and I am not able to get the PET SUV parameter values as in the images shown below.
I am not sure why it is this way and not sure whether I am doing everything correctly.
I am not trying to compare 3Dslicer with LIFEx but not clear why there are differences. I did explored these images using MATLAB radiomics package. That also gave me results.
Is there something I need to correct/load before PET statistics calculation on 3Dslicer?
As far as I can see it looks like in Slicer, you are just loading in the CTAC/NAC data, without computing SUV values. I.e. you are computing the features based on the counts, not the SUV. I believe there are module in Slicer that can help you convert this.
I don’t know if LifeX does the SUV calculation automatically or not.
Thanks for your reply.
I have these extensions already installed and it works fine with other patient images.
I am not quite sure what is to be done.
If you have any suggestions, please share.