Skip to content

Commit 8a58379

Browse files
committed
Update tables for new csv columns
1 parent 70ac1e5 commit 8a58379

2 files changed

Lines changed: 34 additions & 34 deletions

File tree

src/muse/new_input/readers.py

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -31,21 +31,21 @@ def read_inputs(data_dir):
3131

3232
def read_commodities_csv(buffer_, con):
3333
sql = """CREATE TABLE commodities (
34-
name VARCHAR PRIMARY KEY,
34+
id VARCHAR PRIMARY KEY,
3535
type VARCHAR CHECK (type IN ('energy', 'service', 'material', 'environmental')),
3636
unit VARCHAR,
3737
);
3838
"""
3939
con.sql(sql)
4040
rel = con.read_csv(buffer_, header=True, delimiter=",") # noqa: F841
41-
con.sql("INSERT INTO commodities SELECT name, type, unit FROM rel;")
42-
return con.sql("select name, type, unit from commodities").fetchnumpy()
41+
con.sql("INSERT INTO commodities SELECT id, type, unit FROM rel;")
42+
return con.sql("select * from commodities").fetchnumpy()
4343

4444

4545
def read_commodity_trade_csv(buffer_, con):
4646
sql = """CREATE TABLE commodity_trade (
47-
commodity VARCHAR REFERENCES commodities(name),
48-
region VARCHAR REFERENCES regions(name),
47+
commodity VARCHAR REFERENCES commodities(id),
48+
region VARCHAR REFERENCES regions(id),
4949
year BIGINT,
5050
import DOUBLE,
5151
export DOUBLE,
@@ -54,68 +54,68 @@ def read_commodity_trade_csv(buffer_, con):
5454
con.sql(sql)
5555
rel = con.read_csv(buffer_, header=True, delimiter=",") # noqa: F841
5656
con.sql("""INSERT INTO commodity_trade SELECT
57-
commodity, region, year, import, export FROM rel;""")
57+
commodity_id, region_id, year, import, export FROM rel;""")
5858
return con.sql("SELECT * from commodity_trade").fetchnumpy()
5959

6060

6161
def read_commodity_costs_csv(buffer_, con):
6262
sql = """CREATE TABLE commodity_costs (
63+
commodity VARCHAR REFERENCES commodities(id),
64+
region VARCHAR REFERENCES regions(id),
6365
year BIGINT,
64-
region VARCHAR REFERENCES regions(name),
65-
commodity VARCHAR REFERENCES commodities(name),
6666
value DOUBLE,
6767
);
6868
"""
6969
con.sql(sql)
7070
rel = con.read_csv(buffer_, header=True, delimiter=",") # noqa: F841
7171
con.sql("""INSERT INTO commodity_costs SELECT
72-
year, region, commodity_name, value FROM rel;""")
72+
commidity_id, region_id, year, value FROM rel;""")
7373
return con.sql("SELECT * from commodity_costs").fetchnumpy()
7474

7575

7676
def read_demand_csv(buffer_, con):
7777
sql = """CREATE TABLE demand (
78+
commodity VARCHAR REFERENCES commodities(id),
79+
region VARCHAR REFERENCES regions(id),
7880
year BIGINT,
79-
commodity VARCHAR REFERENCES commodities(name),
80-
region VARCHAR REFERENCES regions(name),
8181
demand DOUBLE,
8282
);
8383
"""
8484
con.sql(sql)
8585
rel = con.read_csv(buffer_, header=True, delimiter=",") # noqa: F841
86-
con.sql("INSERT INTO demand SELECT year, commodity_name, region, demand FROM rel;")
86+
con.sql("INSERT INTO demand SELECT commodity_id, region_id, year, demand FROM rel;")
8787
return con.sql("SELECT * from demand").fetchnumpy()
8888

8989

9090
def read_demand_slicing_csv(buffer_, con):
9191
sql = """CREATE TABLE demand_slicing (
92-
commodity VARCHAR REFERENCES commodities(name),
93-
region VARCHAR REFERENCES regions(name),
92+
commodity VARCHAR REFERENCES commodities(id),
93+
region VARCHAR REFERENCES regions(id),
94+
year BIGINT,
9495
timeslice VARCHAR,
9596
fraction DOUBLE CHECK (fraction >= 0 AND fraction <= 1),
96-
year BIGINT,
9797
);
9898
"""
9999
con.sql(sql)
100100
rel = con.read_csv(buffer_, header=True, delimiter=",") # noqa: F841
101101
con.sql("""INSERT INTO demand_slicing SELECT
102-
commodity, region, timeslice, fraction, year FROM rel;""")
102+
commodity_id, region_id, year, timeslice, fraction FROM rel;""")
103103
return con.sql("SELECT * from demand_slicing").fetchnumpy()
104104

105105

106106
def read_regions_csv(buffer_, con):
107107
sql = """CREATE TABLE regions (
108-
name VARCHAR PRIMARY KEY,
108+
id VARCHAR PRIMARY KEY,
109109
);
110110
"""
111111
con.sql(sql)
112112
rel = con.read_csv(buffer_, header=True, delimiter=",") # noqa: F841
113-
con.sql("INSERT INTO regions SELECT name FROM rel;")
114-
return con.sql("SELECT name from regions").fetchnumpy()
113+
con.sql("INSERT INTO regions SELECT id FROM rel;")
114+
return con.sql("SELECT * from regions").fetchnumpy()
115115

116116

117117
def calculate_global_commodities(commodities):
118-
names = commodities["name"].astype(np.dtype("str"))
118+
names = commodities["id"].astype(np.dtype("str"))
119119
types = commodities["type"].astype(np.dtype("str"))
120120
units = commodities["unit"].astype(np.dtype("str"))
121121

tests/test_readers.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -332,14 +332,6 @@ def con():
332332
return duckdb.connect(":memory:")
333333

334334

335-
@fixture
336-
def populate_regions(default_new_input, con):
337-
from muse.new_input.readers import read_regions_csv
338-
339-
with open(default_new_input / "regions.csv") as f:
340-
return read_regions_csv(f, con)
341-
342-
343335
@fixture
344336
def populate_commodities(default_new_input, con):
345337
from muse.new_input.readers import read_commodities_csv
@@ -356,13 +348,21 @@ def populate_demand(default_new_input, con, populate_regions, populate_commoditi
356348
return read_demand_csv(f, con)
357349

358350

351+
@fixture
352+
def populate_regions(default_new_input, con):
353+
from muse.new_input.readers import read_regions_csv
354+
355+
with open(default_new_input / "regions.csv") as f:
356+
return read_regions_csv(f, con)
357+
358+
359359
def test_read_regions(populate_regions):
360-
assert populate_regions["name"] == np.array(["R1"])
360+
assert populate_regions["id"] == np.array(["R1"])
361361

362362

363363
def test_read_new_global_commodities(populate_commodities):
364364
data = populate_commodities
365-
assert list(data["name"]) == ["electricity", "gas", "heat", "wind", "CO2f"]
365+
assert list(data["id"]) == ["electricity", "gas", "heat", "wind", "CO2f"]
366366
assert list(data["type"]) == ["energy"] * 5
367367
assert list(data["unit"]) == ["PJ"] * 4 + ["kt"]
368368

@@ -377,15 +377,15 @@ def test_calculate_global_commodities(populate_commodities):
377377
for dt in data.dtypes.values():
378378
assert np.issubdtype(dt, np.dtype("str"))
379379

380-
assert list(data.coords["commodity"].values) == list(populate_commodities["name"])
380+
assert list(data.coords["commodity"].values) == list(populate_commodities["id"])
381381
assert list(data.data_vars["type"].values) == list(populate_commodities["type"])
382382
assert list(data.data_vars["unit"].values) == list(populate_commodities["unit"])
383383

384384

385385
def test_read_new_global_commodities_type_constraint(default_new_input, con):
386386
from muse.new_input.readers import read_commodities_csv
387387

388-
csv = StringIO("name,type,unit\nfoo,invalid,bar\n")
388+
csv = StringIO("id,type,unit\nfoo,invalid,bar\n")
389389
with raises(duckdb.ConstraintException):
390390
read_commodities_csv(csv, con)
391391

@@ -403,7 +403,7 @@ def test_new_read_demand_csv_commodity_constraint(
403403
):
404404
from muse.new_input.readers import read_demand_csv
405405

406-
csv = StringIO("year,commodity_name,region,demand\n2020,invalid,R1,0\n")
406+
csv = StringIO("year,commodity_id,region_id,demand\n2020,invalid,R1,0\n")
407407
with raises(duckdb.ConstraintException, match=".*foreign key.*"):
408408
read_demand_csv(csv, con)
409409

@@ -413,7 +413,7 @@ def test_new_read_demand_csv_region_constraint(
413413
):
414414
from muse.new_input.readers import read_demand_csv
415415

416-
csv = StringIO("year,commodity_name,region,demand\n2020,heat,invalid,0\n")
416+
csv = StringIO("year,commodity_id,region_id,demand\n2020,heat,invalid,0\n")
417417
with raises(duckdb.ConstraintException, match=".*foreign key.*"):
418418
read_demand_csv(csv, con)
419419

0 commit comments

Comments
 (0)