Skip to main content

🧪 PyThermoEst

PyPI Downloads PyPI Python Version License

PyThermoEst is a Python toolkit for estimating thermodynamic properties from group-contribution methods. It currently supports the Joback method for estimating a wide range of properties and the Zabransky–Ruzicka method for predicting the liquid-phase heat capacity.

📦 Installation

pip install pyThermoEst

🚀 Usage

The package exposes convenience helpers in pyThermoEst.app for both calculation workflows. See the examples/ directory for runnable scripts.

🧬 Joback property estimation

Provide Joback group contributions along with the total number of atoms, then call joback_calc. You can mix field names or their documented aliases when building JobackGroupContributions.

from pyThermoEst import joback_calc
from pyThermoEst.models import JobackGroupContributions, GroupUnit

payload = {
    "-CH3": GroupUnit(value=2),
    "=CH- @ring": GroupUnit(value=3),
    "=C< @ring": GroupUnit(value=3),
    "-OH @phenol": GroupUnit(value=1),
}

joback_groups = JobackGroupContributions(**payload)

# or dict with aliases:
# joback_groups = {
#     "-CH3": 2,
#     "=CH- @ring": 3,
#     "=C< @ring": 3,
#     "-OH @phenol": 1,
# }

result = joback_calc(groups=joback_groups, total_atoms_number=18)

# Evaluate a temperature-dependent property, e.g., heat capacity at 273 K
cp_273 = result["heat_capacity"]["value"](273)
print(cp_273)

💧 Zabransky–Ruzicka liquid heat capacity

To compute liquid heat capacity, provide required group contributions and optional correction terms, then call zabransky_ruzicka_calc.

from pyThermoEst import zabransky_ruzicka_calc
from pyThermoEst.models import (
    ZabranskyRuzickaGroupContributions,
    ZabranskyRuzickaGroupContributionsCorrections,
    GroupUnit,
)

payload = {
    "C-(H)3(O)": GroupUnit(value=2),
    "CO-(O)2": GroupUnit(value=1),
    "O-(C)(CO)": GroupUnit(value=2),
}

contributions = ZabranskyRuzickaGroupContributions(**payload)
corrections = ZabranskyRuzickaGroupContributionsCorrections()

# or dicts with aliases:
# contributions = {
#     "C-(H)3(O)": 2,
#     "CO-(O)2": 1,
#     "O-(C)(CO)": 2,
# }

result = zabransky_ruzicka_calc(
    group_contributions=contributions,
    group_corrections=corrections
)
cp_liq_at_300k = result["value"](298.15)
print(cp_liq_at_300k, result["unit"], result["symbol"])

📚 Getting group contribution IDs and names

You can inspect available group contribution identifiers and names for each method:

🧬 Joback group contributions

from pyThermoEst.docs.joback import (
    joback_group_contribution_info,
    joback_group_contribution_names,
    joback_group_contribution_ids
)

# Get all group contribution IDs (aliases)
group_ids = joback_group_contribution_ids()

# Get all group contribution names (field names)
group_names = joback_group_contribution_names()

# Get both names and IDs as tuples
names, ids = joback_group_contribution_info()

💧 Zabransky–Ruzicka group contributions

from pyThermoEst.docs.zabransky_ruzicka import (
    zabransky_ruzicka_group_contribution_info,
    zabransky_ruzicka_group_contribution_names,
    zabransky_ruzicka_group_contribution_ids,
    zabransky_ruzicka_group_correction_info,
    zabransky_ruzicka_group_correction_ids,
    zabransky_ruzicka_group_correction_names
)

# Get group contribution IDs (aliases)
group_ids = zabransky_ruzicka_group_contribution_ids()

# Get group contribution names (field names)
group_names = zabransky_ruzicka_group_contribution_names()

# Get both names and IDs as tuples
names, ids = zabransky_ruzicka_group_contribution_info()

# Get correction term IDs
correction_ids = zabransky_ruzicka_group_correction_ids()

# Get correction term names
correction_names = zabransky_ruzicka_group_correction_names()

# Get both correction names and IDs as tuples
corr_names, corr_ids = zabransky_ruzicka_group_correction_info()

📖 Further examples

  • examples/joback-exp-0.py: Inspect available Joback group IDs and names.
  • examples/joback-exp-1.py: Build Joback group payloads with field names or aliases.
  • examples/joback-exp-2.py: Full Joback calculation including temperature evaluation.
  • examples/zabransky-ruzicka-exp-0.py: Inspect available Zabransky–Ruzicka group IDs, names, and corrections.
  • examples/zabransky-ruzicka-exp-1.py: Zabransky–Ruzicka calculation with optional corrections.

🔧 API reference

  • pyThermoEst.app.joback_calc(groups, total_atoms_number): Runs Joback method and returns calculated properties.
  • pyThermoEst.app.zabransky_ruzicka_calc(group_contributions, group_corrections=None): Returns an equation for liquid heat capacity plus units and symbol metadata.

Each function accepts either the pydantic models or plain dictionaries keyed by group identifiers; aliases are supported for convenience.

📝 License

This project is licensed under the MIT License. You are free to use, modify, and distribute this software in your own applications or projects. However, if you choose to use this app in another app or software, please ensure that my name, Sina Gilassi, remains credited as the original author. This includes retaining any references to the original repository or documentation where applicable. By doing so, you help acknowledge the effort and time invested in creating this project.

❓ FAQ

For any question, contact me on LinkedIn

Metadata

Release files for pyThermoEst 0.4.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pyThermoEst 0.4.0
File Size Uploaded
pythermoest-0.4.0.tar.gz 50.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pyThermoEst 0.4.0
File Interpreter ABI Platform
pythermoest-0.4.0-py3-none-any.whl Python 3 none any Details

Total release size: 101.4 kB

Release files / pythermoest-0.4.0.tar.gz

Download URL pythermoest-0.4.0.tar.gz
Size 50.4 kB
Tags Source
SHA-256 checksum
How to use checksums
4d9c9abef6743a33adcc415d12bba1d2c5cc34ff30d79a117e3c70c9201af3a2
BLAKE2b-256 checksum
How to use checksums
78bbb2382d8a701fe64b47c6d21377f7f38c029b788139d05c79aef440b43181
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.3

Release files / pythermoest-0.4.0-py3-none-any.whl

Download URL pythermoest-0.4.0-py3-none-any.whl
Size 51.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e1f492a033f305a644b040ad195a268b53614f71b19c242206da3cc3490d4a44
BLAKE2b-256 checksum
How to use checksums
3a081910a760a565eb508daa8bb99be723558ab5eee72657e1ca9741a038a028
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.8.3

Release history Release notifications | RSS feed

This release

0.4.0 This release

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.3

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page