{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## crysolの実行\n", "\n", "crysolのヘルプを表示させてみると、" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2019-12-23T01:33:42.608856Z", "start_time": "2019-12-23T01:33:42.479191Z" }, "scrolled": true }, "outputs": [], "source": [ "!crysol -h" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "\n", " Usage in the batch mode: \n", " crysol []...[] []\n", " [-param1 ]...[-paramN ] \n", "\n", " :\n", " 途中略\n", " :\n", " \n", " Examples: \n", " \n", " crysol 6lyz.pdb -lm 20 \n", " Calculate scattering intensity from the PDB file\n", " 6lyz.pdb with Lmax = 20 and without fitting \n", " \n", " crysol mod*.pdb exp.dat -un 2 \n", " Process PDB files with the names beginning with \n", " \"mod\" and fit experimental data exp.dat with \n", " scattering vector given in inverse nanometres. \n", " \n", " crysol *.sav lyzexp.dat \n", " Restore the scattering intensity from all \n", " sav files in the current directory and fit \n", " the experimental data in the file lyzexp.dat \n", "\n", "Report bugs to ." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ご覧のように、コマンド実行の結果がセルとして表示されているのがわかる。\n", "\n", "今、リゾチウムの結晶構造から `6lyz.pdb` を計算してみよう。\n", "`crysol` の引数はデータ点数を201とするために ``-ns 201`` としている。" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2019-12-23T01:33:43.526806Z", "start_time": "2019-12-23T01:33:42.616727Z" }, "scrolled": true }, "outputs": [], "source": [ "!crysol 6lyz.pdb -lm 20 -ns 201" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "*** ------------------------------------------------ *** \n", " *** C R Y S O L Wintel/UNIX/Linux version 2.8.4 *** \n", " *** Please reference: D.Svergun, C.Barberato *** \n", " *** & M.H.J.Koch (1995) J. Appl.Cryst., 28, 768-773 *** \n", " *** Version (LMAX=99) for small and wide angles *** \n", " *** Last revised --- 10/12/18 10:00 *** \n", " *** Copyright (c) ATSAS Team *** \n", " *** EMBL, Hamburg Outstation, 1995 - 2018 *** \n", " *** ------------------------------------------------ *** \n", "\n", " ------------------------------------------------ \n", " Program options : \n", " 0 - evaluate scattering amplitudes and envelope \n", " 1 - evaluate only envelope and Flms \n", " 2 - read CRYSOL information from a .sav file \n", " Type crysol -help for batch mode use \n", " ------------------------------------------------ \n", "\n", " ------------------------------------------------ \n", " Following file names will be used: \n", " 6lyz01.log -- CRYSOL log-file (ASCII) \n", " 6lyz01.int -- scattering intensities (ASCII) \n", " 6lyz01.alm -- net partial amplitudes (binary)\n", " ------------------------------------------------ \n", " ---------- Reciprocal space grid -------------\n", " ( in s = 4*pi*sin(theta)/lambda [1/angstrom] ) \n", " Read atoms and evaluate geometrical center ... \n", " Number of atoms read .................................. : 1001\n", " Number of discarded waters ............................ : 101\n", " Percent processed 10 20 30 40 50 60 70 80 90 100\n", " Processing atoms :>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n", " Center of the excess electron density: 0.452 -0.004 0.276\n", " Processing envelope:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n", " Processing envelope:>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>\n", " --- Structural parameters (sizes in angstroms) --- \n", " Electron rg : 13.99 Envelope Rg : 14.08 \n", " Shape Rg : 13.97 Envelope volume : 0.1806E+05\n", " Shell volume : 0.1129E+05 Envelope surface : 3150. \n", " Shell Rg : 18.98 Envelope radius : 25.49 \n", " Shell width : 3.000 Envelope diameter : 49.04 \n", " Molecular weight: 0.1432E+05 Dry volume : 0.1736E+05\n", " Displaced volume: 0.1741E+05 Average atomic rad.: 1.607 \n", " Number of residuals : 129\n", " Average atomic volume .................................. : 17.40\n", " Rg ( Atoms - Excluded volume + Shell ) ................. : 15.04\n", " Rg from the slope of net intensity ..................... : 15.41\n", " Average electron density ............................... : 0.4383\n", " Intensities saved to file 6lyz01.int\n", " I_abs(s)[cm^-1]/c[mg/ml] saved to file 6lyz01.abs\n", " Net amplitudes saved to file 6lyz01.alm" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "`abs` 、 `alm` 、 `int` それにプログラムのログである `log` という拡張子のファイルが `crysol` 実行毎に生成される。\n", "\n", "散乱曲線のデータは `abs` と `int` であるが使うのは `int` の方である。\n", "\n", "実際にファイルの中身を一部表示させると、" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "ExecuteTime": { "end_time": "2019-12-23T01:33:43.652205Z", "start_time": "2019-12-23T01:33:43.531530Z" }, "scrolled": true }, "outputs": [], "source": [ "!head \"6lyz00.int\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ " Dif/Atom/Shape/Bord 6lyz.pdb Dro: 0.030 Ra: 1.6074 Rg: 15.41 Vtot: 18057. \n", " 0.000000E+00 0.484317E+07 0.582674E+08 0.338289E+08 0.147208E+06\n", " 0.250000E-02 0.484078E+07 0.582433E+08 0.338151E+08 0.147088E+06\n", " 0.500000E-02 0.483365E+07 0.581719E+08 0.337741E+08 0.146731E+06\n", " 0.750000E-02 0.482179E+07 0.580530E+08 0.337059E+08 0.146137E+06\n", " 0.100000E-01 0.480523E+07 0.578869E+08 0.336106E+08 0.145308E+06\n", " 0.125000E-01 0.478402E+07 0.576741E+08 0.334884E+08 0.144250E+06\n", " 0.150000E-01 0.475822E+07 0.574149E+08 0.333397E+08 0.142965E+06\n", " 0.175000E-01 0.472792E+07 0.571101E+08 0.331648E+08 0.141462E+06\n", " 0.200000E-01 0.469315E+07 0.567603E+08 0.329640E+08 0.139740E+06" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ここで最初の行は理論散乱曲線を計算するためのパラメータで、使用するのは\n", "1列目の $q$ と2列目の $I(q)$ のみである。残念ながら`crysol`の出力はすぐ使えるようになっていないので加工して保存してやる必要がある。\n", "\n", "## 理論データの保存\n", "\n", "さっそくこのファイルを読み込んでみよう。普通にpythonでファイルを読むこともできるが、せっかくなので、 \n", "`pandas` (https://pandas.pydata.org/) と呼ばれるpythonで\n", "データ解析を行うためのパッケージを使ってみる。\n", "\n", "`pandas`には1次元の`Series`と2次元の`DataFrame`という2つのデータ構造が用意されているが、小角では普通`DataFrame`を使う。\n", "\n", "`pandas`だけでなく描画や数値計算など必要なモジュールをインポートしておく" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "ExecuteTime": { "end_time": "2019-12-23T01:34:12.743072Z", "start_time": "2019-12-23T01:34:12.436291Z" } }, "outputs": [], "source": [ "%matplotlib inline\n", "import numpy as np\n", "import pandas as pd\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "タンパク質溶液散乱の場合、散乱強度 $I(q)$ は重量濃度 $c$ で割った形で実験値として使用するので、2列目の $I(q)$\n", "を分子体積 `Vtot` で割っておく。\n", "\n", "`Vtot` は ``header`` に書きこまれているので、最初に `Vtot` だけ取り出しておく。" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Vtot= 18057.0\n" ] } ], "source": [ "f=open(\"6lyz00.int\")\n", "header=f.readline()\n", "Vtot=float(header.split(\":\")[-1])\n", "print('Vtot=',Vtot)" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "df=pd.read_csv(\"6lyz00.int\",delim_whitespace=True,header=0,names=[\"q\",\"I\"],usecols=[0,1])" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
qI
00.00004843170.0
10.00254840780.0
20.00504833650.0
30.00754821790.0
40.01004805230.0
.........
1960.490024998.3
1970.492524965.8
1980.495024943.6
1990.497524931.3
2000.500024928.1
\n", "

201 rows × 2 columns

\n", "
" ], "text/plain": [ " q I\n", "0 0.0000 4843170.0\n", "1 0.0025 4840780.0\n", "2 0.0050 4833650.0\n", "3 0.0075 4821790.0\n", "4 0.0100 4805230.0\n", ".. ... ...\n", "196 0.4900 24998.3\n", "197 0.4925 24965.8\n", "198 0.4950 24943.6\n", "199 0.4975 24931.3\n", "200 0.5000 24928.1\n", "\n", "[201 rows x 2 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "先程書いたように $I(q)$ を $I(q)/c$ に対応させるために2列めに$I(q)/Vtot$、3列目には各点の誤差を入れるのが小角散乱における標準フォーマット\n", "なので仮想的に$I(q)$の3%の値を入れておく。" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
qIsI
00.0000268.2156508.046470
10.0025268.0832928.042499
20.0050267.6884318.030653
30.0075267.0316228.010949
40.0100266.1145267.983436
............
1960.49001.3844100.041532
1970.49251.3826110.041478
1980.49501.3813810.041441
1990.49751.3807000.041421
2000.50001.3805230.041416
\n", "

201 rows × 3 columns

\n", "
" ], "text/plain": [ " q I sI\n", "0 0.0000 268.215650 8.046470\n", "1 0.0025 268.083292 8.042499\n", "2 0.0050 267.688431 8.030653\n", "3 0.0075 267.031622 8.010949\n", "4 0.0100 266.114526 7.983436\n", ".. ... ... ...\n", "196 0.4900 1.384410 0.041532\n", "197 0.4925 1.382611 0.041478\n", "198 0.4950 1.381381 0.041441\n", "199 0.4975 1.380700 0.041421\n", "200 0.5000 1.380523 0.041416\n", "\n", "[201 rows x 3 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df[\"I\"]=df[\"I\"]/Vtot\n", "df[\"sI\"]=df[\"I\"]*3./100\n", "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "このようにして作った`df`をファイル`6lyz.dat`に出力する。\n", "header行だけ先に書いておき" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "f=open(\"6lyz.dat\",\"w\")\n", "headerline=\"# q I(q) sI(q)\\n\"\n", "f.write(headerline)\n", "f.close()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "次にdataを追記する。フォーマットは指定できる。" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "df.to_csv(\"6lyz.dat\",sep=' ',mode=\"a\",float_format='%.6e', header=False, index=False)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "ファイルの中身は" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "!head \"6lyz.dat\"" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# q I(q) sI(q)\n", "0.000000e+00 2.682157e+02 8.046470e+00\n", "2.500000e-03 2.680833e+02 8.042499e+00\n", "5.000000e-03 2.676884e+02 8.030653e+00\n", "7.500000e-03 2.670316e+02 8.010949e+00\n", "1.000000e-02 2.661145e+02 7.983436e+00\n", "1.250000e-02 2.649399e+02 7.948197e+00\n", "1.500000e-02 2.635111e+02 7.905333e+00\n", "1.750000e-02 2.618331e+02 7.854993e+00\n", "2.000000e-02 2.599075e+02 7.797225e+00" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## データのプロット\n", "データのプロットはpythonのmatplotlib (https://matplotlib.org/) を使うのが一般的である。\n", "縦軸に$I(q)$の対数を取る。" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "ExecuteTime": { "end_time": "2019-12-23T01:34:13.724965Z", "start_time": "2019-12-23T01:34:12.769373Z" } }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ax=df.plot(x='q',y='I',logy=True,fontsize=20,label='6lyz.pdb')\n", "ax.set_xlabel('$q$',fontsize=25)\n", "ax.set_ylabel('$log(I(q))$',fontsize=25)\n", "#plt.savefig('Iq.png')" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.5" } }, "nbformat": 4, "nbformat_minor": 2 }