开发matRad,一个用于放射治疗计划的开源剂量计算和优化工具包
作者:Mark Bangert博士,德国癌症研究中心(DKFZ), Oliver教授Jäkel,德国癌症研究中心(DKFZ)和海德堡大学,Niklas Wahl博士,德国癌症研究中心(DKFZ), 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)扫描数据。该软件使用图像处理工具箱™的功能从MATLAB文件或医学数字成像和通信(DICOM)和DICOM- rt标准格式的文件中读取数据。
接下来,研究人员指定治疗计划的参数和要使用的放射治疗机。这些参数可以包括机架的角度数(用于将辐射源放置在患者周围)和应用的治疗方式:强度调制光子、扫描质子或扫描碳离子。可以通过接口或编辑matRad脚本设置参数(图2)。
matRad根据指定的参数生成光束几何形状。然后,研究人员调用matRad剂量计算函数,计算每个辐射源元素传递到目标肿瘤的单个区域和周围正常组织的剂量矩阵(图3)。
最后,研究人员确定了治疗的临床目标和约束条件。这可能包括规定的给肿瘤的最小剂量和允许到达邻近器官的最大剂量。在将这些临床目标和约束转化为数学目标和约束之后,matRad运行一个优化求解器来找到最佳的剂量分布。对于优化,可以将matRad设置为使用fmincon
来自优化工具箱™或IPOPT,这是一个用c++编写的开源优化软件库,作为MEX文件导入到MATLAB。优化的结果可以在matRad中以各种图和可视化的形式查看(图4)。
研究人员可以补充或修改matRad中使用的算法,以探索改进治疗计划的想法。通过这种方式,matRad充当了一个原型和评估新方法的平台。事实上,在过去的三年中,matRad已经被40多篇发表的同行评审研究论文所引用,并且它被积极地用于全球众多研究小组.
matRad在教室里
matRad不仅用于研究;它也被用作教学工具。例如,在海德堡大学(Heidelberg University)的一门课程中,学生使用matRad来学习粒子疗法(一种相对较新的疗法)的治疗计划。matRad在让学生探索不同的医疗决策、患者场景和机器功能如何影响治疗计划方面发挥着重要作用。我们用MATLAB编译器™打包了matRad的独立版本,供没有安装MATLAB的学生使用。
对于高中生,国际粒子物理研究小组提供了一系列国际大师班。在一个新的粒子疗法大师班我们于2019年与欧洲核子研究中心(CERN)和达姆施塔特GSI合作启动了该项目,学生们学习使用放疗进行癌症治疗,并观看使用matRad独立版本的治疗计划演示。
为什么MATLAB ?
几个因素导致我们的团队在MATLAB中开发matRad。首先,MATLAB被广泛应用于医学物理社区和研究型大学。此外,MATLAB使我们能够快速地创建新的算法原型。它的可视化功能支持快速调试,并提供对结果的透视图,从而为探索开万博1manbetx辟了额外的途径。MATLAB非常适合matRad用稀疏矩阵执行的计算。MATLAB中高度优化的线性代数运算使我们能够完成实际病例的剂量计算和优化,其运行时间可与商业治疗计划系统相媲美。最后,在MATLAB中开发matRad使我们的软件具有高度的通用性:用户可以通过接口或MATLAB命令行与软件进行交互,开发自己的函数,并将matRad用于研究和教学。
正在进行的matRad开发
matRad仍然处于积极的开发中,我们定期接受研究人员的pull请求,他们对代码的某些方面进行了改进。例如,我们最近与智利Pontificia大学Católica de Chile的Edgardo博士Dörner合作,将蒙特卡洛光子剂量计算引擎合并到matRad中。该引擎是用C编写的,并作为MEX文件导入到matRad中。
此外,我们已经开始利用MATLAB面向对象的编程特性。例如,matRad现在使用面向对象的框架来设置优化目标。对探索新的优化目标感兴趣的研究人员可以从我们现有的类中派生出他们自己的类,实现改进,然后立即在测试处理计划中尝试新的目标。
我们现在使用并行计算工具箱™在多个计算核上执行matRad。例如,在不确定度分析中,我们从不同的病人体位计算多个剂量。并行计算工具箱使我们能够在多核工作站上快速设置和运行这个令人尴尬的并行任务。我们还开始在OpenStack上运行matRad,以利用云中更大的高性能计算资源池。
matRad被设计为一个研究工具,因此不能用于治疗真正的患者。然而,它产生的剂量计算与临床批准的治疗计划系统产生的剂量计算非常接近。这种性能水平为matRad提供了一个独立的工具,用于验证其他软件生成的治疗方案。
1当前版本为matRad ' Blaise ' 2.10.0.
2020年出版的