1717 asr_process
1818)
1919
20- from explorepy .filters import ExGFilter
21-
20+ from explorepy .filters import bp_filter
2221
2322
2423logger = logging .getLogger (__name__ )
@@ -138,7 +137,6 @@ def __init__(self, stream_proc, in_topic):
138137 self .instantiate_buffers ()
139138 self .is_initialized = True
140139 self .lifecycle_state = State .STABLE
141- self .filter = None
142140
143141 @property
144142 def cutoff (self ):
@@ -187,12 +185,11 @@ def on_calib_data_received(self, packet):
187185 "Error writing calibration packet, timer has not been set correctly or calibration length is invalid!"
188186 )
189187 if (time .time () - self .calib_started_at ) > self .calibration_length :
190- self .calibration_data_available = True
191188 self .stop_calibration ()
192189 return
193190 self .calibration_data_input = np .append (
194191 self .calibration_data_input ,
195- self . filter . apply ( packet , in_place = False ) .get_data ()[1 ],
192+ packet .get_data ()[1 ],
196193 axis = 1 ,
197194 )
198195
@@ -223,8 +220,10 @@ def clean_data(self):
223220 return
224221 if self .to_clean_ts [0 ][0 ] <= 1.0 :
225222 return
223+ filt_sig = bp_filter (self .to_clean .copy (), 45 , 55 , btype = 'bandstop' , fs = self .sr )
224+ filtered_data = bp_filter (filt_sig , .1 , 40 , fs = self .sr )
226225 try :
227- ret = asr_pipeline (self . to_clean , self .sr , self .ch_count , self ._state )
226+ ret = asr_pipeline (filtered_data , self .sr , self .ch_count , self ._state )
228227 self .cleaned_data_available = True
229228 idx = np .searchsorted (self .to_clean_ts [0 ], self .last_cleaned_timestamp )
230229 self .cleaned_data = ret [:, idx :]
@@ -260,12 +259,6 @@ def start_calibration(self, calib_length: float = -1.0):
260259 f"[{ self ._min_calibration_length } ,{ self ._max_calibration_length } ]" )
261260 logger .info (f"Starting ASR calibration for { self .calibration_length } s..." )
262261 self .calib_started_at = time .time ()
263- self .filter = ExGFilter (
264- cutoff_freq = (1 , 45 ),
265- filter_type = 'bandpass' ,
266- s_rate = self .sr ,
267- n_chan = self .ch_count ,
268- )
269262 self .stream_processor .subscribe (self .on_calib_data_received , topic = self .in_topic )
270263
271264 def stop_calibration (self ):
@@ -278,13 +271,16 @@ def stop_calibration(self):
278271
279272 def set_state_from_calibration_data (self , calib_data ):
280273 self .lifecycle_state = State .CLEANING
281- cleaned , state = clean_calib_data (calib_data , self .sr )
274+ filt_sig = bp_filter (calib_data , 45 , 55 , btype = 'bandstop' , fs = self .sr )
275+ filtered_data = bp_filter (filt_sig , .1 , 40 , self .sr )
276+ cleaned , state = clean_calib_data (filtered_data , self .sr )
282277 if cleaned is None :
283278 self .calibration_data_available = False
284279 self .lifecycle_state = state
285280 return
286281 try :
287282 self ._state = asr_calibrate (cleaned , self .sr , cutoff = self ._cutoff )
283+ self .calibration_data_available = True
288284 self .lifecycle_state = state
289285 except np .linalg .LinAlgError as e :
290286 self .calibration_data_available = False
0 commit comments