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:
Contributing to development in the MESSAGEix docs. All of these apply to contributions to
message_ix_models
andmessage_data
, in particular the Code style.HOWTO guides including detailed guides for some development tasks.
Configuration and (meta)data that explains types of data and how they are handled.
On this page:
Advertise and check compatibility
There are multiple choices of the base structure for a model in the MESSAGEix-GLOBIOM family, e.g. different Node code lists and Years or time periods (year/*.yaml).
Code that will only work with certain structures…
must be documented, and include in its documentation any such limitation, e.g. “
example_func()
only produces data for R11 and year list B.”should use
check_support()
in individual pieces of code to pre-emptively check and raise an exception. This prevents inadvertent use of the code where its data will be invalid:
def myfunc(context, *args):
"""A function that only works on R11 and years ‘B’."""
check_support(
context,
dict(regions=["R11"], years=["B"]),
"Example data produced"
)
# … function code to execute if the check passes
Code may also check a Context
instance and automatically adapt data from certain structures to others, e.g. by interpolating data for certain periods or areas.
To help with validation, code that does this should log on the logging.INFO
level to advertise these steps.
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 directorydata/
at the top level is used instead. Similarly, code cannot be kept in this directory; only code undermessage_data/
can be imported usingfrom 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 emptyScenario
, 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 ofWorkflow
instances, in other cases as ‘runscripts’. Workflows usually have roughly the following steps:Start with one of the
Scenarios
created bymessage_ix_models.model
.Build a set of scenarios from this base, by applying various code in
message_ix_models
andmessage_data
, with various configuration settings and input data.Solve each scenario generated in step 2.
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
andixmp.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 bymessage_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
orproject
, 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 modulemessage_ix_models.project.foo.report.extra
will be tested in a modulemessage_ix_models.tests.project.foo.report.test_extra
, and a function namedtest_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
andmessage_ix
are versions 3.8.0 of each project. These are supported bymessage_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
andmessage_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:
Current open issues, arranged using many labels.
Project boards for ongoing efforts.
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.
Todo
Roll in to transport.test_build.test_debug()
.
(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
Roll in to transport.test_build.test_debug()
.
(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.)