Skip to content

Commit 5e220a0

Browse files
authored
Merge pull request #32 from NREL-Distribution-Suites/gdm_v2
gdm new version compliance
2 parents 00787bd + bbb7b0f commit 5e220a0

13 files changed

Lines changed: 38 additions & 47 deletions

docs/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Primarily this package will leverage open street parcels, road network to build
88
You can install this package from `main` branch using following command.
99

1010
```bash
11-
pip install "nrel-shift @ git+https://github.com/NREL-Distribution-Suites/shift.git@main"
11+
pip install "nrel-shift"
1212
```
1313

1414
```{toctree}

docs/usage/mapping_phases.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,13 @@ upon which equipment is used by equipment mapper.
1212
```python
1313
from shift import TransformerPhaseMapperModel, TransformerTypes, BalancedPhaseMapper, add_phase_mapper_to_plot
1414
from gdm import DistributionTransformer
15-
from gdm.quantities import PositiveApparentPower
15+
from gdm.quantities import ApparentPower
1616

1717
mapper = [
1818
TransformerPhaseMapperModel(
1919
tr_name=el.name,
2020
tr_type=TransformerTypes.SPLIT_PHASE,
21-
tr_capacity=PositiveApparentPower(
21+
tr_capacity=ApparentPower(
2222
25,
2323
"kilova",
2424
),

docs/usage/mapping_voltages.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,15 @@ using transformer voltages.
99

1010
```python
1111
from shift import TransformerVoltageMapper, TransformerVoltageModel, add_voltage_mapper_to_plot
12-
from gdm.quantities import PositiveVoltage
12+
from gdm.quantities import Voltage
1313
from gdm import DistributionTransformer
1414

1515
voltage_mapper = TransformerVoltageMapper(
1616
new_graph,
1717
xfmr_voltage=[
1818
TransformerVoltageModel(
1919
name=el.name,
20-
voltages=[PositiveVoltage(7.2, "kilovolt"), PositiveVoltage(120, "volt")],
20+
voltages=[Voltage(7.2, "kilovolt"), Voltage(120, "volt")],
2121
)
2222
for _, _, el in new_graph.get_edges()
2323
if el.edge_type is DistributionTransformer

pyproject.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
44

55
[project]
66
name = "nrel-shift"
7-
version = "0.4.1"
7+
version = "0.5.0"
88
description = "Framework for developing synthetic distribution feeder model."
99
readme = "README.md"
1010
requires-python = ">=3.10"
@@ -25,7 +25,7 @@ dependencies = [
2525
"scikit-learn",
2626
"plotly",
2727
"geopy",
28-
"grid-data-models~=2.0.1",
28+
"grid-data-models~=2.1.0",
2929
"importlib-metadata",
3030
]
3131

src/shift/data_model.py

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from enum import Enum
33

44
from pydantic import BaseModel, Field, ConfigDict, model_validator
5-
from gdm.quantities import PositiveVoltage, PositiveApparentPower, PositiveDistance
5+
from gdm.quantities import Voltage, ApparentPower, Distance
66
from gdm.distribution.components import (
77
DistributionLoad,
88
DistributionSolar,
@@ -60,9 +60,7 @@ class TransformerVoltageModel(BaseComponent):
6060
"""Interface for transformer voltage model."""
6161

6262
name: Annotated[str, Field(..., description="Name of the transformer.")]
63-
voltages: Annotated[
64-
list[PositiveVoltage], Field(..., description="List of transformer voltages.")
65-
]
63+
voltages: Annotated[list[Voltage], Field(..., description="List of transformer voltages.")]
6664

6765

6866
class TransformerTypes(str, Enum):
@@ -81,7 +79,7 @@ class TransformerPhaseMapperModel(BaseModel):
8179
model_config = ConfigDict(arbitrary_types_allowed=True)
8280
tr_name: str
8381
tr_type: TransformerTypes
84-
tr_capacity: PositiveApparentPower
82+
tr_capacity: ApparentPower
8583
location: Location
8684

8785

@@ -116,7 +114,7 @@ class EdgeModel(BaseModel):
116114
model_config = ConfigDict(arbitrary_types_allowed=True)
117115
name: Annotated[str, Field(..., description="Name of the node.")]
118116
edge_type: Annotated[VALID_EDGE_TYPES, Field(..., description="Edge type.")]
119-
length: Annotated[Optional[PositiveDistance], Field(None, description="Length of edge.")]
117+
length: Annotated[Optional[Distance], Field(None, description="Length of edge.")]
120118

121119
@model_validator(mode="after")
122120
def validate_fields(self):

src/shift/mapper/base_voltage_mapper.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from abc import ABC, abstractmethod
22
from functools import cached_property
33

4-
from gdm.quantities import PositiveVoltage
4+
from gdm.quantities import Voltage
55

66
from shift.graph.distribution_graph import DistributionGraph
77

@@ -24,10 +24,10 @@ def __init__(self, graph: DistributionGraph):
2424

2525
@abstractmethod
2626
@cached_property
27-
def node_voltage_mapping(self) -> dict[str, PositiveVoltage]:
27+
def node_voltage_mapping(self) -> dict[str, Voltage]:
2828
"""Returns dictionary mapping node name to line to ground voltage.
2929
3030
Returns
3131
-------
32-
dict[str, tuple[PositiveVoltage, PositiveVoltage]]
32+
dict[str, tuple[Voltage, Voltage]]
3333
"""

src/shift/mapper/edge_equipment_mapper.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
from infrasys.component import Component
66
from gdm.dataset.dataset_system import DatasetSystem
7-
from gdm.quantities import PositiveApparentPower, PositiveCurrent, PositiveVoltage
7+
from gdm.quantities import ApparentPower, Current, Voltage
88
from gdm.distribution.components import (
99
DistributionTransformer,
1010
DistributionBranchBase,
@@ -58,10 +58,10 @@ def __init__(
5858
self.phase_mapper = phase_mapper
5959
super().__init__(graph)
6060

61-
def _get_load_power(self, load_equipment: LoadEquipment) -> PositiveApparentPower:
61+
def _get_load_power(self, load_equipment: LoadEquipment) -> ApparentPower:
6262
"""Internal method to return total load power."""
6363

64-
return PositiveApparentPower(
64+
return ApparentPower(
6565
sum(
6666
[
6767
math.sqrt(
@@ -76,7 +76,7 @@ def _get_load_power(self, load_equipment: LoadEquipment) -> PositiveApparentPowe
7676
"kilova",
7777
)
7878

79-
def _get_served_load(self, from_node: str, to_node: str) -> PositiveApparentPower:
79+
def _get_served_load(self, from_node: str, to_node: str) -> ApparentPower:
8080
"""Internal method to get load served downward from this edge."""
8181
dfs_graph = self.graph.get_dfs_tree()
8282
parent_node = from_node if dfs_graph.has_edge(from_node, to_node) else to_node
@@ -88,7 +88,7 @@ def _get_served_load(self, from_node: str, to_node: str) -> PositiveApparentPowe
8888
and DistributionLoad in x.assets
8989
)
9090
)
91-
served_load = PositiveApparentPower(0, "kilova")
91+
served_load = ApparentPower(0, "kilova")
9292
for node in load_nodes:
9393
equipment = self.node_asset_equipment_mapping[node.name][DistributionLoad]
9494
if not isinstance(equipment, LoadEquipment):
@@ -98,7 +98,7 @@ def _get_served_load(self, from_node: str, to_node: str) -> PositiveApparentPowe
9898
return served_load
9999

100100
def _get_closest_transformer_equipment(
101-
self, capacity: PositiveApparentPower, num_phase: int, voltages: list[PositiveVoltage]
101+
self, capacity: ApparentPower, num_phase: int, voltages: list[Voltage]
102102
) -> Component:
103103
"""Internal method to return transformer equipment by capacity."""
104104

@@ -131,7 +131,7 @@ def filter_func(x: DistributionTransformerEquipment):
131131
return sorted(trs, key=lambda x: x.windings[0].rated_power)[0]
132132

133133
def _get_closest_branch_equipment(
134-
self, type_: Type[Component], current: PositiveCurrent, num_phase: int
134+
self, type_: Type[Component], current: Current, num_phase: int
135135
) -> Component:
136136
"""Internal method to return closest conductor equipment."""
137137
if issubclass(type_, MatrixImpedanceBranchEquipment):
@@ -197,7 +197,7 @@ def edge_equipment_mapping(self) -> dict[str, Component]:
197197

198198
edge_equipment_mapper[edge.name] = self._get_closest_branch_equipment(
199199
EQUIPMENT_TO_CLASS_TYPE[edge.edge_type],
200-
PositiveCurrent(current, "ampere"),
200+
Current(current, "ampere"),
201201
num_phase,
202202
)
203203
return edge_equipment_mapper

src/shift/mapper/transformer_voltage_mapper.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
from functools import cached_property
22
from typing import Callable
33

4-
from gdm.quantities import PositiveVoltage
4+
from gdm.quantities import Voltage
55
from gdm.distribution.components import DistributionTransformer
66

77
import networkx as nx
@@ -49,7 +49,7 @@ def _update_mapper_by_func(
4949
self,
5050
nodes: list[str],
5151
xfmr: TransformerVoltageModel,
52-
mapper: dict[str, PositiveVoltage],
52+
mapper: dict[str, Voltage],
5353
compare_func: Callable,
5454
):
5555
"""Internal function to update voltage mapper."""
@@ -60,8 +60,8 @@ def _update_mapper_by_func(
6060
mapper[node] = compare_func(xfmr.voltages)
6161

6262
@cached_property
63-
def node_voltage_mapping(self) -> dict[str, PositiveVoltage]:
64-
node_voltages: dict[str, PositiveVoltage] = {}
63+
def node_voltage_mapping(self) -> dict[str, Voltage]:
64+
node_voltages: dict[str, Voltage] = {}
6565
dfs_tree = self.graph.get_dfs_tree()
6666
xfmrs_in_mapper = [xfmr.name for xfmr in self.xfmr_voltage]
6767
edges = self.graph.get_edges(filter_func=lambda x: x.name in xfmrs_in_mapper)

src/shift/system_builder.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
VoltageTypes,
1515
Phase,
1616
)
17-
from gdm.quantities import PositiveVoltage
17+
from gdm.quantities import Voltage
1818
import numpy as np
1919

2020
from shift.data_model import (
@@ -126,9 +126,9 @@ def _add_branch(self, from_node: str, to_node: str, edge_data: EdgeModel):
126126
self._system.add_component(edge)
127127

128128
@staticmethod
129-
def _get_wdg_voltages(tr_equipment: DistributionTransformerEquipment) -> PositiveVoltage:
129+
def _get_wdg_voltages(tr_equipment: DistributionTransformerEquipment) -> Voltage:
130130
"""Internal method to return winding phase voltages."""
131-
return PositiveVoltage(
131+
return Voltage(
132132
[
133133
wdg.rated_voltage.to("kilovolt").magnitude
134134
/ (

src/shift/utils/split_network_edges.py

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,11 @@
55
from geopy.distance import geodesic
66
import numpy as np
77
from infrasys.quantities import Distance
8-
from gdm.quantities import PositiveDistance
98

109
from shift.data_model import GeoLocation
1110

1211

13-
def get_distance_between_points(
14-
from_point: GeoLocation, to_point: GeoLocation
15-
) -> PositiveDistance:
12+
def get_distance_between_points(from_point: GeoLocation, to_point: GeoLocation) -> Distance:
1613
"""Returns distance betwee two geo points.
1714
1815
Parameters
@@ -25,12 +22,10 @@ def get_distance_between_points(
2522
2623
Returns
2724
-------
28-
PositiveDistance
25+
Distance
2926
"""
3027

31-
return PositiveDistance(
32-
geodesic(*[reversed(point) for point in [from_point, to_point]]).m, "m"
33-
)
28+
return Distance(geodesic(*[reversed(point) for point in [from_point, to_point]]).m, "m")
3429

3530

3631
def split_network_edges(graph: nx.Graph, split_length: Distance) -> nx.Graph:

0 commit comments

Comments
 (0)