示例#1
0
 def draw_splash(self):
     if game.run_count < game.runs_per_experiment:
         splash_msg = ('Ready for Run ' + str(game.run_count+1)
                       + ' of ' + str(game.runs_per_experiment))
     else:
         splash_msg = ('Done!')
     gg.draw_msg(self.screen, splash_msg,
                 loc='center', pos=(.5*self.SCREEN_WIDTH,
                                    .5*self.SCREEN_HEIGHT), size=50)
     gg.draw_msg(self.screen, ('mode: ' + game.mode),
                 loc='right', pos=(.975*self.SCREEN_WIDTH,
                                   .05*self.SCREEN_HEIGHT), size=24)
示例#2
0
 def draw_background(self):
     self.screen.fill(self.bg_color)
     if self.run_mode == 'idle' and self.loc == 'lab':
         instr_msg = ('Press Space for Run ' + str(self.trial_type_count+1)
                      + ' of ' + str(self.TRIAL_TYPES))
         gg.draw_msg(self.screen, instr_msg,
                     loc='center', pos=(.5*self.SCREEN_WIDTH,
                                        .5*self.SCREEN_HEIGHT), size=48)
     if self.next_run_msg != '':
         gg.draw_msg(self.screen, self.next_run_msg,
                     loc='center', pos=(.5*self.SCREEN_WIDTH,
                                        .4*self.SCREEN_HEIGHT), size=48)
示例#3
0
 def draw_instructions_timed(self):
     if self.next_visible:
         top_msg = 'Target visible'
         top_color = self.GOOD_MSG_COLOR
     else:
         top_msg = 'Target invisible'
         top_color = self.BAD_MSG_COLOR
     if self.next_ir == 'impulse':
         btm_msg = 'Instant feedback'
         btm_color = self.GOOD_MSG_COLOR
     else:
         btm_msg = 'Delayed feedback'
         btm_color = self.BAD_MSG_COLOR
     gg.draw_msg(self.screen, top_msg,
                 color=top_color,
                 center=(self.screen_mid[0],
                         self.screen_mid[1]-50))
     gg.draw_msg(self.screen, btm_msg,
                 color=btm_color,
                 center=(self.screen_mid[0],
                         self.screen_mid[1]+50))
示例#4
0
    def draw_instructions_block(self):
        if self.next_target == 'new':
            top_msg = 'New target'
            top_color = self.GOOD_MSG_COLOR
        else:
            top_msg = 'Same target'
            top_color = self.BAD_MSG_COLOR

        if self.next_feedback == 'continuous':
            mid_msg = 'Continuous feedback'
            mid_color = self.A_MSG_COLOR
        else:
            mid_msg = 'Intermittent feedback'
            mid_color = self.B_MSG_COLOR

        if self.next_noise == 'good':
            btm_msg = 'Good signal'
            btm_color = self.A_MSG_COLOR
        else:
            btm_msg = 'Bad signal'
            btm_color = self.B_MSG_COLOR

        gg.draw_msg(self.screen, top_msg,
                    color=top_color,
                    center=(self.screen_mid[0],
                            self.screen_mid[1]-75))
        gg.draw_msg(self.screen, mid_msg,
                    color=mid_color,
                    center=(self.screen_mid[0],
                            self.screen_mid[1]))
        if not self.playback_bool:
            gg.draw_msg(self.screen, btm_msg,
                        color=btm_color,
                        center=(self.screen_mid[0],
                                self.screen_mid[1]+75))
示例#5
0
 def draw_debug(self, time_passed):
     fr = 1000/float(time_passed)
     fr_msg = 'frame rate: ' + str(fr)
     gg.draw_msg(self.screen, fr_msg,
                 loc='left', pos=(10,33), size=28)
     force = self.daq.get_force()
     volt_msg_1 = 'out_volt_1: ' + str(force[0])
     volt_msg_2 = 'out_volt_2: ' + str(force[1])
     gg.draw_msg(self.screen, volt_msg_1,
                 loc='left', pos=(10,66), size=28)
     gg.draw_msg(self.screen, volt_msg_2,
                 loc='left', pos=(10,99), size=28)
示例#6
0
    def draw_debug(self, time_passed):
        fr = 1000/float(time_passed)
        fr_msg = 'frame rate: ' + str(fr)
        x_v_msg = 'x force: ' + str(self.input_force[0])
        y_v_msg = 'y force: ' + str(self.input_force[1])
        betas_active_msg = 'active beta: ' + str(self.psc_betas['active'])
        betas_force_msg = 'force beta: ' + str(self.psc_betas['force'])
        betas_complexity_msg = 'complexity beta: ' + str(self.psc_betas['complexity'])
        lvr_msg = 'last vol: ' + str(self.last_volume_received.value)

        gg.draw_msg(self.screen, fr_msg,
                    loc='left', pos=(10,33), size=28)
        gg.draw_msg(self.screen, x_v_msg,
                    loc='left', pos=(10,66), size=28)
        gg.draw_msg(self.screen, y_v_msg,
                    loc='left', pos=(10,99), size=28)
        gg.draw_msg(self.screen, betas_active_msg,
                    loc='left', pos=(10,132), size=28)
        gg.draw_msg(self.screen, betas_force_msg,
                    loc='left', pos=(10,165), size=28)
        gg.draw_msg(self.screen, betas_complexity_msg,
                    loc='left', pos=(10,198), size=28)
        gg.draw_msg(self.screen, lvr_msg,
                    loc='left', pos=(10,231), size=28)

        if self.CALIBRATE_BOOL:
            self.cal_force = self.daq.force_transform_cal(
                                        self.daq.get_volts_cal())
            z_v_msg = 'z lbs: ' + str(self.cal_force)
            gg.draw_msg(self.screen, z_v_msg,
                        loc='left', pos=(10,231), size=28)
            fu.cal_record(self, self.f_cal)
示例#7
0
 def draw_splash(self):
     if game.run_count < game.runs_per_experiment:
         splash_msg = ('Ready for Run ' + str(game.run_count+1)
                       + ' of ' + str(game.runs_per_experiment))
     else:
         splash_msg = ('Done!')
     gg.draw_msg(self.screen, splash_msg,
                 loc='center', pos=(.5*self.SCREEN_WIDTH,
                                    .5*self.SCREEN_HEIGHT), size=50)
     gg.draw_msg(self.screen, ('mode: ' + game.mode),
                 loc='right', pos=(.975*self.SCREEN_WIDTH,
                                   .05*self.SCREEN_HEIGHT), size=24)
     if game.run_count > 0:
         points_msg = ('Points this run: ' + str(game.points_total))
         time_msg = ('Average movement time: ' + str(round(np.mean(
                         game.execution_time_array)/1000.,2)) + ' seconds')
         error_rate = np.mean(game.error_array)
         error_msg = ('Percent errors: ' + str(round(100*error_rate,1)) + '%')
         if game.run_count < game.runs_per_experiment:
             if error_rate > game.ERROR_CUTOFF:
                 advice_msg = 'For the next run, try slowing down.'
             else:
                 advice_msg = 'For the next run, try going faster.'
         else:
             advice_msg = ''
         if game.mode != 'scan':
             gg.draw_msg(self.screen, points_msg,
                         loc='center', pos=(.5*self.SCREEN_WIDTH,
                                            .6*self.SCREEN_HEIGHT), size=35)
             gg.draw_msg(self.screen, time_msg,
                         loc='center', pos=(.5*self.SCREEN_WIDTH,
                                            .7*self.SCREEN_HEIGHT), size=35)
             gg.draw_msg(self.screen, error_msg,
                         loc='center', pos=(.5*self.SCREEN_WIDTH,
                                            .8*self.SCREEN_HEIGHT), size=35)
             gg.draw_msg(self.screen, advice_msg,
                         loc='center', pos=(.5*self.SCREEN_WIDTH,
                                            .9*self.SCREEN_HEIGHT), size=35)