180 lines
11 KiB
(Stored with Git Annex)
Text
180 lines
11 KiB
(Stored with Git Annex)
Text
{
|
|
"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])<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]) + 0.75 + pd.to_numeric(run_data['window2_RT'].iloc[trial+1])\n",
|
|
" #print('16')\n",
|
|
" else:\n",
|
|
" run_data.loc[trial,'calculated_response'] = 'n/a'\n",
|
|
" run_data.loc[trial,'calculated_RT'] = 'n/a'\n",
|
|
" #print('17')\n",
|
|
" \n",
|
|
" for ans in range(len(run_data['correct'].values)):\n",
|
|
" if run_data['calculated_response'].iloc[ans] == 'n/a':\n",
|
|
" run_data.loc[ans,'calculated_accuracy'] = 0\n",
|
|
" elif pd.to_numeric(run_data['correct'].iloc[ans]) == pd.to_numeric(run_data['calculated_response'].iloc[ans]):\n",
|
|
" run_data.loc[ans,'calculated_accuracy'] = 1\n",
|
|
" elif pd.to_numeric(run_data['correct'].iloc[ans]) != pd.to_numeric(run_data['calculated_response'].iloc[ans]):\n",
|
|
" run_data.loc[ans,'calculated_accuracy'] = 0\n",
|
|
" #run_data.drop('calculated_response', axis=1, inplace=True)\n",
|
|
" run_data.to_csv(root+'/'+file, sep='\\t', index=False)\n",
|
|
"print('done')"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.6.3"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|