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)
Exemple #2
0
        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)
Exemple #3
0
        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)
Exemple #5
0
 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
Exemple #6
0
 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)
Exemple #7
0
 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 check_session_schedule(self):
        """ Check the session schedule

        Returns
        -------
        bool
            True if sessions should be running
        """
        return utils.check_time(self.parameters['session_schedule'])
Exemple #9
0
 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'
Exemple #10
0
 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'
Exemple #11
0
 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"
Exemple #12
0
    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 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)
Exemple #15
0
 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
Exemple #16
0
    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'
Exemple #17
0
    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'
Exemple #18
0
 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)
Exemple #19
0
 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)
Exemple #20
0
    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())
Exemple #22
0
 def check_light_schedule(self):
     """returns true if the lights should be on"""
     return utils.check_time(self.parameters['light_schedule'])
Exemple #23
0
    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
Exemple #25
0
 def check_light_schedule(self):
     """returns true if the lights should be on"""
     return utils.check_time(self.parameters['light_schedule'])
Exemple #26
0
 def temp():
     if 'free_food_schedule' in self.parameters:
         if utils.check_time(self.parameters['free_food_schedule']):
             return next_state
     return None