2016年6月17日 星期五

GROMACS續跑

跑分子模擬會有兩種狀況必須要續跑:一是跑到一半系統因為其他緣故關機,另外一種則是已經跑完但想要延長模擬的時間。在此用GROMACS-5.1.2為例子,說明如何續跑。

首先是最初跑模擬的指令,結構與設定都存在 md.tpr 這個檔案中,假設跑10 ns
參數 -deffnm md 意思是說,所有產生的檔案都用md開頭,像是 md.cpt與md_prev.cpt(checkpoint file)、md.xtc與md.trr (trajectory files)、md.edr(energy file)、md.gro(最終的結構)。參數 -nt 8 意思是用八個核心去跑,參數 -v 是碎念模式


第一種狀況:電腦因為其他原因把模擬的程式給關掉,假設只跑到7.7 ns
  • gmx mdrun -deffnm md -cpi md.cpt -nt 8 -v -append
這時候要從7.7 ns開始續跑。檔案 md.cpt 是所謂的checkpoint file,一段時間系統會把狀態存在這個檔案裡面,有可能跳掉前存到7.5 ns。上面的指令就會去存取 checkpoint file,然後從存取的點開始繼續往後跑。參數 -append 指定續跑的資料要附加在原本的檔案後面。
¡¡ 注意:這邊一定要指定checkpoint file,不然就是直接從頭開始跑 !!


第二種狀況:已經跑完10 ns的模擬了,想要續跑到20 ns
  • gmx convert-tpr -s md.tpr -until 20000 -o md_10_20.tpr
  • gmx mdrun -deffnm md_10_20 -cpi md.cpt -nt 8 -v 
  • gmx trjcat -f md.xtc md_10_20.xtc -o md_20ns.xtc
第一個指令是產生跑模擬的設定檔,設定要跑到20 ns(= 20000 ps);第二個指令則是要求從前面跑出來的檢查檔 md.cpt,也就是10 ns開始跑。兩個指令就是要求續跑 10 - 20 ns。最後一個指令則是將前面兩個trajectories給連結起來,成為一個完整的 0 - 20 ns的檔案。

第二種狀況也可以用下面的方法來跑:
  • gmx convert-tpr -s md.tpr -until 20000 -o md.tpr
  • gmx mdrun -deffnm md -cpi md.cpt -nt 8 -v -append
這樣就不會出現很多個片段。要注意第一個指令會把舊的 md.tpr 更改 nsteps 這個參數後,然後整個覆蓋過去,還有 md.log 檔案,前面的記錄"MEGA-FLOPS ACCOUNTING"這個部分會被蓋掉。這樣做的好處是不會重複出現一堆trajectories的片段,所以也就不需要再用trjcat來連結這些檔案。

2016-Jun-29 新增如何連結trajectories

第二種狀況的第一種方法裡面會產生許多trajectories。使用trjcat將這些檔案連結在一起

_EOF_

2 則留言:

  1. gmx trjcat -f md.xtc md_10_20.xtc -f md_20ns.xtc
    应该是-o md_20ns.xtc?

    回覆刪除
    回覆
    1. 是的,我少打了-o,謝謝你的回應

      刪除