← Back to project catalogue
GP-GE-08D8KXFGeologyReady

pyGIMLi electrical-resistivity tomography

A completed electrical-resistivity tomography study comparing Wenner alpha, dipole-dipole, and gradient arrays under controlled noise and regularisation conditions.

pyGIMLi electrical-resistivity tomography project visual
GP-GE-08D8KXF · Geology
  • pyGIMLi 1.6.0
  • pgcore 1.6.0
  • Python 3.12
  • NumPy
  • Pandas
  • Matplotlib

Software compatibility

pyGIMLi 1.6.0, Python 3.12, and macOS only

The source, retained inversions, figures, and documentation use pyGIMLi 1.6.0, pgcore 1.6.0, and the pinned Python 3.12 environment. The complete release is verified on macOS. Other operating systems or versions need a new backend verification run.

Project definition

Problem statement

Electrical-resistivity tomography results depend on electrode geometry, measurement error, regularisation, and subsurface sensitivity, even when each inversion gives a plausible data fit.

The geology problem is to compare three common arrays against known synthetic targets and measure both data agreement and geological recovery without treating a coloured section as proof by itself.

Project objectives

  • Build a two-dimensional near-surface model with a conductive plume and a deeper resistive block.
  • Simulate Wenner alpha, dipole-dipole, and gradient measurements on one 33-electrode profile.
  • Compare 1, 3, and 5 percent relative noise at lambda values 5, 20, and 60.
  • Measure data fit, covered model error, usable coverage, target resistivity, and contrast recovery.
  • Retain reproducible measurements, inverse cells, exact tables, figures, tests, references, and documentation.

Project structure

Project components

01

Synthetic geology

Creates the 100 ohm m background, 20 ohm m conductive ellipse, 500 ohm m resistive block, electrode line, and independent forward mesh.

02

Survey simulation

Builds three valid array schemes and writes nine deterministic noisy apparent-resistivity datasets.

03

Inversion experiment

Runs all 27 array, noise, and lambda combinations on survey-specific parameter meshes.

04

Model appraisal

Calculates chi2, relative RMS, covered log10 error, coverage fraction, target geometric means, contrast recovery, and a declared rank score.

05

Evidence builder

Retains every cell model, exact summary table, fourteen figure pairs, tests, references, and editable documentation.

Methodology

Project workflow

  1. 01
    Define the geology

    A validated JSON file declares geometry, physical properties, arrays, noise, lambda, iterations, seed, and coverage threshold.

  2. 02
    Create measurements

    pyGIMLi solves the forward problem on a refined mesh and applies three deterministic noise conditions to each array.

  3. 03
    Run inversions

    Each measurement set is inverted at three regularisation strengths without supplying target boundaries or true resistivity.

  4. 04
    Appraise recovery

    Recovered cells are compared with known truth only where sensitivity passes the declared coverage rule.

  5. 05
    Compare and verify

    The complete matrix is ranked, plotted, tested, checked for cross-platform execution, and retained with exact results.

Demonstration scenario

The best declared case is dipole-dipole with 1 percent noise and lambda 5. It gives chi2 0.7408, covered log10 model RMSE 0.0958, 91.17 percent covered cells, 80.03 percent conductive contrast recovery, and 74.37 percent resistive contrast recovery.

Engineering

Tools and method

Tools
The project uses pyGIMLi 1.6.0, pgcore 1.6.0, Python 3.12, NumPy, Pandas, Matplotlib for subject analysis, simulation, and results.
Forward model
An unstructured finite-element mesh represents known synthetic geology and the 80 m electrode profile.
Inverse model
pyGIMLi creates an independent parameter domain for each array and solves regularised nonlinear inversions.
Experiment control
Python applies deterministic seeds and executes the full three by three by three factorial design.
Evidence layer
Pandas, CSV, JSON, PNG, and SVG retain measurements, recovered cells, metrics, and figures.
Verification
Automated tests, full workflow reproduction, dependency checks, vulnerability audit, and repository validation verify the delivery.

Testing

Evaluation

Evaluation measures

  • Chi2 and relative RMS under each declared error model
  • Covered-cell log10 resistivity RMSE against known synthetic truth
  • Conductive-plume and resistive-block geometric-mean resistivity
  • Target contrast recovery and spatial coverage fraction
  • Array, noise, and regularisation sensitivity across all 27 cases
  • Automated tests, cross-platform workflow, dependency audit, and repository acceptance

Project boundaries

  • The targets, noise, and background are synthetic and are not measurements from a field site.
  • The preferred array and lambda apply only to the declared geometry, electrode line, error model, and appraisal score.
  • The study does not include topography, induced polarization, anisotropy, time-lapse change, three-dimensional structure, or calibrated petrophysics.
  • Field decisions require site-specific acquisition, reciprocal errors, surveyed electrodes, geological control, uncertainty analysis, permissions, and qualified geoscientists.

Included

  1. 01Complete Python and pyGIMLi source code
  2. 02Three electrode arrays and nine retained apparent-resistivity datasets
  3. 03Twenty-seven complete inversions and cell-level model tables
  4. 04Fourteen project figures in PNG and SVG
  5. 05Three public-domain ERT images with provenance
  6. 06Fifty annotated references, including current 2026 work
  7. 07Thirty-eight automated tests with 100 percent scientific statement and branch coverage
  8. 08Complete project files, calculations, results, and analysis material in a private GitHub repository
  9. 0974-page project documentation in PDF and editable Word formats
  10. 109-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-08D8KXF
Catalogued
21 Aug 2026
Completed
26 Aug 2026
Verified
26 Aug 2026
Demonstration
Included in repository

Handover

After purchase

  1. 01
    Payment is confirmed

    The project is marked unavailable and cannot be purchased again.

  2. 02
    Repository access is granted

    The buyer's submitted GitHub account receives access to the private repository.

  3. 03
    The purchase record is delivered

    The certification sheet is prepared from the reviewed buyer details and sent privately by email.