In [92]:
from __future__ import division
import os
from os.path import expanduser
import csv
import sys
import re
import numpy as np
import pandas as pd
# Parameters
ExptName = 'stim1'
SubjID = 0
RunID = 1
nTrials = 384
HitRate = 18*(1/32) # multiples of 1/32
FARate = 3*(1/32) # multiples of 1/32
Hits = HitRate * 32
FAs = FARate * 32
condRects = [(2,0),(2,2),(2,4),(4,0),(4,2),(4,4)]
# Path info
homeDirectory = expanduser("~")
dataDirectory = homeDirectory + os.sep + 'Google Drive/tACS_VWM_ALPHA/data/' + ExptName + os.sep + 's' + str(SubjID) + os.sep + 'setupData/'
directoryFiles = os.listdir(dataDirectory)
fileName = ''
# load setup file
for file in directoryFiles:
match = re.match('setup-run' + str(RunID) + '.*', file, re.M|re.I)
if match != None:
fileName = dataDirectory + match.group()
# Columns -> TriaID, ChangeCondID, WFCond, SubCond, HFCond
setupData = np.genfromtxt(fileName, delimiter=',')
setupData=np.delete(setupData,0,0)
setupData=np.delete(setupData,5,1)
In [93]:
setupData = setupData[setupData[:,2].argsort()]
In [94]:
resps = np.zeros(nTrials)
for i in range(0, 384, 64):
condHits = Hits
condFAs = FAs
for trial in range(i, i+64):
if setupData[trial][1] != 3 and condHits > 0:
resps[trial] = 1
condHits -= 1
elif setupData[trial][1] == 3 and condFAs > 0:
resps[trial] = 1
condFAs -= 1
In [95]:
setupDF = pd.DataFrame(setupData)
respSeries = pd.Series(resps)
conds = setupDF[2]
changeConds = setupDF[1]
trialIDs = setupDF.index
rts = pd.Series(np.zeros(nTrials))
changeTrials = pd.Series(np.zeros(nTrials))
nDistractors = pd.Series(np.zeros(nTrials))
nTargets = pd.Series(np.zeros(nTrials))
for i in range(nTrials):
if setupDF[1][i] == 3: changeTrials[i] = 0
else: changeTrials[i] = 1
nTargets[i] = condRects[int(setupDF[2][i])-1][0]
nDistractors[i] = condRects[int(setupDF[2][i])-1][1]
outputDF = pd.DataFrame()
In [96]:
outputDF['ChangeTrial'] = changeTrials
outputDF['nDistractors'] = nDistractors
outputDF['nTargets'] = nTargets
outputDF['Cond'] = conds
outputDF['ChangeCond'] = changeConds
outputDF['Response'] = respSeries
outputDF['trialID'] = setupDF.index
outputDF['RT'] = rts
outputDF.to_csv(homeDirectory + os.sep + 'Google Drive/tACS_VWM_ALPHA/data/' + ExptName + os.sep + 's' + str(SubjID) + os.sep + 'runData/run1.csv')
In [97]:
# these ones we can do with setupData array
# thisExp.addData('trialID', VWMTrials[i].trialID)
# thisExp.addData('ChangeTrial', VWMTrials[i].ChangeTrial)
# thisExp.addData('nDistractors', VWMTrials[i].nDistractors)
# thisExp.addData('nTargets', VWMTrials[i].nTargets)
# thisExp.addData('Cond', VWMTrials[i].condNum)
# thisExp.addData('changeHemi', changeTargHemi)
# thisExp.addData('ChangeCond', VWMTrials[i].ChangeCond)
# thisExp.addData('leftTargs', leftTargCount)
# thisExp.addData('rightTargs', rightTargCount)
# thisExp.addData('leftDists', leftDistCount)
# thisExp.addData('rightDists', rightDistCount)
# resp we need to generate with HitRate and False Alarm
# thisExp.addData('Response',resp)
# random
# thisExp.addData('RT', testResponse.rt)
In [ ]: