バイアス・ポテンシャルの利用
FreeFlexでは、さまざまなバイアス・ポテンシャルを設定することが容易である。FreeFlexのコード開発に沿って、4通りのバイアス・ポテンシャルの設定方法(bias, biaskmk2, biaskmk3, biasmk4)が実装されている。現行版はbiasmk4であり、今後主にこれを用いることが推奨される。
Bias
Biasは、FreeFlex中で実装された最もオリジナルなバイアス設定方式である。今後はサポートされない予定であるが、2-3 レプリカ交換によるwater finger座標のサンプリングで使用されている。
Biasmk2
Biasmk2は、FreeFlex中でバイアス・ポテンシャルを設定する方式の一つである。任意の原子または原子団の重心を複数個指定して、その位置や速度から計算される任意のバイアス・ポテンシャルを与えることができる。
ユーザーが指定・カスタマイズできる点は以下のものである。
- A. 任意の原子団を指定して、その重心に対してポテンシャルをかける。原子団が1つの原子ならば、その原子そのものにバイアスがかかる。原子団は任意の個数指定でき、それらはファイルbiasmk2_param_file で指定する。
- B. バイアス・ポテンシャルの関数形がいくつか用意されていて(Lorentzian, Parabolicなど)、そのパラメータをbiasmk2_param_file中で指定して使用でき
る。MD中で任意の種類のバイアス・ポテンシャルを同時に異なる原子団にかけることができる。
- C. 新たなバイアス・ポテンシャルの関数は、ソースファイルbias_core.f90 を編集して組み込むことができる。
Biasmk2 provides output function for special purposes like free energy calculation (e.g. &FEP can use the output of biasmk2 to calculate bias correction term). The output is a text file containing the instant bias potential value at every designated step interval.
実行手順
biasmk2によるバイアス・ポテンシャルを加えたMD計算の実行手順
- (もしバイアス関数が用意されていなければ)ソースファイル “bias_core.f90” を編集して、新たなバイアスを追加する(下のsection 4 参照)。
- biasmk2_param_file ファイルを設定する。(下のSection 2 参照)。
- FreeFlex本体の入力ファイルに、ネームリスト&biasmk2 を設定する(下のsection 3参照)
- FreeFlexでバイアス・ポテンシャル付きのMD 計算を実行する。
Biasmk2 パラメータファイル (biasmk2_param_file)
biasmk2 パラメータファイル(biasmk2_param_file) は、以下の3つの部分からなる。
- //COM ----- 重心 COM(s) を構成する原子団の情報
- //BIAS ----- バイアス・ポテンシャルの情報
- //PARAMETER ----- バイアス関数のパラメータの情報
//BIASで指定できるバイアス関数は、以下の3種類がサポートされている(2015/7/19現在)。
- LORENTZIAN
Lorentz関数
2つのパラメータ を引数にとる。エネルギーの単位は、距離の単位は.
- PARABOLIC
放物線関数
1つのパラメータ A を引数にとる。単位は、
- WATFIN
ファイルの例
ネームリスト&biasmk2 の変数
| 項目 | 変数の種類 | Default | Description |
|---|---|---|---|
| calculate_biasmk2 | LOGICAL | .FALSE. | biasmk2 を使用するかどうか |
| output_biasmk2_interval | INTEGER | 0 | バイアスの出力間隔 (*) |
| biasmk2_param_file | CHARACTER | "" | biasmk2 パラメータファイル名 |
| biasmk2_output_file | CHARACTER | "" | バイアスの出力ファイル(*) |
| biasmk2_extra_ID | INTEGER | 0 | ID of target extra bias to be output (for developers).
Default value “0” means the extra output is OFF. |
| biasmk2_output_extra | CHARACTER | "output.bias_extra" | Name of extra biasmk2 output file (for developers). |
(*) output_biasmk2_interval = 0 (default) のとき、バイアス・ポテンシャルは出力しない。この場合には、biasmk2_output_file も指定する必要がない。
新たなバイアス関数の設定 (“bias_core.f90”)
(この部分はFORTRANの知識が必要)
ユーザーがカスタマイズする部分はbiasmk2の本体と分離して、ソースファイル“bias_core.f90”に局在している。このファイルを編集して、新たなバイアス関数を追加する。ソースファイル“bias_core.f90”を編集したときには、FreeFlexの再コンパイルが必要である。
ソースファイル“bias_core.f90” の主体は、サブルーチンbias_coreで、biaskmk2モジュールの一部をなす。bias_coreは以下のような構成をもつ。
The current “bias_core.f90” includes 3 types of bias potentials: “LORENTZIAN”, “PARABOLIC” and “WATFIN”. For details on how to handle mode==”read” and mode==”calculate” parts, please refer to the actual source code. The last type “WATFIN” is an example of advanced user-defined bias using additional subroutines.
biasmk3
ユーザ定義の一般化座標を用いる形。
レプリカ交換アンブレラサンプリングのときのバイアス関数のスイッチをサポートする。
biasmk4 【現行版】
ユーザー定義の一般化座標に対して、任意のバイアス・ポテンシャルをかける。現時点で最も汎用性が高い。
バイアス・ポテンシャルは、FreeFlex本体のネームリスト &biasdata で指定し、バイアスの関数形、そのパラメータ、(並列実行の場合)ノード番号を指定する。
- バイアス・ポテンシャルの関数形としては、PARABOLICなどよく使われる関数が用意されていて、キーワードで指定できる。自分で新しい関数を定義してソースファイルを拡張することが容易に可能である。
- レプリカ交換アンブレラ・サンプリングなどで並列実行する際には、それぞれのノードごとに別のバイアスを設定できる。
- バイアス・ポテンシャルのネームリスト &biasdata を複数置くすることができる。これは、WHAM法で取り扱うバイアスや分子内の拘束条件のためのバイアスなど、目的の異なるバイアス・ポテンシャルを同時にかける場合に対応している。
- 同じパラメータのバイアス・ポテンシャルを複数の一般化座標に同時に適用する場合、&biasdataの代わりにネームリスト &biasdata_multi を用いるとバイアスを簡潔に設定できる。
&biasmk4のネームリスト
| 項目 | 変数の種類 | Default | Description |
|---|---|---|---|
| calculate_biasmk4 | LOGICAL | .FALSE. | biasmk4 を使用するかどうか |
| nmax | INTEGER | 10 | 読み込むネームリスト&biasdataの最大個数 (*) |
(*) nmaxより少ない数の&biasdataが置かれたときは、その数をすべて読み込む。nmax個以上置かれたときには、ファイルの上からnmax個を読み込む。
バイアス・ポテンシャルのTYPE一覧
現時点でサポートされているバイアス・ポテンシャルのTYPEは以下のものである。
新しいTYPEを追加する方法は、以下の@@を参照すること。
| TYPE | 入力座標の引数の数 | 入力座標の種類 | パラメータ数(*) | Comment & details |
| PARABOLIC | 1 | ANY | 2 | |
| ANTIPARABOLIC | 1 | ANY | 2 | |
| PARABOLIC_CONDITIONAL | 1 | ANY | 2 | Same as PARABOLIC, except that only when the sign of is positive will the bias be applied. |
| HARMONIC | 1 | ANY | 2 | |
| WATFIN_N | 1 | WATFING | 3 | c1 = watf_threshold
c2 = n_fix; c3 = watf_para
|
| ACTIVE_N | 1 | WATFING_ACTIVE_SIMPLE | 4 | c1 = active_w_length;
c2 = n_active; c3 = watf_para; c4 = threshold
|
| COS_SERIES1 | 1 | ANY | 2 | |
| COS_SERIES2 | 1 | ANY | 4 | |
| COS_SERIES3 | 1 | ANY | 6 | |
| GAUSS_1D | 1 | ANY | 3 | |
| GAUSS_2D | 2 | ANY | 5 |
(*) パラメータはc_1, c_2, ... とその個数与える。