Skip to content

Datasets

Wookjin Choi edited this page May 28, 2026 · 1 revision

Datasets

qradiomics is a portable, plug-in benchmark harness — the same pipeline ingests many public sources without re-architecting. Every loader emits a wide features CSV with one shared schema, so downstream modelling is source-agnostic.

Source registry

Source Subject Loader / converter
TCIA (LIDC-IDRI, NSCLC-Radiomics, NSCLC-Cetuximab, LUNGx / SPIE-AAPM, Lung-PET-CT-Dx, …) DICOM CT series + RTSTRUCT, by SeriesInstanceUID qr tcia download --collection ... -o ...
TCIA bundled XML / xlsx (LIDC-XML-only.zip, LUNGx truth xlsx) per-series annotations pipelines/lidc_idri/extract_features.py (XML), extract_lungx.py (xlsx)
Zenodo (CIRDataset 6762573) paper-grade nodule meshes + masks (NRRD per nodule) pipelines/lidc_idri/extract_cir.py
GitHub (nadeemlab/CIR, choilab-jefferson/CIR, pylidc, lidc2dicom) reference implementations / annotation lists one-off ports
Local DICOM trees (institutional cohorts) DICOM + RTSTRUCT pipelines/<cohort>_local/

Shared pipeline contract

All loaders emit the same wide CSV:

pid, reader, nodule_id, n_voxels, volume_mm3, malignancy, ...,
status_radiomics, status_spic, [1409 PyRadiomics features], [6 spiculation features]

Downstream tools (reproduce_papers.py, reproduce_cir.py, methods_compare.py) don't care which source the features came from — the same CSV works.

Pinned validation splits (CMPB 2021 protocol)

Split Identifier
RM (Radiomic Model training) LIDC-IDRI 1,018 patients, malignancy ≥ 4 vs ≤ 2 (drop 3)
PM (Pathology Model calibration) LIDC-PM 72 patient IDs (pinned at pipelines/lidc_idri/lidc_pm_ids.txt)
LUNGx CalibrationSet TCIA CT-Training-* (10 size-matched nodules)
LUNGx TestSet TCIA LUNGx-CT* (60 nodules / 73 with multi-nodule cases)

Add a new dataset

  1. Add a pipelines/<cohort>_loader.py that yields (pid, nodule_id, ct_image, mask) from the source's native format.
  2. Feed the tuples through qradiomics.atomic.extract_features + qradiomics.shape.spiculation_from_voxel.
  3. Emit a CSV with the standard schema.
  4. Plug the CSV into methods_compare.py / reproduce_cir.py — no harness changes needed.

Source-specific work stays confined to the loader; downstream modelling is identical across datasets.

Provenance. Each loader writes the source URL / DOI into the CSV header so any AUC traces back to the original public record. Mask provenance matters — region-grow masks (extract_lungx.py) produce a different AUC than the paper-grade CIR masks (extract_cir.py); always report which mask source was used.

See Reproducibility for the numbers these datasets produce and Citations for required references.

Clone this wiki locally