diff --git a/signal_detection.py b/signal_detection.py index a8e2bb0d6bb8ceb093005b6a6df095fb8dd6aa73..722c27166d36be196886ef64c29188b8e39116b2 100644 --- a/signal_detection.py +++ b/signal_detection.py @@ -108,6 +108,7 @@ def setup(intensity,task,DEBUG=False): def run_block(subject,intensity,p=0.5,num_of_blocks=1,task='yes-no',DEBUG=False): from psychopy import core, visual, event, monitors, logging data = load_data(subject) + data_list = [] if len(data)>0: block = data['block'].max()+1 else: @@ -210,13 +211,18 @@ def run_block(subject,intensity,p=0.5,num_of_blocks=1,task='yes-no',DEBUG=False) 'false_alarm': int(not(s) and r), 'correct': int(s==r), 'RT': rt} - data = data.append(ndata, ignore_index=True) + # append has been deprecated and this should be done differently + # data = data.append(ndata, ignore_index=True) + # data.loc[len(data)] = ndata # this becomes slower with growing frame + data_list.append(ndata) # after a number of trials have been done save if ((i+1) % params['num_of_trials']) == 0: + data = pd.concat([data, pd.DataFrame(data_list)]) data.to_csv(params['filename'],header=True,index=False) pc = data[data['block']==block]['correct'].mean() text = '%d of %d trials done. %.2f%% correct in last block.\nAny key to continue.'%(i+1,num_of_trials,pc*100) block = block + 1 + data_list = [] # clear data from last block message = visual.TextStim(win, pos=[0,100],text=text) message.draw() win.flip()