PyAges v1.0: an extensible Python toolkit for inferring groundwater transit-time distributions from environmental tracers
Abstract. Lumped-parameter models infer groundwater transit-time distributions by combining environmental-tracer input histories with parameterized age distributions. Their practical use requires flexible tracer representation, reliable repeated numerical integration, and explicit treatment of uncertainty when different parameter combinations fit observations similarly. We present PyAges v1.0, an open-source Python toolkit that separates tracer definitions, lumped-parameter models, convolution, and calibration; supports Bayesian inference of parameter uncertainty; and uses an integration scheme based on the cumulative distribution function and partial first moment for repeated evaluation of narrow, shifted, mixed, and shape-free transit- time distributions. Independent reference calculations across 270 cases characterize numerical discrepancies of the PyAges convolution operator across four classical model families. A cross-software benchmark against TracerLPM shows that both tools estimate the prescribed parameters with broadly comparable accuracy. Mean transit time is estimated more robustly under added noise than the model- specific parameter controlling either exponential–piston mixing or dispersion. Two field sites, Holten and Ploemeur, illustrate the framework with real observations. At Holten, PyAges posterior medians reproduce all 28 published four-bin age fractions within 0.02. At Ploemeur, calibrations using the full record or only 2014–2015 observations show how repeated measurements can resolve age ambiguity or reveal incompatibility among the assumptions used to interpret the tracers. PyAges therefore provides a reproducible framework for testing tracer and transit-time hypotheses, determining what observations constrain, and integrating tracer inference into broader hydrogeological workflows.