データ品質について#
はじめに#
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)を優先する設計になっています。不正なデータが来たとき:
データを保存しない: 不正なデータはCSVファイルに保存されず、自動的にスキップされます
DAQを停止しない: 1行のノイズで全体の測定が止まることはありません
ユーザーに通知する: 警告ログを表示して、問題があったことを通知します
つまり、データの品質は保証され、測定の継続性も確保されるという設計です。
ログメッセージの読み方#
警告ログの例#
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」が多く表示される#
確認項目#
ケーブルの接触
USB ケーブルをコンピューターとOSECHIの両方から抜いて、再度接続
ケーブルが破損していないか確認
ケーブル周辺のノイズ
USB ケーブルを他の電子機器(冷蔵庫、モニター等)から遠ざける
金属机ではなく、木机で実験する
ボーレート設定
現在のボーレートを確認:
cat daq.toml | grep baudrateデフォルト(115200)以外が設定されていないか確認
OSECHI検出器の状態
検出器の電源がしっかり入っているか
検出器のLEDが点灯しているか
数分間待ってから再度試す(ウォームアップ完了を待つ)
問題:「haniwers port test」でエラーが出る#
haniwers-v1 port test /dev/ttyUSB0
対応方法#
エラー |
原因 |
対応 |
|---|---|---|
Connection timeout |
検出器がデータを送信していない |
検出器の電源確認、ケーブル接続確認 |
Permission denied |
ポートアクセス権限がない |
|
Port not found |
ポート名が間違っている |
|
問題:「すべてのデータがスキップされた」#
これは異常です。以下を確認してください#
ポート名が正しいか
haniwers-v1 port list
ボーレートが正しいか
grep baudrate daq.toml
OSECHI検出器が動作しているか
haniwers-v1 port test /dev/ttyUSB0
タイムアウト値が短すぎないか
grep timeout daq.toml
マイクロ秒単位の値を確認。基本的には 1.0 以上を推奨。
ベストプラクティス#
良いデータ取得のために#
測定前のチェック
# 毎回、測定開始前にポートをテスト haniwers-v1 port test /dev/ttyUSB0
長時間の測定の前に短テストを
# 10秒程度の短いDAQで動作確認 haniwers-v1 daq --config daq.toml --duration 10
環境の最適化
金属机を避ける
USB ハブの使用を避ける(直接つなぐ)
他の USB デバイスを外す
ログをチェック
毎回の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間で異なるため、同じハードウェアでも環境によってノイズの影響が変わることがあります。最適なボーレートやタイムアウト値も環境依存です。
参考資料#
ポート管理ガイド: シリアルポートの確認とテスト方法
DAQ設定ガイド:
daq.tomlの詳細パラメータトラブルシューティング: より詳しい問題解決方法