空蟬基本Python関数リファレンス(非弾性)#

最終更新日

2022.03.18

概要#

空蟬基本Python関数とは、空蟬で実装されているデータ処理(イベントデータのヒストグラム化、データコンテナの扱い、共通の補正など)を行うためにPythonで作成された関数群を呼ぶ。一般に各装置で使用される関数、特にSequenceEditorで表示されるファサード関数は、この基本関数からの抜粋したもの、もしくは基本関数を組み合わせたり利用して作成したものとなる。

また、独自のファサード関数を作ったり、スクリプトを自作する場合にも参照できる。

基本関数の使い方#

本節で示す関数は基本関数として用意されているものであり、実際にユーザーが直接利用することはないと思われる。しかし新しくファサード関数を作る際にこれらの関数を利用することもあるので、空蟬環境において直接実行する方法を示しておく。

>>> import utsusemi.ana.Reduction.BaseCommands as BC
>>> ec = BC.AverageAll( dat )
など

非弾性散乱装置の場合、いくつか専用の基本関数も存在する。この場合は下記のような導入となる。

>>> import utsusemi.ana.Reduction.BaseCommandsInEla as BC

また、基本関数のうち、それぞれの装置で使用頻度の高いものは、あらかじめファサード Cmm モジュールにも登録されているので、それを使うことも可能である。

>>> import Cmm
>>> ec = Cmm.GetNeunetHist( \373", "hw,45.56,-4.0,40.0,0.2" )
など。

基本関数一覧#

共通的なコマンドに関しては、ユーザーズマニュアルを参照のこと。

非弾性散乱用処理#

関数

説明

BoseFactCorrEC

ボーズ因子の補正をElementContainerに対し行う

BoseFactorCorrection

ボーズ因子の補正を行う

FlexCalc

エネルギー遷移変換後のデータに対し、与えた自由な式で強度の補正を行う

GetEi

与えたElementContainerMatrixデータの指定したPixelをビームモニターと見なし 入射エネルギーを計算する

GetEiFromEvent

指定したPixelをビームモニターと見なしイベントデータから最小限のヒストグラム化を行い、 入射エネルギーを計算する

KiKfCorrection

ki/kf補正を行う

ToPowder

ElementContainerMatrixデータのPowder平均をとる

SavePowderDataToText

Power平均を行ったデータをテキストファイルに書き出す

VisContMOutputFigure

VisualContM上でのスライスを行い画像を保存する

VisContMOutputFileByPhi

VisualContM上でのスライスを行い、D4Matrix用のバイナリファイルを作成する

RadialCollimatorCorrect

RadialCollimatorによるバックグランドを補正する

GetOrigPixelFromQXtalParam

与えた結晶情報などを利用し、逆格子空間座標(Q,hw)から検出器Pixelを計算する

GetOrigPixelFromQString

CalcYRotAngleFromQXtalParam

与えた結晶情報などを利用し、逆格子空間座標(Q,hw)を観測するために必要な回転角度と 観測されるPixelを計算する

CalcYRotAngleFromQString

DymPDF

動的対相関関数による処理を行う

TofToEnergyTransfer

TOFのヒストグラムをエネルギー遷移のデータへ変換する

TofToEnergyTransferStrict

TOFのヒストグラムをエネルギー遷移のデータへ変換する(明確なエネルギー範囲を指定可)

WhiteVanCorr

(未実装)White Vanadiumの補正用データでの補正

MakeWhiteVanCorr

(未実装)White Vanadiumの測定データから補正用データを作成する

装置用処理・その他#

関数

説明

AppendRawDataFiles

複数のRaw Data(イベントデータ)を結合し、別データとして保存する

CheckDataProcess

データ処理の履歴管理用関数

CopyData

装置において、DAQ PC上のRaw Dataを解析PCへ集約・コピーする

CopyIroha2Params

装置において、IROHA2 PC上のLog, Paramデータを解析PCへ集約・コピーする

MakeRunList

装置において、Run No, 測定時間、温度、ゴニオ角度などの情報をリスト化する

非弾性散乱用処理#

BoseFactCorrEC#

ボーズ因子の補正を行う。対象は一つのPixelのデータElementContainer。

BoseFactCorrEC(dat,T=300.0)

パラメータ

フォーマット

説明

dat

ElementContainer

与えるElementContainer

T

実数

ボーズ因子補正に用いる温度[K]

戻り値

無し

(与えられたElementContainerの中身が置きかわる)

BoseFactorCorrection#

ボーズ因子の補正をElementContainerMatrixに対し行う。

BoseFactorCorrection( dat,T=300.0)

パラメータ

フォーマット

説明

dat

ElementContainerMatrix

与えるElementContainerMatrix

T

実数

ボーズ因子補正に用いる温度[K]

戻り値

無し

(与えられたElementContainerMatrixの中身が置きかわる)

FlexCalc#

エネルギー遷移変換後のデータに対し、与えた自由な式で強度の補正を行う。

FlexCalc(dat,Intensity=””,Error=””)

パラメータ

フォーマット

説明

dat

ElementContainerMatrix

与えるElementContainerMatrix

Intensity

文字列

強度を補正する式。フォーマットは下記。

Error

文字列

エラーを補正する式。フォーマットは下記。

戻り値

ElementContainerMatrix

補正を終えたElementContainerMatrix。

補正式の書き方

補正式に用いることのできる記号は以下の通り

パラメータ

説明

I

強度

Err

エラー値

hw

エネルギー遷移

Q

与えられたElementContainerMatrixがPowderの時

Qx, Qy, Qz

与えられたElementContainerMatrixが単結晶の時

これらを使って、Pythonで扱うことのできる形で式を記述する。例えば下記のように表現する。

I/hw*Q*Q

GetEi#

与えたElementContainerMatrixデータの指定したPixelをビームモニターと見なし入射エネルギーを計算する。

GetEi(dat, expEi=50.0, MonPsd=0,MonPixel=0, L1=Def_L1, T0shift=0.0, FittingType=0, Debug=0)

パラメータ

フォーマット

説明

dat

ElementContainerMatrix

与えるElementContainerMatrix

expEi

実数

予期する入射エネルギー[meV]。

MonPsd

整数

ビームモニターとみなす検出器Id。

MonPixel

整数

ビームモニターとみなす検出器部位の番号。

L1

実数

L1 [m] :線源と試料との間の距離.

T0Shift

実数

TOFの原点のオフセット値 [micro-sec]。

FittingType

整数

フィッティング関数の種類。0:Gaussian (今はこれだけ)

Debug

整数

デバッグモードオフ:0、オン:1。

戻り値

無し

GetEiFromEvent#

指定したPixelをビームモニターと見なしイベントデータから最小限のヒストグラム化を行い、入射エネルギーを計算する。

GetEiFromEvent(runNo=0, expEi=”0.0”, PSD=”-1”, PIXEL=”-1”,NumOfPixel=100, Resolution=0.5,PlotFlag=0)

パラメータ

フォーマット

説明

runNo

整数

ヒストグラム化するRunNo。

expEi

文字列

予期する入射エネルギー[meV]。複数同時指定可能(カンマ区切り)。

MonPsd

文字列

ビームモニターとみなす検出器Id。

MonPixel

文字列

ビームモニターとみなす検出器部位の番号。

NumOfPixel

整数

1検出器あたりのPixel数。

Resolution

実数

横軸のBinningの幅の割合 [%]。Resulusion*Ei/100.0 = binning of TOF

PlotFlag

整数

フィッティング結果をMPlotに出すかどうか:しない(0)、する(1)

戻り値

無し

KiKfCorrection#

ki/kf補正を行う。

KiKfCorrection(dat)

パラメータ

フォーマット

説明

dat

ElementContainerMatrix

与えるElementContainerMatrix

戻り値

無し

(与えられたElementContainerの中身が置きかわる)

ToPowder#

非弾性散乱ElementContainerMatrixデータのPowder平均をとる。Qの範囲とbin幅はElastic軸(Energy Transfer = 0.0)上のものを指定する。戻り値のデータは、QのbinごとにElementContainerに保存され、それらを一つのElementContainerArrayに入れ、ElementContainerMatrixに入れている。

ToPowder(dat,startQ=-1.0,endQ=-1.0,deltaQ=0.0)

パラメータ

フォーマット

説明

dat

ElementContainerMatrix

与えるElementContainerMatrix

startQ

実数

Q軸の範囲の最小値。 -1.0 はデータにおける最小値を利用。

endQ

実数

Q軸の範囲の最大値。 -1.0 はデータにおける最大値を利用。

deltaQ

実数

Q軸のbin幅。

戻り値

ElementContainerMatrix

ElementContainerArrayが一つ入っている。

SavePowderDataToText#

与えたElementContainerMatrixデータをテキストファイルに書き出す。

SavePowderDataToText(dat,deltaQ=0.0, path=”./”,filename=”Sample.txt”)

パラメータ

フォーマット

説明

dat

ElementContainerMatrix

与えるElementContainerMatrix

deltaQ

実数

Q軸のbin幅。

path

文字列

データファイルを入れるフォルダ名(デフォルトの ./ はカレントディレクトリ)

filename

文字列

データファイル名。

戻り値

無し

VisContMOutputFigure#

VisualContM上でのスライスを行い画像を保存する。

VisContMOutputFigure(dat, param_file=”param.xml”,output_file=”./”,zmin=-1.0,zmax=-1.0)

パラメータ

フォーマット

説明

dat

ElementContainerMatrix

与えるElementContainerMatrix

param_file

文字列

パラメータファイル(XtalParams.xml)のパス(VisualContMで保存されたファイル)

output_file

文字列

出力画像ファイルのバス。

Zmin

実数

強度(z)軸の最小値。

Zmax

実数

強度(z)軸の最大値。

戻り値

無し

VisContMOutputFileByPhi#

VisualContM上でのスライスを行い、D4Matrix用のバイナリファイルを作成する。

VisContMOutputFileByPhi(dat, param_file=”param.xml”,phi=0.0,output_file=”./”)

パラメータ

フォーマット

説明

dat

ElementContainerMatrix

与えるElementContainerMatrix

param_file

文字列

パラメータファイル(XtalParams.xml)のパス(VisualContMで保存されたファイル)

phi

実数

UベクトルとVベクトルの平面上での回転 [degree]

output_file

文字列

出力バイナリファイルのバス。

戻り値

無し

RadialCollimatorCorrect#

ラジアルコリメータにより発生するバックグランドを補正する。

RadialCollimatorCorrect(dat=DAT,vdat=DAT,integRange=”All”,pixelRange=”All”)

パラメータ

フォーマット

説明

dat

ElementContainerMatrix

補正したいデータ

vdat

ElementContainerMatrix

バックグランド補正用データ(Vanadium data)

integRange

文字列

Vanadium Dataの各Pixelの強度の積分領域の横軸を “All”か”<start>:<end>”で指定する

pixelRange

文字列

Vanadium Dataの強度の積分をどのPixelの領域で行うかを “All”か”<start>:<end>”で指定する

戻り値

無し

GetOrigPixelFromQXtalParam#

XtalParamファイルによって与えた結晶情報などを利用し、逆格子空間座標(Q,hw)から検出器Pixelを計算する。

GetOrigPixelFromQXtalParam( XtalParam="XtalParam.xml", Q="1.0,1.0,1.0", Ei=45.56,
                            hw=0.0, runNo=999999, pixNum=100 )

パラメータ

フォーマット

説明

XtalParam

文字列

利用したいXtalParamファイルのパス

Q

文字列

逆算したいQの座標 “<Q1>,<Q2>,<Q3>”

Ei

実数

入射エネルギー

hw

実数

逆算したいエネルギー遷移の値

runNo

整数

対象となるRunNo(検出器の配置がRunNoごとに異なるため)

pixNum

整数

1PSDの分割数(BL01なら100, BL14なら120)

戻り値

無し

GetOrigPixelFromQString#

与えた結晶情報などを利用し、逆格子空間座標(Q,hw)から検出器Pixelを計算する。

GetOrigPixelFromQString(
    LatticeConst="4.8,8.4,2.9",LatticeAngles="90.0,90.0,90.0", \
    Uvect="0.0,1.0,0.0",Vvect="0.0,0.0,1.0",RotStep="None", \
    ViewAxis1="1,0,0",ViewAxis2="0,1,0",ViewAxis3="0,0,1", \
    Q="1.0,1.0,1.0",Ei=45.56, hw=0.0, runNo=999999, pixNum=100 )

パラメータ

フォーマット

説明

LatticeConst

文字列

格子定数1 “<a>,<b>,<c>”

LatticeAngles

文字列

格子定数2 “<alpha>,<beta>,<gamma>”

Uvect

文字列

方位情報のUベクトル “<Uh>,<Ul>,<Ul>”

Vvect

文字列

方位情報のVベクトル “<Vh>,<Vl>,<Vl>”

RotStep

文字列

回転情報 “None”:回転なし、”Y:12.3” Y軸中心に12.3度回転

ViewAxis1

文字列

HKLを利用した可視化用座標軸定義 “<h>,<k>,<l>”

ViewAxis2

文字列

HKLを利用した可視化用座標軸定義 “<h>,<k>,<l>”

ViewAxis3

文字列

HKLを利用した可視化用座標軸定義 “<h>,<k>,<l>”

Q

文字列

逆算したいQの座標 “<Q1>,<Q2>,<Q3>”

Ei

実数

入射エネルギー

hw

実数

逆算したいエネルギー遷移の値

runNo

整数

対象となるRunNo(検出器の配置がRunNoごとに異なるため)

pixNum

整数

1PSDの分割数(BL01なら100, BL14なら120)

戻り値

無し

CalcYRotAngleFromQXtalParam#

XtalParamファイルによって与えた結晶情報などを利用し、逆格子空間座標(Q,hw)を観測するために必要な回転角度と観測されるPixelを計算する

CalcYRotAngleFromQXtalParam(
    XtalParam="XtalParam.xml", Q="1.0,1.0,1.0",
    Ei=45.56, hw=0.0, runNo=999999, pixNum=100 )

パラメータ

フォーマット

説明

XtalParam

文字列

利用したいXtalParamファイルのパス

Q

文字列

逆算したいQの座標 “<Q1>,<Q2>,<Q3>”

Ei

実数

入射エネルギー

hw

実数

逆算したいエネルギー遷移の値

runNo

整数

対象となるRunNo(検出器の配置がRunNoごとに異なるため)

pixNum

整数

1PSDの分割数(BL01なら100, BL14なら120)

戻り値

無し

サンプルコード

XtalFile="XtalParam.xml"
Cmm.CalcYRotAngleFromQString( XtalParam=XtalFile,Q="2,0.5,-0.5",Ei=26.3, hw=0.0, runNo=33019, pixNum=100 )

実行結果は以下の通り。

Y Rotation Angle= 38.9468996935711
detId, pixel = 198, 17
Y Rotation Angle= -76.41461129041824
 Out of range

CalcYRotAngleFromQString#

与えた結晶情報などを利用し、逆格子空間座標(Q,hw)を観測するために必要な回転角度と観測されるPixelを計算する

GetOrigPixelFromQString(
    LatticeConst="4.8,8.4,2.9",LatticeAngles="90.0,90.0,90.0",
    Uvect="0.0,1.0,0.0",Vvect="0.0,0.0,1.0",RotStep="None",
    ViewAxis1="1,0,0",ViewAxis2="0,1,0",ViewAxis3="0,0,1",
    Q="1.0,1.0,1.0",Ei=45.56, hw=0.0, runNo=999999, pixNum=100 )

パラメータ

フォーマット

説明

LatticeConst

文字列

格子定数1 “<a>,<b>,<c>”

LatticeAngles

文字列

格子定数2 “<alpha>,<beta>,<gamma>”

Uvect

文字列

方位情報のUベクトル “<Uh>,<Ul>,<Ul>”

Vvect

文字列

方位情報のVベクトル “<Vh>,<Vl>,<Vl>”

RotStep

文字列

回転情報 “None”:回転なし、”Y:12.3” Y軸中心に12.3度回転

ViewAxis1

文字列

HKLを利用した可視化用座標軸定義 “<h>,<k>,<l>”

ViewAxis2

文字列

HKLを利用した可視化用座標軸定義 “<h>,<k>,<l>”

ViewAxis3

文字列

HKLを利用した可視化用座標軸定義 “<h>,<k>,<l>”

Q

文字列

逆算したいQの座標 “<Q1>,<Q2>,<Q3>”

Ei

実数

入射エネルギー

hw

実数

逆算したいエネルギー遷移の値

runNo

整数

対象となるRunNo(検出器の配置がRunNoごとに異なるため)

pixNum

整数

1PSDの分割数(BL01なら100, BL14なら120)

戻り値

無し

サンプルコード

LC="3.905, 3.905, 3.905"
LA="90.0,90.0,90.0"
UV="1,0,0"
VV="0,0.96,1.04"
VA1="1,0,0"
VA2="0,1,1"
VA3="0,-1,1"
Cmm.CalcYRotAngleFromQString( LatticeConst=LC,LatticeAngles=LA,Uvect=UV,Vvect=VV,RotStep="None",ViewAxis1=VA1,ViewAxis2=VA2,ViewAxis3=VA3,Q="2,0.5,-0.5",Ei=26.3, hw=0.0, runNo=33019, pixNum=100 )

実行結果は以下の通り。

Y Rotation Angle= 38.9468996935711
detId, pixel = 198, 17
Y Rotation Angle= -76.41461129041824
 Out of range

DymPDF#

非弾性Powderデータを入力とし、内部で運動量遷移方向にスライスし、動的対相関関数による処理を行う。結果は横軸 r 、縦軸 hw の2次元データとなる。

DymPDF( DAT=DAT, hwSlice="0.2,1.0,12.5", rRange="0.1,40.0",
        magFFa="0.4220,17.684", magFFb="0.5948,6.005",
        magFFc="0.0043,-0.609",magFFd="-0.0219", CF=74.84,
        isXaxisR=True )

パラメータ

フォーマット

説明

DAT

ElementContainerMatrix

対象となるPowderデータ(Powder処理済み)

hwSlice

文字列

hw方向の分割情報 “<delta-hw>, <hw-min>, <hw-max>”

rRange

文字列

実空間方向の情報 “<min>,<max>”

magFFa

文字列

Magnetic Form Factor 情報1

magFFb

文字列

Magnetic Form Factor 情報2

magFFc

文字列

Magnetic Form Factor 情報3

magFFd

文字列

Magnetic Form Factor 情報4

CF

実数

強度補正因子

isXaxisR

bool

計算結果の2次元データの横軸を距離にするか(True)、 エネルギー遷移にするか(False)

戻り値

ElementContainerArray

未実装・使用頻度の低いもの#

TofToEnergyTransfer#

TOFのヒストグラムをエネルギー遷移のデータへ変換する。

TofToEnergyTransfer(dat,Ei=-1.0,L1=Def_L1,t0shift=0.0,deltaE=0.0,EminRate=0.9,EmaxRate=0.9)

パラメータ

フォーマット

説明

dat

ElementContainerMatrix

与えるElementContainerMatrix

Ei

実数

入射エネルギー [meV]

L1

実数

L1 [m] :線源と試料との間の距離.。

t0shift

実数

TOFの原点のオフセット値 [micro-sec]。

deltaE

実数

Energy Transfer軸のbin幅 [meV]。

EminRate

実数

Energy Transfer軸の最小値をEiの割合(0.0< EminRate <1.0)で示したもの。

EmaxRate

実数

Energy Transfer軸の最大値をEiの割合(0.0< EmaxRate <1.0)で示したもの。

戻り値

無し

TofToEnergyTransferStrict#

TOFのヒストグラムをエネルギー遷移のデータへ変換する(明確なエネルギー範囲を指定可)。

TofToEnergyTransferStrict(dat,Ei=-1.0,L1=Def_L1,t0shift=0.0,Emin=-10.0,Emax=10.0,deltaE=0.0)

パラメータ

フォーマット

説明

dat

ElementContainerMatrix

与えるElementContainerMatrix

Ei

実数

入射エネルギー [meV]

L1

実数

L1 [m] :線源と試料との間の距離.。

t0shift

実数

TOFの原点のオフセット値 [micro-sec]。

deltaE

実数

Energy Transfer軸のbin幅 [meV]。

Emin

実数

Energy Transfer軸の最小値 [meV]。

Emax

実数

Energy Transfer軸の最大値 [meV]。

戻り値

無し

MakeWhiteVanCorr#

(未実装)White Vanadiumの測定データから補正用データを作成する。

WhiteVanCorr#

(未実装)White Vanadiumの補正用データでの補正。

装置用処理・その他#

AppendRawDataFiles#

複数のRaw Data(イベントデータ)を結合し、別データとして保存する。

AppendRawDataFiles(OutRunNo=990000,outDataPath=”-“,RunNo1=0,RunNo2=0,RunNo3=0,RunNo4=0,RunNo5=0,RunNo6=0)

パラメータ

フォーマット

説明

OutRunNo

整数

保存するデータのRunNo。このRunNoを名前に含んだフォルダを作成する。

outDataPath

文字列

出力先フォルダ。この中にOutRunNoの名前を含んだデータフォルダが保存される。

RunNo1

整数

結合するRunNo #1

RunNo2

整数

結合するRunNo #2

RunNo3

整数

結合するRunNo #3

RunNo4

整数

結合するRunNo #4

RunNo5

整数

結合するRunNo #5

RunNo6

整数

結合するRunNo #6

戻り値

無し

CheckDataProcess#

データ処理の履歴管理用関数。

CopyData#

装置において、DAQ PC上のRaw Dataを解析PCへ集約・コピーする。各DAQ CPU上にあるデータを/data/XXX以下へ持ってくるための関数を実行する。測定中のデータおよび測定後のデータは、各DAQ CPUに分散して保存されているため、これらを解析するためには1ヶ所に集める必要がある。そのための関数である。(DR.CopyDataと全く同等)

CopyData(first_run=10,last_run=-1,flag=0)

パラメータ

タイプ

説明

runNo

正の整数(UInt4)

コピーしたいRun number

flag

正の整数(UInt4)

通常は省略、コピーではなくシンボリックリンクにするときは1

戻り値

なし

なし

CopyIroha2Params#

装置において、IROHA2 PC上のLog, Paramデータを解析PCへ集約・コピーする。

MakeRunList#

装置において、Run No, 測定時間、温度、ゴニオ角度などの情報をリスト化する。