Skip to content

RAD-ChestCT

Modality: CT | Format: NumPy (.npz) | Dim: 3D | Labels: 84 findings + bboxes

Overview

RAD-ChestCT is a large chest CT dataset containing 35,747 CT scans with radiologist-annotated labels for 84 pathological findings. It also includes abnormality location labels (bounding boxes). The dataset is notable for the breadth of its label taxonomy, covering findings from nodules and consolidation to surgical hardware and transplants.

Download

Available from Zenodo: RAD-ChestCT. Note: the Zenodo record hosts an initial release of ~3,630 volumes (~10% of the dataset) alongside the full CT_Scan_Metadata_Complete_35747.csv metadata; obtaining all 35,747 scans requires the separate data-use agreement described on the record page.

Expected layout

RAD-ChestCT/
  CT_Scan_Metadata_Complete_35747.csv
  imgtrain_Abnormality_and_Location_Labels.csv
  images/
    <NoteAcc_DEID>.npz

Label columns

84 findings: air_trapping, airspace_disease, aneurysm, arthritis, aspiration, atelectasis, atherosclerosis, bandlike_or_linear, breast_implant, breast_surgery, bronchial_wall_thickening, bronchiectasis, bronchiolectasis, bronchiolitis, bronchitis, cabg, calcification, cancer, cardiomegaly, catheter_or_port, cavitation, chest_tube, clip, congestion, consolidation, coronary_artery_disease, cyst, debris, deformity, density, dilation_or_ectasia, distention, emphysema, fibrosis, fracture, gi_tube, granuloma, groundglass, hardware, heart_failure, heart_valve_replacement, hemothorax, hernia, honeycombing, infection, infiltrate, inflammation, interstitial_lung_disease, lesion, lucency, lung_resection, lymphadenopathy, mass, mucous_plugging, nodule, nodulegr1cm, opacity, other_path, pacemaker_or_defib, pericardial_effusion, pericardial_thickening, plaque, pleural_effusion, pleural_thickening, pneumonia, pneumonitis, pneumothorax, postsurgical, pulmonary_edema, reticulation, scarring, scattered_calc, scattered_nod, secretion, septal_thickening, soft_tissue, staple, stent, sternotomy, suture, tracheal_tube, transplant, tree_in_bud, tuberculosis

Constructor arguments

Argument Type Required Default Description
base_image_dir str Yes None images/ directory — flat dir of <NoteAcc_DEID>.npz files (e.g. /data/RAD-ChestCT/images/). Note: the harmonizer constructor parameter is named image_base_dir (not base_image_dir) for legacy reasons
csv_path str No auto CT_Scan_Metadata_Complete_35747.csv; auto-discovered
label_csv_path str No auto Abnormality labels CSV; auto-discovered
bbox_csv_path str No auto Location labels CSV for bounding boxes

Shared arguments (inherited from BaseRadiologicalDataset)

Argument Type Required Default Description
output_cls bool No False Include "cls" in data dict
output_mask bool No False Include "mask" in data dict
output_report bool No False Include "report" in data dict
output_bbox bool No False Include "bbox" and "bbox_labels" in data dict
transform MONAI transform No None MONAI Compose transform; None uses the default pipeline
cache_dir str No "./cache" MONAI cache directory
dtype torch.dtype No torch.bfloat16 Output tensor dtype
harmonized_df pd.DataFrame No None Pre-built harmonized DataFrame
harmonizer harmonizer No None Pre-instantiated harmonizer
harmonizer_path str No None Path to saved harmonized CSV

Dataset constructor

import torch
from radharmony.dataset import RadChestCTDataset

ds = RadChestCTDataset(
    base_image_dir="/data/RAD-ChestCT/images/",
    output_cls=True,
    output_bbox=True,
    dtype=torch.float32,
)
train_ds, val_ds = ds.get_datasets(n_splits=5)

Harmonizer

from radharmony.harmonizer import RadChestCTHarmonizer

h = RadChestCTHarmonizer(
    csv_path="/data/RAD-ChestCT/tables/CT_Scan_Metadata_Complete_35747.csv",
    image_base_dir="/data/RAD-ChestCT/images/",
    label_csv_path="/data/RAD-ChestCT/tables/imgtrain_Abnormality_and_Location_Labels.csv",
)
df = h.harmonize()
print(df.columns.tolist())
df.to_csv("radchestct_harmonized.csv", index=False)

Load from saved harmonized CSV

import pandas as pd
from radharmony.dataset import RadChestCTDataset

ds = RadChestCTDataset(
    base_image_dir="/data/RAD-ChestCT/images/",
    harmonized_df=pd.read_csv("radchestct_harmonized.csv"),
    output_cls=True,
)

Harmonizer notes

  • Labels are multi-label binary from radiologist annotations
  • Bounding boxes come from per-finding abnormality location labels; normalised to fractional 3D coordinates
  • Very broad label taxonomy (84 classes) — not all classes have balanced representation

Outputs

Flag Key Shape Notes
output_cls=True "cls" (84,) Multi-label binary findings
output_mask=True "mask" (1, D, H, W) Segmentation mask
output_report=True "report" str Free-text report
output_bbox=True "bbox", "bbox_labels" list 3D location boxes

Example paths

Role Path
image_base_dir /path/to/RAD-ChestCT/images/
csv_path (CT_Scan_Metadata_Complete_35747.csv) /path/to/RAD-ChestCT/tables/CT_Scan_Metadata_Complete_35747.csv
label_csv_path (train) /path/to/RAD-ChestCT/tables/imgtrain_Abnormality_and_Location_Labels.csv
label_csv_path (valid) /path/to/RAD-ChestCT/tables/imgvalid_Abnormality_and_Location_Labels.csv
label_csv_path (test) /path/to/RAD-ChestCT/tables/imgtest_Abnormality_and_Location_Labels.csv

The constructor parameter is image_base_dir= (not base_image_dir=) — legacy name. CSVs live in tables/ sibling dir, auto-discoverable from images/.