tTraceTest8.psyexp 27.7 KB
Newer Older
Andrew Vu's avatar
Andrew Vu committed
1
<?xml version="1.0" ?>
Termight Replicas's avatar
Termight Replicas committed
2
<PsychoPy2experiment encoding="utf-8" version="2021.2.3">
Andrew Vu's avatar
Andrew Vu committed
3 4 5 6
  <Settings>
    <Param name="Audio latency priority" updates="None" val="use prefs" valType="str"/>
    <Param name="Audio lib" updates="None" val="use prefs" valType="str"/>
    <Param name="Completed URL" updates="None" val="" valType="str"/>
Termight Replicas's avatar
Termight Replicas committed
7
    <Param name="Data file delimiter" updates="None" val="auto" valType="str"/>
Andrew Vu's avatar
Andrew Vu committed
8 9 10 11 12
    <Param name="Data filename" updates="None" val="u'data/%s_%s_%s' % (expInfo['participant'], expName, expInfo['date'])" valType="code"/>
    <Param name="Enable Escape" updates="None" val="True" valType="bool"/>
    <Param name="Experiment info" updates="None" val="{'participant': '', 'session': '001'}" valType="code"/>
    <Param name="Force stereo" updates="None" val="True" valType="bool"/>
    <Param name="Full-screen window" updates="None" val="True" valType="bool"/>
Termight Replicas's avatar
Termight Replicas committed
13
    <Param name="HTML path" updates="None" val="" valType="str"/>
Andrew Vu's avatar
Andrew Vu committed
14 15
    <Param name="Incomplete URL" updates="None" val="" valType="str"/>
    <Param name="Monitor" updates="None" val="testMonitor" valType="str"/>
Termight Replicas's avatar
Termight Replicas committed
16
    <Param name="Resources" updates="None" val="[]" valType="list"/>
Andrew Vu's avatar
Andrew Vu committed
17 18
    <Param name="Save csv file" updates="None" val="False" valType="bool"/>
    <Param name="Save excel file" updates="None" val="False" valType="bool"/>
Termight Replicas's avatar
Termight Replicas committed
19
    <Param name="Save hdf5 file" updates="None" val="False" valType="bool"/>
Andrew Vu's avatar
Andrew Vu committed
20 21 22 23 24 25 26 27
    <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="height" valType="str"/>
    <Param name="Use version" updates="None" val="" valType="str"/>
Termight Replicas's avatar
Termight Replicas committed
28
    <Param name="Window size (pixels)" updates="None" val="[1280, 720]" valType="code"/>
Andrew Vu's avatar
Andrew Vu committed
29 30 31
    <Param name="blendMode" updates="None" val="avg" valType="str"/>
    <Param name="color" updates="None" val="$[0,0,0]" valType="str"/>
    <Param name="colorSpace" updates="None" val="rgb" valType="str"/>
Termight Replicas's avatar
Termight Replicas committed
32 33 34 35 36 37 38 39 40 41
    <Param name="elAddress" updates="None" val="100.1.1.1" valType="str"/>
    <Param name="elDataFiltering" updates="None" val="FILTER_LEVEL_2" valType="str"/>
    <Param name="elLiveFiltering" updates="None" val="FILTER_LEVEL_OFF" valType="str"/>
    <Param name="elModel" updates="None" val="EYELINK 1000 DESKTOP" valType="str"/>
    <Param name="elPupilAlgorithm" updates="None" val="ELLIPSE_FIT" valType="str"/>
    <Param name="elPupilMeasure" updates="None" val="PUPIL_AREA" valType="str"/>
    <Param name="elSampleRate" updates="None" val="1000" valType="num"/>
    <Param name="elSimMode" updates="None" val="False" valType="bool"/>
    <Param name="elTrackEyes" updates="None" val="RIGHT_EYE" valType="str"/>
    <Param name="elTrackingMode" updates="None" val="PUPIL_CR_TRACKING" valType="str"/>
Andrew Vu's avatar
Andrew Vu committed
42 43
    <Param name="expName" updates="None" val="tTraceTest8" valType="str"/>
    <Param name="exportHTML" updates="None" val="on Sync" valType="str"/>
Termight Replicas's avatar
Termight Replicas committed
44 45 46
    <Param name="eyetracker" updates="None" val="None" valType="str"/>
    <Param name="gpAddress" updates="None" val="127.0.0.1" valType="str"/>
    <Param name="gpPort" updates="None" val="4242" valType="num"/>
Andrew Vu's avatar
Andrew Vu committed
47
    <Param name="logging level" updates="None" val="exp" valType="code"/>
Termight Replicas's avatar
Termight Replicas committed
48 49 50 51 52 53 54
    <Param name="mgBlink" updates="None" val="('MIDDLE_BUTTON',)" valType="list"/>
    <Param name="mgMove" updates="None" val="CONTINUOUS" valType="str"/>
    <Param name="mgSaccade" updates="None" val="0.5" valType="num"/>
    <Param name="tbLicenseFile" updates="None" val="" valType="str"/>
    <Param name="tbModel" updates="None" val="" valType="str"/>
    <Param name="tbSampleRate" updates="None" val="60" valType="num"/>
    <Param name="tbSerialNo" updates="None" val="" valType="str"/>
Andrew Vu's avatar
Andrew Vu committed
55 56
  </Settings>
  <Routines>
57 58 59 60
    <Routine name="setup">
      <CodeComponent name="JSCode">
        <Param name="Before Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="Before JS Experiment" updates="constant" val="" valType="extendedCode"/>
61 62
        <Param name="Begin Experiment" updates="constant" val="white = [1, 1, 1]" valType="extendedCode"/>
        <Param name="Begin JS Experiment" updates="constant" val="document.documentElement.style.cursor = 'none';&amp;#10;white = new util.Color([1, 1, 1]);" valType="extendedCode"/>
63 64
        <Param name="Begin JS Routine" updates="constant" val="" valType="extendedCode"/>
        <Param name="Begin Routine" updates="constant" val="" valType="extendedCode"/>
65
        <Param name="Code Type" updates="None" val="Both" valType="str"/>
66 67 68 69 70 71 72 73 74 75
        <Param name="Each Frame" updates="constant" val="" valType="extendedCode"/>
        <Param name="Each JS Frame" updates="constant" val="" valType="extendedCode"/>
        <Param name="End Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="End JS Experiment" updates="constant" val="document.documentElement.style.cursor = 'auto';" valType="extendedCode"/>
        <Param name="End JS Routine" updates="constant" val="" valType="extendedCode"/>
        <Param name="End Routine" updates="constant" val="" valType="extendedCode"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="name" updates="None" val="JSCode" valType="code"/>
      </CodeComponent>
      <CodeComponent name="setupCode">
76 77
        <Param name="Before Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="Before JS Experiment" updates="constant" val="" valType="extendedCode"/>
78 79
        <Param name="Begin Experiment" updates="constant" val="# Maximum number of targets is the length of these two arrays&amp;#10;# posArray1 contains the x coordinates and posArray2 the y coordinates&amp;#10;posArray1 = [-0.05,-0.1,-0.15,-0.2,-0.25,-0.3,-0.35,-0.4,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4]&amp;#10;posArray2 = [-0.05,-0.1,-0.15,-0.2,-0.25,-0.3,-0.35,-0.4,0.05,0.1,0.15,0.2,0.25,0.3,0.35,0.4]&amp;#10;&amp;#10;# Set up target text and circles&amp;#10;trialText = []&amp;#10;trialTargets = []&amp;#10;for Idx in range(len(posArray1)):&amp;#10;    trialText.append(visual.TextStim(win=win, &amp;#10;    name='trialText'+Idx,&amp;#10;    text=' ',&amp;#10;    font='Arial',&amp;#10;    pos=(posArray1[Idx], posArray2[Idx]), &amp;#10;    height=0.06, wrapWidth=None, ori=0, &amp;#10;    color=white))&amp;#10;    trialTargets.append(visual.Polygon(&amp;#10;    win=win,&amp;#10;    name=&quot;target&quot;,&amp;#10;    fillColor=white,&amp;#10;    lineColor=white,&amp;#10;    edges=36,&amp;#10;    pos=(posArray1[Idx], posArray2[Idx]), &amp;#10;    size=.1&amp;#10;    ))&amp;#10;" valType="extendedCode"/>
        <Param name="Begin JS Experiment" updates="constant" val="posArray1 = [(- 0.05), (- 0.1), (- 0.15), (- 0.2), (- 0.25), (- 0.3), (- 0.35), (- 0.4), 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4];&amp;#10;posArray2 = [(- 0.05), (- 0.1), (- 0.15), (- 0.2), (- 0.25), (- 0.3), (- 0.35), (- 0.4), 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4];&amp;#10;trialText = [];&amp;#10;trialTargets = [];&amp;#10;for (var Idx, _pj_c = 0, _pj_a = util.range(posArray1.length), _pj_b = _pj_a.length; (_pj_c &lt; _pj_b); _pj_c += 1) {&amp;#10;    Idx = _pj_a[_pj_c];&amp;#10;    trialText.push(new visual.TextStim({&quot;win&quot;: psychoJS.window, &quot;name&quot;: (&quot;trialText&quot; + Idx), &quot;text&quot;: &quot; &quot;, &quot;font&quot;: &quot;Arial&quot;, &quot;pos&quot;: [posArray1[Idx], posArray2[Idx]], &quot;height&quot;: 0.06, &quot;wrapWidth&quot;: null, &quot;ori&quot;: 0, &quot;color&quot;: white}));&amp;#10;    trialTargets.push(new visual.Polygon({&quot;win&quot;: psychoJS.window, &quot;name&quot;: &quot;target&quot;, &quot;fillColor&quot;: white, &quot;lineColor&quot;: white, &quot;edges&quot;: 36, &quot;pos&quot;: [posArray1[Idx], posArray2[Idx]], &quot;size&quot;: 0.1}));&amp;#10;}&amp;#10;" valType="extendedCode"/>
80 81 82 83 84 85 86 87 88 89 90 91 92 93
        <Param name="Begin JS Routine" updates="constant" val="" valType="extendedCode"/>
        <Param name="Begin Routine" updates="constant" val="" valType="extendedCode"/>
        <Param name="Code Type" updates="None" val="Auto-&gt;JS" valType="str"/>
        <Param name="Each Frame" updates="constant" val="" valType="extendedCode"/>
        <Param name="Each JS Frame" updates="constant" val="" valType="extendedCode"/>
        <Param name="End Experiment" updates="constant" val="" 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="" valType="extendedCode"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="name" updates="None" val="setupCode" valType="code"/>
      </CodeComponent>
    </Routine>
    <Routine name="instr">
94 95 96 97 98
      <CodeComponent name="code_instr">
        <Param name="Before Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="Before JS Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="Begin Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="Begin JS Experiment" updates="constant" val="" valType="extendedCode"/>
99 100
        <Param name="Begin JS Routine" updates="constant" val="msg = &quot;&quot;;&amp;#10;targetList = Targets.toString();&amp;#10;for (var Idx, _pj_c = 0, _pj_a = util.range((targetList.length - 1)), _pj_b = _pj_a.length; (_pj_c &lt; _pj_b); _pj_c += 1) {&amp;#10;    Idx = _pj_a[_pj_c];&amp;#10;    msg += (targetList[Idx] + &quot;, &quot;);&amp;#10;}&amp;#10;msg += targetList.slice((- 1))[0];&amp;#10;instrCursor.pos = [1.5, 1.5];&amp;#10;" valType="extendedCode"/>
        <Param name="Begin Routine" updates="constant" val="# Customise the instructions with the current target list&amp;#10;msg = ''&amp;#10;targetList = str(Targets) # To cope with numerical targets&amp;#10;for Idx in range(len(targetList)-1):&amp;#10;    msg += targetList[Idx] + ', '&amp;#10;msg += targetList[-1]&amp;#10;# Mouse cursor off screen until mouse is moved&amp;#10;instrCursor.pos = (1.5,1.5)" valType="extendedCode"/>
101 102 103 104 105 106 107 108 109 110
        <Param name="Code Type" updates="None" val="Auto-&gt;JS" valType="str"/>
        <Param name="Each Frame" updates="constant" val="" valType="extendedCode"/>
        <Param name="Each JS Frame" updates="constant" val="" valType="extendedCode"/>
        <Param name="End Experiment" updates="constant" val="" 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="" valType="extendedCode"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="name" updates="None" val="code_instr" valType="code"/>
      </CodeComponent>
111 112 113 114 115 116 117 118 119 120 121 122 123
      <TextComponent name="instrText">
        <Param name="color" updates="constant" val="white" valType="str"/>
        <Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="contrast" updates="constant" val="1" valType="num"/>
        <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="0.05" valType="code"/>
        <Param name="name" updates="None" val="instrText" valType="code"/>
        <Param name="opacity" updates="constant" val="1" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
124
        <Param name="pos" updates="constant" val="(0, 0.3)" valType="code"/>
125 126 127 128 129 130 131
        <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="" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
132
        <Param name="text" updates="set every repeat" val="$'The order is:\n' + msg + '.\n\nclick on the green cross to continue.'" valType="str"/>
133 134 135
        <Param name="units" updates="None" val="from exp settings" valType="str"/>
        <Param name="wrapWidth" updates="constant" val="" valType="code"/>
      </TextComponent>
136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
      <MouseComponent name="instrMouse">
        <Param name="clickable" updates="constant" val="clickHere" valType="code"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="forceEndRoutineOnPress" updates="constant" val="valid click" valType="str"/>
        <Param name="name" updates="None" val="instrMouse" valType="code"/>
        <Param name="newClicksOnly" updates="constant" val="True" valType="bool"/>
        <Param name="saveMouseState" updates="None" val="never" valType="str"/>
        <Param name="saveParamsClickable" updates="constant" val="" valType="code"/>
        <Param name="saveStartStop" updates="None" val="False" 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="" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
        <Param name="timeRelativeTo" updates="constant" val="routine" valType="str"/>
      </MouseComponent>
154 155 156
      <PolygonComponent name="instrCursor">
        <Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="contrast" updates="constant" val="1" valType="num"/>
157 158
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
159 160 161 162 163 164 165 166 167 168
        <Param name="fillColor" updates="constant" val="$[1,1,1]" valType="str"/>
        <Param name="fillColorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="interpolate" updates="constant" val="linear" valType="str"/>
        <Param name="lineColor" updates="constant" val="$[1,1,1]" valType="str"/>
        <Param name="lineColorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="lineWidth" updates="constant" val="1" valType="code"/>
        <Param name="nVertices" updates="constant" val="180" valType="int"/>
        <Param name="name" updates="None" val="instrCursor" valType="code"/>
        <Param name="opacity" updates="constant" val="1" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
169
        <Param name="pos" updates="set every frame" val="(instrMouse.getPos()[0], instrMouse.getPos()[1])" valType="code"/>
170
        <Param name="saveStartStop" updates="None" val="True" valType="bool"/>
171 172
        <Param name="shape" updates="constant" val="regular polygon..." valType="str"/>
        <Param name="size" updates="constant" val="(0.025, 0.025)" valType="code"/>
173 174 175
        <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"/>
176 177 178 179 180 181 182 183 184 185 186
        <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="units" updates="None" val="from exp settings" valType="str"/>
        <Param name="vertices" updates="constant" val="" valType="list"/>
      </PolygonComponent>
      <PolygonComponent name="clickHere">
        <Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="contrast" updates="constant" val="1" valType="num"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
187
        <Param name="fillColor" updates="constant" val="lightgreen" valType="color"/>
188
        <Param name="interpolate" updates="constant" val="linear" valType="str"/>
189
        <Param name="lineColor" updates="constant" val="lightgreen" valType="color"/>
190 191 192 193 194 195 196 197
        <Param name="lineWidth" updates="constant" val="1" valType="num"/>
        <Param name="nVertices" updates="constant" val="4" valType="int"/>
        <Param name="name" updates="None" val="clickHere" valType="code"/>
        <Param name="opacity" updates="constant" val="" valType="num"/>
        <Param name="ori" updates="constant" val="0" valType="num"/>
        <Param name="pos" updates="constant" val="(0, 0)" valType="list"/>
        <Param name="saveStartStop" updates="None" val="True" valType="bool"/>
        <Param name="shape" updates="None" val="cross" valType="str"/>
198
        <Param name="size" updates="constant" val="(0.1, 0.1)" valType="list"/>
199 200 201
        <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"/>
202 203
        <Param name="stopType" updates="None" val="duration (s)" valType="str"/>
        <Param name="stopVal" updates="constant" val="" valType="code"/>
204 205 206 207
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
        <Param name="units" updates="None" val="from exp settings" valType="str"/>
        <Param name="vertices" updates="constant" val="" valType="list"/>
      </PolygonComponent>
208
    </Routine>
Andrew Vu's avatar
Andrew Vu committed
209 210
    <Routine name="trial">
      <CodeComponent name="trialCode">
Termight Replicas's avatar
Termight Replicas committed
211 212
        <Param name="Before Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="Before JS Experiment" updates="constant" val="" valType="extendedCode"/>
213 214
        <Param name="Begin Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="Begin JS Experiment" updates="constant" val="" valType="extendedCode"/>
215 216
        <Param name="Begin JS Routine" updates="constant" val="trialCursor.pos = [0, 0];&amp;#10;util.shuffle(posArray1);&amp;#10;util.shuffle(posArray2);&amp;#10;for (var Idx, _pj_c = 0, _pj_a = util.range(targetList.length), _pj_b = _pj_a.length; (_pj_c &lt; _pj_b); _pj_c += 1) {&amp;#10;    Idx = _pj_a[_pj_c];&amp;#10;    trialTargets[Idx].setOpacity(0.25);&amp;#10;    trialTargets[Idx].setPos([posArray1[Idx], posArray2[Idx]]);&amp;#10;    trialTargets[Idx].setAutoDraw(true);&amp;#10;    trialText[Idx].setPos([posArray1[Idx], posArray2[Idx]]);&amp;#10;    trialText[Idx].text = targetList[Idx];&amp;#10;    trialText[Idx].setAutoDraw(true);&amp;#10;}&amp;#10;trialStep = 0;&amp;#10;shapeList = [];&amp;#10;" valType="extendedCode"/>
        <Param name="Begin Routine" updates="constant" val="# The mouse position can't be set online&amp;#10;# trialMouse.pos = (1.5,1.5)&amp;#10;trialCursor.pos = (0,0)&amp;#10;&amp;#10;# Shuffle targetlocations&amp;#10;shuffle(posArray1)&amp;#10;shuffle(posArray2)&amp;#10;&amp;#10;# Set target&amp;#10;for Idx in range(len(targetList)):&amp;#10;    trialTargets[Idx].setOpacity(.25)&amp;#10;    trialTargets[Idx].setPos([posArray1[Idx],posArray2[Idx]])&amp;#10;    trialTargets[Idx].setAutoDraw(True)&amp;#10;    trialText[Idx].setPos([posArray1[Idx],posArray2[Idx]])&amp;#10;    trialText[Idx].text=targetList[Idx]&amp;#10;    trialText[Idx].setAutoDraw(True)&amp;#10;&amp;#10;trialStep = 0&amp;#10;shapeList = []" valType="extendedCode"/>
217
        <Param name="Code Type" updates="None" val="Auto-&gt;JS" valType="str"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
218
        <Param name="Each Frame" updates="constant" val="CursorTargetDistance = sqrt((trialCursor.pos[0]-trialTargets[trialStep].pos[0])**2 + (trialCursor.pos[1]-trialTargets[trialStep].pos[1])**2)&amp;#10;if (CursorTargetDistance &lt; .05):&amp;#10;    trialTargets[trialStep].setOpacity(0)&amp;#10;    if trialStep &gt; 0:&amp;#10;        # Create new line&amp;#10;        shapeList.append(visual.ShapeStim(&amp;#10;        win=win, name=&quot;line&quot;+trialStep,&amp;#10;        lineColor=white,&amp;#10;        lineWidth=2,&amp;#10;        vertices=[[posArray1[trialStep-1],posArray2[trialStep-1]],[posArray1[trialStep],posArray2[trialStep]]],&amp;#10;        ))&amp;#10;        shapeList[-1].setAutoDraw(True)&amp;#10;    thisExp.addData('RTstep'+trialStep,round(t*1000))&amp;#10;    trialStep += 1&amp;#10;    # End routine when last target located&amp;#10;    if trialStep == len(targetList):&amp;#10;        continueRoutine = False&amp;#10;" valType="extendedCode"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
219
        <Param name="Each JS Frame" updates="constant" val="CursorTargetDistance = Math.sqrt((Math.pow((trialCursor.pos[0] - trialTargets[trialStep].pos[0]), 2) + Math.pow((trialCursor.pos[1] - trialTargets[trialStep].pos[1]), 2)));&amp;#10;if ((CursorTargetDistance &lt; 0.05)) {&amp;#10;    trialTargets[trialStep].setOpacity(0);&amp;#10;    if ((trialStep &gt; 0)) {&amp;#10;        shapeList.push(new visual.ShapeStim({&quot;win&quot;: psychoJS.window, &quot;name&quot;: (&quot;line&quot; + trialStep), &quot;lineColor&quot;: white, &quot;lineWidth&quot;: 2, &quot;vertices&quot;: [[posArray1[(trialStep - 1)], posArray2[(trialStep - 1)]], [posArray1[trialStep], posArray2[trialStep]]]}));&amp;#10;        shapeList.slice((- 1))[0].setAutoDraw(true);&amp;#10;    }&amp;#10;    psychoJS.experiment.addData((&quot;RTstep&quot; + trialStep), Math.round((t * 1000)));&amp;#10;    trialStep += 1;&amp;#10;    if ((trialStep === targetList.length)) {&amp;#10;        continueRoutine = false;&amp;#10;    }&amp;#10;}&amp;#10;" valType="extendedCode"/>
Andrew Vu's avatar
Andrew Vu committed
220 221
        <Param name="End Experiment" updates="constant" val="" valType="extendedCode"/>
        <Param name="End JS Experiment" updates="constant" val="" valType="extendedCode"/>
222
        <Param name="End JS Routine" updates="constant" val="for (var Idx, _pj_c = 0, _pj_a = util.range(targetList.length), _pj_b = _pj_a.length; (_pj_c &lt; _pj_b); _pj_c += 1) {&amp;#10;    Idx = _pj_a[_pj_c];&amp;#10;    trialTargets[Idx].setAutoDraw(false);&amp;#10;    trialText[Idx].setAutoDraw(false);&amp;#10;}&amp;#10;for (var Idx, _pj_c = 0, _pj_a = util.range(shapeList.length), _pj_b = _pj_a.length; (_pj_c &lt; _pj_b); _pj_c += 1) {&amp;#10;    Idx = _pj_a[_pj_c];&amp;#10;    shapeList[Idx].setAutoDraw(false);&amp;#10;}&amp;#10;" valType="extendedCode"/>
Wakefield Morys-Carter's avatar
Wakefield Morys-Carter committed
223
        <Param name="End Routine" updates="constant" val="# Hide targets and lines ready for next trial&amp;#10;for Idx in range(len(targetList)):&amp;#10;    trialTargets[Idx].setAutoDraw(False)&amp;#10;    trialText[Idx].setAutoDraw(False)&amp;#10;for Idx in range(len(shapeList)):&amp;#10;    shapeList[Idx].setAutoDraw(False)&amp;#10;" valType="extendedCode"/>
Andrew Vu's avatar
Andrew Vu committed
224 225 226 227 228 229 230 231 232 233
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="name" updates="None" val="trialCode" valType="code"/>
      </CodeComponent>
      <MouseComponent name="trialMouse">
        <Param name="clickable" updates="constant" val="" valType="code"/>
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="forceEndRoutineOnPress" updates="constant" val="never" valType="str"/>
        <Param name="name" updates="None" val="trialMouse" valType="code"/>
        <Param name="newClicksOnly" updates="constant" val="False" valType="bool"/>
234
        <Param name="saveMouseState" updates="None" val="final" valType="str"/>
Andrew Vu's avatar
Andrew Vu committed
235 236 237 238 239 240 241 242 243 244 245
        <Param name="saveParamsClickable" updates="constant" val="" 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="" valType="code"/>
        <Param name="syncScreenRefresh" updates="None" val="True" valType="bool"/>
        <Param name="timeRelativeTo" updates="constant" val="routine" valType="str"/>
      </MouseComponent>
      <PolygonComponent name="trialCursor">
Termight Replicas's avatar
Termight Replicas committed
246 247
        <Param name="colorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="contrast" updates="constant" val="1" valType="num"/>
Andrew Vu's avatar
Andrew Vu committed
248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
        <Param name="disabled" updates="None" val="False" valType="bool"/>
        <Param name="durationEstim" updates="None" val="" valType="code"/>
        <Param name="fillColor" updates="constant" val="$[1,1,1]" valType="str"/>
        <Param name="fillColorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="interpolate" updates="constant" val="linear" valType="str"/>
        <Param name="lineColor" updates="constant" val="$[1,1,1]" valType="str"/>
        <Param name="lineColorSpace" updates="constant" val="rgb" valType="str"/>
        <Param name="lineWidth" updates="constant" val="1" valType="code"/>
        <Param name="nVertices" updates="constant" val="180" valType="int"/>
        <Param name="name" updates="None" val="trialCursor" valType="code"/>
        <Param name="opacity" updates="constant" val="1" valType="code"/>
        <Param name="ori" updates="constant" val="0" valType="code"/>
        <Param name="pos" updates="set every frame" val="(trialMouse.getPos()[0], trialMouse.getPos()[1])" valType="code"/>
        <Param name="saveStartStop" updates="None" val="True" valType="bool"/>
        <Param name="shape" updates="constant" val="regular polygon..." valType="str"/>
        <Param name="size" updates="constant" val="(0.025, 0.025)" 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="units" updates="None" val="from exp settings" valType="str"/>
Termight Replicas's avatar
Termight Replicas committed
271
        <Param name="vertices" updates="constant" val="" valType="list"/>
Andrew Vu's avatar
Andrew Vu committed
272 273 274 275 276 277 278
      </PolygonComponent>
    </Routine>
  </Routines>
  <Flow>
    <Routine name="setup"/>
    <LoopInitiator loopType="TrialHandler" name="tasks">
      <Param name="Selected rows" updates="None" val="" valType="str"/>
279 280
      <Param name="conditions" updates="None" val="[{'targetList': '1A2B3C4D5E6F7G8H'}, {'targetList': '1A2E3I4O5U'}]" valType="str"/>
      <Param name="conditionsFile" updates="None" val="conditions.xlsx" valType="str"/>
Andrew Vu's avatar
Andrew Vu committed
281 282 283
      <Param name="endPoints" updates="None" val="[0, 1]" valType="num"/>
      <Param name="isTrials" updates="None" val="True" valType="bool"/>
      <Param name="loopType" updates="None" val="sequential" valType="str"/>
284
      <Param name="nReps" updates="None" val="1" valType="code"/>
Andrew Vu's avatar
Andrew Vu committed
285 286 287 288 289 290 291 292
      <Param name="name" updates="None" val="tasks" valType="code"/>
      <Param name="random seed" updates="None" val="" valType="code"/>
    </LoopInitiator>
    <Routine name="instr"/>
    <Routine name="trial"/>
    <LoopTerminator name="tasks"/>
  </Flow>
</PsychoPy2experiment>