thresholds/scanner.py 設計概要#

🎯 モジュールの目的#

  • スレッショルドスキャン処理を担う。

  • 各チャネルに対して指定された範囲のしきい値を順に適用し、一定時間のヒット数を測定する。


🧩 実装すべき関数一覧#

1. scan_channel#

  • 単一チャネルに対してスキャンを実行する。

  • SensorConfig.threshold_range() に従ってループし、各しきい値でヒット数を測定する。

  • 戻り値は (threshold, count) のタプルのリスト。

2. scan_all_channels_serial#

  • 各チャネルを順番にスキャンする。

  • スキャン対象以外のチャネルはマスク(例:しきい値500)される。

  • 全チャネル分の結果を辞書形式で返す。

3. scan_all_channels_parallel#

  • 各チャネルに対してスレッショルドを逐次設定した後、並列でスキャンを実行する。

  • スレッドなどを用いて時間短縮を狙う。

  • 実行にはデバイスの動作特性に注意が必要。

4. save_scan_data#

  • スキャン結果をCSVまたはJSONでファイル保存する。

  • CLIの --out オプションで出力先を指定できる設計を想定。

5. load_scan_data#

  • スキャン結果をCSVまたはJSONから読み込み、後段の fitter などで再利用可能にする。


🔧 内部補助関数(必要に応じて)#

  • set_threshold: 特定のチャネルにしきい値を設定する。

  • count_hits: 一定時間のヒット数を測定する。


🧱 使用するデータモデル:SensorConfig#

  • label: チャネル名(“top”, “mid”, “btm” など)

  • start_threshold: スキャン開始のしきい値

  • num_steps: ステップ数(測定点数)

  • step_size: スレッショルド値のステップ幅

  • threshold: 最終的に設定されるしきい値(Optional)

補助メソッドとして threshold_range() を持ち、range(start, stop, step) を返す。


⚙ スキャンモードの切替(CLI想定)#

  • serial: マスク付きで1チャネルずつスキャン(デフォルト、安全)

  • parallel: 全チャネルにスレッショルドを設定後、並列にカウント測定(高速化)

CLI側では --mode serial または --mode parallel のように切り替え可能とする設計。


📁 モジュール構成例(一覧)#

  • scan_channel

  • scan_all_channels_serial

  • scan_all_channels_parallel

  • save_scan_data

  • load_scan_data

  • set_threshold(補助)

  • count_hits(補助)