@@ -270,7 +270,7 @@ def nan_gaussian(image: np.ndarray, sigma: float) -> np.ndarray:
270270
271271def 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