编辑[2019]:
pymedphys
库中现在提供改进的 1D、2D 和 3D Gamma 测定。它基于https://doi.org/10.1118/1.2721657中描述的实现。要使用它,请执行以下操作:
pip install numpy scipy pymedphys==0.16.3 pydicom==1.3.0
那么示例用法可以是这样的:
import pydicom
import pymedphys
reference_filepath = pymedphys.data_path("original_dose_beam_4.dcm")
evaluation_filepath = pymedphys.data_path("logfile_dose_beam_4.dcm")
reference = pydicom.read_file(str(reference_filepath), force=True)
evaluation = pydicom.read_file(str(evaluation_filepath), force=True)
axes_reference, dose_reference = pymedphys.dicom.zyx_and_dose_from_dataset(reference)
axes_evaluation, dose_evaluation = pymedphys.dicom.zyx_and_dose_from_dataset(evaluation)
gamma_options = {
'dose_percent_threshold': 1, # This is a bit overkill here at 1%/1mm
'distance_mm_threshold': 1,
'lower_percent_dose_cutoff': 20,
'interp_fraction': 10, # Should be 10 or more, see the paper referenced above
'max_gamma': 2,
'random_subset': None, # Can be used to get quick pass rates
'local_gamma': True, # Change to false for global gamma
'ram_available': 2**29 # 1/2 GB
}
gamma = pymedphys.gamma(
axes_reference, dose_reference,
axes_evaluation, dose_evaluation,
**gamma_options)
旧答案:
有一个图书馆npgamma
。可以使用 .pypi 从 pypi 下载pip install npgamma
。
有关示例,请参阅自述文件。
基本用法是:
from npgamma import calc_gamma
...
gamma = calc_gamma(
coords_reference, dose_reference,
coords_evaluation, dose_evaluation,
distance_threshold, dose_threshold)
其中coords_reference
和coords_evalution
定义为 3D 的 (y, x, z),2D 的 (y, x)。
重要的是,此方法在参考点之间插入到用户定义的步长(默认为距离阈值的 1/10)。