CNSでMolecular Dynamics?
分子動力学計算または分子力学計算についてはまったく知らないのですが 、CNSでそれっぽいことができそうなので試してみました。
ここで試したこととは、決定した構造を元にリガンド結合モデルを作成し、リジッドボディ、アニーリング、ミニマイズを行う、というようなことです。モデルを置いただけよりは少しは確からしい・・・のかな?
モデル分子のエネルギー最小化をしたいけど、モデルなので実験データを使ってリファインするとぐちゃぐちゃになる、というような時に使うと便利かもしれません。
使うインプットファイル
特に難しいことはありません。通常の精密化と異なるのはインプットファイルだけです。以下のものを使います。
- generate.inp -- MTFの作成
- model_rigid.inp -- Rigid body精密化
- model_anneal.inp -- Annealing/Molecular dynamics
- model_minimize.inp -- エネルギー最小化
これらを使えば、リジッドボディ、アニーリング、ミニマイズをそれぞれ行うことができます。構造因子(F)は使わないのでCVファイルは不要です。
私が試したとき、Rigid bodyではモデル分子が活性部位から逃げてしまうので 、model_annealのみを行ってみました。
簡単な解説
それぞれについてちょっとだけ解説を。
- 修正のポイント
- 全てのインプットファイルには構造ファイル(MTFとPDB)およびパラメータファイルの指定、格子情報が必要です。具体的には、
- molecular structureセクション
- structure file
- structure_infile: 全てのインプットファイルでgenerate.mtfを使います
- parameter files
- 必要に応じて追加します。水分子(water_rep.param)、イオン(ion.param)、炭水化物、糖類(carbohydrate.param)などがあります。
- coordinate file
- coordinate_infile: 前段階のPDBファイルを指定します。
- structure file
generate.inp
使ってみようで解説してありますが、今回はrefine.inpという便利なファイルは使わないのでgenerateが必要になります。これでモデルPDBファイルからgenerate.pdbおよびgenerate.mtfを作成します。
model_rigid.inp
Rigid body minimization with no experimental energy terms
です。実験情報を利用せずにリジッドボディリファインメント(rigid body refinement)を行います。通常は最初に行います。モデル分子と他の原子との距離を適正にしたい場合に使うとよいでしょう(PyMOLでモデル化合物とタンパクの表面が接触しているのを修正したいときなど)。
- 修正のポイント
- リジッドボディグループを指定せずに行うと全てが同じように動くため全く意味がありません。適切にグループ分けを行います。
- atom selectionセクション
- r_group_1などにリジッドボディのグループを指定していきます。以下、例です(コメント部分は削除してあります)。
{========================== atom selection ===========================} {===>} atom_select=(known); {===>} atom_fixed=(none); {===>} atom_harm=(none); {===>} k_harmonic=10; {===>} r_group_1=(segid A:C or segid W); {===>} r_group_2=(segid F);
タンパク分子をfixすることもできますが、それをしたときモデル分子が飛んでいきました(^^;。
- r_group_1などにリジッドボディのグループを指定していきます。以下、例です(コメント部分は削除してあります)。
model_anneal.inp
Simulated annealing/molecular dynamics
です。実験情報を利用せずにアニーリングを行います。計算時間は少し長いです(といっても数分ですが)。
ディフォルトでは298Kのconstant annealing, Cartesian algorithmでMDを行うようです(詳しくはよく知りませんが )。
- 修正のポイント
- ここでは例を挙げて修正箇所を解説します。例ではA分子(Chain A,SEGID A)、B分子(Chain B,SEGID B)、C化合物(Chain C,SEGID C)、D化合物(Chain D,SEGID D)および水分子(Chain W,SEGID W)とします。C化合物は実験結果から求めた座標であり、D化合物を精密化するとします。
- モデル化合物のみを精密化する
D化合物以外をfixして計算してみます。SEGID D以外をatom_fixedで選択してあります。{========================== atom selection ===========================} {===>} atom_select=(known); <-- すべての原子が精密化対象 {===>} atom_fixed=(segid A:C or segid W); <-- SEGID A,B,C,Wは固定 {===>} atom_harm=(none); {===>} k_harmonic=10; {===>} atom_rigid=(none);
- モデル化合物とその周囲8Åを緩やかに精密化する
harmonic restrainをかけてみます。詳しい解説はフォローしきれてませんが、多分緩やかな束縛を掛けつつ環境に合わせるという様なものだと思います(詳しい人教えて下さい )。{========================== atom selection ===========================} {===>} atom_select=(known); {===>} atom_fixed=(not(segid D around 8.0)); <-- SEGID Dからの距離が8Aより遠い部分を固定 {===>} atom_harm=(segid D around 8.0); <-- SEGID Dと距離が8A以内の原子をharmonic restrainで精密化 {===>} k_harmonic=10; <-- harmonic restraint constant (基準は不明。ディフォルト10) {===>} atom_rigid=(none);
これらの結果で比べた場合、1はモデル化合物とポケットの位置関係に関わらず同じように動き、2はポケットにフィットするような動きになりました。なお、atom_fixedを周辺8Åにしてharmonicを使わない場合も1に近い結果になりました。
model_minimize.inp
Conjugate gradient minimization with no experimental energy terms
です。実験情報を利用せずにミニマイズを行います。
- 修正のポイント
- これもannealと同様にモデル化合物以外をfixしています。
{========================== atom selection ===========================} {===>} atom_select=(known); {===>} atom_fixed=(segid A:C or segid W); {===>} atom_harm=(none); {===>} k_harmonic=10;
それぞれの計算はそれほど時間がかかるわけではないのでいろいろ試してみて下さい。計算後の結果にはChain IDが含まれないので注意!