def _send_freqs(self, freqs, target_ind): appliance_helper.send_freqs(self.conn, freqs) t = time.time() tags_helper.send_tag(self.conn, t, t, "diodes", {'freq':freqs[target_ind], 'freqs':freqs, 'field':target_ind, 'duration':self.target_time }) time.sleep(self.target_time)
def _send_freqs(self, freqs, target_ind): appliance_helper.send_freqs(self.conn, freqs) t = time.time() tags_helper.send_tag( self.conn, t, t, "diodes", {"freq": freqs[target_ind], "freqs": freqs, "field": target_ind, "duration": self.target_time}, ) time.sleep(self.target_time)
def _send_freqs(self, freqs, target_ind): appliance_helper.send_freqs(self.conn, freqs) t = time.time() tags_helper.send_tag( self.conn, t, t, "diodes", { 'freq': freqs[target_ind], 'freqs': freqs, 'field': target_ind, 'duration': self.target_time }) time.sleep(self.target_time)
def __init__(self, addresses): #Create a helper object to get configuration from the system super(BCISsvepCsp, self).__init__(addresses=addresses, type=peers.SSVEP_ANALYSIS) #get stats from file cfg = self._get_csp_config() montage_matrix = self._get_montage_matrix(cfg) freqs = [int(f) for f in cfg['freqs'].split(';')] str_freqs = [str(f) for f in freqs] self.logger.info("freqs:"+str(freqs)) sampling = int(self.config.get_param('sampling_rate')) buffer = int(float(cfg['buffer'])*sampling) maybe_buffer = self.config.get_param('buffer_len') if len(maybe_buffer) > 0: old_buffer = buffer buffer = int(float(maybe_buffer)*sampling) self.logger.info("Overwrite buffer from csp:"+str(old_buffer)+" with from config:"+str(buffer)) #Create analysis object to analyse data self.analysis = self._get_analysis(self.send_decision, freqs, cfg, montage_matrix) #Initialise round buffer that will supply analysis with data #See auto_ring_buffer documentation channels_count = len(self.config.get_param('channel_names').split(';')) self.buffer = auto_ring_buffer.AutoRingBuffer( from_sample=buffer, samples_count=buffer, every=int(float(self.config.get_param('buffer_every'))*sampling), num_of_channels=channels_count, ret_func=self.analysis.analyse, ret_format=self.config.get_param('buffer_ret_format'), copy_on_ret=int(self.config.get_param('buffer_copy_on_ret')) ) self.hold_after_dec = float(self.config.get_param('hold_after_dec')) if DEBUG: self.debug = streaming_debug.Debug(int(self.config.get_param('sampling_rate')), self.logger, int(self.config.get_param('samples_per_packet'))) self._last_dec_time = time.time() + 5 #sleep 5 first seconds.. self.ready() appliance_helper.send_freqs(self.conn, str_freqs) self.logger.info("BCIAnalysisServer init finished!")
def __init__(self, addresses): #Create a helper object to get configuration from the system super(BCISsvepCsp, self).__init__(addresses=addresses, type=peers.SSVEP_ANALYSIS) #get stats from file cfg = self._get_csp_config() montage_matrix = self._get_montage_matrix(cfg) freqs = [int(f) for f in cfg['freqs'].split(';')] str_freqs = [str(f) for f in freqs] self.logger.info("freqs:" + str(freqs)) sampling = int(self.config.get_param('sampling_rate')) buffer = int(float(cfg['buffer']) * sampling) maybe_buffer = self.config.get_param('buffer_len') if len(maybe_buffer) > 0: old_buffer = buffer buffer = int(float(maybe_buffer) * sampling) self.logger.info("Overwrite buffer from csp:" + str(old_buffer) + " with from config:" + str(buffer)) #Create analysis object to analyse data self.analysis = self._get_analysis(self.send_decision, freqs, cfg, montage_matrix) #Initialise round buffer that will supply analysis with data #See auto_ring_buffer documentation channels_count = len(self.config.get_param('channel_names').split(';')) self.buffer = auto_ring_buffer.AutoRingBuffer( from_sample=buffer, samples_count=buffer, every=int(float(self.config.get_param('buffer_every')) * sampling), num_of_channels=channels_count, ret_func=self.analysis.analyse, ret_format=self.config.get_param('buffer_ret_format'), copy_on_ret=int(self.config.get_param('buffer_copy_on_ret'))) self.hold_after_dec = float(self.config.get_param('hold_after_dec')) if DEBUG: self.debug = streaming_debug.Debug( int(self.config.get_param('sampling_rate')), self.logger, int(self.config.get_param('samples_per_packet'))) self._last_dec_time = time.time() + 5 #sleep 5 first seconds.. self.ready() appliance_helper.send_freqs(self.conn, str_freqs) self.logger.info("BCIAnalysisServer init finished!")
def run(self): self.logger.info("RUN!!!") #process intro #ugm_helper.send_text(self.conn, self.hi_text) ugm_helper.send_config(self.conn, self.ugm) ugm_helper.send_config_for(self.conn, self.text_id, 'message', self.hi_text) #keystroke.wait([" "]) time.sleep(15) #ugm_helper.send_text(self.conn, self.trial_text) ugm_helper.send_config_for(self.conn, self.text_id, 'message', self.trial_text) time.sleep(15) #keystroke.wait([" "]) ugm_helper.send_config(self.conn, self.ugm) appliance_helper.send_freqs(self.conn, self.all_freqs[:int(self.config.get_param("fields_count"))]) #ugm_helper.send_config(self.conn, self.ugm) ugm_helper.send_config_for(self.conn, self.text_ids[1], 'message', self.feed_text) time.sleep(self.target_time) appliance_helper.send_stop(self.conn) #ugm_helper.send_text(self.conn, self.ready_text) ugm_helper.send_config(self.conn, self.ugm) ugm_helper.send_config_for(self.conn, self.text_id, 'message', self.ready_text) time.sleep(15) #keystroke.wait([" "]) self.logger.info("Send begin config ...") #ugm_helper.send_config(self.conn, self.ugm) #process trials self._run() #process good bye appliance_helper.send_stop(self.conn) #ugm_helper.send_text(self.conn, self.bye_text) ugm_helper.send_config_for(self.conn, self.text_id, 'message', self.bye_text) #acquire some more data time.sleep(2) self.logger.info("Send finish saving and finish ...") acquisition_helper.send_finish_saving(self.conn)
def __init__(self, addresses): #Create a helper object to get configuration from the system super(BCISsvepCsp, self).__init__(addresses=addresses, type=peers.SSVEP_ANALYSIS) #get stats from file cfg = self._get_csp_config() montage_matrix = self._get_montage_matrix(cfg) freqs = [int(f) for f in cfg['freqs'].split(';')] dec_count = int(self.config.get_param('dec_count')) active_field_ids = self.config.get_param('active_field_ids') self.active_field_ids = [str(f) for f in active_field_ids.split(';')] str_freqs = [str(0)] * len(self.get_param('ugm_field_ids').split(';')) str_freqs[1] = str(100) #TODO fix fix fix, useful only for ssvep maze app ..... for index1, index2 in enumerate(self.active_field_ids): str_freqs[int(index2)] = str(freqs[index1]) self.str_freqs = (';').join(str_freqs) if len(freqs) != dec_count: raise Exception("Configuration inconsistency! logic dec_count is different from number of decisions to-be-sent from obci.analysis (len(freqs))...."+str(len(freqs))+" != "+str(dec_count)) sampling = int(self.config.get_param('sampling_rate')) tmp_buf = float(cfg['buffer']) if tmp_buf < 2.0: self.logger.warning("CSP config has buf len smaller than 2.0!, precisely: "+str(tmp_buf)+" Lets make it 2.0...") tmp_buf = 2.0 buffer = int(tmp_buf*sampling) maybe_buffer = self.config.get_param('buffer_len') if len(maybe_buffer) > 0: old_buffer = buffer buffer = int(float(maybe_buffer)*sampling) self.logger.info("Overwrite buffer from csp:"+str(old_buffer)+" with from config:"+str(buffer)) #Create analysis object to analyse data self.analysis = self._get_analysis(self.send_decision, freqs, cfg, montage_matrix) #Initialise round buffer that will supply analysis with data #See auto_ring_buffer documentation channels_count = len(self.config.get_param('channel_names').split(';')) self.buffer = auto_ring_buffer.AutoRingBuffer( from_sample=buffer, samples_count=buffer, every=int(float(self.config.get_param('buffer_every'))*sampling), num_of_channels=channels_count, ret_func=self.analysis.analyse, ret_format=self.config.get_param('buffer_ret_format'), copy_on_ret=int(self.config.get_param('buffer_copy_on_ret')) ) self.hold_after_dec = float(self.config.get_param('hold_after_dec')) if DEBUG: self.debug = streaming_debug.Debug(int(self.config.get_param('sampling_rate')), self.logger, int(self.config.get_param('samples_per_packet'))) self._last_dec_time = time.time() + 5 #sleep 5 first seconds.. self.ready() appliance_helper.send_freqs(self.conn, str_freqs) self.logger.info("BCIAnalysisServer init finished!")