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): # you should not modity this function #参数初始化 self.nextoutseq = False #用来指示是否为当前sequences的最后一次闪烁 self.ExpMode = int(self.params['ExpMode']) #实验模式控制 self.ResultTask = '' #屏幕初始化 fullscreen(scale=0.3, id=int(self.params['ScreenId']))
def Preflight(self, sigprops): self.nclasses = 3 if int(self.params['AudioFeedback']) and len(self.params['FeedbackWavs']) != self.nclasses: raise EndUserError, 'FeedbackWavs matrix should have %d rows' % self.nclasses if not self.in_signal_dim[0] in (self.nclasses, self.nclasses+1): raise EndUserError,'%d- or %d-channel input expected' % (self.nclasses,self.nclasses+1) 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))
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): if self.params['Mode'][0] < 2: fullscreen(scale=float(self.params['WindowSize'])) else: fullscreen(scale=0.1)