Skip to content

RSNA PE Detection

Modality: CT | Format: DICOM (per-series volumes) | Dim: 3D | Labels: 13 PE labels

Overview

The RSNA-STR Pulmonary Embolism Detection Challenge (2020) dataset contains CT pulmonary angiography (CTPA) studies labelled for the presence and characteristics of pulmonary embolism. Each study has image-level (per-slice) and exam-level labels. The dataset contains approximately 7,279 training exams.

Download

Available on Kaggle: RSNA STR Pulmonary Embolism Detection. Requires Kaggle account.

Expected layout

rsna_pe_dataset/
  train.csv
  train/
    <StudyInstanceUID>/
      <SeriesInstanceUID>/
        <SOPInstanceUID>.dcm
        ...

Label columns

Column Description
acute_and_chronic_pe Acute and chronic PE
central_pe Central PE
chronic_pe Chronic PE only
flow_artifact Flow artifact
indeterminate Indeterminate
leftsided_pe Left-sided PE
negative_exam_for_pe No PE
qa_contrast QA: contrast issue
qa_motion QA: motion artifact
rightsided_pe Right-sided PE
rv_lv_ratio_gte_1 RV/LV ratio ≥ 1
rv_lv_ratio_lt_1 RV/LV ratio < 1
true_filling_defect_not_pe Filling defect, not PE

Constructor arguments

Argument Type Required Default Description
base_image_dir str Yes None train/ (or test/ for the test split) — direct parent of <StudyInstanceUID>/<SeriesInstanceUID>/ (e.g. /data/rsna_pe_dataset/train/)
csv_path str No auto train.csv; auto-discovered
hu_window tuple[float,float]\|None No (-1000, 1000) HU clip range for CT intensity normalisation

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 Not supported; silently ignored with a warning
output_report bool No False Not supported; silently ignored with a warning
output_bbox bool No False Not supported; silently ignored with a warning
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; use torch.float32 on CPU
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

The constructor arguments above apply to both RSNAPEDetectionTrainDataset and RSNAPEDetectionTestDataset. The test split has no labels — output_cls is silently ignored.

Train split

from radharmony.dataset import RSNAPEDetectionTrainDataset

ds = RSNAPEDetectionTrainDataset(
    base_image_dir="/data/rsna_pe_dataset/train/",
    hu_window=(-1000, 1000),
    output_cls=True,
)
train_ds, val_ds = ds.get_datasets(n_splits=5)

Test split

from radharmony.dataset import RSNAPEDetectionTestDataset

ds = RSNAPEDetectionTestDataset(
    base_image_dir="/data/rsna_pe_dataset/test/",
    hu_window=(-1000, 1000),
)

Harmonizer

from radharmony.harmonizer import RSNAPEDetectionTrainHarmonizer

h = RSNAPEDetectionTrainHarmonizer(
    csv_path="/data/rsna_pe_dataset/train.csv",
    base_image_dir="/data/rsna_pe_dataset/train/",
)
df = h.harmonize()
print(df.columns.tolist())
df.to_csv("rsna_pe_harmonized.csv", index=False)

Load from saved harmonized CSV

import pandas as pd
from radharmony.dataset import RSNAPEDetectionTrainDataset

ds = RSNAPEDetectionTrainDataset(
    base_image_dir="/data/rsna_pe_dataset/train/",
    harmonized_df=pd.read_csv("rsna_pe_harmonized.csv"),
    output_cls=True,
)

Harmonizer notes

  • Each row in train.csv corresponds to one DICOM series (a full CT volume)
  • image_path is a relative path to the series directory, not an individual DICOM file
  • MONAI's ITKReader loads the entire series directory as a single 3D volume
  • Labels are exam-level (same label for all slices in a study)
  • HU window (-1000, 1000) is suitable for CTPA; adjust with hu_window= if needed

Outputs

Flag Key Shape Notes
output_cls=True "cls" (13,) Multi-label binary PE labels

Example paths

Role Path
base_image_dir (train) /path/to/rsna_pe_dataset/train/
base_image_dir (test) /path/to/rsna_pe_dataset/test/
csv_path (train.csv) /path/to/rsna_pe_dataset/train.csv
test CSV (test.csv) /path/to/rsna_pe_dataset/test.csv