开发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)的开发团队创建了matRad1matRad是一个开源的、多模态剂量计算和辐射治疗计划优化工具包(图1)。因为matRad完全是用MATLAB编写的®在美国,研究人员可以很容易地修改代码来评估新的算法。MATLAB擅长执行处理计划中涉及的许多稀疏矩阵运算;因此,matRad可以像其商业产品一样快速简便地制定临床准确的治疗计划。
在治疗计划工作流中使用matRad
matRad包包括MATLAB脚本、函数和类,涵盖整个治疗计划工作流程,从设置治疗参数和优化计划到可视化和评估结果。研究人员在matRad接口或MATLAB命令行中启动该工作流中的每个步骤。
研究人员首先从他们自己的患者或matRad提供的匿名患者病例中导入计算机断层扫描(CT)扫描数据。该软件使用图像处理工具箱™中的函数从MATLAB文件或医学数字成像和通信(DICOM)和DICOM- rt标准格式的文件中读取数据。
接下来,研究人员为治疗计划和要使用的放射治疗机指定参数。这些参数可以包括龙门架的角度数(用于在患者周围放置辐射源)和要应用的治疗方式:强度调制光子、扫描质子或扫描碳离子。可以通过接口或编辑matRad脚本设置参数(图2)。
matRad根据指定的参数生成光束几何形状。然后,研究人员调用matRad剂量计算函数,该函数为每个辐射源元素计算传递到目标肿瘤的各个区域和周围正常组织的剂量矩阵(图3)。
最后,研究人员确定了治疗的临床目标和限制条件。这些可能包括规定的递送到肿瘤的最小剂量和允许到达附近器官的最大剂量。在将这些临床目标和约束转化为数学目标和约束后,matRad运行优化求解器来找到最佳剂量分布。为了优化,可以设置matRad来使用fmincon
来自Optimization Toolbox™或IPOPT,这是一个用c++编写的开源优化软件库,并以MEX文件的形式导入MATLAB。优化结果可以在matRad中以各种图和可视化的形式查看(图4)。
研究人员可以补充或修改matRad中使用的算法,以探索改进治疗计划的想法。通过这种方式,matRad充当了一个原型化和评估新方法的平台。事实上,在过去的三年里,matRad已经被40多篇发表的同行评审研究论文引用,并且它被积极地用于全球众多研究小组.
matRad在教室里
matRad不仅用于研究;它也被用作教学工具。例如,在海德堡大学(Heidelberg University)的一门课程中,学生们使用matRad来了解粒子疗法(一种相对较新的治疗方式)的治疗计划。matRad在让学生探索不同的医疗决策、患者场景和机器功能如何影响治疗计划方面发挥着重要作用。我们用MATLAB编译器™打包了一个独立版本的matRad,供没有安装MATLAB的学生使用。
对于高中生,国际粒子物理研究小组提供了一系列的国际大师班。在一个新的粒子治疗大师班我们于2019年与欧洲核子研究中心(CERN)和达姆施塔特大学(GSI Darmstadt)合作启动了该项目,学生们学习使用放射疗法治疗癌症,并观看使用独立版本matRad的治疗计划演示。
为什么MATLAB ?
有几个因素促使我们的团队在MATLAB中开发matRad。首先,MATLAB在医学物理界和研究型大学中被广泛使用。此外,MATLAB使我们能够快速地建立新算法的原型。它的可视化功能支持快速调试,并提供对结果的透视图,从而打开其他金宝app探索途径。MATLAB非常适合matRad使用稀疏矩阵执行的计算。MATLAB中高度优化的线性代数运算使我们能够完成实际病例的剂量计算和优化,其运行时间与商业治疗计划系统相当。最后,在MATLAB中开发matRad使我们能够使软件具有高度的通用性:用户可以通过接口或MATLAB命令行与软件交互,开发自己的功能,并将matRad用于研究和教学。
持续的matRad开发
matRad仍然处于积极的开发中,我们定期接受研究人员对代码的某些方面进行改进的请求。例如,我们最近与智利Pontificia Universidad 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年出版的