pyGIMLi - Geophysical Inversion
Quick Reference
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()
Key Classes
| Class |
Purpose |
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 |
Essential Operations
Load and View ERT Data
import pygimli as pg
from pygimli.physics import ert
data = ert.load("survey.ohm")
print(f"Measurements: {data.size()}")
ert.showData(data) # Pseudosection
ERT Inversion
from pygimli.physics import ert
mgr = ert.ERTManager(data)
model = mgr.invert(
lam=20, # Regularization
verbose=True
)
mgr.showResult()
resistivity = mgr.model
Seismic Refraction
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
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
# 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)
Array Types
| Code |
Array |
wa |
Wenner-alpha |
wb |
Wenner-beta |
dd |
Dipole-dipole |
pd |
Pole-dipole |
pp |
Pole-pole |
slm |
Schlumberger |
gr |
Gradient |
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 |
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 (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.
Common Workflows
ERT data inversion and visualization
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
References
- Geophysical Methods - Supported methods and workflows
- Mesh Generation - Mesh creation and quality control
Scripts
- scripts/ert_inversion.py - Complete ERT inversion workflow