Models and variants (model)
Submodules described on this page:
Submodules described on separate pages:
Code for constructing models/scenarios in the MESSAGEix-GLOBIOM model family.
- class message_ix_models.model.Config(regions: str = 'R14', relations: str = 'A', years: str = 'B', res_with_dummies: bool = False, units: dict = <factory>)[source]
Settings and valid values for
message_ix_models.modeland submodules.For backwards compatibility, it is possible to access these on a
Contextusing:c = Context() c.regions = "R14"
…however, it is best to access them explicitly as:
c.model.regions = "R14"
- regions: str = 'R14'
The ‘node’ codelist (regional aggregation) to use. Must be one of the lists of nodes described at Node code lists.
- relations: str = 'A'
The ‘relations’ codelist to use. Must be one of the lists of relations described at Relations (relation/*.yaml).
- res_with_dummies: bool = False
Create the reference energy system with dummy commodities and technologies. See
bare.get_spec().
- years: str = 'B'
The ‘year’ codelist (time periods) to use, Must be one of the lists of periods described at Years or time periods (year/*.yaml).
model.macro: MESSAGE-MACRO
Tools for calibrating MACRO for MESSAGEix-GLOBIOM.
See Calibrate and tune MESSAGE-MACRO for general documentation on MACRO and MESSAGE-MACRO. This module contains tools specifically for using these models with MESSAGEix-GLOBIOM.
- message_ix_models.model.macro.COMMODITY = ['i_therm', 'i_spec', 'rc_spec', 'rc_therm', 'transport']
Default set of commodities to include in
generate().
- message_ix_models.model.macro.generate(parameter: Literal['aeei', 'config', 'depr', 'drate', 'lotol'], context: Context, commodities: list[str] | list[Code] = ['i_therm', 'i_spec', 'rc_spec', 'rc_therm', 'transport'], value: float | None = None) DataFrame[source]
Generate uniform data for one
message_ix.macroparameter.message_ix.Scenario.add_macro()expects as its data parameter adictthat maps certain MACRO parameter names (or the special name “config”) topandas.DataFrame. This function generates data for those data frames.For the particular dimensions, generate automatically includes:
“node”: All nodes in the node code list given by
nodes_ex_world(), for the node list indicated bymodel.Config.regions.“year”: All periods from the period before the first model year.
“commodity”: The elements of commodities.
“sector”: If each entry of commodities is a
Codeand has an annotation with id=”macro-sector”, the value of that annotation. Otherwise, the same as commodity.
value supplies the parameter value, which is the same for all observations. The labels level=”useful” and unit=”-” are fixed.
- Parameters:
- Returns:
The columns vary according to parameter:
”aeei”: node, sector, year, value, unit.
”depr”, “drate”, or “lotol”: node, value, unit.
”config”: node, sector, commodity, level, year.
- Return type:
- message_ix_models.model.macro.load(base_path: Path) Mapping[str, DataFrame][source]
Load MACRO data from CSV files.
The function reads files in the simple/long CSV format understood by
genno.operator.load_file(). For use withadd_macro(), the dimension names should be given in full, for instance “node” or “sector”.- Parameters:
base_path (
pathlib.Path) – Directory containing zero or more CSV files.- Returns:
Mapping from MACRO calibration parameter names to data; one entry for each file in base_path.
- Return type:
dictof(str -> pandas.DataFrame)
model.structure: Model structure information
|
Return a valid IDs for code lists of kind. |
|
Generates codes using a template by Cartesian product along ≥1 dimensions. |
|
Generate elements for set name. |
|
Return codes for the dimension/set name in MESSAGE-GLOBIOM scenarios. |
|
Return the codes that are children of "World" in the specified codelist. |
|
Process an annotation on code with id="units". |
|
Process a list of codes for |
|
Process a list of codes for |
- message_ix_models.model.structure.codelists(kind: str) list[str][source]
Return a valid IDs for code lists of kind.
- Parameters:
kind (
str) – “node” or “year”.
- message_ix_models.model.structure.generate_product(data: Mapping, name: str, template: Code) tuple[list[Code], dict[str, DataArray]][source]
Generates codes using a template by Cartesian product along ≥1 dimensions.
generate_set_elements()is called for each of the dims, and these values are used to format base.
- message_ix_models.model.structure.generate_set_elements(data: MutableMapping, name) None[source]
Generate elements for set name.
This function converts lists of codes in data, calling
generate_product()andprocess_units_anno()as appropriate.- Parameters:
data – Mapping from dimension IDs to lists of codes.
name (
str) – Name of the set for which to generate elements e.g. “commodity” or “technology”.
- message_ix_models.model.structure.get_codelist(name: str) Codelist[source]
Return a
Codelistfor name in MESSAGEix-GLOBIOM scenarios.
- message_ix_models.model.structure.get_region_codes(codelist: str) list[Code][source]
Return the codes that are children of “World” in the specified codelist.
- message_ix_models.model.structure.process_commodity_codes(codes)[source]
Process a list of codes for
commodity.The function warns for commodities missing units or with non-
pint-compatible units.
- message_ix_models.model.structure.process_technology_codes(codes)[source]
Process a list of codes for
technology.This function ensures every code has an annotation with id “vintaged”, default
False.
- message_ix_models.model.structure.process_units_anno(set_name: str, code: Code, quiet: bool = False) None[source]
Process an annotation on code with id=”units”.
The annotation text is wrapped as
'registry.Unit("{text}")', such that it can be retrieved witheval_anno()orScenarioInfo.units_for(). If code has direct children, the annotation is also copied to those codes.
- message_ix_models.model.structure.get_codes(name: str) list[Code][source]
Return codes for the dimension/set name in MESSAGE-GLOBIOM scenarios.
The information is read from
data/name.yaml, e.g.data/technology.yaml.When name includes “node”, then child codes are automatically populated from the ISO 3166 database via
pycountry. For instance:myregion: name: Custom region child: [AUT, SCG]
…results in a region with child codes for Austria (a current country) and the formerly-existing country Serbia and Montenegro.
- Parameters:
name (
str) – Any.yamlfile in the foldermessage_ix_models/data/.- Returns:
Every Code has
id,name,description, andannotationsattributes. Callingstr()on a code returns itsid.- Return type:
listofCode
The available code lists are reproduced as part of this documentation. The returned code objects have annotations that vary by set. See:
Also available is
cd_links/unit.yaml. This is a project-specific list of units appearing in CD-LINKS scenarios.Example:
>>> from message_ix_models.model.structure import get_codes >>> codes = get_codes("node/R14") # Show the codes >>> codes [<Code ABW: Aruba>, <Code AFG: Afghanistan>, <Code AGO: Angola>, ... <Code ZWE: Zimbabwe>, <Code World: World>, ... <Code R11_PAS: Other Pacific Asia>, <Code R11_SAS: South Asia>, <Code R11_WEU: Western Europe>] # Retrieve one code matching a certain ID >>> world = codes[codes.index("World")] # Get its children's IDs strings, e.g. for a "node" dimension >>> [str(c) for c in world.child] ['R11_AFR', 'R11_CPA', 'R11_EEU', 'R11_FSU', 'R11_LAM', 'R11_MEA', 'R11_NAM', 'R11_PAO', 'R11_PAS', 'R11_SAS', 'R11_WEU'] # Navigate from one ISO 3166-3 country code to its parent >>> AUT = codes[codes.index("AUT")] >>> AUT.parent <Code R11_WEU: Western Europe>
See also