def _get_staircase(self): pattern = self.paths['data'] + '%s_test.csv' df = exp.get_behav_df(subjid=self.info['subjid'], pattern=pattern) df = df[df.corr_resp == 'diff'] df_thres_all = [] df['thres'] = 0. gr = PercLearn(info=self.info) for subj in np.unique(df.subjid): subjdf = df[df.subjid == subj] for sid in subjdf.session.unique(): sdf = subjdf[subjdf.session == sid] for pos in sdf.pos.unique(): posdf = sdf[sdf.pos == pos] st_mod = _TestQuest(gr) st_mod.get_blocks() # get staircases from st_mod exps = dict((st.name, st) for st in st_mod.blocks) exps[pos].importData( posdf.oridiff.astype(float), np.array(posdf.corr_resp == posdf.subj_resp)) posdf.thres = exps[pos].mean() df_thres_all.append(posdf) df_thres = pandas.concat(df_thres_all) return df_thres
def test(self): """Analysis of the test phase data """ pattern = self.paths['data'] + '%s_test.csv' df = exp.get_behav_df(self.info['subjid'], pattern=pattern) agg_acc = stats.accuracy(df, rows='session', cols='pos', values='accuracy', yerr='subjid') plt = plot.Plot() plt.plot(agg_acc) plt.show()
def test(self): """Analysis of the test phase data (for 2AFC task) """ pattern = self.paths['data'] + '%s_test.csv' df = exp.get_behav_df(self.info['subjid'], pattern=pattern) agg_acc = stats.accuracy(df, rows='session', cols='pos', values='accuracy', yerr='subjid') plt = plot.Plot() plt.plot(agg_acc) plt.show()
def train_feedback(self, session): pattern = self.paths['data'] + '%s_train.csv' try: df = exp.get_behav_df(self.info['subjid'], pattern=pattern) except: return 0 else: #df = pandas.DataFrame(trial_list) df = df[df.session == session] df = self._train_acc(df) cor = np.sum(df.accuracy == 'correct') acc = float(cor) / (np.sum(df.accuracy == 'miss') + cor) return acc
def train(self): pattern = self.paths['data'] + '%s_train.csv' df = exp.get_behav_df(self.info['subjid'], pattern=pattern) dfs = [] for session in df.session.unique(): sdf = df[df.session == session] dfs.append(self._train_acc(sdf)) df = pandas.concat(dfs) agg_acc = stats.accuracy(df, cols='session', values='accuracy', yerr='subjid', incorrect='miss') self.plot(agg_acc)
def _get_staircase(self): pattern = self.paths['data'] + '%s.csv' df = exp.get_behav_df(subjid=self.info['subjid'], pattern=pattern) df_thres_all = [] df['thres'] = 0. for subj in np.unique(df.subjid): subjdf = df[df.subjid == subj] for pos in subjdf.pos.unique(): posdf = subjdf[subjdf.pos == pos] st_mod = Staircase() st_mod.get_blocks() # get staircases from st_mod exps = dict((st.name, st) for st in st_mod.blocks) exps[pos].importData(posdf.oridiff.astype(float), np.array(posdf.corr_resp==posdf.subj_resp)) posdf.thres = exps[pos].mean() df_thres_all.append(posdf) df_thres = pandas.concat(df_thres_all) return df_thres