1. Basic Usage of DoseMetrics¶
Load a public NIfTI study, inspect dose and contours, and compute a DVH and dose statistics. The first download is cached.
In [1]:
Copied!
from dosemetrics.metrics import dvh
from dosemetrics.utils import load_example_study, plot_dose_slice, plot_subject_dvhs
dose, structures = load_example_study()
ptv = structures["PTV"]
print(dose)
print(f"{len(structures)} structures; PTV volume: {ptv.volume_cc():.2f} cc")
from dosemetrics.metrics import dvh
from dosemetrics.utils import load_example_study, plot_dose_slice, plot_subject_dvhs
dose, structures = load_example_study()
ptv = structures["PTV"]
print(dose)
print(f"{len(structures)} structures; PTV volume: {ptv.volume_cc():.2f} cc")
Dose Distribution 'test_subject': Shape: (128, 128, 128) Spacing: (2.0, 2.0, 2.0) mm Max dose: 64.45 Gy Mean dose: 7.95 Gy Min dose: -0.92 Gy 16 structures; PTV volume: 343.03 cc
Inspect the dose in image space¶
In [2]:
Copied!
plot_dose_slice(
dose,
structures=structures,
structure_names=["PTV", "Brainstem", "Chiasm"],
contour_colors={"PTV": "white", "Brainstem": "lime", "Chiasm": "cyan"},
cmap="turbo",
);
plot_dose_slice(
dose,
structures=structures,
structure_names=["PTV", "Brainstem", "Chiasm"],
contour_colors={"PTV": "white", "Brainstem": "lime", "Chiasm": "cyan"},
cmap="turbo",
);
Compute the PTV DVH and dose statistics¶
Set verbose=True for a readable report while retaining the returned arrays and dictionary.
In [3]:
Copied!
dose_bins, volume_percent = dvh.compute_dvh(dose, ptv, verbose=True)
statistics = dvh.compute_dose_statistics(dose, ptv, verbose=True)
dose_bins, volume_percent = dvh.compute_dvh(dose, ptv, verbose=True)
statistics = dvh.compute_dose_statistics(dose, ptv, verbose=True)
PTV DVH: 640 bins, 0.00-63.90 Gy, 0.0-100.0% volume PTV dose statistics (Gy) Mean 58.13 Minimum 31.72 Maximum 63.90 D98 45.08 D95 48.17 D50 59.81 D05 61.21 D02 61.48
Compare selected DVHs¶
In [4]:
Copied!
plot_subject_dvhs(
dose,
structures,
structure_names=["PTV", "Brainstem", "Chiasm", "OpticNerve_L", "OpticNerve_R"],
color_by_type=False,
);
plot_subject_dvhs(
dose,
structures,
structure_names=["PTV", "Brainstem", "Chiasm", "OpticNerve_L", "OpticNerve_R"],
color_by_type=False,
);