pygimli
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChinesepyGIMLi - Geophysical Inversion
pyGIMLi - 地球物理反演
Quick Reference
快速参考
python
import pygimli as pg
from pygimli.physics import ert, srtpython
import pygimli as pg
from pygimli.physics import ert, srtLoad 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()
undefinedmgr.showResult()
undefinedKey Classes
核心类
| Class | Purpose |
|---|---|
| Finite element meshes |
| Survey data and geometry |
| Base inversion framework |
| ERT processing and inversion |
| Seismic refraction inversion |
| 类 | 用途 |
|---|---|
| 有限元网格 |
| 勘测数据与几何信息 |
| 基础反演框架 |
| ERT处理与反演 |
| 地震折射反演 |
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) # Pseudosectionpython
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.modelpython
from pygimli.physics import ert
mgr = ert.ERTManager(data)
model = mgr.invert(
lam=20, # 正则化参数
verbose=True
)
mgr.showResult()
resistivity = mgr.modelSeismic 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
undefinedpython
undefinedSave 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)
undefinedmgr.mesh.exportVTK("result", mgr.model)
undefinedArray Types
阵列类型
| Code | Array |
|---|---|
| Wenner-alpha |
| Wenner-beta |
| Dipole-dipole |
| Pole-dipole |
| Pole-pole |
| Schlumberger |
| Gradient |
| 代码 | 阵列 |
|---|---|
| Wenner-alpha |
| Wenner-beta |
| 偶极-偶极 |
| 单极-偶极 |
| 单极-单极 |
| 斯伦贝谢 |
| 梯度 |
Data Formats
数据格式
| Format | Extension | Description |
|---|---|---|
| BERT/pyGIMLi | .ohm | Unified data format |
| Syscal | .txt | IRIS export |
| Res2DInv | .dat | 2D inversion format |
| ABEM | .ohm | ABEM Terrameter |
| SRT | .sgt | Seismic traveltimes |
| 格式 | 扩展名 | 描述 |
|---|---|---|
| BERT/pyGIMLi | .ohm | 统一数据格式 |
| Syscal | .txt | IRIS导出格式 |
| Res2DInv | .dat | 2D反演格式 |
| ABEM | .ohm | ABEM Terrameter格式 |
| SRT | .sgt | 地震走时数据 |
When to Use vs Alternatives
适用场景对比
| Scenario | Recommendation |
|---|---|
| Standard ERT inversion with common arrays | pyGIMLi - 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 reporting | Res2DInv - industry standard, GUI-based |
| Custom forward operators or research flexibility | SimPEG - more modular design |
| FEM-based geophysical modelling | pyGIMLi - native FEM mesh support |
Choose pyGIMLi when: You need near-surface geophysical inversion (ERT, SRT, IP) with
minimal code. Its manager classes (, ) handle the full workflow
from data loading to inversion to visualization in a few lines.
ERTManagerSRTManagerAvoid 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)。其管理器类(、)可处理从数据加载、反演到可视化的完整工作流,仅需几行代码。
ERTManagerSRTManager不适合使用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 , plot pseudosection
data.size() - Remove outliers or bad data points
- Create with data
ERTManager - Run inversion: (start with higher lambda)
mgr.invert(lam=20) - 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数据文件
ert.load("survey.ohm") - 检查数据:用查看测量数据量,绘制拟断面图
data.size() - 移除异常值或无效数据点
- 用数据创建实例
ERTManager - 运行反演:(初始使用较大lambda值)
mgr.invert(lam=20) - 检查卡方值(目标值约为1)
- 使用可视化结果
mgr.showResult() - 将网格与模型导出为VTK格式用于ParaView:
mgr.mesh.exportVTK() - 必要时调整lambda和zWeight参数,重新反演
Inversion Tips
反演技巧
- Start with higher lambda (50-100) and decrease
- Check data quality - remove outliers before inversion
- Use zWeight < 1 for layered structures
- Check coverage - low coverage = poorly resolved
- Chi-squared ~ 1 indicates good fit without overfitting
- 初始使用较大lambda值(50-100),然后逐步减小
- 检查数据质量 - 反演前移除异常值
- 针对层状结构使用zWeight < 1
- 检查覆盖范围 - 覆盖范围低意味着分辨率差
- 卡方值约为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反演工作流