Skip to main content

Python version of ESPERv1

Project description

PyESPER

PyESPER is a Python implementation of MATLAB Empirical Seawater Property Estimation Routines (ESPERs), and the present version consists of a preliminary package which implements these routines. These routines provide estimates of seawater biogeochemical properties at user-provided sets of coordinates, depth, and available biogeochemical properties.

This package is developed in parallel with TRACE-Python.


Installation

To install PyESPER, clone this repository and navigate to the PyESPER folder. It is recommended that you create a virtual environment and install all packages listed in the requirements.txt file. Open a terminal in the PyESPER directory and run

pip install PyESPER

to install the package and required dependencies listed in requirements.txt. Note: Examples rely on the GLODAPv2.2023 dataset, which requires the separate glodap package.


Algorithms

PyESPER offers three algorithms to predict desired variables:

  1. PyESPER_LIR: Interpolated linear networks (LIRv.3 / ESPERv1.1).
  2. PyESPER_NN: Neural network estimations (ESPERv1.1).
  3. PyESPER_Mixed: An averaged ensemble of LIR and NN estimates.

Estimation Logic

The routines calculate coefficients and intercepts across up to 16 equation combinations. The base predictors are always Salinity (S) and Temperature (T). The remaining predictors (A, B, C) shift depending on the target variable.

Desired Variable Predictor A Predictor B Predictor C
TA, DIC, pH, phosphate Nitrate Oxygen Silicate
nitrate Phosphate Oxygen Silicate
silicate Phosphate Oxygen Nitrate
oxygen Phosphate Nitrate Silicate

Equation Options:

  1. S, T, A, B, C
  2. S, T, A, C
  3. S, T, B, C
  4. S, T, C
  5. S, T, A, B
  6. S, T, A
  7. S, T, B
  8. S, T
  9. S, A, B, C
  10. S, A, C
  11. S, B, C
  12. S, C
  13. S, A, B
  14. S, A
  15. S, B
  16. S

Usage

import PyESPER

outputs = PyESPER.emlr_estimate(
    DesiredVariables=["TA", "DIC"],
    Path="/path/to/Mat_fullgrid/",
    OutputCoordinates={
        "longitude": [0.0, 180.0], 
        "latitude": [85.0, -20.0], 
        "depth": [10, 1000]
    },
    PredictorMeasurements={
        "salinity": [35.0, 34.1],
        "temperature": [0.1, 10.0],
        "oxygen": [202.3, 214.7],
        "silicate": [15.0, 45.2],
        "nitrate": [1.2, 30.5]
    },
    EstDates=[2020.5, 2020.5],
    Equations=[1, 2, 8, 16],
    PerKgSwTF=True
)

Required Parameters

Parameter Type Description
DesiredVariables list[str] Variables to return. Options: "TA", "DIC", "pH", "phosphate", "nitrate", "silicate", "oxygen".
Path str Absolute or relative path to the downloaded LIR .mat files.
OutputCoordinates dict Keys: "longitude" (°E), "latitude" (°N), "depth" (m). Values must be arrays of length n.
PredictorMeasurements dict Keys: "salinity", "temperature", "phosphate", "nitrate", "silicate", "oxygen". Values are arrays of length n. Unmeasured variables can be omitted or filled with NaN.

Optional Parameters

Parameter Type Default Description
EstDates list[float] 2002.0 Decimal dates for the estimates. Crucial for DIC and pH accuracy.
Equations list[int] 1:16 Specific equation permutations to run (1-16).
MeasUncerts dict WOCE Defaults Keys: "sal_u", "temp_u", "phosphate_u", "nitrate_u", "silicate_u", "oxygen_u".
pHCalcTF bool False Recalculates pH as if derived from TA/DIC rather than measured via dye.
PerKgSwTF bool True Set to False if your inputs are volumetric (µmol/L) rather than molal (µmol/kg). Outputs are always molal.
VerboseTF bool True Toggles terminal logging.

Outputs

PyESPER returns three dictionaries, shape (n, e) where n is the number of coordinates and e is the number of equations computed:

  1. Estimates: The computed variables (µmol/kg, except for unitless pH).
  2. Coefficients: The equation intercepts and weights used for the estimation (LIR algorithm only).
  3. Uncertainties: The propagated uncertainty bounds for the estimate.

Missing Data Handling: Passing NaN as a coordinate or required predictor parameter will cascade and return NaN for all dependent equation estimates.


References

If you use this package, cite the relevant publications:

  • PyESPER Implementation: Carter et al., 2021 (doi: 10.1002/lom3/10461)
  • LIRv3 / ESPER_NN (ESPERv1.1): Carter, 2021 (doi: 10.5281/ZENODO.5512697)
  • LIARv1: Carter et al., 2016 (doi: 10.1002/lom3.10087)
  • LIARv2, LIPHR, LINR: Carter et al., 2018 (doi: 10.1002/lom3.10232)
  • LIPR, LISIR, LIOR: Carter et al., 2021 (doi: 10.1002/lom3/10232)
  • Neural Network Inspiration (CANYON-B): Bittig et al., 2018 (doi: 10.3389/fmars.2018.00328)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyesper-1.1.1.tar.gz (871.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pyesper-1.1.1-py3-none-any.whl (890.1 kB view details)

Uploaded Python 3

File details

Details for the file pyesper-1.1.1.tar.gz.

File metadata

  • Download URL: pyesper-1.1.1.tar.gz
  • Upload date:
  • Size: 871.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pyesper-1.1.1.tar.gz
Algorithm Hash digest
SHA256 773eafc38761662a530f84561ee483cc82433475e804e521d861cd1264be6085
MD5 9263501e5a75b45a5e34e54eb198e004
BLAKE2b-256 e25db9381dd52a8184f8b445cd55e5fd87937064c76b558985d43ff7a26ea74e

See more details on using hashes here.

File details

Details for the file pyesper-1.1.1-py3-none-any.whl.

File metadata

  • Download URL: pyesper-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 890.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for pyesper-1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 ddaf34f565eeeb4136805acbe2ca3fbec0a89cd415cdb72e3086b3a1932cb61b
MD5 516018efede49b127d8011851e1ce814
BLAKE2b-256 41a7183244863225a869aad02cbb23211b65471722961b4c429a18b147c07eb4

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page