Пример #1
0
    def compute_design(self, name="", verbose=1):
        """Sample the formula on the grid
        
        Parameters
        ----------
        name="", string, that characterized the model name
        verbose=1, int, verbosity mode 
       
        Note: self.conditions and self.drift must be defined beforhand
        """
        if self.protocol == None:
            print "The selected session does not exists"
            return None   
        self.formula = self.conditions + self.drift
        temp = build_dmtx(self.formula, self.frametimes).T

        ## Force the design matrix to be full rank at working precision
        self._design, self._design_cond = full_rank(temp)
        
        # complete the names with the drift terms                               
        for k in range(len(self.drift.terms)-1):
           self._names.append('drift_%d'%(k+1))                            
        self._names.append('constant')

        if verbose:
           self.show()
        
        self.names = self._names
        misc = ConfigObj(self.misc_file)
        misc[self.model]["regressors_%s" % name] = self._names
        misc[self.model]["design matrix cond"] = self._design_cond
        misc.write()

        return self._design
Пример #2
0
 def compute_fir_design(self, drift=None, o=1, l=1, name=""):
     """
     deprecated
     """
     if self.protocol == None:
         print "The selected session does not exists"
         return None
     misc = ConfigObj(self.misc_file)
     temp = np.zeros((len(self.frametimes), (o * len(self.protocol.events))))
     diff = l / o
     self.names = []
     i = 0
     for event in misc["tasks"]:
         if  self.protocol.events.has_key(event):
             for j in range(o):
                 if j == 0:
                     self.names.append("%s" % (event))
                 else:
                     self.names.append("%s_d%i" % (event, j))
                 for t in self.protocol.events[event].times:
                     base = np.argmax(self.frametimes > t)
                     for k in range(diff):
                         temp[base + (k + j * diff), j + i * o] = 1
             i += 1
     self._design, self._design_cond = full_rank(temp)
     if drift == 0:
         drm = np.ones((self._design.shape[0],1))
     elif drift == cosine_drift:
         drm = cosine_matrix(self.frametimes).T
     elif drift == canonical_drift:
         drm = _drift(self.frametimes).T
     else:
         drm = drift
     drml = drm.shape[1]
     for i in range(drml):
         self.names.append('(drift:%i)' % i)
     self._design = np.column_stack((self._design, drm))
     misc[self.model]["regressors_%s" % name] = self.names
     misc.write()