データ品質について#

はじめに#

haniwersでデータを取得しているとき、時々「何かおかしい」と感じることがあるかもしれません。このドキュメントでは、データ品質の問題と、haniwersがそれにどのように対応しているかを説明します。

よくある問題:検出器からのノイズ#

症状#

データを取得しているとき、ログに以下のようなメッセージが表示されることがあります:

WARNING | Skipped invalid/empty detector line (total skipped: 1)
WARNING | Skipped invalid/empty detector line (total skipped: 2)
WARNING | Skipped invalid/empty detector line (total skipped: 5)

原因#

OSECHI検出器がシリアル通信でhaniwersにデータを送るとき、ときどき以下のようなことが起こります:

  • 通信ノイズ: USB ケーブル付近の電磁ノイズが原因で、データが破損する

  • 一時的な障害: 検出器がデータを送信する途中で通信が途切れる

  • ハードウェア問題: 検出器またはコンピューターのシリアルポートの接触不良

結果として、検出器は以下のような「不正なデータ」を送信することがあります:

空の行(データなし)
100 150 120 1 0      <- フィールド数が足りない(本来は7フィールド)
abc 150 120 1 0 25.5 24.8  <- 数値が入るべき位置に文字がある

haniwersの対応#

haniwers堅牢性(robustness)を優先する設計になっています。不正なデータが来たとき:

  1. データを保存しない: 不正なデータはCSVファイルに保存されず、自動的にスキップされます

  2. DAQを停止しない: 1行のノイズで全体の測定が止まることはありません

  3. ユーザーに通知する: 警告ログを表示して、問題があったことを通知します

つまり、データの品質は保証され、測定の継続性も確保されるという設計です。

ログメッセージの読み方#

警告ログの例#

WARNING | Skipped invalid/empty detector line (total skipped: 3)
WARNING | Skipped invalid/empty detector line (total skipped: 4)

意味#

  • 「Skipped invalid/empty detector line」: 検出器から受け取ったデータが不正な形式だった

  • 「total skipped: 4」: これまでのDAQセッションでスキップされたデータは合計4行

問題があるかどうかの判断#

スキップ数

判断

対応

0~1

正常

特に何もしなくて大丈夫

2~10

やや注意

ケーブルの接触やノイズをチェック

11~

要確認

検出器またはコンピューターの問題を調査

データ品質の確認方法#

1. ログメッセージで確認#

DAQ実行中、ターミナルを見ていて警告メッセージが出ていないか確認します:

$ haniwers-v1 daq --config daq.toml
# ← ここでログメッセージを見ます

メッセージが出ていなければ、全てのデータが正常に受け取られています。

2. CSVファイルで確認#

DAQが完了後、生成されたCSVファイルを確認します:

# 出力ファイルの行数を確認
wc -l 20250102/osechi_data.csv
# 出力例: 1001 20250102/osechi_data.csv (ヘッダー行 + 1000行のデータ)

行数が期待値より大幅に少ない場合は、通信問題の可能性があります。

3. データの内容で確認#

# 最初の数行を確認
head -5 20250102/osechi_data.csv

# 最後の数行を確認
tail -5 20250102/osechi_data.csv

全てのフィールドが正常に数値で埋まっていれば、データは正常です。

トラブルシューティング#

問題:「Skipped invalid line」が多く表示される#

確認項目#

  1. ケーブルの接触

    • USB ケーブルをコンピューターとOSECHIの両方から抜いて、再度接続

    • ケーブルが破損していないか確認

  2. ケーブル周辺のノイズ

    • USB ケーブルを他の電子機器(冷蔵庫、モニター等)から遠ざける

    • 金属机ではなく、木机で実験する

  3. ボーレート設定

    • 現在のボーレートを確認:cat daq.toml | grep baudrate

    • デフォルト(115200)以外が設定されていないか確認

  4. OSECHI検出器の状態

    • 検出器の電源がしっかり入っているか

    • 検出器のLEDが点灯しているか

    • 数分間待ってから再度試す(ウォームアップ完了を待つ)

問題:「haniwers port test」でエラーが出る#

haniwers-v1 port test /dev/ttyUSB0

対応方法#

エラー

原因

対応

Connection timeout

検出器がデータを送信していない

検出器の電源確認、ケーブル接続確認

Permission denied

ポートアクセス権限がない

sudoで実行、またはユーザー権限の設定

Port not found

ポート名が間違っている

haniwers-v1 port listで確認

問題:「すべてのデータがスキップされた」#

これは異常です。以下を確認してください#

  1. ポート名が正しいか

    haniwers-v1 port list
    
  2. ボーレートが正しいか

    grep baudrate daq.toml
    
  3. OSECHI検出器が動作しているか

    haniwers-v1 port test /dev/ttyUSB0
    
  4. タイムアウト値が短すぎないか

    grep timeout daq.toml
    

    マイクロ秒単位の値を確認。基本的には 1.0 以上を推奨。

ベストプラクティス#

良いデータ取得のために#

  1. 測定前のチェック

    # 毎回、測定開始前にポートをテスト
    haniwers-v1 port test /dev/ttyUSB0
    
  2. 長時間の測定の前に短テストを

    # 10秒程度の短いDAQで動作確認
    haniwers-v1 daq --config daq.toml --duration 10
    
  3. 環境の最適化

    • 金属机を避ける

    • USB ハブの使用を避ける(直接つなぐ)

    • 他の USB デバイスを外す

  4. ログをチェック

    • 毎回のDAQ完了後、ログメッセージを確認

    • 「Skipped」メッセージが0なら完璧

記録とトレンド管理#

複数回の測定を行う場合、各回のスキップ数を記録しましょう:

日時

スキップ数

環境

コメント

2025-01-10

0

オフィス

良好

2025-01-11

2

オフィス

ノイズあり

2025-01-12

15

ラボ

要確認

増加傾向が見られたら、機器の不具合を疑ってください。

よくある質問#

Q: スキップ数が1~2で大丈夫ですか?#

A: 大丈夫です。通常のシリアル通信では、このレベルのノイズは避けられません。データ品質への影響はほぼなし。

Q: 全てのデータをスキップしたくありません#

A: haniwersは不正なデータをスキップするだけです。正常なデータは全て保存されます。スキップされるのは本当に不正なデータだけなので、ご安心を。

Q: ケーブルを交換したら改善しました#

A: USB ケーブルの経年劣化やノイズ影響はよくあります。新しいケーブル(シールド入り)に交換することをお勧めします。

Q: Linux/macOS/Windows で結果が異なります#

A: シリアル通信の実装がOS間で異なるため、同じハードウェアでも環境によってノイズの影響が変わることがあります。最適なボーレートやタイムアウト値も環境依存です。

参考資料#