SHELXLの処理の流れをつかむ
SHELXLを使って分子置換以降を行う手順はSHELXのページにチュートリアルがあるので、ここではREFMAC(もしくはCNS)で精密化した後、SHELXに持ってくる手順を試してみたいと思います。私はSHELXを使うのが初めてなので、問題点など指摘していただけると助かります 。
このページでは、SHELXLを使う際の最低限の知識と、後半部で実際にREFMAC->SHELXLで水素原子発生、の手順を簡単にまとめています。
- SHELXLクックブック -- SHELXLを使いこなそう!
SHELXLでの精密化
SHELXLは構造精密化用プログラムで、基本的な流れは以下のようになります。この際、タンパク質構造精密化用インタフェースプログラムであるSHELXPROを組み合わせて使います。
この手順を繰り返すことで精密化を進めていきます。大幅な修正がない場合、resファイルのパラメータを修正して次のinsファイルを作成します。これがPDBファイルを基準とする他のプログラムと大きな違いでしょう。図で表すと以下のような感じ。
(pdb) -> (ins) -> SHELXL -> (res) ↑ | +-----------------+
insファイルをSHELXLに読み込ませて処理すると、insファイル中のあるモデルに大きく影響を与えるような命令(ANISやHFIXなど)が削除されてresファイルに書き出されるようです。
SHELXのページにLysozymeを使った精密化手順のチュートリアルがまとめられています(結構まわりくどいのでわかりにくいかも・・・)。このページでチュートリアルといえばこのチュートリアルを指します。一通りは見ておいた方がいいでしょう。慣れるまでは印刷して手元にあると結構便利。
- Refinement of Triclinic Lysozyme at 1.1Å -- http://shelx.uni-ac.gwdg.de/SHELX/p1lys/p1lys.html
SHELXLの流れを理解する
構造因子ファイル.hklを作成
SCALEPACKのscaファイルを元にしてSHELXLで使用する構造因子ファイル(.hkl)をSHELXPROで作成します。このファイルは一度作成するとずっと使いますので、この手順は最初だけ行えばよいでしょう。XDSで処理した場合はXDSCONVで直接SHELXのhklファイルを出力することができるので、この段階は飛ばせます。
以下の手順をSHELXPROを使って行います。
- SHELXPROscaファイルをhklファイルに変換する
- FreeRフラグを付ける
SHELXLのinsファイルの作成
SHELXLで精密化を行うためにはinsファイル(instructions)を作成します。このファイルも構造因子ファイルと同様にSHELXPROを使い、PDBファイルから作成します。
出力されたinsファイルは以下のような感じになります。
TITL 2DSY <- タイトル CELL 1.00000 38.996 62.743 65.724 90.00 104.31 90.00 <- 測定波長および格子 ZERR 8 0.039 0.063 0.066 0.00 0.05 0.00 <- Zおよびe.s.d.(*) REM Space group P 1 21 1 <- コメント行 LATT -1 <- non-centrosymmetric primitive lattice SYMM -X, 1/2+Y, -Z <- 対称操作 SFAC C H N O S SE MG <- 原子散乱因子 UNIT 3214 6404 804 1318 12 16 2 <- unit cell contents in same order --- 以下、精密化を行うための命令(instructions)およびパラメータ DEFS 0.02 0.1 0.01 0.04 CGLS 10 <- 精密化はこのあたりをいじる SHEL 10 0.1 <- こことか FMAP 2 PLAN 200 2.3 LIST 6 WPDB 2 ... --- さらに含まれる残基および原子座標が記述される WGHT 0.1 FVAR 1.00000 PART 1 RESI 1028 SER N 3 0.847012 -0.128523 -0.090285 10.58000 0.11549 = 0.23880 0.39370 0.01460 0.00626 0.06112 ...
(*) e.s.d. -- estimated standard deviations; 推定標準偏差
このファイル中の行頭の4文字のワードが命令(instruction)であり、精密化を行う際に修正するパラメータとなってます。結合情報などのパラメータも含まれています。他のプログラムと比べて若干わかりにくいのですが、つまり、insファイル = 命令セット + パラメータ + 原子座標と考えてください。そのため、insファイルとhklファイルがあれば処理ができます(CCP4などのようにパラメータファイルが外部にない)。
insファイルの修正
出力されたinsファイルの精密化パラメータを状況に合わせて修正します。
実際にどのように修正するかはチュートリアルを確認するか、後半の実践してみるを参考にしてください。
ファイル名について
SHELXLを流すときはshelxl filenameという感じで流しますがfilenameはinsファイルから拡張子を除いたものになります。この例では、filename.insとfilename.hklを使って精密化の計算を行います。初めに作成した構造因子ファイルへfilename.hklという名前でシンボリックリンクを張っておきます。
SHELXLを流す
SHELXLを流して精密化を行います。
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + SHELXH-97 - CRYSTAL STRUCTURE REFINEMENT - HUGE UNIX VERSION + + Copyright(C) George M. Sheldrick 1993-7 Release 97-2 + + 110516-1s7 started at 15:37:42 on 18-May-2011 + ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Read instructions and data ** Warning: 52 distances involving residues not restrained ** Data: 218904 unique, 0 suppressed R(int) = 0.0000 R(sigma) = 0.0158 Systematic absence violations: 0 Bad equivalents: 0 wR2 = 0.5334 before cycle 1 for 207949 data and 26250 / 26250 parameters GooF = S = 5.251; Restrained GooF = 6.683 for 36904 restraints Max. shift = 0.216 A for O3B_2001 Max. dU =-0.263 for OD2_1063a at 15:38:55 ... wR2 = 0.3345 before cycle 21 for 207949 data and 2 / 26250 parameters GooF = S = 3.011; Restrained GooF = 2.845 for 36825 restraints R1(Free) = 0.1529 for 9675 Fo > 4sig(Fo) and 0.1629 for all 10955 data R1 = 0.1294 for 183488 Fo > 4sig(Fo) and 0.1379 for all 207949 data wR2 = 0.3345, GooF = S = 3.011, Restrained GooF = 2.845 for all data Sigma-A = 0.9767 for reference set and 0.9800 for working set, ratio = 0.9967 R1 = 0.1378 for 207949 unique reflections after merging for Fourier Highest peak 1.13 at 0.9800 0.4965 0.1526 [ 2.31 A from O1A_2002 ] Deepest hole -0.60 at 0.4813 0.5284 0.1338 [ 0.11 A from O3A_2002 ] +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + 110516-1s7 finished at 16:00:29 Total CPU time: 87491.1 secs + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
こんな感じで流れますがポイントはR1, wR2, GooFの値です。精密化がうまくいっているかどうかはこの辺りの値を見ながら確認していきましょう。 R1はR値およびFreeRの値です。R1 = Σ||Fo| - |Fc|| / Σ|Fo|で求められます。またwR2およびGooFは以下の式で求められるようです。
wR2 = [Σ{w(Fo2 - Fc2)2} / Σ{w(Fo2)2}]1/2
GooF = S = [Σ{w(Fo2 - Fc2)2} / (n - p)]1/2
なおwR2は少なくともR1の2倍程度は大きいらしいく、GooFは精密化の最終段階では1に近づくとのことなので、通常は下がっていきます。この例だとはじめ5.251だったのが20サイクル後では3.011まで下がっています。この値が大きくなりすぎると** REFINEMENT UNSTABLE **エラーで終了してしまうみたいです・・・3程度だったものが急に6などになると何かおかしいことが起こっている可能性があります。下の異方性温度因子導入後のモデル修正も参照して下さい。
モデル修正
チュートリアルによると、SHELXLで得られたresファイルとモデル修正したPDBファイルから新たなinsファイルを作成して次のサイクルに入るという解説がありますが、COOT 0.6を使うとresファイルおよびfcfファイルが直接読める上にinsファイルを書き出せるので便利な気がします(現在お試し中)。
SHELXLで出力される異方性温度因子(ANISOU)を含むPDBファイルはそのままではCOOTで読み込めません(0.6.2-pre1で確認)。
ERROR 14 READ: Unmatch in different records for the same atom. LINE #11 ANISOU 5 N BSER 1028 1039 1980 5417 -403 1270 -932
こんなエラーがでます。COOTはANISOUを含む原子では、元素名カラム(77-78カラム目)が必要なようで、適切な元素名を追加する必要があります。一つ一つ修正するのは大変なのでPDBSETを使って正規化します(PDBを正規化したい)。
実践してみる
さて、流れが理解できたら実践してみます。通常、SHELXはサブオングストロームでの精密化に使われます。チュートリアルでは分子置換後のRigid bodyリファインメントから入ってますが、ここでは1.5Å程度の分解能まで精密化をした状態(つまり、REFMACやCNSなどを使って精密化)から開始します。
何をすべきか
チュートリアルではいろいろ書いてますが、以下のような段階を踏みます。
- ファイルの準備
- 1.5Å、等方性温度因子での精密化
- 最高分解能までの精密化(今回の例では0.85Å)
- 異方性温度因子導入
- 水素原子を含んだ精密化
これで完了です(たぶん)。もちろん、各ステップの間にモデル修正を挟みます。ここで示したステップはあくまで私が行ってみてそれなりにうまくいった内容です。もう少しパラメータをいじるなどすればさらにいい結果が得られるかもしれませんが、その辺りは試行錯誤をお願いします 。
hklおよびinsファイルの作成
流れのセクションでも説明しましたがSHELXPROを使ってhklファイルおよびinsファイルを作成します。詳しくはSHELXPROのページを参照してください。
insファイルの修正部分
作成したばかりのinsファイルでは命令が以下のように記述されていますが、ステップに合わせてこれらを修正します。今回は基本的な流れなので修正するのはCGLS、SHEL、STIR、ANISのみを使います(内容は後述)。
DEFS 0.02 0.1 0.01 0.04 <-- いじらない CGLS 10 <-- 精密化のサイクル数 SHEL 10 0.1 <-- 分解能範囲 FMAP 2 <-- いじらない PLAN 200 2.3 <-- 状況によって修正(ここでは取り上げません) LIST 6 <-- いじらない WPDB 2 <-- いじらない
今回のステップ中で異方性温度因子の導入までは、基本的にこの部分の修正のみを行います。上の内容で青で示した行は精密化に大きな影響を及ぼすパラメータなのですが、それぞれのステップで示したパラメータをその部分に記述します。
1.5Å、等方性温度因子での精密化
SHELXでの初めの精密化です。精密化プログラムをREFMACやCNSから移行するってことで長めのサイクルで流してみます。
CGLS 20 -1 SHEL 10 1.5
CGLSおよびSHELをこのように変更します(その他のパラメータはそのまま)。CGLSはKonnert-Hendrickson Conjugate-gradient least-squaresアルゴリズムによる精密化の略のようです。-1を付けるとFree Rを計算する設定になるようです。またSHELは分解能範囲です。モデル修正をして精密化を流す場合、これ以降CGLSの値は10ぐらいでいいと思います。
最高分解能までの精密化
1.5Å分解能で統計値が安定したら、最高分解能まで使ってしまいましょう。パラメータは以下のようにします。再び20サイクルで長めに流します。
CGLS 20 -1 SHEL 10 0.85 STIR 1.5 0.05
ここではSTIRを使い、1.5Åから高分解能データを0.05Åずつ加えていく設定にします。この分解能で精密化を流す場合は再びCGLSとSHELのみを設定します。
CGLS 10 -1 SHEL 10 0.85
というような感じです。
異方性温度因子の導入
これまでの手順で等方性温度因子での精密化を終え、異方性温度因子を導入します。うまくいけば大幅にR値が下がるはずです。
CGLS 20 -1 SHEL 10 0.85 ANIS
このANIS命令で異方性温度因子が導入されます。チュートリアルでは安定するまでCGLSサイクルを流した方がいいと書いてあり、精密化中のwR2の値が最後の2サイクルで差が0.001以下になるまでした方がいいとのことです。ここの設定では20サイクルになっており、だいたい安定すると思いますが、安定しない場合はサイクル数を増やしましょう。
異方性温度因子導入後のモデル修正
異方性温度因子を導入後、大幅な(?)モデル修正を行い精密化を流すと、
wR2 = 0.3521 before cycle 1 for 188165 data and 24165 / 24165 parameters GooF = S = 2.992; Restrained GooF = 2.834 for 35305 restraints Max. shift = 0.245 A for OH_1105b Max. dU =-0.204 for CD1_1105b at 15:24:57 wR2 = 0.7224 before cycle 2 for 188165 data and 24165 / 24165 parameters GooF = S = 10.864; Restrained GooF = 10.191 for 35306 restraints Max. shift = 0.311 A for CE1_1105b Max. dU =-0.240 for CG_1105b at 15:25:56 ** REFINEMENT UNSTABLE **
というエラーが出てプログラムが中断してしまうことがあります。
原因をしっかりと理解しているわけではないのですが、側鎖を大幅に修正した場合によく起こる現象な気がします(精密化途中でGooFの値がこの例のように跳ね上がります)。この時、温度因子が精密化の邪魔をしていると考えられる(詳しい人教えてください)ので、大幅に修正した側鎖の温度因子をリセットします。その後、ANIS命令を追加して精密化を流す(異方性温度因子の導入と同じパラメータ。ただしCGLSのサイクル数は10ぐらいでもよさそう)ことで、再び異方性温度因子が計算され、エラーも解消されるようです。
例えば、以下の原子の場合、
NE2 3 0.858783000 -0.149598000 -0.082018000 10.500000000 = 0.25300 1.09516 0.80633 -0.19011 0.19091 -0.20871
=以降が異方性温度因子なので、その部分を削ります。
NE2 3 0.858783000 -0.149598000 -0.082018000 10.500000000
こんな感じ(温度因子の項目がなくなりますが、ANISで再計算されます)。これを大幅に修正した残基中の原子全てに行います。
REFINEMENT UNSTABLEが出たときのために、大幅に修正した残基はメモしておいた方がいいかもしれません。実は、COOTには「修正した残基の温度因子をリセットする」という設定があるのですが、resファイルで読み込んだ場合、うまく反映されないようです(0.6.2pre1;修正した残基の温度因子をリセットする)。
- 参考
- [ccp4bb] ANIS and SHELXL -- 異方性の時、温度因子について
水素原子を発生させる
水素原子を発生させる順は以下の感じ・・・かな?
解離性水素の扱いをどうするかは経験者に聞くのが無難でしょう(私はあまり詳しくないのでここでは少し触れる程度にします)。この例はあくまで参考程度に考えて下さい。各ステップごとに水素が見えているか、(必要に応じて)Fo-Fcマップを使って確認します。OH基以降のステップは慎重に。
- C-H
- N-H (His除く)
- O-H (Asp, Glu除く) <- 慎重にしたほうがいいかも
- さらに見えるならHisとかAsp、Gluに発生させてもいいかも
insファイルに、
REM HFIX_ALA 43 N REM HFIX_ARG 23 CB CG CD
といった記述があるはずですが、この例では43(この数字は水素のリストレイン。マニュアル参照)以降が水素を発生させる原子名です(この場合NとかCB、CGなど)。スペースで区切って複数指定することもできるようです。REMを外して一度流すとREMを外したHFIX命令が実行され消去されます。どうやらモデルに原子を追加したりするような影響を与える命令は実行するとresファイルには出力されないようですね(ANISも同じ)。
水素原子を発生させる前に、Fo-Fcマップをよく確認して重要な部分は水素が見えているかなど確認するとよさそうです。