pygimli について
pygimli は、近地表地球物理のモデリングとインバージョンを行う Python ツールです。電気探査と地震屈折データ向けのメッシュ、データコンテナー、専用マネージャーを備え、結果の表示とエクスポートにも対応します。
主な機能
- 01有限要素メッシュとデータコンテナー
- 02電気探査データの処理とインバージョン
- 03地震屈折インバージョン
- 04カスタムメッシュの作成
- 05モデル保存と VTK エクスポート
活用シーン
- 01電気探査測定データのインバージョンと確認
- 02地震屈折の走時データを処理
- 03ParaView 表示用にメッシュとモデルを出力
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ steadfastasart/ geoscience-skills --skill pygimliインストール後、Claude Code で/pygimliを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/mesh.mdmethods.mdscripts/ert_inversion.py詳細
pyGIMLi - 地球物理インバージョン
クイックリファレンス
import pygimli as pg
from pygimli.physics import ert, srt
# Load ERT data
data = ert.load("survey.ohm")
# Invert
mgr = ert.ERTManager(data)
model = mgr.invert(lam=20, verbose=True)
# View result
mgr.showResult()
主要なクラス
| クラス | 用途 |
|---|---|
pg.Mesh | 有限要素メッシュ |
pg.DataContainer | 測量データとジオメトリ |
pg.Inversion | 基本インバージョンフレームワーク |
ert.ERTManager | ERT の処理とインバージョン |
srt.SRTManager | 地震屈折法インバージョン |
基本操作
ERT データの読み込みと表示
import pygimli as pg
from pygimli.physics import ert
data = ert.load("survey.ohm")
print(f"Measurements: {data.size()}")
ert.showData(data) # Pseudosection
ERT インバージョン
from pygimli.physics import ert
mgr = ert.ERTManager(data)
model = mgr.invert(
lam=20, # Regularization
verbose=True
)
mgr.showResult()
resistivity = mgr.model
地震屈折法
from pygimli.physics import srt
data = srt.load("traveltimes.sgt")
mgr = srt.SRTManager(data)
model = mgr.invert(lam=30, zWeight=0.3)
mgr.showResult()
カスタムメッシュの作成
import pygimli as pg
from pygimli.physics import ert
data = ert.load("survey.ohm")
mesh = pg.meshtools.createParaMesh(
data.sensors(),
quality=34.0,
paraMaxCellSize=5,
boundary=2
)
pg.show(mesh)
保存とエクスポート
# Save mesh and model
mgr.mesh.save("result_mesh.bms")
pg.save(model, "resistivity_model.vector")
# Export to VTK for ParaView
mgr.mesh.exportVTK("result", mgr.model)
アレイの種類
| コード | アレイ |
|---|---|
wa | ウェンナー・アルファ |
wb | ウェンナー・ベータ |
dd | ダイポール・ダイポール |
pd | ポール・ダイポール |
pp | ポール・ポール |
slm | シュランベルジャー |
gr | 勾配 |
データ形式
| 形式 | 拡張子 | 説明 |
|---|---|---|
| BERT/pyGIMLi | .ohm | 統一データ形式 |
| Syscal | .txt | IRIS エクスポート |
| Res2DInv | .dat | 2D インバージョン形式 |
| ABEM | .ohm | ABEM Terrameter |
| SRT | .sgt | 地震走時 |
代替手段との使い分け
| シナリオ | 推奨 |
|---|---|
| 一般的なアレイを使った標準的な ERT インバージョン | pyGIMLi - 最もシンプルな API、組み込みのアレイタイプ |
| 地震屈折法トモグラフィー(SRT) | pyGIMLi - SRT マネージャーを統合 |
| 複数手法によるインバージョン(DC、磁気、重力、EM) | SimPEG - より広範な手法に対応 |
| レポート作成を伴う商用 ERT 処理 | Res2DInv - 業界標準、GUI ベース |
| カスタム順解析演算子や研究向けの柔軟性 | SimPEG - よりモジュール化された設計 |
| FEM ベースの地球物理モデリング | pyGIMLi - ネイティブの FEM メッシュに対応 |
次の場合は pyGIMLi を選んでください:最小限のコードで浅部地球物理インバージョン(ERT、SRT、IP)を行う必要がある場合です。マネージャークラス(ERTManager、SRTManager)を使えば、データの読み込みからインバージョン、可視化までのワークフロー全体を数行で処理できます。
次の場合は pyGIMLi を避けてください:浅部以外の手法が必要な場合(SimPEG を使用してください)、または商用グレードのレポート作成パイプラインが必要な場合です。
よくあるワークフロー
ERT データのインバージョンと可視化
-
ert.load("survey.ohm")で ERT データファイルを読み込む - データを確認する:
data.size()で測定数を調べ、擬似断面をプロットする - 外れ値や不良データ点を削除する
- データを使って
ERTManagerを作成する - インバージョンを実行する:
mgr.invert(lam=20)(最初は高めのラムダ値を使用) - カイ二乗値を確認する(目標値は約 1)
-
mgr.showResult()で結果を可視化する - ParaView 用にメッシュとモデルを VTK にエクスポートする:
mgr.mesh.exportVTK() - 必要に応じてラムダ値と zWeight を調整し、再度インバージョンする
インバージョンのヒント
- 高めのラムダ値(50~100)から始めて、徐々に下げます
- データ品質を確認し、インバージョンの前に外れ値を削除します
- 層状構造には zWeight < 1 を使用します
- カバレッジを確認します。カバレッジが低いと、分解能が低くなります
- カイ二乗値が約 1 であれば、過学習せずに良好に適合していることを示します
参考資料
スクリプト
- scripts/ert_inversion.py - ERT インバージョンのワークフロー全体
コメント
Markdown 対応