D4mat2Slicerマニュアル(多次元系単結晶試料非弾性散乱測定の可視化)#
- 更新日:
2022.5.18
- 著者:
稲村泰弘
概要#
多次元系単結晶試料に対する非弾性散乱測定において、広い運動量空間をカバーするためには、試料に対する入射中性子の方位の異なる測定を複数回行い一つの運動量エネルギー空間にあるものとみなしてデータを扱う必要がある。
その測定手法としては、以下のように2種類がある。
- Step By Step手法
試料への入射中性子の方位の異なる複数の測定データを一つに融合(マージ)し可視化する
- 連続回転手法
試料への入射中性子の方位を連続的に変化させつつ測定を行う。
これまでStep By Step手法のデータは、D4matSlicerを用いることで処理できたが、連続回転測定には対応できていなかった。
そこで、D4matSlicer2を作成した。以下のような利点をもつ。
Step By Step測定のRAWデータからの処理が可能(.vbinファイルは不要)
連続回転測定のRAWデータの処理が可能
連続回転測定においてRAWデータの差分処理(逐次処理)が可能
Projection処理を簡単にやり直すことができる
スライスの処理(bin幅も含めて)が高速
専用バイナリデータ(.d4m)でのファイル保存
各種データフォーマットへの出力が可能
D4matSlicerデータ
SEPファイル
nxspeファイル
一方で以下のような欠点を持つ。
測定データの全てをメモリ上に展開するため、膨大なメモリを消費する(40〜100GB)
よって、具体的な使用方法としては
測定装置に設置された解析PC上で、D4MatSlicer2で高速にProjection処理や可視化を行い、
データをユーザー環境に持ち帰る場合にはD4matSlicerデータ, SPEファイル、 nxspeファイルに出力して持ち帰る。
という流れを想定している。
なお、このソフトウェアの大部分の機能は、Python3のコマンドラインから実行可能である。詳細は D4Mat2Slicer用コマンド を参照のこと。
実行手順#
起動#
D4matSlicer2を起動する。
$ D4mat2
測定情報やデータの入力(Step by Step, 連続回転測定共通)#
次に、測定情報(入射エネルギー、Run No、回転角度など)をサブウィンドウ(Data Reduction Info)にて入力する。
起動直後のメイン画面で、最上部にある Setting ボタンを押してサブウィンドウ(Data Reduction Info)を開く。
この画面における設定は、連続回転測定とStep-by-Step測定の両方に対応しており、Measurement Method 枠内のチェックボックスで測定を選択する。 起動直後は Continuous チェックボックスがデフォルトでは選択されており(上図左)、Step-by-Step測定関連の入力やボタンが無効になっている。
Step-by-Step測定のデータを処理する場合は、StepByStep チェックボックスをクリックする(上図右)。結果として、連続回転測定のパラメータ入力ボックスが無効になると同時に、 Step By Step Methodのいくつかのボタンや入力ボックスが有効になる。
このパネル上で逐次データリダクションの情報を与えてゆく。
データリダクション処理のために与えるパラメータは、空蟬4のヒストグラム化のファサードである、 GetDataOfMonochroEi3 関数と同等である(内部でこの関数が動作すると考えて良い)
エネルギー情報#
まず、 Energy Transfer Info の情報を入力する。入力する情報は以下の通り。
Ei |
入射エネルギー |
hw bin |
エネルギー bin幅 |
hw range |
エネルギー最小値と最大値 |
マスク情報#
次に、マスク情報を与える。 マスクファイルのテキストボックスには、 Default 、マスクファイル名 もしくは マスクファイルへのファイルパス を入力する。
- Default の場合
データ処理用パラメータ設定ファイル(environ_ana.xml)に記載のデフォルトのマスク情報を利用する
- ファイル名のみ書いた場合
以下の場所を順番に探しに行き、最初に見つけたファイルを利用する
カレントディレクトリ内
空蟬コード内( /opt/mlfsoft/python-utsusemi/XXX/ana/xml )
ホームディレクトリ内( ${HOME}/ana/xml )
- ファイルパスを指定した場合
そのファイルを探しにゆく。入力ミスをなくすために Select ボタンを利用すること
その他のパラメータ#
- NormFactor
プロトン値による規格化のパラメータ。連続回転測定では、それぞれの角度のデータはキッカー数で規格化され、Step-by-Stepではプロトン数で規格化される。その際の割り戻しの値である。
- TimeIndepBack
時間に依存しないバックグランド処理。詳細は空蟬4ユーザーズマニュアル/コマンドリファレンスマニュアル(Python編)/空蟬ファサード関数リファレンス/4SEASONS, AMATERAS専用 を参照のこと。
- DetEffi
検出器感度補正 (詳細は同上)
データリダクションスクリプト#
データリダクション処理(RAWデータからヒストグラム化し、補正などを行う過程)において、内部では Cmm.GetDataOfMonochroEi3 が使用される。しかし、より詳細にデータリダクション処理を制御するために、ユーザーが作成したスクリプトを使用することも可能である。 (詳細は本項の Appendix A を参照)
測定情報やデータの入力(その2)#
共通設定以降は、Step-by-Step測定と連続回転測定とで入力情報が異なるため、それぞれの手順を示す。
Step-by-Step測定の場合#
Step-by-Step測定におけるRun情報(RunNo, ゴニオの角度など)を与える。 D4MatSlicer2では、2種類の与え方が可能である。一つはRunListファイルを与える方法であり、もう一つはRun毎に追記してゆく方法である。
- RunListファイルの準備
このファイルは、
RunNo, 測定開始日, 測定開始時刻, 測定終了日, 測定終了時刻, プロトン数, 温度(sencer A), 温度(sencer B), 試料角度のリストであり、下記のようなTEXTフォーマットである。
例:run_list.txt
run# start end kickers protons CT8n ratio T_A T_B gonio 35934 2018/11/22 18:24:06 2018/11/22 18:27:43 5079 216159.9076 217220 1.0049 297.04 297.17 -10.6520 35935 2018/11/22 18:28:08 2018/11/22 18:31:44 5053 215221.0162 209667 0.974192 297.04 297.15 -9.6520 35936 2018/11/22 18:32:09 2018/11/22 18:35:47 5100 217271.5249 216678 0.997267 297.03 297.14 -8.6520 35937 2018/11/22 18:36:12 2018/11/22 18:39:48 5053 215096.9685 215097 1 297.02 297.13 -7.6520 35938 2018/11/22 18:40:13 2018/11/22 18:43:50 5074 216168.2779 216592 1.00196 297.01 297.12 -6.6520 35939 2018/11/22 18:44:15 2018/11/22 18:47:54 5124 218247.3036 217993 0.998834 297.01 297.11 -5.6520 #35940 2018/11/22 18:48:19 2018/11/22 18:51:55 5049 215131.7787 214580 0.997437 297.00 297.10 -4.6520 35941 2018/11/22 18:52:19 2018/11/22 18:55:54 5029 213994.2288 214376 1.00178 297.00 297.09 -3.6520 35942 2018/11/22 18:56:20 2018/11/22 18:59:58 5100 217380.4918 216744 0.997071 296.99 297.08 -2.6520 35943 2018/11/22 19:00:23 2018/11/22 19:06:14 5773 245801.1592 245589 0.999137 296.98 297.07 -1.6480 35944 2018/11/22 19:06:40 2018/11/22 19:10:17 5074 215736.5044 215440 0.998625 296.97 297.06 -0.6520 .....(後略)
なお、先頭の”#”はそのRun Noを読み込まないことを意味する。
- 必要に応じ単独でRun情報を与える
Run情報は、1 RunNoごとに下部の RunNo , Gonio , Protons 欄と Add ボタンで与えることもできる。
不要なRunNoがあった場合は、Run List上の目的のRunNoをクリックして選択し、Clear ボタンを押すことで Run List から削除できる。複数の選択も可能である。何も選択されていない状態では、全て消去される。
連続回転測定の場合#
連続回転測定( Measurement Method 枠内の Continuous チェックボックスがオンとなっている)の場合、以下の項目が入力可能となっている。
タイトル |
パラメータ |
意味 |
補足 |
---|---|---|---|
Run Number |
RunNo |
Run Number |
|
Oscillation Info |
Start Ang |
回転開始角度(Begin時) |
なお、これらの角度はメインパネルの Sample Information で与えられる方位を0度とする。 ( Rotattion含む) |
Min Ang |
回転範囲の最小角度 |
||
Max Ang |
回転範囲の最大角度 |
||
Step Ang |
データ処理時の角度分割幅 |
||
Time Slice |
Start Sec |
時間分割の先頭 |
測定開始時を0秒とした単位で利用したい時間領域を指定する。 デフォルトである両方-1の場合、全ての時間領域を使用する。 |
End Sec |
時間分割の最後 |
||
Angle/Encoder conv |
(Device) |
エンコーダ利用デバイス名 |
|
(Value) |
変換定数 |
登録のないデバイスを使用する際に変換定数を直接指定する。 |
|
TrigNET info |
DaqID, modNo |
TrigNETデータのDAQ ID とmodule No |
TrigNETのデータとして割り当てられているDAQ IDとmoduleNo (現時点では未使用) |
KickerIO |
角度データの入力ポート |
通常はデフォルト(DIO1)で良い |
最後に Reduction Setting ボタンを押すと上記の情報が設定される。この時、実際にデータリダクションを行うのに必要なメモリ量の概算がダイアログで示される。大体数10GB〜100GB程度である。
このダイアログで OK ボタンを押すと上記の設定がメインパネルへ反映される。結果として、メインパネルの Experiment 枠の右側に簡単な情報が表示される。
データリダクションの実行#
Execute ボタンを押すことで、データリダクション作業(RAWデータを読み込んで各角度での処理)が行われる。この時、Execute ボタンが赤くなり、同時に時間がかかる旨の確認ダイアログが開く。
データリダクションが終了すると、 Execute ボタンの色が元に戻り、Projectionの Project ボタンが有効になる。
Step-by-Step の処理の場合、サブウィンドウ上のRunListの行頭にあるマーカーが処理の状態に応じて変化する。処理前は○、処理中は黄色、処理後は緑となるので進展がわかる。
射影・スライスの実行#
これ以降は、VisualContMの試料情報、射影情報と変換、スライスとプロットと同等のGUIと機能をもつため、ここでは割愛する。 VisualContMマニュアル(非弾性単結晶測定可視化) を参照のこと。
Projection ボタンを押すと射影処理が始まるが、この処理に長時間かかる場合は以下のようなプログレスバーが表示される。
また、VisualContMで作成したパラメータファイル(XtalParam.xml)を読み込んで、パラメータを呼び出すこともできる。
データ等の読み書きと変換機能#
D4Mat2では、VisualContMなどのパラメータファイル、いわゆるXtalParam.xmlの情報を再利用できると同時に、処理中(射影処理前)のデータを専用のバイナリファイルで保存可能である。また処理後のデータを D4Mat , SPE, nxspe ファイルフォーマットに変換することが可能である。それらの詳細を以下に示す。
パラメータファイル(XtalParam.xml)の読み込み・書き出し#
メインウィンドウ上には、下図のようなパラメータファイル読み書き用ボタンがある。
ここで、各種パラメータ(データリダクション用及び試料情報、射影情報など)をファイルに保存したり(Saveボタン)、保存されたパラメータの読み込み(Loadボタン)も可能である。また、partialボタンを押すと、XtalParam.xml内の任意の情報だけ読み出したり書き出したりすることが可能である。部分的な情報だけ取り込みたい場合に使用できる。
読み込み可能なファイルは以下の2種類である。
- VisualContMで保存された XtalParam.xml
試料情報、射影情報、スライス情報を含む。このファイルを読み込むと、D4MatSlicer2上の各種情報が上書きされる。
- D4MatSlicer2で保存されたファイル
XtalParam.xmlの情報に加えてデータリダクションの情報(EiやRunListなど)を含む。このファイルを読み込むと、試料関連の各種情報が上書きされると同時に、データリダクション用の情報も読み込むことができる。すでにデータリダクション情報やRunListが入力済みの場合は、下図のようなダイアログが出てくるので、上書きするかしないかを選択できる。
Step-by-Step測定の場合、1) RunListの上書き、2)データリダクション情報の上書きの二つ、連続回転測定の場合は 2)データリダクション情報の上書きの一つのダイアログが表示される。問題がなければ OK ボタンを押す。
D4Mat2のバイナリデータ保存と読み込み#
パラメータファイルと同様に、メインウィンドウ上にD4Mat2専用バイナリデータ保存・読込ボタンもある。
データリダクション処理が終わったD4Mat2Slicerのデータは、Step-by-Step測定も連続回転測定も、ヒストグラム化及び各種補正処理が終わった各角度のデータとしてメモリ上に蓄えられている。この状態のデータ、すなわち試料情報による 射影(Projection)前 のデータは、D4Mat2専用バイナリファイルとして保存することが可能である。
特徴
同時に試料情報や射影情報、スライス情報など、いわゆるXtalParamの情報もバイナリファイルに統合されて保存されるため、一つのファイルでD4Mat2の処理(射影処理直前まで)を再現することが可能
Step-By-Stepの場合、RunListの途中でデータ処理が終わっていた場合でも、処理の進展を記録しているので、処理の中途の再現も可能
読み込み後はすぐに射影処理(Projection)を行うことが可能である
書き込み・読み込み処理には数秒から数十秒程度かかるが、その間ボタンは赤くなり処理が終われば戻る
保存時に圧縮をかけてバイナリファイルのサイズを小さくすることも可能(Compチェックボックス使用)である
この圧縮はファイル内部におけるデータの圧縮処理であり、いわゆるzipやtar.gzなどのファイルの圧縮とは異なる
圧縮によりデータサイズはおおよそ数分の一から数十分の一の大きさになるが、保存や読み込み処理に数倍の時間がかかる
読み込み時は圧縮・非圧縮を自動的に判別し処理される
データ変換機能#
D4Mat2は、下記のフォーマットに変換可能である。
D4Mat
SPE (.phx, .par)
nxspe
D4Matへ変換する場合の手順#
各軸のStepを定義するため、全てのPlot Axisを X-Axis, Y-Axis, Z-Axisのどれかにし
Stepを必要なら変更し
ドロップダウンメニューから変換したいフォーマットを選択し
[Save]ボタンを押すとファイル保存ダイアログが出るのでファイル名を指定する
SPEやnxspeへ変換する場合#
射影処理が終わっていれば特に設定は必要とはしないので、ドロップダウンメニューから、 SPE もしくは nxspe を選択して、Save ボタンを押す。
すると保存先のフォルダを指定するダイアログが開くのでフォルダを選択(Openボタン)すると、書き出し処理が始まる。
この時時間がかかるので、プログレスバーが表示される。
Appendix#
A.データリダクションスクリプト#
データリダクション処理(RAWデータからヒストグラム化し、補正などを行う過程)において、デフォルトでは
Cmm.GetDataOfMonochroEi3
が使用される。しかし、より詳細にデータリダクション処理を制御するために、ユーザーが作成したスクリプトを使用することも可能となっている。
スクリプトを使用する場合、チェックボックスで Use Script を選択する。
使用するスクリプトは、Template ボタンを押して保存されるテンプレートスクリプトファイルに記述されている “DataReduction” 関数内を加工して作成する。 スクリプト内では自由に関数などを定義・使用して良いが、 DataReduction もしくは DataReductionContRot の関数名のみは、内部から呼び出されるために予約されているので注意すること。
- Step-by-Step測定の時のテンプレートスクリプト
DataReduction関数がRunNo毎に呼び出され、戻り値がD4Mat2データに蓄えられる。
#!/usr/bin/python # -*- coding: utf-8 -*- import DR def DataReduction( runNo, Ei, hw_min, hw_max, hw_bin, normFactor, maskFile ): """ DataReduction Script Template of D4MatSlicer2 @param runNo (int) Run Number @param Ei (float) Incident Energy [meV] @param hw_min (float) min value of Energy Transfer [meV] @param hw_max (float) max value of Energy Transfer [meV] @param hw_bin (float) binning of Energy Transfer [meV] @param normFactor (float) normarization factor @param maskFile (string) file name or file path to mask file @return ElementContainerMatrix : valiable name must be 'DAT' """ ######################### Editable ######################### DAT = DR.GetDataOfMonochroEi2(runNo,Ei,hw_bin,hw_min,hw_max,MaskFile=maskFile,NormFactor=normFactor) ############################################################ return DAT
ここで、 Editable 以下のところに必要なデータリダクションの関数を記述する。その際に使用できるパラメータ(GUIでの設定パラメータが渡される)は以下の通り。
DataReduction関数内で使用できる引数
runNo
Run Number
Ei
入射エネルギー
hw_min
エネルギー範囲の最小値
hw_max
エネルギー範囲の最大値
hw_bin
エネルギーのビン幅
normFactor
規格化用値
maskFile.
マスクファイル名 or パス
- 連続回転測定の場合のテンプレートスクリプト
DataReductionContRot関数がそれぞれの角度ごとに呼び出され、戻り値がD4Mat2データに蓄えられる。ただし、Pythonスクリプトを各角度で走らせるために時間が非常にかかる(おおよそ数十倍)。
#!/usr/bin/python # -*- coding: utf-8 -*- import Cmm def DataReductionContRot( DAT, phi, maskFile, normFactor, deteeffi ): """ DataReduction Script Template of D4MatSlicer2 for Continuous Rotation method @param DAT (ElementContainerMatrix) Data at angle of Phi @param phi (float) Phi ( angle around Y axis ) @param maskFile (string) file name or file path to mask file @param normFactor (float) normarization factor @param deteffi (string) @return ElementContainerMatrix : valiable name must be 'DAT' """ ######################### Editable ######################### Cmm.dHWCorrection(dat=DAT) Cmm.SolidAngleCorrection(dat=DAT) Cmm.KiKfCorrection(dat=DAT) Cmm.DoMask(dat=DAT,filename=maskFile) Cmm.NormByKickers(dat=DAT,factor=normFactor) Cmm.DetectorEffi(dat=DAT, dataFile=deteeffi) print("##### phi, DAT.PutSize() = %g, %d"%(phi,DAT.PutSize())) ############################################################ return DAT
ここで、 Editable 以下のところに必要なデータリダクションの関数を記述する。その際に使用できるパラメータ(GUIでの設定パラメータが渡される)は以下の通り。
DataReductionContRot関数内で使用できる引数
phi
回転角度(XtalParamsで指定する格子定数とUV方位の定義が0度)
maskFile
マスクファイル名 or パス
normFactor
規格化用値
deteeffi
検出効率補正用ファイル
スクリプトの作成が終わったなら、Select ボタンを押して、使用するスクリプトファイルを指定する。