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
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()