def Preflight(self, sigprops): #Setup screen siz = float(self.params['WindowSize']) screenid = int(self.params['ScreenId']) # ScreenId 0 is the first screen, 1 the second, -1 the last fullscreen(scale=siz, id=screenid, frameless_window=(siz==1)) # only use a borderless window if the window is set to fill the whole screen self.nclasses = len(self.params['GoCueText'])#Must be defined in Preflight because it is used by extension preflight. n_trials = self.params['TrialsPerBlock'].val * self.params['BlocksPerRun'].val trials_per_class = int(n_trials / self.nclasses) if self.params['ClusterTargets'].val>0 and not (trials_per_class % self.params['ClusterTargets'].val == 0): raise EndUserError, "ClusterTargets must be a integer factor of the number of trials per target" #If using gating or visual feedback, check that the target ranges make sense. if ('GatingEnable' in self.params and int(self.params['GatingEnable'].val) or ('ContFeedbackEnable' in self.params and self.params['ContFeedbackEnable'].val)==1): targrange=self.params['TargetRange'].val if targrange.shape[0] != self.nclasses: raise EndUserError, "TargetRange must have entries for each target" if targrange.shape[1]!=2: raise EndUserError, "TargetRange must have Min and Max values" if any([ar[(0,0)] > ar[(0,1)] for ar in targrange]): raise EndUserError, "TargetRange must be in increasing order" self.target_range=np.asarray(targrange,dtype='float64') if 'GatingEnable' in self.params: GatingApp.preflight(self, sigprops) if 'MSEnable' in self.params: MagstimApp.preflight(self, sigprops) if 'DigitimerEnable' in self.params: DigitimerApp.preflight(self, sigprops) if 'ERPDatabaseEnable' in self.params: ERPApp.preflight(self, sigprops) if 'ContFeedbackEnable' in self.params: FeedbackApp.preflight(self, sigprops)
def Preflight(self, sigprops): #Setup screen siz = float(self.params['WindowSize']) screenid = int( self.params['ScreenId'] ) # ScreenId 0 is the first screen, 1 the second, -1 the last fullscreen( scale=siz, id=screenid, frameless_window=(siz == 1) ) # only use a borderless window if the window is set to fill the whole screen self.nclasses = len( self.params['GoCueText'] ) #Must be defined in Preflight because it is used by extension preflight. n_trials = self.params['TrialsPerBlock'].val * self.params[ 'BlocksPerRun'].val trials_per_class = int(n_trials / self.nclasses) if self.params['ClusterTargets'].val > 0 and not ( trials_per_class % self.params['ClusterTargets'].val == 0): raise EndUserError, "ClusterTargets must be a integer factor of the number of trials per target" #If using gating or visual feedback, check that the target ranges make sense. if ('GatingEnable' in self.params and int(self.params['GatingEnable'].val) or ('ContFeedbackEnable' in self.params and self.params['ContFeedbackEnable'].val) == 1): targrange = self.params['TargetRange'].val if targrange.shape[0] != self.nclasses: raise EndUserError, "TargetRange must have entries for each target" if targrange.shape[1] != 2: raise EndUserError, "TargetRange must have Min and Max values" if any([ar[(0, 0)] > ar[(0, 1)] for ar in targrange]): raise EndUserError, "TargetRange must be in increasing order" self.target_range = np.asarray(targrange, dtype='float64') if 'GatingEnable' in self.params: GatingApp.preflight(self, sigprops) if 'MSEnable' in self.params: MagstimApp.preflight(self, sigprops) if 'DigitimerEnable' in self.params: DigitimerApp.preflight(self, sigprops) if 'ERPDatabaseEnable' in self.params: ERPApp.preflight(self, sigprops) if 'ContFeedbackEnable' in self.params: FeedbackApp.preflight(self, sigprops)