Development practices

This page describes development practices for message_ix_models and message_data intended to help reproducibility, interoperability, and reusability.

In the following, the bold-face words required, optional, etc. have specific meanings as described in IETF RFC 2119.

On other pages:

On this page:

Code owners

The file .github/CODEOWNERS (on GitHub) indicates ‘owners’ for some files in the repository. See GitHub’s documentation of this feature. For message_ix_models, we use this to designate people who are capable and responsible to evaluate whether changes in a pull request would have any impact on current or planned research applications of that code, and to suggest whether and how to adjust PRs.

  • As of 2025-01-10, we do not require pull request approvals from code owners on every PR that modifies files they own. Owners only are notified of such PRs. The author of a PR should:

    • Observe the notified owners, if any.

    • In the “How to review” section of the PR template, address those people individually with what (if anything) they need to look at as part of the PR. This may entail saying, “@owner-a @owner-b: no need to review because <reasons>”.

  • Groups of entries should include paths to all of the following, where applicable:

    • Documentation, for instance /doc/name or /doc/project/name.rst

    • Data, for instance /message_ix_models/data/name

    • Code, for instance /message_ix_models/model/name or /message_ix_models/project/name

    • Tests, for instance /message_ix_models/tests/model/name or /message_ix_models/tests/project/name.

  • At least 2 people (individually, or via a GitHub team) should be designated owners for any file. This may include one ‘active’ owner and a ‘backup’, or two or more active owners, etc.

  • For any pull request thats add new files to message_ix_models, the author(s) and reviewer(s) should:

    • Consider whether the new files have an identifiable owner. This may not be the case, for instance for general-purpose utility code.

    • Check whether this understanding aligns with the ownership expressed in CODEOWNERS.

    • Add, remove, or adjust entries accordingly.

    • Describe these changes in commit message(s) or their PR description.

  • If code owners depart IIASA or are reassigned to other work, they or the message_ix_models maintainers must initiate a discussion to identify a new set of owners for their files.

Organization

This section describes the organization or layout of the message_ix_models repository and Python package. The organization of message_data is roughly similar, with some differences as noted below. (See also Migrate code from message_data for the relationship between this repo and message_data.)

Repository

message_ix_models/

(or message_data/)

This directory contains a Python package, thus code that creates or manipulates MESSAGE Scenarios, or handles data for these tasks. See Code below.

message_ix_models/data/

This directory contains Configuration and (meta)data, in particular metadata and input data used by code. No code is kept in this directory; code must not be added. Code should not write output data (for example, reporting output) to this directory.

Some of these files are packaged with the message_ix_models package that is published on PyPI, thus are available to any user who installs the package from this source.

In message_data, a directory data/ at the top level is used instead. Similarly, code cannot be kept in this directory; only code under message_data/ can be imported using from message_data.submodule.name import x, y, z.

doc/

The source reStructuredText files for this documentation, and Sphinx configuration (doc/conf.py) to build it.

reference/

(message_data only)

Static files not used or produced by the code, but provided for reference as a supplement to the documentation.

Code

The code is organized into submodules. The following high-level overview explains how the organization relates to MESSAGEix-GLOBIOM modeling workflows. Some general-purpose modules, classes, and functions are not mentioned; for these, see the table of contents. See also Module Index for an auto-generated list of all modules.

Models (message_ix_model.model)

Code that creates models or model variants. MESSAGEix-GLOBIOM is a family of models in which the “reference energy system” (RES; with specific sets and populated parameter values) is similar, yet not identical. Many models in the family are defined as derivatives of other models.

For example: message_ix_models.model.transport does not create an RES in an empty Scenario, from scratch. Instead, it operates on a ‘base’ model and produces a new model —in this case, with additional transport sector technologies.

In the long run (see Roadmap), message_ix_models.model will contain a script that recreates a ‘main’ (single, authoritative) MESSAGEix-GLOBIOM RES, from scratch. Currently, this script does not exist, and this ‘main’ RES is itself derived from particular models and scenarios stored in the shared IIASA ECE database. These were previously from the CD-LINKS project, and more recently from the ENGAGE project. See Reference Energy System (RES).

In the private package, message_data.model also contains:

  • A general-purpose ScenarioRunner class to manage and run interdependent sets of Scenarios.

  • A runscript for a standard scenario set, based on the scenario protocol of the CD-LINKS project; see below.

Research projects (message_ix_models.project)

Code to create, run, and analyse scenarios for specific research projects. Research projects using MESSAGEix-GLOBIOM often involve a “scenario protocol.” This is some description of a set of multiple Scenarios with the same (or very similar) structure, and different parametrizations that represent different policies, modeling assumptions, etc.

Each submodule of message_ix_models.project (for example, message_ix_models.project.navigate) corresponds to a single research project, and contains tools needed to execute the project workflow. In some cases these are in the form of Workflow instances, in other cases as ‘runscripts’. Workflows usually have roughly the following steps:

  1. Start with one of the Scenarios created by message_ix_models.model.

  2. Build a set of scenarios from this base, by applying various code in message_ix_models and message_data, with various configuration settings and input data.

  3. Solve each scenario generated in step 2.

  4. Report the results.

(Sometimes steps 2 and 3 are ‘chained’, with some scenarios being derived from the solution data of earlier scenarios.)

Reporting and post-processing (message_ix_models.report)

This module builds on message_ix.report and ixmp.report to provide general-purpose reporting functionality for MESSAGEix-GLOBIOM family models.

This base reporting corresponds to the ‘main’ RES, and is extended by message_ix_models.model submodules to cover features of particular model variants; or by message_ix_models.project submodules to cover variables or output formats needed for particular projects.

The module was previously at message_data.reporting.

Tools (message_ix_models.tools)

This submodule contains higher-level tools that perform operations tailored to the structure of MESSAGEix-GLOBIOM and MESSAGE, or to particular upstream data sources and their formats. These are used by code in submodules of model or project, but generally not vice versa.

Utilities (message_ix_models.util)

This submodule contains a collection of lower-level, general-purpose programming utilities that can be used across the rest of the code base. These include convenience wrappers and extensions for basic Python, pandas, and other upstream packages.

Testing (message_ix_models.tests)

The test suite is arranged in modules and submodules that correspond to the code layout. For example: a function named do_thing() in a module message_ix_models.project.foo.report.extra will be tested in a module message_ix_models.tests.project.foo.report.test_extra, and a function named test_do_thing(). This arrangement makes it easy to locate the tests for any code, and vice versa.

Test utilities and fixtures (message_ix_models.testing)

These are both low-level utilities and high-level tools specifically to be used within the test suite. They are not used anywhere besides message_ix_models.tests.

Upstream version policy

message_ix_models is developed to be compatible with the following versions of its upstream dependencies.

ixmp and message_ix

The most recent 4 minor versions, or all minor versions released in the past two (2) years—whichever is greater.

For example, as of 2024-04-08:

  • The most recent release of ixmp and message_ix are versions 3.8.0 of each project. These are supported by message_ix_models.

  • The previous 3 minor versions are 3.7.0, 3.6.0, and 3.5.0. All were released since 2022-04-08. All are supported by message_ix_models.

  • ixmp and message_ix versions 3.4.0 were released 2022-01-24. These this is the fifth-most-recent minor version and was released more than 2 years before 2024-04-08, so it is not supported.

Python

All currently-maintained versions of Python.

The Python website displays a list of these versions (1, 2).

For example, as of 2024-04-08:

  • Python 3.13 is in “prerelease” or “feature” development status, and is not supported by message_ix_models.

  • Python 3.12 through 3.8 are in “bugfix” or “security” maintenance status, and are supported by message_ix_models.

  • Python 3.7 and earlier are in “end-of-life” status, and are not supported by the Python community or by message_ix_models.

  • Support for older versions of dependencies may be dropped as early as the first message_ix_models version released after changes in upstream versions.

    • Conversely, some parts of message_ix_models may continue to be compatible with older upstream versions, but this compatibility is not tested and may break at any time.

    • Users should upgrade their dependencies and other code to newer versions; we recommend the latest.

  • Some newer code is marked with a minimum_version() decorator.

    • This indicates that the marked code relies on features only available in certain upstream versions (of one of the packages mentioned above, or another package), newer than those listed in pyproject.toml.

    • These minima must be mentioned in the message_ix_models documentation.

    • Users wishing to use this marked code must use compatible versions of those packages.

Roadmap

The message-ix-models Github repository hosts:

Documentation for particular submodules, for instance message_ix_models.model.material, may contain module- or project-specific roadmaps and change logs.

The same features are available for the private message_data repository: issues, labels, and project boards.

Inline TODOs

This is an automatically generated list of every place where a .. todo:: directive is used in the documentation, including in function docstrings.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/tests/model/transport/test_ikarus.py:docstring of message_ix_models.tests.model.transport.test_ikarus.test_get_ikarus_data, line 3.)

Todo

Adapt to be more like test_build.test_debug(), using the output of ldv.prepare_computer().

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/tests/model/transport/test_ustimes_ma3t.py:docstring of message_ix_models.tests.model.transport.test_ustimes_ma3t.test_read_USTIMES_MA3T, line 3.)

Todo

Extend or duplicate to also cover REPLACE_DIMS.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/tests/test_report.py:docstring of message_ix_models.tests.test_report.test_collapse, line 11.)

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/tests/model/transport/test_ikarus.py:docstring of message_ix_models.tests.model.transport.test_ikarus.test_get_ikarus_data, line 3.)

Todo

Adapt to be more like test_build.test_debug(), using the output of ldv.prepare_computer().

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/tests/model/transport/test_ustimes_ma3t.py:docstring of message_ix_models.tests.model.transport.test_ustimes_ma3t.test_read_USTIMES_MA3T, line 3.)

Todo

Extend or duplicate to also cover REPLACE_DIMS.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/tests/test_report.py:docstring of message_ix_models.tests.test_report.test_collapse, line 11.)

Todo

Add option/tasks to index to a particular label on the \(n\) dimension.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/tools/iea/eei.py:docstring of message_ix_models.tools.exo_data.ExoDataSource.add_tasks, line 27.)

Todo

Replace with tests showing usage of wavg().

(The original entry is located in docstring of message_ix_models.tools.iea.eei.WAVG_MAP, line 3.)

Todo

Replace this with usage of genno; add tests.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/tools/iea/eei.py:docstring of message_ix_models.tools.iea.eei.wavg, line 3.)

Todo

Add option/tasks to index to a particular label on the \(n\) dimension.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/tools/iea/web.py:docstring of message_ix_models.tools.exo_data.ExoDataSource.add_tasks, line 27.)

Todo

With ixmp#212 merged, some model.bare code could be moved to a new class and method like MESSAGE_GLOBIOM.initialize().

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/checkouts/latest/doc/api/model-bare.rst, line 48.)

Todo

Merge project.engage.workflow.step_0() into this function and generalize with appropriate options/parameters.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/workflow.py:docstring of message_ix_models.model.workflow.step_0, line 18.)

Todo

Move upstream, to ixmp.report.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/report/operator.py:docstring of message_ix_models.report.operator.from_url, line 3.)

Todo

Move upstream, e.g. to ixmp alongside store_ts().

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/report/operator.py:docstring of message_ix_models.report.operator.get_ts, line 5.)

Todo

Move upstream, to message_ix.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/report/operator.py:docstring of message_ix_models.report.operator.model_periods, line 3.)

Todo

Move upstream, to ixmp alongside store_ts().

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/report/operator.py:docstring of message_ix_models.report.operator.remove_ts, line 7.)

Todo

Move upstream to genno.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/report/operator.py:docstring of message_ix_models.report.operator.select_allow_empty, line 6.)

Todo

These may be particular or idiosyncratic to a single “template”. The strings used to collapse multiple conceptual dimensions into the IAMC “variable” column are known to vary in poorly-documented ways across these templates.

This setting is currently applied universally. To improve, specify a different mapping with the replacements needed for each individual template, and load the correct one when reporting scenarios to that template.

(The original entry is located in docstring of message_ix_models.report.util.REPLACE_VARS, line 6.)

Todo

Add args so the check can be above or below any threshold value.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/testing/check.py:docstring of message_ix_models.testing.check.NonNegative, line 3.)

Todo

Store this in a separate code list or concept scheme.

(The original entry is located in docstring of message_ix_models.tools.exo_data.MEASURES, line 4.)

Todo

Add option/tasks to index to a particular label on the \(n\) dimension.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/tools/exo_data.py:docstring of message_ix_models.tools.exo_data.ExoDataSource.add_tasks, line 27.)

Todo

Document the meaning of this setting.

(The original entry is located in docstring of message_ix_models.tools.costs.Config.pre_last_year_rate, line 1.)

Todo

Migrate upstream to a method like genno.Computer.update.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/util/genno.py:docstring of message_ix_models.util.genno.update_computer, line 7.)

Todo

to be robust to changes in message_ix, read these names from that package.

(The original entry is located in docstring of message_ix_models.util.node.NODE_DIMS, line 3.)

Todo

Extend for other sets and cases where there are multiple code lists (for instance year, region).

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/util/scenarioinfo.py:docstring of message_ix_models.util.scenarioinfo.ScenarioInfo.substitute_codes, line 8.)

Todo

Expand this discussion and transfer to the message_ix docs.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/util/scenarioinfo.py:docstring of message_ix_models.util.scenarioinfo.ScenarioInfo.units_for, line 17.)

Todo

  • Accept an argument that sets df directly and ignores other arguments.

  • Annotate certain dimensions as optional; expand add_tasks() to automatically handle insertion of these dimensions.

  • Merge with ExoDataSource.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/util/sdmx.py:docstring of message_ix_models.util.sdmx.Dataflow, line 5.)

Todo

Remove str(...) once sdmx1 > 2.21.1 can handle Version.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/util/sdmx.py:docstring of message_ix_models.util.sdmx.get_version, line 3.)

Todo

Read this content in separate pieces from the user’s configuration and assemble.

(The original entry is located in docstring of message_ix_models.util.slurm.TEMPLATE, line 4.)

Todo

Expand with discussion of workflow patterns common in research projects using MESSAGEix, e.g.:

  • Run the same scenario with multiple emissions budgets.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/checkouts/latest/doc/api/workflow.rst, line 148.)

Todo

Document the meaning of this setting.

(The original entry is located in docstring of message_ix_models.model.buildings.Config.ssp, line 1.)

Todo

Move to and read from data/buildings/set.yaml.

(The original entry is located in docstring of message_ix_models.model.buildings.build.MATERIALS, line 3.)

Todo

When available in message_ix_models, simply read the values for each (fuel, species) from a file, rather than performing this calculation.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/buildings/build.py:docstring of message_ix_models.model.buildings.build.adapt_emission_factors, line 12.)

Todo

Describe which data from the IEA data base are used for the calculation, for instance by adding comments to the code.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/buildings/rc_afofi.py:docstring of message_ix_models.model.buildings.rc_afofi.return_PERC_AFOFI, line 5.)

Todo

Document the meaning of this setting.

(The original entry is located in docstring of message_ix_models.model.buildings.Config.ssp, line 1.)

Todo

consider differentiating the constraints by SSP.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/checkouts/latest/doc/material/whatsnew.rst, line 24.)

Todo

compile low temperature literature and set up references.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/checkouts/latest/doc/material/whatsnew.rst, line 54.)

Todo

integrate in util.pycountry.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/checkouts/latest/doc/material/whatsnew.rst, line 61.)

Todo

TODO: paste link to IEA cement report here.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/checkouts/latest/doc/material/whatsnew.rst, line 93.)

Todo

insert US NREL publication reference here.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/checkouts/latest/doc/material/whatsnew.rst, line 96.)

Todo

compile literature list and summarize in a paragraph.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/checkouts/latest/doc/material/whatsnew.rst, line 120.)

Todo

Describe the meaning of this annotation.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/checkouts/latest/doc/pkg-data/relation.rst, line 22.)

Todo

Move upstream, to genno.compat.sdmx.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/project/edits/__init__.py:docstring of message_ix_models.project.edits.coords_to_codelists, line 3.)

Todo

Convert an ExoDataSource class; connect to the genno.Computer used for MESSAGEix-Transport.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/project/edits/__init__.py:docstring of message_ix_models.project.edits.gen_demand, line 3.)

Todo

Fix confusing semantics, here and/or in the original; e.g. use a value argument and/or config class.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/project/engage/workflow.py:docstring of message_ix_models.project.engage.workflow.calc_budget, line 12.)

Todo

Add following workflow steps for building NDC and mitigation scenarios (next phase)

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/project/geidco/__init__.py:docstring of message_ix_models.project.geidco, line 17.)

Todo

provide this from a function within the legacy reporting submodule; call that function both here and in pp_utils.write_xlsx().

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/project/navigate/report.py:docstring of message_ix_models.project.navigate.report.legacy_output_path, line 3.)

Todo

Convert to Codelist.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/project/gea/data.py:docstring of message_ix_models.project.gea.data.get_model_scenario, line 5.)

Todo

This is may not be true, because the data differ in some (unspecified) way between version 1.0 and 1.1. Locate an accurate description for these data.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/checkouts/latest/doc/project/shape.rst, line 68.)

Todo

Describe what these values represent.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/checkouts/latest/doc/project/shape.rst, line 90.)

Todo

Expand with a list of cases in which this model name has been used.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/checkouts/latest/doc/repro.rst, line 210.)

Todo

Expand with a list of cases in which this model name has been used.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/checkouts/latest/doc/repro.rst, line 218.)

Todo

Drop bound_activity_lo values that are equal to zero.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/base.py:docstring of message_ix_models.model.transport.base.prepare_reporter, line 14.)

Todo

Add an external data source.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/build.py:docstring of message_ix_models.model.transport.build.add_exogenous_data, line 9.)

Todo

Read directly from technology.yaml

(The original entry is located in docstring of message_ix_models.model.transport.config.Config.demand_modes, line 4.)

Todo

Add option/tasks to index to a particular label on the \(n\) dimension.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/data.py:docstring of message_ix_models.tools.exo_data.ExoDataSource.add_tasks, line 27.)

Todo

Add option/tasks to index to a particular label on the \(n\) dimension.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/data.py:docstring of message_ix_models.tools.exo_data.ExoDataSource.add_tasks, line 27.)

Todo

Add option/tasks to index to a particular label on the \(n\) dimension.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/data.py:docstring of message_ix_models.tools.exo_data.ExoDataSource.add_tasks, line 27.)

Todo

Add option/tasks to index to a particular label on the \(n\) dimension.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/data.py:docstring of message_ix_models.tools.exo_data.ExoDataSource.add_tasks, line 27.)

Todo

Add further Layer subclasses beyond Constant for, for instance:

  • Linear interpolation between given points.

  • Exponentials, splines, and other functions.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/factor.py:docstring of message_ix_models.model.transport.factor, line 3.)

Todo

Add option/tasks to index to a particular label on the \(n\) dimension.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/ldv.py:docstring of message_ix_models.tools.exo_data.ExoDataSource.add_tasks, line 27.)

Todo

Move to a more general module/location.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/operator.py:docstring of message_ix_models.model.transport.operator.duration_period, line 3.)

Todo

Move to a more general module/location.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/operator.py:docstring of message_ix_models.model.transport.operator.groups_y_annual, line 3.)

Todo

Choose a more descriptive name.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/operator.py:docstring of message_ix_models.model.transport.operator.relabel2, line 3.)

Todo

Move upstream, to genno.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/operator.py:docstring of message_ix_models.model.transport.operator.write_report_debug, line 5.)

Todo

Move upstream, to message_ix_models.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/report.py:docstring of message_ix_models.model.transport.report.add_iamc_store_write, line 19.)

Todo

Move upstream, to message_ix_models.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/report.py:docstring of message_ix_models.model.transport.report.latest_reporting_from_file, line 6.)

Todo

Move upstream, to message_ix_models.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/report.py:docstring of message_ix_models.model.transport.report.latest_reporting_from_platform, line 5.)

Todo

Move upstream, to genno.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/util.py:docstring of message_ix_models.model.transport.util.wildcard, line 3.)

Todo

Move upstream, to message_ix_models.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/envs/latest/lib/python3.13/site-packages/message_ix_models/model/transport/workflow.py:docstring of message_ix_models.model.transport.workflow.maybe_use_temporary_platform, line 3.)

Todo

Transcribe the method into this document.

(The original entry is located in /home/docs/checkouts/readthedocs.org/user_builds/iiasa-energy-program-message-ix-models/checkouts/latest/doc/transport/input.rst, line 241.)