Skip to main content

MyAMI specific ion interaction model for calculating stoichiometric equilibrium constants in modified seawater.

Project description

The MyAMI Specific Ion Interaction Model for correcting stoichiometric equilibrium constants (Ks) for variations in seawater composition, made available available as the pymyami python package.

This package is a re-factor of the MyAMI model published by Hain et al. (2015), which is available here. The key differences between the original model and this package are:

  • Speed: All calculations have been vectorised using NumPy, making MyAMI 2-3 orders of magnitude faster.
  • Direct Calculation: pymyami directly calculates correction factors using the MyAMI model. This differs from Hain et al. (2015), where the focus was on modifying parameters that could be input into the standard equations for calculating stoichiometric equilibrium products.
  • Correction Factor Focus: pymyami produces corrections factors (FX,MyAMI) that can be applied to adjust stoichiometric equilibrium constants for variations in seawater composition, following KX,corr = KX,empirical * FX,MyAMI. For the direct calculation of Ks, including the corrections calculated by pymyami, please see the Kgen project.
  • Available Ions: pymyami allows the modification of any ion in the model, rather than just Mg and Ca: Na+, K+, Mg2+, Ca2+, Sr2+, Cl-, B(OH)4-, HCO3-, CO32- and SO42-.
  • Parameter Transparency: Wherever possible, parameter tables are now constructed on-the-fly from raw tables in the Appendix of Millero & Pierrot, 1998, making the origin of parameters explicit.
  • Pure Python: There is no longer interface code for interacting with other languages (i.e. MATLAB). This caused a substantial performance bottleneck, and is discouraged. The Kgen project provides a convenient interface to use pymyami in R and MATLAB.
  • Approximation Method: Where very fast calculations are required (e.g. Monte Carlo methods), pymyami uses a high-dimensional polynomial to approximate FX,MyAMI as a function of temperature, salinity, Mg and Ca. This is a very fast approximation, but is only accurate to within ~0.2%.

Kgen

pymyami only calculations correction factors that can be applied to stoichiometric equilibrium constants (Ks). If you are looking for a convenient way to adjust Ks for variations in seawater composition, please see the Kgen project.

Consistency with Hain et al. (2015)

The K correction factors calculated by pymyami are similar to those calculated by the code of Hain et al. (2015), although there are some notable deviations of up to 4%. A summary of maximum and average differences compared to Hain et al. (2015) follows:

  K0: 0.00% max, 0.00% avg
  K1: 0.92% max, 0.05% avg
  K2: 3.77% max, -0.07% avg
  KW: 4.49% max, -1.29% avg
  KB: 0.92% max, 0.05% avg
  KspA: 1.87% max, 0.04% avg
  KspC: 1.87% max, 0.04% avg
  KS: 1.83% max, 0.10% avg

Note that maximum deviations are seen when the change in Mg and Ca correlates, meaning that these deviations shouldn't be too important for palaeo-seawater calculations because the concentration of Mg and Ca tend to be anti-correlated through geological history.

These differences arise from typo corrections in the original code, and pymyami should be closer to the original MIAMI model of Millerot and Pierrot (1998).

Installation

The model is available as a PyPI package, which can be installed by:

pip install pymyami

Example Usage

from pymyami import calculate_seawater_correction, approximate_seawater_correction

# run the model to calculate correction factors
calculate_seawater_correction(TempC=35, Sal=36.2, Mg=0.03, Ca=0.012)

>>> {'KspC': 0.7843309390178521,
     'KspA': 0.7843309390178521,
     'K1': 1.002405617170862,
     'K2': 0.7885093392132683,
     'KW': 0.7459757009835559,
     'KB': 0.9382494946753764,
     'K0': 1.0056418412233974,
     'KS': 0.9573891319238595}

# use the polynomial approximation to calculate correction factors
approximate_seawater_correction(TempC=35, Sal=36.2, Mg=0.03, Ca=0.012)

>>> UserWarning: WARNING: using approximate MyAMI K correction factors instead of calculated ones. These are only accurate to within ~0.25%. Please dont use them for anything critical.

>>> {'K0': array(1.00565919),
     'K1': array(1.00238861),
     'K2': array(0.78858314),
     'KB': array(0.93815884),
     'KW': array(0.74594823),
     'KspC': array(0.78442705),
     'KspA': array(0.78442705),
     'KS': array(0.95738293)}

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

pymyami-2.1.3.tar.gz (40.7 kB view details)

Uploaded Source

Built Distribution

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

pymyami-2.1.3-py3-none-any.whl (44.5 kB view details)

Uploaded Python 3

File details

Details for the file pymyami-2.1.3.tar.gz.

File metadata

  • Download URL: pymyami-2.1.3.tar.gz
  • Upload date:
  • Size: 40.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pymyami-2.1.3.tar.gz
Algorithm Hash digest
SHA256 6b3e213cded02ccb5007a29581f5a3a43582d95200dffd55dbaec527dae5231f
MD5 00f98f1aada19f7e1940314245e63fc4
BLAKE2b-256 c2ac5409f9282d59dc4ebbf0ced99134b5326495b415b48c1d676d7d60139c60

See more details on using hashes here.

File details

Details for the file pymyami-2.1.3-py3-none-any.whl.

File metadata

  • Download URL: pymyami-2.1.3-py3-none-any.whl
  • Upload date:
  • Size: 44.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.3

File hashes

Hashes for pymyami-2.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 36da0caca86373d6a400caba99294acec38aff3f572c203f1db277483fcf5560
MD5 b6bb4f99481be09eef1630a105418e5c
BLAKE2b-256 5afd8a74645b397a2df414c0e362814fe4c3284091a6788e943beeb581de0c7d

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