示例#1
0
class Experiment(object):
    def __init__(self):
        self._connection = connect_client(type=peers.LOGIC)
        self._long_mgr = UgmConfigManager()
        self._long_mgr.update_from_file(LONG_FILE, True)
        self._word_mgr = UgmConfigManager()
        self._word_mgr.update_from_file(WORD_FILE, True)

        self.fixation = '+'
        self.mask = 'XXXXXXXXXXXXXX'
        self.available_keys = ['1', '2', '3', '4', '5']
        self.word_config = {'id': 5555, 'message': ''}
        self.img_config = {'id': 6666, 'image_path': ''}
        self.data_manager = DataManager()
        self.run_tag = {}

    def run(self):
        #time.sleep(INIT_SLEEP)
        l_saver_control = signal_saver_control.SignalSaverControl()
        l_saver_control.start_saving()
        self.send_text(u"Gotowy? Aby rozpocząć wciśnij '1'.")
        keystroke.wait(['1'])
        for i in range(self.data_manager.words_count()):
            self.send_fixation()
            self.send_mask1()
            self.send_word(self.data_manager.words[i])
            self.send_mask2()
            self.send_long_view()
            self.send_run_tag()
        self.send_text(u"Dziękujemy")
        print("ALL DONE", l_saver_control.finish_saving())

    def send_text(self, text):
        self.word_config['message'] = text
        self._word_mgr.set_config(self.word_config)
        self.send_to_ugm(self._word_mgr.config_to_message(), 0)

    def send_fixation(self):
        self.word_config['message'] = self.fixation
        self._word_mgr.set_config(self.word_config)
        self.send_to_ugm(self._word_mgr.config_to_message(), 0)

        self.run_tag['fix_start_timestamp'] = time.time()
        time.sleep(SLEEP_FIX_MIN + random.random() *
                   (SLEEP_FIX_MAX - SLEEP_FIX_MIN))
        pass

    def send_mask1(self):
        self.send_mask('mask1_start_timestamp')

    def send_mask2(self):
        self.send_mask('mask2_start_timestamp')

    def send_mask(self, tag_entry):
        self.word_config['message'] = self.mask
        self.send_to_ugm(str([self.word_config]))

        self.run_tag[tag_entry] = time.time()
        time.sleep(SLEEP_MASK)
        pass

    def send_word(self, word):
        self.word_config['message'] = word[1]
        self.send_to_ugm(str([self.word_config]))

        self.run_tag['word_start_timestamp'] = time.time()
        self.run_tag['word_message'] = word[1]
        self.run_tag['word_group'] = word[0]
        time.sleep(SLEEP_WORD)

    def send_long_view(self):
        self.img_config['image_path'] = self.data_manager.next_image()
        self._long_mgr.set_config(self.img_config)
        self.send_to_ugm(self._long_mgr.config_to_message(), 0)
        start = time.time()
        # Now wait for user input
        key = keystroke.wait(self.available_keys)
        end = time.time()
        self.run_tag['key_start_timestamp'] = start
        self.run_tag['key_end_timestamp'] = end
        self.run_tag['key_answer'] = key
        #time.sleep(SLEEP_LONG)
    def send_run_tag(self):
        now = time.time()
        TAGGER.send_tag(now, now, 'experiment_run', self.run_tag)

    def send_to_ugm(self, config_value, msg_type=1):
        l_type = msg_type
        l_msg = variables_pb2.UgmUpdate()
        l_msg.type = int(l_type)
        l_msg.value = config_value
        self._connection.send_message(message=l_msg.SerializeToString(),
                                      type=types.UGM_UPDATE_MESSAGE,
                                      flush=True)
示例#2
0
class Experiment(object):
    def __init__(self):
        self._connection = connect_client(type = peers.LOGIC)
        self._long_mgr = UgmConfigManager()
        self._long_mgr.update_from_file(LONG_FILE, True)
        self._word_mgr = UgmConfigManager()
        self._word_mgr.update_from_file(WORD_FILE, True) 

        self.fixation = '+'
        self.mask = 'XXXXXXXXXXXXXX'
        self.available_keys = ['1','2','3','4','5']
        self.word_config = {'id':5555, 'message':''}
        self.img_config = {'id':6666, 'image_path':''}
        self.data_manager = DataManager()
        self.run_tag = {}
    def run(self):
        #time.sleep(INIT_SLEEP)
        l_saver_control = signal_saver_control.SignalSaverControl()
        l_saver_control.start_saving()
        self.send_text(u"Gotowy? Aby rozpocząć wciśnij '1'.")
        keystroke.wait(['1'])
        for i in range(self.data_manager.words_count()):
            self.send_fixation()
            self.send_mask1()
            self.send_word(self.data_manager.words[i])
            self.send_mask2()
            self.send_long_view()
            self.send_run_tag()
        self.send_text(u"Dziękujemy")
        print("ALL DONE", l_saver_control.finish_saving())

    def send_text(self, text):
        self.word_config['message'] = text
        self._word_mgr.set_config(self.word_config)
        self.send_to_ugm(self._word_mgr.config_to_message(), 0)

    def send_fixation(self):
        self.word_config['message'] = self.fixation
        self._word_mgr.set_config(self.word_config)
        self.send_to_ugm(self._word_mgr.config_to_message(), 0)

        self.run_tag['fix_start_timestamp'] = time.time()
        time.sleep(SLEEP_FIX_MIN + random.random()*(SLEEP_FIX_MAX-SLEEP_FIX_MIN))
        pass
    def send_mask1(self):
        self.send_mask('mask1_start_timestamp')
    def send_mask2(self):
        self.send_mask('mask2_start_timestamp')
    def send_mask(self, tag_entry):
        self.word_config['message'] = self.mask
        self.send_to_ugm(str([self.word_config]))

        self.run_tag[tag_entry] = time.time()
        time.sleep(SLEEP_MASK)
        pass
    def send_word(self, word):
        self.word_config['message'] = word[1]
        self.send_to_ugm(str([self.word_config]))

        self.run_tag['word_start_timestamp'] = time.time()
        self.run_tag['word_message'] = word[1]
        self.run_tag['word_group'] = word[0]
        time.sleep(SLEEP_WORD)

    def send_long_view(self):
        self.img_config['image_path'] = self.data_manager.next_image()
        self._long_mgr.set_config(self.img_config)
        self.send_to_ugm(self._long_mgr.config_to_message(), 0)
        start = time.time()
        # Now wait for user input
        key = keystroke.wait(self.available_keys)
        end = time.time()
        self.run_tag['key_start_timestamp'] = start
        self.run_tag['key_end_timestamp'] = end
        self.run_tag['key_answer'] = key
        #time.sleep(SLEEP_LONG)
    def send_run_tag(self):
        now = time.time()
        TAGGER.send_tag(now, now, 'experiment_run', self.run_tag)

    def send_to_ugm(self, config_value, msg_type=1):
        l_type = msg_type
        l_msg = variables_pb2.UgmUpdate()
        l_msg.type = int(l_type)
        l_msg.value = config_value
        self._connection.send_message(
            message = l_msg.SerializeToString(), 
            type=types.UGM_UPDATE_MESSAGE, flush=True)