pygimli

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

pyGIMLi - Geophysical Inversion

pyGIMLi - 地球物理反演

Quick Reference

快速参考

python
import pygimli as pg
from pygimli.physics import ert, srt
python
import pygimli as pg
from pygimli.physics import ert, srt

Load ERT data

加载ERT数据

data = ert.load("survey.ohm")
data = ert.load("survey.ohm")

Invert

反演

mgr = ert.ERTManager(data) model = mgr.invert(lam=20, verbose=True)
mgr = ert.ERTManager(data) model = mgr.invert(lam=20, verbose=True)

View result

查看结果

mgr.showResult()
undefined
mgr.showResult()
undefined

Key Classes

核心类

ClassPurpose
pg.Mesh
Finite element meshes
pg.DataContainer
Survey data and geometry
pg.Inversion
Base inversion framework
ert.ERTManager
ERT processing and inversion
srt.SRTManager
Seismic refraction inversion
用途
pg.Mesh
有限元网格
pg.DataContainer
勘测数据与几何信息
pg.Inversion
基础反演框架
ert.ERTManager
ERT处理与反演
srt.SRTManager
地震折射反演

Essential Operations

基础操作

Load and View ERT Data

加载并查看ERT数据

python
import pygimli as pg
from pygimli.physics import ert

data = ert.load("survey.ohm")
print(f"Measurements: {data.size()}")
ert.showData(data)  # Pseudosection
python
import pygimli as pg
from pygimli.physics import ert

data = ert.load("survey.ohm")
print(f"测量数据量: {data.size()}")
ert.showData(data)  # 拟断面图

ERT Inversion

ERT反演

python
from pygimli.physics import ert

mgr = ert.ERTManager(data)
model = mgr.invert(
    lam=20,          # Regularization
    verbose=True
)
mgr.showResult()
resistivity = mgr.model
python
from pygimli.physics import ert

mgr = ert.ERTManager(data)
model = mgr.invert(
    lam=20,          # 正则化参数
    verbose=True
)
mgr.showResult()
resistivity = mgr.model

Seismic Refraction

地震折射

python
from pygimli.physics import srt

data = srt.load("traveltimes.sgt")
mgr = srt.SRTManager(data)
model = mgr.invert(lam=30, zWeight=0.3)
mgr.showResult()
python
from pygimli.physics import srt

data = srt.load("traveltimes.sgt")
mgr = srt.SRTManager(data)
model = mgr.invert(lam=30, zWeight=0.3)
mgr.showResult()

Create Custom Mesh

创建自定义网格

python
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)
python
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 and Export

保存与导出

python
undefined
python
undefined

Save mesh and model

保存网格与模型

mgr.mesh.save("result_mesh.bms") pg.save(model, "resistivity_model.vector")
mgr.mesh.save("result_mesh.bms") pg.save(model, "resistivity_model.vector")

Export to VTK for ParaView

导出为VTK格式用于ParaView

mgr.mesh.exportVTK("result", mgr.model)
undefined
mgr.mesh.exportVTK("result", mgr.model)
undefined

Array Types

阵列类型

CodeArray
wa
Wenner-alpha
wb
Wenner-beta
dd
Dipole-dipole
pd
Pole-dipole
pp
Pole-pole
slm
Schlumberger
gr
Gradient
代码阵列
wa
Wenner-alpha
wb
Wenner-beta
dd
偶极-偶极
pd
单极-偶极
pp
单极-单极
slm
斯伦贝谢
gr
梯度

Data Formats

数据格式

FormatExtensionDescription
BERT/pyGIMLi.ohmUnified data format
Syscal.txtIRIS export
Res2DInv.dat2D inversion format
ABEM.ohmABEM Terrameter
SRT.sgtSeismic traveltimes
格式扩展名描述
BERT/pyGIMLi.ohm统一数据格式
Syscal.txtIRIS导出格式
Res2DInv.dat2D反演格式
ABEM.ohmABEM Terrameter格式
SRT.sgt地震走时数据

When to Use vs Alternatives

适用场景对比

ScenarioRecommendation
Standard ERT inversion with common arrayspyGIMLi - simplest API, built-in array types
Seismic refraction tomography (SRT)pyGIMLi - integrated SRT manager
Multi-method inversion (DC, magnetics, gravity, EM)SimPEG - broader method coverage
Commercial ERT processing with reportingRes2DInv - industry standard, GUI-based
Custom forward operators or research flexibilitySimPEG - more modular design
FEM-based geophysical modellingpyGIMLi - native FEM mesh support
Choose pyGIMLi when: You need near-surface geophysical inversion (ERT, SRT, IP) with minimal code. Its manager classes (
ERTManager
,
SRTManager
) handle the full workflow from data loading to inversion to visualization in a few lines.
Avoid pyGIMLi when: You need methods beyond near-surface (use SimPEG), or you require a commercial-grade reporting pipeline.
场景推荐方案
使用常见阵列的标准ERT反演pyGIMLi - API最简单,内置多种阵列类型
地震折射层析成像(SRT)pyGIMLi - 集成SRT管理器
多方法反演(直流电法、磁法、重力法、电磁法)SimPEG - 支持更多方法
带报告功能的商用ERT处理Res2DInv - 行业标准,基于GUI
自定义正演算子或需要研究灵活性SimPEG - 模块化设计更强
基于有限元法的地球物理建模pyGIMLi - 原生支持有限元网格
选择pyGIMLi的场景:你需要用最少代码实现近地表地球物理反演(ERT、SRT、IP)。其管理器类(
ERTManager
SRTManager
)可处理从数据加载、反演到可视化的完整工作流,仅需几行代码。
不适合使用pyGIMLi的场景:你需要处理近地表以外的方法(请使用SimPEG),或需要商用级别的报告流程。

Common Workflows

常见工作流

ERT data inversion and visualization

ERT数据反演与可视化

  • Load ERT data file with
    ert.load("survey.ohm")
  • Inspect data: check measurement count with
    data.size()
    , plot pseudosection
  • Remove outliers or bad data points
  • Create
    ERTManager
    with data
  • Run inversion:
    mgr.invert(lam=20)
    (start with higher lambda)
  • Check chi-squared value (target ~ 1)
  • Visualize result with
    mgr.showResult()
  • Export mesh and model to VTK for ParaView:
    mgr.mesh.exportVTK()
  • Adjust lambda and zWeight if needed, re-invert
  • 使用
    ert.load("survey.ohm")
    加载ERT数据文件
  • 检查数据:用
    data.size()
    查看测量数据量,绘制拟断面图
  • 移除异常值或无效数据点
  • 用数据创建
    ERTManager
    实例
  • 运行反演:
    mgr.invert(lam=20)
    (初始使用较大lambda值)
  • 检查卡方值(目标值约为1)
  • 使用
    mgr.showResult()
    可视化结果
  • 将网格与模型导出为VTK格式用于ParaView:
    mgr.mesh.exportVTK()
  • 必要时调整lambda和zWeight参数,重新反演

Inversion Tips

反演技巧

  1. Start with higher lambda (50-100) and decrease
  2. Check data quality - remove outliers before inversion
  3. Use zWeight < 1 for layered structures
  4. Check coverage - low coverage = poorly resolved
  5. Chi-squared ~ 1 indicates good fit without overfitting
  1. 初始使用较大lambda值(50-100),然后逐步减小
  2. 检查数据质量 - 反演前移除异常值
  3. 针对层状结构使用zWeight < 1
  4. 检查覆盖范围 - 覆盖范围低意味着分辨率差
  5. 卡方值约为1表示拟合良好且未过拟合

References

参考文献

  • Geophysical Methods - Supported methods and workflows
  • Mesh Generation - Mesh creation and quality control
  • 地球物理方法 - 支持的方法与工作流
  • 网格生成 - 网格创建与质量控制

Scripts

脚本

  • scripts/ert_inversion.py - Complete ERT inversion workflow
  • scripts/ert_inversion.py - 完整ERT反演工作流