3.5.1. .¶
3.5.1.1. 対話型プログラムの実行¶
jupyter-notebook ではCUI(Command User Interface)での対話的なプログラムの実行には向いていない。 ATSAS のいくつかのプログラム、例えば先程あげた crysol などにはコマンドの引数として 与えることができないパラメータなどが対話モードで設定できる。
オプション | オプションの説明 | default値 |
-lm |
球面調和関数の最大次数。散乱体の分解能を定義する。 | 15 |
-fb |
散乱体の表面を記述するフィボナッチ数を定義するもの。 | 17 |
-sm |
散乱ベクトルの最大値 | 0.5 |
-dns |
溶媒の電子密度 | 0.334(e/\(\mathrm{A}^3\) |
-dro |
水和層のコントラスト | 0.03(e/\(\mathrm{A}^3\)) |
-cst |
buffer差分補正。定数差分による補正を行う。 | -0.5から+0.5 |
以下に主要なパラメータの説明を行う。
Dro : | :水和層のコントラスト。前述の \(\Delta\rho_b\) に相当する。デフォルト値は0.03 \((e/A^3)\) |
---|---|
Ra : | :原子団の半径。この場合は水和層の厚みに相当する。デフォルト値は \(1.62(A)\) |
ExVol : | :排除体積。crysolによって計算されたタンパク質の体積に相当する。デフォルト値はBSAの場合は82810 \((A^3)\) |
dns : | :溶媒の電子密度 \(\rho_{solvent}\) 。デフォルト値は0.334 \((e/A^3)\) |
実験データと結晶構造との理論値を比較する際、一般にデフォルトの crysol のパラメータでは、溶媒等が水でないので
直接比較できない。そこで、実験データを与えると、理論曲線のパラメータ(特に Dro
, Ra
, ExVol
)を微調してできるだけ実際の実験データをうまく説明するような理論曲線を計算し、それでもうまくフィットできないときには実際の構造が違うと判断する。
高圧セルなどの特殊なセルを使用する時は、これらの計算パラメータを細かく制御する必要がでてくる。
3.5.1.1.1. crysol の対話モードでの実行例¶
ここでは、 水和水の密度コントラスト Dro
だけ対話モードで微調設定することを考える。
実際に crysol を実行させた例を見てみよう。
例えば、リゾチウムというタンパク質の溶液散乱の実験値 lyzexp.dat
と結晶構造のA鎖 6lyz.pdb
との比較を行うとする。
- crysolの実行すると以下の様に表示される。
*** ------------------------------------------------ *** *** C R Y S O L Wintel/UNIX/Linux version 2.8.3 *** *** Please reference: D.Svergun, C.Barberato *** *** & M.H.J.Koch (1995) J. Appl.Cryst., 28, 768-773 *** *** Version (LMAX=50) for small and wide angles *** *** Last revised --- 12/08/15 14:00 *** *** Copyright (c) ATSAS Team *** *** EMBL, Hamburg Outstation, 1995 - 2015 *** *** ------------------------------------------------ ***
各オプションとpdbファイルの入力
各オプションとPDBファイルを入力する。
------------------------------------------------ Program options : 0 - evaluate scattering amplitudes and envelope 1 - evaluate only envelope and Flms 2 - read CRYSOL information from a .sav file Type crysol -help for batch mode use ------------------------------------------------ Enter your option ...................... < 0 >: Brookhaven file name ................... < .pdb >: 6lyz ------------------------------------------------ ------------------------------------------------ Following file names will be used: 6lyz00.log -- CRYSOL log-file (ASCII) 6lyz00.sav -- save CRYSOL information (binary) 6lyz00.flm -- multipole coefficients (ASCII) 6lyz00.int -- scattering intensities (ASCII) 6lyz00.fit -- fit to experimental data (ASCII) 6lyz00.alm -- net partial amplitudes (binary) ------------------------------------------------ ------------------------------------------------ Maximum order of harmonics ........... < 15 >: Order of Fibonacci grid ............... < 17 >: ---------- Reciprocal space grid ------------- ( in s = 4*pi*sin(theta)/lambda [1/angstrom] ) Maximum s value ........................ < .5000 >: Number of points ....................... < 51 >: 201 Account for explicit hydrogens? [ Y / N ] < No >: Read atoms and evaluate geometrical center ... Number of atoms read .................................. : 1001 Number of discarded waters ............................ : 101 Percent processed 10 20 30 40 50 60 70 80 90 100 Processing atoms :>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Center of the excess electron density: 0.452 -0.004 0.276 Processing envelope:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Processing envelope:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Coefficients saved to file 6lyz00.flm CRYSOL data saved to file 6lyz00.sav
計算された各値が表示される。
--- Structural parameters (sizes in angstroms) --- Electron rg : 13.99 Envelope Rg : 14.08 Shape Rg : 13.97 Envelope volume : 0.1806E+05 Shell volume : 0.1129E+05 Envelope surface : 3150. Shell Rg : 18.98 Envelope radius : 25.49 Shell width : 3.000 Envelope diameter : 49.04 Molecular weight: 0.1432E+05 Dry volume : 0.1736E+05 Displaced volume: 0.1741E+05 Average atomic rad.: 1.607 Number of residuals : 129
1-3 は常に共通である。
実験データをフィットさせる選択を行う。また、実験データファイルを入力する。
Fit the experimental curve [ Y / N ] .. < Yes >: Enter data file ........................ < .dat >: lyzexp.dat
buffer差分補正を実行するかの選択。今回は実行しないので
N
とする。Subtract constant ...................... < no >: Maximum angle in the data file ........................ : 0.4984 Number of experimental points ......................... : 197 Angular units in the input file: 4*pi*sin(theta)/lambda [1/angstrom] (1) 4*pi*sin(theta)/lambda [1/nm] (2) 2 * sin(theta)/lambda [1/angstrom] (3) 2 * sin(theta)/lambda [1/nm] (4) ..... < 1 >: Angular units multiplied by ........................... : 1.000
溶媒の電子密度値の入力
Electron density of the solvent, e/A**3 < 0.3340 >: Number of experimental points used .................... : 197
計算パラメータの仮最適化された値が出力される。
ここでは、
Dro
,Ra
,ExVol
の3つのパラメータが同時に最適化されている。------ Fitting the experimental data ... --- 6lyz.pdb Dro:0.010 Ra:1.460 Vol: 17762. Chi^2: 0.202 Plot the fit [ Y / N ] ................. < Yes >: N
更なる設定を行うかの確認。今回は行うので
Y
とする。Another set of parameters [ Y / N ] .... < No >: Y Minimize again with new limits [ Y / N ] < No >: Y
計算パラメータの入力
Average atomic radius is ............................... : 1.607 Minimum radius of atomic group ......... < 1.400 >: 1.607 Maximum radius of atomic group ......... < 1.800 >: 1.607 Smax in the fitting range .............. < 0.4984 >: Solvent density is ..................................... : 1.000E-02 Minimum contrast in the shell .......... < 0.000 >: Maximum contrast in the shell .......... < 7.5000E-002 >: Van der Waals volume is ................................ : 1.7762E+04 Minimum excluded volume ................ < 1.6108E+004 >: 1.7762E4 Maximum excluded volume ................ < 1.8720E+004 >: 1.7762E4 Subtract constant ...................... < no >: Number of experimental points used .................... : 197
探索の上限下限に同一の計算パラメータを指定すれば、計算パラメータの最適化はされず、各計算パラメータは指定値で計算され、 実験データに対してスケーリングのみした散乱曲線が得られる。
ここでは、
Average atomic radius is
として表示された1.607
の値を読み込み、Minimum
,Maximum
にその値を代入する。Van der Waaks volume is
として表示された1.7762E+04
の値を読み込み、Minimum
,Maximum
にその値を代入する。
の2点の処理を行えば、
Dro
だけ最適化されて実験データにフィットするような動作となる。デフォルトの
Ra
,ExVol
の計算パラメータ値でDro
だけ最適化されて理論散乱曲線を生成し、実験データとのスケールだけを行う。スケーリング結果の出力
------ Fitting the experimental data ... --- 6lyz.pdb Dro:0.013 Ra:1.607 Vol: 17762. Chi^2: 0.203 Plot the fit [ Y / N ] ................. < Yes >: N Another set of parameters [ Y / N ] .... < No >: Rg from the slope of net intensity ..................... : 14.89 Average electron density ............................... : 0.4298 Data fit saved to file 6lyz00.fit Intensities saved to file 6lyz00.int I_abs(s)[cm^-1]/c[mg/ml] saved to file 6lyz00.abs Net amplitudes saved to file 6lyz00.alm
これらの入力しないといけないステップをまとめると
2-1. | Enter your option ...................... < 0 >: | |
2-2. | Brookhaven file name ................... < .pdb >: | 6lyz |
2-3. | Maximum order of harmonics ........... < 15 >: | |
2-4. | Order of Fibonacci grid ............... < 17 >: | |
2-5. | Maximum s value ........................ < .5000 >: | |
2-6. | Number of points ....................... < 51 >: | 201 |
2-7. | Account for explicit hydrogens? [ Y / N ] < No >: | |
4-1. | Fit the experimental curve [ Y / N ] .. < Yes >: | |
4-2. | Enter data file ........................ < .dat >: | lyzexp.dat |
5-1. | Subtract constant ...................... < no >: | N |
5-2. | 2 * sin(theta)/lambda [1/nm] (4) ..... < 1 >: | |
6 | Electron density of the solvent e/A**3 < .3340 >: | |
7 | Plot the fit [ Y / N ] ................. < Yes >: | N |
8-1. | Another set of parameters [ Y / N ] .... < No >: | Y |
8-2. | Minimize again with new limits [ Y / N ] < No >: | Y |
9-1. | Minimum radius of atomic group ......... < 1.400 >: | 1.607 |
9-2. | Maximum radius of atomic group ......... < 1.800 >: | 1.607 |
9-3. | Smax in the fitting range .............. < 0.4984 >: | |
9-4. | Minimum contrast in the shell .......... < .000 >: | |
9-5. | Maximum contrast in the shell .......... < 7.5000E-002 >: | |
9-6. | Minimum excluded volume ................ < 1.6108E+004 >: | 17800 |
9-7. | Maximum excluded volume ................ < 1.8720E+004 >: | 17800 |
9-8. | Subtract constant ...................... < no >: | |
10-1. | Plot the fit [ Y / N ] ................. < Yes >: | N |
10-2. | Another set of parameters [ Y / N ] .... < No >: |
例えば、 ExVol
の値を9-5.の後に表示された値、 1.7762E+04
を代入しようとすると、
プログラムの出力を読み取って、それに基づいて別の入力を行う
ことが要求される。これは単純に入力テキストを入れたファイルを準備して実行するというわけにはいかない。
このようなプログラムの自動応答のpythonモジュールに pexpect
がある。
3.5.1.1.2. pexpect
の使い方¶
crysol の起動の仕方
p = pexpect.spawn("crysol")
crysol への入力の仕方
ATSAS は入力を促す際に必ず
>:
で質問文が終わるので、
p.expect(r">:")
でプログラムの出力で
>:
の部分を待つ。それが来たらp.send($str)
で文字列
$str
をプログラムに入力すれば良い。crysol からの出力の受け方
例えば数字の出力の次の行の先頭が
Minimum
で始まるとしたらp.expect(r"Minimum")
ret=str(p.before)
Minimum
の前の文字列p.before
を文字列型にしてret
に入れる。ATSAS のプログラムではプログラムの表示は
:
で始まるのでそこで分ける。m=ret.split(':')
m
の中には ''\'' などが入っているのでそこで区切る。Ra=float(m[-1].split("\\")[0])
この実行例中の auto_crysol()
を参考にして自分の使いたい ATSAS のプログラム用に書き換えると良いであろう。