深度データは圧力センサーによって記録されますが、センサーの経年劣化や温度ドリフトの影響により補正が必要になる場合があります。このプログラムは、水面付近での深度と温度データを用いて、深度のオフセットと温度ドリフトを補正します。補正アルゴリズムは、Sakamoto (2019) により公開されたIgor Pro用アドインプログラム「WaterSurface」の手法に基づいており、Pythonで再現されたものです。ただし、PythonとIgorではガウス関数の実装が若干異なり、さらに本プログラムではヒストグラムのスムージングを行った後にガウスフィッティングを適用しているため、出力結果に若干の違いが生じます。アルゴリズムや理論的背景についての詳細は、Sakamoto (2019) をご参照ください。具体的な処理は以下の通りです。
・水面付近の深度データのヒストグラムを作成し、ガウスフィッティングを実行してデータを抽出します。
・水面付近の温度と深度の関係を線形回帰でモデル化し、温度ドリフトを補正します。
・補正後の深度データに対して再度ヒストグラムを作成し、ガウスフィッティングを行います。
図上:補正前の深度データのヒストグラム。
スムージングされたヒストグラム(青線)とガウスフィット(赤線)。
図中:水面付近の温度と深度の散布図。回帰直線(赤線)と相関係数を表示。
図下:補正後の深度データのヒストグラム。
スムージングされたヒストグラム(青線)とガウスフィット(赤線)。
上記の図はdata_dt.csv*を元に作成しました。
*BiPでOpenデータとなっているKagari Aoki (Teikyo University of Science) 提供のマッコウクジラの潜水データ (title: SW20130726_Rausu_R13_141_27_BiP-TDR_DepthTempSpeed3Acc3Mag_87663_release20130727) の一部を使用しています。
実行方法
プログラム(watersurace.py)とデータ(data_dt.csv)をダウンロードして、Pythonのプロンプト上でそれらを保存したディレクトリに移動して、以下のコマンドを実行します。
python watersurface.py
ファイル名(data_dt)を入力すると補正前後の水面付近の平均と標準偏差、および上記のグラフが表示され、補正された深度データ(data_dt_corrected.csv)が出力されます。補正前の平均深度は -3 m付近にありましたが、補正後は 0 m付近にあるため補正がうまく行われたようです。
(base) D:\Python watersurface.py CSVファイル名(拡張子は不要)を入力してください: data_dt 補正前の深度のガウスフィット: 平均深度: -2.9749999999999557, 標準偏差: 0.06996469352001226 補正後の深度のガウスフィット: 平均深度: 0.03272857910876044, 標準偏差: 0.07460760081153389 補正結果を保存しました: data_dt_corrected.csv