开发用于制定放疗计划的剂量计算和优化开源工具包 matRad
作者 Dr. Mark Bangert, German Cancer Research Center (DKFZ), Prof. Oliver Jäkel, German Cancer Research Center (DKFZ) and University of Heidelberg, Dr. Niklas Wahl, German Cancer Research Center (DKFZ), and Dr. Hans-Peter Wieser, Ludwig-Maximilian-Universität München (LMU Munich)
放疗、手术和化疗并称癌症治疗的“三驾马车”。放疗的关键元素之一是一个名为放疗计划,需要大量计算机辅助的过程。在此过程中,肿瘤学家和其他临床医生依赖治疗计划软件来精确地仿真放射对患者组织的影响,并优化放射剂量,以确保覆盖肿瘤范围,但又不损伤周围组织和器官。
商业开发的放疗计划软件采用专有的闭源代码,使得致力于推进治疗计划技术的研究人员无法充分利用其价值。因此,许多研究所和大学不是投入大量精力开发和维护自己的软件,便是使用开源软件包,但其中大多数只侧重于治疗计划中的单个步骤或单一放射治疗模式。
我们在德国癌症研究中心(Deutsches Krebsforschungszentrum,简称 DKFZ)的开发团队研发了 matRad1,这是个用于放疗计划的开源多模的剂量计算和优化工具包(图 1)。matRad 完全用 MATLAB® 编写,因此研究人员可以轻松修改代码来评估新算法。MATLAB 擅长执行治疗计划中涉及的许多稀疏矩阵运算;因此,matRad 能够像其商业同类产品一样便捷地生成临床上精准的治疗计划。
matRad 在治疗计划工作流中的应用
matRad 软件包涵盖 MATLAB 脚本、函数和类,涉及从设置治疗参数和优化计划到可视化和评估结果的整个治疗计划工作流。研究人员可以在 matRad 界面中或通过 MATLAB 命令行启动此工作流中的每个步骤。
研究人员先要从他们自己的一个患者病例或 matRad 提供的一个匿名患者病例中导入计算机断层扫描 (CT) 数据。该软件会使用 Image Processing Toolbox™ 中的函数,从 MATLAB 文件或医学数字成像和通信 (DICOM) 和 DICOM-RT 标准格式的文件中读取数据。
接下来,研究人员会指定治疗计划的参数和要使用的放疗设备。这些参数可能包括机架(用于将放射源定位在患者周围)的角度数和要应用的治疗模式:强度调制光子、扫描质子或扫描碳离子。参数可以通过该界面或编辑 matRad 脚本来设置(图 2)。
matRad 根据指定的参数生成射束几何形状。然后,研究人员调用 matRad 剂量计算函数,该函数可针对每个放射源元素计算给药到目标肿瘤的各个区域和周围正常组织的剂量矩阵(图 3)。
最后,研究人员会定义治疗的临床目标和约束。其中可能包括给药到肿瘤的最小处方剂量以及允许到达周围器官的最大剂量。将这些临床目标和约束转换为数学目标和约束后,matRad 会运行优化求解器以找到最佳剂量分布。为了实现优化,matRad 可以设置为使用 Optimization Toolbox™ 中的 fmincon
或 IPOPT,后者是用 C++ 编写且能够以 MEX 文件形式导入 MATLAB 中的开源优化软件库。优化的结果可以在 matRad 中以各种图和可视化方式进行查看(图 4)。
研究人员可以补充或修改 matRad 中使用的算法,以探索改进治疗计划的思路。通过这种方式,matRad 可用作新方法的原型构建和计算平台。事实上,在过去三年中,matRad 已被 40 多篇发表的同行评审研究论文引用,并在全球众多研究小组中得到了积极使用。
matRad 在教学中的应用
matRad 不仅用于研究,而且也用作教学工具。例如,在海德堡大学开设的一门课程中,学生使用 matRad 来了解粒子治疗(一种相对较新的治疗方式)的治疗计划。在帮助学生了解不同医疗决策、患者情况和设备功能如何影响治疗计划方面,matRad 发挥了重要的作用。我们使用 MATLAB Compiler™ 打包了 matRad 的独立版本,以供未安装 MATLAB 的学生使用。
国际粒子物理研究小组提供了一系列面向高中生的国际大师课。2019 年,我们与欧洲核子研究中心和 GSI Darmstadt 联合开设了新的粒子治疗大师课。在学习这门课的过程中,学生了解了使用放疗治疗癌症的方法,并观看了使用独立版 matRad 演示的治疗计划。
为什么选择 MATLAB?
我们的团队使用 MATLAB 开发 matRad 有几个原因。首先,MATLAB 广泛应用于医学物理人群和研究型大学。其次,MATLAB 使我们能够快速对新算法构建原型。它具有可视化功能,支持快速调试,并提供对结果的透视,从而开辟更多探索途径。MATLAB 非常适用于 matRad 对稀疏矩阵执行的计算。MATLAB 提供高度优化的线性代数运算,使我们能够出色地完成实际患者病例的剂量计算和优化,而运行时间与商用治疗计划系统相当。最后,在 MATLAB 中开发 matRad 使我们能够实现高度通用的软件:用户可以通过界面或 MATLAB 命令行与软件交互,开发自己的函数,并将 matRad 用于研究和教学。
matRad 开发近况
matRad 仍处于积极开发阶段,我们会定期接受来自研究人员的拉取请求,因为这些请求会不断地对代码的某些方面进行改进。例如,我们最近与智利天主教大学的 Edgardo Dörner 博士合作,将蒙特卡罗光子剂量计算引擎集成到了 matRad 中。该引擎用 C 语言编写并以 MEX 文件的形式导入 matRad 中。
此外,我们也已开始使用 MATLAB 面向对象的编程功能。例如,matRad 现在使用面向对象的框架来设置优化目标。如果研究人员想要探索新的优化目标,则可以从我们现有的类中派生出自己的类,并实施所做的改进,然后立即在测试处理计划中试用新目标。
现在,我们正使用 Parallel Computing Toolbox™ 在多个计算内核上执行 matRad。例如,在不确定性分析中,我们会根据患者的不同位置计算多个剂量。使用 Parallel Computing Toolbox,我们可以在多核工作站上快速设置并执行这一艰巨的并行任务。我们还开始在 OpenStack 上运行 matRad,以便利用云中更大的高性能计算资源池。
matRad 是作为研究工具设计的,因此,不能用于治疗真实的患者。不过,它计算的剂量与获得临床批准的治疗计划系统计算的剂量非常接近。鉴于 matRad 达到了这种性能水平,这就为使用它作为独立工具来验证由其他软件生成的治疗计划创造了机会。
1 当前版本是 matRad ‘Blaise’ 2.10.0。
2020 年发布