当前位置: 首页 > news >正文

MSD分析-基于MDAnalysis

import MDAnalysis as mda from MDAnalysis.analysis import msd import matplotlib.pyplot as plt import numpy as np import pandas as pd# 1. 加载轨迹文件 # 如果你有 data 文件,最好加上它作为拓扑,否则 MDA 只能从 dump 文件中猜测信息 # u = mda.Universe("traj.lammpstrj", format="LAMMPSDUMP") u = mda.Universe("annealing.data", "run2.lammpstrj", format="LAMMPSDUMP")# 2. 挑选目标分子 # 在 MDA 中,LAMMPS 的 Molecule ID 通常被映射为 'resid' # 假设你想计算 Molecule ID 为 1 到 10 的分子 target_atoms = u.select_atoms("resid 1:330")# 检查是否选对了原子 print(f"成功选择原子数量: {len(target_atoms)}")# 3. 坐标“去卷绕” (Unwrapping) - 非常重要! # MSD 计算必须基于连续坐标。如果你的 dump 文件是原子的原始坐标 (x, y, z), # 且原子跨越了周期性边界,直接计算会出错。 # 如果你 dump 的是 xu, yu, zu,这一步可以跳过。 # 如果是 x, y, z,且有 image flags,可以执行: # u.atoms.unwrap(compound='fragments')# 4. 使用内置工具计算 MSD # fft=True 使用快速傅里叶变换,速度极快 msd_analysis = msd.EinsteinMSD(target_atoms, select='all', fft=True) msd_analysis.run()# 5. 提取结果 msd_values = msd_analysis.results.timeseries frames = np.arange(len(msd_values)) dt = 10 # TODO: 这里的 dt 是你 dump 的时间间隔(lammps步长 * dump频率),步长单位和后面作图时候的一致,为ps times = frames * dt# 6. 绘图 plt.plot(times, msd_values) plt.xlabel("Time (ps)") plt.ylabel(r"MSD ($\AA^2$)") plt.title("MSD of Target Molecules") plt.show()# 7. 计算扩散系数 D # 根据爱因斯坦关系式:MSD = 6Dt (在 3D 情况下) # 拟合线性部分(通常取轨迹的中间段) start_frame = int(len(msd_values) * 0.1) end_frame = int(len(msd_values) * 0.9) slope, intercept = np.polyfit(times[start_frame:end_frame], msd_values[start_frame:end_frame], 1) diffusion_coefficient = slope / 6.0 print(f"扩散系数 D = {diffusion_coefficient}")# 8. 导出数据到 TXT output_file = "msd_results.txt" data_to_save = np.column_stack((times, msd_values)) header = f"Time(ps) MSD(A^2)\nDiffusion Coefficient D = {diffusion_coefficient:.6e} A^2/ps"np.savetxt(output_file, data_to_save, fmt="%.6f", delimiter="\t", header=header) print(f"结果已成功导出至: {output_file}")# 9. 导出数据到 Excel output_excel = "msd_results.xlsx"# 创建一个数据框 (DataFrame) df = pd.DataFrame({'Time (ps)': times,'MSD (A^2)': msd_values })# 导出到 Excel # index=False 表示不保存行索引(即左侧的 0, 1, 2...) df.to_excel(output_excel, index=False, sheet_name='MSD_Data')print(f"结果已成功导出至 Excel: {output_excel}")
http://www.jsqmd.com/news/798323/

相关文章:

  • Redis Hash 数据类型:详解命令与实战场景
  • 学习进度4/14
  • YOLOv11 改进 - 注意力机制 ContextAggregation上下文聚合模块:多尺度上下文信息融合机制,增强小目标特征判别力
  • 别再死记硬背了!用Wireshark抓包实战,带你一步步拆解5G手机的注册与PDU会话建立流程
  • YOLOv11 改进 - 注意力机制 CoordAttention坐标注意力:嵌入位置信息破解通道注意力局限,增强目标空间感知
  • 在树莓派上部署YoloV4-Tiny:用PyTorch Mobile实现边缘端实时目标检测
  • 别再只怪芯片了!拆解一个智能家居产品,看它的EMC静电防护设计到底哪里出了问题
  • 跨越平台鸿沟:ACM LaTeX模板的实战部署与字体兼容性攻坚
  • Windows 10 任务管理器打开后自动退出(点详细信息崩溃)完整排查记录
  • 知网AI率30%50%80%哪个最难降?比话降AI知网专精方案!
  • 牛客:字符串展开
  • 2026年4月市面上比较好的店铺设计装修批发厂家口碑推荐,服装店设计装修/店铺设计装修,店铺设计装修定制厂家推荐 - 品牌推荐师
  • 3分钟解锁QQ音乐加密格式:qmc-decoder音频解密工具完全指南
  • 从‘创建’到‘销毁’:一个RDMA Queue Pair的完整生命周期实战与状态机避坑指南
  • Spring Boot + JWT 实现无状态认证
  • VideoDownloadHelper:3步实现全网视频下载的智能工具
  • Matlab实战:基于EGM2008模型与球谐函数解析全球重力梯度场
  • 学习进度4/10
  • 深度解析:如何构建广谱注入Chromium/V8的通用修改器
  • YOLOv11 改进 - 注意力机制 ACmix自注意力与卷积混合模型:轻量级设计融合双机制优势,实现高效特征提取与推理加速
  • 别再只用Speedtest了!用群晖Docker部署Homebox,打造你的专属内网万兆测速站
  • 健康管理PPT风格描述提示词
  • Java面试跳槽需要提前准备什么内容?
  • 计算机毕业设计:Python医疗文本挖掘与可视化决策平台 Flask框架 随机森林 机器学习 疾病数据 智慧医疗 深度学习(建议收藏)✅
  • Sonos家庭影院音频设置指南:微调设置,提升音质与沉浸感!
  • 07 二叉树的最小深度
  • FanControl深度解析:如何为Windows打造智能静音散热系统
  • 5月重磅|2026苏州GEO优化公司TOP5实力盘点+GEO攻略+GEO优化 - 一网推GEO招财兔
  • 深度解析React核心机制:从组件到虚拟DOM的全面指南
  • H3C WA5320云AP瘦转胖实战:从BootWare升级到固件刷写的完整避坑指南