message_ix_models.model.transport.data.MaybeAdaptR11Source

class message_ix_models.model.transport.data.MaybeAdaptR11Source(source, source_kw)[source]

Bases: ExoDataSource

Source of transport data, possibly adapted from R11 for other node code lists.

Parameters:

source_kw – Must include exactly the keys “measure”, “nodes”, and “scenario”.

__init__(source, source_kw)[source]

Handle source and source_kw.

An implementation must:

  • Raise ValueError if it does not recognize or cannot handle the arguments in source or source_kw.

  • Recognize and handle (if possible) a “measure” keyword in source_kw from MEASURES.

It may:

  • Transform these into other values, for instance by mapping certain values to others, applying regular expressions, or other operations.

  • Store those values as instance attributes for use in __call__().

  • Set name and/or extra_dims to control the behaviour of prepare_computer().

  • Log messages that give information that may help to debug a ValueError for source or source_kw that cannot be handled.

It should not actually load data or perform any time- or memory-intensive operations; these should only be triggered by __call__().

Methods

__init__(source, source_kw)

Handle source and source_kw.

get_keys()

Return the target keys for the (1) raw and (2) transformed data.

raise_on_extra_kw(kwargs)

Helper for subclasses to handle the source_kw argument.

transform(c, base_key)

Prepare c to transform raw data from base_key.

Attributes

aggregate

True if transform() should aggregate data on the \(n\) dimension.

extra_dims

Optional additional dimensions for the returned Key/Quantity.

filename

Mapping from measures entries to file names.

id

Identifier for this particular source.

interpolate

True if transform() should interpolate data on the \(y\) dimension.

key

Key for the returned Quantity.

measures

Set of measures recognized by a subclass.

name

aggregate: bool = True

True if transform() should aggregate data on the \(n\) dimension.

extra_dims: tuple[str, ...] = ()

Optional additional dimensions for the returned Key/Quantity. If not set by __init__(), the dimensions are \((n, y)\).

filename: Mapping[str, str] = {}

Mapping from measures entries to file names.

get_keys() tuple[Key, Key][source]

Return the target keys for the (1) raw and (2) transformed data.

id: str = ''

Identifier for this particular source.

interpolate: bool = True

True if transform() should interpolate data on the \(y\) dimension.

key: Key | None = None

Key for the returned Quantity. Optional. See get_keys().

measures: set[str] = {}

Set of measures recognized by a subclass.

raise_on_extra_kw(kwargs) None

Helper for subclasses to handle the source_kw argument.

  1. Store aggregate and interpolate, if they remain in kwargs.

  2. Raise ValueError if there are any other, unhandled keyword arguments in kwargs.

transform(c: Computer, base_key: Key) Key[source]

Prepare c to transform raw data from base_key.

base_key identifies the Quantity that is returned by __call__(). Before the data is returned, transform() allows the data source to add additional tasks or computations to c that further transform the data. (These operations may be done in __call__() directly, but transform() allows use of other genno operators and conveniences.)

The default implementation:

  1. If aggregate is True, aggregates the data ( genno.operator.aggregate()) on the \(n\) dimension using the key “n::groups”.

  2. If interpolate is True, interpolates the data ( genno.operator.interpolate()) on the \(y\) dimension using “y::coords”.