{ "cells": [ { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "import glob\n", "import os\n", "\n", "task='Phon'\n", "stim_path='/home/wangj57/'\n", "path='/dors/booth/JBooth-Lab/BDL/ELP/Jin_code/bids'\n", "stim_table=pd.read_excel(stim_path + task + '.xlsx')\n", "tsvfiles=glob.glob(path+\"/**/*\"+ task +\"*run\" +\"*.tsv\", recursive=True) \n", "#print(tsvfiles)\n", "for i in range(len(tsvfiles)): \n", " run_data=pd.read_table(tsvfiles[i], header=0)\n", " print('going')\n", " #print(tsvfiles[i])\n", " root=os.path.split(tsvfiles[i])[0]\n", " file=os.path.split(tsvfiles[i])[1]\n", " run_data.drop(['calculated_accuracy', 'calculated_RT'], axis=1, inplace=True )\n", " run_data['calculated_response']=0\n", " run_data['calculated_accuracy']=0\n", " run_data['calculated_RT']=0\n", " \n", " for trial in range(len(run_data['onset'].values)):\n", " #print(trial)\n", " cur_stim=run_data['stim_file'].iloc[trial]\n", " filt=(stim_table['stim_file']==cur_stim)\n", " preptime=list(stim_table.loc[filt,'preptime'])[0]\n", " \n", " #if this is the last trial of a run\n", " if trial==(len(run_data['onset'].values)-1):\n", " if preptime != 0 :\n", " if (run_data['window2_response'].iloc[trial] !='n/a') and (pd.to_numeric(run_data['window2_RT'].iloc[trial]) > preptime): \n", " run_data.loc[trial,'calculated_response'] = run_data['window2_response'].iloc[trial]\n", " run_data.loc[trial,'calculated_RT']=pd.to_numeric(run_data['window2_RT'].iloc[trial])-preptime\n", " #print('1')\n", " \n", " elif ((run_data['window2_response'].iloc[trial] =='n/a') or (pd.to_numeric(run_data['window2_RT'].iloc[trial]) < preptime)):\n", " run_data.loc[trial,'calculated_response'] = 'n/a'\n", " run_data.loc[trial,'calculated_RT'] = 'n/a'\n", " #print('2')\n", " \n", " if preptime == 0:\n", " if (run_data['window1_response'].iloc[trial] !='n/a'): \n", " run_data.loc[trial,'calculated_response'] = run_data['window1_response'].iloc[trial]\n", " run_data.loc[trial,'calculated_RT']=pd.to_numeric(run_data['window1_RT'].iloc[trial])\n", " #print('3')\n", " \n", " elif (run_data['window2_response'].iloc[trial] !='n/a'):\n", " run_data.loc[trial,'calculated_response'] = run_data['window2_response'].iloc[trial]\n", " run_data.loc[trial,'calculated_RT'] = pd.to_numeric(run_data['window2_RT'].iloc[trial]) + 0.75\n", " #print('4')\n", " \n", " elif (run_data['window1_response'].iloc[trial] =='n/a') and (run_data['window2_response'].iloc[trial]=='n/a'):\n", " run_data.loc[trial,'calculated_response'] = 'n/a'\n", " run_data.loc[trial,'calculated_RT'] = 'n/a'\n", " #print('5')\n", " \n", " else:\n", " next_stim=run_data['stim_file'].iloc[trial+1]\n", " filt2=(stim_table['stim_file']==next_stim)\n", " preptime2=list(stim_table.loc[filt2,'preptime'])[0]\n", " #print('6')\n", " \n", " #if this is not the last trial of a run\n", " if trial!=(len(run_data['onset'].values)-1):\n", " if (preptime != 0):\n", " if (run_data['window2_response'].iloc[trial] !='n/a') and (pd.to_numeric(run_data['window2_RT'].iloc[trial]) > preptime): \n", " run_data.loc[trial,'calculated_response'] = run_data['window2_response'].iloc[trial]\n", " run_data.loc[trial,'calculated_RT']=pd.to_numeric(run_data['window2_RT'].iloc[trial])-preptime\n", " #print('7')\n", " elif ((run_data['window2_response'].iloc[trial] =='n/a') or ((pd.to_numeric(run_data['window2_RT'].iloc[trial])) < preptime))\\\n", " and (preptime2 == 0):\n", " run_data.loc[trial,'calculated_response'] = 'n/a'\n", " run_data.loc[trial,'calculated_RT'] = 'n/a'\n", " #print('8')\n", " elif ((run_data['window2_response'].iloc[trial]=='n/a') or (pd.to_numeric(run_data['window2_RT'].iloc[trial]) < preptime)) \\\n", " and (preptime2 != 0) and (run_data['window1_response'].iloc[trial+1] !='n/a'):\n", " run_data.loc[trial,'calculated_response'] = run_data['window1_response'].iloc[trial+1]\n", " if run_data['window1_RT'].iloc[trial+1] !='n/a':\n", " run_data.loc[trial,'calculated_RT'] = pd.to_numeric(run_data['window1_RT'].iloc[trial+1]) + pd.to_numeric(run_data['duration'].iloc[trial])-preptime-0.75\n", " #print('9')\n", " else:\n", " run_data.loc[trial,'calculated_RT'] = 'n/a'\n", " print('attention!', tsvfiles[i])\n", " elif ((run_data['window2_response'].iloc[trial]=='n/a') or (pd.to_numeric(run_data['window2_RT'].iloc[trial]) < preptime))\\\n", " and (preptime2 != 0) and (run_data['window1_response'].iloc[trial+1]=='n/a')\\\n", " and (run_data['window2_response'].iloc[trial+1]!='n/a') and (pd.to_numeric(run_data['window2_RT'].iloc[trial+1]) < preptime2):\n", " run_data.loc[trial,'calculated_response'] = run_data['window2_response'].iloc[trial+1]\n", " run_data.loc[trial,'calculated_RT'] = pd.to_numeric(run_data['duration'].iloc[trial]) - preptime -0.75 + 0.75 + pd.to_numeric(run_data['window2_RT'].iloc[trial+1])\n", " #print('10')\n", " else:\n", " run_data.loc[trial,'calculated_response'] ='n/a'\n", " run_data.loc[trial,'calculated_RT'] ='n/a'\n", " \n", " if (preptime == 0):\n", " if (run_data['window1_response'].iloc[trial] !='n/a'): \n", " run_data.loc[trial,'calculated_response'] = run_data['window1_response'].iloc[trial]\n", " if (run_data['window1_RT'].iloc[trial]!='n/a'):\n", " run_data.loc[trial,'calculated_RT']=pd.to_numeric(run_data['window1_RT'].iloc[trial])\n", " else: \n", " run_data.loc[trial,'calculated_RT']='n/a';\n", " print('attention!', tsvfiles[i])\n", " #print('12')\n", " elif (run_data['window2_response'].iloc[trial] !='n/a'):\n", " run_data.loc[trial,'calculated_response'] = run_data['window2_response'].iloc[trial]\n", " run_data.loc[trial,'calculated_RT'] = pd.to_numeric(run_data['window2_RT'].iloc[trial]) + 0.75\n", " #print('13')\n", " elif (run_data['window1_response'].iloc[trial] =='n/a') and (run_data['window2_response'].iloc[trial]=='n/a') \\\n", " and (preptime2==0):\n", " run_data.loc[trial,'calculated_response'] = 'n/a'\n", " run_data.loc[trial,'calculated_RT'] = 'n/a'\n", " #print('14')\n", " elif (run_data['window1_response'].iloc[trial] =='n/a') and (run_data['window2_response'].iloc[trial]=='n/a') \\\n", " and (preptime2 != 0) and (run_data['window1_response'].iloc[trial+1]!='n/a'):\n", " run_data.loc[trial,'calculated_response'] = run_data['window1_response'].iloc[trial+1]\n", " if (run_data['window1_RT'].iloc[trial+1] !='n/a'):\n", " run_data.loc[trial,'calculated_RT'] = pd.to_numeric(run_data['duration'].iloc[trial]) + pd.to_numeric(run_data['window1_RT'].iloc[trial+1])\n", " else:\n", " run_data.loc[trial,'calculated_RT']='n/a';\n", " print('attention!', tsvfiles[i])\n", " #print('15')\n", " elif (run_data['window1_response'].iloc[trial] =='n/a') and (run_data['window2_response'].iloc[trial]=='n/a') \\\n", " and (preptime2 != 0) and (run_data['window1_response'].iloc[trial+1]=='n/a')\\\n", " and run_data['window2_RT'].iloc[trial+1] =='n/a':\n", " run_data.loc[trial,'calculated_response'] = 'n/a'\n", " run_data.loc[trial,'calculated_RT'] = 'n/a'\n", " #print('18')\n", " elif (run_data['window1_response'].iloc[trial] =='n/a') and (run_data['window2_response'].iloc[trial]=='n/a') \\\n", " and (preptime2 != 0) and (run_data['window1_response'].iloc[trial+1]=='n/a')\\\n", " and pd.to_numeric(run_data['window2_RT'].iloc[trial+1])