ReaxTools is a high-performance post-processing tool for reactive molecular dynamics (ReaxFF / AIMD / MLP-MD). It reads trajectory files from LAMMPS, GPUMD, CP2K, and other MD engines, and produces species statistics, bond analysis, ring detection, reaction network graphs, and reaction event tracking. Available as a CLI binary, a WebAssembly web app, and Python visualization scripts.
高性能 | 多格式支持 | 反应网络分析 | 在线即用
ReaxTools 是一款专为反应分子动力学(ReaxFF/AIMD/MLP-MD)模拟数据设计的高性能后处理分析工具,支持 LAMMPS、GPUMD、CP2K 等主流分子动力学软件产生的轨迹文件。
- 物种统计 - 追踪分子种类及数量随时间的演化
- 化学键统计 - 分析各类化学键的形成与断裂
- 原子成键数统计 - 统计原子配位数变化(如 C(3) sp2、C(2) sp 等)
- 环结构检测 - 识别并统计环状分子的数量与类型
- 物质转化网络 - 构建物质转化关系图(Graph/Network)
- 智能过滤 - 基于原子经济性(Atom Economy)自动过滤低质量反应,基于边介数中心性(Betweenness Centrality)排序保留关键反应
- 转化路径追踪 - 自动识别并输出最长连续反应路径
- 原子转移分析 - 追踪特定原子/官能团在反应中的流动
- 关键分子识别 - 基于拓扑度识别关键中间体,输出前驱体/衍生物关系
- 反应事件检测 - 基于原子连接关系变化自动识别反应事件
- 反应频率统计 - 统计各类型反应的发生频次(Top 20 反应可视化)
- 分子生命周期追踪 - 追踪单个分子的生成、转化与消亡过程
- 前驱体/后继体分析 - 建立分子间的反应前驱与后继关系
- SMILES 表示 - 输出分子的 SMILES 字符串(基于 RDKit)
- 分子结构绘制 - 自动生成分子结构 SVG 图像
- 反应网络可视化 - 生成 DOT 格式网络图(可用 Graphviz 渲染)
- CSV/Markdown 数据导出 - 统计结果导出为 CSV,关键分子报告导出为 Markdown
- Python 可视化脚本 - 附带
reax_plot.py和reax_network.py自动生成出版级图表
访问地址: http://cc-portal.xyz/reax_tools
在线版本无需安装,即开即用,支持:
- 完整的分析功能
- 自动数据可视化
- 交互式反应网络查看
- 一键导出所有结果
推荐配置: Chrome 浏览器,PC 端,轨迹大小 < 10,000 原子 x 200 帧
# 1. 克隆仓库
git clone https://github.com/tgraphite/reax_tools
cd reax_tools/bin
# 2. 运行安装脚本
bash install_reax_tools.sh推荐配置: Linux, 8 核, 轨迹大小 < 4,000,000 原子 x 10,000 帧
# 本地版本
bash build_local.sh
# Web 版本 (需要 Emscripten)
bash build_wasm.shReaxTools 支持以下三种格式的轨迹文件:
ITEM: TIMESTEP
1000
ITEM: NUMBER OF ATOMS
10000
ITEM: BOX BOUNDS pp pp pp
0.0 40.0
0.0 40.0
0.0 40.0
ITEM: ATOMS id type x y z
1 1 0.000 0.000 0.000
2 2 1.000 1.000 1.000
...
注意: 需配合 -t C,H,O,N 参数指定 type_id 对应的元素符号。
10000
Lattice="40.000 0.0 0.0 0.0 40.000 0.0 0.0 0.0 40.000" Properties=species:S:1:pos:R:3
C 0.000 0.000 0.000
H 1.000 1.000 1.000
...
GPUMD、CP2K 直接输出,或通过 OVITO 转格式获得。已包含元素符号,无需 -t 参数。
重要如果因为非标准的输出而不能读取其他格式,优先尝试 OVITO 转格式。
LAMMPSTRJ 转标准 Extended XYZ 的方法
1. 在OVITO中正确载入Lammpstrj文件。
2. 在Particle Type中,手动为type 1...type N的原子设置正确的元素名。
3. 如果有PBC问题,可以用Affine Transformation重新定义盒子,但是要注意原子坐标是否需要被重新缩放。
4. 导出为Extended XYZ文件。
10000
Any comment
C 0.000 0.000 0.000
H 1.000 1.000 1.000
...
适用于非周期性体系(如 ORCA、CP2K 的 AIMD)。
格式要求: 各帧原子顺序需保持一致(用于追踪原子)。
| 参数 | 说明 | 示例 |
|---|---|---|
-f |
文件名 | -f traj.xyz/traj.lammpstrj |
-t |
定义元素符号(用于 lammpstrj) | -t C,H,O,N |
-r |
vdW 半径缩放因子(默认 1.2) | -r 1.0 |
-tr |
设置特定元素半径 | -tr N:1.5 O:1.5 |
-tv |
设置特定元素化合价 | -tv N:4 S:6 |
--order |
化学式元素排序 | --order C,H,O,N |
| 参数 | 说明 | 示例 |
|---|---|---|
-me |
按元素含量归纳 | -me C |
-mr |
归纳范围(与 -me 配合) |
-mr 1,4,8,16 |
-rc |
输出原子数而非分子数 | -rc |
-norr |
保留互逆反应(不抵消) | -norr |
--max-reactions |
最大反应数(默认 60) | --max-reactions 100 |
--no-track-reactions |
禁用反应跟踪(默认启用) | --no-track-reactions |
--stable-time |
反应稳定时间阈值(帧,默认 3) | --stable-time 5 |
通过同时定义 -tr 和 -tv 可创建新元素类型,实现原子标记追踪:
# 创建氘(D)和氚(T)追踪氢同位素
-tr D:1.05 T:1.05 -tv D:1 T:1reax_tools -f trajectory.lammpstrj -t C,H,O,Nreax_tools -f dump.xyz -t C,H,O -r 1.0reax_tools -f trajectory.xyz -t C,H,O,N -me C -mr 1,4,8,16 -rc输出: C1-C3、C4-C7、C8-C15、C16+ 四组的碳原子数随时间变化。
运行后会在 reax_tools_output/ 目录生成:
| 文件名 | 内容 |
|---|---|
species_count.csv |
各物种分子数随时间变化 |
bond_count.csv |
各类化学键数量统计 |
atom_bonded_num_count.csv |
原子成键数统计 |
ring_count.csv |
各类环结构数量统计 |
reaction_flow_full.dot |
完整反应流网络图(DOT 格式) |
reaction_flow_simplified.dot |
简化版反应流网络图(仅在反应数过多时生成) |
key_molecules_flow.md |
关键分子反应流汇总报告(Markdown) |
molecules_smiles.csv |
分子 SMILES、拓扑度信息 |
molecule_pictures/*.svg |
分子结构图(SVG 格式) |
reaction_track_events.csv |
反应事件频率统计 |
reaction_track_molecules.csv |
分子生命周期追踪数据 |
可视化 DOT 文件:
dot -Tpng reaction_flow_full.dot -o reaction_flow.pngbin/ 目录下附带 Python 脚本,可自动生成出版级图表:
# 安装依赖
pip install -r bin/requirements.txt
# 绘制物种、键、环等统计图
python bin/reax_plot.py -d reax_tools_output/
# 生成高清反应网络图(需要安装graphviz以获取dot命令)
dot -Tpng reax_tools_output/reaction_flow_full.dot -o reaction_flow_full.pngreax_tools/
├── cpp/ # C++ 源代码
│ ├── main.cpp # 入口
│ ├── universe.cpp/h # 轨迹处理主循环
│ ├── system.cpp/h # 单帧体系:成键、找分子、反应检测
│ ├── reax_flow.cpp/h # 反应网络图(含过滤算法)
│ ├── reax_counter.cpp/h # 物种统计与归纳
│ ├── reax_track.cpp/h # 反应事件跟踪
│ ├── rdkit_utils.cpp/h # RDKit SMILES/绘图接口
│ ├── argparser.cpp/h # 命令行参数解析
│ ├── cell_list.cpp/h # 近邻搜索(Cell List)
│ ├── string_tools.cpp/h # 化学式解析工具
│ └── fmt/ # fmtlib(内置)
├── bin/ # 预编译二进制 & Python 工具
│ ├── reax_tools # Linux 二进制
│ ├── reax_plot.py # 统计图绘制
│ ├── reax_network.py # 反应网络可视化
│ └── install_reax_tools.sh
├── doc/ # 开发文档 & 变更记录
├── CMakeLists.txt
├── build_local.sh
└── build_wasm.sh
Web 在线版已独立为 reax_tools_web 仓库,引用本项目的二进制文件。
| 体系规模 | 原子数 | 帧数 | 文件大小 | 耗时 |
|---|---|---|---|---|
| 2.5K | 2,592 | 40 | 2.7 MB | 1.3 s |
| 10K | 10,368 | 40 | 13 MB | 2.5 s |
| 50K | 51,840 | 40 | 76 MB | 9.4 s |
| 160K | 165,888 | 40 | 246 MB | 24.5 s |
| 1M | 995,328 | 40 | 1.6 GB | 147.6 s |
- 详细教程: http://cc-portal.xyz/reax_tools/tutorial.html
- 参数说明: http://cc-portal.xyz/reax_tools/inputargs.html
- 文件格式: http://cc-portal.xyz/reax_tools/fileformat.html
- 常见问题: http://cc-portal.xyz/reax_tools/faqandhint.html
- 变更记录: doc/changelog.md
如果您在研究中使用了 ReaxTools,请引用:
Hanxiang Chen. ReaxTools: A high performance ReaxFF/AIMD/MLP-MD
post-process code [Computer software].
https://github.com/tgraphite/reax_tools
- 30+ 个验证项目和论文
- 10+ 篇社区发表论文
- 200+ 社区成员(持续增长中)
- 作者: Graphite (Hanxiang Chen)
- 邮箱: chenhx_cpu@163.com
- GitHub: https://github.com/tgraphite/reax_tools







