Skip to main content

A python interface for solution chemistry

Project description

Read the Docs testing codecov Supported python versions DOI PyPI version status

pyEQL logo

A python interface for water chemistry

Description

The goal of pyEQL is to provide a stable, intuitive, easy to learn python interface for water chemistry that can be connected to a variety of different modeling engines

Specifically, pyEQL defines a Solution class to represent an aqueous electrolyte solution. The Solution class allows the user to manipulate solutions as Python objects, providing methods to populate them with solutes, calculate species-specific properties (such as activity and diffusion coefficients), and retrieve bulk properties (such as density, conductivity, or volume).

>>> from pyEQL import Solution
>>> s1=Solution({"Na+":"1 mol/L", "Cl-": "1 mol/L"})
>>> s1.density
<Quantity(1.03710384, 'kilogram / liter')>
>>> s1.conductivity
<Quantity(8.09523295, 'siemens / meter')>
>>> s1.osmotic_pressure.to('atm')
<Quantity(46.7798197, 'standard_atmosphere')>
>>> s1.get_amount('Na+', 'ug/L')
<Quantity(22989769.3, 'microgram / liter')>

pyEQL also includes a number of other utilities to support water chemistry analysis, including a built-in property database of diffusion coefficients, activity correction parameters, and other data on a variety of common electrolytes.

It is designed to be customizable and easy to integrate into projects that require modeling of chemical thermodyanmics of aqueous solutions. It aspires to provide a flexible, extensible framework for the user, with a high level of transparency about data sources and calculation methods.

Key Features

  • Build accurate solution properties using a minimum of inputs. Just specify the identity and quantity of a solute and pyEQL will do the rest.

  • "Graceful Decay" from more sophisticated, data-intensive modeling approaches to simpler, less accurate ones depending on the amount of data supplied.

  • Not limited to dilute solutions. pyEQL contains out of the box support for the Pitzer Model and other methods for modeling concentrated solutions.

  • Built in database containing hundreds of model parameters and physicochemical properties for different ions.

  • Units-aware calculations (by means of the pint library)

Documentation

Detailed documentation is available at https://pyeql.readthedocs.io/

Dependencies

  • Python 3.10+. This project will attempt to adhere to NumPy's NEP 29 deprecation policy for older version of Python.
  • pint - for units-aware calculations
  • pymatgen - periodic table and chemical formula information
  • phreeqpython - for PHREEQC-based speciation calculations
  • iapws - equations of state for water
  • monty - serialization and deserialization utilities
  • maggma - interface for accessing the property database
  • scipy - for certain nonlinear equation solvers

pyEQL is licensed under LGPL.

This project has been set up using PyScaffold 4.5. For details and usage information on PyScaffold see https://pyscaffold.org/.

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

pyeql-1.3.2.tar.gz (800.9 kB view details)

Uploaded Source

Built Distribution

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

pyeql-1.3.2-py3-none-any.whl (289.2 kB view details)

Uploaded Python 3

File details

Details for the file pyeql-1.3.2.tar.gz.

File metadata

  • Download URL: pyeql-1.3.2.tar.gz
  • Upload date:
  • Size: 800.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyeql-1.3.2.tar.gz
Algorithm Hash digest
SHA256 af7a3b2ef937ff306811f5f554e20e09b7b203b08e9f8e429d96939c8542b6db
MD5 4e835b367df4fc6f8251bb26c33ba58f
BLAKE2b-256 604f04a1ee04fec7c51f1aa217f45286657101c1ceff28f05c6d1398e0306b00

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyeql-1.3.2.tar.gz:

Publisher: release.yml on KingsburyLab/pyEQL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file pyeql-1.3.2-py3-none-any.whl.

File metadata

  • Download URL: pyeql-1.3.2-py3-none-any.whl
  • Upload date:
  • Size: 289.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for pyeql-1.3.2-py3-none-any.whl
Algorithm Hash digest
SHA256 598be8336b12e5df2ca8f230213aa0f4db37900277557adfdf57a411cac22d87
MD5 119eaa693bd5b3f10a2088debb80cbe6
BLAKE2b-256 8c0f2476a74458999fde70eb58d128c39e2875dd955db846e83a3e44d9481508

See more details on using hashes here.

Provenance

The following attestation bundles were made for pyeql-1.3.2-py3-none-any.whl:

Publisher: release.yml on KingsburyLab/pyEQL

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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