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_channelscan_all_channels_serialscan_all_channels_parallelsave_scan_dataload_scan_dataset_threshold(補助)count_hits(補助)