pychnosz
pyCHNOSZ is a Python 3 package that wraps the functionality of the package CHNOSZ for R. Perform thermodynamic calculations for aqueous geochemistry and biogeochemistry. Results are returned as tables and figures. Calculate standard state properties of molecules and reactions at elevated temperatures and pressures, create activity and predominance diagrams, and more.
Science Score: 75.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 3 DOI reference(s) in README -
✓Academic publication links
Links to: zenodo.org -
○Academic email domains
-
✓Institutional organization owner
Organization worm-portal has institutional domain (worm-portal.asu.edu) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.9%) to scientific vocabulary
Repository
pyCHNOSZ is a Python 3 package that wraps the functionality of the package CHNOSZ for R. Perform thermodynamic calculations for aqueous geochemistry and biogeochemistry. Results are returned as tables and figures. Calculate standard state properties of molecules and reactions at elevated temperatures and pressures, create activity and predominance diagrams, and more.
Basic Info
- Host: GitHub
- Owner: worm-portal
- License: mit
- Language: Jupyter Notebook
- Default Branch: master
- Homepage: https://worm-portal.asu.edu/
- Size: 5.55 MB
Statistics
- Stars: 2
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 2
Metadata Files
README.md
pyCHNOSZ
Author: Dr. Grayson Boyer, GEOPIG Lab, Arizona State University
CHNOSZ is a package written by Dr. Jeff Dick for performing thermodynamic calculations in aqueous geochemistry and biogeochemistry. pyCHNOSZ is a wrapper for CHNOSZ that allows these calculations to be carried out in Python 3 Jupyter notebooks.
Features
The following CHNOSZ functions are supported in pyCHNOSZ:
- info - Search for chemical species by name or formula and retrieve their thermodynamic parameters.
- add_OBIGT - Add or overwrite species in the OBIGT thermodynamic database by supplying a comma separated value (csv) file with custom data.
- mod_OBIGT - Modify species in the OBIGT thermodynamic database. Optionally, supply a Pandas dataframe containing custom data.
- reset - reset data to default values.
- subcrt - Calculate standard state partial molal thermodynamic properties of reactions at elevated temperatures and pressures.
- basis - Define basis species of a chemical system.
- species - Define the species of interest in a system.
- equilibrate - Calculate equilibrium chemical activities of species from the affinities of formation of the species at unit activity.
- affinity - Calculate the chemical affinities of formation reactions of species.
- diagram - Plot equilibrium chemical activity (1-D speciation) or equal-activity (2-D predominance) diagrams as a function of chemical activities of basis species, temperature and/or pressure.
- And more. See the documentation for pyCHNOSZ
Requirements
This package must be installed into an environment with an R installation. See these instructions for installing R with Anaconda. Additionally, the CHNOSZ package for R must be installed (see instructions below).
Installation
Installing CHNOSZ
Open an R session. Install the CHNOSZ package with:
r
install.packages("CHNOSZ")
Once CHNOSZ is installed you may quit the R session.
Installing pyCHNOSZ
Install pyCHNOSZ using pip:
$ pip install pyCHNOSZ
Usage
Import pyCHNOSZ in your python code with:
python
import pyCHNOSZ
In the following examples, pyCHNOSZ functions are imported with:
python
from pyCHNOSZ import info, add_OBIGT, mod_OBIGT, reset, subcrt
Search for chemical species
The info() function can be used to look up chemical species by name or formula. If names or formulas are provided, database index integers are returned. A list of integers will look up chemical species by index and return a table of thermodynamic properties. See the info() function's original documentation to learn more about what this function can do. A few examples are shown below.
Look up the database index value of Fe+2:
python
info("Fe+2")
Look up multiple chemical species:
python
info(["HCO3-", "CH4"])
Define chemical states:
python
info(["HCO3-", "CH4"], state=["aq", "gas"])
Search species by index values to look up their thermodynamic parameters.
python
info([13, 872])
Nest info functions to look up thermodynamic properties directly from names or formulas:
python
info(info("Fe+2"))
Look up and add a protein to the database:
python
info("LYSC_CHICK")
Add or replace thermodynamic data in the database
See the original R documentation for add_OBIGT() and reset() for basic useage. A few examples are given below.
Load the SUPCRT92 database.
python
a = add_OBIGT("SUPCRT92")
The variable a is assigned a list of integers corresponding to the indices of chemical species that are added or replaced in the OBIGT thermodynamic database used by pyCHNOSZ.
It is possible to add a custom table of thermodynamic parameters.
python
a = add_OBIGT("my_custom_entries.csv")
info(a) # confirm new entries have been added
The entries of my_custom_entries.csv would then be available for thermodynamic calculations with subcrt(), for example.
Reset thermodynamic database to its original configuration.
python
reset()
Modify values in the thermodynamic database with mod_OBIGT():
python
mod_OBIGT("HCO3-", G = -140283.7, Cp = -9)
info(info("HCO3-"))
Calculate thermodynamic properties of reactions
See the original documentation for subcrt(). Useage in pyCHNOSZ is the same, except python lists are used in place of R's vectors. The function produces a dictionary of results stored in pandas dataframes. An example is shown below for the reaction H2 (aq) + 0.5 O2 (gas) = H2O(liq) at 30 and 50 degrees C and 100 bars pressure:
python
subcrt(species=["H2", "O2", "H2O"], coeff=[-1.0, -0.5, 1.0],
state=["aq", "gas", "liq"], T=[30, 50], P=100)
Output is a python dictionary of dataframes: ``` subcrt: 3 species at 2 values of T (ºC) and P (bar) (wet) [energy units: cal]
{'reaction': coeff name formula state ispecies
62 -1.0 H2 H2 aq 62.0
2612 -0.5 oxygen O2 gas 2612.0
1 1.0 water H2O liq 1.0,
'out': T P rho logK G H S \
1 30.0 100 1.000017 43.855086 -60832.380282 -67420.887872 -21.89070
2 50.0 100 0.992305 40.834419 -60379.262657 -67882.530994 -23.36663
V Cp
1 -7.494052 -24.126268
2 -8.259704 -20.941879 }
```
More examples:
For more examples, like plotting activity and predominance diagrams, check out the pyCHNOSZ demo notebook.
Owner
- Name: WORM: Water-Organic-Rock-Microbe Reaction Modeling
- Login: worm-portal
- Kind: organization
- Website: worm-portal.asu.edu
- Repositories: 3
- Profile: https://github.com/worm-portal
A free, open-source online workspace with ready-to-go thermodynamic modeling software
Citation (CITATION.cff)
# YAML 1.2
---
authors:
-
affiliation: "Arizona State University, School of Earth and Space Exploration"
family-names: Boyer
given-names: Grayson
orcid: "https://orcid.org/0000-0002-7670-9273"
cff-version: "0.9.0"
license: MIT
message: "If you use this software, please cite it using these metadata."
repository-code: "https://github.com/worm-portal/pyCHNOSZ"
title: "pyCHNOSZ: Python wrapper for the thermodynamic package CHNOSZ"
version: "0.9.0"
date-released: 2025-06-18
...
GitHub Events
Total
- Push event: 12
Last Year
- Push event: 12
Dependencies
- chemparse *
- ipython *
- pandas *
- plotly *
- rpy2 *
- simplegeneric *