Understanding results#
GUI and Python batch extraction write radiomics.csv in the selected output
directory. Each data row represents one successfully extracted case and mask
for that run’s image and settings. The single-ROI Python API returns a dictionary
of feature names and values instead.
Read the metadata#
The CSV starts with the following columns:
Column |
Meaning |
|---|---|
|
Case-folder name, not a patient identifier read from DICOM metadata. |
|
Requested structure or mask name. |
|
Shortest side of the morphological ROI’s bounding box, in voxels. This is a side length, not a coordinate or a length in millimetres. |
|
Number of nonzero voxels in the morphological mask used for analysis. This is not the number of intensity voxels retained by re-segmentation. |
|
Number of distinct occupied grey levels in the discretized intensity image used for histogram or texture calculation. It can be smaller than the requested bin count. It does not describe IVH discretization. The single-ROI API reports zero when the selected families do not use that discretized image. |
The bounding-box and voxel-count fields describe the analysis mask after validation, including any slices removed for 2D or 2.5D texture analysis. See ROI size requirements for those checks.
In Python, pass include_metadata=True to Radiomics.extract_features
to add the three numeric metadata fields. Case and mask identifiers are added
by the batch workflow; the single-ROI API does not infer them from file paths.
Read feature names and values#
For example, the Python API quickstart returns an intensity-statistics dictionary containing an entry approximately equal to:
{"stat_mean": -46.88} # Selected entry, rounded for display; CT intensity in HU.
Feature prefixes identify families: stat_ denotes intensity statistics,
morph_ morphology, cm_ co-occurrence-matrix features, and ivh_
intensity-volume histogram features. Units depend on the feature and input
image: the CT mean is
in HU, whereas the mean of a filtered image uses that filter’s response units.
The texture name cm_contrast_3D_avg means GLCM contrast calculated with
3D neighbourhoods and averaged across directions. GLCM and GLRLM names end in
a dimension and aggregation suffix:
2D,2_5D, or3Didentifies the texture dimension.avgidentifiesAVERorDIR_MERGaggregation.combidentifiesMERGorSLICE_MERGaggregation.
Other texture families use a dimension suffix without avg or comb.
See Feature extraction concepts for the supported combinations. Column names
do not encode all settings, such as bin width or slice weighting; retain the
configuration with the output and use it when comparing runs.
The Radiomics family classes provide
get_feature_names() for listing their feature keys. For GLCM and GLRLM,
these are base names; extraction adds the configured aggregation suffixes.
Check completeness#
Compare the actual (pat_id, mask_id) pairs with the cases and structures you
requested. A missing or rejected mask produces no feature row. Other masks in
the same case can still succeed. If every extraction is skipped, batch
extraction still creates an empty CSV file.
If batch IVH preparation or extraction fails, the affected structure retains
its other features but has blank IVH values. If IVH fails for every structure,
the CSV has no ivh_ columns. Inspect omitted_ivh_structures on each
radiomics case result for the reasons, including for processed cases; see
Python batch workflows.
A non-finite feature value, such as NaN, is different from a missing row:
extraction returned that feature, but a numeric value may be undefined for the
input. For example, spatial autocorrelation is undefined for constant
intensities. Check the feature’s reference documentation and the input ROI
before interpreting such values.
For GUI runs, check the completion message and logs. For batch runs, inspect
both case-level errors and skipped_structures as shown in Python batch workflows.
A processed case count does not guarantee that every requested structure
produced a row. See Troubleshooting for missing results.