Skip to content

Commit 7a8c57e

Browse files
Move sig_figs to GeoPHIRESUtils.py
1 parent 577a951 commit 7a8c57e

File tree

3 files changed

+19
-24
lines changed

3 files changed

+19
-24
lines changed

src/geophires_x/EconomicsSam.py

Lines changed: 3 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,10 @@
3838
project_vir_parameter,
3939
project_payback_period_parameter,
4040
)
41-
from geophires_x.GeoPHIRESUtils import is_float, is_int
41+
from geophires_x.GeoPHIRESUtils import is_float, is_int, sig_figs
4242
from geophires_x.OptionList import EconomicModel, EndUseOptions
4343
from geophires_x.Parameter import Parameter, OutputParameter, floatParameter
44-
from geophires_x.Units import convertible_unit, EnergyCostUnit, CurrencyUnit, Units, PercentUnit
44+
from geophires_x.Units import convertible_unit, EnergyCostUnit, CurrencyUnit, Units
4545

4646

4747
@dataclass
@@ -162,7 +162,7 @@ def calculate_sam_economics(model: Model) -> SamEconomicsCalculations:
162162
cash_flow = _calculate_sam_economics_cash_flow(model, single_owner)
163163

164164
def sf(_v: float, num_sig_figs: int = 5) -> float:
165-
return _sig_figs(_v, num_sig_figs)
165+
return sig_figs(_v, num_sig_figs)
166166

167167
sam_economics: SamEconomicsCalculations = SamEconomicsCalculations(sam_cash_flow_profile=cash_flow)
168168
sam_economics.lcoe_nominal.value = sf(single_owner.Outputs.lcoe_nom)
@@ -435,21 +435,3 @@ def _ppa_pricing_model(
435435

436436
def _get_max_total_generation_kW(model: Model) -> float:
437437
return np.max(model.surfaceplant.ElectricityProduced.quantity().to(convertible_unit('kW')).magnitude)
438-
439-
440-
def _sig_figs(val: float | list | tuple, num_sig_figs: int) -> float:
441-
"""
442-
TODO move to utilities, probably
443-
"""
444-
445-
if val is None:
446-
return None
447-
448-
if isinstance(val, list) or isinstance(val, tuple):
449-
return [_sig_figs(v, num_sig_figs) for v in val]
450-
451-
try:
452-
return float('%s' % float(f'%.{num_sig_figs}g' % val)) # pylint: disable=consider-using-f-string
453-
except TypeError:
454-
# TODO warn
455-
return val

src/geophires_x/GeoPHIRESUtils.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -642,3 +642,16 @@ def is_float(o: Any) -> bool:
642642
else:
643643
return True
644644

645+
646+
def sig_figs(val: float | list | tuple, num_sig_figs: int) -> float:
647+
if val is None:
648+
return None
649+
650+
if isinstance(val, list) or isinstance(val, tuple):
651+
return [sig_figs(v, num_sig_figs) for v in val]
652+
653+
try:
654+
return float('%s' % float(f'%.{num_sig_figs}g' % val)) # pylint: disable=consider-using-f-string
655+
except TypeError:
656+
# TODO warn
657+
return val

tests/geophires_x_tests/test_economics_sam.py

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@
1717
# noinspection PyProtectedMember
1818
from geophires_x.EconomicsSam import (
1919
calculate_sam_economics,
20-
_sig_figs,
2120
get_sam_cash_flow_profile_tabulated_output,
2221
_ppa_pricing_model,
2322
_get_fed_and_state_tax_rates,
2423
)
24+
from geophires_x.GeoPHIRESUtils import sig_figs
2525

2626
# noinspection PyProtectedMember
2727
from geophires_x.EconomicsSamCashFlow import _clean_profile, _is_category_row_label, _is_designator_row_label
@@ -459,8 +459,8 @@ def test_is_designator_row_label(self):
459459
self.assertTrue(_is_designator_row_label('plus PBI if not available for debt service:'))
460460

461461
def test_sig_figs(self):
462-
self.assertListEqual(_sig_figs([1.14, 2.24], 2), [1.1, 2.2])
463-
self.assertListEqual(_sig_figs((1.14, 2.24), 2), [1.1, 2.2])
462+
self.assertListEqual(sig_figs([1.14, 2.24], 2), [1.1, 2.2])
463+
self.assertListEqual(sig_figs((1.14, 2.24), 2), [1.1, 2.2])
464464

465465
def test_get_fed_and_state_tax_rates(self):
466466
self.assertEqual(([21], [7]), _get_fed_and_state_tax_rates(0.28))

0 commit comments

Comments
 (0)