Skip to content

Releases: KingsburyLab/pyEQL

v1.4.0

17 Feb 11:41

Choose a tag to compare

Major Changes

New Electrolyte Engine - phreeqc2026

This release features a new interface to IPHREEQC developed by @vineetbansal of Princeton University's Research Software Engineering group. This new interface "talks" directly to the USGS-provided IPHREEQC libraries, providing a much more robust way of accessing PHREEQC functionality via pyEQL as compared to the legacy engine based on phreeqpython. This new engine can be specified by passing engine='phreeqc2026' to Solution.__init__. Thanks to pyEQL's modular API, no other changes to your script are needed - it is a "drop-in" replacement for the legacy phreeqc engine.

The legacy phreeqc engine is still present and is still used for speciation by the default native engine. However, the native engine will adopt phreeqc2026 for speciation calculations in the next release. You may see a warning about this when you call equilibrate().

Solid-liquid and gas-liquid equilibrium

The equilibrate() method now supports equilibrating a Solution with gas and/or solid phases, thanks to work by @vineetbansal , @SuixiongTay , and @YitongPan1 . In addition to user-specified phases, a convenience argument atmosphere has been added if you simply want to consider the effects of, e.g., atmospheric carbonate on your system:

>>> from pyEQL import Solution

>>> s1 = Solution({}, pH=7.0, volume="1 L", engine="phreeqc2026")
>>> s1.equilibrate(atmosphere=True)
>>> s1.components
{'H2O(aq)': 55.34457593619076,
'O2(aq)': 0.0002675300582572652,
'CO2(aq)': 1.424944456303147e-05,
'H[+1]': 2.51988623743169e-06,
'HCO3[-1]': 2.5169971787125935e-06,
'OH[-1]': 4.007874338794804e-09,
'CO3[-2]': 4.7053998717451746e-11, 
...}

The new equilibrate capabilities work across all engines - native, phreeqc, and phreeqc2026

Performance

Loading times for Solution that contain a large number of solutes have been significantly improved (by a factor of ~10x in some cases) thanks to a caching optimization identified by @vineetbansal .

See additional details in the CHANGELOG.

Detailed List of Changes

🐛 Bug Fixes

🛠 Enhancements

📖 Documentation

🧹 House-Keeping

🏥 Package Health

🤷‍♂️ Other Changes

New Contributors

Full Changelog: v1.3.2...v1.4.0

v1.4.0rc11

06 Feb 16:23
fb4975c

Choose a tag to compare

v1.4.0rc11 Pre-release
Pre-release

This is a pre-release version to test new PyPi publishing tooling

What's Changed

🐛 Bug Fixes

  • Fix behavior of PHREEQC equilibrate when composition contains pure elements by @vineetbansal in #282
  • Fix incorrect reduction of dimers/polymers in standardize_formula by @vineetbansal in #309

🛠 Enhancements

🧹 House-Keeping

🏥 Package Health

🤷‍♂️ Other Changes

New Contributors

Full Changelog: v1.3.2...1.4.0rc11

v1.3.2

15 Sep 15:06
02e4275

Choose a tag to compare

Version 1.3.2

See CHANGELOG for a detailed explanation of changes.

What's Changed

🐛 Bug Fixes

🤷‍♂️ Other Changes

  • Bump actions/checkout from 4 to 5 in the actions group by @dependabot[bot] in #278
  • Bump the actions group with 2 updates by @dependabot[bot] in #280
  • Automated dependency upgrades by @github-actions[bot] in #275

Full Changelog: v1.3.1...v1.3.2

v1.3.1

19 Aug 07:40
39da759

Choose a tag to compare

Version 1.3.1

See CHANGELOG for a detailed explanation of changes.

What's Changed

🐛 Bug Fixes

Full Changelog: v1.3.0...v1.3.1

v1.3.0

08 Aug 20:29
e1c7cf6

Choose a tag to compare

Version 1.3.0

See CHANGELOG for a detailed explanation of changes.

What's Changed

🐛 Bug Fixes

  • standardize_formula: handle ambiguous dash-hyphens by @rkingsbury in #264
  • standardize_formula: handle ambiguous dash-hyphens pt.2 by @rkingsbury in #267
  • Database: add Pitzer molar volume parameters for NH4(2)SO4, remove duplicate K2SO4 entry by @SuixiongTay in #268
  • Raise ValueError for conflicting pH and H+ by @rkingsbury in #270
  • Update test_mixed_electrolyte_activity with corrected data by @rkingsbury in #271
  • Fix get salt dict type by @ugognw in #258
  • Fix mass conservation for H+ and OH- in Solution.add following #270 by @rkingsbury in #274

🛠 Enhancements

  • prevent diffusion coefficient adjustment when temperature is within 1 degree of the the reference value by @YitongPan1 in #215
  • Using importlib to locate seawater.yaml by @SuixiongTay in #241
  • Miscellaneous CI and Solution enhancements by @rkingsbury in #269

📖 Documentation

🧹 House-Keeping

💥 Breaking Changes

  • Remove deprecated list_XXX methods; deprecate add_solvent by @rkingsbury in #273

🤷‍♂️ Other Changes

  • Bump pypa/gh-action-pypi-publish from 1.10.1 to 1.10.2 in the actions group by @dependabot[bot] in #189
  • Automated dependency upgrades by @github-actions[bot] in #185
  • Bump pypa/gh-action-pypi-publish from 1.10.2 to 1.10.3 in the actions group by @dependabot[bot] in #193
  • Bump pypa/gh-action-pypi-publish from 1.10.3 to 1.11.0 in the actions group by @dependabot[bot] in #198
  • Automated dependency upgrades by @github-actions[bot] in #194
  • Bump the actions group across 1 directory with 2 updates by @dependabot[bot] in #206
  • CI: don't fail on FutureWarning by @rkingsbury in #208
  • bump monty to 2024.12.10; address pint deprecation warning by @rkingsbury in #209
  • Bump pypa/gh-action-pypi-publish from 1.12.2 to 1.12.4 in the actions group across 1 directory by @dependabot[bot] in #212
  • Automated dependency upgrades by @github-actions[bot] in #211
  • Automated dependency upgrades by @github-actions[bot] in #226
  • Automated dependency upgrades by @github-actions[bot] in #235
  • Bump jinja2 from 3.1.4 to 3.1.6 in /requirements by @dependabot[bot] in #232
  • Automated dependency upgrades by @github-actions[bot] in #237
  • bump pint to 0.24.1 by @rkingsbury in #238
  • bump pint to v0.24.4 by @rkingsbury in #239
  • Automated dependency upgrades by @github-actions[bot] in #245
  • Update Python version classifiers in pyproject.toml by @ugognw in #247
  • Bump urllib3 from 1.26.20 to 2.5.0 in /requirements by @dependabot[bot] in #251
  • Bump requests from 2.32.3 to 2.32.4 in /requirements by @dependabot[bot] in #249
  • bump maggma to v0.71.4 by @rkingsbury in #265
  • bump pymatgen to v2025.1.9 by @rkingsbury in #266

New Contributors

Full Changelog: v1.2.0...v1.3.0

v1.2.0

24 Sep 16:05
e171b9a

Choose a tag to compare

Version 1.2.0

See CHANGELOG for a detailed explanation of changes.

What's Changed

🐛 Bug Fixes

🤷‍♂️ Other Changes

  • pymatgen>=2024.9.10 updated after bugfix and conflict resolve by @abhardwaj73 in #188

Full Changelog: v1.1.6...v1.2.0

v1.1.6

02 Sep 16:33
50a873d

Choose a tag to compare

Version 1.1.6

See CHANGELOG for a detailed explanation of changes.

What's Changed

🐛 Bug Fixes

  • Bugfix in get_total_amount; CHANGELOG for next version by @rkingsbury in #182

🛠 Enhancements

🤷‍♂️ Other Changes

New Contributors

Full Changelog: v1.1.5...v1.1.6

v1.1.5

29 Jul 03:59
f1d3c6f

Choose a tag to compare

Version 1.1.5

See CHANGELOG for a detailed explanation of changes.

What's Changed

🐛 Bug Fixes

Full Changelog: v1.1.4...v1.1.5

v1.1.4

28 Jul 23:21
8c565ae

Choose a tag to compare

Version 1.1.4

See CHANGELOG for a detailed explanation of changes.

What's Changed

🐛 Bug Fixes

  • Fix erroneous guard statement in pH charge balancing by @rkingsbury in #155

Full Changelog: v1.1.3...v1.1.4

v1.1.3

28 Jul 21:53
9291d27

Choose a tag to compare

Version 1.1.3

See CHANGELOG for a detailed explanation of changes.

What's Changed

🐛 Bug Fixes

  • Solution: fix pH charge balancing bug and possible water ion imbalance by @rkingsbury in #154

Full Changelog: v1.1.2...v1.1.3