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)

よって、具体的な使用方法としては

  1. 測定装置に設置された解析PC上で、D4MatSlicer2で高速にProjection処理や可視化を行い、

  2. データをユーザー環境に持ち帰る場合にはD4matSlicerデータ, SPEファイル、 nxspeファイルに出力して持ち帰る。

という流れを想定している。

なお、このソフトウェアの大部分の機能は、Python3のコマンドラインから実行可能である。詳細は D4Mat2Slicer用コマンド を参照のこと。

実行手順#

起動#

D4matSlicer2を起動する。

$ D4mat2

fig01

測定情報やデータの入力(Step by Step, 連続回転測定共通)#

次に、測定情報(入射エネルギー、Run No、回転角度など)をサブウィンドウ(Data Reduction Info)にて入力する。

起動直後のメイン画面で、最上部にある Setting ボタンを押してサブウィンドウ(Data Reduction Info)を開く。

fig02 fig03

この画面における設定は、連続回転測定とStep-by-Step測定の両方に対応しており、Measurement Method 枠内のチェックボックスで測定を選択する。 起動直後は Continuous チェックボックスがデフォルトでは選択されており(上図左)、Step-by-Step測定関連の入力やボタンが無効になっている。

Step-by-Step測定のデータを処理する場合は、StepByStep チェックボックスをクリックする(上図右)。結果として、連続回転測定のパラメータ入力ボックスが無効になると同時に、 Step By Step Methodのいくつかのボタンや入力ボックスが有効になる。

このパネル上で逐次データリダクションの情報を与えてゆく。

データリダクション処理のために与えるパラメータは、空蟬4のヒストグラム化のファサードである、 GetDataOfMonochroEi3 関数と同等である(内部でこの関数が動作すると考えて良い)

fig04

エネルギー情報#

まず、 Energy Transfer Info の情報を入力する。入力する情報は以下の通り。

Ei

入射エネルギー

hw bin

エネルギー bin幅

hw range

エネルギー最小値と最大値

マスク情報#

次に、マスク情報を与える。 マスクファイルのテキストボックスには、 Defaultマスクファイル名 もしくは マスクファイルへのファイルパス を入力する。

  • Default の場合

    データ処理用パラメータ設定ファイル(environ_ana.xml)に記載のデフォルトのマスク情報を利用する

  • ファイル名のみ書いた場合

    以下の場所を順番に探しに行き、最初に見つけたファイルを利用する

    1. カレントディレクトリ内

    2. 空蟬コード内( /opt/mlfsoft/python-utsusemi/XXX/ana/xml )

    3. ホームディレクトリ内( ${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毎に追記してゆく方法である。

  1. 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を読み込まないことを意味する。

  2. RunListファイルの読み込み

    Add Run List ボタンを押すとファイル選択ダイアログが開くので、Step By Step測定のデータリストであるRunListファイル( MakeRunList コマンドやスクリプトで作成される)を選択する。

    読み込まれるとRunListのRunNoと解析上の角度(試料情報の U-vector 方向と並行を0度とする角度:Y軸周りの角度)が表示される。

    fig06

    また読み込んだファイルに同じRunNoが含まれていた場合、それは無視される。よって測定中や測定後の処理などでRunListファイルが色々増えることがあるが、あまり気にしなくても良い。

  3. 必要に応じ単独でRun情報を与える

    Run情報は、1 RunNoごとに下部の RunNo , Gonio , Protons 欄と Add ボタンで与えることもできる。

  4. 不要なRunNoがあった場合は、Run List上の目的のRunNoをクリックして選択し、Clear ボタンを押すことで Run List から削除できる。複数の選択も可能である。何も選択されていない状態では、全て消去される。

  5. Gonio at Zero 値を入力

    Gonio at Zero 入力ボックスに、 U-vector 方向と並行が0となる時の ゴニオの値を入力し、 Calc ボタンを押す。するとその角度に応じてリストの角度情報が変化する。

    fig07

  6. 設定のメインパネルへの反映

    その後、 Set Parameters ボタンを押して以上の設定を反映させる。このボタンを押すと、メインウィンドウの最上部( Setting ボタンの右側)に、この設定の概要が表示され、 Data Reduction枠の Execute ボタンが有効になる。

    fig08

連続回転測定の場合#

連続回転測定( Measurement Method 枠内の Continuous チェックボックスがオンとなっている)の場合、以下の項目が入力可能となっている。

fig19

タイトル

パラメータ

意味

補足

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)

エンコーダ利用デバイス名

エンコーダ値と角度を変換するために必要な情報である。

BL01-TL, BL14-TLのみ登録。

(Value)

変換定数

登録のないデバイスを使用する際に変換定数を直接指定する。

TrigNET info

DaqID, modNo

TrigNETデータのDAQ ID とmodule No

TrigNETのデータとして割り当てられているDAQ IDとmoduleNo (現時点では未使用)

KickerIO

角度データの入力ポート

通常はデフォルト(DIO1)で良い

最後に Reduction Setting ボタンを押すと上記の情報が設定される。この時、実際にデータリダクションを行うのに必要なメモリ量の概算がダイアログで示される。大体数10GB〜100GB程度である。

fig20

このダイアログで OK ボタンを押すと上記の設定がメインパネルへ反映される。結果として、メインパネルの Experiment 枠の右側に簡単な情報が表示される。

データリダクションの実行#

Execute ボタンを押すことで、データリダクション作業(RAWデータを読み込んで各角度での処理)が行われる。この時、Execute ボタンが赤くなり、同時に時間がかかる旨の確認ダイアログが開く。

fig21 fig22

データリダクションが終了すると、 Execute ボタンの色が元に戻り、Projectionの Project ボタンが有効になる。

Step-by-Step の処理の場合、サブウィンドウ上のRunListの行頭にあるマーカーが処理の状態に応じて変化する。処理前は○、処理中は黄色、処理後は緑となるので進展がわかる。

fig10

射影・スライスの実行#

これ以降は、VisualContMの試料情報、射影情報と変換、スライスとプロットと同等のGUIと機能をもつため、ここでは割愛する。 VisualContMマニュアル(非弾性単結晶測定可視化) を参照のこと。

Projection ボタンを押すと射影処理が始まるが、この処理に長時間かかる場合は以下のようなプログレスバーが表示される。

fig23

また、VisualContMで作成したパラメータファイル(XtalParam.xml)を読み込んで、パラメータを呼び出すこともできる。

データ等の読み書きと変換機能#

D4Mat2では、VisualContMなどのパラメータファイル、いわゆるXtalParam.xmlの情報を再利用できると同時に、処理中(射影処理前)のデータを専用のバイナリファイルで保存可能である。また処理後のデータを D4Mat , SPE, nxspe ファイルフォーマットに変換することが可能である。それらの詳細を以下に示す。

パラメータファイル(XtalParam.xml)の読み込み・書き出し#

メインウィンドウ上には、下図のようなパラメータファイル読み書き用ボタンがある。

fig15

ここで、各種パラメータ(データリダクション用及び試料情報、射影情報など)をファイルに保存したり(Saveボタン)、保存されたパラメータの読み込み(Loadボタン)も可能である。また、partialボタンを押すと、XtalParam.xml内の任意の情報だけ読み出したり書き出したりすることが可能である。部分的な情報だけ取り込みたい場合に使用できる。

読み込み可能なファイルは以下の2種類である。

VisualContMで保存された XtalParam.xml

試料情報、射影情報、スライス情報を含む。このファイルを読み込むと、D4MatSlicer2上の各種情報が上書きされる。

D4MatSlicer2で保存されたファイル

XtalParam.xmlの情報に加えてデータリダクションの情報(EiやRunListなど)を含む。このファイルを読み込むと、試料関連の各種情報が上書きされると同時に、データリダクション用の情報も読み込むことができる。すでにデータリダクション情報やRunListが入力済みの場合は、下図のようなダイアログが出てくるので、上書きするかしないかを選択できる。

Step-by-Step測定の場合、1) RunListの上書き、2)データリダクション情報の上書きの二つ、連続回転測定の場合は 2)データリダクション情報の上書きの一つのダイアログが表示される。問題がなければ OK ボタンを押す。

  1. RunListの上書き

    fig16

  2. データリダクション情報の上書き

    fig17

D4Mat2のバイナリデータ保存と読み込み#

パラメータファイルと同様に、メインウィンドウ上にD4Mat2専用バイナリデータ保存・読込ボタンもある。

fig18

データリダクション処理が終わったD4Mat2Slicerのデータは、Step-by-Step測定も連続回転測定も、ヒストグラム化及び各種補正処理が終わった各角度のデータとしてメモリ上に蓄えられている。この状態のデータ、すなわち試料情報による 射影(Projection)前 のデータは、D4Mat2専用バイナリファイルとして保存することが可能である。

特徴

  • 同時に試料情報や射影情報、スライス情報など、いわゆるXtalParamの情報もバイナリファイルに統合されて保存されるため、一つのファイルでD4Mat2の処理(射影処理直前まで)を再現することが可能

  • Step-By-Stepの場合、RunListの途中でデータ処理が終わっていた場合でも、処理の進展を記録しているので、処理の中途の再現も可能

  • 読み込み後はすぐに射影処理(Projection)を行うことが可能である

  • 書き込み・読み込み処理には数秒から数十秒程度かかるが、その間ボタンは赤くなり処理が終われば戻る

  • 保存時に圧縮をかけてバイナリファイルのサイズを小さくすることも可能(Compチェックボックス使用)である

    • この圧縮はファイル内部におけるデータの圧縮処理であり、いわゆるzipやtar.gzなどのファイルの圧縮とは異なる

    • 圧縮によりデータサイズはおおよそ数分の一から数十分の一の大きさになるが、保存や読み込み処理に数倍の時間がかかる

    • 読み込み時は圧縮・非圧縮を自動的に判別し処理される

データ変換機能#

D4Mat2は、下記のフォーマットに変換可能である。

  • D4Mat

  • SPE (.phx, .par)

  • nxspe

D4Matへ変換する場合の手順#

  1. 各軸のStepを定義するため、全てのPlot Axisを X-Axis, Y-Axis, Z-Axisのどれかにし

  2. Stepを必要なら変更し

  3. ドロップダウンメニューから変換したいフォーマットを選択し

  4. [Save]ボタンを押すとファイル保存ダイアログが出るのでファイル名を指定する

    fig13

SPEやnxspeへ変換する場合#

射影処理が終わっていれば特に設定は必要とはしないので、ドロップダウンメニューから、 SPE もしくは nxspe を選択して、Save ボタンを押す。

すると保存先のフォルダを指定するダイアログが開くのでフォルダを選択(Openボタン)すると、書き出し処理が始まる。

この時時間がかかるので、プログレスバーが表示される。

fig24 fig25

Appendix#

A.データリダクションスクリプト#

データリダクション処理(RAWデータからヒストグラム化し、補正などを行う過程)において、デフォルトでは

Cmm.GetDataOfMonochroEi3

が使用される。しかし、より詳細にデータリダクション処理を制御するために、ユーザーが作成したスクリプトを使用することも可能となっている。

fig05

スクリプトを使用する場合、チェックボックスで 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 ボタンを押して、使用するスクリプトファイルを指定する。