def temp(): self.recent_state = block_num self.log.warning('Starting %s'%(self.block_name(block_num))) if 'free_food_schedule' in self.parameters: if utils.check_time(self.parameters['free_food_schedule']): return 'free_food_block' utils.run_state_machine( start_in='init', error_state='wait', error_callback=self.error_callback, init=self._block_init('wait'), wait=self._wait_block(10, 40,'check'), check=self._check_block('flash_mid', 1, float('inf')), flash_mid=self._flash_poll(self.panel.center, 5, 'reward', 'pre_reward'), pre_reward=self._pre_reward('reward'), reward=self.reward(5, 'check2'), check2=self._check_block('wait', 1, float('inf'))) # check if its time for free food if 'free_food_schedule' in self.parameters: if utils.check_time(self.parameters['free_food_schedule']): return 'free_food_block' if not utils.check_time(self.parameters['light_schedule']): return 'sleep_block' return self.block_name(block_num + 1)
def temp(): self.recent_state = block_num self.log.warning('Starting %s' % (self.block_name(block_num))) utils.run_state_machine( start_in='init', error_state='check', error_callback=self.error_callback, init=self._block_init('check'), check=self._check_block('poll_mid', reps, revert_timeout), poll_mid=self._poll(self.panel.center, 10, 'check', 'coin_flip'), coin_flip=self._rand_state(('check_right', 'check_left')), check_right=self._check_block('poll_right', reps, revert_timeout), poll_right=self._flash_poll(self.panel.right, 10, 'check_right', 'pre_reward'), check_left=self._check_block('poll_left', reps, revert_timeout), poll_left=self._flash_poll(self.panel.left, 10, 'check_left', 'pre_reward'), pre_reward=self._pre_reward('reward'), reward=self.reward(2.5, 'check')) if not utils.check_time(self.parameters['light_schedule']): return 'sleep_block' if 'free_food_schedule' in self.parameters: if utils.check_time(self.parameters['free_food_schedule']): return 'free_food_block' if self.responded_block: return self.block_name(block_num + 1) else: return self.block_name(block_num - 1)
def temp(): self.recent_state = block_num self.log.warning('Starting %s' % (self.block_name(block_num))) if 'free_food_schedule' in self.parameters: if utils.check_time(self.parameters['free_food_schedule']): return 'free_food_block' utils.run_state_machine( start_in='init', error_state='wait', error_callback=self.error_callback, init=self._block_init('wait'), wait=self._wait_block(10, 40, 'check'), check=self._check_block('flash_mid', 1, float('inf')), flash_mid=self._flash_poll(self.panel.center, 5, 'reward', 'pre_reward'), pre_reward=self._pre_reward('reward'), reward=self.reward(5, 'check2'), check2=self._check_block('wait', 1, float('inf'))) # check if its time for free food if 'free_food_schedule' in self.parameters: if utils.check_time(self.parameters['free_food_schedule']): return 'free_food_block' if not utils.check_time(self.parameters['light_schedule']): return 'sleep_block' return self.block_name(block_num + 1)
def temp(): self.recent_state = block_num self.log.info('Starting %s'%(self.block_name(block_num))) utils.run_state_machine( start_in='init', error_state='check', error_callback=self.error_callback, init=self._block_init('check'), check=self._check_block('poll_mid', reps, revert_timeout), poll_mid=self._poll(self.panel.center, 10, 'check', 'coin_flip'), coin_flip=self._rand_state(('check_right', 'check_center', 'check_left')), check_right=self._check_block('audio_right', reps, revert_timeout), audio_right=self._play_audio('poll_right', 'R'), poll_right=self._flash_poll(self.panel.right, 10, 'check_right', 'close_audio'), check_center=self._check_block('audio_center', reps, revert_timeout), audio_center=self._play_audio('poll_center', 'C'), poll_center=self._flash_poll(self.panel.center, 10, 'check_center', 'close_audio'), check_left=self._check_block('audio_left', reps, revert_timeout), audio_left=self._play_audio('poll_left', 'L'), poll_left=self._flash_poll(self.panel.left, 10, 'check_left', 'close_audio'), close_audio=self._close_audio('pre_reward'), pre_reward=self._pre_reward('reward'), reward=self.reward(2.5, 'check')) if not utils.check_time(self.parameters['light_schedule']): return 'sleep_block' if 'free_food_schedule' in self.parameters: if utils.check_time(self.parameters['free_food_schedule']): return 'free_food_block' if self.responded_block: return self.block_name(block_num + 1) else: return self.block_name(block_num - 1)
def _check_free_food_block(self): """ Checks if it is currently a free food block """ if 'free_food_schedule' in self.parameters: if utils.check_time(self.parameters['free_food_schedule']): return True return
def temp(): self.recent_state = block_num self.log.info("Starting %s" % (self.block_name(block_num))) utils.run_state_machine( start_in="init", error_state="check", error_callback=self.error_callback, init=self._block_init("check"), check=self._check_block("poll_mid", reps, revert_timeout), poll_mid=self._poll(self.panel.center, 10, "check", "coin_flip"), coin_flip=self._rand_state(("check_right", "check_center", "check_left")), check_right=self._check_block("audio_right", reps, revert_timeout), audio_right=self._play_audio("poll_right", "R"), poll_right=self._flash_poll(self.panel.right, 10, "check_right", "close_audio"), check_center=self._check_block("audio_center", reps, revert_timeout), audio_center=self._play_audio("poll_center", "C"), poll_center=self._flash_poll(self.panel.center, 10, "check_center", "close_audio"), check_left=self._check_block("audio_left", reps, revert_timeout), audio_left=self._play_audio("poll_left", "L"), poll_left=self._flash_poll(self.panel.left, 10, "check_left", "close_audio"), close_audio=self._close_audio("pre_reward"), pre_reward=self._pre_reward("reward"), reward=self.reward(2.5, "check"), ) if not utils.check_time(self.parameters["light_schedule"]): return "sleep_block" if self.responded_block: return self.block_name(block_num + 1) else: return self.block_name(block_num - 1)
def check_session_schedule(self): """ Check the session schedule Returns ------- bool True if sessions should be running """ return utils.check_time(self.parameters['session_schedule'])
def sleep_main(self): """ reset expal parameters for the next day """ self.log.debug('sleeping...') self.panel.house_light.off() utils.wait(self.parameters['idle_poll_interval']) if not utils.check_time(self.parameters['light_schedule']): return 'main' else: return 'post'
def sleep_main(self): """ reset expal parameters for the next day """ self.log.debug("sleeping...") self.panel.house_light.off() utils.wait(self.parameters["idle_poll_interval"]) if not utils.check_time(self.parameters["light_schedule"]): return "main" else: return "post"
def temp(): if not self.responded_block: elapsed_time = (dt.datetime.now() - self.block_start).total_seconds() if elapsed_time > revert_timeout: self.log.warning("No response in block %d, reverting to block %d. Time: %s"%(self.recent_state, self.recent_state - 1, dt.datetime.now().isoformat(' '))) return None else: if self.response_counter >= reps: return None if not utils.check_time(self.parameters['light_schedule']): return None if 'free_food_schedule' in self.parameters: if utils.check_time(self.parameters['free_food_schedule']): return None if 'free_food_schedule' in self.parameters: if utils.check_time(self.parameters['free_food_schedule']): return None return next_state
def temp(): self.recent_state = block_num self.log.warning('Starting %s'%(self.block_name(block_num))) utils.run_state_machine( start_in='init', error_state='check', error_callback=self.error_callback, init=self._block_init('check'), check=self._check_block('poll_mid', reps, revert_timeout), poll_mid=self._flash_poll(self.panel.center, 10, 'check', 'pre_reward'), pre_reward=self._pre_reward('reward'), reward=self.reward(4, 'check')) if not utils.check_time(self.parameters['light_schedule']): return 'sleep_block' if 'free_food_schedule' in self.parameters: if utils.check_time(self.parameters['free_food_schedule']): return 'free_food_block' if self.responded_block: return self.block_name(block_num + 1) else: return self.block_name(block_num - 1)
def temp(): if not self.responded_block: elapsed_time = (dt.datetime.now() - self.block_start).total_seconds() if elapsed_time > revert_timeout: self.log.warning("No response in block %d, reverting to block %d. Time: %s"%(self.recent_state, self.recent_state - 1, dt.datetime.now().isoformat(' '))) return None else: if self.response_counter >= reps: return None if not utils.check_time(self.parameters['light_schedule']): return None return next_state
def free_food_main(self): """ reset expal parameters for the next day """ self.log.debug('Starting Free Food main.') utils.run_state_machine(start_in='wait', error_state='wait', error_callback=self.log_error_callback, wait=self._wait_block(5, 5, 'food'), food=self.deliver_free_food(10, 'checker'), checker=self.food_checker('wait')) if not utils.check_time(self.parameters['free_food_schedule']): return 'post' else: return 'main'
def free_food_main(self): """ reset expal parameters for the next day """ self.log.debug('Starting Free Food main.') utils.run_state_machine(start_in='wait', error_state='wait', error_callback=self.log_error_callback, wait=self._wait_block(5, 5, 'food'), food=self.deliver_free_food(10, 'checker'), checker=self.food_checker('wait') ) if not utils.check_time(self.parameters['free_food_schedule']): return 'post' else: return 'main'
def temp(): self.recent_state = block_num self.log.warning("Starting %s" % (self.block_name(block_num))) utils.run_state_machine( start_in="init", error_state="wait", error_callback=self.error_callback, init=self._block_init("wait"), wait=self._wait_block(10, 40, "check"), check=self._check_block("flash_mid", 1, float("inf")), flash_mid=self._flash_poll(self.panel.center, 5, "reward", "pre_reward"), pre_reward=self._pre_reward("reward"), reward=self.reward(5, "check2"), check2=self._check_block("wait", 1, float("inf")), ) if not utils.check_time(self.parameters["light_schedule"]): return "sleep_block" return self.block_name(block_num + 1)
def temp(): self.recent_state = block_num self.log.warning("Starting %s" % (self.block_name(block_num))) utils.run_state_machine( start_in="init", error_state="check", error_callback=self.error_callback, init=self._block_init("check"), check=self._check_block("poll_mid", reps, revert_timeout), poll_mid=self._flash_poll(self.panel.center, 10, "check", "pre_reward"), pre_reward=self._pre_reward("reward"), reward=self.reward(4, "check"), ) if not utils.check_time(self.parameters["light_schedule"]): return "sleep_block" if self.responded_block: return self.block_name(block_num + 1) else: return self.block_name(block_num - 1)
def stimulus_pre(self): # wait for bird to peck self.log.debug("presenting stimulus %s" % self.this_trial.stimulus) self.log.debug("from file %s" % self.this_trial.stimulus_event.file_origin) self.panel.speaker.queue(self.this_trial.stimulus_event.file_origin) self.log.debug('waiting for peck...') self.panel.center.on() trial_time = None while trial_time is None: if self.check_session_schedule() == False: self.panel.center.off() self.panel.speaker.stop() self.update_adaptive_queue(presented=False) raise EndSession elif 'free_food_schedule' in self.parameters: if utils.check_time(self.parameters['free_food_schedule']): self.panel.center.off() self.panel.speaker.stop() self.update_adaptive_queue(presented=False) raise EndSession else: trial_time = self.panel.center.poll(timeout=60.0) else: trial_time = self.panel.center.poll(timeout=60.0) self.this_trial.time = trial_time self.panel.center.off() self.this_trial.events.append( utils.Event( name='center', label='peck', time=0.0, )) # record trial initiation self.summary['trials'] += 1 self.summary['last_trial_time'] = self.this_trial.time.ctime() self.log.info("trial started at %s" % self.this_trial.time.ctime())
def stimulus_pre(self): # wait for bird to peck self.log.debug("presenting stimulus %s" % self.this_trial.stimulus) self.log.debug("from file %s" % self.this_trial.stimulus_event.file_origin) self.panel.speaker.queue(self.this_trial.stimulus_event.file_origin) self.log.debug('waiting for peck...') self.panel.center.on() trial_time = None while trial_time is None: if self.check_session_schedule()==False: self.panel.center.off() self.panel.speaker.stop() self.update_adaptive_queue(presented=False) raise EndSession elif 'free_food_schedule' in self.parameters: if utils.check_time(self.parameters['free_food_schedule']): self.panel.center.off() self.panel.speaker.stop() self.update_adaptive_queue(presented=False) raise EndSession else: trial_time = self.panel.center.poll(timeout=60.0) else: trial_time = self.panel.center.poll(timeout=60.0) self.this_trial.time = trial_time self.panel.center.off() self.this_trial.events.append(utils.Event(name='center', label='peck', time=0.0, ) ) # record trial initiation self.summary['trials'] += 1 self.summary['last_trial_time'] = self.this_trial.time.ctime() self.log.info("trial started at %s" % self.this_trial.time.ctime())
def check_light_schedule(self): """returns true if the lights should be on""" return utils.check_time(self.parameters['light_schedule'])
def check(self): """ Returns True if the state should be active according to this schedule """ return utils.check_time(self.time_periods)
def temp(): if 'free_food_schedule' in self.parameters: if utils.check_time(self.parameters['free_food_schedule']): return next_state return None