Рассмотрим ртс с двумя структурами, одна из которых - PTV, а вторая - GTV. код ниже работает для расчета средней и максимальной дозы на PTV и GTV. при загрузке файла rtss nifti ... Контуры PTV содержат значение = 1, а GTV содержит значение = 2. и, следовательно, то же самое используется при получении дозы для этих контуров.
import nibabel as nib
import numpy as np
rtss_fname="rtss0.nii.gz"
rtdose_fname="rtdose0.nii.gz"
rtss_img = nib.load(rtss_fname)
rtss_array=rtss_img.get_data()
rtdose_img = nib.load(rtdose_fname)
rtdose_array=rtdose_img.get_data()
dose_at_label1=rtdose_array[rtss_array==1]
dose_at_label2=rtdose_array[rtss_array==2]
print("PTV max dose ",dose_at_label1.max())
print("GTV max dose ",dose_at_label2.max())
print("PTV mean dose ",dose_at_label1.mean())
print("GTV mean dose ",dose_at_label2.mean())