This page describes the structure and format of inputs required for building MESSAGEix-Transport.
Both input data and configuration are stored in files under message_ix_models/data/transport/.
In most cases, these files are read from a subdirectory like …/data/transport/nodes/, where nodes denotes the message_ix_modelsnode code list—for instance, “R12”—for which MESSAGEix-Transport will be built.
This value is retrieved from the model.Config.regions setting on a Context object.
If the file data or configuration settings have a node (\(n\)) dimension, the file must be placed in such a subdirectory.
Data for one node list is not usable for base models using a different node list.
For other data, a node list–specific file may be used.
If none exists, the file of the same name in …/data/transport/ is used as a default.
For example, …/data/transport/R12/set.yaml is used if it exists; if not, then …/data/transport/set.yaml is used.
The contents of this configuration file exactly map to the attributes of the class transport.Config.
The class stores all the settings understood by the code for building, solving, and reporting MESSAGEix-Transport.
The class also defines the default values for each setting (there is no file …/data/transport/config.yaml containing defaults.)
It also has methods for reading the configuration from file; see the detailed description of Config.from_context().
The following is the configuration file for a base model with R12 nodes:
This file gives the code list for the MESSAGE technology concept/set/dimension.
Some annotations (iea-eweb-flow, input, report) and the child hierarchy give information about technologies’ grouping according to transport modes.
This code list, stored in the file message_ix_models/data/sdmx/IIASA_ECE_CL_TRANSPORT_SCENARIO(1.0.0).xml, contains an SDMX code list for distinct MESSAGEix-Transport scenarios.
The codes have IDs like LED-SSP1 that give a short identifier used in transport.workflow and elsewhere, and names that give a complete, human-readable description.
Every code has all of following annotations:
SSP-URN
Complete URN of a code in ICONICS:SSP(2024) or another code list for the SSP used for sociodemographic input data and to control other settings in transport.build.
Example annotation text: 'urn:sdmx:org.sdmx.infomodel.codelist.Code=ICONICS:SSP(2024).1'
is-LED-Scenario
Example annotation text: True
repr() of Python True or False, the former indicating that “Low Energy Demand (LED)” settings should be used.
See also Config.project.
EDITS-activity-id
Example annotation text: 'HA'
For EDITS (project.edits), the identity of an ITF PASTA scenario providing exogenous transport activity.
base-scenario-URL
Example annotation text: 'ixmp://ixmp-dev/SSP_SSP1_v1.1/baseline_DEFAULT_step_13'
URL of a base scenario used to build the corresponding MESSAGEix-Transport scenario.
The module transport.data contains a number of Dataflow instances, listed below, that each describe an input or output data flow.
For each of the input data flows:
the Dataflow.path attribute gives a file path where a CSV file with input data is expected.
the Dataflow.key attribute gives the Key where loaded and transformed data from the file is available.
(See also transport.key.exo, which allows access to all of these keys.)
The key also expresses the dimensions of the input data flow.
The additional metadata explains the measure concept, units of measure, etc.
Contents of the file freight-mode-share-ref.csv are available at the key freightmodeshare:n-t:ref.
The key indicates the dimensionality of this quantity is \((n, t)\).
The corresponding CSV file has column headers “node”, “technology”, and “value”.
Not all files are currently or always used in model-building computations.
Some submodules of transport use additional data files loaded or processed via other methods; see below under “Other data sources.”
Most of the files have a header comment including the source of the data and units of measurement.
In some cases—where a header comment would be too long—extended information is below.
The git history of files, or the GitHub “blame” view can also be used to inspect the edit history of each file, line by line.
Obtained from literature, based on estimates from South Africa. The reported value for South Africa is lower (18000 km/year, source) than the one for Kenya (22000 km/year, source).
Applied as historical_new_capacity and bound_new_capacity_{lo,up}
values for LDVs.
In particular, values up to 2015 (the final period before \(y_0\)) are used for
historical_new_capacity. Values from \(y_0\) onwards are used for
bound_new_capacity_lo and bound_new_capacity_up.
The values for growth_* are allowable annual decrease or increase (respectively)
in activity of each technology.
For example,
a value of 0.01 means the activity may increase by 1% from one year to the next.
For periods of length >1 year, MESSAGE compounds the value.
Some values used include:
±0.0192 = (1.1 ^ (1 / 5)) - 1.0; or ±10% each 5 years.
±0.0371 = (1.2 ^ (1 / 5)) - 1.0; or ±20% each 5 years.
±0.0539 = (1.3 ^ (1 / 5)) - 1.0; or ±30% each 5 years.
±0.0696 = (1.4 ^ (1 / 5)) - 1.0; or ±40% each 5 years.
Values for initial_*_up are initial values for growth constraints.
If these values are not large enough,
they can cause infeasibilities in the base period
for technologies that do not have historical_activity.
See also:
ldv.constraint_data() that handles values for technology="LDV".
non_ldv.growth_new_capacity() that handles values for technology="P ex LDV".
‘Elasticity’ of PDT per capita with respect to GDP(PPP) per capita [dimensionless]
Key and dimensions: <elasticity:scenario-n-y:P+exo>
Input file at path: elasticity-p.csv
Required for build: True
The code that handles this input data flow interpolates on the ‘year’ dimension. The ‘node’ dimension is optional; if not provided, values are broadcast across all existing nodes.
Input data for MESSAGEix-Transport.
Codes on the ‘scenario’ dimension are partial URNs for codes in the SSP_2024 code list.
Used via pdt_per_capita(), which interpolates on the \(y\) dimension.
Key and dimensions: <lifetime:scenario-nl-t-yv:ldv+exo>
Input file at path: lifetime-ldv.csv
Required for build: True
Values are interpolated across the model horizon. In MESSAGE(V)-
Transport, this quantity had the additional dimension of driver_type, and values were 20
years for driver_type=’average’, 15 y for ‘moderate’, and 10 y for ‘frequent’.
Based on the vehicle activity method Liu, et al. 2022 estimate the total PDT for R12_CHN for year (2017) is 9406 billion pkm.
This is the latest corrected estimate available from Liu, et al. 2022.
Based on similar estimates for 2013 & 2015, I estimate the average growth of PDT to be 8% per year.
Using the growth rate and 2017 estimate, the total PDT for year (2020) comes out to be 11848.9 billion pkm.
R12_CHN population estimate from IMAGE: 1.4483 billion
Share of total stock for LDV technologies [dimensionless]
Key and dimensions: <tech share:n-t:ldv+exo>
Input file at path: ldv-t-share.csv
Required for build: True
Values must sum to 1 across the ‘t’ dimension.
Technology codes annotated “historical-only: True” (e.g. ICE_L_ptrp) must be omitted
or have zero values. If not, incompatible/infeasible constraint values are created.
transport makes use of the tools.exo_data mechanism to retrieve data from common (not transport-specific) sources.
DataSourceConfig, transport.Config.ssp, and other settings determine which sources and quantities are used.
These include:
GDP and population from the project.ssp data sources or other sources including the ADVANCE project, the Global Energy Assessment project, the SHAPE project, etc.
Note
Formerly, file gdp.csv was used.
This is no longer supported; instead, use databases via exo_data.prepare_computer() or introduce quantities with the same dimensions and units into the Computer used for model building/reporting.
Energy from the IEA Extended World Energy Balances.
Data on costs and efficiencies of LDV technologies.
Formerly this data was read from ldv-cost-efficiency.xlsx, a highly-structured spreadsheet that performs some input calculations.
The function get_USTIMES_MA3T() reads data from multiple sheets in this file.
To understand the sheet names and cell layout expected, see the code for that function.
As the name implies, the data for MESSAGE (V)-Transport was derived from the US-TIMES and MA³T models.
These new estimates are mainly based on IMAGE regional estimates (average of EA, WA, and SA) after discussion with Jarmo as well as an additional literature search + guesstimates from vehicle count etc.
Still, no comprehensive source to validate these.
Only broad qualitative impressions formed from the literature.
More details in [other] notes.
Based on the total pdt and mode share breakdown from 2017^ as reported in Liu, et al. 2022, and extrapolating to 2020 (assuming the mode share in 2020 is the same as the one in 2017).
Subtracting Waterways from PDT.
RAIL includes both urban PT & RAIL.
BUS includes both local buses and COACH.
Estimated from weighing Japan (0.80) & Aus/NZ (0.2) by population.
JP source is ATO, Statistics Japan, IEA.
AU source is BITRE 2021.
Motorcycle share is guess-timate based on no. of motorbikes, load factor, and comparing it to cars.
BUS estimate for Japan is based on ATO data, less certain as source is missing.
More details in [other] notes.