pumptest¶
Pumping test analysis in Python. Transmissivity, storativity, leakage, specific yield, skin and well losses from drawdown data, by the classic analytical solutions, with automatic fitting across any number of wells.

What it does¶
| Solutions | Theis, Hantush-Jacob (leaky), Papadopulos-Cooper (large-diameter wells, with optional skin and fitted casing radius), Neuman (unconfined, delayed yield) |
| Straight-line methods | Cooper-Jacob, Theis recovery, step-drawdown well losses |
| Test types | constant rate, recovery, and any variable-rate schedule, by superposition |
| Fitting | least squares over every observation at once, with standard errors, correlations, RMSE and AICc for choosing between models |
| Diagnostics | the Bourdet log-derivative |
| Example data | seven published tests bundled in pumptest.datasets, with the published estimates for each |
| Dependencies | numpy and scipy only |
How far to trust it¶
On three tests from the AQTESOLV manual and four open pumping tests analysed with welltestpy, the fitted parameters match the published ones, and on the same data the fit is at least as good. The well functions are checked against independent evaluations of their published formulas. Every number on the validation page is regenerated from the code, and a test fails if the page and the code disagree.

Thirty seconds¶
from pumptest import Theis, datasets, fit
test = datasets.load("sioux_flats") # three observation wells, from the AQTESOLV manual
result = fit(test, Theis())
print(result.summary())
Next: Getting started.
Licence¶
MIT. Copyright 2026 Piezoline Technologies Private Limited. The bundled example data come from the TTim documentation (MIT) and from the Lauswiesen research site (CC BY-SA 4.0); see Citing.