@@ -313,6 +313,8 @@ def nan_basic_interp(array):
313313 array [nans ] = np .interp (ix (nans ), ix (~ nans ), array [~ nans ])
314314 return array
315315
316+ data_clean = data .copy ()
317+
316318 freq_rn = [fline - win_sz , fline + win_sz ]
317319 freq_sp = [fline - spot_sz , fline + spot_sz ]
318320 freq , psd = welch (data , fs = sfreq , nfft = nfft , axis = 0 )
@@ -338,8 +340,8 @@ def nan_basic_interp(array):
338340 aggr_resid = []
339341 iterations = 0
340342 while iterations < n_iter_max :
341- data , _ = dss_line (data , fline , sfreq , nfft = nfft , nremove = 1 )
342- freq , psd = welch (data , fs = sfreq , nfft = nfft , axis = 0 )
343+ data_clean , _ = dss_line (data_clean , fline , sfreq , nfft = nfft , nremove = 1 )
344+ freq , psd = welch (data_clean , fs = sfreq , nfft = nfft , axis = 0 )
343345 if psd .ndim == 3 :
344346 mean_psd = np .mean (psd , axis = (1 , 2 ))[freq_rn_ix ]
345347 elif psd .ndim == 2 :
@@ -396,6 +398,9 @@ def nan_basic_interp(array):
396398 plt .show ()
397399
398400 if mean_score <= 0 :
401+ # Return original data if score is negative on first iteration
402+ if iterations == 0 :
403+ return data , 0
399404 break
400405
401406 iterations += 1
@@ -404,4 +409,4 @@ def nan_basic_interp(array):
404409 raise RuntimeError ("Could not converge. Consider increasing the "
405410 "maximum number of iterations" )
406411
407- return data , iterations
412+ return data_clean , iterations
0 commit comments