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

🔗 相关资源


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

相关推荐
熊猫钓鱼>_>2 小时前
Tbox使用教程与心得体验:智能体驱动我的“2025年大模型发展工作总结及企业智能办公场景应用前景“深度报告生成
大数据·人工智能·ai·llm·提示词·智能体·tbox
还是大剑师兰特2 小时前
拥抱AI,还是大剑师兰特2025年博客创作详细总结
人工智能·大剑师·2025博客之星
Francek Chen2 小时前
【博客之星2025年度总评选】逐梦2026:我的2025博客回溯与AI运营之旅
大数据·人工智能·经验分享·程序人生·csdn·博客之星
画***林2 小时前
雷家林谈诗言志
人工智能
搬砖魁首2 小时前
密码学的数学基础3-浮点数在计算机中的的实现
人工智能·密码学·浮点数·ieee754
艾莉丝努力练剑2 小时前
【Linux进程(七)】进程虚拟地址空间详解:从概念到实现与设计哲学
java·linux·运维·服务器·人工智能·安全·进程
张彦峰ZYF2 小时前
提示词工程(Prompt Engineering):人与大语言模型之间的对话艺术与工程体系
人工智能·机器学习·prompt·提示词工程·提示词要素与框架
习习.y2 小时前
基于PyTorch的鲍鱼年龄线性回归
人工智能·pytorch·线性回归
m0_743106462 小时前
【Feedforward 3dgs】YOU ONLY NEED ONE MODEL
论文阅读·人工智能·计算机视觉·3d·几何学