与经典分子动力学不同,第一性原理分子动力学不需要提供力场参数,只需要提供原子初始结构,就能根据电子波函数正交化产生的虚拟力,求解牛顿运动方程。在运行优化任务时,VASP生成的XDATCAR记录的是优化步骤的离子构型;在运行AIMD任务时,记录的就是运动轨迹。而现阶段读取XDATCAR轨迹分析性质的后处理软件并不多,能读取的兼容性也并不好。VASPKIT0.72版本之后支持了将XDATCAR转换成通用的多帧PDB文件的功能(504)以便可视化并进行后处理分析。但是并没有提供后处理分析接口,因此我们开发了一个Python脚本XDATCAR_toolkit.py,除了实现了选择一定范围内的帧数转换成PDB文件的功能,还可以提取分子动力学模拟过程中的能量,温度并做出变化趋势图。这对判断动力学是否平衡很有帮助。另外本脚本预留了接口,可以调用读取每一帧的晶格信息和原子坐标,以便进行后续扩展编程。此脚本需要安装了numpy包的python环境,以及matplotlib包以便于画图。

在得到通用轨迹PDB文件后,就可以利用现用的分子动力学后处理软件进行处理分析,比如VMD,MDtraj,MD Analysis, Pymol等。本教程将演示通过VMD和MD Analysis软件包分析RDF(径向分布函数)和RMSD(均方根偏差),前者可以用来分析结构性质,后者对判断结构是否稳定以及模拟是否平衡很有帮助。

将XDATCAR转换成PDB文件
以VASP官网中单个水分子的AIMD模拟为例。模拟的输入文件如下,模拟的步长是0.5 fs,模拟步数1000步,模拟时间500 fs。脚本和测试例子可以在我的Github仓库下载:

https://github.com/tamaswells/VASP_script/tree/master/XDATCAR_tookit


图1. 模拟的盒子

INCAR
PREC = Normal ! standard precision
ENMAX = 400 ! cutoff should be set manually
ISMEAR = 0 ; SIGMA = 0.1
ISYM = 0 ! strongly recommened for MD
IBRION = 0 ! molecular dynamics
NSW = 1000 ! 1000 steps
POTIM = 0.5 ! timestep 0.5 fs
SMASS = -3 ! Nose Hoover thermostat
TEBEG = 2000 ; TEEND = 2000 ! temperature
NBANDS = 8
POSCAR
H2O _2
0.52918 ! scaling parameter
12 0 0
0 12 0
0 0 12
1 2
select
cart
0.00 0.00 0.00 T T F
1.10 -1.43 0.00 T T F
1.10 1.43 0.00 T T F
KPOINTS
Gamma-point only
1 ! one k-point
rec ! in units of the reciprocal lattice vector
0 0 0 1 ! 3 coordinates and weight
模拟完成后将XDATCAR_toolkit.py上传到文件夹中(或者置于环境变量的路径文件夹中并赋予可执行权限即可直接调用命令XDATCAR_toolkit.py运行脚本),在shell环境中运行以下命令:

python XDATCAR_toolkit.py -p -t 0.5 --pbc
即可将XDATCAR的全部帧也就是0~499.5 fs的轨迹转化成PDB格式。其中-p用于开启PDB转换功能,-t 0.5用于指定时间步为0.5 fs,–pbc用于获取基于第一帧演变的连续轨迹。

Now reading vasp MD energies and temperature.
Now reading vasp XDATCAR.
Total frames 1000, NpT is False
Finish reading XDATCAR.
Selected time-range:0.0~499.5fs
[debug] Now entering function plotfigure…
运行完成后,将会在文件夹内生成Temperature.dat,Energy.dat,ENERGY.png和XDATCAR.pdb四个文件,前面两个分别为温度和能量随着模拟时间的的变化数据,第三个是使用matplotlib绘制的趋势图(如下图),最后一个是转换得到的轨迹PDB文件,可以用于可视化轨迹,亦可用于后处理分析。-b参数用于指定转换从哪一帧开始,-e参数用于指定转换到哪一帧结束。经刘锦程博士建议,增加一个–pbc的选项,用于处理周期性获取连续的轨迹。当分子穿过盒子边界时,记录真实的位置坐标(尽管它出了边界)而不是从盒子另一边穿入的ghost原子的坐标。这对于分析与时间相关性的量(比如RMSD)很有帮助。所谓连续指的是后面的轨迹都是从第一帧演变得到的真实坐标,但是并不能保证第一帧的分子是完整的,由于周期性的缘故,第一帧内摆放的分子可能分处于盒子两侧。李继存老师有篇博文(见下面链接)讲的很明白,可以参考。如果发现第一帧内分子不完整,可以通过添加-i 1参数将分子向第一个原子靠近平移以获得完整的分子。如果发现不理想,可以通过调整-i的参数获得完整的分子。

http://jerkwin.github.io/2016/05/31/GROMACS%E8%BD%A8%E8%BF%B9%E5%91%A8%E6%9C%9F%E6%80%A7%E8%BE%B9%E7%95%8C%E6%9D%A1%E4%BB%B6%E7%9A%84%E5%A4%84%E7%90%86/

图2. 温度和系统能量的变化趋势图

RDF径向分布函数分析
得到PDB文件后,可以使用VMD,MD Analysis等分子动力学后处理软件进行分析。

1、使用VMD分析工具分析
打开VMD,将PDB文件拖入显示窗口,在主菜单VMD Main中选择Extensions-Analysis-Radial Pair Distribution Function g®,选择分析H(type H)在O(type O)周围的概率分布。值得注意的是分析RDF时,横坐标也就是max r不能超过盒子最小边长的一半,也就是得满足最小映像约定。如图4所示,在计算RDF时,如果max r的取值大于盒子最小边长的一半,就有可能重复算到一个粒子和它的映像粒子,这使得程序的周期性判断失准。将生成的dat文件的第一列和第二列作图即可得到RDF图。

图3. VMD中计算RDF

图4. 最小映像约定示意图

2、使用 MD Analysis分析 RDF
MD Analysis是一个成熟的分子动力学后处理软件,使用Python编写,开源。其教程不仅步骤详细还会给出背景理论知识。可以通过conda或者pip工具在线安装。

conda config --add channels conda-forge
conda install mdanalysis
#or
pip install --upgrade MDAnalysis
RDF分析的介绍和使用方法在网页(见下面链接)上查看。使用以下的脚本得到在O原子周围找到H原子的概率,并调用matplotlib绘制RDF图。在1.0
Å
处出现一个尖峰,也就是对应了O-H键的平衡键长(0.96
Å
)。

https://www.mdanalysis.org/docs/documentation_pages/analysis/rdf.html#radial-distribution-functions-mdanalysis-analysis-rdf

import MDAnalysis
import MDAnalysis.analysis.rdf
import matplotlib.pyplot as plt
u = MDAnalysis.Universe(‘XDATCAR.pdb’, permissive=True)
g1= u.select_atoms(‘type O’)
g2= u.select_atoms(‘type H’)
rdf = MDAnalysis.analysis.rdf.InterRDF(g1,g2,nbins=75, range=(0.0, min(u.dimensions[:3])/2.0))

rdf.run()
fig = plt.figure(figsize=(5,4))
ax = fig.add_subplot(111)
ax.plot(rdf.bins, rdf.rdf, ‘k-’, label=“rdf”)
ax.legend(loc=“best”)
ax.set_xlabel(r"Distance (KaTeX parse error: Can't use function '\r' in math mode at position 1: \̲r̲ ̲A)")
ax.set_ylabel(r"RDF")
fig.savefig(“RDF_all.png”)
#plt.show()

图5. RDF_O_H

RMSD均方根偏差分析
1、VMD分析RMSD
确保使用了-pbc参数以获取连续的轨迹,将生成的XDATCAR.pdb文件拖入显示窗口。如图6右所示,第一帧内水的三个原子不在同一个镜像内,分子不完整。在进行RMSD分析时,尽管轨迹是连续的,但是在对齐分子时就会出现问题。因此在本例中需要选择第一个原子作为中心将分子平移完整,在图6左中,分子已经在同一个镜像中了。

python XDATCAR_toolkit.py -p -t 0.5 --pbc -i 1

图6. 完整和不完整的水分子

将重新生成的PDB文件拖入显示窗口,在主菜单VMD Main中选择Extensions-Analysis-Analysis-RMSD Trajectory Tool,在计算RMSD前必须先做Align(对齐),这会使得每一帧结构进行平移、旋转来与参考帧的结构尽可能贴近,从而使得RMSD最小化。刘锦程提到研究生物法分子的RMSD时需要对齐操作,而研究小分子时不需要对齐分子。

图7. VMD中计算RMSD

把左上角文本框里的默认的Protein改成all(代表所有原子都纳入考虑),然后把noh复选框的勾去掉(否则将忽略氢原子)。然后点右上角的ALIGN按钮,此时所有帧的结构就已经对齐了。本例中演示以模拟的第一帧为参考,分析氧原子位置的均方根偏差。因此在Reference mol那里选top作为参考结构,左上角文本框由all改为type O(代表计算O原子的RMSD),然后勾上Plot复选框,最后点击RMSD按钮即可得到O原子的RMSD图。在File菜单栏可以选择导出dat数据。

图8. VMD中未对齐轨迹计算的RMSD

图9. VMD中对齐了轨迹后计算的RMSD

2、使用 MD Analysis分析 RMSD
RMSD分析的介绍和使用方法在网页(见下面链接)上查看。使用以下的脚本可以分别得到所有原子,氢原子,氧原子的RMSD,并调用matplotlib绘制RMSD图。网页中有一段话(Note If you use trajectory data from simulations performed under periodic boundary conditions then you must make your molecules whole before performing RMSD calculations so that the centers of mass of the selected and reference structure are properly superimposed)也就是在计算RMSD的时候选择的分子必须是完整的,不能分处于盒子的两边。这与我们之前的描述是一致的。MD Analysis默认对齐了分子。

https://www.mdanalysis.org/docs/documentation_pages/analysis/rms.html?highlight=average

使用以下脚本可以绘制对齐了轨迹后所有原子,氧原子和氢原子的RMSD。

import MDAnalysis
import MDAnalysis.analysis.rms
import matplotlib.pyplot as plt
u = MDAnalysis.Universe(‘XDATCAR.pdb’, permissive=True)
ref = MDAnalysis.Universe(‘XDATCAR.pdb’, permissive=True) # reference (with the default ref_frame=0)
ref.trajectory[0] #use first frame as reference
R = MDAnalysis.analysis.rms.RMSD(u, ref,
select=“all”, # superimpose on whole backbone of all atoms # align based on all atoms
groupselections=[“type H”,“type O”],
filename=“rmsd_all.dat”,center=True)#, # CORE
timestep=0.0005 #0.5fs from fs to ps as Reader has no dt information, set to 1.0 ps
R.run()
rmsd = R.rmsd.T # transpose makes it easier for plotting
time = rmsd[1]*timestep
fig = plt.figure(figsize=(5,4))
ax = fig.add_subplot(111)
ax.plot(time, rmsd[2], ‘k-’, label=“all”)
ax.plot(time, rmsd[3], ‘r–’, label=“type H”)
ax.plot(time, rmsd[4], ‘b–’, label=“type O”)
ax.legend(loc=“best”)
ax.set_xlabel(“time (ps)”)
ax.set_ylabel(r"RMSD (KaTeX parse error: Can't use function '\r' in math mode at position 1: \̲r̲ ̲A)")
fig.savefig(“rmsd_md_analysis.png”)

图10. MD Analysis计算的对齐了轨迹后计算的所有原子,H原子和O原子的RMSD

第一性原理分子动力学(AIMD)结果分析教程相关推荐

  1. 基于TBtools做基因家族分析教程 (全)

    基因家族分析笔记-全部开始记录 一. 写在前面 2023年4月中旬自己开始做基因家族的分析,对于这块自己没有接触过,因此也是一个挑战,没事!!!(安慰自己),对于基因家族的分析网上的教程很多,跟着步骤 ...

  2. 视频教程-经典Vue从入门到案例到源码分析教程(含资料)-Vue

    经典Vue从入门到案例到源码分析教程(含资料) 张长志技术全才.擅长领域:区块链.大数据.Java等.10余年软件研发及企业培训经验,曾为多家大型企业提供企业内训如中石化,中国联通,中国移动等知名企业 ...

  3. 源码分析教程5部曲之1——漫游C语言-杨振平-专题视频课程

    源码分析教程5部曲之1--漫游C语言-5052人已学习 课程介绍         源码分析教程5部曲之1--漫游C语言 课程收益     源码分析教程5部曲之1--漫游C语言 讲师介绍     杨振平 ...

  4. Charles最新破解版苹果iphone安卓android手机抓包分析教程笔记

    Charles最新破解版苹果iphone安卓android手机抓包分析教程笔记 中间遇到各种问题导致最终没法看到抓包信息,一个坑一个坑的埋,终于成功抓包小程序. 梳理了下可以尽量减少栽坑的安装过程,如 ...

  5. Abaqus高级实例分析视频教程-材料 静力 结构优化分析教程

    Abaqus高级实例分析视频教程-材料 静力 结构优化分析教程 链接:https://pan.baidu.com/s/11ri8tIpbMWYvtTciQYK8Wg 提取码:i3qw

  6. CAD日照分析教程:CAD软件中如何擦除阴影?

    在正版CAD软件中绘制建筑CAD图纸时,CAD日照分析是必不可少的一个环节.那么在进行日照分析的过程中如何擦除阴影呢?不知道也没关系,接下来的CAD日照分析教程小编就来给大家介绍一下在正版CAD软件- ...

  7. CAD日照分析教程:CAD软件中地理位置命令怎么用?

    有些刚开始进行CAD制图初学入门学习的小伙伴在使用在正版CAD软件中绘制建筑CAD图纸过程中,不知道在进行CAD日照分析的过程中该如何使用浩辰建筑CAD软件中的地理位置命令来编辑地理位置数据库?接下来 ...

  8. opencv 图像与视频分析教程③

    opencv 图像与视频分析教程 代码: https://github.com/bai1231/opencv-learn_and_pratice 二值图像分析 图像二值化 二值图像轮廓分析 霍夫检测 ...

  9. Ellisys Bluetooth Sniffer文档 (EEN-BT02) - Bluetooth分析教程

    Ellisys Bluetooth分析教程 介绍 本文将提供有关Ellisys蓝牙分析软件的快速演练. 样本捕获 评估Ellisys蓝牙分析软件的最简单方法是查看随安装提供的预捕获文件.可以从 &qu ...

  10. [R语言] R语言PCA分析教程 Principal Component Methods in R

    R语言PCA分析教程 Principal Component Methods in R(代码下载) 主成分分析Principal Component Methods(PCA)允许我们总结和可视化包含由 ...

最新文章

  1. C# chart控件基础使用
  2. Microsoft 365及应用开发的未来:微软BUILD 2018大会第二天主题演讲
  3. 在SLES-11-SP1-i586上搭建apache+php环境
  4. Java虚拟机学习(4):JDK可视化监控工具
  5. 连接sftp服务器命令
  6. Java高新技术笔记:反射、多线程、泛型、枚举、javaBean、代理
  7. Java陷阱(一)——ArrayList.asList
  8. vue导出Excel(一)
  9. 手动爬虫之京东笔记本栏(ptyhon3)
  10. 光伏发电量和用电量的概率预测研究综述(3)
  11. webpack学习之路------配置多个 HTML 文件
  12. 电梯测试震动软件,保证质量电梯振动分析仪
  13. 大二文本分词过滤分类实验总结
  14. “完数”问题 求1000以内的完数
  15. 区块链学习7:超级账本项目Hyperledger与Fabric以及二者的关系
  16. input输入长度 vue_Vue实现input宽度随文字长度自适应操作
  17. Ubuntu18.04重启后无法进入图形化界面
  18. Android xml 属性大全
  19. SQL数据库编写及示例
  20. 2021年化工自动化控制仪表考试试卷及化工自动化控制仪表模拟考试题库

热门文章

  1. c-lodop打印网页内容
  2. 语言学句法分析树形图怎么画_科学网—《泥沙龙笔记:漫谈自动句法分析和树形图表达》 - 李维的博文...
  3. Ventoy的pe盘制作及重装系统步骤【解释的非常清楚!!!】
  4. ps怎么撤销参考线_ps打开辅助线的快捷键在哪,ps如何取消辅助线
  5. c语言中整形的最大最小值,c语言整数和浮点数的最大最小值
  6. 王佩丰excel教程笔记(排序 筛选)
  7. 如何区分网线是几类的_怎么看网线是几类网线?
  8. 群晖虚拟机VMM定时开启
  9. java: 找不到符号 报错
  10. 您的Window许可证即将过期的一种解决办法