<?xml version="1.0" ?>
<PsychoPy2experiment encoding="utf-8" version="3.1.1">
  <Settings>
    <Param name="Completed URL" updates="None" val="" valType="str"/>
    <Param name="Data filename" updates="None" val="u'data' + os.sep + '%s_%s' %(expInfo['Participant'], expInfo['date'])" valType="code"/>
    <Param name="Enable Escape" updates="None" val="True" valType="bool"/>
    <Param name="Experiment info" updates="None" val="{'Eye Tracker': 'gp3_std.yaml', 'Participant': ''}" valType="code"/>
    <Param name="Force stereo" updates="None" val="True" valType="bool"/>
    <Param name="Full-screen window" updates="None" val="False" valType="bool"/>
    <Param name="HTML path" updates="None" val="html" valType="str"/>
    <Param name="Incomplete URL" updates="None" val="" valType="str"/>
    <Param name="JS libs" updates="None" val="packaged" valType="str"/>
    <Param name="Monitor" updates="None" val="testMonitor" valType="str"/>
    <Param name="Save csv file" updates="None" val="False" valType="bool"/>
    <Param name="Save excel file" updates="None" val="False" valType="bool"/>
    <Param name="Save log file" updates="None" val="True" valType="bool"/>
    <Param name="Save psydat file" updates="None" val="True" valType="bool"/>
    <Param name="Save wide csv file" updates="None" val="True" valType="bool"/>
    <Param name="Screen" updates="None" val="1" valType="num"/>
    <Param name="Show info dlg" updates="None" val="True" valType="bool"/>
    <Param name="Show mouse" updates="None" val="False" valType="bool"/>
    <Param name="Units" updates="None" val="pix" valType="str"/>
    <Param name="Use version" updates="None" val="" valType="str"/>
    <Param name="Window size (pixels)" updates="None" val="[1680, 1050]" valType="code"/>
    <Param name="blendMode" updates="None" val="avg" valType="str"/>
    <Param name="color" updates="None" val="black" valType="str"/>
    <Param name="colorSpace" updates="None" val="rgb" valType="str"/>
    <Param name="expName" updates="None" val="stroop" valType="str"/>
    <Param name="exportHTML" updates="None" val="on Sync" valType="str"/>
    <Param name="logging level" updates="None" val="warning" valType="code"/>
  </Settings>
  <Routines>
    <Routine name="thanks">
      <TextComponent name="thanksText">
        <Param name="color" updates="constant" val="$[1, 1, 1]" valType="str"/>
        <Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="flip" updates="constant" val="" valType="str"/>
        <Param name="font" updates="constant" val="arial" valType="str"/>
        <Param name="languageStyle" updates="None" val="LTR" valType="str"/>
        <Param name="letterHeight" updates="constant" val="50" valType="code"/>
        <Param name="name" updates="constant" val="thanksText" valType="code"/>
        <Param name="opacity" updates="constant" val="1" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
        <Param name="pos" updates="constant" val="[0, 0]" valType="code"/>
        <Param name="saveStartStop" updates="None" val="True" valType="bool"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0.0" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="2.0" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
        <Param name="text" updates="constant" val="This is the end of the experiment.&amp;#10;&amp;#10;Thanks!" valType="str"/>
        <Param name="units" updates="None" val="pix" valType="str"/>
        <Param name="wrapWidth" updates="constant" val="800" valType="code"/>
      </TextComponent>
    </Routine>
    <Routine name="trial">
      <TextComponent name="stimulus">
        <Param name="color" updates="set every repeat" val="$stimColor" valType="str"/>
        <Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="flip" updates="constant" val="" valType="str"/>
        <Param name="font" updates="constant" val="Arial" valType="str"/>
        <Param name="languageStyle" updates="None" val="LTR" valType="str"/>
        <Param name="letterHeight" updates="constant" val="100" valType="code"/>
        <Param name="name" updates="constant" val="stimulus" valType="code"/>
        <Param name="opacity" updates="constant" val="1" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
        <Param name="pos" updates="constant" val="[0, 0]" valType="code"/>
        <Param name="saveStartStop" updates="None" val="True" valType="bool"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0.5" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
        <Param name="text" updates="set every repeat" val="$stimText" valType="str"/>
        <Param name="units" updates="None" val="from exp settings" valType="str"/>
        <Param name="wrapWidth" updates="constant" val="" valType="code"/>
      </TextComponent>
      <GratingComponent name="fixation">
        <Param name="blendmode" updates="constant" val="avg" valType="str"/>
        <Param name="color" updates="constant" val="$[1,1,1]" valType="str"/>
        <Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="interpolate" updates="constant" val="linear" valType="str"/>
        <Param name="mask" updates="constant" val="circle" valType="str"/>
        <Param name="name" updates="constant" val="fixation" valType="code"/>
        <Param name="opacity" updates="constant" val=".7" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
        <Param name="phase" updates="constant" val="0.0" valType="code"/>
        <Param name="pos" updates="constant" val="[0, 0]" valType="code"/>
        <Param name="saveStartStop" updates="None" val="True" valType="bool"/>
        <Param name="sf" updates="constant" val="40" valType="code"/>
        <Param name="size" updates="constant" val="[16,16]" valType="code"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
        <Param name="tex" updates="constant" val="sin" valType="str"/>
        <Param name="texture resolution" updates="constant" val="128" valType="code"/>
        <Param name="units" updates="None" val="pix" valType="str"/>
      </GratingComponent>
      <GratingComponent name="gaze_cursor">
        <Param name="blendmode" updates="constant" val="avg" valType="str"/>
        <Param name="color" updates="constant" val="$[0.004,0.004,1.000]" valType="str"/>
        <Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="interpolate" updates="constant" val="linear" valType="str"/>
        <Param name="mask" updates="constant" val="circle" valType="str"/>
        <Param name="name" updates="constant" val="gaze_cursor" valType="code"/>
        <Param name="opacity" updates="set every frame" val="$display_gaze" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
        <Param name="phase" updates="constant" val="0.0" valType="code"/>
        <Param name="pos" updates="set every frame" val="$[x,y]" valType="code"/>
        <Param name="saveStartStop" updates="None" val="True" valType="bool"/>
        <Param name="sf" updates="constant" val="40" valType="code"/>
        <Param name="size" updates="set every frame" val="(30,30)" valType="code"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0.0" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
        <Param name="tex" updates="constant" val="sin" valType="str"/>
        <Param name="texture resolution" updates="constant" val="128" valType="code"/>
        <Param name="units" updates="None" val="pix" valType="str"/>
      </GratingComponent>
      <KeyboardComponent name="resp">
        <Param name="allowedKeys" updates="constant" val="&quot;left&quot;,&quot;down&quot;,&quot;right&quot;" valType="code"/>
        <Param name="correctAns" updates="constant" val="$corrAns" valType="str"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="discard previous" updates="constant" val="True" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="forceEndRoutine" updates="constant" val="True" valType="bool"/>
        <Param name="name" updates="None" val="resp" valType="code"/>
        <Param name="saveStartStop" updates="None" val="True" valType="bool"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0.5" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="store" updates="constant" val="last key" valType="str"/>
        <Param name="storeCorrect" updates="constant" val="True" valType="bool"/>
        <Param name="syncScreenRefresh" updates="constant" val="True" valType="bool"/>
      </KeyboardComponent>
      <CodeComponent name="eye_track_code">
        <Param name="Begin Experiment" updates="constant" val="maintain_fix_pix_boundary=66.0&amp;#10;eyetracker =False#will change if we get one!&amp;#10;&amp;#10;if expInfo['Eye Tracker']:&amp;#10;    try:&amp;#10;        from psychopy.iohub.client import ioHubConnection,yload,yLoader&amp;#10;        from psychopy.iohub.constants import EventConstants&amp;#10;        from psychopy.iohub.util import NumPyRingBuffer&amp;#10;        from psychopy.data import getDateStr&amp;#10;        # Load the specified iohub configuration file converting it to a python dict.&amp;#10;        io_config=yload(open(expInfo['Eye Tracker'],'r'), Loader=yLoader)&amp;#10;&amp;#10;        # Add / Update the session code to be unique. Here we use the psychopy getDateStr() function for session code generation&amp;#10;        session_info=io_config.get('data_store').get('session_info')&amp;#10;        session_info.update(code=&quot;S_%s&quot;%(getDateStr()))&amp;#10;&amp;#10;        # Create an ioHubConnection instance, which starts the ioHubProcess, and informs it of the requested devices and their configurations.&amp;#10;        io=ioHubConnection(io_config)&amp;#10;&amp;#10;        iokeyboard=io.devices.keyboard&amp;#10;        mouse=io.devices.mouse&amp;#10;        if io.getDevice('tracker'):&amp;#10;            eyetracker=io.getDevice('tracker')&amp;#10;&amp;#10;            win.winHandle.minimize()&amp;#10;            eyetracker.runSetupProcedure()&amp;#10;            win.winHandle.activate()&amp;#10;            win.winHandle.maximize()&amp;#10;&amp;#10;    except Exception as e:&amp;#10;       print(&quot;!! Error starting ioHub: &quot;,e,&quot; Exiting...&quot;)&amp;#10;       core.quit()&amp;#10;&amp;#10;    display_gaze=False&amp;#10;    x,y=0,0" valType="extendedCode"/>
        <Param name="Begin JS Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="Begin JS Routine" updates="constant" val="" valType="extendedCode"/>
        <Param name="Begin Routine" updates="constant" val="if eyetracker:&amp;#10;    heldFixation = True #unless otherwise&amp;#10;    io.clearEvents('all')&amp;#10;    eyetracker.setRecordingState(True)&amp;#10;" valType="extendedCode"/>
        <Param name="Code Type" updates="None" val="Py" valType="str"/>
        <Param name="Each Frame" updates="constant" val="if eyetracker:&amp;#10;    # check for 'g' key press to toggle gaze cursor visibility&amp;#10;    if iokeyboard.getPresses(keys=['g',]):&amp;#10;        display_gaze=not display_gaze&amp;#10;&amp;#10;    # get /eye tracker gaze/ position &amp;#10;    gpos=eyetracker.getPosition()&amp;#10;    if type(gpos) in [list,tuple]:&amp;#10;        x,y=gpos[0], gpos[1]&amp;#10;        d=np.sqrt(x**2+y**2)&amp;#10;        if d&gt;maintain_fix_pix_boundary:&amp;#10;            heldFixation = False #unless otherwise" valType="extendedCode"/>
        <Param name="Each JS Frame" updates="constant" val="" valType="extendedCode"/>
        <Param name="End Experiment" updates="constant" val="if eyetracker:&amp;#10;    eyetracker.setConnectionState(False)&amp;#10;    io.quit()" valType="extendedCode"/>
        <Param name="End JS Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="End JS Routine" updates="constant" val="" valType="extendedCode"/>
        <Param name="End Routine" updates="constant" val="if eyetracker:&amp;#10;    eyetracker.setRecordingState(False)&amp;#10;    #add eye-track data to data file&amp;#10;    trials.addData(&quot;heldFixation&quot;, heldFixation)&amp;#10;    " valType="extendedCode"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="name" updates="None" val="eye_track_code" valType="code"/>
      </CodeComponent>
    </Routine>
    <Routine name="instruct">
      <TextComponent name="instrText">
        <Param name="color" updates="constant" val="$[1, 1, 1]" valType="str"/>
        <Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="flip" updates="constant" val="" valType="str"/>
        <Param name="font" updates="constant" val="Arial" valType="str"/>
        <Param name="languageStyle" updates="None" val="LTR" valType="str"/>
        <Param name="letterHeight" updates="constant" val="50" valType="code"/>
        <Param name="name" updates="constant" val="instrText" valType="code"/>
        <Param name="opacity" updates="constant" val="1" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
        <Param name="pos" updates="constant" val="[0, 0]" valType="code"/>
        <Param name="saveStartStop" updates="None" val="True" valType="bool"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
        <Param name="text" updates="constant" val="OK. Ready?&amp;#10;&amp;#10;Remember: &amp;#10;1) Stay fixated on the central white dot. &amp;#10;2) Ignore the word itself; press:&amp;#10; - Left for red LETTERS&amp;#10; - Down for green LETTERS&amp;#10; - Right for blue LETTERS&amp;#10; - (Esc will quit)&amp;#10;3) To toggle gaze position visibility, press 'g'. &amp;#10;&amp;#10;Press any key to continue" valType="str"/>
        <Param name="units" updates="None" val="pix" valType="str"/>
        <Param name="wrapWidth" updates="constant" val="800" valType="code"/>
      </TextComponent>
      <KeyboardComponent name="ready">
        <Param name="allowedKeys" updates="constant" val="" valType="code"/>
        <Param name="correctAns" updates="constant" val="thisTrial.corrAns" valType="str"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="discard previous" updates="constant" val="True" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="forceEndRoutine" updates="constant" val="True" valType="bool"/>
        <Param name="name" updates="None" val="ready" valType="code"/>
        <Param name="saveStartStop" updates="None" val="True" valType="bool"/>
        <Param name="startEstim" updates="None" val="" valType="code"/>
        <Param name="startType" updates="None" val="time (s)" valType="str"/>
        <Param name="startVal" updates="None" val="0" valType="code"/>
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
        <Param name="store" updates="constant" val="nothing" valType="str"/>
        <Param name="storeCorrect" updates="constant" val="False" valType="bool"/>
        <Param name="syncScreenRefresh" updates="constant" val="True" valType="bool"/>
      </KeyboardComponent>
    </Routine>
  </Routines>
  <Flow>
    <Routine name="instruct"/>
    <LoopInitiator loopType="TrialHandler" name="trials">
      <Param name="Selected rows" updates="None" val="" valType="str"/>
      <Param name="conditions" updates="None" val="[{'congruent': 1, 'stimColor': 'red', 'stimText': 'red', 'corrAns': 'left'}, {'congruent': 0, 'stimColor': 'green', 'stimText': 'red', 'corrAns': 'down'}, {'congruent': 1, 'stimColor': 'green', 'stimText': 'green', 'corrAns': 'down'}, {'congruent': 0, 'stimColor': 'blue', 'stimText': 'green', 'corrAns': 'right'}, {'congruent': 1, 'stimColor': 'blue', 'stimText': 'blue', 'corrAns': 'right'}, {'congruent': 0, 'stimColor': 'red', 'stimText': 'blue', 'corrAns': 'left'}]" valType="str"/>
      <Param name="conditionsFile" updates="None" val="trialTypes.xlsx" valType="str"/>
      <Param name="endPoints" updates="None" val="[1, 2]" valType="num"/>
      <Param name="isTrials" updates="None" val="True" valType="bool"/>
      <Param name="loopType" updates="None" val="random" valType="str"/>
      <Param name="nReps" updates="None" val="5" valType="num"/>
      <Param name="name" updates="None" val="trials" valType="code"/>
      <Param name="random seed" updates="None" val="" valType="code"/>
    </LoopInitiator>
    <Routine name="trial"/>
    <LoopTerminator name="trials"/>
    <Routine name="thanks"/>
  </Flow>
</PsychoPy2experiment>
