Skip to main content

HESTIA's set of modules for filling gaps in the activity data using external datasets (e.g. populating soil properties with a geospatial dataset using provided coordinates) and internal lookups (e.g. populating machinery use from fuel use). Includes rules for when gaps should be filled versus not (e.g. never gap fill yield, gap fill crop residue if yield provided etc.).

Project description

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.

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

:warning: 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

:info: This is an experimental feature and is not yet integrated in all the HESTIA tools. All carbon stock change models (ipcc2019.aboveGroundBiomass, etc.) and their associated emission models (ipcc2019.co2ToAirAboveGroundBiomassStockChange, etc.) have been updated; however, changes to hestia.landCover are required to make linear discounting fully functional (see work item #1623 for further information).

To amortise the impacts of land use change using linear discounting across IPCC (2019) models:

  1. Set the env variable USE_LINEAR_DISCOUNTING to true

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hestia_earth_models-0.81.4.tar.gz (459.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hestia_earth_models-0.81.4-py3-none-any.whl (877.4 kB view details)

Uploaded Python 3

File details

Details for the file hestia_earth_models-0.81.4.tar.gz.

File metadata

  • Download URL: hestia_earth_models-0.81.4.tar.gz
  • Upload date:
  • Size: 459.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.13

File hashes

Hashes for hestia_earth_models-0.81.4.tar.gz
Algorithm Hash digest
SHA256 f2f2923ddd523774d1807a8e967aedc7175325f0392a1ba351a1aa792a2d75fa
MD5 0df8e4daad8d439e8be8eb616c661a04
BLAKE2b-256 9941f01a259d74e25536170744e2847c80ccf36bd6f8c9c8cd4d4860e08b50b8

See more details on using hashes here.

File details

Details for the file hestia_earth_models-0.81.4-py3-none-any.whl.

File metadata

File hashes

Hashes for hestia_earth_models-0.81.4-py3-none-any.whl
Algorithm Hash digest
SHA256 104bac02ced4d52ad3240996e5ad754e7ab71966058cbbeeceaf24c479e828d9
MD5 948707d708984d5889abcc06d0869ae6
BLAKE2b-256 e23d1d770c0d50a9314184d49f91b6fb8e3241d39f4021a8a236790c5b8d1ceb

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page