Low-level utilities (util)¶
Submodules:
Command-line utilities. |
|
Context and settings for |
|
Load model and project code from |
|
Logging utilities. |
|
|
Commonly used:
|
Convert data to a |
|
Load a |
|
Load a private data file from |
|
Construct a path to a file under |
|
Construct a path to a file under |
|
Context and settings for |
|
Information about a |
-
message_ix_models.util.PACKAGE_DATA: Dict[str, Any] = {}¶ Package data already loaded with
load_package_data().
-
message_ix_models.util.PRIVATE_DATA: Dict[str, Any] = {}¶ Data already loaded with
load_private_data().
-
message_ix_models.util.add_par_data(scenario: message_ix.core.Scenario, data: Mapping[str, pandas.core.frame.DataFrame], dry_run: bool = False)[source]¶ Add data to scenario.
- Parameters
data – Dict with keys that are parameter names, and values are pd.DataFrame or other arguments
dry_run (optional) – Only show what would be done.
See also
-
message_ix_models.util.as_codes(data: Union[List[str], Dict[str, Dict]]) → List[sdmx.model.Code][source]¶ Convert data to a
listofCodeobjects.Various inputs are accepted:
-
message_ix_models.util.eval_anno(obj: sdmx.model.AnnotableArtefact, id: str)[source]¶ Retrieve the annotation id from obj, run
eval()on its contents.This can be used for unpacking Python values (e.g.
dict) stored as an annotation on aCode.Returns
Noneif no attribute exists with the given id.
-
message_ix_models.util.iter_parameters(set_name)[source]¶ Iterate over MESSAGEix parameters with set_name as a dimension.
- Parameters
set_name (str) – Name of a set.
- Yields
str – Names of parameters that have set_name indexing ≥1 dimension.
-
message_ix_models.util.load_package_data(*parts: str, suffix: Optional[str] = '.yaml') → Any[source]¶ Load a
message_ix_modelspackage data file and return its contents.Data is re-used if already loaded.
Example
The single call:
>>> info = load_package_data("node", "R11")
loads the metadata file
data/node/R11.yaml, parsing its contents,stores those values at
PACKAGE_DATA["node R11"]for use by other code, andreturns the loaded values.
-
message_ix_models.util.load_private_data(*parts: str) → Mapping[source]¶ Load a private data file from
message_dataand return its contents.Analogous to
load_package_data, but for non-public data.- Parameters
parts (iterable of str) – Used to construct a path under
data/in themessage_datarepository.- Returns
Configuration values that were loaded.
- Return type
- Raises
RuntimeError – if
message_datais not installed.
-
message_ix_models.util.package_data_path(*parts) → pathlib.Path[source]¶ Construct a path to a file under
message_ix_models/data/.
-
message_ix_models.util.private_data_path(*parts) → pathlib.Path[source]¶ Construct a path to a file under
data/inmessage_data.
-
message_ix_models.util.strip_par_data(scenario, set_name, value, dry_run=False, dump: Optional[Dict[str, pandas.core.frame.DataFrame]] = None)[source]¶ Remove data from parameters of scenario where value in set_name.
- Returns
- Return type
Total number of rows removed across all parameters.
See also
util.click¶
Command-line utilities.
These are used for building CLIs using click.
-
message_ix_models.util.click.PARAMS= {'dest': <Option dest>, 'dry_run': <Option dry_run>, 'force': <Option force>, 'output_model': <Option output_model>, 'platform_dest': <Option platform_dest>, 'policy_path': <Option policy_path>, 'quiet': <Option quiet>, 'regions': <Option regions>, 'rep_out_path': <Option rep_out_path>, 'rep_template': <Option rep_template>, 'run_reporting_only': <Option run_reporting_only>, 'ssp': <Argument ssp>, 'verbose': <Option verbose>}¶ Common command-line parameters (arguments and options). See
common_params().
-
message_ix_models.util.click.common_params(param_names: str)[source]¶ Decorate a click.command with common parameters param_names.
param_names must be a space-separated string of names appearing in
PARAMS, e.g."ssp force output_model". The decorated function receives keyword arguments with these names:@click.command() @common_params("ssp force output_model") def mycmd(ssp, force, output_model) # ...
-
message_ix_models.util.click.default_path_cb(*default_parts)[source]¶ Return a callback function for click.Option handling.
If no option value is given, the callback uses
Context.get_local_path()and default_parts to provide a path that is relative to local data directory, e.g. the current working directory (see Data, metadata, and configuration).
util.context¶
Context and settings for message_ix_models code.
-
class
message_ix_models.util.context.Context(*args, **kwargs)[source]¶ Context and settings for
message_ix_modelscode.Context is a subclass of
dict, so common methods likecopy()andsetdefault()may be used to handle settings. To be forgiving, it also provides attribute access;context.foois equivalent tocontext["foo"].Context provides additional methods to do common tasks that depend on configurable settings:
Return a scenario based on the
--destcommand-line option.close_db()delete()Hide the current Context from future
get_instance()calls.get_cache_path(*parts)Return a path to a local cache file.
get_local_path(*parts[, suffix])Return a path under
local_data.get_platform([reload])Return a
ixmp.Platformfromplatform_info.Return a
message_ix.Scenariofromscenario_info.handle_cli_args([url, platform, model_name, …])Handle command-line arguments.
only()Return the only
Contextinstance.use_defaults(settings)Update from settings.
The following Context methods and attribute are deprecated:
get_config_file(*parts[, ext])Return a path under
metadata_path.get_path(*parts)Return a path under
message_data_pathby joining parts.load_config(*parts[, suffix])Load configuration from
message_ix_models.Access the unit registry.
-
clone_to_dest() → Tuple[message_ix.core.Scenario, ixmp.core.Platform][source]¶ Return a scenario based on the
--destcommand-line option.- Returns
To prevent the scenario from being garbage collected. Keep a reference to its Platform:
- Return type
Scenario
See also
create_resTo use this method, either decorate a command with
common_params():from message_data.tools.cli import common_params @click.command() @common_params("dest") @click.pass_obj def foo(context, dest): scenario, mp = context.clone_to_dest()
or, store the settings
dest_scenarioanddest_platformon context:c = Context.get_instance() c.dest_scenario = dict(model="foo model", scenario="foo scenario") scenario_mp = context.clone_to_dest()
The resulting scenario has the indicated model- and scenario names.
If
--url(or--platform,--model,--scenario, and optionally--version) are given, the identified scenario is used as a ‘base’ scenario, and is cloned. If--url/--platformand--destrefer to different Platform instances, then this is a two-platform clone.If no base scenario can be loaded,
bare.create_res()is called to generate a base scenario.
-
delete()[source]¶ Hide the current Context from future
get_instance()calls.
-
get_cache_path(*parts) → pathlib.Path[source]¶ Return a path to a local cache file.
-
get_config_file(*parts, ext='yaml') → pathlib.Path[source]¶ Return a path under
metadata_path.The suffix “.{ext}” is added; defaulting to “.yaml”.
Deprecated since version 2021.2.28: Use
package_data_path()instead. Will be removed on or after 2021-05-28.
-
classmethod
get_instance(index=0) → message_ix_models.util.context.Context[source]¶ Return a Context instance; by default, the first created.
- Parameters
index (int, optional) – Index of the Context instance to return, e.g.
-1for the most recently created.
-
get_path(*parts) → pathlib.Path[source]¶ Return a path under
message_data_pathby joining parts.parts may include directory names, or a filename with extension.
Deprecated since version 2021.2.28: Use
private_data_path()instead. Will be removed on or after 2021-05-28.
-
get_platform(reload=False) → ixmp.core.Platform[source]¶ Return a
ixmp.Platformfromplatform_info.When used through the CLI,
platform_infois a ‘base’ platform as indicated by the –url or –platform options.If a Platform has previously been instantiated with
get_platform(), the same object is returned unless reload=True.
-
get_scenario() → message_ix.core.Scenario[source]¶ Return a
message_ix.Scenariofromscenario_info.When used through the CLI,
scenario_infois a ‘base’ scenario for an operation, indicated by the--urlor--platform/--model/--scenariooptions.
-
handle_cli_args(url=None, platform=None, model_name=None, scenario_name=None, version=None, local_data=None, _store_as=('platform_info', 'scenario_info'))[source]¶ Handle command-line arguments.
May update the
data_path,platform_info,scenario_info, and/orurlsettings.
-
load_config(*parts, suffix=None)[source]¶ Load configuration from
message_ix_models.Deprecated since version 2021.2.28: Use
load_package_data()instead. Will be removed on or after 2021-05-28.
-
classmethod
only() → message_ix_models.util.context.Context[source]¶ Return the only
Contextinstance.- Raises
IndexError – If there is more than one instance.
-
property
units¶ Access the unit registry.
Deprecated since version 2021.2.28: Instead, use:
from iam_units import registry
Will be removed on or after 2021-05-28.
-
util.importlib¶
Load model and project code from message_data.
util._logging¶
Logging utilities.
-
class
message_ix_models.util._logging.Formatter(colorama)[source]¶ Formatter for log records.
- Parameters
colorama (module) – If provided,
coloramais used to colour log messages printed to stdout.
-
message_ix_models.util._logging.make_formatter()[source]¶ Return a
Formatterinstance for themessage_ix_modelslogger.See also
util.scenarioinfo¶
ScenarioInfo class.
-
class
message_ix_models.util.scenarioinfo.ScenarioInfo(scenario=None)[source]¶ Information about a
Scenarioobject.Code that prepares data for a target Scenario can accept a ScenarioInfo instance. This avoids any need to load a Scenario, which can be slow under some conditions. ScenarioInfo objects are also used by
apply_spec()to describe the contents of a scenario before it is created.ScenarioInfo objects have the following attributes:
Elements of
ixmp/message_ixsets in the Scenario.Trueif a MESSAGE-MACRO scenario.Elements of the set ‘node’.
Elements of the set ‘year’ that are >= the first model year.
First model year, if set, else
Y[0].(year_vtg, year_act) for the entire model horizon.
-
property
N¶ Elements of the set ‘node’.
-
property
Y¶ Elements of the set ‘year’ that are >= the first model year.
-
property
yv_ya¶ (year_vtg, year_act) for the entire model horizon.
-
property