分子动力学轨迹分析工具
源码:分子动力学轨迹分析工具:分子动力学轨迹分析工具 - 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
分析流程:
-
加载轨迹数据
找到轨迹文件: 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 生成的轨迹格式即可。对于特定的蛋白质分析,可以扩展功能模块。
📞 获取帮助
🔗 相关资源
开始分析你的分子动力学轨迹吧! 🎉