Skip to content

Commit a9a40d5

Browse files
committed
modifying to read only the portions of the h5 datasets corresponding to the generation gids needed for the supply curve point
1 parent 142eb83 commit a9a40d5

File tree

1 file changed

+25
-12
lines changed

1 file changed

+25
-12
lines changed

reV/supply_curve/points.py

+25-12
Original file line numberDiff line numberDiff line change
@@ -1626,11 +1626,18 @@ def exclusion_weighted_mean(self, flat_arr):
16261626
Mean of flat_arr masked by the binary exclusions then weighted by
16271627
the non-zero exclusions.
16281628
"""
1629-
x = flat_arr[self._gen_gids[self.bool_mask]].astype("float32")
1629+
1630+
if len(flat_arr) > len(self.gen_gid_set):
1631+
incl_indices = self._gen_gids[self.bool_mask]
1632+
else:
1633+
incl_indices = pd.Series(
1634+
self._gen_gids[self.bool_mask]
1635+
).map({v: i for i, v in enumerate(self.gen_gid_set)}).values
1636+
1637+
x = flat_arr[incl_indices].astype("float32")
16301638
incl = self.include_mask_flat[self.bool_mask]
16311639
x *= incl
16321640
mean = x.sum() / incl.sum()
1633-
16341641
return mean
16351642

16361643
@property
@@ -1724,7 +1731,9 @@ def res_data(self):
17241731

17251732
if self._res_data is None:
17261733
if self._res_class_dset in self.gen.datasets:
1727-
self._res_data = self.gen[self._res_class_dset]
1734+
self._res_data = self.gen[
1735+
self._res_class_dset, self.gen_gid_set
1736+
]
17281737

17291738
return self._res_data
17301739

@@ -1744,7 +1753,7 @@ def gen_data(self):
17441753

17451754
if self._gen_data is None:
17461755
if self._cf_dset in self.gen.datasets:
1747-
self._gen_data = self.gen[self._cf_dset]
1756+
self._gen_data = self.gen[self._cf_dset, self.gen_gid_set]
17481757

17491758
return self._gen_data
17501759

@@ -1768,7 +1777,7 @@ def gen_ac_data(self):
17681777

17691778
ac_cf_dset = _infer_cf_dset_ac(self._cf_dset)
17701779
if ac_cf_dset in self.gen.datasets:
1771-
return self.gen[ac_cf_dset]
1780+
return self.gen[ac_cf_dset, self.gen_gid_set]
17721781

17731782
return None
17741783

@@ -1788,7 +1797,7 @@ def lcoe_data(self):
17881797

17891798
if self._lcoe_data is None:
17901799
if self._lcoe_dset in self.gen.datasets:
1791-
self._lcoe_data = self.gen[self._lcoe_dset]
1800+
self._lcoe_data = self.gen[self._lcoe_dset, self.gen_gid_set]
17921801

17931802
return self._lcoe_data
17941803

@@ -2165,7 +2174,7 @@ def h5_dsets_data(self):
21652174
_h5_dsets_data = {}
21662175
for dset in self._h5_dsets:
21672176
if dset in self.gen.datasets:
2168-
_h5_dsets_data[dset] = self.gen[dset]
2177+
_h5_dsets_data[dset] = self.gen[dset, self.gen_gid_set]
21692178

21702179
elif isinstance(self._h5_dsets, dict):
21712180
_h5_dsets_data = self._h5_dsets
@@ -2189,7 +2198,7 @@ def regional_multiplier(self):
21892198
if "capital_cost_multiplier" not in self.gen.datasets:
21902199
return 1
21912200

2192-
multipliers = self.gen["capital_cost_multiplier"]
2201+
multipliers = self.gen["capital_cost_multiplier", self.gen_gid_set]
21932202
return self.exclusion_weighted_mean(multipliers)
21942203

21952204
@property
@@ -2198,7 +2207,9 @@ def fixed_charge_rate(self):
21982207
if "fixed_charge_rate" not in self.gen.datasets:
21992208
return 0
22002209

2201-
return self.exclusion_weighted_mean(self.gen["fixed_charge_rate"])
2210+
return self.exclusion_weighted_mean(
2211+
self.gen["fixed_charge_rate", self.gen_gid_set]
2212+
)
22022213

22032214
@property
22042215
def _sam_system_capacity_kw(self):
@@ -2209,7 +2220,7 @@ def _sam_system_capacity_kw(self):
22092220
self._ssc = 0
22102221
if "system_capacity" in self.gen.datasets:
22112222
self._ssc = self.exclusion_weighted_mean(
2212-
self.gen["system_capacity"]
2223+
self.gen["system_capacity", self.gen_gid_set]
22132224
)
22142225

22152226
return self._ssc
@@ -2227,7 +2238,7 @@ def _sam_lcoe_kwargs(self):
22272238
for dset in self._slk:
22282239
if dset in self.gen.datasets:
22292240
self._slk[dset] = self.exclusion_weighted_mean(
2230-
self.gen[dset]
2241+
self.gen[dset, self.gen_gid_set]
22312242
)
22322243

22332244
return self._slk
@@ -2240,7 +2251,9 @@ def _compute_cost_per_ac_mw(self, dset):
22402251
if dset not in self.gen.datasets:
22412252
return None
22422253

2243-
sam_cost = self.exclusion_weighted_mean(self.gen[dset])
2254+
sam_cost = self.exclusion_weighted_mean(
2255+
self.gen[dset, self.gen_gid_set]
2256+
)
22442257
sam_cost_per_mw = sam_cost / (self._sam_system_capacity_kw / 1000)
22452258
sc_point_cost = sam_cost_per_mw * self.capacity
22462259

0 commit comments

Comments
 (0)