diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000..4ca45aa Binary files /dev/null and b/.DS_Store differ diff --git a/BCI_speller_face.py b/BCI_speller_face.py new file mode 100644 index 0000000..f402ae4 --- /dev/null +++ b/BCI_speller_face.py @@ -0,0 +1,921 @@ +# --- Import packages --- +import psychopy +psychopyVersion = '2022.2.3' +psychopy.useVersion(psychopyVersion) +from psychopy import locale_setup +from psychopy import prefs +from psychopy import sound, gui, visual, core, data, event, logging, clock, colors, layout, parallel +from psychopy.constants import (NOT_STARTED, STARTED, PLAYING, PAUSED, + STOPPED, FINISHED, PRESSED, RELEASED, FOREVER) +import psychopy.iohub as io +from psychopy.hardware import keyboard + +import numpy as np # whole numpy lib is available, prepend 'np.' +#from numpy import (sin, cos, tan, log, log10, pi, average, +# sqrt, std, deg2rad, rad2deg, linspace, asarray) +from numpy.random import random, randint, normal, shuffle, choice as randchoice +import pandas as pd +import os # handy system and path functions +import sys # to get file system encoding +from glob import glob +from pathlib import Path + +############################################################################### +testMode = True #'timingTest' # options are True, False, or 'timingTest' (note the last has to be in quotes, but True and False should not be) + +colourTheme = 'dark' +frameRate = 144 # should read this from the computer itself, but may not be reliable w multiple monitors + +expName = 'BCI_speller' # from the Builder filename that created this script +conditionList = 'levels_conditions.csv' +targetList = 'levels_targets.csv' +targetIdWidth = 120 +targetIdHeight = 120 +targetIdLineWidth = 20 +targetIdOutline = '#FFD400' +targetIdFill = None +targetIdOpacity = 1.0 +rowColHighlightStimList = 'levels_row_col.csv' +instructionImage = 'images/instructions.png' +breakInstr1Image = 'images/break_instructions_1.png' +breakInstr2Image = 'images/break_instructions_2.png' +endImage = 'images/all_finished.png' + + +if colourTheme == 'dark': + matrixFile = 'images/letter_grid_6x6_darkmode.png' + screenColour = [-1, -1, -1] + textColour = [1, 1, 1] +else: #colourTheme == light + matrixFile = 'images/letter_grid_6x6_lightmode.png' + screenColour = [1.0, 1.0, 1.0] + textColour = [0, 0, 0] + +if testMode == True: + targetsPerCond = 1 + highlightDuration = 1.5 + trialDuration = 0.150 + rowColHighlightDuration = 0.125 + rowColHighlightOnsetTime = 0.025 # delay between start of trial (draw matrix) and onset of rowColHighlight + minBreakDurn = 5.0 + displayScreen = 1 + fullScreen = False + mouseVis = True +elif testMode == 'timingTest': + targetsPerCond = 15 + highlightDuration = 0.010 + trialDuration = 0.300 + rowColHighlightDuration = 0.200 + rowColHighlightOnsetTime = 0.100 # delay between start of trial (draw matrix) and onset of rowColHighlight + displayScreen = 2 + fullScreen = True + mouseVis = False + rowColHighlightStimList = 'levels_row_col_timingTest.csv' + conditionList = 'levels_conditions_timingTest.csv' + matrixFile = 'images/letter_grid_6x6_timingTest.png' +else: + targetsPerCond = 5 + highlightDuration = 3.0 + trialDuration = 0.500 + rowColHighlightDuration = 0.400 + rowColHighlightOnsetTime = 0.100 # delay between start of trial (draw matrix) and onset of rowColHighlight + minBreakDurn = 60.0 + displayScreen = 2 + fullScreen = True + mouseVis = False + +endExpNow = False # flag for 'escape' or other condition => quit the exp +frameTolerance = 0.001 # how close to onset before 'same' frame + +# Store info about the experiment session +expInfo = { + 'participant': f"{randint(0, 999999):06.0f}", + 'session': '001', +} + +##################################### +# --- Show participant info dialog -- +if testMode == False: + dlg = gui.DlgFromDict(dictionary=expInfo, sortKeys=False, title=expName) + if dlg.OK == False: + core.quit() # user pressed cancel + +expInfo['date'] = data.getDateStr() # add a simple timestamp +expInfo['expName'] = expName +expInfo['psychopyVersion'] = psychopyVersion + +########################### +# Logging +# Ensure that relative paths start from the same directory as this script +_thisDir = Path('./') # os.path.dirname(os.path.abspath(__file__)) +os.chdir(_thisDir) + +logFileStem = str(_thisDir) + os.sep + u'data/%s_%s_%s' % (expInfo['participant'], expName, expInfo['date']) +thisExp = data.ExperimentHandler(name=expName, version='', + extraInfo=expInfo, + runtimeInfo=None, + # originPath='C:\\Users\\BCI\\Desktop\\Julias_honors\\stimuli\\BCI_speller_julia.py', + savePickle=False, + saveWideText=True, + dataFileName=logFileStem) +# save a log file for detail verbose info +logFile = logging.LogFile(logFileStem + '.log', level=logging.EXP) + + +########################## +# --- Setup the Window --- +win = visual.Window( + size=[1920, 1080], fullscr=fullScreen, + screen=displayScreen, + waitBlanking=True, + winType='pyglet', allowStencil=False, + monitor='testMonitor', color=screenColour, colorSpace='rgb', + blendMode='avg', useFBO=True, + units='pix') + +win.mouseVisible = mouseVis + +# store frame rate of monitor if we can measure it +get_fr = win.getActualFrameRate() +if get_fr != None: + frameRate = get_fr + +frameDur = 1.0 / frameRate +expInfo['frameRate'] = frameRate + +############################# +# --- Setup input devices --- +ioConfig = {} + +# Setup iohub keyboard +ioConfig['Keyboard'] = dict(use_keymap='psychopy') + +ioSession = '1' +if 'session' in expInfo: + ioSession = str(expInfo['session']) +ioServer = io.launchHubServer(window=win, **ioConfig) +eyetracker = None + +# create a default keyboard (e.g. to check for escape) +defaultKeyboard = keyboard.Keyboard(backend='iohub') + +key_resp = keyboard.Keyboard() + +# used below to check for empty responses +def checkEmpty(text): + if text == " " or text == "": + return True + else: + return False + + +############################# +# Initialize parallel port +p_port = parallel.ParallelPort(address='0x4FF8') +p_port.setData(0) + + +########################################################### +# Initialize components for various routines + +# --- Initialize components for Routine "instructions" --- +instructionScreen = visual.ImageStim(name='instructionScreen', + win=win, + image=instructionImage, mask=None, anchor='center', + ori=0.0, pos=(0, 0), size=(1280, 720), + colorSpace='rgb', opacity=1.0, + flipHoriz=False, flipVert=False, + texRes=128.0, interpolate=True) + +# Initialize spellerMatrix +spellerMatrix = visual.ImageStim(name='spellerMatrix', + win=win, + image=matrixFile, + mask=None, anchor='center', + pos=(0, 0), size=None, + colorSpace='rgb', + opacity=1.0, + interpolate=False) + +# --- Initialize components for target identification --- +targetIdentification = visual.ShapeStim(name='targetIdentification', + vertices='circle', + win=win, + size=(targetIdWidth, targetIdHeight), + pos=[0,0], anchor='center', + lineWidth=targetIdLineWidth, + colorSpace='rgb', + lineColor=targetIdOutline, + fillColor=None, + opacity=targetIdOpacity, + interpolate=False) +# targetIdentification = visual.Rect(name='targetIdentification', +# width=targetIdWidth, height=targetIdHeight, +# win=win, +# pos=[0,0], anchor='center', +# lineWidth=targetIdLineWidth, +# colorSpace='rgb', +# lineColor=targetIdOutline, +# fillColor=None, +# opacity=targetIdOpacity, +# interpolate=True) + +# --- Initialize components for Routine "trial" --- +rowColHighlight = visual.ImageStim(name='rowColHighlight', + win=win, + image='sin', mask=None, + ori=0.0, size=None, + color=screenColour, colorSpace='rgb', opacity=1.0, + flipHoriz=False, flipVert=False, + texRes=128.0, interpolate=True, depth=-2.0) + +# --- Initialize components for Routine "Counting" --- +askCount = visual.TextStim(name='askCount', + win=win, + text='Please enter the number of times you counted the target letter highlighted. \nPress Enter once you have entered the number.', + font='Open Sans', + pos=(0, 100), height=30.0, wrapWidth=1080.0, ori=0.0, + color=textColour, colorSpace='rgb', opacity=1.0, + languageStyle='LTR', + depth=0.0); + +countingPrompt = visual.TextBox2(win, name='countingPrompt', + text=None, font='Open Sans', + pos=(0, -100), letterHeight=30.0, + size=(None, None), borderWidth=2.0, + color=textColour, colorSpace='rgb', + opacity=1.0, + bold=False, italic=False, + lineSpacing=1.0, + padding=0.0, alignment='center', + anchor='center', + fillColor=None, borderColor=None, + flipHoriz=False, flipVert=False, languageStyle='LTR', + editable=True, + autoLog=True, + ) + + +# --- Initialize components for Routine "btwCondBreak" --- +breakInstr1 = visual.ImageStim(name='breakInstr1', + win=win, + image=breakInstr1Image, mask=None, anchor='center', + ori=0.0, pos=(0, 0), size=(1280, 720), + colorSpace='rgb', opacity=1.0, + flipHoriz=False, flipVert=False, + texRes=128.0, interpolate=True + ) + +breakInstr2 = visual.ImageStim(name='breakInstr2', + win=win, + image=breakInstr2Image, mask=None, anchor='center', + ori=0.0, pos=(0, 0), size=(1280, 720), + colorSpace='rgb', opacity=1.0, + flipHoriz=False, flipVert=False, + texRes=128.0, interpolate=True, depth=-2.0 + ) + +# Create some handy timers +globalClock = core.Clock() # to track the time since experiment started +routineTimer = core.Clock() # to track time remaining of each (possibly non-slip) routine + +######################## +### START EXPERIMENT ### +######################## + +# --- Instructions --- +if testMode == False: + continueRoutine = True + routineForceEnded = False + # update component parameters for each repeat + key_resp.keys = [] + key_resp.rt = [] + _key_resp_allKeys = [] + # keep track of which components have finished + instructionsComponents = [key_resp, instructionScreen] + for thisComponent in instructionsComponents: + thisComponent.tStart = None + thisComponent.tStop = None + thisComponent.tStartRefresh = None + thisComponent.tStopRefresh = None + if hasattr(thisComponent, 'status'): + thisComponent.status = NOT_STARTED + # reset timers + t = 0 + _timeToFirstFrame = win.getFutureFlipTime(clock="now") + frameN = -1 + + # --- Run Routine "instructions" --- + while continueRoutine: + # get current time + t = routineTimer.getTime() + tThisFlip = win.getFutureFlipTime(clock=routineTimer) + tThisFlipGlobal = win.getFutureFlipTime(clock=None) + frameN = frameN + 1 # number of completed frames (so 0 is the first frame) + # update/draw components on each frame + + # *instructionScreen* updates + if instructionScreen.status == NOT_STARTED and tThisFlip >= 0.0-frameTolerance: + # keep track of start time/frame for later + instructionScreen.frameNStart = frameN # exact frame index + instructionScreen.tStart = t # local t and not account for scr refresh + instructionScreen.tStartRefresh = tThisFlipGlobal # on global time + win.timeOnFlip(instructionScreen, 'tStartRefresh') # time at next scr refresh + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'instructionScreen.started') + instructionScreen.setAutoDraw(True) + + # *key_resp* updates + waitOnFlip = False + + if key_resp.status == NOT_STARTED and tThisFlip >= 0.0-frameTolerance: + # keep track of start time/frame for later + key_resp.frameNStart = frameN # exact frame index + key_resp.tStart = t # local t and not account for scr refresh + key_resp.tStartRefresh = tThisFlipGlobal # on global time + win.timeOnFlip(key_resp, 'tStartRefresh') # time at next scr refresh + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'key_resp.started') + key_resp.status = STARTED + # keyboard checking is just starting + waitOnFlip = True + win.callOnFlip(key_resp.clock.reset) # t=0 on next screen flip + win.callOnFlip(key_resp.clearEvents, eventType='keyboard') # clear events on next screen flip + + if key_resp.status == STARTED and not waitOnFlip: + theseKeys = key_resp.getKeys(keyList=['space', 'enter'], waitRelease=False) + _key_resp_allKeys.extend(theseKeys) + if len(_key_resp_allKeys): + key_resp.keys = _key_resp_allKeys[-1].name # just the last key pressed + key_resp.rt = _key_resp_allKeys[-1].rt + # a response ends the routine + continueRoutine = False + + # check for quit (typically the Esc key) + if endExpNow or defaultKeyboard.getKeys(keyList=["escape"]): + core.quit() + + # check if all components have finished + if not continueRoutine: # a component has requested a forced-end of Routine + routineForceEnded = True + break + continueRoutine = False # will revert to True if at least one component still running + + for thisComponent in instructionsComponents: + if hasattr(thisComponent, "status") and thisComponent.status != FINISHED: + continueRoutine = True + break # at least one component has not yet finished + + # refresh the screen + if continueRoutine: # don't flip if this routine is over or we'll get a blank screen + win.flip() + + ## --- Ending Routine "instructions" --- + for thisComponent in instructionsComponents: + if hasattr(thisComponent, "setAutoDraw"): + thisComponent.setAutoDraw(False) + # check responses + if key_resp.keys in ['', [], None]: # No response was made + key_resp.keys = None + thisExp.addData('key_resp.keys',key_resp.keys) + if key_resp.keys != None: # we had a response + thisExp.addData('key_resp.rt', key_resp.rt) + thisExp.nextEntry() + # the Routine "instructions" was not non-slip safe, so reset the non-slip timer + routineTimer.reset() + + +############# +# Main loop # +############# + +conditions = data.TrialHandler(nReps=1.0, method='random', + extraInfo=expInfo, originPath=-1, + trialList=data.importConditions(conditionList), + seed=None, name='conditions') + +thisExp.addLoop(conditions) # add the loop to the experiment + +for thisCondition in conditions: + # currentLoop = conditions + # send condition code to EEG amp + p_port.setData(int(thisCondition['conditionCode'])) + + # preload images for this condition + imgList = {} + for imgFile in glob('images/' + thisCondition['highlightType'] + '/*.png'): + imgName = imgFile.split('\\')[-1][:-4] + imgList[imgName] = visual.ImageStim(win=win, + image=imgFile, + ori=0.0, + # pos=trial['img_pos'], + interpolate=True, + ) + + + # randomize characters in matrix + # we will not loop through all 36 positions though; targetCount below tracks and limits to + targets = data.TrialHandler(nReps=1.0, method='random', + extraInfo=expInfo, originPath=-1, + trialList=data.importConditions(targetList), + seed=None, name='target') + + thisExp.addLoop(targets) # add the loop to the experiment + + targetCount = 0 + for thisTarget in targets: + + # --- Prepare to start Routine "Highlight" --- + continueRoutine = True + routineForceEnded = False + + # update component parameters for each repeat + targetIdentification.setPos(eval(thisTarget['matrixPosition'])) + + # keep track of which components have finished + HighlightComponents = [spellerMatrix, targetIdentification] + for thisComponent in HighlightComponents: + thisComponent.tStart = None + thisComponent.tStop = None + thisComponent.tStartRefresh = None + thisComponent.tStopRefresh = None + if hasattr(thisComponent, 'status'): + thisComponent.status = NOT_STARTED + + # reset timers + t = 0 + _timeToFirstFrame = win.getFutureFlipTime(clock="now") + frameN = -1 + + # --- Run Routine "targetIdentification" --- + while continueRoutine and routineTimer.getTime() < highlightDuration: + p_port.setData(0) + # get current time + t = routineTimer.getTime() + tThisFlip = win.getFutureFlipTime(clock=routineTimer) + tThisFlipGlobal = win.getFutureFlipTime(clock=None) + frameN = frameN + 1 # number of completed frames (so 0 is the first frame) + # update/draw components on each frame + + # *spellerMatrix* updates + if spellerMatrix.status == NOT_STARTED and tThisFlip >= 0.0 - frameTolerance: + # keep track of start time/frame for later + spellerMatrix.frameNStart = frameN # exact frame index + spellerMatrix.tStart = t # local t and not account for scr refresh + spellerMatrix.tStartRefresh = tThisFlipGlobal # on global time + win.timeOnFlip(spellerMatrix, 'tStartRefresh') # time at next scr refresh + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'spellerMatrix.started') + spellerMatrix.setAutoDraw(True) + + if spellerMatrix.status == STARTED: + # is it time to stop? (based on global clock, using actual start) + if tThisFlipGlobal > spellerMatrix.tStartRefresh + highlightDuration - frameTolerance: + # keep track of stop time/frame for later + spellerMatrix.tStop = t # not accounting for scr refresh + spellerMatrix.frameNStop = frameN # exact frame index + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'spellerMatrix.stopped') + spellerMatrix.setAutoDraw(False) + + # *targetIdentification* updates + if targetIdentification.status == NOT_STARTED and tThisFlip >= 0.0 - frameTolerance: + # keep track of start time/frame for later + targetIdentification.frameNStart = frameN # exact frame index + targetIdentification.tStart = t # local t and not account for scr refresh + targetIdentification.tStartRefresh = tThisFlipGlobal # on global time + win.timeOnFlip(targetIdentification, 'tStartRefresh') # time at next scr refresh + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'targetIdentification.started') + targetIdentification.setAutoDraw(True) + + # Send trigger code indicationg target location + p_port.setData(thisTarget['targetCode']) + + if targetIdentification.status == STARTED: + # is it time to stop? (based on global clock, using actual start) + if tThisFlipGlobal > targetIdentification.tStartRefresh + highlightDuration - frameTolerance: + # keep track of stop time/frame for later + targetIdentification.tStop = t # not accounting for scr refresh + targetIdentification.frameNStop = frameN # exact frame index + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'targetIdentification.stopped') + targetIdentification.setAutoDraw(False) + + # check for quit (typically the Esc key) + if endExpNow or defaultKeyboard.getKeys(keyList=["escape"]): + core.quit() + + # check if all components have finished + if not continueRoutine: # a component has requested a forced-end of Routine + routineForceEnded = True + break + continueRoutine = False # will revert to True if at least one component still running + for thisComponent in HighlightComponents: + if hasattr(thisComponent, "status") and thisComponent.status != FINISHED: + continueRoutine = True + break # at least one component has not yet finished + + # refresh the screen + if continueRoutine: # don't flip if this routine is over or we'll get a blank screen + win.flip() + + # --- Ending Routine "targetIdentification" --- + for thisComponent in HighlightComponents: + if hasattr(thisComponent, "setAutoDraw"): + thisComponent.setAutoDraw(False) + + # using non-slip timing so subtract the expected duration of this Routine (unless ended on request) + if routineForceEnded: + routineTimer.reset() + else: + routineTimer.addTime(0 - highlightDuration) + + + ################################################################# + # Start a block of row & columns highlights + + # cross row & column positions with highlight images + rowColPositions = pd.read_csv(rowColHighlightStimList) + highlightImages = pd.DataFrame(imgList.keys(), columns=['imageName']) + highlightImages[['faceID', 'rowCol']] = highlightImages['imageName'].str.split('_', expand=True) + trialList = highlightImages.merge(rowColPositions, how='outer') + + # set up handler to look after randomisation of trials + rowColHighlightTrials = data.TrialHandler(nReps=1.0, method='random', + extraInfo=expInfo, + originPath=-1, + trialList=trialList.to_dict('records'), + seed=None, + name='rowColHighlightTrials' + ) + + thisExp.addLoop(rowColHighlightTrials) # add the loop to the experiment + + # Loop over trials within the block + for thisTrial in rowColHighlightTrials: + # currentLoop = rowColHighlightTrials + + rowColHighlight = imgList[thisTrial['imageName']] + rowColHighlight.pos = eval(thisTrial['position']) + + # --- Prepare to start Routine "trial" --- + continueRoutine = True + routineForceEnded = False + + # keep track of which components have finished + trialComponents = [spellerMatrix, rowColHighlight] + for thisComponent in trialComponents: + thisComponent.tStart = None + thisComponent.tStop = None + thisComponent.tStartRefresh = None + thisComponent.tStopRefresh = None + if hasattr(thisComponent, 'status'): + thisComponent.status = NOT_STARTED + # reset timers + t = 0 + _timeToFirstFrame = win.getFutureFlipTime(clock="now") + frameN = -1 + + # --- Run Routine "trial" --- + while continueRoutine and routineTimer.getTime() < trialDuration: + # reset par port + p_port.setData(0) + + # get current time + t = routineTimer.getTime() + tThisFlip = win.getFutureFlipTime(clock=routineTimer) + tThisFlipGlobal = win.getFutureFlipTime(clock=None) + frameN = frameN + 1 # number of completed frames (so 0 is the first frame) + + # update/draw components on each frame + # *spellerMatrix* updates + if spellerMatrix.status == NOT_STARTED and tThisFlip >= 0.0 - frameTolerance: + # keep track of start time/frame for later + spellerMatrix.frameNStart = frameN # exact frame index + spellerMatrix.tStart = t # local t and not account for scr refresh + spellerMatrix.tStartRefresh = tThisFlipGlobal # on global time + win.timeOnFlip(spellerMatrix, 'tStartRefresh') # time at next scr refresh + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'spellerMatrix.started') + spellerMatrix.setAutoDraw(True) + + if spellerMatrix.status == STARTED: + # is it time to stop? (based on global clock, using actual start) + if tThisFlipGlobal > spellerMatrix.tStartRefresh + trialDuration - frameTolerance: + # keep track of stop time/frame for later + spellerMatrix.tStop = t # not accounting for scr refresh + spellerMatrix.frameNStop = frameN # exact frame index + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'spellerMatrix.stopped') + spellerMatrix.setAutoDraw(False) + + # *rowColHighlight* updates + if rowColHighlight.status == NOT_STARTED and tThisFlip >= rowColHighlightOnsetTime - frameTolerance: + # keep track of start time/frame for later + rowColHighlight.frameNStart = frameN # exact frame index + rowColHighlight.tStart = t # local t and not account for scr refresh + rowColHighlight.tStartRefresh = tThisFlipGlobal # on global time + win.timeOnFlip(rowColHighlight, 'tStartRefresh') # time at next scr refresh + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'rowColHighlight.started') + rowColHighlight.setAutoDraw(True) + + # send code to EEG saying rowColHighlight occurred, and its location + p_port.setData(thisTrial['rowColCode']) + + if rowColHighlight.status == STARTED: + # is it time to stop? (based on global clock, using actual start) + if tThisFlipGlobal > rowColHighlight.tStartRefresh + rowColHighlightDuration - frameTolerance: + # keep track of stop time/frame for later + rowColHighlight.tStop = t # not accounting for scr refresh + rowColHighlight.frameNStop = frameN # exact frame index + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'rowColHighlight.stopped') + rowColHighlight.setAutoDraw(False) + + # check for quit (typically the Esc key) + if endExpNow or defaultKeyboard.getKeys(keyList=["escape"]): + core.quit() + + # check if all components have finished + if not continueRoutine: # a component has requested a forced-end of Routine + routineForceEnded = True + break + + continueRoutine = False # will revert to True if at least one component still running + + for thisComponent in trialComponents: + if hasattr(thisComponent, "status") and thisComponent.status != FINISHED: + continueRoutine = True + break # at least one component has not yet finished + + # refresh the screen + if continueRoutine: # don't flip if this routine is over or we'll get a blank screen + win.flip() + + # --- Ending Routine "trial" --- + for thisComponent in trialComponents: + if hasattr(thisComponent, "setAutoDraw"): + thisComponent.setAutoDraw(False) + p_port.setData(0) + # if par_port_rowcol.status == STARTED: + # win.callOnFlip(par_port_rowcol.setData, int(0)) + # using non-slip timing so subtract the expected duration of this Routine (unless ended on request) + if routineForceEnded: + routineTimer.reset() + else: + routineTimer.addTime(0 - trialDuration) + thisExp.nextEntry() + + # completed 1.0 repeats of 'rowColHighlightTrials' + + + # --- Prepare to start Routine "Counting" --- + if testMode == False: + continueRoutine = True + routineForceEnded = False + # update component parameters for each repeat + # Run 'Begin Routine' code from code_2 + event.clearEvents('keyboard') + + countingPrompt.reset() + + # keep track of which components have finished + CountingComponents = [askCount, countingPrompt] + for thisComponent in CountingComponents: + thisComponent.tStart = None + thisComponent.tStop = None + thisComponent.tStartRefresh = None + thisComponent.tStopRefresh = None + if hasattr(thisComponent, 'status'): + thisComponent.status = NOT_STARTED + # reset timers + t = 0 + _timeToFirstFrame = win.getFutureFlipTime(clock="now") + frameN = -1 + + # --- Run Routine "Counting" --- + while continueRoutine: + # get current time + t = routineTimer.getTime() + tThisFlip = win.getFutureFlipTime(clock=routineTimer) + tThisFlipGlobal = win.getFutureFlipTime(clock=None) + frameN = frameN + 1 # number of completed frames (so 0 is the first frame) + # update/draw components on each frame + + # *askCount* updates + if askCount.status == NOT_STARTED and tThisFlip >= 0.0 - frameTolerance: + # keep track of start time/frame for later + askCount.frameNStart = frameN # exact frame index + askCount.tStart = t # local t and not account for scr refresh + askCount.tStartRefresh = tThisFlipGlobal # on global time + win.timeOnFlip(askCount, 'tStartRefresh') # time at next scr refresh + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'askCount.started') + askCount.setAutoDraw(True) + + # *countingPrompt* updates + if countingPrompt.status == NOT_STARTED and tThisFlip >= 0.0-frameTolerance: + # keep track of start time/frame for later + countingPrompt.frameNStart = frameN # exact frame index + countingPrompt.tStart = t # local t and not account for scr refresh + countingPrompt.tStartRefresh = tThisFlipGlobal # on global time + win.timeOnFlip(countingPrompt, 'tStartRefresh') # time at next scr refresh + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'countingPrompt.started') + countingPrompt.setAutoDraw(True) + + # check for quit (typically the Esc key) + if endExpNow or defaultKeyboard.getKeys(keyList=["escape"]): + core.quit() + + keys = event.getKeys() + if 'return' in keys: + # do not show a new line break in the typed response + countingPrompt.text = countingPrompt.text[:-1] + # check if the response is empty and only allow the routine to end if something has been typed + continueRoutine = checkEmpty(countingPrompt.text) + # clear the keyboard keys and watch for a new response + event.clearEvents('keyboard') + + # check if all components have finished + if not continueRoutine: # a component has requested a forced-end of Routine + routineForceEnded = True + break + continueRoutine = False # will revert to True if at least one component still running + for thisComponent in CountingComponents: + if hasattr(thisComponent, "status") and thisComponent.status != FINISHED: + continueRoutine = True + break # at least one component has not yet finished + + # refresh the screen + if continueRoutine: # don't flip if this routine is over or we'll get a blank screen + win.flip() + + # --- Ending Routine "Counting" --- + for thisComponent in CountingComponents: + if hasattr(thisComponent, "setAutoDraw"): + thisComponent.setAutoDraw(False) + + targets.addData('countingPrompt.text', countingPrompt.text) + + # the Routine "Counting" was not non-slip safe, so reset the non-slip timer + routineTimer.reset() + thisExp.nextEntry() + + # check if we're done with targets for this condition + targetCount += 1 + + if targetCount == targetsPerCond: + targets.finished = True + + # completed 1.0 repeats of 'target' + + + ################################################# + # --- Prepare to start Routine "btwCondBreak" --- + if testMode == False or testMode==True: + continueRoutine = True + routineForceEnded = False + # update component parameters for each repeat + key_resp.keys = [] + key_resp.rt = [] + _key_resp_allKeys = [] + # keep track of which components have finished + btwCondBreakComponents = [key_resp, breakInstr1, breakInstr2] + for thisComponent in btwCondBreakComponents: + thisComponent.tStart = None + thisComponent.tStop = None + thisComponent.tStartRefresh = None + thisComponent.tStopRefresh = None + if hasattr(thisComponent, 'status'): + thisComponent.status = NOT_STARTED + # reset timers + t = 0 + _timeToFirstFrame = win.getFutureFlipTime(clock="now") + frameN = -1 + + # --- Run Routine "btwCondBreak" --- + while continueRoutine: + # get current time + t = routineTimer.getTime() + tThisFlip = win.getFutureFlipTime(clock=routineTimer) + tThisFlipGlobal = win.getFutureFlipTime(clock=None) + frameN = frameN + 1 # number of completed frames (so 0 is the first frame) + # update/draw components on each frame + + # *breakInstr1* updates + if breakInstr1.status == NOT_STARTED and tThisFlip >= 0.0-frameTolerance: + # keep track of start time/frame for later + breakInstr1.frameNStart = frameN # exact frame index + breakInstr1.tStart = t # local t and not account for scr refresh + breakInstr1.tStartRefresh = tThisFlipGlobal # on global time + win.timeOnFlip(breakInstr1, 'tStartRefresh') # time at next scr refresh + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'breakInstr1.started') + breakInstr1.setAutoDraw(True) + + if breakInstr1.status == STARTED: + # is it time to stop? (based on global clock, using actual start) + if tThisFlipGlobal > breakInstr1.tStartRefresh + minBreakDurn - frameTolerance: + # keep track of stop time/frame for later + breakInstr1.tStop = t # not accounting for scr refresh + breakInstr1.frameNStop = frameN # exact frame index + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'breakInstr1.stopped') + breakInstr1.setAutoDraw(False) + + # *breakInstr2* updates + if breakInstr2.status == NOT_STARTED and tThisFlip >= minBreakDurn - frameTolerance: + # keep track of start time/frame for later + breakInstr2.frameNStart = frameN # exact frame index + breakInstr2.tStart = t # local t and not account for scr refresh + breakInstr2.tStartRefresh = tThisFlipGlobal # on global time + win.timeOnFlip(breakInstr2, 'tStartRefresh') # time at next scr refresh + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'breakInstr2.started') + breakInstr2.setAutoDraw(True) + + # *key_resp* updates + waitOnFlip = False + if key_resp.status == NOT_STARTED and tThisFlip >= minBreakDurn - frameTolerance: + # keep track of start time/frame for later + key_resp.frameNStart = frameN # exact frame index + key_resp.tStart = t # local t and not account for scr refresh + key_resp.tStartRefresh = tThisFlipGlobal # on global time + win.timeOnFlip(key_resp, 'tStartRefresh') # time at next scr refresh + # add timestamp to datafile + thisExp.timestampOnFlip(win, 'key_resp.started') + key_resp.status = STARTED + # keyboard checking is just starting + waitOnFlip = True + win.callOnFlip(key_resp.clock.reset) # t=0 on next screen flip + win.callOnFlip(key_resp.clearEvents, eventType='keyboard') # clear events on next screen flip + + if key_resp.status == STARTED and not waitOnFlip: + theseKeys = key_resp.getKeys(keyList=['space'], waitRelease=False) + _key_resp_allKeys.extend(theseKeys) + if len(_key_resp_allKeys): + key_resp.keys = _key_resp_allKeys[-1].name # just the last key pressed + key_resp.rt = _key_resp_allKeys[-1].rt + # a response ends the routine + continueRoutine = False + + # check for quit (typically the Esc key) + if endExpNow or defaultKeyboard.getKeys(keyList=["escape"]): + core.quit() + + # check if all components have finished + if not continueRoutine: # a component has requested a forced-end of Routine + routineForceEnded = True + break + + continueRoutine = False # will revert to True if at least one component still running + for thisComponent in btwCondBreakComponents: + if hasattr(thisComponent, "status") and thisComponent.status != FINISHED: + continueRoutine = True + break # at least one component has not yet finished + + # refresh the screen + if continueRoutine: # don't flip if this routine is over or we'll get a blank screen + win.flip() + + + # --- Ending Routine "btwCondBreak" --- + for thisComponent in btwCondBreakComponents: + if hasattr(thisComponent, "setAutoDraw"): + thisComponent.setAutoDraw(False) + # check responses + if key_resp.keys in ['', [], None]: # No response was made + key_resp.keys = None + conditions.addData('key_resp.keys',key_resp.keys) + if key_resp.keys != None: # we had a response + conditions.addData('key_resp.rt', key_resp.rt) + # using non-slip timing so subtract the expected duration of this Routine (unless ended on request) + if routineForceEnded: + routineTimer.reset() + else: + routineTimer.addTime(-180.000000) + thisExp.nextEntry() + +# completed 1.0 repeats of 'conditions' + + +########################## +# --- End experiment --- # +########################## +# Flip one final time so any remaining win.callOnFlip() +# and win.timeOnFlip() tasks get executed before quitting +win.flip() + +# these shouldn't be strictly necessary (should auto-save) +thisExp.saveAsWideText('data/' + logFileStem + '.csv', delim='auto') +# thisExp.saveAsPickle(logFileStem) +logging.flush() + +thisExp.abort() # or data files will save again on exit +win.close() +core.quit() + + diff --git a/README.md b/README.md new file mode 100644 index 0000000..773672a --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# BCI_speller_julia + diff --git a/images/.DS_Store b/images/.DS_Store new file mode 100644 index 0000000..f35feff Binary files /dev/null and b/images/.DS_Store differ diff --git a/images/AngryNeutral/face10_col.PNG b/images/AngryNeutral/face10_col.PNG new file mode 100644 index 0000000..533f587 Binary files /dev/null and b/images/AngryNeutral/face10_col.PNG differ diff --git a/images/AngryNeutral/face10_row.PNG b/images/AngryNeutral/face10_row.PNG new file mode 100644 index 0000000..2340496 Binary files /dev/null and b/images/AngryNeutral/face10_row.PNG differ diff --git a/images/AngryNeutral/face11_col.PNG b/images/AngryNeutral/face11_col.PNG new file mode 100644 index 0000000..86d2155 Binary files /dev/null and b/images/AngryNeutral/face11_col.PNG differ diff --git a/images/AngryNeutral/face11_row.PNG b/images/AngryNeutral/face11_row.PNG new file mode 100644 index 0000000..c7694bd Binary files /dev/null and b/images/AngryNeutral/face11_row.PNG differ diff --git a/images/AngryNeutral/face12_col.PNG b/images/AngryNeutral/face12_col.PNG new file mode 100644 index 0000000..40e99ec Binary files /dev/null and b/images/AngryNeutral/face12_col.PNG differ diff --git a/images/AngryNeutral/face12_row.PNG b/images/AngryNeutral/face12_row.PNG new file mode 100644 index 0000000..b205373 Binary files /dev/null and b/images/AngryNeutral/face12_row.PNG differ diff --git a/images/AngryNeutral/face13_col.PNG b/images/AngryNeutral/face13_col.PNG new file mode 100644 index 0000000..52b5b7f Binary files /dev/null and b/images/AngryNeutral/face13_col.PNG differ diff --git a/images/AngryNeutral/face13_row.PNG b/images/AngryNeutral/face13_row.PNG new file mode 100644 index 0000000..d71c6db Binary files /dev/null and b/images/AngryNeutral/face13_row.PNG differ diff --git a/images/AngryNeutral/face14_col.PNG b/images/AngryNeutral/face14_col.PNG new file mode 100644 index 0000000..6339998 Binary files /dev/null and b/images/AngryNeutral/face14_col.PNG differ diff --git a/images/AngryNeutral/face14_row.PNG b/images/AngryNeutral/face14_row.PNG new file mode 100644 index 0000000..84759b9 Binary files /dev/null and b/images/AngryNeutral/face14_row.PNG differ diff --git a/images/AngryNeutral/face15_col.PNG b/images/AngryNeutral/face15_col.PNG new file mode 100644 index 0000000..62e2813 Binary files /dev/null and b/images/AngryNeutral/face15_col.PNG differ diff --git a/images/AngryNeutral/face15_row.PNG b/images/AngryNeutral/face15_row.PNG new file mode 100644 index 0000000..f89ec7a Binary files /dev/null and b/images/AngryNeutral/face15_row.PNG differ diff --git a/images/AngryNeutral/face1_col.PNG b/images/AngryNeutral/face1_col.PNG new file mode 100644 index 0000000..59c8e6d Binary files /dev/null and b/images/AngryNeutral/face1_col.PNG differ diff --git a/images/AngryNeutral/face1_row.PNG b/images/AngryNeutral/face1_row.PNG new file mode 100644 index 0000000..1cabc3a Binary files /dev/null and b/images/AngryNeutral/face1_row.PNG differ diff --git a/images/AngryNeutral/face2_col.PNG b/images/AngryNeutral/face2_col.PNG new file mode 100644 index 0000000..55efd92 Binary files /dev/null and b/images/AngryNeutral/face2_col.PNG differ diff --git a/images/AngryNeutral/face2_row.PNG b/images/AngryNeutral/face2_row.PNG new file mode 100644 index 0000000..bcb0a34 Binary files /dev/null and b/images/AngryNeutral/face2_row.PNG differ diff --git a/images/AngryNeutral/face3_col.PNG b/images/AngryNeutral/face3_col.PNG new file mode 100644 index 0000000..956a9cd Binary files /dev/null and b/images/AngryNeutral/face3_col.PNG differ diff --git a/images/AngryNeutral/face3_row.PNG b/images/AngryNeutral/face3_row.PNG new file mode 100644 index 0000000..993d246 Binary files /dev/null and b/images/AngryNeutral/face3_row.PNG differ diff --git a/images/AngryNeutral/face4_col.PNG b/images/AngryNeutral/face4_col.PNG new file mode 100644 index 0000000..e7aa977 Binary files /dev/null and b/images/AngryNeutral/face4_col.PNG differ diff --git a/images/AngryNeutral/face4_row.PNG b/images/AngryNeutral/face4_row.PNG new file mode 100644 index 0000000..66ffaa8 Binary files /dev/null and b/images/AngryNeutral/face4_row.PNG differ diff --git a/images/AngryNeutral/face5_col.PNG b/images/AngryNeutral/face5_col.PNG new file mode 100644 index 0000000..22585f6 Binary files /dev/null and b/images/AngryNeutral/face5_col.PNG differ diff --git a/images/AngryNeutral/face5_row.PNG b/images/AngryNeutral/face5_row.PNG new file mode 100644 index 0000000..58f3a29 Binary files /dev/null and b/images/AngryNeutral/face5_row.PNG differ diff --git a/images/AngryNeutral/face6_col.PNG b/images/AngryNeutral/face6_col.PNG new file mode 100644 index 0000000..ec378b6 Binary files /dev/null and b/images/AngryNeutral/face6_col.PNG differ diff --git a/images/AngryNeutral/face6_row.PNG b/images/AngryNeutral/face6_row.PNG new file mode 100644 index 0000000..8374fda Binary files /dev/null and b/images/AngryNeutral/face6_row.PNG differ diff --git a/images/AngryNeutral/face7_col.PNG b/images/AngryNeutral/face7_col.PNG new file mode 100644 index 0000000..de50429 Binary files /dev/null and b/images/AngryNeutral/face7_col.PNG differ diff --git a/images/AngryNeutral/face7_row.PNG b/images/AngryNeutral/face7_row.PNG new file mode 100644 index 0000000..8276ece Binary files /dev/null and b/images/AngryNeutral/face7_row.PNG differ diff --git a/images/AngryNeutral/face8_col.PNG b/images/AngryNeutral/face8_col.PNG new file mode 100644 index 0000000..2b1fced Binary files /dev/null and b/images/AngryNeutral/face8_col.PNG differ diff --git a/images/AngryNeutral/face8_row.PNG b/images/AngryNeutral/face8_row.PNG new file mode 100644 index 0000000..07f7fcb Binary files /dev/null and b/images/AngryNeutral/face8_row.PNG differ diff --git a/images/AngryNeutral/face9_col.PNG b/images/AngryNeutral/face9_col.PNG new file mode 100644 index 0000000..f82f23d Binary files /dev/null and b/images/AngryNeutral/face9_col.PNG differ diff --git a/images/AngryNeutral/face9_row.PNG b/images/AngryNeutral/face9_row.PNG new file mode 100644 index 0000000..76f913f Binary files /dev/null and b/images/AngryNeutral/face9_row.PNG differ diff --git a/images/AngryRed/face10_col.PNG b/images/AngryRed/face10_col.PNG new file mode 100644 index 0000000..b2543f9 Binary files /dev/null and b/images/AngryRed/face10_col.PNG differ diff --git a/images/AngryRed/face10_row.PNG b/images/AngryRed/face10_row.PNG new file mode 100644 index 0000000..be312c8 Binary files /dev/null and b/images/AngryRed/face10_row.PNG differ diff --git a/images/AngryRed/face11_col.PNG b/images/AngryRed/face11_col.PNG new file mode 100644 index 0000000..d1e8568 Binary files /dev/null and b/images/AngryRed/face11_col.PNG differ diff --git a/images/AngryRed/face11_row.PNG b/images/AngryRed/face11_row.PNG new file mode 100644 index 0000000..13e7f35 Binary files /dev/null and b/images/AngryRed/face11_row.PNG differ diff --git a/images/AngryRed/face12_col.PNG b/images/AngryRed/face12_col.PNG new file mode 100644 index 0000000..8eb4ac9 Binary files /dev/null and b/images/AngryRed/face12_col.PNG differ diff --git a/images/AngryRed/face12_row.PNG b/images/AngryRed/face12_row.PNG new file mode 100644 index 0000000..b3b471e Binary files /dev/null and b/images/AngryRed/face12_row.PNG differ diff --git a/images/AngryRed/face13_col.PNG b/images/AngryRed/face13_col.PNG new file mode 100644 index 0000000..b2eb3cb Binary files /dev/null and b/images/AngryRed/face13_col.PNG differ diff --git a/images/AngryRed/face13_row.PNG b/images/AngryRed/face13_row.PNG new file mode 100644 index 0000000..3c79f2f Binary files /dev/null and b/images/AngryRed/face13_row.PNG differ diff --git a/images/AngryRed/face14_col.PNG b/images/AngryRed/face14_col.PNG new file mode 100644 index 0000000..671bbdf Binary files /dev/null and b/images/AngryRed/face14_col.PNG differ diff --git a/images/AngryRed/face14_row.PNG b/images/AngryRed/face14_row.PNG new file mode 100644 index 0000000..ee72f60 Binary files /dev/null and b/images/AngryRed/face14_row.PNG differ diff --git a/images/AngryRed/face15_col.PNG b/images/AngryRed/face15_col.PNG new file mode 100644 index 0000000..82cadd7 Binary files /dev/null and b/images/AngryRed/face15_col.PNG differ diff --git a/images/AngryRed/face15_row.PNG b/images/AngryRed/face15_row.PNG new file mode 100644 index 0000000..1bb436e Binary files /dev/null and b/images/AngryRed/face15_row.PNG differ diff --git a/images/AngryRed/face1_col.PNG b/images/AngryRed/face1_col.PNG new file mode 100644 index 0000000..9d8378f Binary files /dev/null and b/images/AngryRed/face1_col.PNG differ diff --git a/images/AngryRed/face1_row.PNG b/images/AngryRed/face1_row.PNG new file mode 100644 index 0000000..dda5b05 Binary files /dev/null and b/images/AngryRed/face1_row.PNG differ diff --git a/images/AngryRed/face2_col.PNG b/images/AngryRed/face2_col.PNG new file mode 100644 index 0000000..df260e9 Binary files /dev/null and b/images/AngryRed/face2_col.PNG differ diff --git a/images/AngryRed/face2_row.PNG b/images/AngryRed/face2_row.PNG new file mode 100644 index 0000000..b50ef92 Binary files /dev/null and b/images/AngryRed/face2_row.PNG differ diff --git a/images/AngryRed/face3_col.PNG b/images/AngryRed/face3_col.PNG new file mode 100644 index 0000000..cb154f2 Binary files /dev/null and b/images/AngryRed/face3_col.PNG differ diff --git a/images/AngryRed/face3_row.PNG b/images/AngryRed/face3_row.PNG new file mode 100644 index 0000000..7537d09 Binary files /dev/null and b/images/AngryRed/face3_row.PNG differ diff --git a/images/AngryRed/face4_col.PNG b/images/AngryRed/face4_col.PNG new file mode 100644 index 0000000..2a93c80 Binary files /dev/null and b/images/AngryRed/face4_col.PNG differ diff --git a/images/AngryRed/face4_row.PNG b/images/AngryRed/face4_row.PNG new file mode 100644 index 0000000..681e63c Binary files /dev/null and b/images/AngryRed/face4_row.PNG differ diff --git a/images/AngryRed/face5_col.PNG b/images/AngryRed/face5_col.PNG new file mode 100644 index 0000000..c0f4765 Binary files /dev/null and b/images/AngryRed/face5_col.PNG differ diff --git a/images/AngryRed/face5_row.PNG b/images/AngryRed/face5_row.PNG new file mode 100644 index 0000000..4d64857 Binary files /dev/null and b/images/AngryRed/face5_row.PNG differ diff --git a/images/AngryRed/face6_col.PNG b/images/AngryRed/face6_col.PNG new file mode 100644 index 0000000..b42d6be Binary files /dev/null and b/images/AngryRed/face6_col.PNG differ diff --git a/images/AngryRed/face6_row.PNG b/images/AngryRed/face6_row.PNG new file mode 100644 index 0000000..4be5504 Binary files /dev/null and b/images/AngryRed/face6_row.PNG differ diff --git a/images/AngryRed/face7_col.PNG b/images/AngryRed/face7_col.PNG new file mode 100644 index 0000000..a5d8e66 Binary files /dev/null and b/images/AngryRed/face7_col.PNG differ diff --git a/images/AngryRed/face7_row.PNG b/images/AngryRed/face7_row.PNG new file mode 100644 index 0000000..c111cb3 Binary files /dev/null and b/images/AngryRed/face7_row.PNG differ diff --git a/images/AngryRed/face8_col.PNG b/images/AngryRed/face8_col.PNG new file mode 100644 index 0000000..cbeabc8 Binary files /dev/null and b/images/AngryRed/face8_col.PNG differ diff --git a/images/AngryRed/face8_row.PNG b/images/AngryRed/face8_row.PNG new file mode 100644 index 0000000..e5e0014 Binary files /dev/null and b/images/AngryRed/face8_row.PNG differ diff --git a/images/AngryRed/face9_col.PNG b/images/AngryRed/face9_col.PNG new file mode 100644 index 0000000..3907557 Binary files /dev/null and b/images/AngryRed/face9_col.PNG differ diff --git a/images/AngryRed/face9_row.PNG b/images/AngryRed/face9_row.PNG new file mode 100644 index 0000000..bb5d9e8 Binary files /dev/null and b/images/AngryRed/face9_row.PNG differ diff --git a/images/NeutralNeutral/face10_col.PNG b/images/NeutralNeutral/face10_col.PNG new file mode 100644 index 0000000..d3a9c8e Binary files /dev/null and b/images/NeutralNeutral/face10_col.PNG differ diff --git a/images/NeutralNeutral/face10_row.PNG b/images/NeutralNeutral/face10_row.PNG new file mode 100644 index 0000000..1d208f3 Binary files /dev/null and b/images/NeutralNeutral/face10_row.PNG differ diff --git a/images/NeutralNeutral/face11_col.PNG b/images/NeutralNeutral/face11_col.PNG new file mode 100644 index 0000000..42aa4da Binary files /dev/null and b/images/NeutralNeutral/face11_col.PNG differ diff --git a/images/NeutralNeutral/face11_row.PNG b/images/NeutralNeutral/face11_row.PNG new file mode 100644 index 0000000..1b1b0f1 Binary files /dev/null and b/images/NeutralNeutral/face11_row.PNG differ diff --git a/images/NeutralNeutral/face12_col.PNG b/images/NeutralNeutral/face12_col.PNG new file mode 100644 index 0000000..1c9ada6 Binary files /dev/null and b/images/NeutralNeutral/face12_col.PNG differ diff --git a/images/NeutralNeutral/face12_row.PNG b/images/NeutralNeutral/face12_row.PNG new file mode 100644 index 0000000..8a8f06e Binary files /dev/null and b/images/NeutralNeutral/face12_row.PNG differ diff --git a/images/NeutralNeutral/face13_col.PNG b/images/NeutralNeutral/face13_col.PNG new file mode 100644 index 0000000..91829cd Binary files /dev/null and b/images/NeutralNeutral/face13_col.PNG differ diff --git a/images/NeutralNeutral/face13_row.PNG b/images/NeutralNeutral/face13_row.PNG new file mode 100644 index 0000000..8fcd334 Binary files /dev/null and b/images/NeutralNeutral/face13_row.PNG differ diff --git a/images/NeutralNeutral/face14_col.PNG b/images/NeutralNeutral/face14_col.PNG new file mode 100644 index 0000000..7153d44 Binary files /dev/null and b/images/NeutralNeutral/face14_col.PNG differ diff --git a/images/NeutralNeutral/face14_row.PNG b/images/NeutralNeutral/face14_row.PNG new file mode 100644 index 0000000..6420406 Binary files /dev/null and b/images/NeutralNeutral/face14_row.PNG differ diff --git a/images/NeutralNeutral/face15_col.PNG b/images/NeutralNeutral/face15_col.PNG new file mode 100644 index 0000000..159584d Binary files /dev/null and b/images/NeutralNeutral/face15_col.PNG differ diff --git a/images/NeutralNeutral/face15_row.PNG b/images/NeutralNeutral/face15_row.PNG new file mode 100644 index 0000000..0414a96 Binary files /dev/null and b/images/NeutralNeutral/face15_row.PNG differ diff --git a/images/NeutralNeutral/face1_col.PNG b/images/NeutralNeutral/face1_col.PNG new file mode 100644 index 0000000..7a98268 Binary files /dev/null and b/images/NeutralNeutral/face1_col.PNG differ diff --git a/images/NeutralNeutral/face1_row.PNG b/images/NeutralNeutral/face1_row.PNG new file mode 100644 index 0000000..bb8bbf8 Binary files /dev/null and b/images/NeutralNeutral/face1_row.PNG differ diff --git a/images/NeutralNeutral/face2_col.PNG b/images/NeutralNeutral/face2_col.PNG new file mode 100644 index 0000000..d5c3bf2 Binary files /dev/null and b/images/NeutralNeutral/face2_col.PNG differ diff --git a/images/NeutralNeutral/face2_row.PNG b/images/NeutralNeutral/face2_row.PNG new file mode 100644 index 0000000..c8f101a Binary files /dev/null and b/images/NeutralNeutral/face2_row.PNG differ diff --git a/images/NeutralNeutral/face3_col.PNG b/images/NeutralNeutral/face3_col.PNG new file mode 100644 index 0000000..4e0649e Binary files /dev/null and b/images/NeutralNeutral/face3_col.PNG differ diff --git a/images/NeutralNeutral/face3_row.PNG b/images/NeutralNeutral/face3_row.PNG new file mode 100644 index 0000000..b6edc07 Binary files /dev/null and b/images/NeutralNeutral/face3_row.PNG differ diff --git a/images/NeutralNeutral/face4_col.PNG b/images/NeutralNeutral/face4_col.PNG new file mode 100644 index 0000000..72e6ff1 Binary files /dev/null and b/images/NeutralNeutral/face4_col.PNG differ diff --git a/images/NeutralNeutral/face4_row.PNG b/images/NeutralNeutral/face4_row.PNG new file mode 100644 index 0000000..ed5d7a0 Binary files /dev/null and b/images/NeutralNeutral/face4_row.PNG differ diff --git a/images/NeutralNeutral/face5_col.PNG b/images/NeutralNeutral/face5_col.PNG new file mode 100644 index 0000000..453f336 Binary files /dev/null and b/images/NeutralNeutral/face5_col.PNG differ diff --git a/images/NeutralNeutral/face5_row.PNG b/images/NeutralNeutral/face5_row.PNG new file mode 100644 index 0000000..85879fb Binary files /dev/null and b/images/NeutralNeutral/face5_row.PNG differ diff --git a/images/NeutralNeutral/face6_col.PNG b/images/NeutralNeutral/face6_col.PNG new file mode 100644 index 0000000..473e890 Binary files /dev/null and b/images/NeutralNeutral/face6_col.PNG differ diff --git a/images/NeutralNeutral/face6_row.PNG b/images/NeutralNeutral/face6_row.PNG new file mode 100644 index 0000000..9cde2b9 Binary files /dev/null and b/images/NeutralNeutral/face6_row.PNG differ diff --git a/images/NeutralNeutral/face7_col.PNG b/images/NeutralNeutral/face7_col.PNG new file mode 100644 index 0000000..6adbd5f Binary files /dev/null and b/images/NeutralNeutral/face7_col.PNG differ diff --git a/images/NeutralNeutral/face7_row.PNG b/images/NeutralNeutral/face7_row.PNG new file mode 100644 index 0000000..92b81fc Binary files /dev/null and b/images/NeutralNeutral/face7_row.PNG differ diff --git a/images/NeutralNeutral/face8_col.PNG b/images/NeutralNeutral/face8_col.PNG new file mode 100644 index 0000000..6909669 Binary files /dev/null and b/images/NeutralNeutral/face8_col.PNG differ diff --git a/images/NeutralNeutral/face8_row.PNG b/images/NeutralNeutral/face8_row.PNG new file mode 100644 index 0000000..f42d1f9 Binary files /dev/null and b/images/NeutralNeutral/face8_row.PNG differ diff --git a/images/NeutralNeutral/face9_col.PNG b/images/NeutralNeutral/face9_col.PNG new file mode 100644 index 0000000..509fc94 Binary files /dev/null and b/images/NeutralNeutral/face9_col.PNG differ diff --git a/images/NeutralNeutral/face9_row.PNG b/images/NeutralNeutral/face9_row.PNG new file mode 100644 index 0000000..d0a47d2 Binary files /dev/null and b/images/NeutralNeutral/face9_row.PNG differ diff --git a/images/NeutralRed/face10_col.PNG b/images/NeutralRed/face10_col.PNG new file mode 100644 index 0000000..e05f9a8 Binary files /dev/null and b/images/NeutralRed/face10_col.PNG differ diff --git a/images/NeutralRed/face10_row.PNG b/images/NeutralRed/face10_row.PNG new file mode 100644 index 0000000..fa5c4f3 Binary files /dev/null and b/images/NeutralRed/face10_row.PNG differ diff --git a/images/NeutralRed/face11_col.PNG b/images/NeutralRed/face11_col.PNG new file mode 100644 index 0000000..53156cd Binary files /dev/null and b/images/NeutralRed/face11_col.PNG differ diff --git a/images/NeutralRed/face11_row.PNG b/images/NeutralRed/face11_row.PNG new file mode 100644 index 0000000..4c331d9 Binary files /dev/null and b/images/NeutralRed/face11_row.PNG differ diff --git a/images/NeutralRed/face12_col.PNG b/images/NeutralRed/face12_col.PNG new file mode 100644 index 0000000..bb50b07 Binary files /dev/null and b/images/NeutralRed/face12_col.PNG differ diff --git a/images/NeutralRed/face12_row.PNG b/images/NeutralRed/face12_row.PNG new file mode 100644 index 0000000..782a784 Binary files /dev/null and b/images/NeutralRed/face12_row.PNG differ diff --git a/images/NeutralRed/face13_col.PNG b/images/NeutralRed/face13_col.PNG new file mode 100644 index 0000000..32179aa Binary files /dev/null and b/images/NeutralRed/face13_col.PNG differ diff --git a/images/NeutralRed/face13_row.PNG b/images/NeutralRed/face13_row.PNG new file mode 100644 index 0000000..7bfb077 Binary files /dev/null and b/images/NeutralRed/face13_row.PNG differ diff --git a/images/NeutralRed/face14_col.PNG b/images/NeutralRed/face14_col.PNG new file mode 100644 index 0000000..b9e4501 Binary files /dev/null and b/images/NeutralRed/face14_col.PNG differ diff --git a/images/NeutralRed/face14_row.PNG b/images/NeutralRed/face14_row.PNG new file mode 100644 index 0000000..1362847 Binary files /dev/null and b/images/NeutralRed/face14_row.PNG differ diff --git a/images/NeutralRed/face15_col.PNG b/images/NeutralRed/face15_col.PNG new file mode 100644 index 0000000..599151e Binary files /dev/null and b/images/NeutralRed/face15_col.PNG differ diff --git a/images/NeutralRed/face15_row.PNG b/images/NeutralRed/face15_row.PNG new file mode 100644 index 0000000..09ee680 Binary files /dev/null and b/images/NeutralRed/face15_row.PNG differ diff --git a/images/NeutralRed/face1_col.PNG b/images/NeutralRed/face1_col.PNG new file mode 100644 index 0000000..0cafa45 Binary files /dev/null and b/images/NeutralRed/face1_col.PNG differ diff --git a/images/NeutralRed/face1_row.PNG b/images/NeutralRed/face1_row.PNG new file mode 100644 index 0000000..65b1ccc Binary files /dev/null and b/images/NeutralRed/face1_row.PNG differ diff --git a/images/NeutralRed/face2_col.PNG b/images/NeutralRed/face2_col.PNG new file mode 100644 index 0000000..3a54514 Binary files /dev/null and b/images/NeutralRed/face2_col.PNG differ diff --git a/images/NeutralRed/face2_row.PNG b/images/NeutralRed/face2_row.PNG new file mode 100644 index 0000000..cb57e61 Binary files /dev/null and b/images/NeutralRed/face2_row.PNG differ diff --git a/images/NeutralRed/face3_col.PNG b/images/NeutralRed/face3_col.PNG new file mode 100644 index 0000000..bb79836 Binary files /dev/null and b/images/NeutralRed/face3_col.PNG differ diff --git a/images/NeutralRed/face3_row.PNG b/images/NeutralRed/face3_row.PNG new file mode 100644 index 0000000..5070d48 Binary files /dev/null and b/images/NeutralRed/face3_row.PNG differ diff --git a/images/NeutralRed/face4_col.PNG b/images/NeutralRed/face4_col.PNG new file mode 100644 index 0000000..fd8b7fb Binary files /dev/null and b/images/NeutralRed/face4_col.PNG differ diff --git a/images/NeutralRed/face4_row.PNG b/images/NeutralRed/face4_row.PNG new file mode 100644 index 0000000..ecd2058 Binary files /dev/null and b/images/NeutralRed/face4_row.PNG differ diff --git a/images/NeutralRed/face5_col.PNG b/images/NeutralRed/face5_col.PNG new file mode 100644 index 0000000..2a0c57b Binary files /dev/null and b/images/NeutralRed/face5_col.PNG differ diff --git a/images/NeutralRed/face5_row.PNG b/images/NeutralRed/face5_row.PNG new file mode 100644 index 0000000..ef8938c Binary files /dev/null and b/images/NeutralRed/face5_row.PNG differ diff --git a/images/NeutralRed/face6_col.PNG b/images/NeutralRed/face6_col.PNG new file mode 100644 index 0000000..bbc6542 Binary files /dev/null and b/images/NeutralRed/face6_col.PNG differ diff --git a/images/NeutralRed/face6_row.PNG b/images/NeutralRed/face6_row.PNG new file mode 100644 index 0000000..f9ad4d0 Binary files /dev/null and b/images/NeutralRed/face6_row.PNG differ diff --git a/images/NeutralRed/face7_col.PNG b/images/NeutralRed/face7_col.PNG new file mode 100644 index 0000000..99917ad Binary files /dev/null and b/images/NeutralRed/face7_col.PNG differ diff --git a/images/NeutralRed/face7_row.PNG b/images/NeutralRed/face7_row.PNG new file mode 100644 index 0000000..98eac8a Binary files /dev/null and b/images/NeutralRed/face7_row.PNG differ diff --git a/images/NeutralRed/face8_col.PNG b/images/NeutralRed/face8_col.PNG new file mode 100644 index 0000000..ee46d07 Binary files /dev/null and b/images/NeutralRed/face8_col.PNG differ diff --git a/images/NeutralRed/face8_row.PNG b/images/NeutralRed/face8_row.PNG new file mode 100644 index 0000000..d117b09 Binary files /dev/null and b/images/NeutralRed/face8_row.PNG differ diff --git a/images/NeutralRed/face9_col.PNG b/images/NeutralRed/face9_col.PNG new file mode 100644 index 0000000..8a92ffd Binary files /dev/null and b/images/NeutralRed/face9_col.PNG differ diff --git a/images/NeutralRed/face9_row.PNG b/images/NeutralRed/face9_row.PNG new file mode 100644 index 0000000..d8945d0 Binary files /dev/null and b/images/NeutralRed/face9_row.PNG differ diff --git a/images/_indiv_faces/.DS_Store b/images/_indiv_faces/.DS_Store new file mode 100644 index 0000000..1afb48c Binary files /dev/null and b/images/_indiv_faces/.DS_Store differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/.state_for_dir.dir b/images/_indiv_faces/AngryNeutral/._DAV/.state_for_dir.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/.state_for_dir.pag b/images/_indiv_faces/AngryNeutral/._DAV/.state_for_dir.pag new file mode 100755 index 0000000..f3b552a Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/.state_for_dir.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN1.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN1.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN1.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN1.png.pag new file mode 100755 index 0000000..84f1ccc Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN1.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN10.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN10.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN10.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN10.png.pag new file mode 100755 index 0000000..84f1ccc Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN10.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN11.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN11.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN11.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN11.png.pag new file mode 100755 index 0000000..84f1ccc Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN11.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN12.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN12.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN12.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN12.png.pag new file mode 100755 index 0000000..c2994a0 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN12.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN13.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN13.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN13.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN13.png.pag new file mode 100755 index 0000000..c2994a0 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN13.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN14.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN14.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN14.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN14.png.pag new file mode 100755 index 0000000..c2994a0 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN14.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN15.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN15.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN15.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN15.png.pag new file mode 100755 index 0000000..c2994a0 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN15.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN2.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN2.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN2.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN2.png.pag new file mode 100755 index 0000000..948f6f5 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN2.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN3.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN3.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN3.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN3.png.pag new file mode 100755 index 0000000..948f6f5 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN3.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN4.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN4.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN4.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN4.png.pag new file mode 100755 index 0000000..948f6f5 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN4.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN5.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN5.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN5.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN5.png.pag new file mode 100755 index 0000000..948f6f5 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN5.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN6.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN6.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN6.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN6.png.pag new file mode 100755 index 0000000..45a33c2 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN6.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN7.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN7.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN7.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN7.png.pag new file mode 100755 index 0000000..45a33c2 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN7.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN8.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN8.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN8.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN8.png.pag new file mode 100755 index 0000000..45a33c2 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN8.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN9.png.dir b/images/_indiv_faces/AngryNeutral/._DAV/AN9.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/AN9.png.pag b/images/_indiv_faces/AngryNeutral/._DAV/AN9.png.pag new file mode 100755 index 0000000..45a33c2 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/AN9.png.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/Thumbs.db.dir b/images/_indiv_faces/AngryNeutral/._DAV/Thumbs.db.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/Thumbs.db.pag b/images/_indiv_faces/AngryNeutral/._DAV/Thumbs.db.pag new file mode 100755 index 0000000..3fd5d1f Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/Thumbs.db.pag differ diff --git a/images/_indiv_faces/AngryNeutral/._DAV/white.jpg.dir b/images/_indiv_faces/AngryNeutral/._DAV/white.jpg.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryNeutral/._DAV/white.jpg.pag b/images/_indiv_faces/AngryNeutral/._DAV/white.jpg.pag new file mode 100755 index 0000000..29560cd Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/._DAV/white.jpg.pag differ diff --git a/images/_indiv_faces/AngryNeutral/AN1.png b/images/_indiv_faces/AngryNeutral/AN1.png new file mode 100755 index 0000000..c312f9b Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN1.png differ diff --git a/images/_indiv_faces/AngryNeutral/AN10.png b/images/_indiv_faces/AngryNeutral/AN10.png new file mode 100755 index 0000000..1d33236 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN10.png differ diff --git a/images/_indiv_faces/AngryNeutral/AN11.png b/images/_indiv_faces/AngryNeutral/AN11.png new file mode 100755 index 0000000..2f55440 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN11.png differ diff --git a/images/_indiv_faces/AngryNeutral/AN12.png b/images/_indiv_faces/AngryNeutral/AN12.png new file mode 100755 index 0000000..cb866a8 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN12.png differ diff --git a/images/_indiv_faces/AngryNeutral/AN13.png b/images/_indiv_faces/AngryNeutral/AN13.png new file mode 100755 index 0000000..cdb2cc7 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN13.png differ diff --git a/images/_indiv_faces/AngryNeutral/AN14.png b/images/_indiv_faces/AngryNeutral/AN14.png new file mode 100755 index 0000000..7bf6da5 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN14.png differ diff --git a/images/_indiv_faces/AngryNeutral/AN15.png b/images/_indiv_faces/AngryNeutral/AN15.png new file mode 100755 index 0000000..fb12e54 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN15.png differ diff --git a/images/_indiv_faces/AngryNeutral/AN2.png b/images/_indiv_faces/AngryNeutral/AN2.png new file mode 100755 index 0000000..197c3cc Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN2.png differ diff --git a/images/_indiv_faces/AngryNeutral/AN3.png b/images/_indiv_faces/AngryNeutral/AN3.png new file mode 100755 index 0000000..7e22a1e Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN3.png differ diff --git a/images/_indiv_faces/AngryNeutral/AN4.png b/images/_indiv_faces/AngryNeutral/AN4.png new file mode 100755 index 0000000..b1f691d Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN4.png differ diff --git a/images/_indiv_faces/AngryNeutral/AN5.png b/images/_indiv_faces/AngryNeutral/AN5.png new file mode 100755 index 0000000..c31f751 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN5.png differ diff --git a/images/_indiv_faces/AngryNeutral/AN6.png b/images/_indiv_faces/AngryNeutral/AN6.png new file mode 100755 index 0000000..15e5220 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN6.png differ diff --git a/images/_indiv_faces/AngryNeutral/AN7.png b/images/_indiv_faces/AngryNeutral/AN7.png new file mode 100755 index 0000000..ce4921d Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN7.png differ diff --git a/images/_indiv_faces/AngryNeutral/AN8.png b/images/_indiv_faces/AngryNeutral/AN8.png new file mode 100755 index 0000000..dfe5e2e Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN8.png differ diff --git a/images/_indiv_faces/AngryNeutral/AN9.png b/images/_indiv_faces/AngryNeutral/AN9.png new file mode 100755 index 0000000..3a19bff Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/AN9.png differ diff --git a/images/_indiv_faces/AngryNeutral/Thumbs.db b/images/_indiv_faces/AngryNeutral/Thumbs.db new file mode 100755 index 0000000..a9aad20 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/Thumbs.db differ diff --git a/images/_indiv_faces/AngryNeutral/white.jpg b/images/_indiv_faces/AngryNeutral/white.jpg new file mode 100755 index 0000000..eebd500 Binary files /dev/null and b/images/_indiv_faces/AngryNeutral/white.jpg differ diff --git a/images/_indiv_faces/AngryRed/._DAV/.state_for_dir.dir b/images/_indiv_faces/AngryRed/._DAV/.state_for_dir.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/.state_for_dir.pag b/images/_indiv_faces/AngryRed/._DAV/.state_for_dir.pag new file mode 100755 index 0000000..397629e Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/.state_for_dir.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR1.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR1.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR1.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR1.png.pag new file mode 100755 index 0000000..d18e0b7 Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR1.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR10.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR10.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR10.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR10.png.pag new file mode 100755 index 0000000..d18e0b7 Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR10.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR11.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR11.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR11.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR11.png.pag new file mode 100755 index 0000000..d18e0b7 Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR11.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR12.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR12.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR12.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR12.png.pag new file mode 100755 index 0000000..d18e0b7 Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR12.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR13.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR13.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR13.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR13.png.pag new file mode 100755 index 0000000..d18e0b7 Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR13.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR14.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR14.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR14.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR14.png.pag new file mode 100755 index 0000000..d18e0b7 Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR14.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR15.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR15.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR15.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR15.png.pag new file mode 100755 index 0000000..032580d Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR15.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR2.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR2.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR2.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR2.png.pag new file mode 100755 index 0000000..032580d Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR2.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR3.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR3.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR3.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR3.png.pag new file mode 100755 index 0000000..032580d Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR3.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR4.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR4.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR4.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR4.png.pag new file mode 100755 index 0000000..032580d Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR4.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR5.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR5.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR5.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR5.png.pag new file mode 100755 index 0000000..c960f8c Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR5.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR6.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR6.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR6.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR6.png.pag new file mode 100755 index 0000000..c960f8c Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR6.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR7.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR7.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR7.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR7.png.pag new file mode 100755 index 0000000..c960f8c Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR7.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR8.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR8.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR8.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR8.png.pag new file mode 100755 index 0000000..c960f8c Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR8.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/AR9.png.dir b/images/_indiv_faces/AngryRed/._DAV/AR9.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/AR9.png.pag b/images/_indiv_faces/AngryRed/._DAV/AR9.png.pag new file mode 100755 index 0000000..c960f8c Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/AR9.png.pag differ diff --git a/images/_indiv_faces/AngryRed/._DAV/Thumbs.db.dir b/images/_indiv_faces/AngryRed/._DAV/Thumbs.db.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/AngryRed/._DAV/Thumbs.db.pag b/images/_indiv_faces/AngryRed/._DAV/Thumbs.db.pag new file mode 100755 index 0000000..92be790 Binary files /dev/null and b/images/_indiv_faces/AngryRed/._DAV/Thumbs.db.pag differ diff --git a/images/_indiv_faces/AngryRed/AR1.png b/images/_indiv_faces/AngryRed/AR1.png new file mode 100755 index 0000000..189e67b Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR1.png differ diff --git a/images/_indiv_faces/AngryRed/AR10.png b/images/_indiv_faces/AngryRed/AR10.png new file mode 100755 index 0000000..3245748 Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR10.png differ diff --git a/images/_indiv_faces/AngryRed/AR11.png b/images/_indiv_faces/AngryRed/AR11.png new file mode 100755 index 0000000..e74e4e5 Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR11.png differ diff --git a/images/_indiv_faces/AngryRed/AR12.png b/images/_indiv_faces/AngryRed/AR12.png new file mode 100755 index 0000000..6bea94d Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR12.png differ diff --git a/images/_indiv_faces/AngryRed/AR13.png b/images/_indiv_faces/AngryRed/AR13.png new file mode 100755 index 0000000..7e01261 Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR13.png differ diff --git a/images/_indiv_faces/AngryRed/AR14.png b/images/_indiv_faces/AngryRed/AR14.png new file mode 100755 index 0000000..a2d26d2 Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR14.png differ diff --git a/images/_indiv_faces/AngryRed/AR15.png b/images/_indiv_faces/AngryRed/AR15.png new file mode 100755 index 0000000..34bfdf6 Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR15.png differ diff --git a/images/_indiv_faces/AngryRed/AR2.png b/images/_indiv_faces/AngryRed/AR2.png new file mode 100755 index 0000000..d5b4072 Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR2.png differ diff --git a/images/_indiv_faces/AngryRed/AR3.png b/images/_indiv_faces/AngryRed/AR3.png new file mode 100755 index 0000000..ecb6046 Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR3.png differ diff --git a/images/_indiv_faces/AngryRed/AR4.png b/images/_indiv_faces/AngryRed/AR4.png new file mode 100755 index 0000000..725b298 Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR4.png differ diff --git a/images/_indiv_faces/AngryRed/AR5.png b/images/_indiv_faces/AngryRed/AR5.png new file mode 100755 index 0000000..1b1e1bd Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR5.png differ diff --git a/images/_indiv_faces/AngryRed/AR6.png b/images/_indiv_faces/AngryRed/AR6.png new file mode 100755 index 0000000..ef9c8b7 Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR6.png differ diff --git a/images/_indiv_faces/AngryRed/AR7.png b/images/_indiv_faces/AngryRed/AR7.png new file mode 100755 index 0000000..94435d4 Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR7.png differ diff --git a/images/_indiv_faces/AngryRed/AR8.png b/images/_indiv_faces/AngryRed/AR8.png new file mode 100755 index 0000000..278990f Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR8.png differ diff --git a/images/_indiv_faces/AngryRed/AR9.png b/images/_indiv_faces/AngryRed/AR9.png new file mode 100755 index 0000000..7174744 Binary files /dev/null and b/images/_indiv_faces/AngryRed/AR9.png differ diff --git a/images/_indiv_faces/AngryRed/Thumbs.db b/images/_indiv_faces/AngryRed/Thumbs.db new file mode 100755 index 0000000..03487fd Binary files /dev/null and b/images/_indiv_faces/AngryRed/Thumbs.db differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/.state_for_dir.dir b/images/_indiv_faces/NeutralNeutral/._DAV/.state_for_dir.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/.state_for_dir.pag b/images/_indiv_faces/NeutralNeutral/._DAV/.state_for_dir.pag new file mode 100755 index 0000000..f50905c Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/.state_for_dir.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN1.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN1.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN1.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN1.png.pag new file mode 100755 index 0000000..e375019 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN1.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN10.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN10.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN10.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN10.png.pag new file mode 100755 index 0000000..ce83a2f Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN10.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN11.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN11.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN11.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN11.png.pag new file mode 100755 index 0000000..ce83a2f Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN11.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN12.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN12.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN12.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN12.png.pag new file mode 100755 index 0000000..ce83a2f Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN12.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN13.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN13.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN13.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN13.png.pag new file mode 100755 index 0000000..ce83a2f Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN13.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN14.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN14.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN14.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN14.png.pag new file mode 100755 index 0000000..ce83a2f Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN14.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN15.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN15.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN15.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN15.png.pag new file mode 100755 index 0000000..d7b7de4 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN15.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN2.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN2.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN2.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN2.png.pag new file mode 100755 index 0000000..d7b7de4 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN2.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN3.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN3.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN3.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN3.png.pag new file mode 100755 index 0000000..d7b7de4 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN3.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN4.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN4.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN4.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN4.png.pag new file mode 100755 index 0000000..4084d21 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN4.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN5.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN5.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN5.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN5.png.pag new file mode 100755 index 0000000..044b592 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN5.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN6.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN6.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN6.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN6.png.pag new file mode 100755 index 0000000..044b592 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN6.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN7.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN7.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN7.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN7.png.pag new file mode 100755 index 0000000..044b592 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN7.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN8.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN8.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN8.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN8.png.pag new file mode 100755 index 0000000..044b592 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN8.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN9.png.dir b/images/_indiv_faces/NeutralNeutral/._DAV/NN9.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/NN9.png.pag b/images/_indiv_faces/NeutralNeutral/._DAV/NN9.png.pag new file mode 100755 index 0000000..b94c65e Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/NN9.png.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/Thumbs.db.dir b/images/_indiv_faces/NeutralNeutral/._DAV/Thumbs.db.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralNeutral/._DAV/Thumbs.db.pag b/images/_indiv_faces/NeutralNeutral/._DAV/Thumbs.db.pag new file mode 100755 index 0000000..baa52cc Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/._DAV/Thumbs.db.pag differ diff --git a/images/_indiv_faces/NeutralNeutral/NN1.png b/images/_indiv_faces/NeutralNeutral/NN1.png new file mode 100755 index 0000000..e60b75f Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN1.png differ diff --git a/images/_indiv_faces/NeutralNeutral/NN10.png b/images/_indiv_faces/NeutralNeutral/NN10.png new file mode 100755 index 0000000..82bed4b Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN10.png differ diff --git a/images/_indiv_faces/NeutralNeutral/NN11.png b/images/_indiv_faces/NeutralNeutral/NN11.png new file mode 100755 index 0000000..de906f1 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN11.png differ diff --git a/images/_indiv_faces/NeutralNeutral/NN12.png b/images/_indiv_faces/NeutralNeutral/NN12.png new file mode 100755 index 0000000..a144bbb Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN12.png differ diff --git a/images/_indiv_faces/NeutralNeutral/NN13.png b/images/_indiv_faces/NeutralNeutral/NN13.png new file mode 100755 index 0000000..12552e8 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN13.png differ diff --git a/images/_indiv_faces/NeutralNeutral/NN14.png b/images/_indiv_faces/NeutralNeutral/NN14.png new file mode 100755 index 0000000..34d4040 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN14.png differ diff --git a/images/_indiv_faces/NeutralNeutral/NN15.png b/images/_indiv_faces/NeutralNeutral/NN15.png new file mode 100755 index 0000000..096bfff Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN15.png differ diff --git a/images/_indiv_faces/NeutralNeutral/NN2.png b/images/_indiv_faces/NeutralNeutral/NN2.png new file mode 100755 index 0000000..3d59fae Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN2.png differ diff --git a/images/_indiv_faces/NeutralNeutral/NN3.png b/images/_indiv_faces/NeutralNeutral/NN3.png new file mode 100755 index 0000000..70dfed8 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN3.png differ diff --git a/images/_indiv_faces/NeutralNeutral/NN4.png b/images/_indiv_faces/NeutralNeutral/NN4.png new file mode 100755 index 0000000..a69bdac Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN4.png differ diff --git a/images/_indiv_faces/NeutralNeutral/NN5.png b/images/_indiv_faces/NeutralNeutral/NN5.png new file mode 100755 index 0000000..4813d79 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN5.png differ diff --git a/images/_indiv_faces/NeutralNeutral/NN6.png b/images/_indiv_faces/NeutralNeutral/NN6.png new file mode 100755 index 0000000..e2f29d8 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN6.png differ diff --git a/images/_indiv_faces/NeutralNeutral/NN7.png b/images/_indiv_faces/NeutralNeutral/NN7.png new file mode 100755 index 0000000..3f11126 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN7.png differ diff --git a/images/_indiv_faces/NeutralNeutral/NN8.png b/images/_indiv_faces/NeutralNeutral/NN8.png new file mode 100755 index 0000000..9738117 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN8.png differ diff --git a/images/_indiv_faces/NeutralNeutral/NN9.png b/images/_indiv_faces/NeutralNeutral/NN9.png new file mode 100755 index 0000000..d974c53 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/NN9.png differ diff --git a/images/_indiv_faces/NeutralNeutral/Thumbs.db b/images/_indiv_faces/NeutralNeutral/Thumbs.db new file mode 100755 index 0000000..291c0d6 Binary files /dev/null and b/images/_indiv_faces/NeutralNeutral/Thumbs.db differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/.state_for_dir.dir b/images/_indiv_faces/NeutralRed/._DAV/.state_for_dir.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/.state_for_dir.pag b/images/_indiv_faces/NeutralRed/._DAV/.state_for_dir.pag new file mode 100755 index 0000000..1119705 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/.state_for_dir.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR1.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR1.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR1.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR1.png.pag new file mode 100755 index 0000000..1240147 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR1.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR10.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR10.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR10.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR10.png.pag new file mode 100755 index 0000000..1240147 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR10.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR11.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR11.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR11.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR11.png.pag new file mode 100755 index 0000000..1240147 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR11.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR12.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR12.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR12.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR12.png.pag new file mode 100755 index 0000000..1240147 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR12.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR13.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR13.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR13.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR13.png.pag new file mode 100755 index 0000000..5a72183 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR13.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR14.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR14.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR14.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR14.png.pag new file mode 100755 index 0000000..5a72183 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR14.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR15.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR15.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR15.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR15.png.pag new file mode 100755 index 0000000..5a72183 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR15.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR2.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR2.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR2.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR2.png.pag new file mode 100755 index 0000000..5a72183 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR2.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR3.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR3.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR3.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR3.png.pag new file mode 100755 index 0000000..5a72183 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR3.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR4.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR4.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR4.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR4.png.pag new file mode 100755 index 0000000..39974d3 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR4.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR5.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR5.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR5.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR5.png.pag new file mode 100755 index 0000000..39974d3 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR5.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR6.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR6.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR6.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR6.png.pag new file mode 100755 index 0000000..39974d3 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR6.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR7.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR7.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR7.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR7.png.pag new file mode 100755 index 0000000..39974d3 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR7.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR8.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR8.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR8.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR8.png.pag new file mode 100755 index 0000000..5a72183 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR8.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR9.png.dir b/images/_indiv_faces/NeutralRed/._DAV/NR9.png.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/NR9.png.pag b/images/_indiv_faces/NeutralRed/._DAV/NR9.png.pag new file mode 100755 index 0000000..44c0b3f Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/NR9.png.pag differ diff --git a/images/_indiv_faces/NeutralRed/._DAV/Thumbs.db.dir b/images/_indiv_faces/NeutralRed/._DAV/Thumbs.db.dir new file mode 100755 index 0000000..e69de29 diff --git a/images/_indiv_faces/NeutralRed/._DAV/Thumbs.db.pag b/images/_indiv_faces/NeutralRed/._DAV/Thumbs.db.pag new file mode 100755 index 0000000..2f93513 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/._DAV/Thumbs.db.pag differ diff --git a/images/_indiv_faces/NeutralRed/NR1.png b/images/_indiv_faces/NeutralRed/NR1.png new file mode 100755 index 0000000..ea075f1 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR1.png differ diff --git a/images/_indiv_faces/NeutralRed/NR10.png b/images/_indiv_faces/NeutralRed/NR10.png new file mode 100755 index 0000000..f89e512 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR10.png differ diff --git a/images/_indiv_faces/NeutralRed/NR11.png b/images/_indiv_faces/NeutralRed/NR11.png new file mode 100755 index 0000000..7525dce Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR11.png differ diff --git a/images/_indiv_faces/NeutralRed/NR12.png b/images/_indiv_faces/NeutralRed/NR12.png new file mode 100755 index 0000000..1f41c4b Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR12.png differ diff --git a/images/_indiv_faces/NeutralRed/NR13.png b/images/_indiv_faces/NeutralRed/NR13.png new file mode 100755 index 0000000..f42c8f4 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR13.png differ diff --git a/images/_indiv_faces/NeutralRed/NR14.png b/images/_indiv_faces/NeutralRed/NR14.png new file mode 100755 index 0000000..5b641dd Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR14.png differ diff --git a/images/_indiv_faces/NeutralRed/NR15.png b/images/_indiv_faces/NeutralRed/NR15.png new file mode 100755 index 0000000..d6b66ee Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR15.png differ diff --git a/images/_indiv_faces/NeutralRed/NR2.png b/images/_indiv_faces/NeutralRed/NR2.png new file mode 100755 index 0000000..ca8737a Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR2.png differ diff --git a/images/_indiv_faces/NeutralRed/NR3.png b/images/_indiv_faces/NeutralRed/NR3.png new file mode 100755 index 0000000..8bb345d Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR3.png differ diff --git a/images/_indiv_faces/NeutralRed/NR4.png b/images/_indiv_faces/NeutralRed/NR4.png new file mode 100755 index 0000000..d4a9600 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR4.png differ diff --git a/images/_indiv_faces/NeutralRed/NR5.png b/images/_indiv_faces/NeutralRed/NR5.png new file mode 100755 index 0000000..a34170d Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR5.png differ diff --git a/images/_indiv_faces/NeutralRed/NR6.png b/images/_indiv_faces/NeutralRed/NR6.png new file mode 100755 index 0000000..1383a1d Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR6.png differ diff --git a/images/_indiv_faces/NeutralRed/NR7.png b/images/_indiv_faces/NeutralRed/NR7.png new file mode 100755 index 0000000..1b3caf8 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR7.png differ diff --git a/images/_indiv_faces/NeutralRed/NR8.png b/images/_indiv_faces/NeutralRed/NR8.png new file mode 100755 index 0000000..1931077 Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR8.png differ diff --git a/images/_indiv_faces/NeutralRed/NR9.png b/images/_indiv_faces/NeutralRed/NR9.png new file mode 100755 index 0000000..b9858ff Binary files /dev/null and b/images/_indiv_faces/NeutralRed/NR9.png differ diff --git a/images/_indiv_faces/NeutralRed/Thumbs.db b/images/_indiv_faces/NeutralRed/Thumbs.db new file mode 100755 index 0000000..8d1cbbf Binary files /dev/null and b/images/_indiv_faces/NeutralRed/Thumbs.db differ diff --git a/images/_indiv_faces/White/.DS_Store b/images/_indiv_faces/White/.DS_Store new file mode 100644 index 0000000..5008ddf Binary files /dev/null and b/images/_indiv_faces/White/.DS_Store differ diff --git a/images/_indiv_faces/White/white.png b/images/_indiv_faces/White/white.png new file mode 100644 index 0000000..fffbca4 Binary files /dev/null and b/images/_indiv_faces/White/white.png differ diff --git a/images/all_finished.png b/images/all_finished.png new file mode 100644 index 0000000..0cca7c8 Binary files /dev/null and b/images/all_finished.png differ diff --git a/images/break_instructions_1.png b/images/break_instructions_1.png new file mode 100644 index 0000000..9ddb0db Binary files /dev/null and b/images/break_instructions_1.png differ diff --git a/images/break_instructions_2.png b/images/break_instructions_2.png new file mode 100644 index 0000000..8ee2cff Binary files /dev/null and b/images/break_instructions_2.png differ diff --git a/images/create_row_col_masks.ipynb b/images/create_row_col_masks.ipynb new file mode 100644 index 0000000..f2f710f --- /dev/null +++ b/images/create_row_col_masks.ipynb @@ -0,0 +1,144 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "from glob import glob\n", + "from PIL import Image\n", + "from itertools import permutations \n", + "import numpy as np" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Paths" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "image_path = './'\n", + "source_path = image_path + '_indiv_faces/'\n", + "in_dirs = glob(source_path + '*' )\n", + "\n", + "img_categories = [i.split('/') [-1] for i in in_dirs]\n", + "\n", + "out_dirs = []\n", + "for i in img_categories:\n", + " img_dir = image_path + i\n", + " out_dirs.append(img_dir)\n", + " if not os.path.exists(img_dir):\n", + " os.mkdir(img_dir) " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Image dimensions and math" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "n_steps = 6 # hard-coded; number of characters in each row & column of square matrix_img\n", + "mask_fraction = .8 # proportion of area around target covered by mask\n", + "\n", + "matrix_img = Image.open(image_path + 'letter_grid_6x6.png')\n", + "matrix_size = (min(matrix_img.size), min(matrix_img.size)) # size of speller character matrix image, in pixels\n", + "img_format = matrix_img.format\n", + "\n", + "matrix_ctr = (matrix_size[0] // 2, matrix_size[1] // 2)\n", + "locs = np.arange(min(matrix_size) / n_steps / 2, min(matrix_size), min(matrix_size) / n_steps).astype(int)\n", + "mask_size = round(mask_fraction * locs[1] - locs[0])\n" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Loop over each image in folder, creating row & column" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "for idx, i in enumerate(img_categories):\n", + " in_files = glob(in_dirs[idx] + '/*.png')\n", + " out_dir = out_dirs[idx]\n", + " for in_img in in_files:\n", + " tile_img = Image.open(in_img)\n", + " tile_img = tile_img.resize((mask_size, mask_size))\n", + " tile_size = tile_img.size\n", + "\n", + " row_img = Image.new(tile_img.mode, \n", + " (matrix_size[0], tile_size[1])\n", + " )\n", + " for loc in locs:\n", + " tl_corner = (loc - round(tile_size[0] / 2), 0)\n", + " # print(tl_corner)\n", + " row_img.paste(tile_img, box=tl_corner)\n", + " out_fname = 'face' + os.path.splitext(in_img)[0].split('/')[-1][2:] + '_row.' + img_format\n", + " row_img.save(out_dir + '/' + out_fname)\n", + "\n", + " col_img = Image.new(tile_img.mode, \n", + " (tile_size[0], matrix_size[1])\n", + " )\n", + " for loc in locs:\n", + " tl_corner = (0, loc - round(tile_size[0] / 2))\n", + " col_img.paste(tile_img, box=tl_corner)\n", + " out_fname = 'face' + os.path.splitext(in_img)[0].split('/')[-1][2:] + '_col.' + img_format\n", + " col_img.save(out_dir + '/' + out_fname) " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3.10.6 ('eeg')", + "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.10.6" + }, + "orig_nbformat": 4, + "vscode": { + "interpreter": { + "hash": "a8ee0125304c48a7dae18728506102a5d66693cc245d7232811a78e6cb7f32b3" + } + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/images/instruction_screens.pptx b/images/instruction_screens.pptx new file mode 100644 index 0000000..3ddb632 Binary files /dev/null and b/images/instruction_screens.pptx differ diff --git a/images/instructions.png b/images/instructions.png new file mode 100644 index 0000000..801fad3 Binary files /dev/null and b/images/instructions.png differ diff --git a/images/letter_grid_6x6_darkmode.pdf b/images/letter_grid_6x6_darkmode.pdf new file mode 100644 index 0000000..7745afd Binary files /dev/null and b/images/letter_grid_6x6_darkmode.pdf differ diff --git a/images/letter_grid_6x6_darkmode.png b/images/letter_grid_6x6_darkmode.png new file mode 100644 index 0000000..7c826e3 Binary files /dev/null and b/images/letter_grid_6x6_darkmode.png differ diff --git a/images/letter_grid_6x6_lightmode.pdf b/images/letter_grid_6x6_lightmode.pdf new file mode 100755 index 0000000..ce718f7 Binary files /dev/null and b/images/letter_grid_6x6_lightmode.pdf differ diff --git a/images/letter_grid_6x6_lightmode.png b/images/letter_grid_6x6_lightmode.png new file mode 100755 index 0000000..158dcf9 Binary files /dev/null and b/images/letter_grid_6x6_lightmode.png differ diff --git a/levels_conditions.csv b/levels_conditions.csv new file mode 100644 index 0000000..cbe0108 --- /dev/null +++ b/levels_conditions.csv @@ -0,0 +1,5 @@ +highlightType,conditionCode +AngryNeutral,1 +AngryRed,2 +NeutralNeutral,3 +NeutralRed,4 diff --git a/levels_row_col.csv b/levels_row_col.csv new file mode 100644 index 0000000..e651a0e --- /dev/null +++ b/levels_row_col.csv @@ -0,0 +1,13 @@ +rowCol,index,position,rowColCode +row,1,"(0, 450)",101 +row,2,"(0, 270)",102 +row,3,"(0, 90)",103 +row,4,"(0, -90)",104 +row,5,"(0, -270)",105 +row,6,"(0, -450)",106 +col,1,"(-450, 0)",201 +col,2,"(-270, 0)",202 +col,3,"(-90, 0)",203 +col,4,"(90, 0)",204 +col,5,"(270, 0)",205 +col,6,"(450, 0)",206 diff --git a/levels_targets.csv b/levels_targets.csv new file mode 100644 index 0000000..3d4c816 --- /dev/null +++ b/levels_targets.csv @@ -0,0 +1,37 @@ +matrixItem,matrixPosition,targetCode +A,"(-450, 450)",11 +B,"(-270, 450)",12 +C,"(-90, 450)",13 +D,"(90, 450)",14 +E,"(270, 450)",15 +F,"(450, 450)",16 +G,"(-450, 270)",21 +H,"(-270, 270)",22 +I,"(-90, 270)",23 +J,"(90, 270)",24 +K,"(270, 270)",25 +L,"(450, 270)",26 +M,"(-450, 90)",31 +N,"(-270, 90)",32 +O,"(-90, 90)",33 +P,"(90, 90)",34 +Q,"(270, 90)",35 +R,"(450, 90)",36 +S,"(-450, -90)",41 +T,"(-270,-90)",42 +U,"(-90, -90)",43 +V,"(90, -90)",44 +W,"(270, -90)",45 +X,"(450, -90)",46 +Y,"(-450, -270)",51 +Z,"(-270, -270)",52 +1,"(-90, -270)",53 +2,"(90, -270)",54 +3,"(270, -270)",55 +4,"(450, -270)",56 +5,"(-450, -450)",61 +6,"(-270, -450)",62 +7,"(-90, -450)",63 +8,"(90, -450)",64 +9,"(270, -450)",65 +0,"(450, -450)",66