.. _D4MatSlicer2: ============================================================================= D4matSlicer2マニュアル(多次元系単結晶試料非弾性散乱測定の可視化) ============================================================================= :更新日: 2019.12.20 :著者: 稲村泰弘 .. contents:: 目次 :depth: 2 概要 ====== 多次元系単結晶試料に対する非弾性散乱測定において、広い運動量空間をカバーするためには、試料に対する入射中性子の方位の異なる測定を複数回行い一つの運動量エネルギー空間にあるものとみなしてデータを扱う必要がある。 その測定手法としては、以下のように2種類がある。 Step By Step手法 試料への入射中性子の方位の異なる複数の測定データを一つに融合(マージ)し可視化する 連続回転手法 試料への入射中性子の方位を連続的に変化させつつ測定を行う。 これまでStep By Step手法のデータは、D4matSlicerを用いることで処理できたが、連続回転測定には対応できていなかった。 そこで、D4matSlicer2を作成した。以下のような利点をもつ。 - Step By Step測定のRAWデータからの処理が可能(.vbinファイルは不要) - 連続回転測定のRAWデータの処理が可能 - 連続回転測定においてRAWデータの差分処理(逐次処理)が可能 - Projection処理を簡単にやり直すことができる - スライスの処理が高速 - D4matSlicer用のデータへの出力が可能 一方で以下のような欠点を持つ。 - 測定データの全てをメモリ上に展開するため、膨大なメモリを消費する(30〜60GB) よって、具体的な使用方法としては 1. 測定装置に設置された解析PC上で、D4MatSlicer2で高速にProjection処理や可視化を行い、 2. データをユーザー環境に持ち帰る場合にはD4matSlicer用データに出力して持ち帰る。 という流れを想定している。 なお、このソフトウェアの大部分の機能は、Pythonのコマンドラインから実行可能である。詳細は :ref:`D4MatSlicer2用コマンド` を参照のこと。 実行手順 ============================== ----- 起動 ----- D4matSlicer2を起動する。 .. code-block:: shell $ D4mat2 |fig01| ------------------------ 測定情報やデータの入力 ------------------------ 次に、測定情報(入射エネルギー、Run No、回転角度など)をサブウィンドウ(Data Reduction Info)にて入力する。 起動直後のメイン画面で、最上部にある **Setting** ボタンを押してサブウィンドウ(Data Reduction Info)を開く。 |fig02| この画面では、 連続回転測定とStep-by-Step測定の両方に対応しているが、**Measurement Method** 枠内のチェックボックスで測定を選択する。 **Continuous** チェックボックスがデフォルトでは選択されており、Step-by-Step測定関連の入力やボタンが無効になっている。 Step-by-Step測定のデータを処理する場合は、**StepByStep** チェックボックスをクリックする。結果として、連続回転測定のパラメータ入力ボックスが無効になると同時に、 Step By Step Methodのいくつかのボタンや入力ボックスが有効になる。 |fig03| 続けてデータリダクションの情報を与えてゆく。 |fig04| エネルギー情報 ----------------- まず、 **Energy Transfer Info** の情報を入力する。入力する情報は以下の通り。 +------+----------------+ |Ei |入射エネルギー | +------+----------------+ |hw bin|エネルギー bin幅| +------+----------------+ |hw min|エネルギー最小値| +------+----------------+ |hw max|エネルギー最大値| +------+----------------+ マスク情報 ------------ 次に、マスク情報を与える。 マスクファイルのテキストボックスには、 *マスクファイル名* もしくは *マスクファイルへのファイルパス* を入力する。 ファイル名のみ書いた場合 以下の場所を順番に探しに行き、最初に見つけたファイルを利用する。 1. カレントディレクトリ内 2. 空蟬コード内( /opt/mlfsoft/python-utsusemi/XXX/ana/xml ) 3. ホームディレクトリ内( ${HOME}/ana/xml ) ファイルパスを指定した場合 そのファイルを探しにゆく。入力ミスをなくすために *Select* ボタンを利用すること データリダクションスクリプト ----------------------------- データリダクション処理(RAWデータからヒストグラム化し、補正などを行う過程)において、デフォルトでは **Cmm.GetDataOfMonochroEi2** が使用される。しかし、より詳細にデータリダクション処理を制御するために、ユーザーが作成したスクリプトを使用することも可能となっている。 |fig05| スクリプトを使用する場合、チェックボックスで **Use Script** を選択する。 データリダクション用スクリプトの作成 **Template** ボタンを押して保存されるテンプレートスクリプトファイルに記述されている "DataReduction" 関数内を加工して作成する。 スクリプト内では自由に関数などを定義・使用して良いが、 **DataReduction** 関数名のみは、内部から呼び出されるため予約されているので注意すること。 テンプレートスクリプト DataReduction関数がRunNo毎に呼び出され、戻り値がストックされる。 .. code-block:: python #!/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* 以下のところに必要なデータリダクションの関数を記述する。 +-----------------------------------+ |DataReduction関数内で使用できる引数| +==========+========================+ |runNo |Run Number | +----------+------------------------+ |Ei |入射エネルギー | +----------+------------------------+ |hw_min |エネルギー範囲の最小値 | +----------+------------------------+ |hw_max |エネルギー範囲の最大値 | +----------+------------------------+ |hw_bin |エネルギーのビン幅 | +----------+------------------------+ |normFactor|規格化用値 | +----------+------------------------+ |maskFile. |マスクファイル名 or パス| +----------+------------------------+ スクリプトの指定 **Select** ボタンを押して、使用するスクリプトファイルを指定する。 Step-by-Step測定の場合 ------------------------- 続けて、Run情報(RunNo, ゴニオの角度など)を与える。 D4MatSlicer2では、2種類の与え方が可能である。一つはRunListファイルを与える方法である。 **Add Run List** ボタンを押すとファイル選択ダイアログが開くので、Step By Step測定のデータリストであるRunListファイル( *MakeRunList* コマンドやスクリプトで作成される)を選択する。 RunListファイルについて このファイルは、 RunNo, 測定開始日, 測定開始時刻, 測定終了日, 測定終了時刻, プロトン数, 温度(sencer A), 温度(sencer B), 試料角度 のリストであり、下記のようなTEXTフォーマットである。 例:run_list.txt .. code-block:: bash run# start end protons T_A T_B gonio 9845 2014/12/17 17:38:05 2014/12/17 17:45:16 196632 300.00 1.00 191.3960 9846 2014/12/17 17:45:30 2014/12/17 17:51:46 195911 300.00 1.00 191.8960 9847 2014/12/17 17:52:01 2014/12/17 17:58:17 196044 300.00 1.00 192.3960 9848 2014/12/17 17:58:32 2014/12/17 18:04:49 196402 300.00 1.00 192.8960 9849 2014/12/17 18:05:03 2014/12/17 18:11:19 195273 300.00 1.00 193.3960 9850 2014/12/17 18:11:34 2014/12/17 18:17:51 196351 300.00 1.00 193.8960 9851 2014/12/17 18:18:05 2014/12/17 18:24:22 196522 300.00 1.00 194.3960 9852 2014/12/17 18:24:37 2014/12/17 18:30:53 196038 300.00 1.00 194.8960 .....(後略) 読み込まれるとRunListのRunNoと解析上の角度(試料情報の *U-vector* 方向と並行を0度とする角度:Y軸周りの角度)が表示される。 |fig06| Run情報は、1 RunNoごとに下部の *RunNo* , *Gonio* , *Protons* 欄と **Add** ボタンで与えることもできる。 **Gonio at Zero** 入力ボックスに、 *U-vector* 方向と並行が0となる時の ゴニオの値を入力し、 **Calc** ボタンを押す。するとその角度に応じてリストの角度情報が変化する。 |fig07| その後、 **Reduction Setting** ボタンを押して以上の設定を反映させる。このボタンを押すと、メインウィンドウの最上部( **Setting** ボタンの右側)に、この設定の概要が表示され、 Data Reduction枠の **Execute** ボタンが有効になる。 |fig08| 連続回転測定の場合 ------------------------- 以下の項目を入力する。 +---------------+---------+------------------------+---------------------------------------------------------+ |Run Number |RunNo |Run Number | | +---------------+---------+------------------------+---------------------------------------------------------+ |Ocillation Info|Start Deg|回転開始角度(Begin時) |なお、0度はメインパネルの **Sample Information** で | | +---------+------------------------+ | | |End Deg |折り返し角度 |与えられる方位である( **Rotattion** 含む)。 | | +---------+------------------------+ | | |Step Deg |データ処理時の角度分割幅| | +---------------+---------+------------------------+---------------------------------------------------------+ |Time Slice |Start Sec|時間分割の先頭 |測定開始時を0秒とした単位で利用したい時間領域を指定する。| | +---------+------------------------+ | | |End Sec |時間分割の最後 |デフォルトである両方-1の場合、全ての時間領域を使用する。 | +---------------+---------+------------------------+---------------------------------------------------------+ 最後に **Reduction Setting** ボタンを押すと上記の情報が設定される。この時メインパネルの **Experiment** 枠の右側に簡単な情報が表示される。 ------------------------------------------ データリダクション・射影・スライスの実行 ------------------------------------------ **Execute** ボタンを押すことで、データリダクション作業(RAWデータを読み込んで各角度での処理)が行われる。データリダクションが終了すると、 Projectionの **Project** ボタンが有効になる。 これ以降は、VisualContMの試料情報、射影情報と変換、スライスとプロットと同等のGUIと機能をもつため、ここでは割愛する。 :doc:`VisualContM` を参照のこと。 なお、VisualContMで作成したパラメータファイル(XtalParam.xml)を読み込んで、パラメータを呼び出すこともできる。 ----------------------------------------------- パラメータファイル(XtalParam.xml)の読み込み ----------------------------------------------- メイン及びサブウィンドウ上には、下図のようなパラメータファイル読み書き用ボタンがある。 |fig09| ここで、各種パラメータ(データリダクション用及び試料情報、射影情報など)をファイルに保存したり、保存されたパラメータの読み込みも可能である。 読み込み可能なファイルは以下の2種類である。 D4MatSlicerで保存された XtalParam.xml 試料情報、射影情報、スライス情報を含む。このファイルを読み込むと、D4MatSlicer2上の各種情報が上書きされる。 D4MatSlicer2で保存されたファイル XtalParam.xmlの情報に加えてデータリダクションの情報(EiやRunListなど)を含む。このファイルを読み込むと、試料関連の各種情報が上書きされると同時に、データリダクション用の情報も読み込むことができる。すでにデータリダクション情報が入力済みの場合は、下図のようなダイアログが出てくるので、上書きするかしないかを選択できる。 |fig10| .. |fig01| image:: media/D4MatSlicer2_fig01.png :width: 300px .. |fig02| image:: media/D4MatSlicer2_fig02.png :width: 200px .. |fig03| image:: media/D4MatSlicer2_fig03.png :width: 200px .. |fig04| image:: media/D4MatSlicer2_fig04.png :width: 200px .. |fig05| image:: media/D4MatSlicer2_fig05.png :width: 200px .. |fig06| image:: media/D4MatSlicer2_fig06.png :width: 200px .. |fig07| image:: media/D4MatSlicer2_fig07.png :width: 200px .. |fig08| image:: media/D4MatSlicer2_fig08.png :width: 200px .. |fig09| image:: media/D4MatSlicer2_fig09.png :width: 100px .. |fig10| image:: media/D4MatSlicer2_fig10.png :width: 200px .. |fig11| image:: media/D4MatSlicer2_fig11.png :width: 200px