Start with a parsed database whose imported gas accounts match a built-in profile. The default basis is AR6 / GWP100 where the profile provides those factors. Already characterized source totals keep their original basis.

db.calc_ghg(ipcc_report="AR6", time_horizon=100)
ghg = "GHG AR6 GWP-100"
db.units["Satellite account"].loc[ghg]

Result · A new CO2-equivalent satellite account in every existing scenario. Source gas rows remain available. Its magnitude follows their shared mass unit; the method does not convert units.

Retrieve emissions and footprints#

Choose the representation of your model:

Choose IOT or SUT to see the relevant environmental matrices.

IOT results#

db.calc_all(["f"])
direct_emissions = db.E.loc[ghg]
per_unit_footprint = db.f.loc[ghg]

E contains direct emissions by producing sector. f includes upstream requirements per unit of sector output. Its denominator follows the database’s native monetary or physical unit.

SUT results#

db.calc_all(["fc"])
activity_emissions = db.Ea.loc[ghg]
commodity_emissions = db.Ec.loc[ghg]
per_unit_footprint = db.fc.loc[ghg]

Ea and Ec retain activity-side and commodity-side emissions. fc gives the footprint per native commodity unit.

Check the accounting boundary#

calc_ghg() characterizes available accounts. Retrieving a missing footprint matrix is the separate calculation shown above. Direct final-demand emissions in EY are characterized too; they must be considered when constructing complete production- or consumption-based totals.

For BONSAI, the built-in AR6/GWP100 profile also includes its specific Accelerated CO2 factor. Other characterization choices require an explicit factor for that flow when present. For sources that supply an already characterized CO2eq total, choosing ipcc_report does not reconstruct the underlying gases. Read GHG characterization and footprints before comparing results across sources or reports.

Check the source profile before characterization
profile = db.database_profile["ghg"]
profile["selected_profile"]
db.get_index("Satellite account")

A selected profile does not certify that all gases exist in the file. For unsupported labels or families, use an explicit factor mapping in GHG characterization and footprints.

Keep a copy or characterize another indicator

calc_ghg() modifies the model and returns None. To keep the original, use characterized = db.calc_ghg(inplace=False) on an uncharacterized model. Do not apply both routes in sequence: adding the same account twice raises an error. Choose a distinct label when adding another indicator.

Troubleshoot a failed calculation

Situation

What to check

No profile can be selected

Inspect the source metadata; supply a supported profile or an explicit gwp mapping.

No gas accounts match

Check that extensions were imported and that their labels match the selected recipe.

Input accounts have different units

Harmonize their magnitudes and units before characterization. The unit argument does not convert values.

The GHG label already exists

Reuse that account, start from the uncharacterized model, or choose a distinct label for another indicator.

See db.calc_ghg() for all arguments, or follow the cross-database comparison.