Skip to content

Commit eaa3bc2

Browse files
committed
Update usage of genno.KeySeq
Use features of Key directly.
1 parent 0546efe commit eaa3bc2

File tree

8 files changed

+26
-29
lines changed

8 files changed

+26
-29
lines changed

message_ix_models/model/transport/demand.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,13 +115,13 @@ def dummy(
115115
((price[1], "select", price[0]), dict(indexers=dict(c="transport"), drop=True)),
116116
(price[2], "price_units", price[1]),
117117
# Smooth prices to avoid zig-zag in share projections
118-
(price.base, "smooth", price[2]),
118+
(price, "smooth", price[2]),
119119
# Interpolate speed data
120120
(("speed:scenario-n-t-y:0", "interpolate", exo.speed, "y::coords"), EXTRAPOLATE),
121121
# Select speed data
122122
("speed:n-t-y", "select", "speed:scenario-n-t-y:0", "indexers:scenario"),
123123
# Cost of transport (n, t, y)
124-
(cost, "cost", price.base, gdp_cap, "whour:", "speed:n-t-y", "votm:n-y", y),
124+
(cost, "cost", price, gdp_cap, "whour:", "speed:n-t-y", "votm:n-y", y),
125125
# Share weights (n, t, y)
126126
(
127127
sw,

message_ix_models/model/transport/key.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
from types import SimpleNamespace
44

5-
from genno import Key, KeySeq
5+
from genno import Key
66

77
from message_ix_models.report.key import GDP, PRICE_COMMODITY
88
from message_ix_models.util.genno import Keys
@@ -109,7 +109,7 @@
109109
pdt_nyt = _pdt * "t"
110110

111111
#: Prices.
112-
price = KeySeq(PRICE_COMMODITY / ("h", "l") + "transport")
112+
price = Key(PRICE_COMMODITY / ("h", "l") + "transport")
113113

114114
#: Keys for :mod:`.transport.report`.
115115
report = SimpleNamespace(

message_ix_models/model/transport/operator.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
import numpy as np
1313
import pandas as pd
1414
import xarray as xr
15-
from genno import Computer, KeySeq, Operator, quote
15+
from genno import Computer, Key, Operator, quote
1616
from genno.operator import apply_units, as_quantity, rename_dims
1717
from genno.testing import assert_qty_allclose, assert_units
1818
from scipy import integrate
@@ -355,9 +355,9 @@ def distance_nonldv(context: "Context") -> "AnyQuantity":
355355
source_kw = dict(measure="Vehicle use", aggregate=True)
356356
keys = exo_data.prepare_computer(context, c, "IEA EEI", source_kw)
357357

358-
ks = KeySeq(keys[0])
358+
ks = Key(keys[0])
359359

360-
c.add(ks[0], "select", ks.base, indexers={"SECTOR": "transport"}, drop=True)
360+
c.add(ks[0], "select", ks, indexers={"SECTOR": "transport"}, drop=True)
361361
c.add(ks[1], "rename", ks[0], quote({"Mode/vehicle type": "t"}))
362362
# Replace IEA EEI technology codes with MESSAGEix-Transport ones
363363
c.add(ks[2], "relabel", ks[1], labels=dict(t=EEI_TECH_MAP))

message_ix_models/model/transport/passenger.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from typing import TYPE_CHECKING
77

88
import pandas as pd
9-
from genno import Computer, Key, KeySeq, Quantity, quote
9+
from genno import Computer, Key, Quantity, quote
1010
from message_ix import make_df
1111
from sdmx.model.v21 import Code
1212

@@ -96,8 +96,8 @@ def prepare_computer(c: Computer):
9696

9797
#### NB lines below duplicated from .transport.base
9898
e_iea = Key("energy:n-y-product-flow:iea")
99-
e_fnp = KeySeq(e_iea.drop("y"))
100-
e = KeySeq("energy:commodity-flow-node_loc:iea")
99+
e_fnp = Key(e_iea.drop("y"))
100+
e = Key("energy:commodity-flow-node_loc:iea")
101101

102102
# Transform IEA EWEB data for comparison
103103

@@ -219,7 +219,7 @@ def _(nodes, technologies, y0, config: dict) -> Quantity:
219219
units="GWa",
220220
)
221221

222-
k = KeySeq("bound_activity_lo:n-t-y:transport minimum")
222+
k = Key("bound_activity_lo:n-t-y:transport minimum")
223223
c.add(next(k), _, "n::ex world", "t::transport", "y0", "config")
224224

225225
# Produce MESSAGE parameter bound_activity_lo:nl-t-ya-m-h

message_ix_models/model/transport/report.py

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from typing import TYPE_CHECKING
77

88
import pandas as pd
9-
from genno import Computer, Key, Keys, KeySeq, MissingKeyError
9+
from genno import Computer, Key, Keys, MissingKeyError
1010
from genno.core.key import single_key
1111
from message_ix import Reporter
1212

@@ -133,16 +133,13 @@ def add_iamc_store_write(c: Computer, base_key) -> "Key":
133133
134134
.. todo:: Move upstream, to :mod:`message_ix_models`.
135135
"""
136-
k = KeySeq(base_key)
136+
k = Key(base_key)
137137

138138
file_keys = []
139139
for suffix in ("csv", "xlsx"):
140140
# Create the path
141141
path = c.add(
142-
k[f"{suffix} path"],
143-
"make_output_path",
144-
"config",
145-
name=f"{k.base.name}.{suffix}",
142+
k[f"{suffix} path"], "make_output_path", "config", name=f"{k.name}.{suffix}"
146143
)
147144
# Write `key` to the path
148145
file_keys.append(c.add(k[suffix], "write_report", base_key, path))
@@ -163,12 +160,12 @@ def aggregate(c: "Computer") -> None:
163160

164161
config: Config = c.graph["config"]["transport"]
165162

166-
for key in map(lambda s: KeySeq(c.infer_keys(s)), "emi in out".split()):
163+
for key in map(lambda s: Key(c.infer_keys(s)), "emi in out".split()):
167164
try:
168165
# Reference the function to avoid the genno magic which would treat as sum()
169166
# NB aggregation on the nl dimension *could* come first, but this can use a
170167
# lot of memory when applied to e.g. out:*: for a full global model.
171-
c.add(key[0], func, key.base, "t::transport agg", keep=False)
168+
c.add(key[0], func, key, "t::transport agg", keep=False)
172169
c.add(key[1], func, key[0], "nl::world agg", keep=False)
173170
c.add(key["transport"], "select", key[1], "t::transport modes 1", sums=True)
174171
except MissingKeyError:

message_ix_models/tests/model/transport/test_base.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import numpy as np
55
import pandas as pd
66
import pytest
7-
from genno import Computer, KeySeq
7+
from genno import Computer, Key
88
from genno.operator import random_qty, relabel
99

1010
from message_ix_models.model.structure import get_codes
@@ -23,7 +23,7 @@ def test_smooth(recwarn) -> None:
2323
c.add("y0", y0)
2424

2525
# Expected base key for input
26-
k = KeySeq("ue:nl-ya-c-l-h-t")
26+
k = Key("ue:nl-ya-c-l-h-t")
2727

2828
# Prepare input data
2929
periods = list(

message_ix_models/tests/model/transport/test_build.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ def run(self, obj):
191191
"cg share:n-y-cg": (HasUnits(""),),
192192
"GDP:n-y:PPP+capita": (HasUnits("kUSD / passenger / year"),),
193193
"votm:n-y": (HasUnits(""),),
194-
key.price.base: (HasUnits("USD / km"),),
194+
key.price: (HasUnits("USD / km"),),
195195
"cost:n-y-c-t": (HasUnits("USD / km"),),
196196
key.pdt_nyt[0]: (HasUnits("passenger km / year"),),
197197
key.pdt_nyt[1]: (HasUnits("passenger km / year"),),
@@ -396,7 +396,7 @@ def test_debug(
396396
options: dict,
397397
N_node: int,
398398
*,
399-
verbosity: Literal[0, 1, 2, 3] = 0,
399+
verbosity: Literal[0, 1, 2, 3] = 1,
400400
):
401401
"""Check and debug particular steps in the transport build process.
402402
@@ -440,6 +440,7 @@ def test_debug(
440440

441441
# DEBUG Show and compute a different key
442442
# k = key.pdt_cny
443+
k = "transport::policy+ixmp"
443444

444445
# Show what will be computed
445446
# verbosity = True # DEBUG Force printing the description
@@ -452,7 +453,7 @@ def test_debug(
452453
tmp = c.get(k)
453454

454455
# DEBUG Handle a subset of the result for inspection
455-
# print(tmp)
456+
print(tmp)
456457

457458
assert result, "1 or more checks failed"
458459
del tmp

message_ix_models/tools/costs/gdp.py

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import numpy as np
55
import pandas as pd
6-
from genno import KeySeq
76

87
from message_ix_models import Context
98

@@ -82,13 +81,13 @@ def broadcast_qty(s) -> Quantity:
8281
# Concatenate single-scenario data
8382
k_pop = Key("pop", dims)
8483
c.add(k_pop, "concat", *keys["pop"])
85-
k_gdp = KeySeq("gdp", dims)
86-
c.add(k_gdp.base, "concat", *keys["gdp"])
84+
k_gdp = Key("gdp", dims)
85+
c.add(k_gdp, "concat", *keys["gdp"])
8786

8887
# Further calculations
8988

9089
# GDP per capita
91-
c.add(k_gdp["cap"], "div", k_gdp.base, k_pop)
90+
c.add(k_gdp["cap"], "div", k_gdp, k_pop)
9291

9392
# Ratio to reference region value
9493
c.add(
@@ -114,7 +113,7 @@ def merge(*dfs: pd.DataFrame) -> pd.DataFrame:
114113
)
115114

116115
k_result = "data::pandas"
117-
c.add(k_result, merge, k_pop, k_gdp.base, k_gdp["cap"], k_gdp["indexed"])
116+
c.add(k_result, merge, k_pop, k_gdp, k_gdp["cap"], k_gdp["indexed"])
118117

119118
# log.debug(c.describe(k_result)) # DEBUG Show what would be done
120119
result = c.get(k_result)

0 commit comments

Comments
 (0)