Как рассчитать среднюю дозу и максимальную дозу из RTDose (3D-массив), используя numpy? - PullRequest
0 голосов
/ 23 января 2020

У меня есть 3D-массив для RTDose. один для предсказанного и один для наземной правды. также у меня есть 3D массив масок OAR. Как рассчитать среднюю и максимальную дозу в каждом OAR?

1 Ответ

0 голосов
/ 31 января 2020

Рассмотрим ртс с двумя структурами, одна из которых - 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())
...