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)
示例#2
0
    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):
		
		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))
示例#5
0
    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)
示例#6
0
 def Preflight(self, sigprops):
     if self.params['Mode'][0] < 2:
         fullscreen(scale=float(self.params['WindowSize']))
     else:
         fullscreen(scale=0.1)