@@ -413,6 +413,35 @@ def icovf(self, channels):
413413 return None
414414
415415
416+ def is_signal_stored (self , channels ):
417+ """
418+ Check if signals have been stored for a specific
419+ channel (or multiple channels)
420+
421+ Parameters
422+ ----------
423+ channel : str or array-like
424+ single channel: channel name
425+ multi channels: array-like or "|" separated string
426+ such as "channel1|channel2"
427+
428+ Return
429+ ------
430+ is_stored : boolean
431+ if all signals stored return True
432+ """
433+
434+ if self ._nbins is None :
435+ return False
436+
437+ channel_list = convert_channel_name_to_list (channels )
438+
439+ for ichan , chan in enumerate (channel_list ):
440+ if chan not in self ._signals :
441+ return False
442+
443+ return True
444+
416445 def signal (self , channels , squeeze_array = False ):
417446 """
418447 Get signal trace(s) in time domain
@@ -1297,7 +1326,9 @@ def update_signal(self, channels, signals,
12971326 raise ValueError (f'ERROR: number of channels ({ nchans } ) '
12981327 f'does not match signal array ({ nchans_array } )' )
12991328
1300- if (nbins_array != self ._nbins ):
1329+ if self ._nbins is None :
1330+ self ._nbins = nbins_array
1331+ elif (nbins_array != self ._nbins ):
13011332 raise ValueError (f'ERROR:Inconsistent number of samples '
13021333 f'between signal ({ nbins_array } ) '
13031334 f'and template/psd ({ self ._nbins } )' )
@@ -1327,8 +1358,14 @@ def update_signal(self, channels, signals,
13271358 if calc_fft :
13281359 f , signal_fft = fft (signal , self ._fs , axis = - 1 )
13291360 self ._signals_fft [chan ] = signal_fft / self ._nbins
1361+
1362+ if self ._fft_freqs is None :
1363+ self ._fft_freqs = f
1364+ elif (not np .array_equal (self ._fft_freqs ,f )):
1365+ raise ValueError (f'ERROR:Inconsistent frequency array '
1366+ f'between signal and template/psd' )
1367+
13301368
1331-
13321369 def calc_phi (self , channels , template_tag = None ,
13331370 calc_weight = True ):
13341371 """
0 commit comments