分子动力学轨迹分析工具:高效、灵活的 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 报告问题或提出建议

🔗 相关资源


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

相关推荐
NAGNIP18 小时前
一文搞懂深度学习中的通用逼近定理!
人工智能·算法·面试
冬奇Lab19 小时前
一天一个开源项目(第36篇):EverMemOS - 跨 LLM 与平台的长时记忆 OS,让 Agent 会记忆更会推理
人工智能·开源·资讯
冬奇Lab19 小时前
OpenClaw 源码深度解析(一):Gateway——为什么需要一个"中枢"
人工智能·开源·源码阅读
AngelPP1 天前
OpenClaw 架构深度解析:如何把 AI 助手搬到你的个人设备上
人工智能
宅小年1 天前
Claude Code 换成了Kimi K2.5后,我再也回不去了
人工智能·ai编程·claude
九狼1 天前
Flutter URL Scheme 跨平台跳转
人工智能·flutter·github
ZFSS1 天前
Kimi Chat Completion API 申请及使用
前端·人工智能
天翼云开发者社区1 天前
春节复工福利就位!天翼云息壤2500万Tokens免费送,全品类大模型一键畅玩!
人工智能·算力服务·息壤
知识浅谈1 天前
教你如何用 Gemini 将课本图片一键转为精美 PPT
人工智能
Ray Liang1 天前
被低估的量化版模型,小身材也能干大事
人工智能·ai·ai助手·mindx