Skip to content

Commit

Permalink
Merge pull request #218 from Breakthrough-Energy/daniel/hifld_create_…
Browse files Browse the repository at this point in the history
…transformers

feat: add function to create transformers within substations
  • Loading branch information
danielolsen authored Sep 10, 2021
2 parents b24eaeb + b01ffe1 commit 4784204
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
from prereise.gather.griddata.hifld.data_process.transmission import (
augment_line_voltages,
create_buses,
create_transformers,
)


Expand Down Expand Up @@ -100,3 +101,18 @@ def test_create_buses():
expected_return["baseKV"] = expected_return["baseKV"].astype(float)
bus = create_buses(lines)
assert_frame_equal(bus, expected_return)


def test_create_transformers():
bus = pd.DataFrame(
{
"sub_id": [1, 1, 2, 2, 3, 3, 3, 4],
"baseKV": [69, 345, 69, 115, 115, 230, 345, 230],
},
dtype="float",
)
expected_transformers = pd.DataFrame(
{"from_bus_id": [0, 2, 4, 5], "to_bus_id": [1, 3, 6, 6]}
)
transformers = create_transformers(bus)
assert_frame_equal(transformers, expected_transformers)
19 changes: 19 additions & 0 deletions prereise/gather/griddata/hifld/data_process/transmission.py
Original file line number Diff line number Diff line change
Expand Up @@ -303,6 +303,25 @@ def create_buses(lines):
return buses


def create_transformers(bus):
"""Add transformers between buses within the same substation. The assumed topology
is that the highest-voltage bus in each substation is connected via a tansformer to
every other voltage.
:param pandas.DataFrame bus: columns 'sub_id' and 'baseKV'
:return: (*pandas.DataFrame*) -- each row is one transformer, columns are
["from_bus_id", "to_bus_id"].
"""
bus_pairs = [
(b, volt_series.idxmax())
for sub, volt_series in bus.groupby("sub_id")["baseKV"]
for b in volt_series.sort_values().index[:-1]
if len(volt_series) > 1
]

return pd.DataFrame(bus_pairs, columns=["from_bus_id", "to_bus_id"])


def build_transmission():
"""Main user-facing entry point."""
# Load input data
Expand Down

0 comments on commit 4784204

Please sign in to comment.