空蟬基本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, 測定時間、温度、ゴニオ角度などの情報をリスト化する。