深度データは圧力センサーによって記録されますが、センサーの経年劣化や温度ドリフトの影響により補正が必要になる場合があります。このプログラムは、水面付近での深度と温度データを用いて、深度のオフセットと温度ドリフトを補正します。補正アルゴリズムは、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
プロンプトに従って深度・温度データが含まれたCSVのファイル名(data_dt、拡張子なし)を入力し、必要なパラメーターを入力(未入力の場合は既定値が適用)すると補正前後の補正前→回帰→補正後の図が表示され、<name>_corrected.csv が出力されます。
入力CSVファイル名(拡張子 .csv 省略可): data_dt --- パラメータ設定(未入力で既定値を採用)--- ヒストグラム下限深度 [m](例: -10)(未入力=-10.0): ヒストグラム上限深度 [m](例: 10)(未入力=10.0): ビン数(例: 400)(未入力=400): 平滑化の sigma(例: 1.0)(未入力=1.0): 水面帯の幅(平均 ± k*SD の k 値, 例: 3.0)(未入力=3.0): 出力CSVの接尾辞(例: _corrected)(未入力=_corrected): 保存する図のファイル名(例: watersurface_summary.png)(未入力=watersurface_summary.png):
