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)
Example #2
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)