vsREMD 操作

确定需要的vsREMD副本数

/home/databank/zzy/usp18/vsREMD/noloop_24/parameters

初始结构准备

  • ### tleap
  • # 把tleap的操作流程写入tleap${i}.in,记得更改每个tleap.in里的蛋白名称
  • # tleap${i}.in 大致模板如下
  • ###########################################################################################
  • source leaprc.protein.ff19SB
  • source leaprc.water.opc
  • pro=loadpdb pM.pdb
  • charge pro
  • solvatebox pro OPCBOX 10
  • addionsrand pro Na+ 4 
  • charge pro
  • saveamberparm pro pro.prmtop pro.inpcrd
  • savepdb pro pro_tleap.pdb
  • ###########################################################################################

  • # 记得到不同的目录下执行
  • tleap -s -f tleap${i}.in

  • python change.py
  • ####### change.py ###################################################
  • import parmed as pmd
  • amber = pmd.load_file('pro.prmtop','pro.inpcrd')
  • amber.save('topol.top')
  • amber.save('gromacs.gro')
  • #####################################################################

  • # 添加位置限制信息
  • !!!! vsREMD的 topol文件;posre.itp;index.ndx 不同副本需要一致,这意味着原子数需要完全一致,但是tleap加溶剂往往数目不会完全一致,因此需要选择一个副本作为基准(一般是溶剂数最少的),所有副本都用它的topol文件;posre.itp;index.ndx。手动删除其他副本gromacs.gro里的多余溶剂分子,使其原子数一致。

  • # 案例:一个有20个副本的体系,以副本6为基准,原子数59872,溶剂数14035
  • # 手动删除其他副本的溶剂至14035后,还要更改gromacs.gro第二行的总原子数
  • for a in {1..25};do sed -i "2s/.*/59872/" ../${a}/gromacs.gro;done

  • # 用副本6的gromacs.gro的文件生成
  • # 事实上,用哪一个副本都是一样的
  • gmx_mpi make_ndx -f gromacs.gro -o index.ndx
  • gmx_mpi genrestr -f gromacs.gro -o posre.itp

预平衡(for loop)

  • # 300K 平衡
  • # 模板如下
  • # 记得检查gmx版本
  • which gmx_mpi
  • ###########################################################################################
  • for i in {1..20}
  • do
  • cd ${i}
  • gmx_mpi grompp -f ../parameters/minim.mdp -c gromacs.gro -p ../topol_6/topol.top -o em.tpr
  • mpirun -np 50 gmx_mpi mdrun -v -deffnm em
  • gmx_mpi grompp -f ../parameters/nvt.mdp -c em.gro -r em.gro -p ../topol_6/topol.top -o nvt.tpr
  • mpirun -np 50 gmx_mpi mdrun -v -deffnm nvt
  • gmx_mpi grompp -f ../parameters/npt.mdp -c nvt.gro -r nvt.gro -t nvt.cpt -p ../topol_6/topol.top -n ../topol_6/index.ndx -o npt.tpr
  • mpirun -np 50 gmx_mpi mdrun -v -deffnm npt
  • done
  • ###########################################################################################

  • # 记得检查gmx版本
  • which gmx_mpi
  • # 升温平衡
  • # 将mdp文件中的温度改成vsREMD对应的温度
  • for a in {1..20};do b=`sed -n "${a}p" ../parameter/temp`; sed "s/300/${b}/g" ../parameter/npt.mdp > npt_mdp/npt${a}.mdp; done

  • # 记得检查gmx版本
  • which gmx_mpi

  • for i in {1..20};do gmx_mpi grompp -f npt_mdp/npt${i}.mdp -c ../pre/pre${i}.gro -r ../pre/pre${i}.gro -p ../parameter/topol.top -n ../parameter/index.ndx -o npt${i}.tpr -maxwarn 1; done

  • # 可以交后台
  • nohup sh -c 'for i in {0..25};do mpirun -np 50 gmx_mpi mdrun -v -deffnm npt${i}; done' &

vsREMD测试

  • # 1ns test
  • for a in {1..20};do b=`sed -n "${a}p" ../parameter/temp`; sed "s/300.00/${b}/g" ../parameter/md.mdp > md_mdp/md${a}.mdp; done

  • for i in {1..20};do gmx_mpi grompp -f md_mdp/md${i}.mdp -c ../npt/npt${i}.gro -p ../parameter/topol.top -n ../parameter/index.ndx -o md${i}.tpr -maxwarn 1; done

  • nohup mpirun -np 100 gmx_mpi mdrun -v -deffnm md -multidir md1 md2 md3 md4 md5 md6 md7 md8 md9 md10 md11 md12 md13 md14 md15 md16 md17 md18 md19 md20 -replex 1000 &

  • #查看任务
  • 1.tail -f nohup.out  
  • 2.jobs
  • 3.vi nohup.out
  • 4.vi md0.log

调整温度参数

对于交换率不满足0.2-0.5的副本,需要调整温度间隔
若<0.2,调小T间隔
若大于0.5,调大T间隔
测试结果实例:
做到这一步的童鞋可联系我获取温度调参脚本一份(记得提前联系我,俺要复习一遍才能告诉你这玩意咋用)