Skip to content

Commit 01fe236

Browse files
committed
allow interpolator to infill nan values
1 parent 1d1f618 commit 01fe236

1 file changed

Lines changed: 9 additions & 1 deletion

File tree

punchbowl/util.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ def nan_gaussian(image: np.ndarray, sigma: float) -> np.ndarray:
270270

271271
def interpolate_data(data_before: NDCube, data_after:NDCube, reference_time: datetime, time_key: str = "DATE-OBS",
272272
allow_extrapolation: bool = False, and_uncertainty: bool = False,
273-
) -> np.ndarray | tuple[np.ndarray, np.ndarray]:
273+
infill_nans: bool = False) -> np.ndarray | tuple[np.ndarray, np.ndarray]:
274274
"""Interpolates between two data objects."""
275275
before_date = parse_datetime(data_before.meta[time_key].value + " UTC").timestamp()
276276
after_date = parse_datetime(data_after.meta[time_key].value + " UTC").timestamp()
@@ -296,10 +296,18 @@ def interpolate_data(data_before: NDCube, data_after:NDCube, reference_time: dat
296296
data_interpolated = ((data_after.data - data_before.data)
297297
* (observation_date - before_date) / (after_date - before_date)
298298
+ data_before.data)
299+
if infill_nans:
300+
data_before_nan = np.isnan(data_before.data)
301+
data_after_nan = np.isnan(data_after.data)
302+
data_interpolated[data_before_nan] = data_after.data[data_before_nan]
303+
data_interpolated[data_after_nan] = data_before.data[data_after_nan]
299304
if and_uncertainty:
300305
uncert_interpolated = ((data_after.uncertainty.array - data_before.uncertainty.array)
301306
* (observation_date - before_date) / (after_date - before_date)
302307
+ data_before.uncertainty.array)
308+
if infill_nans:
309+
uncert_interpolated[data_before_nan] = data_after.uncertainty.array[data_before_nan]
310+
uncert_interpolated[data_after_nan] = data_before.uncertainty.array[data_after_nan]
303311

304312
if and_uncertainty:
305313
return data_interpolated, uncert_interpolated

0 commit comments

Comments
 (0)