gprpy について
gprpyは、GPRPy 1.0.14を使った地中レーダー(GPR)処理のスキルです。研究者向けに、処理の監査可能性と慎重な解釈を重視した再現可能な手順を提供します。
主な機能
- 01対応するMALA、Sensors & Software、GSSI形式の読み込み
- 02選択した処理操作の適用
- 03生配列と中間配列の保持
- 04パラメーター、軸、ソースチェックサムの記録
- 05処理結果と来歴情報の出力
活用シーン
- 01生振幅を保持しながらレーダープロファイルを処理
- 02再現に向けた処理選択の記録
- 03根拠を記した時間または深度データの作成
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ steadfastasart/ geoscience-skills --skill gprpyインストール後、Claude Code で/gprpyを入力して読み込まれたか確認します。
同梱ファイルreferences/processing_steps.mdscripts/process_gpr.py
詳細
監査可能な GPR 処理
GPRPy は (samples, traces) の形状を持つ配列で動作します。物理軸を割り当てる前に、取得メタデータを確認してください。トレースインデックスは距離ではありません。また、レーダーベンダーの SEG-Y 間隔フィールドには、文書化された時間スケールが必要な場合があります。不明な単位は明示的に保持してください。汎用的な材料検索から現場の速度を取得し、実測値として提示しないでください。
読み込みと選択の操作
GPRPy 1.0.14 は、MALA の .rad/.rd3、Sensors & Software の .DT1/.HD、GSSI の .DZT、および文書化された BSQ 入力をネイティブに読み込みます。ネイティブの .gpr ファイルは Python の pickle セッションであり、MALA の交換形式ではありません。信頼できるセッションのみを読み込んでください。GPRPy は SEG-Y のネイティブな読み込みやエクスポートには対応していません。
import gprpy.gprpy as gp
profile = gp.gprpyProfile()
profile.importdata('profile.rad') # requires matching profile.rd3
raw = profile.data.copy()
profile.dewow(window=64) # argument is sample count, not ns
ユーザーの質問に答えるために、適切な操作を選択してください。dewow(window) と agcGain(window) はサンプル数を受け取り、remMeanTrace(ntraces) はトレース数を受け取ります。背景除去によって、実在する連続反射面が取り除かれることがあります。時間べき乗ゲインは振幅スケーリングを変更するものであり、較正済みの減衰補正ではありません。生の配列を保持し、適用した操作をすべて記録してください。ウィンドウの端部での動作と有効な内部サポート範囲には、特に注意が必要です。詳しくは処理リファレンスを参照してください。
setVelocity(velocity) は m/ns を使用し、オフセットゼロの一定速度シナリオ depth = twtt * velocity / 2 を計算します。速度の推定や反射面のマイグレーションは行いません。まず、時間ゼロとアンテナオフセットに関する前提を解決してください。ネイティブの往復走時と、仮定した深度の両方を保持し、速度とその不確実性を裏付ける独立した測定値を明記してください。
再現可能なヘルパー
処理ヘルパーは、テスト済みの .rad/.rd3 および .sgy/.segy の経路に対応しています。後者では、実際の GPRPy 処理の前に segyio を明示的に使用します。profile.npz と processing.json を書き込み、そこから読み戻します。NPZ の読み込みでは allow_pickle=False を使用します。出力には、生の振幅、中間配列、最終振幅、元のサンプル/トレースインデックス、利用可能な物理軸、ソースのチェックサム、パラメーター、選択されたエンコード済みヘッダーフィールドが含まれます。新しい出力ディレクトリを使用するため、以前の結果が黙って上書きされることはありません。
python scripts/process_gpr.py profile.rad --metadata sampling.json \
--output processed --dewow-samples 64
パスは、インストール済みスキルディレクトリを基準に解決してください。sampling.json には、source_note、sample_interval_ns、time_origin_ns、trace_spacing_m、profile_origin_m、horizontal_crs、vertical_reference が含まれます。不明な時間や間隔には JSON の null を使用し、由来を source_note で説明してください。物理サンプリングが均一であるためには、有限の原点と正の間隔が必要です。不規則な位置には、別途検証済みのジオメトリ経路が必要です。実在しない規則的な測線に置き換えないでください。
非負の物理時間が既知の場合に限り、--gain-power を指定してください。明示的にラベル付けされた、オフセットゼロの一定速度による深度シナリオに限り、--velocity-m-ns を指定してください。時間較正が未解決の場合、どちらも拒否されます。デフォルトでは、どの処理ステップも有効になりません。ヘルパーは、振幅の欠落や非有限値、未対応の形式、ライブではない SEG-Y トレースフラグ、トレースごとのサンプリングの変動、または要求されたエクスポートの失敗がある場合、部分的な処理を成功として報告せずにエラーを返します。
その他の API と検証範囲
プロットには showProfile() または printProfile(...) を使用してください。どちらも、以前ドキュメントに記載されていた ax= によるエクスポート形式には対応していません。GPRPy 1.0.14 には、bandpassFilter、exportASCII、exportSEGY、gprpyCMP の API はありません。CMP/WARR クラスは gprpyCW です。スタック振幅メソッドを使用する前に、インストール済みのソースを確認してください。地形補正は、別途選択した速度を使って topoCorrect(topofile, delimiter=',') で行います。velocity= キーワードは使用しません。これらの高度な分岐には、それぞれ独自の受け入れ確認が必要です。
検証済みの経路では、固定された GPRPy のソースバージョン 1.0.14、生成されたネイティブ MALA バイト、およびライセンスを取得した観測 SEG-Y 測線 1 本を使用します。フィールド測線の時間スケーリングと座標単位は未解決のため、サンプルインデックスによる処理のみを対象としています。合成データのタイミング確認とインパルス深度確認は、フィールドデータの精度確認とは別です。テスト済みのコミットと依存関係の区別については、ソースのインストールと制限を参照してください。