多次元系単結晶試料非弾性散乱測定(回転測定)のデータ処理(Step-by-Step法)#

更新日:

2018.06.29

著者:

稲村泰弘

はじめに#

概要#

本稿では、空蟬環境における高次元試料測定のデータ可視化を行うための手順のうち、入射ビームに対する試料の方位を Step-by-Step で変更して測定、変更して測定、というスキャン測定を行なったデータに対する処理手順を示す。 空蟬環境の構築や、基本的な使用方法については特に記述しないので、別書を参照していただきたい。

特にイベントデータからのヒストグラム化や各種補正を行うデータリダクション作業ができる、もしくは作業が終わっていることを前提に記述されているので、注意すること。

可視化への主な流れ#

多次元系試料の測定後、多数の試料方位の測定データ(Run)が存在しているはずである。それらのデータを一つにまとめ、可視化するための作業の流れを以下に示す。

  1. 空蟬のコマンドやスクリプトを利用し、データリダクション(EventDataからQ-wデータまで)をRunごとに行い、それぞれデータをD4Mat変換用ファイル(vbinファイル)として保存する。

  2. D4matSlicer を使用し、Runごとのvibinファイルを一つのデータへまとめる(D4matrixデータ)。データの追加も可能。このデータに対しスライス(2D可視化)を行う。

なお、2. については本章に続き「D4matSlicerマニュアル」を参照のこと。

手順#

1. 各Runデータのvbinファイル出力#

Sequencer上でデータリダクション(EventDataからQ-wデータまで)をRunごとに行い、可視化ソフト(VisualContM)を通じ、それぞれのデータを4次元空間可視化用データへ統合するためのD4Mat変換用ファイル(vbinファイル)を作成する。

概要#

それぞれのvbinファイルの作成作業は、 SequenceEditor に登録してあるコマンドを利用しビームラインに備えられたPythonのスクリプトを走らせることで、ほぼ自動化されている。ただし VisualContM のスライス用条件ファイル(XtalParam.xml)を利用するので、この処理を行う前に一度は VisualContM で可視化して条件が正しいか確認しておく必要がある。スクリプト例はAppendix.Aを参照のこと

手順#

(1) 作業用ディレクトリを作成し、移動する#

例:作業用ディレクトリとして、RUN1234を作成する。

$ mkdir RUN1234
$ cd RUN1234
(2) パラメータファイル#

結晶構造情報と向きを指定してあるパラメータファイル(XtalParam.xml)を準備する。

このパラメータファイルは、VisualContMのParamSaveボタンで作成される試料やスライスの情報を含んだ条件ファイルである。適当な名前(ここではXtalParam.xml)で作業用ディレクトリへ保存する。

(3) RunListファイルの確認#

空蟬のSequenceEditorのDR.MakeRunListを実行した結果のファイルを確認する このファイルは、

RunNo, 測定開始日, 測定開始時刻, 測定終了日, 測定終了時刻, プロトン数, 温度(sencer A), 温度(sencer B), 試料角度

のリストであり、下記のようなTEXTフォーマットである。

以降は、RunListファイルと呼ぶ。

RunListファイル例:run_list.txt

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
.....(後略)
(4) D4Mat変換作業用フォルダ作成#

D4Mat変換用ファイル(vbinファイル)を保存するための作業用フォルダを作成する

例:dataという名前のディレクトリを作成する。

$ mkdir data
(5) スクリプトの作成#

Appendix.Aに記載されているスクリプトを作成、もしくはコピーし作業用ディレクトリへ保存する。

(6) スクリプトのパラメータを変更#

例:変更するパラメータ

 1#####################
 2# modify here
 3####################
 4Ei=50.048
 5delta_hw = 0.2
 6hw_min = -25.0
 7hw_max = 45.1
 8maskfile = "mask.txt"
 9normFactor = 1000000.0
10XtalParam = "XtalParam.xml"
11savePathDir = "./data"
12gonioValueAtZero =-22.440
13#########################
Parameters of Extract.py#

パラメータ

意味

Ei

入射エネルギー[meV]

delta_hw

Δhω

hw_min

hωの最小値

hw_max

hωの最大値

maskfile

マスクファイル名

normFactor

ノーマライズファクター

XtalParam

(5)で準備した、結晶構造情報と向きを指定してあるパラメータファイル

savePathDir

(3)で準備したvbinファイル保存先。ここでは作業フォルダ内の”data”フォルダ

gonioValueAtZero

U-vectorの方向、すなわち0度の時のGonio (Run Listに書かれている)値

基本的にはAppendix Aに示したような解析コマンドに与えるパラメータであるが、以下に幾つかのパラメータの注意点を述べる。

savePathDir

出力データの保存先で、(3)で作成したディレクトリを指している必要がある。

gonioValueAtZero

スクリプト実行時には(2)で作成したRunListファイルを用いるが、このファイルに書かれている角度はゴニオの制御に用いる値であり、解析に用いる角度(U-vectorの方向を0度とした角度)ではない。よってスクリプトではRunListファイルに書かれているコニオ制御値からこの値を用いて、解析に用いる角度に変換している。

(7) スクリプト実行#
先の(3)で作成したリストファイルを引数にして、スクリプトを実行する。

例:Extract.pyと言う名前で、作業用ディレクトリに置いてある。

$ ./Extract.py run_list.txt
もしくは
$ python Extract.py run_list.txt

実行結果のファイルは、作業用ディレクトリの下の(6)の”savePathDir” に設定したフォルダ(例ではdata)に保存される。

imagec1



2. vbinファイルの統合とスライス#

D4MatSlicerという可視化ソフトを用いて、前章で作成した各RunのD4Mat変換用ファイル(vbinファイル)を一つのD4matデータへ統合する。その大まかな流れは、

  • D4MatSlicer上で新しい4次元マトリックス(以降D4Matrixデータ)を作成

  • そこへ先の出力データファイルを統合する

というものである。

以降の処理については引き続き、以下のマニュアルを参照していただきたい。

Appendix#

A. VisualContM出力ファイル作成スクリプト(複数データ用)#

複数のイベントデータのデータリダクションとVisualContMデータファイル作成を連続して行い、ファイルを書き出すスクリプトである。この使用方法は本文を参照すること。

Extract_template.py#
 1#! /usr/bin/env python
 2import os
 3import sys
 4import DR
 5import Cmm
 6
 7#####################
 8# modify here
 9####################
10Ei=50.048
11delta_hw = 0.2
12hw_min = -25.0
13hw_max = 45.1
14maskfile = "mask.txt"
15normFactor = 1000000.0
16XtalParam = "XtalParam.xml"
17savePathDir = "./data"
18gonioValueAtZero =-22.440
19#########################
20
21argv = sys.argv
22print "len(argv)=",len(argv)
23
24listFileName=""
25if len(argv)==2:
26    if os.path.exists(argv[1]):
27        listFileName=argv[1]
28        print "AngleList=",listFileName
29else:
30    print "Usage::"
31    print "  ./Extract_runlist.py [filename of runlist]"
32    sys.exit(0)
33
34if not os.path.exists(savePathDir):
35    print " savePathDir = ",savePathDir," is not found. Making new "
36    com = "mkdir -p "+savePathDir
37    ret = os.system(com)
38    if ret!=0:
39        raise UserWarning,"Cannot make new folder(" + savePathDir +")"
40
41conds = []
42
43if listFileName!="":
44    fo = open( listFileName,"r" )
45    ss=fo.readline()
46    while(True):
47        ss=fo.readline()
48        if ss=="":
49            break
50        if ss[0]=="#":
51            print "Skip::",ss
52            continue
53        ss_s = ss.split()
54        if len(ss_s)==9:
55            runNo = int(ss_s[0])
56            if normFactor==0.0:
57                norm = 0.0
58            else:
59                norm = float(ss_s[5])/normFactor*(-1.0)
60            angle = float(ss_s[8])-gonioValueAtZero
61            conds.append( (runNo,angle,norm ) )
62    fo.close()
63
64#print conds
65
66
67for (ScanNo,PhiValue,Norm) in conds:
68    #Cmm.CopyData(ScanNo)
69    print  "==============[ %06d,%8.3f,%10.5f ]" % (ScanNo,PhiValue,Norm)
70    savePath = os.path.join( savePathDir, ("S%06d.vbin"%(ScanNo)) )
71    DAT = DR.GetDataOfMonochroEi2(ScanNo, Ei, delta_hw, hw_min, hw_max, maskfile, Norm)
72    Cmm.VisContMOutputFileByPhi(DAT, XtalParam, PhiValue, savePath)
73    del DAT

B. VisualContM出力ファイル作成スクリプト(シングルデータ用)#

例1#

イベントデータからのデータリダクションを行い、VisualContMデータファイルを作成する

イベントデータからVisualContMデータファイルを作成#
1import DR
2import Cmm
3DAT = DR.GetDataOfMonochroEi2( runNo=1025, Ei=45.56, deltaE=0.2, Emin=-5.0, /
4                    Emax=44.0, MaskFile="mask.txt", NormFactor=1000000.0 )
5Cmm.VisContMOutputFileByPhi( dat=DAT,  param_file="/home/hoge/param.xml", /
6                    phi=5.5, output_file="/home/hoge/dat_1025.vbin", isText=False )

1行目と2行目はおまじない。3行目はRunNumberが1025、入射エネルギーが45.56 meV、Energy Transfer軸のビン幅が0.2 meV、最小値が-5.0meV、最大値44.0meVの条件でデータリダクションすることを意味する。4行目は、VisualContM条件ファイルが/home/hoge/param.xmlであり、試料の回転角度が5.5 degree、書き出しファイル名が/home/hoge/dat_1025.vbin、そしてファイルはバイナリであるという条件でファイルを書き出すコマンドである。(メモリ削減バージョンはVisContMOutputFileByPhi)

例2#

データリダクションされてセーブされたデータ(dmpファイル)を読み込み、VisualContMデータファイルを作成する

dmpファイルからVisualContMデータファイルを作成#
1import Cmm
2DAT = Cmm.LoadDataFromDump( path="/home/hoge", filename="dat_1025.dmp" )
3Cmm.VisContMOutputFileByPhi( dat=DAT,  param_file="/home/hoge/param.xml", /
4            phi=5.5, output_file="/home/hoge/dat_1025.vbin" ,isText=False )

1行目はおまじない。2行目はdmpファイル/home/hoge/dat_1025.dmpからデータを読み込むコマンド。3行目はVisualContM条件ファイルが/home/hoge/param.xmlであり、試料の回転角度が5.5 degree、書き出しファイル名が/home/hoge/dat_1025.vbin、そしてファイルはバイナリであるという条件でファイルを書き出すコマンドである。 (メモリ削減バージョンはVisContMOutputFileByPhi)

C. D4Mat変換用ファイル(vbinファイル)作成をSequenceEditor上で行う方法#

  1. Sequencer上でデータリダクション処理を行い、VisualContMでデータを表示できる状態にする。

    データ自体は、以下のような形で読み込んでおく 1) Rawデータからデータリダクション(Sequencer上でDR.GetDataOfMonochroEi2などのコマンド使用) 2) 既に処理済みで保存してあるデータの読み込み(Sequencer上でCmm.LoadDataFromDumpなどのコマンド使用)。

  2. VisualContMをi.のデータで起動する。

  3. VisualContMで試料情報(Lattice parameterなど)を入力し、Projectionボタンを押し、通常のスライスができる状態にする。

  4. VisualContMでのスライス用の各軸情報(X-Axis, Y-Axis, Thickness)において、全部の軸でX-AxisかY-Axisのどちらかにする。

  5. ファイルに保存したいスライス範囲とステップを指定する。スライス範囲は通常AutoFillボタンを押して各軸の最大値、最小値が入っていればよいだろう。ただし、ステップはすべてのRunで共通のものを指定しておく必要がある。

  6. その状態で、BINボタンを押す。ファイルセーブ用ダイアログが開くので、ファイル名を決め、適当なフォルダにセーブしておく。ここでファイル名の拡張子は必ず「.vbin」とする。以降、このデータファイルをVisualContM出力データファイルと呼ぶ。

  7. 様々な条件の出力を行ううち、最終的に落とし込みたい4次元マトリックスの領域(各軸の範囲とステップ)が決まると思われる。その範囲をスライス条件として、VisualContMのParamSaveボタンで条件を保存しておく。この条件ファイルはデータを一つにまとめるマトリックスを作成する際に利用できる。

  8. いちいちVisualContMを起動するのは面倒である場合、ii. からvi. までの処理を行うSequencer上のコマンドが利用できる。ただし、vii.で作成するスライス条件ファイルが必要であるので、先に一度はVisualContMを起動し、条件を決定した後、ParamSaveする必要がある。

使用コマンド:Cmm.VisContMOutputFileByPhi

Parameters of VisContMOutputFileByPhi#

パラメータ

内容

dat

リダクション済みのデータ(ElementContainerMatrix)

param_file

VisualContMのParamSaveボタンで作成される試料やスライスの情報を含んだ条件ファイル

phi

試料の回転角度

output_file

出力用ファイル名。拡張子は.txtか.vbinでなければならない。もしファイル名の拡張子が.txtなら、 テキストファイルとして、.vbinならバイナリファイルとして出力される。テキストファイルなら 可読性が上がるし,バイナリファイルならファイルサイズが小さく、かつD4MatSlicerへの読み込みが 多少速くなる。

hasMuchMem

処理に十分なメモリが割り振れるかどうか。