D4Mat2Slicer(Step By Step測定及び連続回転測定)用コマンド#

(2023/3/2更新 作成中)

多次元系単結晶試料に対する非弾性散乱測定において、広い運動量空間をカバーするためには、試料に対する入射中性子の方位の異なる測定を複数回行い一つの運動量エネルギー空間にあるものとみなしてデータを扱う必要がある。

その測定手法には2種類、 Step By Step測定連続回転測定 とがある。これらの測定データを処理するソフトウェアとして、 D4mat2Slicer ( 参照: 「D4mat2Slicerマニュアル」 があるが、本章ではそのコマンドラインインターフェースを紹介する。

使用される関数(C++クラス)は、 UtsusemiD4Matrix2 である。

注意#

まだ機能的には未完成で不十分なところが多いので、使用には十分気をつけること。

サンプルコード(Step By Step測定用)#

Step By Step測定のデータを利用する場合に使用できるものを紹介する。

多次元系単結晶試料非弾性散乱測定(回転測定)のデータ処理(Step-by-Step法) でも使用される RunListファイルを利用して処理を行うスクリプトである。

そのため、D4Mat変換用ファイル(vbinファイル)を作成するスクリプト(Extractスクリプト)とよく似た構造であり、特にRunListファイルを処理する部分は全く同じである。

処理として想定している流れとしては以下のようなものである。

  1. RunListファイルを利用してそれぞれのRun情報とゴニオの角度情報を取り出す

  2. スクリプトに記述したパラメータと1.の情報を利用してそれぞれのデータをヒストグラム化し、角度情報とともに取り込む

  3. スクリプトに記述した試料情報を利用し、射影処理を行う

  4. 2Dや3Dのスライス及び可視化を行う

  5. D4MatSlicerで可視化できるD4Matデータを出力する。

大雑把にいえば、D4Mat用のスクリプト(いわゆる Extract_runlist.py )との相違点は、vbinファイルを書き出すコマンドである

Cmm.VisContMOutputFileByPhi(DAT, XtalParam, PhiValue, savePath)

の部分をD4Mat2へ取り込むためのコマンド

UD.ImportEcmStepByStep( DAT, PhiValue, str(PhiValue) ) # 非弾性処理済みデータを回転角度とともに入力

に置き換えるところと、射影処理の部分

UD.SetD4MatSampleInfo( LatticeConst, Uvector, Vvector, RotateSteps ) # 試料情報の入力
UD.Projection( ProjAxes )                                  # 射影処理の実行

である。

サンプルコード (A-1)#

上記のステップのうち

  1. RunListファイルを利用してそれぞれのRun情報とゴニオの角度情報を取り出す

  2. スクリプトに記述したパラメータと1.の情報を利用してそれぞれのデータをヒストグラム化し、角度情報とともに取り込む

  3. スクリプトに記述した試料情報を利用し、射影処理を行う

を行うコードを示す。

D4MatSlicer command script#
#! /usr/bin/env python3
from __future__ import print_function
import os
import sys
import DR
import Cmm
import Manyo
import Manyo.Utsusemi as mu
import utsusemi.ana.Reduction.BaseCommandsInEla as BC

#####################
# modify here
####################
Ei=50.0151
HW_bin = 0.3
HW_min = -0.5
HW_max = 35.7
maskfile = "default"
normFactor = 1000000.0
time_indep_bg = "TOF:None"
detect_effi = "SIK-SUS304-3He-PSD.dat"
gonioValueAtZero = 20.294

# Sample Info
LatticeConst = [3.62284, 3.62284, 3.62284, 90.0, 90.0, 90.0]
Uvector = [1.0, 0.0, 0.0]
Vvector = [0.0, 1.0, 1.0]
RotateSteps = []
ProjAxes = [1.0, 0.0, 0.0, 0.0,
            0.0, 1.0, 1.0, 0.0,
            0.0,-1.0, 1.0, 0.0,
            0.0, 0.0, 0.0, 1.0]
AxTitles = ["Q1", "Q2", "Q3", "hw"]
AxUnits = ["rlu", "rlu", "rlu", "meV"]

# for data save
outXtalParam = "XtalParam_A-1.xml"
outFile = "Sample_A-1.d4m"

############################
argv = sys.argv
print("len(argv)={}".format(len(argv)))

listFileName=""
if len(argv)==2:
    if os.path.exists(argv[1]):
        listFileName=argv[1]
        print("RunList=[]".format(listFileName))
    else:
        raise UserWarning("Not found file=%s"%(argv[1]))
else:
    print("Usage::")
    print("        $ ./{} <filename of runlist>".format(argv[0]))
    print("        ")
    print("        $ python {} <filename of runlist>".format(argv[0]))
    sys.exit(0)

paramDic = {"normFactor":normFactor,"gonio":gonioValueAtZero}
AngleList, condsDict = BC.LoadRunListToExtract(listFileName, paramDic, mergeAngles=True)
DataReductParams = [-1, -1, Ei, HW_bin, HW_min, HW_max, -1, -1, -1]

## Data Reduction
UD = mu.UtsusemiD4Matrix2()               # D4matSlicer2のコマンドを実行するための用意
UD.ClearAll()                             # データのクリア(念のため)
# UD.LoadData(outFile)                    # 以前のデータに追記する場合に読み込み

UD.SetD4MatMode(1) # 1 means Step-by-Step mode
UD.SetD4MatSampleInfo(LatticeConst, Uvector, Vvector, RotateSteps) # 試料情報の入力
UD.SetD4MatDataReductionStepByStepGonioAtZero(gonioValueAtZero)
UD.SetD4MatDataReductionInfo(DataReductParams) # For records
UD.SetD4MatDataReductionOptions(maskfile, normFactor, time_indep_bg, detect_effi)

for angle_key in AngleList:
    angle = float(angle_key)
    runNos = condsDict[angle_key][0]
    norm = condsDict[angle_key][1]
    print("==============[ {:s}:{:8.3f},{:10.5f} ]".format(runNos,angle,norm))
    DAT = DR.GetDataOfMonochroEi3(runNos, Ei, HW_bin, "{:g} {:g}".format(HW_min,HW_max),
                                  MaskFile=maskfile, NormFactor=norm)
    UD.ImportEcmStepByStep(DAT, angle, norm, normFactor) # 非弾性処理済みデータを入力
    del DAT # 入力済みのデータは削除(推奨)

### Projection
if UD.SetD4MatProjectionAxesInfo(ProjAxes, AxTitles, AxUnits): # 射影処理情報の入力
    UD.Projection(ProjAxes) # 射影処理の実行

### Save Data
UD.SaveXtalParam(outXtalParam)     # ここまでの設定をXtalParamに保存する
UD.SaveData(outFile, True)         # d4mファイル(D4Mat2用バイナリ)に圧縮形式(True)で保存

もしデータをファイルに保存すれば、そのままD4Mat2Slicerから読み込むことができ、すぐにProjectionやSliceができる。

使用上の注意と問題点#

ただし、以下にあげるような問題点(未実装)がある。

  • 既存のd4mデータファイルに追記する形で利用する場合、同じ角度のデータであってもマージされないため、再度d4mデータファイルに保存するとサイズが大きくなる

    • これはD4Mat2Slicerでも同様であると思われるが未確認

    • 大きな仕様変更が必要なため、当面の修正は行わない

    • 同じ角度を何度も測定する場合、一連の測定が終了したときに最初から処理しなおした方が良い

サンプルコード(A-2)#

前述の射影まで処理スクリプトに以下のコードを加えると、2Dスライス+プロットを行うことができる。 すなわち前述の

  1. 2Dスライス及び可視化を行う

を行うためのスクリプトである。

スライスに必要な各軸のパラメータの与え方は 運動量エネルギー空間への射影に関連するコマンド と同等である。

### Slice 2D
ax1 = ["T", -0.420 ,2.350]
ax2 = ["T", -0.876 ,3.006]
ax3 = ["X", -0.916 ,0.841 ,0.02]
ax4 = ["Y", -0.600 ,35.70 ,0.3]
ax_dFold = []
ax_units = ["rlu", "rlu", "rlu", "meV"]

sliced_eca = Manyo.ElementContainerArray()
if UD.Slice2d(sliced_eca, ax1, ax2, ax3, ax4, ax_dFold, ax_units):
    print("## Slice succeeded.")
    ## Plot sliced data on display with GUI
    import uGao.M2PlotPlusCui as mp          # 夕顔のGUIを起動してプロットする
    p=mp.M2PlotPlusCui(sliced_eca)
    p.ShowData()
    p.SetLabels("Qa", "Qb")
    del p

    ## Save sliced data as PNG figure file   # 夕顔で表示させずに画像だけ保存も可能
    import uGao.U2IFInDark as UIF
    p=UIF.U2IFInDark()
    p.SetKeys("ax3", "ax4", "Intensity")     # 横軸、縦軸のキー("ax1", "ax2", "ax3", "ax4")、および強度のキー
    p.SetData(sliced_eca)                    # データの読み込み
    p.SetRange(False, 0.0, 40.0)             # 強度の範囲指定(最初のFalseはAuto Scaleはしないの意味)
    p.SetTitles("Test Data", "SubTitle")     # TitleとSubTitle
    p.SetLabels("Qa (rlu)", "hw (meV)")      # 軸のラベル
    p.SaveFile("TestData_A-2.png")               # 画像ファイルとして保存
    del p
else:
    print("## Slice failed.")

サンプルコード(A-3)#

前述の射影まで処理スクリプトに以下のコードを加えると、D4Matデータへの書き出しが行える。

  1. D4MatSlicerで可視化できるD4Matデータを出力する。

### Make D4Mat data
v=UD.PutQRange()

ax1 = [v[0], v[1], 0.1]
ax2 = [v[2], v[3], 0.1]
ax3 = [v[4], v[5], 0.02]
ax4 = [v[6], v[7], 0.3]
titles = ["Qa", "Qb", "Qc", "Energy"]
units = ["rlu", "rlu", "rlu", "meV"]
data_dir = "./D4Mat"
paramfile = "D4Mat.xml"

ret = UD.AllocateD4MatOnDisk(ax1, ax2, ax3, ax4, titles, units, data_dir, paramfile)
if ret:
    print("Suceeded to output D4Mat data")

サンプルコード(連続回転測定用)#

連続回転測定のデータを処理する場合に使用するものを紹介する。

  1. 測定情報をパラメータとしてデータを角度毎のヒストグラムに落とし込む処理をする (Data Reduction)

  2. 試料の情報を利用してヒストグラムデータを見たい座標に射影する (Projection))

  3. 射影データを2Dスライスする+プロットする

  4. 連続回転測定のデータを別フォーマットにする(例:Nxspe)

  5. 射影データを3Dスライスしてテキストファイルに保存する(未記載)

サンプルコード(B-1)#

連続回転測定のデータ処理のステップのうち

  1. 測定情報をパラメータとしてデータを角度毎のヒストグラムに落とし込む処理をする (Data Reduction)

  2. 試料の情報を利用してヒストグラムデータを見たい座標に射影する (Projection))

を行うものである。

なお、このコードではそれぞれの角度に分解された全てのヒストグラムに対してデフォルトのデータリダクション処理を行なっている。

D4Mat2 commands scripts for the continuous rotation method#
#!/usr/bin/python
# -*- coding: utf-8 -*-
import Manyo
import Manyo.Utsusemi as mu
from utsusemi.vis.D4Mat2SlicerQ import D4Mat2Utils, PutDefaultMaskFile
import sys
import Cmm

############################
# Data Reduction parameters
############################
runNo = 64930
Ei = 50.0     #[meV]
HW_min = 0.0  #[meV]
HW_max = 40.0 #[meV]
HW_bin = 0.4  #[meV]

mask_file = "default"
norm_factor = 1e+06
time_indep_bg = "TOF:None"
detect_effi = "SIK-SUS304-3He-PSD.dat"

st_ang = 0.0     #[degree]
min_ang = -31.0  #[degree]
max_ang = 115.0  #[degree]
step_ang = 0.5   #[degree]

t_start = -1   #[seconds]
t_end = -1     #[seconds]

dio = 1 #[TrigNET signal DIO]
multh = 2 # Multi threadings on histogram creationa
############################
# Sample Info
############################
LatticeConst = [3.615, 3.615, 3.615, 90.0, 90.0, 90.0]
Uvector = [1.0, 0.0, 0.0]
Vvector = [0.0, 1.0, 1.0]
RotateSteps = []
ProjAxes = [1.0, 0.0, 0.0, 0.0,
            0.0, 1.0, 1.0, 0.0,
            0.0, 1.0,-1.0, 0.0,
            0.0, 0.0, 0.0, 1.0]
AxTitles = ["Q1", "Q2", "Q3", "hw"]
AxUnits = ["rlu", "rlu", "rlu", "meV"]

############################
# For data save
############################
outXtalParam = "XtalParam_B-1.xml"
outFile = "Sample_B-1.d4m"

############################
data_dir = "/data"
############################

################################
# Histogram creation from raw data files
# Make parameter files
st_Params = "hw,%f,%f,%f,%f"%((Ei, HW_min, HW_max, HW_bin))
DU = D4Mat2Utils()
wfile, dfile = DU.MakeTempInfoFiles(runNo, st_Params, time_indep_bg)
cfile = DU.MakeCaseInfoFile(st_ang, min_ang, max_ang, step_ang, runNo, dio)
DataReductParams = [t_start, t_end, Ei, HW_bin, HW_min, HW_max, min_ang, max_ang, step_ang]

# Do Histogram creations
EDC = mu.UtsusemiEventDataConverterNeunet()
EDC.LoadParamFiles(wfile, dfile, cfile)

if t_start < 0 and t_end < 0:
    pass
else:
    if not EDC.SetRangeOfSingleTimeSlicing(t_start, t_end):
        msg = "TimeSlicing arguments are invalid : " + str(t_start) + "," + str(t_end)
        raise UserWarning(msg)

EDC.LoadTrignetEventFile(runNo, data_dir, "")
EDC.SetHistAllocation(multh)
EDC.LoadEventDataFiles(runNo, data_dir, "")

print( " ------------ Histogram Creatation finishes" )

# Import Histogram into D4Mat2 and do projection
# Make angles and kickers information
num_of_cases = EDC.PutNumOfCases()
case_list = EDC.PutListOfCounterConditions()

IND = Manyo.MakeUInt4Vector()
PHI = Manyo.MakeDoubleVector()
for i in range(num_of_cases):
    IND.push_back(i + 1)
    PHI.push_back((case_list[(i + 1) * 2] + case_list[(i + 1) * 2 + 1 ]) / 2.0)
t0_list = EDC.PutCaseDecoder().PutNumOfT0ListInCases()
KIC = Manyo.MakeDoubleVector(len(t0_list))
for i in range(KIC.size()):
    KIC[i] = t0_list[i]

# mask info
if mask_file.lower() != "default":
    mask_path = mu.FindParamFilePath(mask_file)
else:
    mask_path = PutDefaultMaskFile(runNo)

# Get parameter for Solid Angle Corrections
dOmega = 1.0
hh = Manyo.HeaderBase()
if EDC.AddRunInfoToHeader(hh):
    L2 = hh.PutDouble("TypicalL2")
    dS = hh.PutDouble("TypicalDS")
    dOmega = dS/(L2*L2)

# Do the data reduction and import of histograms
D4M = mu.UtsusemiD4Matrix2()
D4M.SetD4MatParameters(runNo, DataReductParams, LatticeConst, Uvector, Vvector, RotateSteps)
D4M.ImportEcmsContRot(EDC, IND, PHI, KIC, mask_path, dOmega, norm_factor, detect_effi)
print( " ------------ Import data finishes" )

# Do Projection
D4M.SetD4MatProjectionAxesInfo(ProjAxes, AxTitles, AxUnits)
D4M.Projection(ProjAxes)
print( " ------------ Projection finishes" )

# Save Data
D4M.SaveXtalParam(outXtalParam)     # ここまでの設定をXtalParamに保存する
print( "------------- Save XtalParam.xml")
D4M.SaveData(outFile, True)         # d4mファイル(D4Mat2用バイナリ)に圧縮形式(True)で保存

サンプルコード(B-1a)#

サンプルコード(B-1)のようにデフォルトのデータリダクションを行うのではなく、独自の処理をしたい場合は、(B-1)の

# Do the data reduction and import of histograms

より後の部分を以下のように書き換えれば良い。

# Do the data reduction and import of histograms
D4M = mu.UtsusemiD4Matrix2()
D4M.SetD4MatParameters(runNo, DataReductParams, LatticeConst, Uvector, Vvector, RotateSteps)

# Data Reduction for each angle data and Import
D4M.AllocateD4MatPseudoOnLine(num_of_cases)
for i in range(num_of_cases):
    # Pick out a Histogram data at an angle
    DAT = Manyo.ElementContainerMatrix()
    EDC.SetElementContainerMatrix(DAT, IND[i])

    # Do Default Data Reduction
    DR = mu.UtsusemiReductionInEla(DAT)
    DR.CalcPhi()
    DAT.PutHeaderPointer().OverWrite(mu.UTSUSEMI_KEY_HEAD_KICKERCOUNT, KIC[IND[i]])
    Cmm.dHWCorrection(dat=DAT)
    Cmm.SolidAngleCorrection(dat=DAT)
    Cmm.KiKfCorrection(dat=DAT)
    Cmm.DoMask(dat=DAT,filename=mask_path)
    Cmm.NormByKickers(dat=DAT,factor=norm_factor)
    Cmm.DetectorEffi(dat=DAT, dataFile=detect_effi)
    # Other Reduction commands
    """
    # if you want to save a histogram data as nxspe file,
    fname = "Run{:06d}_ang{:08.3f}.nxspe".format(runNo, PHI[i])
    params = "PSI:0.0,TEMP:300.0,USER:mlfuser"
    Cmm.SaveDataToNxspe(dat=DAT, path="./", filename=fname, params=params)
    """
    # Import histogram for each angle into D4Mat2
    D4M.ImportEcmStepByStep(DAT, PHI[i], "{}".format(IND[i]), False)
    del DAT

print( " ------------ Import all data finishes" )

# Do Projection
D4M.Projection(ProjAxes)
print( " ------------ Projection finish" )

サンプルコード(B-2)#

  1. 射影データを2Dスライスする

(B-1)や(B-1a)に続いて、下記を加えると2Dデータスライスが実行され,2Dプロッタで表示される。

#### Slice on D4Matrix2
### Get maximum range of D4Matrix2 data axes
limRange = D4M.GetAxLimit()

##### 2D slice test
### Make parameters for slicing
Ax1_slice = [ "X", limRange[0], limRange[1], 0.02 ]
Ax2_slice = [ "T", -0.1, 0.1 ] # max range [ limRange[2], limRange[3] ]
Ax3_slice = [ "T", -0.1, 0.1 ] # max range [ limRange[4], limRange[5] ]
Ax4_slice = [ "Y", 0.0, 40.0, 0.4 ]
Foldings = []

### Do Slice and plot
sliced_eca = Manyo.ElementContainerArray()
if D4M.Slice2d( sliced_eca, Ax1_slice, Ax2_slice, Ax3_slice, Ax4_slice, Foldings, AxUnits ):
    import uGao.M2PlotPlusCui as mp
    p=mp.M2PlotPlusCui(sliced_eca)
    p.ShowData()

サンプルコード(B-1b)#

  1. 連続回転測定のデータを別フォーマットにする(例:Nxspe)

Nxspeに書き出すだけ(D4Mat2で射影・スライスしない)の場合、D4Mat2へのimportなどの手順は省略できる。 この場合も(B-1a)と同様に、(B-1)の

# Do the data reduction and import of histograms

より後の部分を以下のように書き換えれば良い。

# Do the data reduction and import of histograms

# Data Reduction for each angle data and save as nxspe
for i in range(num_of_cases):
    # Pick out a Histogram data at an angle
    DAT = Manyo.ElementContainerMatrix()
    EDC.SetElementContainerMatrix(DAT, IND[i])

    # Do Default Data Reduction
    DR = mu.UtsusemiReductionInEla(DAT)
    DR.CalcPhi()
    DAT.PutHeaderPointer().OverWrite(mu.UTSUSEMI_KEY_HEAD_KICKERCOUNT, KIC[IND[i]])
    Cmm.dHWCorrection(dat=DAT)
    Cmm.SolidAngleCorrection(dat=DAT)
    Cmm.KiKfCorrection(dat=DAT)
    Cmm.DoMask(dat=DAT,filename=mask_path)
    Cmm.NormByKickers(dat=DAT,factor=norm_factor)
    Cmm.DetectorEffi(dat=DAT, dataFile=detect_effi)
    # Other Reduction commands

    # Save a histogram data as a nxspe file.
    fname = "Run{:06d}_ang{:08.3f}.nxspe".format(runNo, PHI[i])
    params = "PSI:0.0,TEMP:300.0,USER:mlfuser"
    Cmm.SaveDataToNxspe(dat=DAT, path="./", filename=fname, params=params)

    del DAT

print( " ------------ Conversion to nxspe finishes" )

UtsusemiD4Matrix2リファレンス#

以下に UtsusemiD4Matrix2 で使用できるコマンド(メソッド)のうち、主要なものを示す。

class UtsusemiD4Matrix2#

連続回転測定データの処理や、StepByStepデータの処理を、全データをメモリ上に保管することにより、高速に、かつ処理の柔軟性を高めたものである。

LoadData(FilePath)#

保存されたD4Mat2データ(.d4m)を読み込んで処理できるようにする。

Parameters:

FilePath (string) – 読み込むファイルパス(拡張子 .d4m)

Returns:

結果 True:成功, False:何らかの失敗

Return type:

bool

SaveData(FilePath, Compress)#

処理中のD4Mat2データ(.d4m)を保存する。第2引数をTrueにすると圧縮して保存される。省略した場合は非圧縮保存。

Parameters:
  • FilePath (string) – 保存するファイルパス(拡張子 .d4m)

  • Compress (bool) – 圧縮するかどうか

Returns:

結果 True:成功, False:何らかの失敗

Return type:

bool

SaveXtalParam(FilePath)#

処理中の情報をXtalParamで書き出す(連続回転測定のデータリダクションパラメータ含む)。

Parameters:

FilePath (string) – 保存するXtalParamのファイルパス

Returns:

結果 True:成功, False:何らかの失敗

Return type:

bool

SetD4MatSampleInfo(LatticeConst, Uvector, Vvector, RotateSteps)#

試料情報(格子定数、方位情報など)を与える。

Parameters:
  • LatticeConsts (list(float)) – 格子定数の指定 [ a, b, c,α,β,γ]

  • Uvec (list(float)) – U-vector

  • Vvec (list(float)) – V-vector

  • Rvec (list(float)) – U-V-vectorの回転を指定

Returns:

結果 True 成功, False 失敗

Return type:

bool

ImportEcmStepByStep(DAT, PhiValue, title)#

StepByStep測定の非弾性散乱処理済みのデータ(ElementContainerMatrix)を角度情報とともに取り込む。この時点では射影計算はなされない。

Parameters:
  • ecm (ElementContainerMatrix) – データ処理済みヒストグラム

  • PhiValue (float) – U-vectorと平行な方位を0度とした時の角度

  • title (string) – このデータに対するタイトル

Returns:

結果 True 成功, False 失敗

Return type:

bool

Projection(ProjAxes)#

StepByStep測定及び連続回転測定の取り込み済みのデータに対し、射影処理を行う。

Parameters:

ProjAxes (list(float)) – 射影軸の指定

Returns:

結果 True 成功, False 失敗

Return type:

bool

Slice2d(sliced_eca, sl_ax1, sl_ax2, sl_ax3, sl_ax4, sl_dFold)#

射影処理終了後のデータに対し2Dスライスを行う。

Parameters:
  • sliced_eca (ElementContainerArray) – スライスされたデータを収めるコンテナ

  • sl_ax1 (list(float)) – 射影軸1のスライス情報

  • sl_ax2 (list(float)) – 射影軸2のスライス情報

  • sl_ax3 (list(float)) – 射影軸3のスライス情報

  • sl_ax4 (list(float)) – 射影軸4のスライス情報

  • sl_dFold (list) – 畳み込み情報

Returns:

結果 True 成功, False 失敗

Return type:

bool

射影軸ごとにlist(float)でスライス情報を与えるが、そのフォーマットは以下のとおり。

[ “A”, min, max, (width) (,folding) ]

要素

タイプ

説明

“A”

str

軸の役割, X軸なら”X”、Y軸なら”Y”、Z軸なら”Z”、 Thickness軸なら”T”

min

float

範囲の最小値

max

float

範囲の最大値

width

float

bin幅、ただしAが”X”か”Y”,”Z”の時のみ有効

folding

float

その軸の畳み込みを行うQ値 (下表参照)

Folding

-1

(負の値)使用しない

0.0

その軸=0で折りたたむ

x

その軸=xで折りたたむ

例:

X,Y,Z軸方向は長さ4のリスト

[ “X”, -1.8, 2.6, 0.02 ]

T軸方向は長さ3のリスト.

[ “T”, -0.1, 0.1 ]

対角線での畳み込みを行う方法は未実装(2019.12.20時点)

なお、2Dスライスの時は、”X”,”Y”が一つずつ、”T”が二つ、3Dスライスなら”X”,”Y”,”Z”,”T”が一つずつ指定する。

Slice3d(sliced_ecm, sl_ax1, sl_ax2, sl_ax3, sl_ax4, sl_dFold)#

射影処理終了後のデータに対し3Dスライスを行う。

Parameters:
  • sliced_ecm (ElementContainerMatrix) – スライスされたデータを収めるコンテナ

  • sl_ax1 (list(float)) – 射影軸1のスライス情報

  • sl_ax2 (list(float)) – 射影軸2のスライス情報

  • sl_ax3 (list(float)) – 射影軸3のスライス情報

  • sl_ax4 (list(float)) – 射影軸4のスライス情報

  • sl_dFold (list) – 畳み込み情報

Returns:

結果 True 成功, False 失敗

Return type:

bool

射影軸のスライス情報は、 Slice2dを参照のこと。

AllocateD4MatOnDisk(a1range, a2range, a3range, a4range, titles, data_dir, string paramfile)#

StepByStep測定の入力済みデータから、D4MatSlicer用のデータ(D4Matデータ)を出力するコマンドである。

Parameters:
  • a1range (list(float)) – 射影軸1の範囲とbin幅

  • a2range (list(float)) – 射影軸2の範囲とbin幅

  • a3range (list(float)) – 射影軸3の範囲とbin幅

  • a4range (list(float)) – 射影軸4の範囲とbin幅

  • titles (list(string)) – 射影軸のタイトル

  • data_dir (string) – 出力先のフォルダへのパス指定

  • paramfile (string) – 出力先のパラメータファイル名

Returns:

結果 True 成功, False 失敗

Return type:

bool

射影軸の範囲とbin幅は、[ min, max, bin ] のフォーマットである。

ExportEcmFromStepByStep(ecm, index)#

StepByStep測定の入力済みデータから、特定の角度のデータを取り出す。最低角度のデータをindex=0とする。

Parameters:
  • ecm (ElementContainerMatrix) – 取り出すデータのコンテナ

  • index (int) – 角度のインデックス

Returns:

結果 True 成功, False 失敗

Return type:

bool

例: .. code-block:: python

ecm = ElementContainerMatrix() UD.ExportEcmFromStepByStep( ecm, 10 )

ClearAll()#

取り込んだデータを全てクリアする。

Returns:

None

Return type:

None

PutQRange()#

取り込んだデータから、Q領域及びhw領域のそれぞれの最小値と最大値を返す。

Returns:

Q1, Q2, Q3, hwのそれぞれの最小値、最大値のリスト

Return type:

list(float)

戻り値は、[ Q1_min, Q1_max, Q2_min, … , hw_max ]のサイズ8のリストである。