Skip to content

Commit 261aeea

Browse files
committed
fix: issue with nan in elementwise sum
When aggregating rates we want nan to be treated as zero, if not the nan spreads and we consider emissions for installation as nan when only one consumer isn't defined. Refs: equinor/ecalc-internal#1436
1 parent 6273738 commit 261aeea

File tree

2 files changed

+14
-18
lines changed

2 files changed

+14
-18
lines changed

src/libecalc/common/list/list_utils.py

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,26 +62,22 @@ def group_data_by_value_at_index(index: int, row_based_data: list[list[Any]]) ->
6262
return chart_grouped_by_index
6363

6464

65-
def elementwise_sum(*vectors: Sequence[float], periods: Periods | None = None) -> NDArray[np.float64]:
65+
def elementwise_sum(*vectors: Sequence[float]) -> NDArray[np.float64]:
6666
"""Sum up multiple vectors elementwise.
6767
6868
E.g. if we provide three lists [1,20], [2,10], [1,30], the result will be [1+2+1,20+10+30] = [4,60]
6969
7070
Args:
7171
*vectors: Sequences to be summed up elementwise
72-
periods: Optional list of periods used to initialize resulting array. If no periods are provided, the first vector is used
7372
7473
Returns:
7574
Numpy array where the elements of provided vectors are summed up elementwise
7675
7776
"""
78-
if periods is not None:
79-
result = np.full_like(periods.periods, fill_value=0.0, dtype=float64)
80-
else:
81-
result = np.full_like(vectors[0], fill_value=0.0, dtype=float64)
77+
result = np.full_like(vectors[0], fill_value=0.0, dtype=float64)
8278

8379
for vector in vectors:
84-
result = np.add(result, vector)
80+
result = np.add(np.nan_to_num(result), np.nan_to_num(vector))
8581
return result
8682

8783

tests/libecalc/integration/snapshots/test_all_energy_usage_models/test_all_results/all_energy_usage_models_v3.json

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -61786,7 +61786,7 @@
6178661786
8.1339491,
6178761787
8.1339491,
6178861788
8.1339491,
61789-
NaN
61789+
0.0
6179061790
]
6179161791
},
6179261792
"streams": null
@@ -62039,7 +62039,7 @@
6203962039
7.8380292,
6204062040
7.8380292,
6204162041
7.8380292,
62042-
NaN
62042+
0.0
6204362043
]
6204462044
},
6204562045
"streams": null
@@ -62292,7 +62292,7 @@
6229262292
8.1339491,
6229362293
8.1339491,
6229462294
8.1339491,
62295-
NaN
62295+
0.0
6229662296
]
6229762297
},
6229862298
"streams": null
@@ -62545,7 +62545,7 @@
6254562545
0.0,
6254662546
0.0,
6254762547
0.0,
62548-
NaN
62548+
0.0
6254962549
]
6255062550
},
6255162551
"streams": null
@@ -63140,7 +63140,7 @@
6314063140
1.606285,
6314163141
1.606285,
6314263142
1.606285,
63143-
NaN
63143+
0.0
6314463144
]
6314563145
},
6314663146
"streams": null
@@ -63393,7 +63393,7 @@
6339363393
1.6746959,
6339463394
1.6746959,
6339563395
1.6746959,
63396-
NaN
63396+
0.0
6339763397
]
6339863398
},
6339963399
"streams": null
@@ -63646,7 +63646,7 @@
6364663646
12.606054,
6364763647
12.606054,
6364863648
12.606054,
63649-
NaN
63649+
0.0
6365063650
]
6365163651
},
6365263652
"streams": null
@@ -63899,7 +63899,7 @@
6389963899
1.5061887,
6390063900
1.5061887,
6390163901
1.5061887,
63902-
NaN
63902+
0.0
6390363903
]
6390463904
},
6390563905
"streams": null
@@ -64241,7 +64241,7 @@
6424164241
5.8009138,
6424264242
5.8009138,
6424364243
5.8009138,
64244-
NaN
64244+
0.0
6424564245
]
6424664246
},
6424764247
"streams": null
@@ -64494,7 +64494,7 @@
6449464494
58.852375,
6449564495
58.852375,
6449664496
58.852375,
64497-
NaN
64497+
0.0
6449864498
]
6449964499
},
6450064500
"streams": null
@@ -64747,7 +64747,7 @@
6474764747
6.8173224,
6474864748
6.8173224,
6474964749
6.8173224,
64750-
NaN
64750+
0.0
6475164751
]
6475264752
},
6475364753
"streams": null

0 commit comments

Comments
 (0)