From 4881f15292db65de7e8d8f901b8b82ed60a82093 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?J=C3=A4kel=2C=20Frank?= <frank.jaekel@tu-darmstadt.de>
Date: Tue, 25 Mar 2025 10:28:34 +0100
Subject: [PATCH] changed code to not use pandas.append anymore because its
 deprecated

---
 signal_detection.py | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/signal_detection.py b/signal_detection.py
index a8e2bb0..722c271 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()
-- 
GitLab