分子动力学轨迹分析工具
源码:分子动力学轨迹分析工具:分子动力学轨迹分析工具 - 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 --help2. Jupyter Notebook(交互式)
jupyter notebook trajectory_analysis.ipynb3. 快速预览
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 -v2.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.png3.trajectory_analysis.ipynb- Jupyter Notebook
交互式分析环境,适合探索性分析和教学。
优势:
- 分步骤执行分析
- 实时修改参数
- 可视化即时反馈
- 适合教学演示
启动方法:
jupyter notebook trajectory_analysis.ipynb分析流程:
加载轨迹数据
找到轨迹文件: mytrajectory.npy 原始轨迹形状: (1, 688, 100, 3) 数据类型: float32 数值范围: [-0.730, 20.489] 检测到4维数据,正在进行维度重塑... 重塑后轨迹形状: (688, 3, 100) 轨迹信息: 原子数量: 688 坐标维度: 3 (X, Y, Z) 时间帧数: 100生成综合分析图
- 原子位移随时间变化(前5个原子)
- 位置分布直方图(X/Y/Z轴)
- 系统质心运动轨迹
- 原子间距离变化
生成3D轨迹图
- 完整3D轨迹
- XY/XZ/YZ平面投影
计算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 - 单位: 埃 (Å)
🔍 自动路径检测
所有脚本都会自动搜索以下路径中的轨迹文件:
mytrajectory.npy../mytrajectory.npy../../mytrajectory.npytorchmd/examples/mytrajectory.npy../torchmd/examples/mytrajectory.npy
📈 输出结果
图像文件
轨迹概览图(
*_overview_*.png)- 原子位移随时间变化
- 位置分布直方图
- 系统质心运动
- 原子间距离变化
3D轨迹投影图(
*_3d_*.png)- 完整3D轨迹
- XY平面投影
- XZ平面投影
- YZ平面投影
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Å)
分析结论
- 结构稳定性: RMSD平均值约1.5Å表明系统整体结构相对稳定
- 运动范围: 原子在-0.730Å到20.489Å范围内运动,分布较广
- 质心漂移: 质心轨迹显示系统存在整体平移运动
- 原子运动: 不同原子表现出不同的运动模式,符合分子动力学特征
- 数据完整性: 数据重塑成功,所有指标计算正常
📚 分析指标说明
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🐛 故障排除
常见问题
找不到轨迹文件
错误: 找不到 mytrajectory.npy 文件解决:
- 检查文件是否在自动搜索路径中
- 使用完整路径:
python analyze_trajectory.py /full/path/to/file.npy - 确认文件存在:
ls mytrajectory.npy
内存不足
MemoryError解决:
- 使用降采样:
-s 10或-s 20 - 使用简化版本:
python simple_trajectory_plot.py - 分批处理大文件
- 使用降采样:
中文显示问题
字体显示异常(方框或乱码)解决:
- 安装中文字体:SimHei(Windows)或WenQuanYi(Linux)
- 修改脚本中的字体设置
- 或使用英文标签
导入错误
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)🚀 性能优化建议
大文件处理:
- 使用
--frame-step参数增加降采样 - 考虑使用简化版工具
simple_trajectory_plot.py - 分段处理长轨迹
- 使用
批量分析:
- 使用脚本批量处理多个文件
- 考虑并行处理
存储优化:
- 定期清理旧的输出结果
- 使用适当的DPI设置(默认300 DPI)
📖 扩展功能
可以根据需要添加以下分析:
- 原子簇分析
- 氢键分析
- 二次结构分析(蛋白质)
- 扩散系数计算
- 动态交叉相关分析
- 径向分布函数(RDF)
🤝 贡献指南
欢迎贡献代码!请遵循以下步骤:
- Fork 本项目
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提交更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 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 文档
开始分析你的分子动力学轨迹吧!🎉