Sequential Spectroscopic Measurements
メニュー:Tools > Sequential Spectroscopic Measurements
試料室内にある複数の圧力マーカー(ルビー、Sm2+:SrB4O7)の位置を記憶しておき、Pos1 からの相対移動 → FluoRaPressée (FRP) の API によるスペクトル測定・圧力計算、を全位置について自動で行うアプリケーションです。 シーケンスが終わると、全位置の平均圧力(誤差付き)と、マーカーが混在している場合はマーカーごとの平均圧力を表示します。
Sequential Relative Moves の発展版ですが、こちらはステップごとに停止せず、最後まで自動で実行します。
事前準備
- FRP 側でキャリブレーション(波長軸、nm)と 1-D スペクトルモードを設定し、API サーバーを起動しておきます。
- 接続先と API キーは Settings → Online spectrometer で設定します。
- 温度補正を使う場合は LakeShore 335 を接続しておきます(Ch B の実測値を使用します)。
- FRP の中心波長はこのアプリからは変更しません。ルビーと Sm2+:SrB4O7 を混在させる場合は、両方のピークが測定範囲に入るように設定してください。λ₀ が取得範囲外にある場合は、Status 欄に ⚠ 付きの警告を表示します。
位置テーブル
| 列 | 内容 |
|---|---|
| Pos | 測定順の番号。Pos1 が相対移動の原点 |
| Record current pos | 押した時点の Ch3/Ch4/Ch5 の値を記録 |
| ΔCh3/ΔCh4/ΔCh5 (µm) | Pos1 からの相対位置(表示のみ) |
| Marker | Ruby または Sm2+:SrB4O7 |
| λ₀ (nm) | その位置のマーカーのゼロ圧力ピーク位置(必須。Ruby 690–700 nm、Sm 680–690 nm) |
| T₀ (K) | λ₀ を測定した温度。そのマーカーで温度補正が ON の場合のみ必須 |
| λ (nm) | 測定されたピーク位置(ルビーは R1) |
| P (GPa) | 圧力と FRP のフィット誤差 |
| Status | 判定結果、測定時の温度と EM Gain、試行回数(2 回以上の場合)、保存しなかった場合は「not saved」 |
- 内部では各位置の Ch3/Ch4/Ch5 の絶対パルス値を保存し、相対位置は Pos1 との差から計算します。
- Pos2 以降は Pos1 を記録してからでないと記録できません。
- Pos1 を記録し直すと、他の全位置の記録が消去されます。他の位置もすべて記録し直してください(確認ダイアログが出ます)。
- テーブルと設定は Save setup… / Load setup… で JSON に保存・読込できます。前回の内容はウィンドウを閉じたときに自動保存され、次回起動時に復元されます。
マーカーごとの設定
テーブルに含まれるマーカーの設定欄だけが表示されます(ルビーだけのシーケンスでは Sm の設定欄は出ません)。 同じマーカーの位置はすべて同じ設定を使います。
| 項目 | 内容 |
|---|---|
| Pressure scale | 圧力スケール。既定値はなく、必ず選択する |
| Temperature correction | 温度補正の ON/OFF(マーカーごとに独立) |
| Correction scale | 温度補正式(ON の場合のみ) |
| Fit function / Baseline | FRP のフィット函数とベースライン |
| Fitted peaks | ルビーは 2 本(R1, R2)で、圧力計算には R1 を使用。Sm は 0-0 線の 1 本(変更不可) |
| Fit range | Whole spectrum(全域)または Fixed(固定範囲、nm) |
| R² minimum | 最終的にこれを下回った点は「Low R²」として平均から除外し、スペクトルも保存しない |
| Exposure time / Accumulations | 各位置の最初の測定で FRP に送る露光時間と積算回数 |
| EM gain | Set にチェックすると、そのマーカーの各位置の最初の測定で、FRP のカメラの EM Gain をこの値にします。チェックしない場合は、シーケンス開始時の FRP の値を使います(EM Gain のないカメラではチェックしないでください) |
| Optimise when R² is below the minimum | R² が基準に届かないときに、露光条件を変えて測定し直す(下記) |
| EM gain maximum / Maximum accumulations | 最適化で上げる EM Gain と積算回数の上限 |
対応しているスケール:
- Ruby:圧力スケール 8 種(Shen 2020 ほか)、温度補正 6 種(Kobayashi unpublished、Yen and Nicol 1992、Ragan 1992、Datchi 2007 HT/LT、Wei 2024)
- Sm2+:SrB4O7:圧力スケール 4 種(Datchi 1997、Datchi 2007、Rashchenko 2015、Wei 2024)、温度補正 2 種(Datchi 2007、Wei 2024。どちらも 296 K 以上が有効範囲)
温度補正が ON のマーカーがある場合、開始ボタンの横に LakeShore Ch B の現在温度が表示されます(約 1 秒ごとに更新)。
実行
- ステージを手動で Pos1 に合わせます。
- 保存先ディレクトリを指定し、Start sequence を押します。開始時の位置が Pos1 として扱われます。確認ダイアログには、記録済みの Pos1 からのずれが表示されます。
- ステージを動かす前に、以下をすべて確認します。どれかに問題があれば、ステージは動かずに開始を中止します。
- 入力値(λ₀、T₀、スケール、保存先)
- FRP の状態(1-D モード、波長校正済み)
- 温度補正 ON の場合、LakeShore Ch B の値が 10 秒以内に更新されていること
- 全目標位置のソフトリミットと移動制約
- EM gain を設定する場合、その値がカメラの対応範囲(FRP が返す最小値・最大値・刻み)に入っていること
- 各位置で Ch5 → Ch4 → Ch3 の順に移動し、温度を読んでから FRP
POST /acquire/pressureで測定します。EM gain を設定している場合は、現在値と異なるときだけ測定の直前に変更します。 - 全位置の測定が終わると自動的に Pos1 に戻ります。
R² が基準に届かないときの最適化
Optimise when R² is below the minimum にチェックしたマーカーでは、Experimental Scheduler と同じアルゴリズム(共通のコード)で測定し直します。
- 飽和した場合:露光時間を半分にし、積算回数は 1 に戻します(最大 3 回、0.01 s 未満にはしません)。
- R² が基準未満、またはフィット失敗の場合:EM Gain を 2 倍にします(上限は EM gain maximum とカメラの最大値の小さい方。カメラの刻みに合わせます)。EM Gain が上限に達したら、積算回数を 1 回ずつ増やします(上限は Maximum accumulations)。
- それでも基準に届かなければ、その位置は諦めて次の位置に進みます。
- 各位置は、毎回そのマーカーの設定値(露光時間・積算回数・EM Gain)から始めます。前の位置で上げた値は引き継ぎません。
- EM Gain が読み取れない、または変更できないカメラでは、積算回数だけで最適化します。
- Experimental Scheduler の近傍探索(ルビー位置の探索)は組み込んでいません。
フィット失敗・R² 不足・温度範囲外の点は記録したうえで次の位置に進みます。 FRP や LakeShore との通信エラー、または Emergency Stop の場合はその場で中断し、Stay here か Return to Pos1 を選びます。
停止と終了
- Emergency Stop を押すと、全モーターの停止がコントローラーで確認されるまで状態を表示します。停止コマンドを送れなかった場合や、停止を確認できなかった場合は警告ダイアログを出します。その場合は前面パネルなどで手動で停止し、コントローラーを確認してください。
- 停止コマンドを送れなかった場合や停止を確認できなかった場合は、停止未確認の状態になります。この状態では次のようになります。
- Emergency Stop は押せるままです。もう一度押して停止が確認できれば解除されます。
- 新しいシーケンスは開始できません。
- このウィンドウを閉じるには、「ステージが止まっていることを確認したか」という問いに Yes と答える必要があります。
- 実行中にこのウィンドウを閉じようとすると、確認のうえで停止を要求し、停止が確認できた時点で自動的に閉じます。待っている間も画面は操作できます。停止を送れなかった場合や確認できなかった場合は、自動では閉じません。
- 実行中・停止の確認中・停止未確認のいずれかの間は、起動元のメインウィンドウ(BL-18C controller)を閉じることはできません。
結果
- 各位置の判定:
OK(平均に使用)、Low R²、Saturated、T out of range(温度補正式の有効範囲外)、Invalid(フィット失敗など)、Not measured - 平均圧力は
OKの点だけから計算し、各点の FRP フィット誤差 を伝播させます。
- マーカーが混在している場合は、全体平均に加えてマーカーごとの平均も表示します。
- 測定後に λ₀・T₀・マーカー・マーカー設定のどれかを変更すると、画面上の結果は消去されます(古い条件の圧力が残らないようにするため)。保存済みのファイルはそのまま残ります。
保存ファイル
指定ディレクトリの下に、実行ごとに日時名のサブディレクトリ(YYYYMMDD_HHMMSS)を作ります。
スペクトルのファイル(npz・csv・png)は、R² の基準を満たした最終測定のものだけを保存します。最適化の途中の測定や、最後まで基準に届かなかった位置のスペクトルは保存しません(その位置も master.csv には 1 行記録されます)。
| ファイル | 内容 |
|---|---|
posNN_<marker>_<時刻>.npz | スペクトル・フィット曲線・FRP の応答全体 |
posNN_<marker>_<時刻>.csv | スペクトルとフィット曲線(条件は # ヘッダー行) |
posNN_<marker>_<時刻>.png | フィット結果と圧力計算条件のプロット |
master.csv | 1 位置 1 行:記録位置・目標位置・λ₀・T₀・使用温度・スケール・最終測定の露光条件(露光時間・積算回数・EM gain)と試行回数・フィット結果・圧力・判定 |
summary.json | 開始/終了時刻、結果、平均圧力、全設定 |
master.csv と summary.json は各位置の測定ごとに書き直されるため、途中で中断してもそれまでの結果が残ります。
ディスク容量不足などで書き込みに失敗しても測定は続行し、終了時に Save Error ダイアログで知らせます。
現在の制限
- 回折格子(中心波長)の自動切り替えには未対応です。
- シーケンスで変更した EM Gain は、終了後も元の値には戻しません。
- Experimental Scheduler にある近傍探索(最適座標の探索)には未対応です。
デバッグモード
python main.py --debug、または python apps/seq_spectro/seq_spectro_app.py で単独起動した場合は、ステージと FRP の両方がシミュレーションになります(圧力は約 5 GPa の合成値)。