Skip to main content

HESTIA Engine Models

Pipeline Status Coverage Report

HESTIA's set of models for running calculations or retrieving data using external datasets and internal lookups.

Documentation

Documentation for every model can be found in the HESTIA Guide.

Install

  1. Install python 3.12 minimum
  2. Install the module:
pip install hestia_earth.models

Usage

from hestia_earth.models.pooreNemecek2018 import run

cycle_data = {"@type": "Cycle", ...}
# cycle is a JSONLD node Cycle
result = run('no3ToGroundwaterSoilFlux', cycle_data)
print(result)

This will display only the result of the no3ToGroundwaterSoilFlux model (Emission).

Additionally, to reduce the number of queries to the HESTIA API and run the models faster, prefetching can be enabled:

from hestia_earth.models.preload_requests import enable_preload

enable_preload()

Using the orchestrator

The models come with an "orchestrator", which allows you to run a pre-configured set of models instead of a single one.

The configuration for each Node (Cycle, Site or ImpactAssessment) can be found in the config folder.

Usage:

from hestia_earth.orchestrator import run
from hestia_earth.models.config import load_config

cycle = {"@type": "Cycle", ...}
result = run(cycle, load_config(cycle))
print(result)

This will display the Cycle recalculated with all HESTIA default models running.

Using Spatial Models

We have models that can gap-fill geographical information on a Site. If you want to use these models:

  1. Install the library: pip install hestia-earth-earth-engine
  2. Follow the Getting Started instructions.

Disabling the standardised drought indices

The SPEI and SPI models run by default. Set the env variable ENABLE_DROUGHT_INDEX to false to turn them off.

They are fitted over a fixed climate reference period (1979-2020), so they also fetch precipitationMonthly and potentialEvapotranspirationMonthly over that period rather than over the Site's own years only - four decades of monthly values per Site. Turning them off restores the narrower window, which is the reason to do it on a self-hosted run.

Leaving spatial models out of the cache

The Site pre-check and cache_sites fetch the values of every geospatialDatabase model in one query, whether or not the model is in your config. Set the env variable GEOSPATIAL_EXCLUDED_MODELS to a comma-separated list of model keys (e.g. region) to leave those models out of the query, so a run without GADM does not query gadm36_1 for a model it does not run.

Collecting logs in JSON format

:info: This is an experimental feature and is not yet integrated in all the HESTIA tools.

To collect logs in JSON format:

  1. Set the env variable LOG_JSON_ENABLED to true
  2. Use the following code to collect contribution logs:
from hestia_earth.orchestrator import run
from hestia_earth.models.config import load_config
from hestia_earth.models.jlog import reset_collected_logs, get_collected_logs

# make sure the logs are reset before each run
reset_collected_logs()

# run the models as usual
impact = {"@type": "ImpactAssessment", ...}
result = run(impact, load_config(impact))
print(result)

# write the logs to a JSON file
logs = get_collected_logs()
with open("logs.json", "w") as f:
    f.write(to_string(logs, indent=2))

When a node is recalculated in separate passes (e.g. stage 1 then stage 2 in different processes), seed the later pass with the earlier one's logs so stage-1-only placements are not lost:

from hestia_earth.models.jlog import load_collected_logs, get_collected_logs

# stage 2: load the logs collected during stage 1, then run stage 2 as usual
load_collected_logs(stage1_logs)
result = run(impact, load_config(impact), stage=2)
logs = get_collected_logs()  # contains both stage 1 and stage 2

Collecting contribution data

:info: This is an experimental feature and is not yet integrated in all the HESTIA tools.

To collect contribution data of impacts/endpoints on ImpactAssessment:

  1. Set the env variable LOG_CONTRIBUTION_ENABLED to true
  2. Use the following code to collect contribution logs:
from hestia_earth.orchestrator import run
from hestia_earth.models.config import load_config
from hestia_earth.models.log_contribution import reset_contributions, get_contributions

# make sure the contributions are reset before each run
reset_contributions()

# run the models as usual
impact = {"@type": "ImpactAssessment", ...}
result = run(impact, load_config(impact))
print(result)

# write the contributions to a JSON file
contributions = get_contributions()
with open("contributions.json", "w") as f:
    f.write(to_string(contributions, indent=2))

The contribution data will store the factors used for each emissionsResourceUse that contributes to specific impacts, and likewise impacts that contribute to endpoints. The index in the data represents the index of the blank node in the list of contributing blank nodes.

Using the ecoinventV3 model

⚠️ This model has been deprecated and no further support will be provided.

ecoinvent is a consistent, transparent, and well validated life cycle inventory database. We use ecoinvent data to ascertain the environmental impacts of activities that occur outside of our system boundary, for example data on the environmental impacts of extracting oil and producing diesel, or the impacts of manufacturing plastics.

The ecoinventV3 model requires a valid license to run. We are currently working on a way to enable users of this code with a valid ecoinvent licence to run these models themselves, but for now, these models are only available on the public platform.

Amortising Land Use Change Emissions Using Linear Discounting

In compliance with Land Sector and Removals Standard & Guidance set by the Greenhouse Gas Protocol (2026), HESTIA amortises LUC emissions using linear discounting by default.

On the main HESTIA platform, we have chosen to amortise emissions using linear discounting, and this cannot be changed. The amortisation method can only be changed on the Community Edition.

For more information, see our guide page on linear discounting.

To opt-out of linear discounting on the Community Edition, and revert to amortising emissions using equal apportioning:

  1. Set the env variable USE_LINEAR_DISCOUNTING to false

TypeScript / JavaScript package

The model metadata is also published to npm as @hestia-earth/engine-models:

npm install @hestia-earth/engine-models

It exposes the links between models, terms and their documentation (model-links.json), and the KaTeX formulas extracted from each model, with bindings that map every symbol to a value logged at runtime (the "jlog"):

import { getFormulas } from '@hestia-earth/engine-models';

getFormulas({ model: 'ipcc2019', term: 'ch4ToAirEntericFermentation' });
// => [ { formula: 'E_{CH4} = (GE \\times Y_m) / 55.65', bindings: [...] } ]

See formulas/README.md for the full guide on getting a model's formulas, rendering them with KaTeX, and substituting the symbols with the values from a given execution.

Metadata

Release files for hestia-earth-models 0.88.2

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

Source distribution (sdist)

Source distribution for hestia-earth-models 0.88.2
File Size Uploaded
hestia_earth_models-0.88.2.tar.gz 543.8 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for hestia-earth-models 0.88.2
File Interpreter ABI Platform
hestia_earth_models-0.88.2-py3-none-any.whl Python 3 none any Details

Total release size: 1.6 MB

Release files / hestia_earth_models-0.88.2.tar.gz

Download URL hestia_earth_models-0.88.2.tar.gz
Size 543.8 kB
Tags Source
SHA-256 checksum
How to use checksums
a240eb13e1cc5377753ee7dde747c6776161a40c9b272100415415a399bc6c4b
BLAKE2b-256 checksum
How to use checksums
f8179aed17a6fb40820c459ae2137dacc178009d808a0114f7297de2c8ea654e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release files / hestia_earth_models-0.88.2-py3-none-any.whl

Download URL hestia_earth_models-0.88.2-py3-none-any.whl
Size 1.0 MB
Tags Python 3
SHA-256 checksum
How to use checksums
2a10c33a0c57e9afeac1a181c1d09150b16128cdfd29ec097285edf59ed6f7f9
BLAKE2b-256 checksum
How to use checksums
db6b11aa686623f6c351bcdafc0d4db3ee0d5dd0be4f50488a981ea23f0e7f9f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.15

Release history Release notifications | RSS feed

0.89.2

2 release files

0.89.1

2 release files

0.89.0

2 release files

This release

0.88.2 This release

2 release files

0.87.9

2 release files

0.87.8

2 release files

0.87.7

2 release files

0.87.6

2 release files

0.87.5

2 release files

0.87.1

2 release files

0.87.0

2 release files

0.86.3

2 release files

0.86.2

2 release files

0.86.1

2 release files

0.86.0

2 release files

0.85.2

2 release files

0.85.1

2 release files

0.85.0

2 release files

0.84.0

2 release files

0.83.2

2 release files

0.81.6

2 release files

0.81.5

2 release files

0.81.4

2 release files

0.81.3

2 release files

0.81.2

2 release files

0.81.1

2 release files

0.80.0

2 release files

0.79.7

2 release files

0.79.6

2 release files

0.79.5

2 release files

0.79.4

2 release files

0.79.3

2 release files

0.79.0

2 release files

0.78.2

2 release files

0.78.1

2 release files

0.78.0

2 release files

0.77.1

2 release files

0.77.0

2 release files

0.76.9

2 release files

0.76.8

2 release files

0.76.7

2 release files

0.76.6

2 release files

0.76.2

2 release files

0.76.1

2 release files

0.76.0

2 release files

0.75.9

2 release files

0.75.8

2 release files

0.75.7

2 release files

0.75.6

2 release files

0.75.5

2 release files

0.75.4

2 release files

0.75.3

2 release files

0.75.2

2 release files

0.75.1

2 release files

0.75.0

2 release files

0.74.9

2 release files

0.74.4

2 release files

0.74.3

2 release files

0.74.1

2 release files

0.74.0

2 release files

0.73.8

2 release files

0.73.7

2 release files

0.73.6

2 release files

0.73.5

2 release files

0.73.2

2 release files

0.73.1

2 release files

0.73.0

2 release files

0.72.2

2 release files

0.71.0

2 release files

0.70.6

2 release files

0.70.5

2 release files

0.70.4

2 release files

0.70.3

2 release files

0.70.2

2 release files

0.70.1

2 release files

0.70.0

2 release files

0.69.1

2 release files

0.69.0

2 release files

0.68.0

2 release files

0.67.1

2 release files

0.66.0

2 release files

0.65.9

2 release files

0.65.8

2 release files

0.65.7

2 release files

0.65.6

2 release files

0.65.5

2 release files

0.65.0

2 release files

0.64.9

2 release files

0.64.8

2 release files

0.64.7

2 release files

0.64.6

2 release files

0.64.5

2 release files

0.64.3

2 release files

0.64.2

2 release files

0.64.1

2 release files

0.64.0

2 release files

0.63.0

2 release files

0.62.6

2 release files

0.62.5

2 release files

0.62.4

2 release files

0.62.3

2 release files

0.62.0

2 release files

0.61.7

2 release files

0.61.6

2 release files

0.61.5

2 release files

0.61.4

2 release files

0.61.3

2 release files

0.61.2

2 release files

0.61.1

2 release files

0.61.0

2 release files

0.60.1

2 release files

0.59.7

2 release files

0.59.6

2 release files

0.59.5

2 release files

0.59.4

2 release files

0.59.3

2 release files

0.59.2

2 release files

0.58.0

2 release files

0.57.1

2 release files

0.57.0

2 release files

0.56.1

2 release files

0.55.0

2 release files

0.54.3

2 release files

0.54.0

2 release files

0.53.9

2 release files

0.53.8

2 release files

0.53.7

2 release files

0.53.6

2 release files

0.53.5

2 release files

0.53.4

2 release files

0.53.3

2 release files

0.53.2

2 release files

0.53.1

2 release files

0.53.0

2 release files

0.51.1

2 release files

0.51.0

2 release files

0.49.0

2 release files

0.47.5

2 release files

0.47.4

2 release files

0.47.3

2 release files

0.47.1

2 release files

0.47.0

2 release files

0.45.0

2 release files

0.44.6

2 release files

0.44.5

2 release files

0.44.4

2 release files

0.44.3

2 release files

0.44.2

2 release files

0.44.0

2 release files

0.43.0

2 release files

0.42.0

2 release files

0.41.2

2 release files

0.41.0

2 release files

0.40.1

2 release files

0.39.1

2 release files

0.39.0

2 release files

0.38.0

2 release files

0.37.0

2 release files

0.36.2

2 release files

0.35.1

2 release files

0.35.0

2 release files

0.34.0

2 release files

0.32.2

2 release files

0.32.1

2 release files

0.30.2

2 release files

0.30.1

2 release files

0.30.0

2 release files

0.29.0

2 release files

0.27.4

2 release files

0.26.0

2 release files

0.25.3

2 release files

0.25.2

2 release files

0.24.9

2 release files

0.24.8

2 release files

0.24.7

2 release files

0.24.4

2 release files

0.24.3

2 release files

0.24.2

2 release files

0.24.1

2 release files

0.24.0

2 release files

0.23.1

2 release files

0.23.0

2 release files

0.21.0

2 release files

0.20.1

2 release files

0.20.0

2 release files

0.18.1

2 release files

0.18.0

2 release files

0.17.5

2 release files

0.17.4

2 release files

0.17.3

2 release files

0.17.2

2 release files

0.17.1

2 release files

0.15.0

2 release files

0.14.3

2 release files

0.14.2

2 release files

0.14.1

2 release files

0.14.0

2 release files

0.13.0

2 release files

0.12.3

2 release files

0.11.3

2 release files

0.11.2

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.10.1

2 release files

0.10.0

2 release files

0.9.1

2 release files

0.9.0

2 release files

0.8.8

2 release files

0.8.7

2 release files

0.8.6

2 release files

0.8.5

2 release files

0.8.4

2 release files

0.8.3

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.2

2 release files

0.7.1

2 release files

0.7.0

2 release files

0.6.1

2 release files

0.6.0

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.5

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.5

2 release files

0.0.4

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

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