#### Come from "batch-ct-new.bat"    '#' 記号以降はコメント
#### 行末に '\' を置くと、次の行も繋がった 1 行とみなされる。
#### コマンド名は大文字、小文字を区別しません。 calib_exec, CALIB_EXEC, Calib_Exec,... は同じ

### 2dXafsView は UI 上で行えるほとんどすべての操作を
### バッチファイルにコマンドとして書いてまとめて実行することができます。
### 試行錯誤しながら解析している時、毎回行う操作を書いておくと手間が省けます。
### また、どんな条件で解析したかの良い記録にもなりますので、
### 一番最後に「これが本番」と思う解析を行うときには、解析結果のファイルへの書き出し部分も含めて
### バッチファイルに記述し、それで実行して結果を残すのがお勧めです。
### (そのバッチファイルを、データファイルまたは解析結果のファイルと一緒に置いておきましょう)
####                            # ここで :let DataRoot shome_where とすると、config.cfg 等の設定よりこちらが優先

### :let VAL_NAME value         # バッチファイル中に $VAL_NAME$ という文字列が現れた時 valu で置き換える。
####                            # デフォルトで $DataRoot$ の値(value)は config.cfg 等で指定した DataRoot の値になっている。

### ***** 面内のエネルギーキャリブレーションに関する設定 *****
# calib_show_window                   # キャリブレーションの操作を行う window を表示する(しなくてもいい)
# calib_load_std  /home/tabuchi/Data/00-Std/20171006-000-Std-Cu-01-f.dat
#                                     # キャリブレーションを行う時の基準になるスペクトルを指定する
# calib_set_edge_eV  8984.4           # 基準スペクトルの吸収端を 何eV と考えるかの指定
# calib_clear_map                     # 現在のエネルギーキャリブレーション値のマップを 0 クリアする。
# calib_exec                          # 実際にキャリブレーションを行います。
                                      # 事前に i1 ファイルを読み込んでおく必要があります。!!!
                                      # 2dXafsView はエネルギーキャリブレーションの動作はスレッド化していないので
				      # 計算が終わるまで数秒〜数十秒、プログラムがフリーズしたように見えます。
# calib_save_map  /home/tabuchi/Data/8S2-Cu-CT/EMap-CuCT.emp
                                      # 計算されたキャリブレーション値のマップをファイルに保存する。
# calib_load_map  /home/tabuchi/Data/8S2-Cu-CT/EMap-CuCT.emp
#                                     # 過去に行ったキャリブレーションの結果を読み込む。
#                                     # これがあるなら、calib_load_std は不要
# calib_type  0                       # キャリブレーション方法を選択   0 : 中点比較(従来)、1 : 内積最大
### キャリブレーションに関しては、過去の結果があるか無いかで操作が
### 操作手順が変わります。
### 1. ない場合
###    あらかじめ、i1 ファイルを読み込んでおく(i0 も必要かどうかは随時ご判断下さい)
###    calib_load_std, calib_set_edege_eV, calib_clear_map, calib_exec する。
###    calib_save_map するかどうかは必要に応じて判断して下さい。
### 2. ある場合
###    calib_load_map だけで十分。
###    calib_load_std も行っておくと、基準にしたスペクトルがグラフ内に表示されるのでわかりやすいです。


### ***** データファイルの読み込みに関する設定 *****
###   データファイルの取扱いに関するコマンドは、
###   その対象が I0 ファイルか I1 ファイルかによって、コマンドに i0, i1 が入ります。
###   対象となるファイルが違うだけで動作は同じなので、説明は片方についてだけ行います。

### ** データの読み飛ばしに関する設定 **
# cut_f_i0 100                         # 指定されたファイルの内先頭 100 本を読み飛ばす
# cut_f_i1 100                         # 指定しなければ 0
# cut_l_i0 200                         # 指定されたファイルの内末尾 200 本を読み飛ばす
# cut_l_i1 200                         # 指定しなければ 0
# skip_i0    3                         # 指定されたファイルを 3本おきに読む。
                                       # (0本目:読む、1本目:読まない、2本目:読まない、3本目:読む、...)
				       # 指定しなければ 1
# skip_i1    3
###
###  これらの読み飛ばし指定は次の load_i0, load_i1 系のコマンドより前に置いて下さい。
###  load_i0, load_i1 系のコマンドは指定された瞬間にファイルを読み始めるので
###  後から指定しても意味を持ちません

# show_latest_i0 1                     # 画像ファイルを読み込んだ時、1: 表示を最新画像にする、0: しない
# show_latest_i1 1
###
### 0 にすると 2dXafsView の動作がおかしい時が有るのでできれば 1 にしておいて下さい。
### 現在デフォルトでは 1 になっているので何も指定しなくても構いません。


### ** データファイルに対応するエネルギーの決定のための設定 **
### 2dXafsView で一括で読み込む各画像ファイルが、いくらのエネルギーで撮影された画像かを決めるのには
### 現在 3つの方法がああります。どれか一つを選択して下さい。
### これも、読み飛ばしに関する設定同様、実際の読み込み(load_i0.., load_i1..) よりi前に置いて下さい。

### その 1 : ファイル名に埋め込まれた数字をエネルギーと解釈する場合
# eng_by_name_i0 1                    # i0 のエネルギーをファイル名から決める
# eng_by_name_i1 1                    # i1 のエネルギーをファイル名から決める
# eng_by_name_reg_exp_i0 "\d\d\d\deV" # i0 のファイル名にどの様な形でエネルギーが埋め込まれているかを指定
                                      # '\d' は数字一文字、"\d\d\d\deV" は "eV" の前にある数字 4文字
				      # 全体として「eV の前の 4桁の数字をエネルギーと判断する」という指示になる。
				      # 文字列の中の 'eV' は数字として解釈するときには無視する。
				      # 文字列の中の '_' は小数点に読み替える。
				      # 他の例
				      # '\d\d\d\d_\d\deV' : eV の前の◯◯◯◯.◯◯という形の数字
# eng_by_name_reg_exp_i1 "\d\d\d\deV" # i1 のファイル名にどの様な形でエネルギーが埋め込まれているかを指定
# eng_by_name_factor_i0 1.0           # 数字を 'eV' に直す時の係数。ファイル名中の数字が keV なら 1000 になる。
# eng_by_name_factor_i1 1.0

# set_i0_energy_pattern "\d\d\d\deV"   # 古いコマンドです。eng_by_name_reg_exp_i0 を使って下さい。
# set_i1_energy_pattern "\d\d\d\deV"   # 古いコマンドです。eng_by_name_reg_exp_i1 を使って下さい。

### その 2 : 一括で読み込む時の、何番目のファイルかで計算からエネルギーを決める方法
# eng_by_calc_i0 1                    # i0 のエネルギーを、何番目に読み込まれたファイルかで判断する
# eng_by_calc_i1 1                    # i1 のエネルギーを、何番目に読み込まれたファイルかで判断する
# eng_calc_base_i0 8000               # i0 のエネルギーの最低値 : BASE_i0
# eng_calc_base_i1 8000               # i1 のエネルギーの最低値 : BASE_i1
# eng_calc_delta_i0 10                # i0 の次のファイルとのエネルギー差 : DELTA_i0
# eng_calc_delta_i1 10                # i1 の次のファイルとのエネルギー差 : DELTA_i1
# eng_calc_end_i0  9000               # i0 のエネルギーの最大値 : END_i0
# eng_calc_end_i1  9000               # i1 のエネルギーの最大値 : END_i0
# eng_calc_num_i0  100                # i0 のファイル数が幾つあるか : NUM_i0
# eng_calc_num_i1  100                # i1 のファイル数が幾つあるか : NUM_i0
                                      #  k 番目のファイルに対して、エネルギーは実際には
				      #  　　Eng = BASE + DELTA * k
				      #  と計算される。
				      #  BASE, DELTA 意外の指定 (eng_calc_end_i0 等) が現れた場合は、
				      #  内部的には順時その数字で計算される DELTA で DELTA を上書きしていく
				      #  どんな風に再計算されるかは UI 上で数字をいじってみて下さい。
# eng_calc_even_in_eng_i0 1           # 始点終点の間をを刻んでエネルギーを計算する時、
                                      # 各点が「等エネルギー」間隔で並んでいると考えるか、
				      # 「等角度(分光器)」間隔で並んでいると考えるかの指定。
				      # おそらくは Quick 測定したデータに対して使用するので通常は
				      # 「等角度」間隔が正しいはず。
				      # ..even_in_eng.. 指定と ..even_in_deg.. 指定は意味が重複していて
				      # ..even_in_eng.. 1 と ..even_in_deg.. 0 は同じ意味。
				      # ..even_in_eng.. 0 と ..even_in_deg.. 1 は同じ意味。
# eng_calc_even_in_eng_i1 1
# eng_calc_even_in_deg_i0 1
# eng_calc_even_in_deg_i1 1
# eng_calc_disp_unit_i0 1
# eng_calc_disp_unit_i1 1

### その 3 : 撮影に付随して行われた XAFS 測定の測定ファイルからエネルギーを決める方法
###          XafsM2 で、2D-Step, 2D-Quick, CT-XAFS 等の測定を行った場合、
###          必ず、通常の XAFS 測定と同じ形の測定ファイルができる。これを用いて各画像が
###          いくらのエネルギーで撮影された画像かを決める方法
# eng_by_ref_i0 XAFS-File-Name.dat    # XAFS-File-Name というファイルで i0 のエネルギーを決める
# eng_by_ref_i1 XAFS-File-Name.dat    # XAFS-File-Name というファイルで i1 のエネルギーを決める


### ** データの型の指定 **
# set_fluo_type 1                      # 1 : 蛍光型(I1/I0 をデータとする)、0 : 透過型(log(I0/I1) をデータとする)
# Use_I0 1                             # I0 を読んでいる時にそれを使うか使わないかの選択 1: 使う, 0: 使わない

### ***** エッジ判別の際の候補元素指定 *****
# Suggest_Elm               0        # 候補元素を指定する : 1, しない : 0
# Suggesting_Elm           Cu        # 候補元素名
# Suggesting_Edge           0        # 候補エッジ (0:K, 1:L1, 2:L2, 3:L3)
# Suggesting_Edge_eV  8984.36        # 候補エッジ位置(eV) 元素名/エッジ指定で得られるテーブル値を上書き
# Suggesting_Pre_End_eV   -10        # プリエッジの終点をどこにするか(候補元素エッジからの相対値, 通常負)[eV]
# Suggesting_Post_Start_eV 10        # ポストエッジの始点をどこにするか(候補元素エッジからの相対値, 通常正)[eV]

### ** データファイルの読み込みと消去 **
# clear_I0_files                       # 既に読み込まれているデータがあれば消去します。
# clear_I1_files                       
# load_I0_files new/add file-name1.img file-name2.img file-name3.img ...
                                       # 読み込むべきファイル名を全て書き並べることで指定できます。
				       # new/add が new の場合、既に読み込まれているファイルを消します。
				       # (clear_i0_files と同じ動作)
				       # add の場合、消さずに追加していきます。
				       # 数が多い場合、行末に '\' 記号を置くと、行を継続できます(複数行継続可)。
				       # 変則的な間隔でファイルを間引く場合などに便利かも。
# load_I1_files new/add file-name1.img file-name2.img file-name3.img ...
# load_I0_files_of_pattern new/add /home/tabuchi/Data/data-20210606/data001/ *.img
                                       # new/add の指定は load_i0_files と同じ。
				       # 次の /home/tabuchi/Data/data-20210606/data001/ はファイルがある場所。
				       # 最後はフォルダ名の区切り記号 '\'(Window) または '/'(Unix) です。
				       # *.img はファイル名のパタンです。
				       # 指定されたフォルダの、指定されたパタンに一致するファイルを読み込みます。
				       # 例 : *.img        :: 拡張子が .img のファイル全て
				       # 例 : *-001.img    :: 拡張子が .img でファイル名末尾が -001 のもの
				       #                      CT-XAFS の結果がひとまとめに納まったフォルダから、
				       #                      一つの角度についてだけ XAFS 解析する時に使うかも
				       # 例 : *8000eV*.img :: ファイル名に 8000eV という文字列を含むもの
				       #                      CT-XAFS の結果がひとまとめに納まったフォルダから、
				       #                      一つのエネルギーについて角度違いの像をまとめて
				       #                      見る時に使うかも
# load_I1_files_of_pattern new/add /home/tabuchi/Data/data-20210606/data002/ *.img

### ***** 読み込んだ画像の素朴な表示 *****
# xafs_view_normalize 1                # 表示する XAFS スペクトルを規格化されたものに 1:する、0:しない
# xafs_view_enerugy_correction 1       # 表示する XAFS スペクトルをエネルギー補正 1:する、0:しない
# move_position 300 1000               # カーソル位置を異動する。
# save_spectra /home/tabuchi/Data/xafs.dat
                                       # 表示されている XAFS スペクトルをテキストデータとして保存する
seek_image 10
seek_image 100

### ***** 読み込んだ画像データの解析に関する設定 *****
# analyzer_show_window                 # 解析の操作を行う window を表示する(しなくてもいい)
# analyzer_select_analysis_mode        # どの様な解析を行うかの指定
                                       # 0 : LCF/MLCF 解析
				       # 1 : 残差解析
				       # 2 : 元素解析
# set_band_w 0                         # 解析の際にデータを縦横に幾つ束ねるかの指定
# set_band_h 0                         # 0 : 中心1点だけ。
                                       # 1 : 中心1点プラス両脇1点ずつ = 3点
                                       # 2 : 中心1点プラス両脇2点ずつ = 5点...

# select_region 0 0 100 100            # 画面のどの範囲を解析対象にするかの指定
                                       # 数字は左上のX, Y, 右下の X, Y の順。
# set_i0_dark_area                     # 現在選択されている region を i0 の dark area に指定する
# set_i1_dark_area                     # 現在選択されている region を i1 の dark area に指定する
## clear_i0_dark_area                  # i0 dark area の指定解除
## clear_i1_dark_area                  # i1 dark area の指定解除

# select_region 254 447 1517 842       # 画面のどの範囲を解析対象にするかの指定
                                       # 数字は左上のX, Y, 右下の X, Y の順。
# zoom_in                              # 選択した範囲を画面いっぱいに表示する
# scale_reset                          # 表示範囲やスケールを元の状態に戻す

### アナライザに付随して表示される XAFS スペクトルに関して
# analyzer_view_normalize 1            # 表示する XAFS スペクトルを規格化されたものに 1:する、0:しない
# analyzer_view_enerugy_correction 1   # 表示する XAFS スペクトルをエネルギー補正 1:する、0:しない

### ** LCF/MLCF 解析 **
# analyzer_set_LCF_mode 1              # 0: LFC 解析、1: MLCF 解析

### LCF/MLCF 解析のための標準スペクトルの指定
### パラメータは先頭から
###  [No.] [UseF] [delta E] [ファイル名] [isVic]
###  [No.]       : 何番目の標準スペクトルにセットするか
###  [UseF]      : 「解析に使用する」チェックを 1: 入れる、0 入れない
###  [delta E]   : エネルギー補正値
###  [ファイル名] : ファイル名
###  [isVic]     : プリエッジ、ポストエッジを直線近似するか、Victreen 近似するかの指定。0 : 直線、1 : Victreen
# analyzer_set_LCF_std 0 0 0.0 /home/tabuchi/Data/00-Std/20171006-000-Std-Cu-01-f.dat 1
# analyzer_set_LCF_std 1 1 0.0 /home/tabuchi/Data/00-Std/20171006-000-Std-Cu2O-01-f.dat 1
# analyzer_set_LCF_std 2 1 0.0 /home/tabuchi/Data/00-Std/20171006-000-Std-CuO-01_000-f.dat 1

# analyzer_exec_LCF                    # LCF/MLCF 解析実行


### ** 残差解析 **
### 有る元素 A を考える。
### A の吸収端でのエッジジャンプ量を Δμt とし、
### 吸収端直前の実測の吸収量を μt_p とする。
### もし A が単独で存在しているなら、
### プリエッジでの吸収量はエッジジャンプ量にある比例係数 α で比例して、αΔμt であるはず。
### 従って、実際のプリエッジの吸収量と αΔμt の差
### μt_p - αΔμt は、A 意外の元素の存在による。
### この μt_p - αΔμt のマップを作る解析。
# analyzer_set_ra_energy 8000          # 残差の大きさを計算するエネルギー点(吸収端)
# analyzer_set_ra_factor  0.3          # α
# analyzer_exec_ra                     # 残差解析実行


### ** 元素解析 **
### 複数の吸収端に渡るスペクトルを解析対象にして、
### 各点で指定された元素(複数)のエッジジャンプ量を得、
### 場所によってその比がどの様に変化するか、どの程度類似しているかを解析する。
# analyzer_elems_sort_by_an 1          # 解析対象元素が指定された時、原子番号順に 1:並べる、0:並べない
analyzer_target_elements "Fe"
                                       # 解析対象元素の指定
				       # Ti-K, Cu-L, Cu-L3 等の形でエッジの指定が可能
                                       # エッジの指定が無ければ K と仮定する
# analyzer_elems_select_target Fe-K    # 注目する(主たる)元素の指定、名前で "Fe-K" でも、
# analyzer_elems_select_target 4       # 0:Ti, V:1, Cr:2, Mn:3, Fe:4 の 4 で指定しても良い
# analyzer_elems_select_show Mn-K      # Δμt の大きさの表示等を行う際、どの元素の値を表示するかの指定
# analyzer_elems_select_show 3         # 数字で指定しても良い
# analyzer_elems_set_deVs 20           # エッジジャンプの大きさをu判断する時、吸収端前後にどれだけ離れた位置の
                                       # 吸収量の差で計算するかの指定
# analyzer_elems_select_disp_mode      # 表示するマップの種類。0: Δμt, 1:規格化Δμt, 2:類似度, 3:閾値越え
# analyzer_elems_set_corr_th 0.99      # 類似度の閾値の指定
# analyzer_elems_set_use  V-K 0        # 類似度の判定に指定元素を使用 1: する、0 しない
# analyzer_elems_set_use  Ti-K 0       # 類似度の判定に指定元素を使用 1: する、0 しない

# analyzer_elems_roi    Fe-K 7111 7116 # 指定されたエネルギー範囲の積分値を計算する
# analyzer_elems_thDMut Fe-K 0.1       # ROI の計算をする際の最低限の Δμt の指定
# analyzer_elems_bgVal  Fe-K -1        # thDMut に届かなかった部分を埋める値
# analyzer_elems_no_neg Fe-K 1         # ROI値が負になる時は範囲外の判断をする

# analyzer_exec_elems                  # 元素解析実行


### **** データの表示と、保存に関する設定 ****
# select_disp_image 3                  # 何を表示するか 0: I1, 1: I0, 2: ΔE, 3:解析結果
### LCF/MLCF
# analyzer_select_image 1              #  LCF/MLCF, 残差解析画像の何番目のモノを表示するか
                                       #  0: LCF/MLCF の 標準1
				       #  1: LCF/MLCF の 標準2
				       #  4: 残差Δμt, 5: 残差, 6: 残差比率
				       #  元素解析を選択している時は、元素解析側で指定できる
# analyzer_select_image_type 1         #  0: LCF/MLCF の比率, 1: LCF/MLCF のΔμt

### ** カラースケールに関する設定 **
# analyzer_set_fixed_scale 1           # 固定スケールに 1: する, 0: しない
# analyzer_set_scale_max   1.0         # 固定スケールの時の Δμt, 比率 両方の最大値
# analyzer_set_scale_min   0.0         # 固定スケールの時の Δμt, 比率 両方の最小値
# analyzer_set_dMut_scale_max 2.5      # 固定スケールの時のΔμtの最大値
# analyzer_set_dMut_scale_min 0.5      # 固定スケールの時のΔμtの最小値
# analyzer_set_ratio_scale_max  1.0    # 固定スケールの時の比率の最大値
# analyzer_set_ratio_scale_min  0.0    # 固定スケールの時の比率の最小値

### ** データ保存に関する設定 **
### データとしての保存(tiff 形式またはテキスト形式)
### 色で表現できる範囲(0-255)を越え、完全な情報を 保ったデータとして保存
# saveDataCfg_show_window 1            # データ保存に関する設定設定ウインドウを表示する
# saveDataCfg_save_as_tiff 1           # データを tiff 形式で保存する
# saveDataCfg_save_as_text 1           # データを text 形式で保存する
# saveDataCfg_tiff_fix_scale 1         # 保存する際のカラースケールを
# saveDataCfg_tiff_scale_max 1.0       # 固定するスケールの最大値
# saveDataCfg_tiff_scale_min 0.0       # 固定するスケールの最小値
# saveDataCfg_tiff_as_analyzed 1       # 解析を行った範囲と解像度で保存 1: する。 0: しない (0なら全画面全点保存)
# saveDataCfg_text_as_csv 1            # テキスト形式を選んだ場合 CSV で保存
# saveDataCfg_text_as_ssv 1            # テキスト形式を選んだ場合スペース区切りで保存
# saveDataCfg_text_as_xyz 1            # テキスト形式を選んだ場合行を座標X, 座標Y, 値Z とする
# saveDataCfg_text_as_vals 1           # 各行を画像の 1列部分のデータがズラッと並んだ長い行にする

# save_data /home/tabuchi/Data/test/img001.tiff
                                       # ファイル名を指定してデータとしての保存を実行
# save_data_as_tiff /home/tabuchi/Data/test/img001.tiff
                                       # save_data と同じ動作。saveDataCfg... の設定で

# save_image /home/tabuchi/Data/test/img001.png
                                       # 表示されている画像を、表示されているママの画像として保存
				       # データの変化できる幅は色で表現できる範囲に圧縮される。
# save_all_images /home/tabuchi/Data/img001.png
                                       # LCF/MLCF 解析等の複数の解析結果を一度に「ママの画像として」保存する
				       # 指定したファイル名はベースとして使われ、適宜サフィックスが追加される。

### ********* メタコマンド ***********
### バッチ処理の進行に影響するコマンド

# :for loop1 $i 0001 0100 1            # :next loop1 ("loop1"は任意のラベル)までの間を
                                       # $i の値を 0001 から 0100 まで値を 1 ずつ変えながら実行する。
				       # $i は整数として繰り上がるが、0001, 00001 などと指定すると
				       # 指定された桁数に合わせて頭に 0 が入ります。
# :next loop1                          # 対応するラベル("loop1")を持つ for の位置に戻って繰り返し
# :echo 好きな文字列                    # バッチ処理のログに「好きな文字列」を残すだけのコマンド
# :let VAL_NAME value                  # バッチファイル中に $VAL_NAME$ という文字列が現れた時 valu で置き換える。
#                                      # デフォルトで $DataRoot$ の値(value)は config.cfg 等で指定した DataRoot	の値になっている。
# :rem_start                           # rem_end とペアで使う。ここからのコマンドをコメントとみなして実行しない
# :rem_end                             # rem_start とペアで使う。ここまでのコマンドをコメントとみなして実行しない

# :end                                 # バッチファイルの解釈をこの場所でやめる

### ** メタコマンドを使った処理の例 **
# :for 



