def realign_from_photodiode(self, debug=False, verbose=True): if verbose: print( '---> Realigning data with respect to photodiode signal [...] ' ) if debug: from datavyz import ges as ge success = True # extract parameters dt = 1. / self.metadata['NIdaq-acquisition-frequency'] tlim, tnew = [0, self.Screen.photodiode.t[-1]], 0 t0 = self.metadata['time_start'][0] length = self.metadata['presentation-duration'] + self.metadata[ 'presentation-interstim-period'] npulses = int(self.metadata['presentation-duration']) self.metadata['time_start_realigned'] = [] Nepisodes = np.sum(self.metadata['time_start'] < tlim[1]) for i in range(Nepisodes): cond = (self.Screen.photodiode.t >= t0 - .3) & (self.Screen.photodiode.t <= t0 + length) try: tnew, integral, threshold = find_onset_time( self.Screen.photodiode.t[cond] - t0, self.Screen.photodiode.val[cond], npulses) if debug and ((i < 3) or (i > Nepisodes - 3)): ge.plot(self.Screen.photodiode.t[cond], self.Screen.photodiode.val[cond]) ge.plot(self.Screen.photodiode.t[cond], Y=[integral, integral * 0 + threshold]) ge.show() except Exception: success = False # one exception is enough to make it fail t0 += tnew self.metadata['time_start_realigned'].append(t0) t0 += length if verbose: if success: print('[ok] --> succesfully realigned') else: print('[X] --> realignement failed') if success: self.metadata['time_start_realigned'] = np.array( self.metadata['time_start_realigned']) self.metadata['time_stop_realigned'] = self.metadata['time_start_realigned']+\ self.metadata['presentation-duration'] else: self.metadata['time_start_realigned'] = np.array([]) self.metadata['time_stop_realigned'] = np.array([]) return success
# ge.title(AX[i], "a=%.2f, k=%.2f, $\gamma$=%.2f" % (residual.x[0], residual.x[1], residual.x[2]), color=getattr(ge, color), size='small') ge.title(AX[i], "k=%.2f, $\gamma$=%.2f" % (residual.x[0], residual.x[1]), color=getattr(ge, color), size='small') ge.scatter(lum, array, ax=AX[i], color=getattr(ge, color), label='data', ms=3) ge.plot(lum, func(lum, residual.x), ax=AX[i], lw=3, alpha=.5, color=getattr(ge, color), label='fit') ge.annotate(AX[i], '$\lambda$=%s' % LAMBDA[color], (0.5, .1), color=getattr(ge, color)) ge.set_plot(AX[i], xlabel='(computer) luminosity', xticks=[0, 0.5, 1], yticks=[0, 0.5, 1], ylabel='measured I (norm.)') fig.savefig('doc/gamma-correction-%s.png' % correc) ge.show()
return pca if __name__=='__main__': from sklearn.datasets import load_breast_cancer from datavyz import ges raw, data = load_breast_cancer(), {} for i, key in enumerate(raw['feature_names']): data[key] = np.log10(raw['data'][i]) ges.features_plot(data, features=list(data.keys())[:6]) ges.cross_correl_plot(data, features=list(data.keys())[:6]) pca = PCA(data, n_components = len(data)) # desired_var_explained=0.9) ges.plot(100.*pca.explained_variance_ratio_, m='o', ms=4, xlabel='component #', ylabel='% var. expl.') ges.parallel_plot(pca.components_, fig_args=dict(figsize=(3,1))) ges.show()