mcpField
P
pygimli

pygimli

github.com/steadfastasartデータ・データベース7361 回インストール6 週間前に更新
リポジトリ

pygimli について

pygimli は、近地表地球物理のモデリングとインバージョンを行う Python ツールです。電気探査と地震屈折データ向けのメッシュ、データコンテナー、専用マネージャーを備え、結果の表示とエクスポートにも対応します。

主な機能

  1. 01有限要素メッシュとデータコンテナー
  2. 02電気探査データの処理とインバージョン
  3. 03地震屈折インバージョン
  4. 04カスタムメッシュの作成
  5. 05モデル保存と VTK エクスポート

活用シーン

  1. 01電気探査測定データのインバージョンと確認
  2. 02地震屈折の走時データを処理
  3. 03ParaView 表示用にメッシュとモデルを出力

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/steadfastasart/geoscience-skills --skill pygimli

インストール後、Claude Code で/pygimliを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
mesh.md
methods.md
scripts/
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.ERTManagerERT の処理とインバージョン
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.txtIRIS エクスポート
Res2DInv.dat2D インバージョン形式
ABEM.ohmABEM 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 を調整し、再度インバージョンする

インバージョンのヒント

  1. 高めのラムダ値(50~100)から始めて、徐々に下げます
  2. データ品質を確認し、インバージョンの前に外れ値を削除します
  3. 層状構造には zWeight < 1 を使用します
  4. カバレッジを確認します。カバレッジが低いと、分解能が低くなります
  5. カイ二乗値が約 1 であれば、過学習せずに良好に適合していることを示します

参考資料

スクリプト

コメント