[![Read the Docs](https://img.shields.io/readthedocs/pyeql)](https://pyeql.readthedocs.io/en/latest/)
[![testing](https://github.com/KingsburyLab/pyeql/workflows/testing/badge.svg)](https://github.com/KingsburyLab/pyeql/actions?query=workflow%3Atesting)
[![codecov](https://codecov.io/gh/KingsburyLab/pyeql/branch/main/graph/badge.svg?token=I7RP0QML6S)](https://codecov.io/gh/KingsburyLab/pyeql)
![Supported python versions](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12-blue)
[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.8332915.svg)](https://doi.org/10.5281/zenodo.8332915)
[![PyPI version](https://badge.fury.io/py/pyEQL.svg)](https://badge.fury.io/py/pyEQL)
[![status](https://joss.theoj.org/papers/bdd9e247ea9736a0fdbbd5fe12bef7a6/status.svg)](https://joss.theoj.org/papers/bdd9e247ea9736a0fdbbd5fe12bef7a6)
<img src="pyeql-logo.png" alt="pyEQL logo" style="width:600px;"/>
# 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).
```python
>>> 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](https://pyeql.readthedocs.io/en/latest/database.html) containing hundreds of model
parameters and physicochemical properties for different ions.
- Units-aware calculations (by means of the [pint](https://github.com/hgrecco/pint) library)
### Documentation
Detailed documentation is available at [https://pyeql.readthedocs.io/](https://pyeql.readthedocs.io/)
### Dependencies
- Python 3.9+. This project will attempt to adhere to NumPy's
[NEP 29](https://numpy.org/neps/nep-0029-deprecation_policy.html) deprecation policy
for older version of Python.
- [pint](https://github.com/hgrecco/pint) - for units-aware calculations
- [pymatgen](https://github.com/materialsproject/pymatgen) - periodic table and chemical formula information
- [phreeqpython](https://github.com/Vitens/phreeqpython) - for PHREEQC-based speciation calculations
- [iapws](https://github.com/jjgomera/iapws/) - equations of state for water
- [monty](https://github.com/materialsvirtuallab/monty) - serialization and deserialization utilities
- [maggma](https://materialsproject.github.io/maggma/) - interface for accessing the property database
- [scipy](https://www.scipy.org/) - for certain nonlinear equation solvers
## <!-- pyscaffold-notes -->
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/]().
Raw data
{
"_id": null,
"home_page": "https://github.com/KingsburyLab/pyEQL",
"name": "pyEQL",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.9",
"maintainer_email": "",
"keywords": "",
"author": "Ryan Kingsbury",
"author_email": "kingsbury@princeton.edu",
"download_url": "https://files.pythonhosted.org/packages/f6/18/26bdbf6e46607fccb2dd8d74a75bb09f7c0619d02580d469f5b716a84896/pyEQL-1.0.0.tar.gz",
"platform": "any",
"description": "[![Read the Docs](https://img.shields.io/readthedocs/pyeql)](https://pyeql.readthedocs.io/en/latest/)\n[![testing](https://github.com/KingsburyLab/pyeql/workflows/testing/badge.svg)](https://github.com/KingsburyLab/pyeql/actions?query=workflow%3Atesting)\n[![codecov](https://codecov.io/gh/KingsburyLab/pyeql/branch/main/graph/badge.svg?token=I7RP0QML6S)](https://codecov.io/gh/KingsburyLab/pyeql)\n![Supported python versions](https://img.shields.io/badge/python-3.9%20%7C%203.10%20%7C%203.11%20%7C%203.12-blue)\n[![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.8332915.svg)](https://doi.org/10.5281/zenodo.8332915)\n[![PyPI version](https://badge.fury.io/py/pyEQL.svg)](https://badge.fury.io/py/pyEQL)\n[![status](https://joss.theoj.org/papers/bdd9e247ea9736a0fdbbd5fe12bef7a6/status.svg)](https://joss.theoj.org/papers/bdd9e247ea9736a0fdbbd5fe12bef7a6)\n\n<img src=\"pyeql-logo.png\" alt=\"pyEQL logo\" style=\"width:600px;\"/>\n\n# A python interface for water chemistry\n\n## Description\n\n**The goal of `pyEQL` is to provide a stable, intuitive, easy to learn python interface\nfor water chemistry that can be connected to a variety of different modeling engines**\n\nSpecifically, `pyEQL` defines a `Solution` class to represent an aqueous\nelectrolyte solution. The `Solution` class allows the user to manipulate solutions as\nPython objects, providing methods to populate them with solutes, calculate\nspecies-specific properties (such as activity and diffusion coefficients),\nand retrieve bulk properties (such as density, conductivity, or volume).\n\n```python\n>>> from pyEQL import Solution\n>>> s1=Solution({\"Na+\":\"1 mol/L\", \"Cl-\": \"1 mol/L\"})\n>>> s1.density\n<Quantity(1.03710384, 'kilogram / liter')>\n>>> s1.conductivity\n<Quantity(8.09523295, 'siemens / meter')>\n>>> s1.osmotic_pressure.to('atm')\n<Quantity(46.7798197, 'standard_atmosphere')>\n>>> s1.get_amount('Na+', 'ug/L')\n<Quantity(22989769.3, 'microgram / liter')>\n```\n\n`pyEQL` also includes a number of other utilities to support water chemistry analysis,\nincluding a **built-in property database** of diffusion coefficients, activity correction\nparameters, and other data on a variety of common electrolytes.\n\nIt is designed to be customizable and easy to integrate into projects\nthat require modeling of chemical thermodyanmics of aqueous solutions.\nIt aspires to provide a flexible, extensible framework for the user, with a\nhigh level of transparency about data sources and calculation methods.\n\n### Key Features\n\n- Build accurate solution properties using a minimum of inputs. Just specify\n the identity and quantity of a solute and pyEQL will do the rest.\n\n- \"Graceful Decay\" from more sophisticated, data-intensive modeling approaches\n to simpler, less accurate ones depending on the amount of data supplied.\n\n- Not limited to dilute solutions. pyEQL contains out of the box support for\n the Pitzer Model and other methods for modeling concentrated solutions.\n\n- Built in [database](https://pyeql.readthedocs.io/en/latest/database.html) containing hundreds of model\n parameters and physicochemical properties for different ions.\n\n- Units-aware calculations (by means of the [pint](https://github.com/hgrecco/pint) library)\n\n### Documentation\n\nDetailed documentation is available at [https://pyeql.readthedocs.io/](https://pyeql.readthedocs.io/)\n\n### Dependencies\n\n- Python 3.9+. This project will attempt to adhere to NumPy's\n [NEP 29](https://numpy.org/neps/nep-0029-deprecation_policy.html) deprecation policy\n for older version of Python.\n- [pint](https://github.com/hgrecco/pint) - for units-aware calculations\n- [pymatgen](https://github.com/materialsproject/pymatgen) - periodic table and chemical formula information\n- [phreeqpython](https://github.com/Vitens/phreeqpython) - for PHREEQC-based speciation calculations\n- [iapws](https://github.com/jjgomera/iapws/) - equations of state for water\n- [monty](https://github.com/materialsvirtuallab/monty) - serialization and deserialization utilities\n- [maggma](https://materialsproject.github.io/maggma/) - interface for accessing the property database\n- [scipy](https://www.scipy.org/) - for certain nonlinear equation solvers\n\n## <!-- pyscaffold-notes -->\n\npyEQL is licensed under LGPL.\n\nThis project has been set up using PyScaffold 4.5. For details and usage\ninformation on PyScaffold see [https://pyscaffold.org/]().\n",
"bugtrack_url": null,
"license": "LGPL3",
"summary": "Python tools for solution chemistry",
"version": "1.0.0",
"project_urls": {
"Documentation": "https://pyeql.readthedocs.io/",
"Homepage": "https://github.com/KingsburyLab/pyEQL"
},
"split_keywords": [],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "0de9ec62cdfef5a6a1e81bbdd0b1bd1f46c9ec0e8d1ee2704c2be4577f83f1ae",
"md5": "29e5a3472e1a6880e83e420a58c8d471",
"sha256": "00e007202793797a6e6b4c13f3f4bd32cd524997593104099badc51369bf599c"
},
"downloads": -1,
"filename": "pyEQL-1.0.0-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "29e5a3472e1a6880e83e420a58c8d471",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=3.9",
"size": 289755,
"upload_time": "2024-03-17T20:35:07",
"upload_time_iso_8601": "2024-03-17T20:35:07.400217Z",
"url": "https://files.pythonhosted.org/packages/0d/e9/ec62cdfef5a6a1e81bbdd0b1bd1f46c9ec0e8d1ee2704c2be4577f83f1ae/pyEQL-1.0.0-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f61826bdbf6e46607fccb2dd8d74a75bb09f7c0619d02580d469f5b716a84896",
"md5": "cb3519290bc99388b000a40a150b952d",
"sha256": "a051d97201c233edd1900baebd69700936b86133c5bf0bce676a15f34402faef"
},
"downloads": -1,
"filename": "pyEQL-1.0.0.tar.gz",
"has_sig": false,
"md5_digest": "cb3519290bc99388b000a40a150b952d",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.9",
"size": 642383,
"upload_time": "2024-03-17T20:35:10",
"upload_time_iso_8601": "2024-03-17T20:35:10.042329Z",
"url": "https://files.pythonhosted.org/packages/f6/18/26bdbf6e46607fccb2dd8d74a75bb09f7c0619d02580d469f5b716a84896/pyEQL-1.0.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-03-17 20:35:10",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "KingsburyLab",
"github_project": "pyEQL",
"travis_ci": false,
"coveralls": true,
"github_actions": true,
"tox": true,
"lcname": "pyeql"
}