Plumed分子模拟后分析
技术背景
在前面的几篇博客中,我们分别介绍过Histogram算法的使用、Plumed安装与简单使用。Plumed一般就是两种用法:要么在运行分子动力学模拟的过程中实时的对接,要么就是把分子模拟的相关轨迹保存下来,然后再使用Plumed进行后分析,本文介绍的是后面这种使用方法。
轨迹准备
做后分析,我们要先准备一手轨迹。比如我们做Histogram,那么就需要保留一条CV的轨迹,或者说反应坐标的轨迹。一般为了归一化的需求,我们可能还需要保留反应坐标所对应的单点能,或者称之为Bias偏置势。如下是一条轨迹的示例record_cv_bias.txt
,含有100个点:
#! FIELDS time rbias dcomb
0 1.0 0.722307
1 1.0 0.929853
2 1.0 1.046353
3 1.0 0.849326
4 1.0 0.635665
5 1.0 1.133585
6 1.0 1.602735
7 1.0 1.11138
8 1.0 0.815045
9 1.0 0.744088
10 1.0 0.631533
11 1.0 1.006049
12 1.0 0.507855
13 1.0 0.620414
14 1.0 1.43557
15 1.0 0.798832
16 1.0 1.007135
17 1.0 0.684447
18 1.0 1.073844
19 1.0 0.952023
20 1.0 0.754293
21 1.0 0.530406
22 1.0 1.078594
23 1.0 1.325044
24 1.0 1.418314
25 1.0 1.110357
26 1.0 0.964378
27 1.0 0.893131
28 1.0 1.473515
29 1.0 1.103729
30 1.0 1.019812
31 1.0 1.037889
32 1.0 1.092906
33 1.0 0.602312
34 1.0 1.016394
35 1.0 0.845226
36 1.0 1.210281
37 1.0 0.744589
38 1.0 0.666467
39 1.0 1.276913
40 1.0 0.976801
41 1.0 0.92263
42 1.0 1.386575
43 1.0 1.243241
44 1.0 1.442755
45 1.0 1.284636
46 1.0 0.756184
47 1.0 1.162758
48 1.0 1.177665
49 1.0 0.717487
50 1.0 1.193379
51 1.0 0.798996
52 1.0 1.045093
53 1.0 1.489541
54 1.0 1.067574
55 1.0 1.10109
56 1.0 1.135074
57 1.0 1.049557
58 1.0 0.362635
59 1.0 1.030856
60 1.0 1.323538
61 1.0 1.405822
62 1.0 0.935292
63 1.0 0.868032
64 1.0 0.946401
65 1.0 1.468123
66 1.0 1.062565
67 1.0 1.05637
68 1.0 0.962974
69 1.0 1.50403
70 1.0 0.95933
71 1.0 1.218142
72 1.0 1.303102
73 1.0 0.876645
74 1.0 1.188313
75 1.0 1.31572
76 1.0 0.693456
77 1.0 0.54377
78 1.0 1.026873
79 1.0 1.3925
80 1.0 1.317733
81 1.0 0.972162
82 1.0 1.373311
83 1.0 1.244547
84 1.0 1.00565
85 1.0 1.180062
86 1.0 1.221193
87 1.0 1.046702
88 1.0 1.409161
89 1.0 1.132955
90 1.0 0.428334
91 1.0 0.890674
92 1.0 0.63586
93 1.0 0.997099
94 1.0 0.969676
95 1.0 1.280118
96 1.0 1.19793
97 1.0 1.112535
98 1.0 1.388056
99 1.0 0.946911
有了轨迹之后,写一个简单的Plumed配置文件plumed.dat
:
cv: READ FILE=record_cv_bias.txt VALUES=dcomb IGNORE_TIME
w: READ FILE=record_cv_bias.txt VALUES=rbias IGNORE_TIME
rw: REWEIGHT_BIAS ARG=w TEMP=300
hh: HISTOGRAM ...
ARG=cv
KERNEL=gaussian
GRID_MIN=0.3
GRID_MAX=1.65
GRID_BIN=50
BANDWIDTH=0.05
NORMALIZATION=true
LOGWEIGHTS=rw
...
DUMPGRID GRID=hh FILE=histo
这个文件的逐行释义为:
1. 读取record_cv_bias.txt文件中标签为dcomb的一列,作为cv
2. 读取record_cv_bias.txt文件中标签为rbias的一列,作为w
3. 使用w定义一个归一化的系数rw,对应的温度为300K
4~13. 定义Histogram参数,使用高斯核,区间最小值为0.3,区间最大值为1.65,区间内分50个格子,波包带宽为0.05,使用rw进行归一化
14. 将输出数据保存到名为histo的文件内
运行Plumed
安装好plumed以后,之间在对应文件的目录下运行:
$ plumed driver --plumed plumed.dat --noatoms
PLUMED: PLUMED is starting
PLUMED: Version: 2.7.1 (git: Unknown) compiled on Jul 12 2021 at 09:24:30
PLUMED: Please cite these papers when using PLUMED [1][2]
PLUMED: For further information see the PLUMED web page at http://www.plumed.org
PLUMED: Root: /usr/local/lib/plumed
PLUMED: For installed feature, see /usr/local/lib/plumed/src/config/config.txt
PLUMED: Molecular dynamics engine: driver
PLUMED: Precision of reals: 8
PLUMED: Running over 1 node
PLUMED: Number of threads: 1
PLUMED: Cache line size: 512
PLUMED: Number of atoms: 0
PLUMED: File suffix:
PLUMED: FILE: plumed.dat
PLUMED: Action READ
PLUMED: with label cv
PLUMED: with stride 1
PLUMED: reading data from file record_cv_bias.txt
PLUMED: reading value dcomb and storing as cv
PLUMED: Action READ
PLUMED: with label w
PLUMED: with stride 1
PLUMED: reading data from file record_cv_bias.txt
PLUMED: reading value rbias and storing as w
PLUMED: Action REWEIGHT_BIAS
PLUMED: with label rw
PLUMED: with arguments w
PLUMED: Action HISTOGRAM
PLUMED: with label hh
PLUMED: with stride 1
PLUMED: with arguments cv
PLUMED: reweighting using weights from rw
PLUMED: grid of 51 equally spaced points between (0.3) and (1.65)
PLUMED: Action DUMPGRID
PLUMED: with label @4
PLUMED: with stride 0
PLUMED: outputting grid calculated by action hh to file named histo with format %f
PLUMED: outputting data for replicas 0 END FILE: plumed.dat
PLUMED: Timestep: 1.000000
PLUMED: KbT has not been set by the MD engine
PLUMED: It should be set by hand where needed
PLUMED: Relevant bibliography:
PLUMED: [1] The PLUMED consortium, Nat. Methods 16, 670 (2019)
PLUMED: [2] Tribello, Bonomi, Branduardi, Camilloni, and Bussi, Comput. Phys. Commun. 185, 604 (2014)
PLUMED: Please read and cite where appropriate!
PLUMED: Finished setup
PLUMED: Cycles Total Average Minimum Maximum
PLUMED: 1 0.007538 0.007538 0.007538 0.007538
PLUMED: 1 Prepare dependencies 99 0.000267 0.000003 0.000002 0.000008
PLUMED: 2 Sharing data 99 0.000007 0.000000 0.000000 0.000000
PLUMED: 3 Waiting for data 99 0.000010 0.000000 0.000000 0.000000
PLUMED: 4 Calculating (forward loop) 99 0.001478 0.000015 0.000014 0.000057
PLUMED: 5 Applying (backward loop) 99 0.000130 0.000001 0.000001 0.000003
PLUMED: 6 Update 99 0.003019 0.000030 0.000014 0.000093
运行完成后,如果没有报错,会在当前目录下生成一个histo
文件,内容为:
#! FIELDS cv hh dhh_cv
#! SET normalisation 146.331611
#! SET min_cv 0.3
#! SET max_cv 1.65
#! SET nbins_cv 50
#! SET periodic_cv false
0.300000 0.040185 1.087032
0.327000 0.073737 1.333674
0.354000 0.108112 1.138788
0.381000 0.132720 0.673529
0.408000 0.146143 0.387485
0.435000 0.158725 0.647624
0.462000 0.185775 1.399849
0.489000 0.233253 2.034814
0.516000 0.290241 2.109999
0.543000 0.347304 2.200385
0.570000 0.415370 2.931229
0.597000 0.504292 3.503145
0.624000 0.592054 2.763309
0.651000 0.645747 1.208607
0.678000 0.663637 0.297321
0.705000 0.670123 0.268624
0.732000 0.677724 0.233552
0.759000 0.679871 -0.077180
0.786000 0.677381 0.020735
0.813000 0.688778 0.956408
0.840000 0.733653 2.431984
0.867000 0.822586 4.209499
0.894000 0.963284 6.230239
0.921000 1.155414 7.841243
0.948000 1.373556 8.056159
0.975000 1.575612 6.691082
1.002000 1.725112 4.227284
1.029000 1.795526 0.856452
1.056000 1.767797 -2.871105
1.083000 1.648824 -5.650900
1.110000 1.480563 -6.442901
1.137000 1.318483 -5.309715
1.164000 1.198476 -3.600376
1.191000 1.115220 -2.744803
1.218000 1.043134 -2.600741
1.245000 0.977289 -2.155749
1.272000 0.928752 -1.443136
1.299000 0.894999 -1.109955
1.326000 0.868484 -0.743408
1.353000 0.859332 0.120417
1.380000 0.869809 0.444883
1.407000 0.867177 -0.906627
1.434000 0.811246 -3.257711
1.461000 0.694147 -5.274589
1.488000 0.536089 -6.215685
1.515000 0.370839 -5.747150
1.542000 0.236681 -4.040289
1.569000 0.154469 -2.128090
1.596000 0.112702 -1.142470
1.623000 0.083908 -1.071380
1.650000 0.053970 -1.101246
这个结果的三列数据分别为:cv值、密度值和标准差,对于我们而言,主要关注下前两列的结果即可,可以写一个Python脚本做一下简单的可视化:
import numpy as np
with open('histo', 'r') as hfile:
hlines = hfile.readlines()
hcv = []
hbar = []
for hline in hlines[6:]:
hcv.append(float(hline.strip().split()[0]))
hbar.append(float(hline.strip().split()[1]))
hcv = np.array(hcv)
hbar = np.array(hbar)
from matplotlib import pyplot as plt
plt.figure()
plt.plot(hcv, hbar, color='black')
plt.show()
输出结果为:
总结概要
Plumed是一个强大的分子模拟数据处理工具,可以在模拟的过程中逐步分析,也可以保存模拟的轨迹做后分析。本文紧接前面的“增强采样软件PLUMED的安装与使用”文章,还有“直方图与核密度估计”文章。介绍了如何使用Plumed后分析工具,对输出的反应坐标的轨迹进行核密度估计。
版权声明
本文首发链接为:https://www.cnblogs.com/dechinphy/p/plumed-post.html
作者ID:DechinPhy
更多原著文章:https://www.cnblogs.com/dechinphy/
请博主喝咖啡:https://www.cnblogs.com/dechinphy/gallery/image/379634.html
Plumed分子模拟后分析的更多相关文章
- 团队作业10--事后分析(Beta版本)
设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 我们的软件的作用是帮助用户实现准确快速的电子文档查重,我们对软件的定义是电子文档查重系统,即通过文 ...
- (Beta)Let's-M2后分析报告
设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 在M1阶段我们对用户需求进行了调研,同时M1阶段我们的开发目标就是为了解决用户发起.参与.查看.搜 ...
- (Alpha)Let's-M1后分析报告
Chronos团队Let's项目 Postmortem结果 设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 在最初的用户需求和市场调研方面,团队进 ...
- Eclipse被卡死了或者失去响应了后分析根源的一个小技巧
提升程序员工作效率的工具/技巧推荐系列 推荐一个功能强大的文件搜索工具SearchMyFiles 介绍一个好用的免费流程图和UML绘制软件-Diagram Designer 介绍Windows任务管理 ...
- linux从head.s到start_kernelstart_kernel之---内核重定位后分析
参考: https://biscuitos.github.io/blog/ARM-BOOT/ zImage 重定位之后实践 zImage 重定位之后,ARM 将 pc 指针指向了重定位 zImage ...
- Android事件分发机制浅谈(三)--源码分析(View篇)
写事件分发源码分析的时候很纠结,网上的许多博文都是先分析的View,后分析ViewGroup.因为我一开始理解的时候是按我的流程图往下走的,感觉方向很对,单是具体分析的时候总是磕磕绊绊的,老要跳到Vi ...
- Virus.Win32.Virlock.b分析
0x00 样本说明 分析样本是被0b500d25f645c0b25532c1e3c9741667的样本感染得到.感染前的文件是Tcpview.exe,一款windows网络连接查看工具. 感染前后文件 ...
- 高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化
高性能Linux服务器 第10章 基于Linux服务器的性能分析与优化 作为一名Linux系统管理员,最主要的工作是优化系统配置,使应用在系统上以最优的状态运行.但硬件问题.软件问题.网络环境等 ...
- Cppcheck代码分析(1)
一.检查点 1.自动变量检查: 返回自动变量(局部变量)指针 2.越界检查: 数组越界返回自动变量(局部变量)指针 3.类检查: 构造函数初始化 4.内存泄露检查: 5.空指针检查: 6.废弃函数检查 ...
- Java 生产者消费者模式详细分析
*/ .hljs { display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; } .hl ...
随机推荐
- QT实现参数批量配置
QT实现批量配置 需求 一些参数需要批量化配置 之前搭建的FPGA的寄存器控制模型 使用AXI-lite搭建 直接操作上位机 这里需要一个可以快速配置所有参数的上位机 需要保存文件,可以保留上一次的参 ...
- BeautifulSoup 库 和 re 库 解析腾讯视频电影
1 import requests 2 import json 3 from bs4 import BeautifulSoup #网页解析获取数据 4 import sys 5 import re 6 ...
- #树上启发式合并,位运算#CF570D Tree Requests
题目 给定一个以 \(1\) 为根的 \(n\) 个结点的树,每个点上有一个字母\((a-z)\),每个点的深度定义为该节点到 \(1\) 号结点路径上的点数. 每次询问 \(a, b\) 查询以 \ ...
- #树套树,二维线段树#HDU 4819 Mosaic
题目 多组数据,给定一个\(n*n\)的矩阵(\(n\leq 80,a_{i,j}\leq 10^9\)) 多组询问一个以\((x,y)\)为中心,边长为\(L\)的子矩阵最大值\(mx\)和最小值\ ...
- #排列组合#CF1081C Colorful Bricks
题目 一共 \(n\) 块砖排成一排,把每块砖涂成 \(m\) 种颜色中的一种, 其中恰有 \(k\) 块颜色与其左边的那块砖不同(不包括第一块),问涂色方案数,对 \(998244353\) 取模. ...
- MySQL-ERROR 1701 (42000)
清空具有外键约束的表时报ERROR 1701(42000)的解决 mysql> truncate table events; ERROR 1701 (42000): Cannot truncat ...
- Buffer 与 Mat 互转
Linux系统做音视频开发,很多时候要用到opencv,就需要把图片Buffer数据转换成Mat对象来使用 Buffer 转 Mat Mat Buffer2Mat(unsigned char* buf ...
- 用HarmonyOS做一个可以手势控制的电子相册应用(ArkTS)
介绍 本篇 Codelab 介绍了如何实现一个简单的电子相册应用,主要功能包括: 1. 实现首页顶部的轮播效果. 2. 实现页面多种布局方式. 3. 实现通过手势控制图片的放大.缩小.左右滑动查 ...
- Mybatis终极案例之注解开发
Mybatis终极案例之注解开发 一.注解开发实现CURD操作 1.环境搭建 参考入门案例,环境搭建主要分为如下几步: 1.配置pom.xml <packaging>jar</pac ...
- 简述Linux磁盘IO
1.什么是磁盘 在讲解磁盘IO前,先简单说下什么是磁盘.磁盘是可以持久化存储的设备,根据存储介质的不同,常见磁盘可以分为两类:机械磁盘和固态磁盘. 1.1 机械磁盘 第一类,机械磁盘,也称为硬盘驱动器 ...