SimPEG magnetotelluric inversion study
A completed one-dimensional magnetotelluric inversion study examining conductivity recovery, regularisation, noise, frequency coverage, starting models, outliers, sensitivity, and non-uniqueness.

Software compatibility
The source, retained results, figures, tests, and documentation use SimPEG 0.25.2 with the pinned Python 3.12 environment. Other versions, dimensional assumptions, or field datasets require a new verification run.
Project definition
Problem statement
Magnetotelluric measurements contain frequency-dependent information about subsurface electrical conductivity, but inversion is affected by noise, regularisation, starting assumptions, limited depth sensitivity, outliers, and non-uniqueness.
The geology problem is to recover a layered conductivity structure from controlled synthetic responses while showing which features are supported by the data and which depend on modelling assumptions.
Project objectives
- Build a documented one-dimensional layered-earth magnetotelluric reference model.
- Generate reproducible apparent-resistivity and phase observations across thirty-three frequencies.
- Compare regularisation strengths, noise levels, starting models, frequency coverage, and outlier handling.
- Measure response fit, model error, depth sensitivity, uncertainty, and conductance equivalence.
- Retain complete data, results, figures, tests, references, and editable documentation.
Project structure
Project components
Layered-earth model
Defines the reference resistivity structure, twenty-four inversion layers, frequency range, error model, and deterministic seeds.
Forward response
Calculates complex one-dimensional magnetotelluric impedance, apparent resistivity, phase, and controlled synthetic observations.
SimPEG inversion
Runs regularised inversions for the complete experiment matrix and retains every recovered model and response.
Resolution analysis
Measures depth sensitivity, uncertainty envelopes, starting-model effects, frequency support, outlier response, and conductance equivalence.
Evidence builder
Produces exact CSV and JSON results, fourteen figure pairs, automated tests, references, and editable documentation.
Methodology
Project workflow
- 01Define the experiment
A validated configuration declares the layered model, frequencies, errors, regularisation cases, uncertainty runs, and random seeds.
- 02Generate observations
The forward solver produces synthetic apparent resistivity and phase data with declared noise.
- 03Run inversions
SimPEG recovers logarithmic conductivity models under controlled regularisation, starting, frequency, and outlier conditions.
- 04Measure evidence
The analysis compares normalized misfit, logarithmic model error, sensitivity, uncertainty, and response equivalence.
- 05Compare and verify
All retained cases are plotted, tested, audited, reproduced locally and in Docker, and checked against repository contracts.
Demonstration scenario
The baseline inversion reaches a normalized misfit of 0.8580 and a log10 model RMSE of 0.2072 across thirty-three frequencies and twenty-four layers. The wider experiment shows how fit quality, recovered structure, sensitivity, and non-uniqueness change under controlled assumptions.
Engineering
Tools and method
- Tools
- The project uses Python 3.12, SimPEG 0.25.2, NumPy, SciPy, Pandas, Matplotlib for subject analysis, simulation, and results.
- Electromagnetic model
- A one-dimensional recursive impedance formulation represents horizontal isotropic layers and provides independent forward checks.
- Inverse model
- SimPEG solves for logarithmic conductivity across twenty-four layers using data misfit and smoothness regularisation.
- Experiment control
- Python executes the complete 75-case matrix with deterministic configurations and retained outputs.
- Evidence layer
- NumPy, SciPy, Pandas, CSV, JSON, PNG, and SVG retain observations, models, responses, metrics, and figures.
- Verification
- Forty automated tests, branch coverage, dependency audit, Docker execution, document audits, and repository validation verify the delivery.
Testing
Evaluation
Evaluation measures
- Normalized magnetotelluric data misfit for every inversion case
- Log10 resistivity model RMSE against the known synthetic structure
- Sensitivity and resolution change with depth
- Recovered-model stability under noise, starting models, and frequency limits
- Outlier response with standard and robust treatment
- Conductance-equivalent models and uncertainty envelopes
- Automated tests, dependency audit, document checks, and container execution
Project boundaries
- The study uses synthetic one-dimensional magnetotelluric data for horizontal isotropic layers.
- It does not process raw field time series, estimate impedance tensors, correct static shift, or interpret strike and dimensionality.
- A good response fit does not establish a unique conductivity-depth model, particularly beneath weakly resolved depths.
- Field interpretation requires acquisition quality control, distortion analysis, geological constraints, two-dimensional or three-dimensional modelling where appropriate, and qualified geophysicists.
Included
- 01Complete Python and SimPEG source code
- 02Seventy-five completed study cases, including seventy-one inversions
- 03Thirty-three-frequency synthetic magnetotelluric dataset and retained case results
- 04Regularisation, noise, starting-model, frequency, outlier, uncertainty, and equivalence experiments
- 05Fourteen project figures in PNG and SVG
- 06Three public-domain field images with provenance
- 07Forty-eight annotated references
- 08Forty automated tests with 98.60 percent branch-aware coverage
- 09Complete project files, calculations, results, and analysis material in a private GitHub repository
- 1090-page project documentation in PDF and editable Word formats
- 119-page setup and usage guide in PDF and editable Word formats
Project record
No information is collected on this page.
- Permanent project ID
- GP-GE-02GU6S9
- Catalogued
- 21 Aug 2026
- Completed
- 28 Aug 2026
- Verified
- 28 Aug 2026
- Demonstration
- Included in repository
Handover
After purchase
- 01Payment is confirmed
The project is marked unavailable and cannot be purchased again.
- 02Repository access is granted
The buyer's submitted GitHub account receives access to the private repository.
- 03The purchase record is delivered
The certification sheet is prepared from the reviewed buyer details and sent privately by email.