「GROMACS」の版間の差分
Kusakata.bot2 (トーク | 投稿記録) (Pkg/AUR テンプレートの更新) |
Kusanaginoturugi (トーク | 投稿記録) (カテゴリを変更) |
||
1行目: | 1行目: | ||
− | [[Category: |
+ | [[Category:科学]] |
[[Category:シミュレーション]] |
[[Category:シミュレーション]] |
||
[[en:GROMACS]] |
[[en:GROMACS]] |
2022年8月4日 (木) 10:39時点における最新版
関連記事
公式ウェブサイト によれば、GROMACS とは:
- 分子動力学法を使用するための多目的パッケージです。数百から数百万の分子が存在する系でニュートンの運動方程式をシミュレートします。
- 蛋白質や脂質、核酸などの複雑な結合相互作用を持つ生化学的な分子を主たる対象として開発されていますが、GROMACS は (大抵のシミュレーションを占める) 非結合性相互作用の計算でも非常に高速な能力を発揮するので、重合体など生物学以外の研究分野でも多くの研究者によって使われています。
インストール
gromacsAUR または gromacs-mpiAUR[リンク切れ: パッケージが存在しません] パッケージをインストールしてください。PKGBUILD はシステムにあわせて (MPI や GPU のサポートなど) 編集するようにしてください。PKGBUILD で追加・編集ができる cmake オプションとしては以下のようなものがあります (参照: GROMACS インストールガイド):
-DGMX_DOUBLE=ON
- 倍精度が必要な場合に追加してください。GROMACS インストールガイドによれば、倍精度は「低速であり、通常は意味がありません」。このフラグを設定した場合、全ての GROMACS プログラムのデフォルトサフィックスは_d
に設定されます。-DGMX_GPU=ON
- GPU のサポートを有効にしてビルドする場合に追加。-DGMX_MPI=ON
- 複数の計算ノードにまたがって実行できるようにしたい場合に追加。openmpi や mpichAUR などの MPI ライブラリも必要になります。MPI のサポートが必要ない場合 (つまり、シングルコンピュータで実行する場合)、このフラグは必要ありません。このフラグを設定した場合、全ての GROMACS プログラムのデフォルトサフィックスは_mpi
に設定されます。-DGMX_SIMD=xxx
- GROMACS は使用しているプロセッサに最適な SIMD 命令を検知してくれるので、このフラグを設定する必要はありません。しかしながら、何らかのコンパイルエラーが起こる場合は、このフラグで SIMD レベルを指定することができます。xxx
で利用できるオプションのリストがインストールガイドに記載されています。
-DGMX_X11=ON
- ビルトインされている軌道ビューアgmx view
を使う場合は設定してください。このフラグを使うには openmotif と libx11 パッケージが必要です。-DREGRESSIONTEST_DOWNLOAD=ON
- GROMACS のビルドをテストしたい場合は設定してください。テストを実行するにはmake check
を実行するようにビルドを設定します。libxml2 パッケージが必要です。-DGMX_DEFAULT_SUFFIX=OFF
- MPI や倍精度を有効にしてビルドするときに GROMACS プログラムのデフォルトサフィックスをオフにしたい場合に設定。-DGMX_BINARY_SUFFIX=xxx
と-DGMX_LIBS_SUFFIX=xxx
- バイナリやライブラリのデフォルトサフィックスを xxx に設定。
他にも性能を向上させるパッケージが存在します:
- boost-libs - 外部の Boost ライブラリを使うことでスマートポインタや例外処理などの優れた実装を利用することができます。
- hwloc - hwloc とリンクすることでハードウェアの機能を実行時に認識します。
- lapack - 正規モードの GROMACS ユーティリティや行列操作ではハードウェアに最適化済みの BLAS や LAPACK ライブラリが有用ですが、通常のシミュレーションでは特に意味はありません。
gromacs-gitAUR[リンク切れ: パッケージが存在しません] パッケージには最新の開発版ソースが含まれています。本番環境では使うべきではありません。
設定
デフォルトではトップレベルの力場ディレクトリは /usr/share/gromacs/top
にあります。GMXLIB
環境変数を設定することで別のディレクトリに変更できます。力場に変更を加えたい場合や、他の力場を使いたい場合に有用です。
使用方法
以下は主要なコマンドの基本的なワークフローです。全てのコマンドは gmx
から始まります。GROMACS の使用法に関する詳細情報はチュートリアルを見たりマニュアルを読んでください。また、こちら に便利なフローチャートがあります。
セットアップ
シミュレーションには構造ファイル (.gro
/.pdb
), トポロジーファイル (.top
), パラメータファイル (.mdp
) が必要です。以下のセクションではファイルを入手する方法を説明しています。
構造ファイルの入手
構造ファイルには分子の配置が全て記述されています。ファイルは蛋白質データベースから入手したりプログラムを使って自分で作成することが可能です。
トポロジーの生成
トポロジーファイルは原子粒子の相互の影響を規定します。トポロジーファイルを作成する方法の一つとして gmx pdb2gmx があります。protein.pdb
という名前のファイルに溶質がある場合、以下を実行:
$ gmx pdb2gmx -f protein.pdb
次に力場や水モデルの選択が要求されます。それで gro 形式の新しい構造ファイル (conf.gro
) と対応するトポロジーファイル (topol.top
) が生成されます。
構造ファイルを蛋白質データベースから入手したのではなく、自分で作成した場合、.pdb
ファイルを更新するだけなく分子の残基鋳型ファイル (.rtp
) を追加する必要があります。OPLS メタンのサンプル .rtp
ファイルは こちら にあり、対応する .pdb
ファイルは こちら です。.rtp
は使用する力場の力場ディレクトリに配置してください。
別の手段でトポロジーを生成・入手する方法は下を参照。
ボックスの作成
溶質と水で満たされたシミュレーションボックスは次のコマンドで簡単に作成できます:
$ gmx solvate -cp conf.gro -cs water -box X Y Z -o conf.gro -p topol.top
上記の場合、溶質や蛋白質の初期座標は conf.gro
に保存されます。(トップレベルの力場ディレクトリあるいはカレントディレクトリにある) water.gro の水モデルを使用してボックスが溶媒で満たされ、ボックスの容積は X
, Y
, Z
になります。トポロジーファイル topol.top
が更新され、新しい系は conf.gro
に出力されます。
-cs
を省くと、3点水モデルが使われます。他にも水の構造として tip4p
や tip5p
が使えます。
ボックスの形を変えたり、あるいは水以外の溶媒を使用することも可能です。
イオンの追加
系が電荷中性ではない場合、通常はイオンを追加します。例えば系の電荷が -2 で、陽イオンのナトリウムイオンを2つ追加するには以下を実行:
$ gmx grompp -f grompp.mdp $ gmx genion -s topol.tpr -np 2 -pname Na -o conf.gro -p topol.top
それからイオンで置き換わる溶媒に対応するインデックスグループを選択してください。-nname
引数で指定するのは使用する力場のイオンです。
パラメータファイル
シミュレーションの各ステップ (例: 極小化, 平衡化, プロダクション) ごとにパラメータファイルを作成する必要があります。 利用可能なオプションのリストは こちら。
以下は標準状態で10秒間のプロダクションを行うパラメータファイルの例です:
dt = 0.002 nsteps = 5000000 nstxout-compressed = 2500 coulombtype = PME rcoulomb = 1.0 vdwtype = Cut-off rvdw = 1.0 DispCorr = EnerPres tcoupl = Nose-Hoover nh-chain-length = 1 tc-grps = System tau-t = 2.0 ref-t = 298.15 pcoupl = Parrinello-Rahman tau_p = 2.0 compressibility = 4.46e-5 ref_p = 1.0 constraints = h-bonds continuation = yes
実行
基本
シミュレーションは基本的に二部から成ります。
まず、先行処理として構造ファイル・トポロジーファイル・パラメータファイルを読み込んで .tpr
ファイルに書き出します (.tpr
ファイルもトポロジーファイルと呼ばれることがあります):
$ gmx grompp -f grompp.mdp -c conf.gro -p topol.top -o topol.tpr
上記の grompp.mdp
はシミュレーションステップのパラメータファイル、conf.gro
はシミュレーションステップを開始する構造ファイル、topol.top
はトポロジーファイルになります。構造ファイル (.gro
) はシミュレーションの最後に出力されるので、前のシミュレーションから続行するシミュレーションで -c
で指定します (例えば、平衡化を最初に実行するときは前の極小化のステップで出力された構造ファイルを使います)。
次に、実際にシミュレーションを行います。メインプログラムの gmx mdrun で .tpr
ファイルを読み込んでシミュレーションを実行:
$ gmx mdrun -s topol.tpr
通常、上記の2つの操作をエネルギー極小化・平衡化・プロダクションの各ステップで繰り返します。平衡化は複数回実行しなくてはならない場合もあります (特に pressure coupling をオンにしたとき)。最後の平衡化とプロダクションで使用するパラメータファイル (.mdp
) はシミュレーションの長さ以外は全く同じにしてください。
例えば、極小化・平衡化・プロダクションのステップを各一回ずつ行うシミュレーションは以下のようになります:
#!/bin/bash gmx grompp -f min.mdp -o min.tpr -c conf.gro -p topol.top gmx mdrun -deffnm min gmx grompp -f eql.mdp -o eql.tpr -c min.gro -p topol.top gmx mdrun -deffnm eql gmx grompp -f prd.mdp -o prd.tpr -t eql.cpt -p topol.top gmx mdrun -deffnm prd
上記の min.mdp
, eql.mdp
, prd.mdp
は極小化・平衡化・プロダクションのそれぞれのパラメータファイルになります。
アクセラレーション & 並列化
デフォルトで GROMACS はシングルノードの全てのプロセッサを利用します。複数のノードで実行するには、MPI ライブラリが必要です。openmpi を使って GROMACS を実行する場合、以下のようになります:
$ mpirun -np totalranks -npernode rankspernode --hostfile filename gmx mdrun -s topol.tpr
上記の totalranks は作成する MPI ランクの合計数、rankspernode はノードごとの MPI ランクの数、filename はプロセスを実行するホストを決定するのに使用するホストファイルに置き換えてください。
OpenMPI は以下のように OpenMP と組み合わせて使うことができます:
$ mpirun -np totalranks -npernode rankspernode --hostfile filename gmx mdrun -ntomp openmpthreads -s topol.tpr
外部の MPI ライブラリを使わずにコンパイルした場合、GROMACS の thread-MPI を使って MPI ランクと OMP スレッドを制御できます。複数の計算ノードにまたがって実行することはできません:
$ gmx mdrun -ntmpi totalranks -ntomp openmpthreads -s topol.tpr
上記の openmpthreads は作成する OpenMP スレッドの数になります。totalranks*openmpthreads がプロセッサの合計数と同じになるようにしてください。
GPU のサポートを有効にしてコンパイルした場合、GROMACS は自動的に利用可能な GPU を検出します。MPI ランクの数は使用する GPU の数の倍数にしてください。GPU を使用するには Verlet スキームが必要です。.mdp
ファイルの cutoff-scheme
パラメータで設定してください。使用するコマンドは以下のようになります:
$ mpirun -np totalranks -npernode rankspernode --hostfile filename gmx mdrun -ntomp openmpthreads -s topol.tpr -gpu_id gpuids
上記の gpuids は0から始まる GPU の id に置き換えてください。つまり、GPU が1つしかない場合 (-np 1
)、-gpu_id 0
を使います。使用できる GPU が2つある場合 (-np 2
)、-gpu_id 01
を使います。複数の MPI ランクで GPU を使う場合、使用する回数だけ id を記述してください。例えば、2つの GPU で4つの GPU ランクを使うなら -np 4
になり、2つの MPI ランクで GPU を使うなら -gpu_id 0011
になります。20コアのマシンが2つある場合、コマンドは以下のようになります:
$ mpirun -np 8 -npernode 4 --hostfile filename gmx mdrun -ntomp 5 -s topol.tpr -gpu_id 0011
20コアの1つのマシンで GROMACS の thread-MPI を使う場合、以下のようになります:
$ gmx mdrun -ntmpi 4 -ntomp 5 -s topol.tpr -gpu_id 0011
mpirun
の man ページや MPI アクセラレーションや並列化のオプションに関する GROMACS のセクション を参照。
シミュレーションの再開
チェックポイントファイルからシミュレーションを再開するには次を実行:
$ gmx mdrun -s topol.tpr -cpi state.cpt
上記の topol.tpr
は前のシミュレーションで使用した .tpr
、そして state.cpt
はそのシミュレーションのチェックポイントファイルに置き換えてください。
シミュレーションの延長
シミュレーションを延長するには、.tpr
ファイルに修正を加えて gmx mdrun で実行:
$ gmx convert-tpr -s topol.tpr -extend time -o tpxout.tpr $ gmx mdrun -s tpxout.tpr -cpi state.cpt
time はシミュレーションを延長する時間(ピコ秒)、topol.tpr
は元のシミュレーションの .tpr
ファイル、state.cpt
は元のシミュレーションの最後のチェックポイントに置き換えてください。-extend
を使うかわりに -until
で終了時間をピコ秒で指定することもできます。
解析
ツール
GROMACS には解析ツールが多数付属しています。利用可能なコマンドのリストは gmx help commands
と入力することで得ることができます。もしくは gromacs の man ページを開いてください。
重要な解析コマンドとして以下のようなものがあります:
gmx bar
— ベネット受容比法で自由エネルギーの摂動を計算。gmx energy
— エネルギーを xvg ファイルに書き出して平均値を表示。gmx rdf
— 動径分布関数を計算。gmx trjconv
— トラジェクトリファイルを変換・操作。gmx wham
— 傘サンプル法などの重み付きヒストグラム解析法を実行。
他のツールについては下を参照。
インデックスファイル
ほぼ全ての GROMACS の解析プログラムでは任意でインデックスファイルが使われます。gmx make_ndx プログラムがインデックスファイルの作成や変更をコントロールします。インデックスファイルにはトラジェクトリフレームにおける原子の位置を示すグループ名と整数値が記述されています。インデックスファイルが必要になるのは構造ファイルの残基による原子団が思わしくないときだけです。gmx make_ndx を実行することで様々なコマンドを使って原子団を選択・結合・分割することができます。make_ndx プロンプトで h
と入力することで利用可能なコマンドの詳しい説明を閲覧することが可能です。
開発
GROMACS はバージョン管理に git を使っているので、git の使い方 (特に共同作業の方法) を習熟してください。GROMACS に貢献するには Gerrit アカウントのサインアップ を済ませて ssh 鍵を追加する必要があります。それから ssh://user@gerrit.gromacs.org/gromacs.git
を複製してください (user はあなたのユーザー名に置き換えてください)。リポジトリを複製したら、コミットフックをインストール:
$ scp -p user@gerrit.gromacs.org:hooks/commit-msg .git/hooks/
コミットを作成するときは、コミットメッセージに関する GROMACS のガイドライン に従ってください。また、変更を加えるときは コーディング規約 に従ってください。
変更を共有する準備ができたら、HEAD が最新であることを確認してください。それから HEAD:refs/for/mybranch
のようにブランチをセットして push してください (mybranch は実際のブランチ名に置き換えてください)。一般に3つのブランチが使われます:
- master はコードに大きな変更を必要とする重要な変更の長期開発に使われます。
- release-x-y はコードの変更があまりない機能に使われます。x と y は次のリリースのメジャー・マイナーバージョン番号になります。
- release-x-y-patches は先のリリースのバグフィックスやドキュメントの変更に使われます。
Gerrit のサイトには他にもブランチが確認できます。
ドラフトコミットを push したい場合、ブランチを HEAD:refs/drafts/mybranch
と設定して push してください。この場合、誰かにコードをレビューしてもらう必要があります。
詳しくは Gerrit に関する GROMACS のページ を参照。
ヒントとテクニック
立方体ではないボックスを作成して溶媒で満たす
非立方体のボックスを作成して溶媒で満たすには、まず以下を実行:
$ gmx editconf -f protein.pdb -bt boxtype -d dist -o box.gro
上のコマンドは dist
nm の protein.pdb
の分子が入った boxtype
のボックスを作成します。ボックスは box.gro
として保存されます。boxtype
には triclinic
, cubic
, dodecahedron
, octahedron
が指定できます。
それから溶媒で一杯にします:
$ gmx solvate -cs tip4p -cp box.gro -o conf.gro -p topol.top
複数の溶質を使う
複数の溶質をバラバラに入れたい場合、まず以下を実行:
$ gmx insert-molecules -box X Y Z -ci solute.pdb -nmol N -o box.gro
X, Y, Z はボックスの大きさ (ナノメートル)、N は挿入する数に置き換えてください。トポロジーファイルを更新して分子の挿入数を変える必要があります。
そして溶媒を充填:
$ gmx solvate -cs tip4p -cp box.gro -o conf.gro -p topol.top
水以外の溶媒を使う
gmx pdb2gmx や gmx solvate などの標準ツールで水以外の溶媒を使いたいときは以下を実行:
- 溶媒分子の構造ファイルとトポロジーを作成。
- 数百の溶媒分子が含まれたボックスを作成 (216 が標準) して、標準状態で平衡化を少しの間実行。
- シミュレーションから出力された構造ファイル
.gro
をsolvent.gro
にコピー (solvent は分子の名前に置き換えてください)。コピーしたファイルをトップレベルの力場ディレクトリに配置 (力場のディレクトリの一番上)。 - トポロジーファイルを開いて
[moleculetype]
セクションを残して全て削除して、ファイル内の分子にSOL
と名前を付ける。 - トポロジーファイルの名前を
solvent.itp
と変更して使用する力場ディレクトリに移動。 watermodels.dat
を更新して (力場ディレクトリにある) 溶媒を追加した力場を指定して、溶媒を追加。filename shortdescription longdescription
という行を追加するだけです (filename にファイルの拡張子は必要ありません)。
上記してから gmx pdb2gmx を実行すると適当な力場で溶媒モデルが使えるようになります。さらに、gmx solvate の実行時に -cs solvent
が使えます。
参照
構造とトポロジーのデータベース
- Automated Topology Builder & Repository — 分子のブロックや相互作用パラメータファイルを作成するためのリポジトリ。有名な分子のブロックを作成するのに役立つ自動ビルダー。
- RCSB Protein Data Bank — 蛋白質や核酸、複合体に関する情報。蛋白質合成から健康と疾患まで、学生や研究者が生物医学や農業を理解するのに役立ちます。
- SwissParam — CHARMM の全ての原子の力場と互換性がある小さな有機分子のトポロジーとパラメータを用意しています。CHARMM と GROMACS で使用できます。
- TraPPE Parameter Database — 分子名で検索したり、自分で作成して、TraPPE 力場のパラメータが入手できます。パラメータを適用なユニットに変換する必要があります。
- Virtual Chemistry — 数千もの分子の実験・計算結果の比較。CGenFF, GAFF, OPLS/AA に入力した検証済みのトポロジーファイルも記載されています。
開発
- GROMACS Redmine — バグや問題、機能を報告・追跡するプロジェクト管理ページ。
- GROMACS Gerrit — プロジェクトのコードレビューシステム。
ドキュメント
- GROMACS Mailing List — 助けを求めているユーザーのためのメーリングリスト。投稿する前にマニュアルを読んだりアーカイブを検索しましょう。
- GROMACS Manual — 公式 GROMACS マニュアル。
- GROMACS Online Reference
外部ライブラリ & プログラム
解析ライブラリ
- libgmxcpp — Gromacs ファイル (.xtc や .ndx) を読み込むのに使用される C++ ツールキット。シミュレーション結果を解析するのに使います。
- https://github.com/wesbarnett/libgmxcpp || libgmxcppAUR[リンク切れ: パッケージが存在しません]
- libgmxfort — シミュレーションの結果を解析するときに使うための Gromacs ファイル (.xtc と .ndx) を読み込む近代的な Fortran ツールキット。
- https://github.com/wesbarnett/libgmxcpp || libgmxfortAUR[リンク切れ: パッケージが存在しません]
- mdanalysis — 分子の力学軌道を多数の形式で解析することができるオブジェクト指向の python ツールキット。
- http://www.mdanalysis.org || python2-mdanalysisAUR[リンク切れ: パッケージが存在しません]
- MDTraj — 分子の動的軌道を解析するための新しいオープンなライブラリ。
- xdrfile — GROMACS の trr や xtc ファイルを読み込んで別の形式に変換することができるツール。
- http://gromacs.org || xdrfileAUR
自由エネルギー計算
- alchemical_analysis — 錬金術の自由エネルギー計算を解析する推奨法を実装するオープンなツール。
- https://github.com/MobleyLab/alchemical-analysis || python2-alchemical-analysisAUR[リンク切れ: パッケージが存在しません]
構造の作成
- Avogadro — 計算化学、分子モデリング、バイオインフォマティクス、材料科学および関連分野で使用するために設計されたクロスプラットフォームの先進的な分子エディタ。
- http://avogadro.cc || avogadroAUR
トポロジーの生成
- acpype — Antechamber を使って化合物のトポロジーを生成したり CCPN ツールや ARIA など他の python アプリケーションと連動する Python ベースのツール。生成できるトポロジーファイル: CNS/XPLOR, GROMACS, CHARMM, AMBER。
- https://code.google.com/p/acpype || パッケージが存在しないか AUR で検索
視覚化
- vmd — 分子の可視化プログラム。3-D グラフィックやビルトインスクリプトを用いて、巨大な生体分子系を表示・解析したり動かすことができる。
ラッパー
- GromacsWrapper — Gromacs ツールのシステムコールをクラスにラッピングする python パッケージ。
- http://becksteinlab.github.io/GromacsWrapper || パッケージが存在しないか AUR で検索
チュートリアル
- GROMACS チュートリアル
- Justin Lemkul's Tutorials — 様々なシミュレーションの方法 (アンブレラサンプリング法・自由エネルギー計算など)。
- James Barnett's Tutorials — 有機溶質を使ったシミュレーションのチュートリアル。ユーザーが作成した分子で gmx pdb2gmx を使用する方法。