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

article/2025/11/4 13:46:13

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

  • 关于Topas
    • 学习前提
  • 安装Topas
    • 获取topas.tar.gz
      • 获取方法一
      • 获取方法二
    • 配置unix环境
    • 安装Topas
    • 安装Geant4
    • 设置Geant4环境
  • 使用Topas
    • 一个简单的 HelloWorld 程序 OneBox.txt
    • Topas中txt参数文件的编写规则
      • (1)**Parameter_Type**
      • (2)**Parameter_Name**
      • (3)Physical Models
      • (4) 引用其他参数文件
      • (5)Topas中的数学表达式
      • (6)Topas参数文件构建的基本步骤
      • (7)Topas GUI
  • Updating。。。

  本文内容参考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. degsv: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。。。


http://chatgpt.dhexx.cn/article/Lc5xW0MW.shtml

相关文章

java给时间设置格式化_java怎样给时间格式化

java怎样给时间格式化 【提要】本篇《java如何给时间格式化》特别为需要格式编程学习的朋友收集整理的,仅供参考。内容如下: java中如何格式化的时间,这是一个很简单的问题,在实际的编程中经常用,以下是小编为大家搜索…

Java时间格式化与解析

Java中自带的类库是十分强大的,今天来介绍一个时间的格式化与解析的功能以及用法,说明时间的格式化和解析就离不开一个类:SimpleDateFormat这个类,这类中有两个比较重要的方法,也是这次主要用到的方法parse方法和forma…

Java格式化日期 微秒

Java格式化日期 微秒 Date、LocalDateTime格式化微秒值Date、LocalDateTime互转 本文主要讲述Java日期格式化及格式化日期到微秒 Date、LocalDateTime格式化微秒值 java代码TestTime.java如下 package com.dongao.test;import com.dongao.project.common.util.DateUtils;impo…

java日期格式_java日期和时间的格式化

在编写程序时,经常需要对日期进行格式化输出。使用String类的format方法可以实现对日期和时间的格式化输出。 日期的格式化输出 Java提供了日期格式化转换符用于支持日期的格式化输出,格式化转换符如下表所示: 案例1:使用API库的Date类获取当前日期和时间信息,并用format(…

java时间格式化函数

时间格式化类位于java.text下 DateFormat和SimpleDateFormat是用来格式化一个日期的,不是用来生成一个日期的 如果要生成一个日期可以用Date类或者Calendar类 DateFormate类 是日期/时间格式化子类的抽象类,它以语言无关的方式格式化和分析日期或时间。…

JAVA 日期格式化

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 最近项目中需要用到SimpleDateFormat 格式化日期,但是因为对日期格式的不熟练多花了十分钟左右的时间在日期格式化上面&#…

Java格式化日期,时间(三种方法,建议收藏)

1.String.format() 在java中String类格式化的方法,是静态format()用于创建格式化的字符串。 format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。 format(Locale locale, String format, Ob…

Linux开发工具使用

文章目录 Linux编译器-gcc/g使用背景知识gcc如何完成预处理(进行宏替换)编译(生成汇编)汇编(生成机器可识别代码)链接(生成可执行文件或库文件)函数库静态函数库与动态函数库gcc选项 Linux调试器-gdb使用背…

linux c 开发

在很多人的眼里,C语言和linux常常是分不开的。这其中的原因很多,其中最重要的一部分我认为是linux本身就是C语言的杰出作品。当然,linux操作系统本身对C语言的支持也是相当到位的。作为一个真正的程序员来说,如果没有在linux下面用…

Linux开发工具的使用

Linux开发工具🍬 目录 Linux开发工具🍬💻 Linux安装软件💻💻 Linux软件包管理器 yum 💻💻Linux编辑器-vim的使用💻普通模式 📖末行模式📖vim配置&#x1f4d6…

Linux入门开发

/*************************************************/ /* 本贴记录自己项目开发过程中遇到的一些问题,水平一般,有错误或者不足欢迎指正,感谢!*/ 一、Linux基础 1.1 linux常用命令 top命令 linux的top命令相当于windows…

【Linux】Linux开发工具

Linux开发工具 前言Linux编辑器 --- vimvim长啥样vim的基本概念vim的配置 Linux编译器 --- gcc/g编译和链接预处理编译汇编链接 细🔒链接静态库和动态库 Linux调试器 --- gdbLinux项目自动化构建工具 --- make/Makefile依赖关系和依赖方法 上方工具的简单示例 前言 …

嵌入式Linux应用开发

嵌入式Linux应用开发 ubuntu的目录怎么设置PATH?Linux的命令提示符cd ~ 表示用户 家目录Linux的相对路径Linux的man命令Linux的vi编辑器的使用Linux的which和whereis命令Linux的压缩命令Makefile文件I/O 读写文件Framebuffer应用编程ASCII字符点阵显示汉字区位码输入系统框架 …

【Linux学习】基础开发工具的使用

文章目录 前言一、Linux编译器 — gcc/g的使用1. gcc/g的安装2. gcc/g编译编译指令编译过程函数库 3. gcc/g编译选项 二、Linux调试器 — GDB的使用1、什么是GDB2. GDB常用调试命令 三、Linux项目自动化构建工具 — make/Makefile的使用1. make/makefile背景2. 实例3. make 的工…

Linux基础开发工具学习

文章目录 1 软件包管理工具---yum2.Linux编辑器---vimvim的基本概念vim的基本操作 3.Linux编译器---gcc/g背景知识gcc如何完成gcc选项 4.Linux调试器---gdb5.Linux项目自动化构建工具---make/makefile6. git三板斧一板斧 --- git add二板斧 --- git commit三板斧 --- git push …

linux内核开发

内核编程常常看起来像是黑魔法,而在亚瑟 C 克拉克的眼中,它八成就是了。Linux内核和它的用户空间是大不相同的:抛开漫不经心,你必须小心翼翼,因为你编程中的一个bug就会影响到整个系统。浮点运算做起来可不容易&#x…

linux篇(三)linux开发工具的简单使用

作者介绍: 关于作者:东条希尔薇,一名喜欢编程的在校大学生 主攻方向:c和linux 码云主页点我 作者CSDN主页地址 我们学习linux,不仅要学会它的使用,也要必须掌握以linux平台做c/c开发的基本方法,软件 本文将…

linux应用程序的开发

linux应用程序的开发 一、通过SDK开发应用程序二、通过petalinux开发linux应用程序三、通过vim开发应用程序 一、通过SDK开发应用程序 在赛灵思官网下载SDK工具后,安装。 1.打开SDK,创建linux应用程序工程 2.编写代码 3.编译代码 4.将可执行文件复制到开…

Linux 基础开发工具

一.Linux编译器-gcc/g 1. 背景知识 1.预处理(进行宏替换) 2.编译(生成汇编) 3.汇编(生成机器科识别代码) 4.链接(生成可执行文件或程序) 2. gcc 如何完成 预处理 ( 进行宏替换 ) …

linux 系统开发

4、Linux的安装(Windows环境下): 1)Windows环境需要借助虚拟机来安装Linux系统,这个推荐使用的软件是VMWare,官网能下载到的最新版本是Workstation Pro15.0,下载地址:https://my.vmw…