Ermod の機能について、と混合溶媒系の扱いについて

215 views
Skip to first unread message

uran ry

unread,
Dec 21, 2016, 7:26:53 PM12/21/16
to ermod-users
開発者の皆様

お世話になります。しばらく使っていてERmod のプログラムについてと、手法の扱いについていくつか解決できない疑問が
できましたので、質問させていただきます。複数の質問がありますが、回答しやすいものからでもお答えいただけると助かります


1. まず、現在クラスターコンピュータでERmod を利用としていますと、一回のジョブに使える時間に
1日などの制限があります。このような場合、とくにたくさんの溶質挿入を試したい場合にネックになるのですが、
計算を途中から再開する方法はありますでしょうか?もしくは小単位で行って結果をmerge する方法でもいいです。

2. ERmod の計算過程において、トラジェクトリの分割(現在gromacs使用です)がermod の計算が行われますが、
この分割はどのように行っているのでしょうか?例えば10分割を行うときの100 の長さがあるとして、1-10,11-20, ...,91-100
のように行うのか、 (1,11,21,...,91) (2,12,22,...,92), ..., (9,19,...,99) のように行うのでしょうか?後者の場合のほうだと
良いとおもうのですが。

3. 論文において、rho, rho_0 の密度分布のエネルギー表示の関数が度々出力されていますが、y軸の密度の値は
engref.01, solnref.01 の2列目の値にenergy mesh で割ったものという理解であっているでしょうか?

4. ある系において、3状態間の自由エネルギーを求めるとき状態2が片方では、solution 、他方ではrefs として使われているとします。
エネルギーの切り方が両方で同じとするとき、この時refs で計算した、engrefs

5. なるべく小さくする方法を探しているために知りたいのですが、メッシュ幅を小さくしていくと、
Warning: number of total bins in distribution function is too large
という警告がでますが、計算そのものは続行される場合と途中で止まる場合があります、この違いは物理メモリの量で決まっているのでしょうか?
それともERmod の内部でその閾値を決めるパラメータがあるのでしょうか?

6. 現在生体膜のような混合成分系で、溶質の結合自由エネルギーを求めるために、自由エネルギー表示法を利用しています。
新しい両親媒性分子(脂質)と水分子を膜の境界領域に入れるときの結合自由エネルギーの値を求めようとしたのですが、
水分子を入れる場合は、特に問題なかったのですが、
脂質を入れる場合なぜか最終的なslvfe で出力されるエネルギーの値が、次のように発散しますか、異常な値が見られます
 group    solvation free energy     error          difference
  total solvation free energy
   1                 NaN               NaN               NaN
   8                 NaN               NaN               NaN
   9    -103889134.66479     7589529.77485               NaN
  10                 NaN               NaN               NaN

挿入回数は10万、トラジェクトリのスナップショット数は5000 です。
上の問にもありますが、計算機の都合上この回数が限界となっています
挿入される際の構造はisolated な状況で溶媒に使っている場合の構造を5ns 計算して, 10000個持ってきています
この時のErmod のversion は0.3.4 でした


脂質の分子量は400程度で、タンパク質を膜に挿入される計算が行われている以上、
この程度のサイズができないということはないと思うのですが、どのような対処法が考えられますでしょうか?


もし回答に必要な情報が足りない場合などをお知らせください。
それでは、数多くてすみませんがよろしくお願いします

浦野




Nobuyuki MATUBAYASI

unread,
Dec 27, 2016, 3:43:37 AM12/27/16
to ermod-users

浦野様

松林です。下記の通り、回答します

1. まず、現在クラスターコンピュータでERmod を利用としていますと、一回のジョブに使える時間に
1日などの制限があります。このような場合、とくにたくさんの溶質挿入を試したい場合にネックになるのですが、計算を途中から再開する方法はありますでしょうか?もしくは小単位で行って結果をmergeする方法でもいいです。
途中からの再開は、現状はないです。MDのtrajectoryを小分割しておいて、それぞれについて、ermodをする形になります。
この場合、各trajectoryからの出力が、全て、engref.01, engref.02 ... などとなりますが、
MDのtrajectory順にするには、01, 02, ... の部分の数字を置き換えることになります
 
2. ERmod の計算過程において、トラジェクトリの分割(現在gromacs使用です)がermod の計算が行われますが、
この分割はどのように行っているのでしょうか?例えば10分割を行うときの100 の長さがあるとして、1-10,11-20, ...,91-100
のように行うのか、 (1,11,21,...,91) (2,12,22,...,92), ..., (9,19,...,99) のように行うのでしょうか?後者の場合のほうだと
良いとおもうのですが。
前者でやっています。block averageの観点からは、前者の方が良いかな、と思っています。
確かに、統計的には後者の方が良いですが、その機能は、現在ありません
 
3. 論文において、rho, rho_0 の密度分布のエネルギー表示の関数が度々出力されていますが、y軸の密度の値は
engref.01, solnref.01 の2列目の値にenergy mesh で割ったものという理解であっているでしょうか?
いいえ、密度ではなく、各binでの平均個数です。論文などで密度を見せていますが、
これは、engsln... engref...の3列目の値をbin幅で割ったものに対応します

4. ある系において、3状態間の自由エネルギーを求めるとき状態2が片方では、solution 、他方ではrefs として使われているとします。エネルギーの切り方が両方で同じとするとき、この時refs で計算した、engrefs
いえ、そうはならないです。3つのA, B Cがあるとしたとき、
A→Bの自由エネルギー計算でのエネルギー座標は、A→Bの変化に相当する溶質―溶媒相互作用であり、
B→Cの自由エネルギー計算でのエネルギー座標は、B→Cの変化に相当する溶質―溶媒相互作用であるため、
例えば、エネルギー座標の設定法が同じでも、その値の意味内容が違います
 
5. なるべく小さくする方法を探しているために知りたいのですが、メッシュ幅を小さくしていくと、
Warning: number of total bins in distribution function is too large
という警告がでますが、計算そのものは続行される場合と途中で止まる場合があります、この違いは物理メモリの量で決まっているのでしょうか?それともERmod の内部でその閾値を決めるパラメータがあるのでしょうか?
あまり大きな数字にしてメモリを食い過ぎるのを防ぐために、engproc.F90の中で、
too_large_ermax というパラメータ(= 15000)を定義して、bin数がこれを越えたらプログラムが停まることにしています。
parameters_erで、force_calculation = .true. とすれば、上記の場合でもwarningだけで停まらないようにできます。
または、engproc.F90で too_large_ermax の値を書き換えることも可能です。
ただし、計算機側で設定されているメモリを越えると、他のプログラムと同様に停まります。
 
6. 現在生体膜のような混合成分系で、溶質の結合自由エネルギーを求めるために、自由エネルギー表示法を利用しています。
新しい両親媒性分子(脂質)と水分子を膜の境界領域に入れるときの結合自由エネルギーの値を求めようとしたのですが、
水分子を入れる場合は、特に問題なかったのですが、
脂質を入れる場合なぜか最終的なslvfe で出力されるエネルギーの値が、次のように発散しますか、異常な値が見られます
 group    solvation free energy     error          difference  total solvation free energy
   1                 NaN               NaN               NaN
   8                 NaN               NaN               NaN
   9    -103889134.66479     7589529.77485               NaN
  10                 NaN               NaN               NaN
挿入される際の構造はisolated な状況で溶媒に使っている場合の構造を5ns 計算して, 10000個持ってきています
脂質の分子量は400程度で、タンパク質を膜に挿入される計算が行われている以上、
この程度のサイズができないということはないと思うのですが、どのような対処法が考えられますでしょうか?
はい、この程度であれば、計算がおかしくなることは無いように思います。 
refsで挿入する際の脂質の場所・配向が、soln系での脂質の場所・配向とかけ離れているのかな、とも思います。
insposition, upreg, lwregなどのパラメータは対応していますか?

松林

uran ry

unread,
Jan 5, 2017, 5:23:01 PM1/5/17
to ermod-users
松林様
ご回答ありがとうございます、
機能の部分はだいたいわかりました。 
いくつかの点にについて補足させていただきます。



> この場合、各trajectoryからの出力が、全て、engref.01, engref.02 ... などとなりますが、
> MDのtrajectory順にするには、01, 02, ... の部分の数字を置き換えることになります
これはつまり, たとえば、手動で2分割した場合、それぞれに適用して10こずつ生み出すとすると engref.01-engref.10 が2つできますが、
片方を11-20 に変えれば問題なく動くということでしょうか? 
この場合、slvfe の結果で10分割をして、それぞれを足していく場合の計算をして収束性を確認している部分は適当なところで たとえば、(01,02) (03,04) ... の
組み合わせでだされますか?それともすべてを独立に扱いますか?


6. 現在生体膜のような混合成分系で、溶質の結合自由エネルギーを求めるために、自由エネルギー表示法を利用しています。
新しい両親媒性分子(脂質)と水分子を膜の境界領域に入れるときの結合自由エネルギーの値を求めようとしたのですが、
水分子を入れる場合は、特に問題なかったのですが、
脂質を入れる場合なぜか最終的なslvfe で出力されるエネルギーの値が、次のように発散しますか、異常な値が見られます
 group    solvation free energy     error          difference  total solvation free energy
   1                 NaN               NaN               NaN
   8                 NaN               NaN               NaN
   9    -103889134.66479     7589529.77485               NaN
  10                 NaN               NaN               NaN
挿入される際の構造はisolated な状況で溶媒に使っている場合の構造を5ns 計算して, 10000個持ってきています
脂質の分子量は400程度で、タンパク質を膜に挿入される計算が行われている以上、
この程度のサイズができないということはないと思うのですが、どのような対処法が考えられますでしょうか?
> はい、この程度であれば、計算がおかしくなることは無いように思います。 
> refsで挿入する際の脂質の場所・配向が、soln系での脂質の場所・配向とかけ離れているのかな、とも思います。
> insposition, upreg, lwregなどのパラメータは対応していますか?

はい、挿入方法につきましては、
なるほど、場所と配向のずれですか。
構造を説明しますと、脂質。水、油の3種類からなっていまして、
大体、脂質によって水が覆われ、その外側に油がある構造、単層ベシクルのような構造になっています
境界付近を除けばこれらは大体綺麗に分離しています、 
この状況で、パラメータとしては、まず脂質水凝集体の重心座標(大体水の塊部分になります)を 原点に持ち込みます。形状は楕円にちかいです。
この凝集体の慣性半径*1.2 くらいの値をupreg にしています 
その状況で、trjaectory の数は4751 (MDinfo 1st line)
パラメータは
          skpcnf = 10,        maxins=100000,      hostspec = 3,         insorigin = 2,        insposition = 2,     lwreg = 0,       upreg = 2.3,
となります。 hostspec 3は水分子のことです。
たしかに、水分子の中心に 脂質分子がいくことはないので、lwreg=0 付近では、特にsoln にはないtail region と水の相互作用が強く見れますが
水分子そのものとはhead region でsoln でも相互作用していますので、そこまで大きな違いにはならないと思っていたのですが。
上の質問でもありましたが、現在の計算時間の制限で、十分なサンプルができていないのが原因とかでしょうか。
もし、他になにか必要な情報があればおねがいします
よろしくお願いします

浦野

2016年12月27日火曜日 3時43分37秒 UTC-5 Nobuyuki MATUBAYASI:

Nobuyuki MATUBAYASI

unread,
Jan 10, 2017, 7:14:18 AM1/10/17
to ermod-users
浦野さん

松林です


> この場合、各trajectoryからの出力が、全て、engref.01, engref.02 ... などとなりますが、
> MDのtrajectory順にするには、01, 02, ... の部分の数字を置き換えることになります
これはつまり, たとえば、手動で2分割した場合、それぞれに適用して10こずつ生み出すとすると engref.01-engref.10 が2つできますが、
片方を11-20 に変えれば問題なく動くということでしょうか? 
はい、その通りです。
 
この場合、slvfe の結果で10分割をして、それぞれを足していく場合の計算をして収束性を確認している部分は適当なところで たとえば、(01,02) (03,04) ... の
組み合わせでだされますか?それともすべてを独立に扱いますか?
上のように、01 ... 10,11 ... 20 とすれば、20個を独立に扱うことになります。
parameteres_fe にて numdiv = 10 とすると、slvfe計算の内部では、
あたかも、(01,02)を一緒にして 01、(03,04)を一緒にして 02、・・・ という風に扱います

 
6. 現在生体膜のような混合成分系で、溶質の結合自由エネルギーを求めるために、自由エネルギー表示法を利用しています。
> refsで挿入する際の脂質の場所・配向が、soln系での脂質の場所・配向とかけ離れているのかな、とも思います。
> insposition, upreg, lwregなどのパラメータは対応していますか?
なるほど、場所と配向のずれですか。
構造を説明しますと、脂質。水、油の3種類からなっていまして、
大体、脂質によって水が覆われ、その外側に油がある構造、単層ベシクルのような構造になっています
境界付近を除けばこれらは大体綺麗に分離しています、 
この状況で、パラメータとしては、まず脂質水凝集体の重心座標(大体水の塊部分になります)を 原点に持ち込みます。形状は楕円にちかいです。
この凝集体の慣性半径*1.2 くらいの値をupreg にしています 
その状況で、trjaectory の数は4751 (MDinfo 1st line)
パラメータは
          skpcnf = 10,        maxins=100000,      hostspec = 3,         insorigin = 2,        insposition = 2,     lwreg = 0,       upreg = 2.3,
となります。 hostspec 3は水分子のことです。
たしかに、水分子の中心に 脂質分子がいくことはないので、lwreg=0 付近では、特にsoln にはないtail region と水の相互作用が強く見れますが
水分子そのものとはhead region でsoln でも相互作用していますので、そこまで大きな違いにはならないと思っていたのですが。
上の質問でもありましたが、現在の計算時間の制限で、十分なサンプルができていないのが原因とかでしょうか。
現状のERmodでは、プログラムの変更無しでは、楕円形には対応していません。
おそらく、それほどの変更は不要と思いますが・・・
ただし、その前に、 脂質水凝集体ということを考えると、 upreg = 2.3 は小さ過ぎるように思います。
ERmodの単位系は、kcal/molとÅです。
なので、lwreg = 0,  upreg = 2.3 というのは、water poolの中心部ではないかな、と思います。
つまり、soln系では、溶質の脂質分子は、脂質集合体のところに居るが、
refsでは、溶質の脂質分子がwater poolの中心部に挿入されているように感じます

松林

uran ry

unread,
Jan 10, 2017, 12:32:19 PM1/10/17
to ermod-users
松林様

ご回答ありがとうございます

> 現状のERmodでは、プログラムの変更無しでは、楕円形には対応していません。
> おそらく、それほどの変更は不要と思いますが・・・
はい、これは精度が円より必要そうでしたら、自分で対応することにいたします。


> ただし、その前に、 脂質水凝集体ということを考えると、 upreg = 2.3 は小さ過ぎるように思います。
> ERmodの単位系は、kcal/molとÅです。
なるほど、オングストロームですか。 Gromacs では nm を使っていますし、
ermod のtools でもgromacs 部分は自動で修正されていますので、勘違いしていました。
確かにこれですと、水にしか挿入されないですね。エネルギーが脂質にたいしても、計算されていましたので、
気づきませんでした
ありがとうございます、試してみます

浦野








2017年1月10日火曜日 7時14分18秒 UTC-5 Nobuyuki MATUBAYASI:

uran ry

unread,
Jan 22, 2017, 8:40:55 PM1/22/17
to ermod-users
松林様

挿入範囲をnm から\AA に修正した後、
いろいろ試しましたがやはりエネルギーの出力値の異常が解決できませんので、質問させていただきます。
refs による挿入範囲は密度で見た時にsoln に存在する脂質の範囲の90% 以上をカバーしています
Refs にて Trajectory は951 、挿入回数は200,000 snapshot interval は20ps
Soln にて Trajectory は4751    snapshot interval は4ps

脂質10、水20この場合(+溶媒)に脂質を挿入する場合は計算されるのですが、
脂質10、水40にすると、異常値もしくはNaNがslfveで出力されます。
なお他にも水80、100の場合でも同様の結果でした。


20_40 のslvfe.log は添付していますが、


 group    solvation free energy     error          difference
  total solvation free energy
   1                 NaN               NaN               NaN
   6                 NaN               NaN               NaN
   7    -138200930.04102    26203653.93042               NaN
   8                 NaN               NaN               NaN
   9    -769997482.62867   140132830.92297               NaN
  10                 NaN               NaN               NaN

 contribution from  1-th solvent component
   1                 NaN               NaN               NaN
   7    -138200871.85856    26203655.74418               NaN
   9    -769997435.37838   140132834.88722               NaN
 
  contribution from  2-th solvent component
   1                 NaN               NaN               NaN
   7           -27.05771           5.54427               NaN
 9           -16.93366           4.63261               NaN
 
  contribution from  3-th solvent component
   1                 NaN               NaN               NaN
   7           -31.10055           3.31598               NaN
   9           -30.29244           4.72355               NaN


一応計算だけはされている7、9と他を比較しようとしたのですが、
soln の1-10 はそのまま対応するとして、refsのengrefs.01-05 はどのように対応するのでしょうか?

EcdInfo は各分子種ごとに設定しており、

各species の境界値とmesh は順番に次のようで
boundarys = (ecdmin,ecfmns, ecmns0,ecdcen,ecpls0,ecfpls,eccore,ecdmax)
meshs  = (  eclbin, ecfbin,ec0bin,ec0bin,ecfbin,eclbin)
species 1 脂質
[1] -2.0000e+02 -3.0025e+01 -2.5000e-02  0.0000e+00  2.5000e-02  3.0025e+01  9.0000e+01  1.0000e+40
[1] 0.060 0.025 0.001 0.001 0.025 0.060
species 2 水
[1] -1.5000e+01 -1.0008e+01 -8.0000e-03  0.0000e+00  8.0000e-03  1.0008e+01  1.0000e+01  1.0000e+40
[1] 2e-02 8e-03 1e-04 1e-04 8e-03 2e-02
species 3 溶媒
[1] -6.0000e+01 -3.0025e+01 -2.5000e-02  0.0000e+00  2.5000e-02  3.0025e+01  2.0000e+01  1.0000e+40
[1] 0.050 0.025 0.001 0.001 0.025 0.050

また、uvrange.tt は次のようであり
refs/
species     minimum        maximum
    0       -2.13710        0.02231
    1      -69.85783       0.12037E+13
    2       -9.30008       0.27272E+44
    3      -24.01782       0.17487E+21

soln
species     minimum        maximum
    0       -0.54064        0.01004
    1     -157.27936       80.40221
    2      -10.27870        4.59226
    3      -37.35426       18.64273

また、参考のために私の方でプロットした englsln.01-10, engref.01-05
をプロットしたものを添付します。
プロットした値は3列目の値をmesh 幅で割り算した密度です。

さらに、それぞれのプロットはmesh サイズごと( eclbin, ecfbin,ec0bin)に別の図に分けており、更に、refs ,soln で点の形を変えてあります。
強い正の値はrefs のみ観測されますので、、ref だけプロットしてあります。
ファイル名のspec_? の? がspecies の番号で、
1 脂質、 2 水 3 油溶媒 となります


以上のような状態です。なにか他にも確認することがあればお知らせください。
忙しいと思いますが、ご助言いただければ幸いです。

よろしくお願いします
浦野





2017年1月10日火曜日 12時32分19秒 UTC-5 uran ry:
slvfe.log
comp_traj_both_spec_1.pdf
comp_traj_both_spec_2.pdf
comp_traj_both_spec_3.pdf

Nobuyuki MATUBAYASI

unread,
Jan 28, 2017, 9:45:02 AM1/28/17
to ermod-users
浦野さん

松林です


一応計算だけはされている7、9と他を比較しようとしたのですが、
soln の1-10 はそのまま対応するとして、refsのengrefs.01-05 はどのように対応するのでしょうか?
「普通」にslvfeの計算をする場合は、engref.01-05とcorref.01-05は平均されます。
refs出力の01〜05を分けようとすると、
のような手続きが必要です 
 
また、uvrange.tt は次のようであり
refs/
species     minimum        maximum
    0       -2.13710        0.02231
    1      -69.85783       0.12037E+13
    2       -9.30008       0.27272E+44
    3      -24.01782       0.17487E+21

soln
species     minimum        maximum
    0       -0.54064        0.01004
    1     -157.27936       80.40221
    2      -10.27870        4.59226
    3      -37.35426       18.64273
これを見ると、低エネルギー側でsolnとrefsの分布が重なっていませんね。
特に、soln系でのエネルギーですが、溶質と溶媒1分子の相互作用値が -150 kcal/mol という風に
随分と(負に)大きいと思います。 
非常に大きな静電相互作用をする組み合わせ、ということになりますでしょうか?
 
また、参考のために私の方でプロットした englsln.01-10, engref.01-05
をプロットしたものを添付します。
プロットした値は3列目の値をmesh 幅で割り算した密度です。
分布ですが、εの値の変化に伴って桁が変化していきますので、
例えば、gnuplotであれば、set log y という感じで、
縦軸を log にしていただけますと見易くなります 

uran ry

unread,
Feb 2, 2017, 10:09:12 PM2/2/17
to ermod-users
松林様
返信ありがとうございます

教えていただいた、engref の平均化はできておりませんが、log_10 y で書いたものを添付します

また、
> これを見ると、低エネルギー側でsolnとrefsの分布が重なっていませんね。
> 特に、soln系でのエネルギーですが、溶質と溶媒1分子の相互作用値が -150 kcal/mol という風に
> 随分と(負に)大きいと思います。 
> 非常に大きな静電相互作用をする組み合わせ、ということになりますでしょうか?
はい、そのような部分があります。
脂質のhead 付近において、正負の電荷が存在しており、それらが、特定の配置(互いの方向+位置)によっては強い相互作用を行います。
soln ではそれが観測されますが、重心位置を合わせだけのrefs においては,観測されないようです。
そのsolvation region の重なりのなさが原因なのでしょうか?
すいませんが、上のNaN output が解決していませんので、
ご意見よろしくお願いします
浦野


2017年1月28日土曜日 9時45分02秒 UTC-5 Nobuyuki MATUBAYASI:
comp_traj_both_spec_3_logy.pdf
comp_traj_both_spec_2_logy.pdf
comp_traj_both_spec_1_logy.pdf

Nobuyuki MATUBAYASI

unread,
Feb 3, 2017, 2:42:37 AM2/3/17
to ermod-users
> 脂質のhead 付近において、正負の電荷が存在しており、それらが、
> 特定の配置(互いの方向+位置)によっては強い相互作用を行います。
どうもそういうことのようですね。
そこで、重心以外の拘束ですが、insertion.F90 の中に subroutine insscheme というのがあります。
ここは、普段は空なのですが、user-defined scheme を書く場所になっています。
方向とか特定の原子の位置とか、
(use engmainの中にchargeという変数を持ってくる必要がありますが)dipole momentにしたりできます

uran ry

unread,
Feb 3, 2017, 7:59:41 PM2/3/17
to ermod-users
なるほど、可能性の候補としては考えられましたが、
soln とrefs におけるsolvation の大きな違いが原因ということですか。
この系のように、かなりの配向依存性がある場合は、重心指定だけでは足りないということですね。
教えていただいようにどうやらソースレベルで挿入方法の拘束指定を追加するなどして、
何らかの配向制御を行って、referenceに対しての挿入を試してみることにします
ありがとうございます

浦野


2017年2月3日金曜日 2時42分37秒 UTC-5 Nobuyuki MATUBAYASI:
Reply all
Reply to author
Forward
0 new messages