news 2026/9/30 9:52:03

分子动力学轨迹分析工具:高效、灵活的 TorchMD 分子动力学轨迹分析与可视化工具集

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
分子动力学轨迹分析工具:高效、灵活的 TorchMD 分子动力学轨迹分析与可视化工具集

分子动力学轨迹分析工具

源码:分子动力学轨迹分析工具:分子动力学轨迹分析工具 - AtomGit | GitCode

高效、灵活的 TorchMD 分子动力学轨迹分析与可视化工具集

这个项目提供了完整的工具集,用于读取、分析和可视化 TorchMD 生成的分子动力学轨迹文件。

✨ 核心特性

  • 🎯多格式支持:自动识别和处理多种轨迹数据格式
  • 📊全面分析:RMSD、位移、质心运动、原子间距离等多种分析
  • 🎨丰富可视化:2D/3D轨迹图、统计图、投影图等
  • 🔧高度可配置:灵活的命令行参数和配置选项
  • 🚀快速上手:简洁的API,详细的使用文档

📦 快速开始

环境配置

# 克隆或下载项目 cd mdtool # 安装依赖 pip install -r requirements.txt # 可选:安装Jupyter(用于交互式分析) pip install jupyter

基本使用

1. 命令行工具(推荐)
# 快速分析 python analyze_trajectory.py # 指定轨迹文件 python analyze_trajectory.py mytrajectory.npy # 查看帮助 python analyze_trajectory.py --help
2. Jupyter Notebook(交互式)
jupyter notebook trajectory_analysis.ipynb
3. 快速预览
python simple_trajectory_plot.py

📂 项目结构

mdtool/ ├── README.md # 项目说明文档 ├── requirements.txt # Python依赖包列表 ├── 使用指南.md # 详细使用指南 ├── 文件命名说明.md # 文件命名规则说明 ├── mytrajectory.npy # 示例轨迹文件 │ ├── analyze_trajectory.py # ⭐ 完整分析工具(主工具) ├── simple_trajectory_plot.py # 快速可视化工具 ├── trajectory_analysis.ipynb # Jupyter交互式分析 │ ├── test_examples.bat # Windows测试脚本 ├── test_examples.sh # Linux/Mac测试脚本 │ └── trajectory_analysis/ # 分析结果输出目录(自动创建) ├── mytrajectory_overview_*.png ├── mytrajectory_3d_*.png └── mytrajectory_rmsd_*.png

🛠️ 工具详解

1.analyze_trajectory.py- 完整分析工具

功能最全面的轨迹分析工具,适合专业分析场景。

核心功能:

  • 轨迹概览可视化
  • 3D轨迹投影图(XY/XZ/YZ平面)
  • RMSD和能量变化分析
  • 详细的统计信息
  • 原子位移和分布分析
  • 多种数据格式自动识别

命令行参数:

python analyze_trajectory.py [trajectory_file] [OPTIONS] 选项: --output-dir, -o 输出目录(默认:trajectory_analysis) --frame-step, -s 3D图降采样步长(默认:5) --show-plots 显示图形界面(默认只保存) --verbose, -v 显示详细输出 --help 显示帮助信息

使用示例:

# 自动搜索轨迹文件 python analyze_trajectory.py # 指定文件和输出目录 python analyze_trajectory.py mytrajectory.npy -o my_analysis # 自定义参数并显示图形 python analyze_trajectory.py trajectory.npy -s 10 --show-plots -v

2.simple_trajectory_plot.py- 快速可视化工具

轻量级可视化工具,适合快速查看轨迹特征。

核心功能:

  • 快速轨迹信息展示
  • 原子位置变化
  • 质心运动轨迹
  • 原子间距离变化

命令行参数:

python simple_trajectory_plot.py [trajectory_file] [OPTIONS] 选项: --output, -o 输出文件名(默认:trajectory_analysis_simple.png) --show-plots 显示图形界面 --help 显示帮助信息

使用示例:

# 快速查看 python simple_trajectory_plot.py # 自定义输出 python simple_trajectory_plot.py mytrajectory.npy -o quick_view.png

3.trajectory_analysis.ipynb- Jupyter Notebook

交互式分析环境,适合探索性分析和教学。

优势:

  • 分步骤执行分析
  • 实时修改参数
  • 可视化即时反馈
  • 适合教学演示

启动方法:

jupyter notebook trajectory_analysis.ipynb

分析流程:

  1. 加载轨迹数据

    找到轨迹文件: mytrajectory.npy 原始轨迹形状: (1, 688, 100, 3) 数据类型: float32 数值范围: [-0.730, 20.489] 检测到4维数据,正在进行维度重塑... 重塑后轨迹形状: (688, 3, 100) 轨迹信息: 原子数量: 688 坐标维度: 3 (X, Y, Z) 时间帧数: 100
  2. 生成综合分析图

    • 原子位移随时间变化(前5个原子)
    • 位置分布直方图(X/Y/Z轴)
    • 系统质心运动轨迹
    • 原子间距离变化
  3. 生成3D轨迹图

    • 完整3D轨迹
    • XY/XZ/YZ平面投影
  4. 计算RMSD并保存结果

    • RMSD统计:平均值、标准差、最大/最小值
    • 保存分析数据到文件

Notebook 输出示例:

成功生成的文件:

  • ✅ 综合分析图 (1.39 MB) - 包含6个子图的完整分析
  • ✅ 3D轨迹投影图 - 显示前6个原子的三维运动
  • ✅ RMSD数据文件 - 保存每一帧的RMSD值
  • ✅ 统计信息文件 - 详细的数值统计结果

📊 轨迹文件格式

TorchMD 生成的轨迹文件mytrajectory.npy格式为:

  • 标准格式:[原子数量, 3, 时间帧数]
  • 支持的格式:
    • [n_atoms, 3, n_frames]- 标准格式
    • [n_frames, n_atoms, 3]- 自动转置
    • [n_replicas, n_frames, n_atoms, 3]- 自动提取第一个副本
  • 坐标轴:0=X,1=Y,2=Z
  • 单位: 埃 (Å)

🔍 自动路径检测

所有脚本都会自动搜索以下路径中的轨迹文件:

  1. mytrajectory.npy
  2. ../mytrajectory.npy
  3. ../../mytrajectory.npy
  4. torchmd/examples/mytrajectory.npy
  5. ../torchmd/examples/mytrajectory.npy

📈 输出结果

图像文件

  1. 轨迹概览图(*_overview_*.png)

    • 原子位移随时间变化
    • 位置分布直方图
    • 系统质心运动
    • 原子间距离变化
  2. 3D轨迹投影图(*_3d_*.png)

    • 完整3D轨迹
    • XY平面投影
    • XZ平面投影
    • YZ平面投影
  3. RMSD和能量图(*_rmsd_*.png)

    • RMSD随时间变化
    • 动能变化趋势

统计信息

运行时输出包括:

  • 原子数量
  • 时间帧数
  • 坐标维度
  • RMSD统计(平均值、标准差、最大/最小值)

📊 Jupyter Notebook 分析结果

使用 Jupyter Notebook 进行交互式分析的详细输出:

数据解析结果
找到轨迹文件: mytrajectory.npy 原始轨迹形状: (1, 688, 100, 3) 数据类型: float32 数值范围: [-0.730, 20.489] 检测到4维数据,正在进行维度重塑... 重塑后轨迹形状: (688, 3, 100) 轨迹信息: 原子数量: 688 坐标维度: 3 (X, Y, Z) 时间帧数: 100
成功生成的可视化
  • ✅综合分析图(1.39 MB)

    • 原子位移:前5个原子的位移随时间变化
    • 位置分布:X、Y、Z三轴的原子位置概率密度
    • 质心运动:系统整体质心在三轴上的运动轨迹
    • RMSD变化:均方根偏差随时间的变化趋势
    • 原子间距离:原子1-2之间距离的变化
    • 方差分析:各坐标轴的位置方差对比
  • ✅3D轨迹投影图

    • 完整3D轨迹:前六个原子在三维空间中的完整运动轨迹
    • XY平面投影:轨迹在XY平面的投影
    • XZ平面投影:轨迹在XZ平面的投影
    • YZ平面投影:轨迹在YZ平面的投影
  • ✅RMSD数据文件

    • 保存每一帧的RMSD值
    • 便于后续分析和处理
  • ✅统计信息文件

    • 详细的数值统计结果
    • 包括均值、标准差、最值等
关键发现
  • 系统规模: 688个原子的大型分子系统
  • 模拟时长: 100个时间帧的短时模拟
  • 数据维度: 4维数据成功重塑为标准的(原子数, 3, 帧数)格式
  • 数值范围: 原子位置在 -0.730Å 到 20.489Å 范围内
  • 结构变化: RMSD显示适度的结构波动(平均约1.5Å)
分析结论
  1. 结构稳定性: RMSD平均值约1.5Å表明系统整体结构相对稳定
  2. 运动范围: 原子在-0.730Å到20.489Å范围内运动,分布较广
  3. 质心漂移: 质心轨迹显示系统存在整体平移运动
  4. 原子运动: 不同原子表现出不同的运动模式,符合分子动力学特征
  5. 数据完整性: 数据重塑成功,所有指标计算正常

📚 分析指标说明

Notebook 分析步骤

步骤1:数据加载和预处理

  • 自动搜索轨迹文件路径
  • 读取 .npy 格式的轨迹数据
  • 检测并转换数据格式(4D → 3D)
  • 验证数据完整性

步骤2:轨迹概览分析

  • 计算前5个原子的位移
  • 绘制X/Y/Z轴位置分布
  • 计算并可视化质心轨迹
  • 分析原子间距离变化
  • 保存综合分析图

步骤3:3D轨迹可视化

  • 选择前6个原子进行3D绘图
  • 绘制完整3D轨迹
  • 生成XY/XZ/YZ平面投影
  • 降采样优化显示效果

步骤4:RMSD计算和分析

  • 以第一帧为参考计算RMSD
  • 统计RMSD的均值、标准差、最值
  • 生成RMSD随时间变化曲线
  • 保存RMSD数据和分析结果

步骤5:结果保存

  • 生成时间戳标识的文件名
  • 保存所有可视化图像
  • 导出统计数据到文本文件
  • 保存RMSD数值数据

RMSD (Root Mean Square Deviation)

  • 定义: 相对于参考结构的均方根偏差
  • 用途: 衡量结构随时间的变化程度
  • 单位: Å
  • 解读: RMSD越大,结构变化越大

质心轨迹

  • 定义: 系统所有原子的平均位置
  • 用途: 观察整体平移运动
  • 单位: Å

原子间距离

  • 定义: 特定原子对之间的距离
  • 用途: 分析键长变化、分子振动
  • 单位: Å

🎯 使用场景

场景1:快速查看轨迹

python simple_trajectory_plot.py

场景2:完整分析报告

python analyze_trajectory.py mytrajectory.npy -o my_analysis --verbose

场景3:交互式探索

jupyter notebook trajectory_analysis.ipynb

场景4:批量分析

# Windows for %f in (*.npy) do python analyze_trajectory.py %f -o results_%~nf # Linux/Mac for f in *.npy; do python analyze_trajectory.py "$f" -o "results_${f%.npy}"; done

⚙️ 高级配置

自定义输出目录

python analyze_trajectory.py trajectory.npy -o custom_output

调整降采样步长

# 减少降采样,更详细但更慢 python analyze_trajectory.py trajectory.npy -s 2 # 增加降采样,更快但细节较少 python analyze_trajectory.py trajectory.npy -s 20

显示图形界面

python analyze_trajectory.py trajectory.npy --show-plots

🐛 故障排除

常见问题

  1. 找不到轨迹文件

    错误: 找不到 mytrajectory.npy 文件

    解决:

    • 检查文件是否在自动搜索路径中
    • 使用完整路径:python analyze_trajectory.py /full/path/to/file.npy
    • 确认文件存在:ls mytrajectory.npy
  2. 内存不足

    MemoryError

    解决:

    • 使用降采样:-s 10或-s 20
    • 使用简化版本:python simple_trajectory_plot.py
    • 分批处理大文件
  3. 中文显示问题

    字体显示异常(方框或乱码)

    解决:

    • 安装中文字体:SimHei(Windows)或WenQuanYi(Linux)
    • 修改脚本中的字体设置
    • 或使用英文标签
  4. 导入错误

    ModuleNotFoundError: No module named 'numpy'

    解决:

    pip install -r requirements.txt

📝 示例输出

命令行工具输出

正在加载轨迹文件: mytrajectory.npy 原始轨迹形状: (688, 3, 100) 轨迹数据类型: float32 轨迹范围: [-0.730, 20.489] ================================================== 轨迹分析开始... ================================================== 1. 生成轨迹概览图... 2. 生成3D轨迹图... 3. 生成RMSD和能量分析图... 所有图片已保存到 trajectory_analysis/ 目录: - mytrajectory_overview_20251229_223234.png: 轨迹概览 - mytrajectory_3d_20251229_223234.png: 3D轨迹图 - mytrajectory_rmsd_20251229_223234.png: RMSD和能量分析 轨迹统计信息: 原子数量: 688 时间帧数: 100 坐标维度: 3 平均RMSD: 1.504 Å RMSD标准差: 0.319 Å 最大RMSD: 2.110 Å 最小RMSD: 0.000 Å

Jupyter Notebook 输出

单元格1: 数据加载

Found trajectory file: mytrajectory.npy Original trajectory shape: (1, 688, 100, 3) Data type: float32 Value range: [-0.730, 20.489] Detected 4D data, reshaping... Reshaped trajectory shape: (688, 3, 100) Trajectory info: Number of atoms: 688 Coordinate dimensions: 3 (X, Y, Z) Number of time frames: 100

单元格2: 轨迹概览分析

  • 生成综合分析图,包含6个子图
  • 自动保存到trajectory_analysis_results/comprehensive_analysis.png

单元格3: 3D轨迹可视化

  • 生成3D轨迹图和三个平面投影
  • 显示前6个原子的运动轨迹
  • 保存为trajectory_analysis_results/3d_trajectory.png

单元格4: RMSD计算和统计

RMSD Statistics: Mean: 1.504 Å Std Dev: 0.319 Å Min: 0.000 Å Max: 2.110 Å
  • 保存RMSD数据到trajectory_analysis_results/rmsd.npy
  • 保存统计信息到trajectory_analysis_results/statistics.txt

输出文件清单:

✅ comprehensive_analysis.png (1.39 MB) ✅ 3d_trajectory.png (1.23 MB) ✅ rmsd.npy (528 bytes) ✅ statistics.txt (349 bytes)

🚀 性能优化建议

  1. 大文件处理:

    • 使用--frame-step参数增加降采样
    • 考虑使用简化版工具simple_trajectory_plot.py
    • 分段处理长轨迹
  2. 批量分析:

    • 使用脚本批量处理多个文件
    • 考虑并行处理
  3. 存储优化:

    • 定期清理旧的输出结果
    • 使用适当的DPI设置(默认300 DPI)

📖 扩展功能

可以根据需要添加以下分析:

  • 原子簇分析
  • 氢键分析
  • 二次结构分析(蛋白质)
  • 扩散系数计算
  • 动态交叉相关分析
  • 径向分布函数(RDF)

🤝 贡献指南

欢迎贡献代码!请遵循以下步骤:

  1. Fork 本项目
  2. 创建特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 开启 Pull Request

📄 许可证

本项目基于 MIT 许可证开源。

🙋 常见问题

Q: 支持其他轨迹格式吗?
A: 目前主要支持 TorchMD 生成的.npy格式。可以通过修改load_trajectory函数来支持其他格式。

Q: 如何在服务器上使用?
A: 使用--show-plots参数可以禁用图形界面,只保存图片文件。

Q: 输出图片太大怎么办?
A: 可以修改代码中的dpi参数,或在保存时调整figsize。

Q: 可以分析蛋白质轨迹吗?
A: 可以,只要是 TorchMD 生成的轨迹格式即可。对于特定的蛋白质分析,可以扩展功能模块。

📞 获取帮助

  • 查看 使用指南.md 获取详细说明
  • 查看 文件命名说明.md 了解输出文件命名规则
  • 查看代码中的文档字符串了解函数详情
  • 提交 Issue 报告问题或提出建议

🔗 相关资源

  • TorchMD 官方文档
  • Matplotlib 文档
  • NumPy 文档

开始分析你的分子动力学轨迹吧!🎉

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/27 5:44:43

YOLOv11目标检测实战:基于PyTorch-CUDA-v2.8镜像部署

YOLO目标检测实战:基于PyTorch-CUDA容器化环境的高效部署 在智能监控系统不断升级、自动驾驶感知模块持续迭代的今天,一个共同的技术挑战摆在开发者面前——如何让高精度的目标检测模型既跑得快,又能快速落地?传统开发模式下&…

作者头像 李华
网站建设 2026/9/29 19:50:26

将axi-stream接口转为video帧接口

设计一个模块,将axi-stream接口转为video帧接口。1.输入接口ap_clkap_rst_n以及DataIn为axi-stream接口(valid,ready,data,last,user)2.输出接口vs信号,hs信号,de信号,Data3.代码应该如何设计&a…

作者头像 李华
网站建设 2026/9/26 20:51:45

markdown绘制流程图:展示PyTorch-CUDA-v2.8数据处理 pipeline

PyTorch-CUDA-v2.8 数据处理 pipeline 可视化解析 在现代 AI 开发中,一个常见但令人头疼的问题是:为什么代码在同事的机器上跑得好好的,到了自己环境里却报错不断?CUDA 版本不匹配、cuDNN 缺失、PyTorch 安装失败……这些问题几乎…

作者头像 李华
网站建设 2026/9/27 15:22:03

【优化求解】ADMM应用于水蜜桃采摘配送联合优化问题附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,擅长数据处理、建模仿真、程序设计、完整代码获取、论文复现及科研仿真。 🍎 往期回顾关注个人主页:Matlab科研工作室 🍊个人信条:格物致知,完整Matlab代码获取及仿…

作者头像 李华
网站建设 2026/9/27 5:55:55

git pull合并策略:保持PyTorch-CUDA-v2.8代码库最新

保持 PyTorch-CUDA-v2.8 开发环境同步:git pull 策略与容器化实践 在深度学习项目中,一个常见的痛点是:“为什么我的代码在别人机器上跑不通?”——错误提示可能是 CUDA 版本不匹配、PyTorch API 找不到,或是配置文件冲…

作者头像 李华
网站建设 2026/9/27 7:56:19

jiyutrainer下载新选择:集成PyTorch-CUDA-v2.8的一站式平台

jiyutrainer下载新选择:集成PyTorch-CUDA-v2.8的一站式平台 在深度学习项目启动的前72小时里,有多少开发者是在与环境配置搏斗?安装CUDA时提示驱动不兼容、PyTorch版本和cuDNN对不上号、明明代码没错却因张量没移到GPU而跑得比CPU还慢……这些…

作者头像 李华