Quantitative features with HeterogeneityCad

Definitely it could be. If you look at the implementations of both HeterogeneityCAD and pyradiomics, and find that one is incorrect, it will be interesting to know. You might find the public radiomics digital phantom helpful in your explorations: http://www.radiomics.org/?q=node/28. I would be very interested to learn about the outcome! Joost, the lead developer of pyradiomics, I believe compared pyradiomics against that phantom (unfortunately, I don’t see him on this forum, so I will ask him by email to join and comment). I don’t know if it was ever eveluated with HeterogeneityCAD. @Jayender_Jagadeesan will be the best to comment on that!

The definition of the metrics can be found in the Supplemental information of Hugo’s paper:

HJWL Aerts, ER Velazquez, RTH Leijenaar, et al., “Decoding tumour phenotype by noninvasive imaging using a quantitative radiomics approach”, vol. 5, Nat Communication, 2014.

Also please note, there are number of parameters that are set, for example the number of discrete intensity levels, discretization bin width, normalization constants etc., to compute the heterogeneity metrics.

Jay

1 Like

Hi Matteo,

As @fedorov mentioned, I compared the output of PyRadiomics to a digitial phantom, but I’m not entirely sure this is the same as Andriy mentioned. It is the digital phantom used in the article with the feature definitions Andriy sent (The IBSI document).

That being said, I think the differences you’re experiencing may be in part explained by @jayender’s comment, namely the discretization. For PyRadiomics, this is determined by a fixed bin width (as opposed to a fixed bin count) with a default value of 25 units. I’m not sure about how this is implemented in HeterogeneityCAD or what default settings are. More information on the exact method implemented in PyRadiomics can be found here.
However, this only affects Entropy and Uniformity.

The exact cause of the difference in Kurtosis I do not know, but it strikes me that the difference is exactly 3. @jayender, does the HeterogeneityCAD system implement a fixed offset? This would be a fixed value of 3, which centers kurtosis on 0 for normal distributions (PyRadiomics does not have this offset, which would explain the difference). In fact, this offset is also implemented in the IBSI document.

Cheers,

Joost

@fedorov,
Thank You Andrey,
I downloaded the phantoms. I hope to work about and then say to You,
Matteo

@jayender,
Thank You Jay, I downloaded the supplement of the paper of H. Aerts et al. and I must work about slowly,
Sincerely,
Matteo

@JoostJM ,
Thank to You Joost, I must study slowly on the site that You indidicated,
Sincerely,
Matteo

@fedorov,
Dear Andrey I do some calculation on the phantom that You say me (PAT2) using 3DSlicer Radiomics and Heterogeneity CAD.
Significative differences You can see on Entropy, Hunformity and Kurtosis on first order features.
On shape features there are difference on surface area, sphericity, compactness 1 and 2 and other differences. The Volume is ok. On GLCM there many and apparently important differences, for example autocorrelation, correlation, contrast, entropy,…
Matteo

I’m a little confused about the installation of 3d slicer. I’ve followed the installation instructions on “read me”, downloading slicer, installing Radiomics, and restarting slicer. However, I’m unsure how to proceed from there. Where is featureextractor.py coming from? I see it in the python file from radiomics.io, but does that mean I need to download everything from both pyradiomics and 3d slice for 3d slicer to work? Also, is there any way I can speak to a representative and work everything out?

Thanks in advance.

Did you find these instructions?

Once you’ve done this install you need to load data and you can run the radiomics calculations within Slicer using the GUI (featureextractor.py is code used when developing your own script, but not directly exposed when using the SlicerRadiomics GUI).

If you want to get help on this forum, it probably makes sense to describe what you want to achieve.

@ShivR 3D Slicer is an open source project, not a commercial platform with a dedicated support desk. Having said that, there are companies that provide paid support and consulting related to 3D Slicer - see for example Kitware consulting offers https://www.kitware.com/what-we-offer/#consulting.

Thank you for such quick responses Andrey and Steve!

My overall goal is to use Slicer to isolate ROIs on DICOM images and then extract first and second order features from them. However, my current issue is simply that I don’t get how to install the technology. I used the instructions Steve attached. I have the same question Matteo did about not being able to find the "C:/Users/username/AppData/Roaming/NA-MIC/Extensions-revision/SlicerRadiomics/lib/site-packages/radiomics/"and the file “featureextractor.py” files on my computer, but I don’t know what a cmd prompt is or what cmd is either. How can I find this file so that Slicer Radiomics will work? Also, .py is python, so do I also need to download python to change line 9?

Ah, sorry, I see what you were asking now. The cmd prompt is also known as the command prompt or dos prompt in windows, but I found you can also get into the AppData folder by typing in the Address Bar of the windows explorer as shown here:

From there you can browse into the path to find the featureextractor.py file and make the edit described earlier in this thread. Hope that works for you.

@JoostJM maybe we should just comment out the yaml / pykwalify stuff until @jcfr is back.

With the help of Steve, Andrey and Andras and reading the documentations and papers from Joost and Jayender, We are improving in evaluating radiomics features in lung cancer using 3dSlicer.
We calculated radiomics features with Radiomics and HeterogeneityCad for more about 10 patients with lung cancer.
We use also phantom from prof Lambin.
We think that there are some important software bugs in the calculation of some features in HeterogeneityCad in 3DSlicer 4.7.0 (begin of june) (Entropy, Autocorrelation, Corelation,… You can see my last mail). It could be useful to check it and put more warnings about using heterogeneityCad.
At the moment the features calculated with Radiomics seem nice, but it is necessary do more extensive elaboration.
Thanking very much for the help
Sincely

cc
@ShivR
@Fedorov
@JoostJM
@jayender
@lassoan

@pieper, I could comment out the import of pykwalify, however, this will break the parameter file parsing, which is not needed in the slicer extension, but is important in the stand alone version of PyRadiomics.

I have created a specific SlicerRadiomics branch in PyRadiomics, and updated the Cmake-lists in SlicerRadiomics to use this specific branch.

However, before this is available in the extension manager, it has to be rebuild and repackaged.(In fact, the version of SlicerRadiomics that is installed is 9e57f350709207df925cd0ce397dffbcb6f262b5 (commit from may 30th).

As to the significant differences in first order features, see the explanation above.
As to the changes in volume, this is mainly due to the different manner of calculating a surface area. I don’t know what heterogeneityCAD uses, but pyradiomics implements a marching cubes algorithm, creating a surface mesh and summing up the surface area of the individual triangles.
A different approach is to sum the surface area of the border faces of the voxels, but this overestimates surface area, especially in small volumes.
The differences in many of the other features are also due to this difference, as the formulas are dependent on the surface area value.
A possible exception to this is Compactness1; sometimes the exponent of A is flipped (i.e. 2/3 instead of 3/2). Pyradiomics has the 3/2 exponent, as this makes the formula dimensionless.

Differences in GLCM (and most likely the other texture matrices as well) are most likely due to a different method of gray level discretization (similar to the differences in Uniformity and Entropy).

@mtamponi, In addition, it is possible that there is a small bug in GLCM. This has been fixed in PyRadiomics, but the SlicerExtension uses a specific version of PyRadiomics, where this bugfix has not yet been applied.

Thank you Steve, it works!

Hi

I’m sorry to post such a basic question here again, but I’m seeing this window in front of me and it seems like the radiomics extension is working - I’ve checked off first and second order features. Could someone please explain how to select something like a node from the whole image and then get the features of that cropped area or point me towards a tutorial for the extension. I can’t seem to find one online. Thanks in advance!

@ShivR we recommend you use Segment Editor module to segment the structure(s) of your interest, and then select that segmentation in the “Input Segmentation” selector of the module. Can you try this and let us know if this answers your question?

Yes, it works! I have one more question, @fedorov. I was watching your video “Segmentation of Lung and Nodule in CT using 3D Slicer”, and I was wanted to confirm that in order to get the 1st and 2nd order features of a node from radiomics, I don’t have to get a 3-d representation of the node like you did in the video right? It is enough to simply paint over the node (2d) in Segment Editor and use that segment to extract the features from in Radiomics module?