Esempio n. 1
0
    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
Esempio n. 2
0
 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()
Esempio n. 3
0
 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()
Esempio n. 4
0
 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
Esempio n. 5
0
 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)
Esempio n. 6
0
    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