# A review of open software resources in python for electrical resistivity modelling – Geoscience Letters

Jan 13, 2022

### Methodology

We develop a synthetic resistivity model to examine the effectiveness of Python-based inversion freeware, such as pyGIMLi, BERT, ResIPy, and SimPEG. This study uses the latest freeware versions: pyGIMLi 1.2.2, BERT 2.3.2, ResIPy 3.3.2, and SimPEG 0.15.1; their future inversion performance may be varied due to different advancements of the tested freeware codes. We use a conceptual model representing a horizontally stratified sedimentary layer and archaeological targets buried in a homogeneous host medium. Forward resistivity modelling is performed for a layered geologic model that consists of a sand layer with a resistivity value of 200 Ωm, a gravel layer with a resistivity value of 600 Ωm, and a moderately fractured sandstone with a resistivity value of 1000 Ωm, respectively, from top to bottom (Fig. 8a). Moreover, we conduct forward simulation for an archaeological model (Fig. 5a) comprising a conductive target (left side) with a resistivity value of 10 Ωm and a relatively resistive target (right side) with a resistivity value of 100 Ωm, buried in a silty clay host medium with a resistivity value of 50 Ωm (Keller 2017). We use four different scenarios based on the target sizes and survey depths. A 1 m target radius is set at three different depths to assess the depth effect on the performances of the inversion freeware; thus, the 1 m target is buried at 1.5 m deep in scenario one, at 3 m deep in scenario two, and 5 m deep in scenario three. We also use scenario four, a 2 m target radius situated at 3 m depth, to examine the size effect.

The freeware algorithms are applied to solve the forward resistivity problem. Since the dipole–dipole array provides a high resolution for buried targets (Doyoro et al. 2021; Seaton and Burbey 2002), we apply its arrangement for surface resistivity probing using 41 electrodes with 1 m spacing. We use the finite element triangular unstructured mesh for model discretization in pyGIMLi, BERT, and ResIPy as shown in Fig. 5b, while finite volume tensor mesh is implemented in SimPEG. Every tested freeware is used to generate its forward resistivity datasets; for instance, Fig. 5c displays forward resistivity datasets for pyGIMLi. As measurement error does not observe in the synthetic data, we integrate the acquisition error by perturbing 3% Gaussian noise in which the random value noises are generated for every data point with zero mean and 3% standard deviation.

The inversion algorithms discussed in each freeware package are used for the inversion of forward resistivity data. The regularization value is set to 20 initially, which is reduced iteratively. The iterative inversion process can modify the starting homogeneous model until an acceptable convergence between the model response and the observed apparent resistivity has to be achieved. The inverted models are compared to the actual model to examine the recovering ability of the inversion freeware (Fig. 5d).

Modelling algorithms may vary based on the efficiency of numerical calculations (Narayan et al. 1994). We use the horizontally stratified geologic model (Fig. 6) to evaluate forward resistivity variation among the freeware packages. The forward resistivity results of pyGIMLi, BERT, and ResIPy are examined for different sizes of unstructured triangular grids. The comparison does not include SimPEG forward results, as it implements finite volume tensor mesh. We determine the freeware forward resistivity deviation (FRD) by averaging the resistivity values of pyGIMLi, BERT, and ResIPy, and subtract the individual freeware resistivity values from the average values, which is divided by the total number of data points; it is expressed by

$$mathrm{FRD}=frac{left|{rho }_{mathrm{avi}-{Frho }_{i}}right|}{n},$$

(1)

where ({rho }_{avi}) is the average value of forward resistivity data points of pyGIMLi, BERT, and ResIPy, ({Frho }_{i}) is the forward resistivity values for individual freeware packages, and n is the number of data points.

Militzer et al. (1979) first introduced the anomaly effect (AE) to study the measuring ability of the electrode arrays. The anomaly effect can also be used to examine the recovering effectiveness of arrays for different buried geological targets and inspects the corresponding image quality, and it is determined using the expression (Aizebeokhai et al. 2010; Militzer et al. 1979).

$$mathrm{AE}=left|frac{{rho }_{mathrm{max}}- {rho }_{mathrm{min}}}{{rho }_{mathrm{av}}}right|,$$

(2)

where ({rho }_{max}), ({rho }_{min,}) and ({rho }_{av}) indicate the maximum, minimum, and average apparent resistivity datasets, respectively. In this study, we apply the anomaly effect to assess forward resistivity calculating abilities of the inversion freeware (pyGIMLi, BERT, ResIPy, and SimPEG).

### Modelling results

The obtained resistivity model resolution relies on the quality of measured datasets and the effectiveness of the inversion software. Even though the same input model is used, different inversion packages may show variations in the recovered model resolution and anomaly geometry. We examine the pyGIMLi, SimPEG, BERT, and ResIPy inversion freeware for horizontally layered geologic conditions and archaeological targets sets in a homogeneous medium.

We assess the forward resistivity datasets of pyGIMLi, BERT, and ResIPy for different grid sizes. Figure 6 shows the freeware forward resistivity deviations from the average value. Low resistivity variations are shown among the tested freeware for the small grid sizes, whereas relatively high resistivity variations are displayed for the large grid sizes. However, the result generally shows less considerable resistivity discrepancies among the tested freeware, particularly between BERT and pyGIMLi.

Forward resistivity data with maximum anomaly information can obtain a reliable inverted image (Okpoli 2013). Thus, we calculate the anomaly effect of forward resistivity data for simulated target scenarios using tested freeware packages. As presented in Fig. 7, the highest anomaly effect of 0.985, 0.967, 0.938, and 0.917 for the corresponding freeware packages of BERT, pyGIMLi, SimPEG, and ResIPy is exhibited for simulation of scenario four. In contrast, the modelling of scenario three displays the lowest anomaly effect of 0.123, 0.223, 0.231, and 0.250 for ResIPy, SimPEG, pyGIMLi, and BERT, respectively. The result shows a slight variation of anomaly effect for the tested freeware packages, mainly BERT, pyGIMLi, and SimPEG. The anomaly effect is considerably varied for the target size and buried depth. The large-sized scenario four depicts a more pronounced anomaly effect compared to scenario two, situated at the same depth. Scenario three, relatively located at deeper depth, shows the lowest anomaly effect than the tested scenarios. The increase of target buried depth can decrease the anomaly effect, indicating direct dependency on obtained image quality.

We assess inversion freeware performances for a horizontally layered sedimentary model (Fig. 8a). The obtained model results for the tested freeware packages are presented in Fig. 8b–e. All the freeware packages detect the sand layer; however, the thickness is slightly reduced in pyGIMLi and BERT. The gravel layer is more adequately identified in pyGIMLi, BERT, and SimPEG, but BERT’s layer thickness is considerably decreased. Similarly, the sandstone layer is recovered in all the tested inversion freeware eÎpt ResIPy. However, a significant overestimation of sandstone layer thicknesses is depicted in pyGIMLi and BERT. The gravel and sandstone layers are combined in the inverted models of ResIPy, indicating two-layer structures instead of three model layers. The centre of the model profiles is well resolved in all the tested inversion freeware. However, smearing is observed at the end of the profiles, likely related to limited data points or no data coverages.

Inversion freeware packages are also examined for archaeological targets hosted in a homogeneous host medium. Figure 9 displays the inversion results for target scenario one with a 1 m target radius set at 1.5 m depth. The result exhibits high model resolution and accurate anomaly geometry for pyGIMLi and BERT, yet their anomalies have slightly deviated from the actual positions. However, a moderate resolution is observed in SimPEG, and relatively low resolution is exhibited in ResIPy. SimPEG and ResIPy correctly resolve the upper boundary of the target anomaly, while the base is slightly extended beyond the actual model. The background anomaly is reproduced accurately in all the tested freeware packages. Compared to the initial target resistivities, the inverted resistivity values are overestimated in the conductive target zone while underestimated in the resistive target. In all the tested inversion freeware, the recovered resistivity values of scenario one are overestimated about 7–10% for the conductive target while underestimated about 3–5% for the resistive target.

Scenario two shows the recovered models for a conceptual model with a 1 m target radius set at 3 m depth, as shown in Fig. 10. The target anomalies are moderately identified in pyGIMLi and BERT while slightly indicated in SimPEG and ResIPy. Besides, the obtained anomaly geometries are not correctly recovered in all the tested inversion freeware. Scenario two inversions in the tested freeware packages show considerable overestimations (33–38%) in the obtained resistivity for the conductive target while underestimations (21–26%) for the resistive target (Fig. 10). Overall, scenario two shows a noticeably lower model resolution than the shallowest target scenario (Fig. 9).

In scenario three, a conceptual model of a 1 m target radius set at 5 m depth is inverted to assess further depth effect on the performances of the inversion freeware (Fig. 11). pyGIMLi, BERT, and SimPEG provide blurred resolution with highly broadened anomalies. On the other hand, target anomalies are not reproduced in ResIPy. As the target depth increases, significant resistivity overestimations (42–44%) have occurred in conductive anomaly zones, while underestimations (35–39%) are observed in resistive target anomaly zones for all the tested inversion freeware (Fig. 11).

Moreover, we examine the inversion freeware effectiveness using different target sizes, such as 0.25, 0.5, 1, and 2 m radius, all set at 3 m survey depth. Target sizes with 0.25 and 0.5 m radius are not recovered in all the tested freeware packages. Since the 1 m target radius is discussed in the earlier section as scenario two (Fig. 10), the inverted models for the 2 m target radius are presented as scenario four (as shown in Fig. 12). pyGIMLi, BERT, and SimPEG show high resolution for the inverted model of scenario four, while a relatively low resolution is exhibited in ResIPy (Fig. 12). The target geometries are accurately resolved in pyGIMLi and BERT. The upper boundary of the target anomaly in ResIPy is adequately recovered, whereas broadening occurs at the lower boundary. Its anomaly resolution is noticeably reduced as the survey depth increases. SimPEG yields a relatively broader target anomaly than the actual target. The model resolution in all the inversion freeware packages is significantly enhanced as the target size increases (Fig. 12). Inversion in scenario four overestimates about 11–18% of the obtained resistivity for the conductive target while underestimates about 4–9% for the resistive target. The larger target size of scenario four shows lower underestimation and overestimation in the obtained resistivity compared to the smaller target size of the same depth scenario. We also quantify the model accuracy of the freeware packages for scenario four as an example. The model accuracy is obtained by summing up the square of the difference between the inverted resistivity and the true model resistivity. The result shows a model accuracy of 21,051.37 for BERT, 22,854.23 for pyGIMLi, 25,024.35 for SimPEG, and 28,135.69 for ResIPy, indicating direct association with the inverted model resolution, as displayed in Fig. 12.