DNA六元纳米管-续
最后调整出来的在AMBER构建百分之八十的100mM的氯化钠乙醇溶剂的方法:
(1)在GROMACS采用insert的方法插入既定数量的乙醇分子和水分子。
(2)百分之八十是质量浓度,别按体积浓度算
(3)等盒子收敛到一定程度的时候,再根据体积算出来要多少氯化钠分子。
(4)由于盒子收敛的时候体积变化太大,会报错:
SANDER BOMB in subroutine nonbond-list
volume of ucell too big, too many subcells
list grid memory needs to be reallocated, restart sander
解决的办法是,先不加热,先进行density(也就是将压力维持在1atm,温度此时暂时设定为10K),等到盒子的体积不变的时候,再进行加热。问题是当dt = 0.02,体系还是会炸掉,所以我一直用的都是0.01的步长。
所以,我探索出来的正常的流程是这样的:
一 先构建乙醇 水 氯离子 钠离子的pdb文件
1 乙醇的
在薛定谔中画好乙醇的结构,保存为mol2格式,然后在antechamber中计算电荷,输入的命令为:
antechamber -i ethanol.mol2 -fi mol2 -o ethanol-amb.mol2 -fo mol2 -c bcc -nc 0
然后
parmchk2 -f ethanol-amb.mol2 -o ethanol.frcmod 其实这里的frcmod文件是空的,因为不缺少参数‘
接下来,在leap中
source leaprc.ff14SB
source leaprc.gaff
loadoff ethanol.lib
a = loadpdb ethanol-amb.pdb
check a
savepdb a ethanol-leap.pdb
quit
这样子的话,乙醇的pdb文件就准备好了,最终乙醇的pdb就是这个ethanol-leap.pdb文件。
2 水
按照同样的方法载入力场信息之后,list,可以看到水的是TIP3PBOX,所以
savepdb TIP3PBOX tip3pbox.pdb
这样子的话,就存了amber中的一个水的pdb文件,但是这是一个水盒子,里边有216个水分子,所以删掉其他的水分子,只留一个水分子,另存为w.pdb。
这样子就有了水的pdb文件,也就是w.pdb。
3 钠离子和氯离子
list之后,可以看到氯离子和钠离子的名称分别是Na+ Cl-,所以
savepdb Na+ na.pdb
savepdb Cl- cl.pdb
这样子也就有了钠离子和氯离子的pdb文件。
二 先优化水和乙醇,确定好体积。
质量分数是百分之八十,所以乙醇和水的质量比是4:1.先根据质量比,跟各自的摩尔质量得到摩尔比,再乘以阿弗伽德罗常数(6.02 * 10^23),就是乙醇和水分子各自的个数。
由于考虑到盒子的收敛问题,以及最终需要确定的钠离子和氯离子的个数,以及在GROMACS中插入离子,太多会插不进去。最终我确定的乙醇的个数414个,水的个数是265个,GROMACS中的盒子变长是3.7nm。
所以只构建含乙醇和水的百分之八十的体系(不含离子)方法如下:
gmx editconf -f ethanol-leap.pdb -o box.gro -bt cubic -box 3.7 3.7 3.7 -c
gmx insert-molecules -f box.gro -ci ethanol-amb.pdb -ci 413 -o add-aol.pdb
gmx insert-molecules -f add-eol.pdb -ci w.pdb -nmol 265 -o add-w.pdb
这样子生成了一个满足水和乙醇要求的盒子,接下来就是在amber中优化,给达到满足要求的温度和密度,然后得到一个体积。
在amber中,载入pdb之前,在里边把gromacs加的盒子删掉,也就是把atom之前的那些盒子都删掉。载入力场什么之后,a=loadpdb add-w.pdb
check a ,
接下来必须给加个盒子,不然跑的时候,那些分子都会跑出来。而且这一步加的盒子必须合理,不能太大,不然体系会炸掉的。
用这个命令可以加入一个比较合理的盒子:
setbox a "centers" (这块也可以用”vdw“,centers的意思是,把原子中心置于盒子中心,而”vdw“的意思是将所有原子置于盒子中心,center比vdw加的盒子稍微小个几埃)
savepdb a a.pdb (用pbc box 在vmd中看这个盒子是乱的,盒子的一个角在分子的中心)
saveamberparm a .prmtop a.inpcrd
接下来在sander中进行优化,最小化一定要做好,本来就只跑了2000步,不行,后来我最小化了三万步。
这个是最小化的输入文件,应该注意的是,因为加了盒子,所以这里是ntb=1,恒定体积
接下来不加热,温度设定为10K ,进行density,dt就得弄成0.01,要弄成0.02,就炸了
这个是第第一次density的输入文件,值得注意的是,ntb=2,恒压,允许盒子体积改变,irest=0,重启模拟。
接下来有density2,
注意的是irest=1,ntx=5,不重启,读取之前的速度和位置。这儿一定得注意,之前就弄错了。
我试验了一下,density2.in五六次就够了,体积就不不变了,为了确定,我进行了九次。
接下来就是加热,为了安全性,我是50度50度加的热,总共加了6次。输入文件如下:
heat2 heat3 ----heat6都一样,只是把温度改了。
接下来又进行了prod.in
输入文件:
接下来,不管是看轨迹还是用end.prmtop和end.inpcrd生成pdb,都得去除周期性,不然的话感觉会不准。
轨迹去除周期性的方法:先构建一个prod.ptraj文件:trajin prod.nc
trajout prod_reimage.nc
image familiar
go
然后在命令行里输入:cpptraj -p end.prmtop -i prod.ptraj
由于我们要看体积,我只会生成pdb文件在第一行看盒子的尺寸。所以要生成最后一帧的pdb文件。如果用rst文件直接转的话,生成的是这样子的:
我是提取prod去除周期的轨迹的最后一帧另存为Pdb的。(怎么知道有多少帧?轨迹加载到VMD中,用VMD看)
cpptraj
>parm end,prmtop
>trajin prod_reimage,nc 500 500
>trajout prod_500.pdb pdb
>go
>quit
这样子就生成了一个包含盒子的pdb文件。
这里边的单位是埃,然后就乘。得到体积后,得到需要多少个钠离子氯离子的。我最后算出来是3个钠离子三个氯离子。
然后在GROMACS中插入离子,加上盒子之前,记得把pdb中本来的盒子删掉啊。接下来加盒子,正常插入就可以了。
然后跟上边的步骤一样:min,density,heat。prod,然后输出最后一帧的pdb文件,就是最终得到的和TIP3P一样的体系了。
接下来:构建DNA的体系
第一步:在XLEAP中给DNA加电荷,中和,生成一个DNA_neu.pdb文件。
第二步:删除生成的乙醇盒子的盒子信息,另存为一个pdb文件,命名为gen_box.pdb。
第三步:接下来在leap中载入,之后就是加溶剂,加盒子。
方法:
setbox unit “vdw”/“centers" {x y x}
这个只加盒子,不加水。因为solvatebox没法设置盒子的三个边长,所以先用setbox加上盒子。
假如溶质的”vdw“尺寸是100 100 120,那么此时如果输入{10 10 10},那么就是在这“vdw”的基础上加10,此时的盒子边长就是110 110 130
加好盒子之后,添加溶剂的命令是:
solvatebox soluite solvent 0
接下来在amber中跑的时候,在density即升压这一步,要跑够足够长的时间,因为乙醇的密度是0.8,要是想让体系没有缝,就要看out文件里的密度,使得体系最终的密度为0.8,rms波动那块为0.001才是体系平衡了,平均的密度也是0.8左右。density是一个跑完接着跑下一个,直到体系的密度为0.8左右。