構造生物 Vol.2 No.2
1996年10月発行

BL6B用強度データ処理プログラムの紹介 −既存のWEISとの相違点−


東 常行

理学電機

1 はじめに

プログラムWEISは、坂部カメラで撮影したデータを処理する目的で約10年前に開発しま した。その後、都合により放射光実験施設の中川さん(現北大)にソフトのメンテナンスをお願いしました。その問、中川さんには、バグの修正だけでなく、スポット位置の補正に関する加筆や、指数付けの確認・実験計画の為のグラフィックスの作成など大変お世話になりました。また、森本さん(徳島大)がunix版に修正された後、ヨーク大で更に手をいれたものがSGI版として使用されていると聞いています。

中川さんが北大に彩られた後、渡辺さん(KEK-PF)から、@WEISのメンテナンス、 AWEISの機能向上、B大型IP(400x800mm)のデータの処理、などの面倒を見て ほしいと頼まれました。WEISは随分古くなっているので、これに手をいれることは止めて、理学電機のRAXIS用の処理プログラムPROCESSを、坂部カメラも処理できる様に書き 換えたもので代用するという条件で引き受けました。

PROCESS坂部版は、まだ書き換えたばかりで使用経験もほとんどありませんから、今後 かなり手を入れないと十分に機能しないかも知れません。また、PROCESSの使用経験のあ る人には、機能の詳しい説明は不要かと思います。しかしここでは、PROCESSを使ったこ とがない人を想定して、このプログラムの特長についてWEISと比較しながら簡単に説明します。

2 プログラムPROCESSの大略

WEISはプログラムOSCMGR(MRossmam)を元に作りましたが、PRO.CESSはプ ログラムMOSFLM(A Wonacott等)を元にしています。もっとも、大幅に変更したので元の 面影はあまり残ってないかもしれません。MOSFLMにスケーリングは付いていなかったので、WEISのCOMBINEとSCALEを基にしたプログラムを使っています。両者の比較を表1に示します。

2次元回折像のデータ処理で必要な基本機能は、いずれにせよ同じようなものです。それをまとめると次のようになります。

@回折像から反射に指数を付けること
A回折フレームに記録されるべき反射の選択と、回折斑点位置の計算
B計算された回折斑点位置と実際の位置とを出来るだけ一致させる精密化
C積分反射強度の計算とLP補正
Dフレーム毎に出力される積分反射強度データのマージ操作
Eフレーム・スケーリングと等価反射の出力
F適切なグラフィックスによるフレームデータの表示

これらの機能の概略をWEISと比較すると、次のような違いがあります。

@WEISはユーザが指数付けをすることを前提としていますが、PROCESSでは振動 写真に限り、実格子指数付けができます。
A反射発生のアルゴリズムが変わっている以外は、だいたい同じです。
BWEISは斑点位置のみに付いての精密化ですが、PROCESSではそれに加えてポス トリファイメント的な考慮をしました。
CMOSFLMのプロファイルフィッティング(TGreenhough)をやめて、Rossmamの方式 と置き換えました。従って、WEISと同じです。
DWEISのCOMBINEと同じ方法で行います。書式は少し違います。
Eスケーリングに、固有値フィルターを用いました。また、ポストリファイメントが使えます。
F簡単なグラフィックス機能があります。

最大の違いは、むしろ入力データの作り方にあります。WEISでは、フレーム毎に入力データを作りますが、PROCESSでは共通の情報は、crystal.datというファイルに書かれていて、それを参照します。また、出来るだけメニュー形式で入力できるようにしました。

これらの機能の内、WEISと違う点のいくつかについて、以下に説明します。

3 指数付け

振動写真なら格子定数を知らなくても指数付けが出来ます。PROCESSでは、以前作った 方法とは異なり、実格子指数付けを行います。原理は簡単で、任意の逆格子3点から逆格子面を作ると、その放線方向が実格子ベクトルの方向となり、この面と原点との距離の逆数が実格子ベクトルの大きさになるという事実に基づいています。この方法の長所は、見いだされた実格子ベクトルの信頼性を評価出来る点にあります。信頼性の高い実格子ベクトルなら、観測された逆格子点が全て逆格子面に乗るはずですから、この乗り具合で評価できる訳です。この評価関数は、次式で見積もります。

ここに、dは評価の対象となる実格子ベクトル、d*jはj番目の測定された逆格子ベクトルであ り、測定された逆格子ベクトルの総数Nで規格化されています。このFOMが高い実格子ベクトルか ら、一次独立な3本を選んで基本格子を作ります。基本格子として数通りの候補が現れますが、 測定された回折斑点のうち何%が指数付け出来たかを比較すれば、一通りに選ぶことができます。 指数付けの一例を図1に示します。この図1b)でのACC(%)は、指数付けてきた斑点の割合を示しています。

ワイセンベルグ運動をしている場合は、カメラが移動するために回折スポット位置から逆格子点を直接計算できないので、上のような方法は使えません。ただし、格子定数と回転軸方向が判っていれば、問題は方位を求めるだけになりますから、原理的には指数付けが出来るはずです。そのような物でも役に立つということなら、今後考慮したいと思います。

4 精密化

WEISでの精密化はスポット位置だけに注目していました。そのため、場合によっては格子定数などが異常に変化してしまうという現象が起こりました。PROCESSでは、スポット位 置に加えて、部分反射の強度情報も使います。精密化する量は次のようになります。

ここに、(X,Y)はスポット位置、Ip、は部分反射の強度、Pc、は部分反射度、If、は対応する完全反射の 強度です。対応する完全反射の強度I、は実際には測定されていませんから、対応を無視して、完全反射の強度の平均値で代用します。この式での第2項の意味は、格子定数など精密化すべきパラメータが異常な発散傾向にならないように、強度に関する束縛条件となります。放射光は平行 性が高いため部分反射が少ないので、第2項がどの様に効果的であるかはよく削りません。場合によっては重みW2を調節する必要があるかも知れません。

精密化で調節できるパラメータ自身も、WEISとPROCESSとでは若干異なっています。

WEISのパラメータ:格子定数・結晶方位角、Q行列要素、カップリング、μ
PROCESSのパラメータ:格子定数、結晶方位角、座標系原点と傾きω、μ
           (モザイク幅)

WEISでのQ行列要素は、PROCESSでは座標系原点と傾きωに対応します。これは、カ メラによって定まる座標系で求めたスポット位置(X,Y)と、IPスキャナー上でのスポット 位置(R,S)を関係付ける方式が両者で異なるためです。WEISの場合はQ行列を使って、

としていましたが、PROCESSでは、

で計算します。PROCESSでは、結晶の回転角とカメラの平行移動との間のカップリング定 数は精密化のパラメータに入れていません。モザイク幅は、部分反射強度に基づく第2項から原理的には精密化出来るはずであり、そのようにプログラムしていますが、対応する完全反射の強度Ifを完全反射の強度の平均値で代用するという近似を使っているため余り有効ではありません。モザイク幅を決めるには、強度データを計算した後で行うポストリファイメントを使って下さい。図2に精密化における出力の例を示します。この図で、最初の3行は精密化の残差(residua1)の報告です。

この図で、最初の3行は精密化の残差(residual)の報告です。Postrefinementが式 (2)の第2項目に、Positionalは第1項に対応します。ウェイトw1とw2は、両方の寄与が同じになるように自動的に調節されています。その結果の総残差が3行目になります。

POSTREFINEMENTと書かれた次のブロックは、部分反射による精密化の部分です。Fullspotの各シェルでのくI>が、式(2)の第2項での完全反射の強度の期待値Ifとして代用されます。理想的には、完全反射の<I>が部分反射の<I>より常に大きくなるはずですが、いくつかのシェルではそうなっていません。その下には、部分反射度の計算値Pca1と実測値Pobsが比較されています。両 者の不一致は上に述べた食い違いと関連があり、いずれもIfとしての近似の粗さによるものだと思います。だから、PcalとPobsとの数値の一致は余り気にせず、Pobsが左から右に向かって増加 していればまず心配はありません。ただし、Pca1=1(完全反射)のPobsが1に近い数値になっているかを気にして下さい。結晶方位や格子定数の近似が粗いと、1よりかなり小さくなります。

POSITIONAL REFINEMENTが第1項であり、スポット位置のRMSだけでなく、RとS成分のRMSと平均を報告し、各シェルでの分布状態も書き出します。なお、spots:1208/1248との記述は、1248個の反射を発生した内1208個が正の強度を観測されたという意味です。 図では省略しましたが、この後にパラメータのシフト情報を出力して1サイクルの精密化が完了します。

5 データファイル類

PROCESSの使用するファイル類を表2に示します。このうち、crysta1.dat, frame.dat, camera.dat, scanner.datが入力用に用意すべきファイルになります。RAXISはcrystal.dat しか使っていません。フレーム情報はフレームファイルのヘッダーから取り込み、カメラ情報やスキャナ情報は不要なためです。今回、PROCESSの一般化に際して付け加えました。

結晶情報ファイルcrysta1.datの一部を図3に示します。FrameInformation欄には、フレームファイルの名前を登録します。この場合は、鋳型が1z05_##.imgであることを示しています。IPスキャナの種類については、RAXISと記載していない場合は、詳細情報をscamer.datに聞きに行きます。結晶情報については説明は不要かと思います。図では示しませんでしたが、精密化における分解能や調節するパラメータの種類などもcrysta1.datに記載されます。

精密化の過程などで格子定数などのパラメータが変更されると、新しいパラメータに変更されたcrysta1.datに更新されます。

図4にframe.datの例を示します。これは、各フレームファイル名、振動範囲(度)、カップリング(o/度)を順に記載したものです。カップリングの定義はWEISでは(°/o)だったので、ここでは逆数になっていることに注意して下さい。

図5にcamera.datの例を示します。検出器の形状、スピンドル軸の方向、スピンドル回転方向の正負などを記述して下さい。

図6にscanner.datの例を示します。ピクセルサイズ、ピクセル当たりのビット数、レコード長、レコード数・データの型・スキャン方向などを記載して下さい。レコード長の部分に、1ogicalとphysica1の2通りがあるのは、各レコードの後ろに詰め物をして長さを調節している場合に対処するためです。1ogicalは詰め物を含めた長さ、physicalは物理的に意味のあるレコード長で、何れもピクセル単位で記入します。スキャン方向に関しては、少し変わった定義の仕方になっています・方向の右左の定義は、入射X線の下流側から見たスキャン方向です。両方の例とも、縦置きの場合であり、横置きの場合はfastest scanning axisを変えて下さい。

6 プログラムの操作法

PROCESSは、STILL, OSCILL, SCALE, PLOTという4種のプログラ ム類からなっています。それぞれの役割は、STILLが指数付けに関する機能(RAXISで は静止写真から結晶方位を決定したという歴史的な理由からの名前です)、OSCILLは振動 写真の精密化と積分反射強度の計算やLP補正、SCALEでマージやスケーリングと平均化、 そして、PLOTでフレームデータの画像表示を分担しています。ポストリファイメント機能やラウエ対称の判定はSCALEに属しています。

このプログラムは、本来、画面上でインタラクティブに操作するように作られています。従って、PROCESSを立ち上げると4種類のプログラムを選択するウインドウが出現するので、ボタンクリックで必要なプログラムを選びます。すると、各プログラムのメニューが次に立ち上がって、そのプログラムで作業すべき機能のボタンを選ぶという形式で操作します。一例として、OSCILLプログラムでcrystal.datの内容を書き換える画面を図7に示します。

7 PLOTの機能

グラフィックスPLOTは、中川さんの書かれたグラフィックス機能には劣ると思いますが、記録された回折図形と計算されたスポット位置を重ね合わせて表示しますから、指数付けの様子や精密化の過程を眼で確認することができます。ウィンドウを数枚同時にかけるので、異なるフレームや無段階のズーム機能で拡大した図を同時に比較することができます。PLOTの一例をを図8に示します。

8 おわりに

PROCESSはRAXISのデータ処理のために書かれたプログラムなので、RAXISで の実績はともかく、PFの坂部カメラのデータ処理についてはまだまだ足りない点や使い難い部分があるかとも思います。しかも、今のところ処理実績も十分ではありません。ただし、以前のWEISよりは幾分機能が上がっているものと思います。

不足している部分や使い勝手の悪さは、出来る限り修正していきたいと考えていますから、多くのユーザからの使ってみてのご意見を歓迎します。


ご意見、ご要望などは下記のアドレスにメールを下さい。
sasaki@tara.met.nagoya-u.ac.jp