Пример #1
0
 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)
Пример #3
0
 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!")
Пример #5
0
    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)
Пример #7
0
    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)
Пример #8
0
    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!")