Topas——基于Geant4的放射治疗蒙特卡罗算法模拟工具

  本文内容参考Joseph Perl 的线上会议Introduction to TOPAS,视频详情可见于Topas会议录屏,该视频会议内容主要介绍Topas功能、软件架构、工作流程、参数设定、物理模型、具体案例等,对TOPAS的基本入门使用方法以及使用规定作出阐述。
在这里插入图片描述

关于Topas

总的来说,topas是一个用于调用Geant4的小程序,如果你也被Geant4恶心到了,那不如试试使用topas解决你想研究的高能物理问题
  TOPAS 包装并扩展了 Geant4 模拟工具包,使医学物理学家更容易使用各种形式的放射治疗的高级蒙特卡罗模拟。 TOPAS 可以对 X 射线和粒子治疗治疗头进行建模,基于 CT 图像对患者几何形状进行建模,对剂量、能量等进行评分,保存和回放相空间,提供高级图形,并且是全四维 (4D)处理治疗期间光束传输和患者几何形状的变化。 TOPAS 用户配置预先构建的组件(例如喷嘴、患者几何形状、剂量测定和成像组件)来模拟各种放射疗法,而无需了解底层 Geant4 模拟工具包或任何编程语言。模拟的所有方面,包括所有 4D 行为,都由独特的 TOPAS 参数控制系统控制。

在这里插入图片描述

学习前提

使用Topas不需要掌握C++或其他编程语言,但是需要会Unix( Linux / MacOS )的基本知识,以及以下技能:

  1. 如何打开terminal窗口;
  2. 如何使用纯文本编辑器(比如emacs、vi、pico、TextEdit、Notepad++);
    如果用了高级文档编辑器,里面所隐藏的字符会导致编译错误
    ps:但我觉得就用电脑自带的txt文本编辑器就可以了
  3. 如何使用cd进入某个路径;
  4. 如何设置环境变量;
  5. 如何调用一个可执行程序:如 /Application/topas/bin/topas

放射物理相关知识:
  明白剂量的相关基本概念:dosedose to waterdose to materialfluence

安装Topas

  Topas的具体安装步骤在其官网的Installation guide(外网)上就有详细步骤,可以兼容Linux(Centos、debian、Ubuntu),以及MacOS等多个Unix系统,但是不能在Windows上运行。
  具体安装步骤可参照官网上的流程,其中Ubuntu用户也可以参考本文的安装过程。

获取topas.tar.gz

获取方法一

  推荐使用该方法进行安装,可以获取到完整的Topas资源(包括正版使用license、所有历史版本的Topas、以及可以加入Topas用户论坛),但是缺点是需要先注册Topas账号,然后听完一个两小时的线上会议后自动开启使用权限,申请周期以及耗时比较久。急着马上要用Topas可以直接看获取方法二
  首先需要访问Topas官网(外网),或者Google搜索 Topas mc 第一个就是,打开官网后点击Registration for license
在这里插入图片描述
  如实填写完成该表单后,等待Topas给回复邮件(他说大概等24h才会有邮件回复,可是我等了3天才收到回复。。。)
在这里插入图片描述
  不出意外的话,一段时间之后会收到 Joseph Perl 回复的邮件,可能让你先等待申请 list 满12个人之后才会开这个会议,比如这样(这种情况的话就只能先等等了):
在这里插入图片描述
  或者直接收到Joseph Perl的参会邀请,比如这样:
在这里插入图片描述
  收到会议邀请后,听完2 hours的介绍会议,Topas安装包的获取权限会自动打开,这个会议其实讲的还蛮有用的,虽然是全英语,但还是比较好理解的,听完一遍之后就能直接上手Topas。

获取方法二

  百度网盘(提取码:tpsf)

配置unix环境

  本文采用安装在Windows10上的Ubuntu20.04虚拟机 VMWare 作为操作系统环境,也可以使用 硬件安装的Ubuntu系统 或 Topas官网提供的"Additional Installation Notes for Windows Subsystem for Linux" 方法
在这里插入图片描述

  在终端使用apt依次安装libexpat1-dev、libgl1-mesa-dev、libglu1-mesa-dev、libxt-dev、xorg-dev、build-essential、libharfbuzz-dev这几个包:
在这里插入图片描述

安装Topas

  接着cd进入上一步获取到的两个topas_3_8_1.tar.gz的安装包的路径,使用cat指令合成一个压缩包:

cat topas_3_8_1_debian9.tar.gz.part_* > topas_3_8_1_debian9.tar.gz

在这里插入图片描述
  使用tar指令解压该压缩包,得到topas:

tar -zxvf topas_3_8_1_debian9.tar.gz

  将topas文件夹移动到主目录,就得到了~/topas:
在这里插入图片描述

安装Geant4

  在主目录下新建一个文件夹G4Data
在这里插入图片描述
在~/G4Data目录下执行wget指令,获得所有Geant4文件包

wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4NDL.4.6.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4EMLOW.7.13.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4PhotonEvaporation.5.7.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4RadioactiveDecay.5.6.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4PARTICLEXS.3.1.1.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4SAIDDATA.2.0.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4ABLA.3.1.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4INCL.1.0.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4PII.1.3.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4ENSDFSTATE.2.3.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4RealSurface.2.2.tar.gz
wget -4 https://geant4-data.web.cern.ch/geant4-data/datasets/G4TENDL.1.3.2.tar.gz

  或者,通过百度网盘下载以上Geant4资源。再将下载到的所有.tar.gz文件导入~/G4Data文件夹中。
下载完成后,使用ubuntu指令解包:

find . -name "*.tar.gz" -exec tar -zxvf {} \;

最后得到的所有Geant4文件如下所示:
在这里插入图片描述

设置Geant4环境

在任意位置Ctrl+Alt+T打开terminal,输入指令进入编辑模式:

vim ~/.bashrc

在这里插入图片描述
打开.bashrc文件如下图所示:
在这里插入图片描述
i进入--Insert--模式,输入

#topas
export TOPAS_G4_DATA_DIR=~/G4Data/

然后按Esc退出编辑,输入:wq回车 保存并退出,并输入

source ~/.bashrc

激活路径,使得Geant4的路径生效,就大功告成啦!
在这里插入图片描述
接下来,跑一个案例试试吧~
进入目录~/topas/examples/SpecialComponents,在该目录下打开Terminal,输入指令,跑一个多叶准直器MLC的案例看看效果:

../../bin/topas MultiLeafCollimator_sequence.txt

敲回车后出现以下提示,说明topas和Geant4都配置成功:
在这里插入图片描述
跑出来的OpenGL效果如下所示:
在这里插入图片描述
或者,也可以在~/topas目录下使用指令,一次性测试所有标准案例的运行效果:

source rundemos.csh

使用Topas

Topas的最完整的使用手册参见[Topas User Guide](https://topas.readthedocs.io/en/latest/)

一个简单的 HelloWorld 程序 OneBox.txt

在Topas中,运行程序的方式是通过修改各种参数文件来告诉Topas你想进行什么样的仿真。在topas安装目录~/topas/examples/Basic中包含有几个OneBox开头的txt文件,用于介绍最基础的Topas参数控制文件的编写方式,以下为OneBox.txt的示例:

# Simplest TOPAS example.
# A box in a beam with EM physics.

s:Ge/MyBox/Type     = "TsBox"
s:Ge/MyBox/Material = "Air"
s:Ge/MyBox/Parent   = "World"
d:Ge/MyBox/HLX      = 2.5 m
d:Ge/MyBox/HLY      = 2. m
d:Ge/MyBox/HLZ      = 1. m
d:Ge/MyBox/TransX   = 2. m
d:Ge/MyBox/TransY   = 0. m
d:Ge/MyBox/TransZ   = 0. m
d:Ge/MyBox/RotX     = 0. deg
d:Ge/MyBox/RotY     = 0. deg
d:Ge/MyBox/RotZ     = 0. deg

sv:Ph/Default/Modules = 1 "g4em-standard_opt0"

s:Gr/ViewA/Type             = "OpenGL"
i:Gr/ViewA/WindowSizeX      = 1024
i:Gr/ViewA/WindowSizeY      = 768
b:Gr/ViewA/IncludeAxes      = "True"
d:Gr/ViewA/Theta            = 55 deg
d:Gr/ViewA/Phi              = 20 deg
s:Gr/ViewA/Projection       = "Perspective"
d:Gr/ViewA/PerspectiveAngle = 30 deg
u:Gr/ViewA/Zoom             = 2.

b:Ts/PauseBeforeQuit = "True"

通过在终端调用topas执行仿真:
在这里插入图片描述
得到仿真结果:
在这里插入图片描述

Topas中txt参数文件的编写规则

  Topas指令文件中的语句,和Geant4中的C++宏命令相似,但是并不相同
  每一条指令独立并发控制,每条指令的顺序不影响执行结果,比如以下两种情况执行效果相同:
在这里插入图片描述

大小写不敏感,以下同一列都是相同的表达效果:
在这里插入图片描述

Topas的参数语句构造规则

Parameter_Type : Parameter_Name = Parameter_Value # Optional comment

(1)Parameter_Type

  写在每个参数语句前的最前端,用表示数据类型的字符缩写来控制,用于核实与Parameter_Value的数据类型是否一致。因为在Topas仿真中,一个小的错误就可能导致长达一天时间的仿真白费,因此Topas加入了这个控制参数来校验每条参数语句是否正确——如果在Parameter_Type字段写了一个代表"String"的"s:",而后面的Parameter_Value字段却写了一个数字,则Topas会在开始仿真前报错这个问题。
  以下为常见几种Parameter_Type的缩写含义:
在这里插入图片描述
  来看几个具体例子:
在这里插入图片描述
  有时候还会在 " : " 之前加入一个 " v "来把这个参数描述成一个Vector向量,比如:
在这里插入图片描述

  除此之外,也可以在 " : " 之前加入一个 " c ",代表这个参数作为变量,在后续的 TOPAS GUI 部分可以控制这个变量

(2)Parameter_Name

  Parameter_Name一般由三部分组成,即 部分一/部分二/部分三,其中部分一部分三一般有固定的控制参数,部分二可以由自己构造,主要是为了把控部分一部分三是在对同一个部分二进行描述。比如下面这个例子,其中的Parameter_Name包括:Ge/MyComp/Type、Ge/MyComp/Material、Ge/AnotherComp/Parent、Ge/AnotherComp/RMax等,其中的Ge作为部分一Type、Material、Parent、HLX、TransX等作为部分三都是固定的控制参数名词;而MyComp、AnotherComp都作为部分二自定义
在这里插入图片描述
以下为部分一的所有控制参数,及其相应的解释含义:

参数解释
Mafor Materials
Elfor Elements
Isfor Isotopes
Gefor Geometry Components
Sofor Particle Sources
Phfor Physics
Vrfor Variance Reduction
Scfor Scoring
Grfor Graphics
Tffor Time Features
Tsfor TOPAS overall control

  再以其中的Ge为例说明部分二部分三的定义方法——如果在部分一定义了一个Ge,也就是选择创建一个几何原件(Geometry Components),然后在部分二可以自己定义这个几何原件的名字,比如说就叫MyComp;接着,在部分三就要对MyComp的各种取值进行定义,最关键的一些定义就是:
  1.这个MyComp是个什么类型的原件——定义TypeWorld(Defualt值)、或TsBox、或TsCylinder等;(具体参见Topas User Guide
  2.这个MyComp是个介质是什么——是空气Air、或是水G4_water等;
  3.这个MyComp的大小——由HLXHLYHLZ控制;(HL即Half Length)
  4.其他:旋转角度、半径、内径、外径、平移等参数详情参见Topas User Guide

(3)Physical Models

通过一条指令控制,包含所有模型情况:

sv:Ph/Default/Modules = 6 "g4em-standard_opt4" "g4h-phy_QGSP_BIC_HP" "g4decay" "g4ion-binarycascade" "g4h-elastic_HP" "g4stopping"

  但是用越多的模型,仿真需要的时间越久,一般情况下就用一个最简单的 “g4em-standard_opt0” 模型,先把大致情况给做出来,再以此为基础做更具体的模型仿真。也就是通过这条指令:

sv:Ph/Default/Modules = 1 "g4em-standard_opt0" 

(4) 引用其他参数文件

  在最开始,介绍了一个简单的 HelloWorld 程序 OneBox.txt ,在这时如果我们想在这个OneBox的基础上再做一些改变、或者是一些新增,那么可以在一个新的OneBoxRotate.txt中直接调用:

includeFile = OneBox.txt

然后,如果想把这个Box旋转一定角度的话,可以在此基础重写RotX参数:

d:Ge/MyBox/RotX = 45. deg

在这里插入图片描述
除此之外,还可以新增一些参数,或者重载includeFile里面的参数

(5)Topas中的数学表达式

  Topas只支持最基础的数学运算 +-* ,并且每个运算符的前后必须有空格,没有 / 是为了避免除数为零导致的错误;同时需要保持两个运算的数具有相同的单位。总而言之,就是尽量不要在Topas参数文件里写运算符。
在这里插入图片描述

(6)Topas参数文件构建的基本步骤

在这里插入图片描述

(7)Topas GUI

在这里插入图片描述

Updating。。。

  • 10
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值