Demo of a state-machine-driven Opticka Behavioural Experiment.
Opticka is an object-oriented framework for the Psychophysics toolbox (PTB), allowing randomised interleaved presentation of parameter varying stimuli specified in experimenter-relevant values. It operates under Linux (PTB's preferred OS), macOS & Windows, and can interface via strobed words (using Display++, VPixx or a cheap and very reliable LabJack), or TTLs via low-cost Arduino. It uses ethernet to connect with Tobii or Eyelink eyetrackers and with with external harware for recording neurophysiological data.
In this demo, two stimulus objects (wrapped in a myStims manager object), task sequence variables (myTask object), and a screenManager (myScreen object) are passed to the runExperiment class. runExperiment uses the stateMachine class object which loads the experiment specification (for this demo it uses DefaultStateInfo.m)
DefaultStateInfo.m specifies the following experiment with six states (prefix, fixate, stimulus, correct, incorrect, breakfix), and uses the eyetracker (here using the mouse functions to transition from fixate.
┌───────────────────────────────────────┐
│ ▼
│ ┌───────────────────────────┐
┌──┼───────────────────────────────────▶ │ (1) prefix │ ◀┐
│ │ └───────────────────────────┘ │
│ │ │ │
│ │ ▼ │
│┌───────────┐ Transition ┌───────────────────────────┐ │
││ incorrect │ inFixFcn=>incorrect │ fixate │ │
││ │◀───────────────────────── │ show(stims, 2) │ │
│└───────────┘ └───────────────────────────┘ │
│ │ │
│ │ Transition │
└──┐ │ inFixFcn=>stimulus │
│ ▼ │
┌───────────┐ Transition ┌───────────────────────────┐ │
│ CORRECT │ maintainFixFcn=>correct │ stimulus │ │
│ │◀───────────────────────── │ show(stims, [1 2]) │ │
└───────────┘ └───────────────────────────┘ │
│ │
│ Transition │
│ maintainFixFcn=>breakfix │
▼ │
┌───────────────────────────┐ │
│ BREAKFIX │ ─┘
└───────────────────────────┘
For this demo a dummy eyetracker object (where the mouse input transparently replaces the eye movements), is used to demonstrate behavioural control of the paradigm.
Opticka also offers an optional GUI (type `opticka` in the command window), which is a visual manager of the objects introduced here. The UI also controls other functions such as screen calibration, protocol loading/saving and managing communication with neurophysiological equipment via LabJack, Arduino and ethernet.
The source of this file can be found at : https://github.com/iandol/opticka/blob/master/optickaBehaviourTest.m
Contents
- Initial clear up of any previous objects
- Setup our visual stimuli
- Task Initialisation
- Setup screenManager Object
- Setup runExperiment Object
- Run the full behavioural task
- Plot a timing log of every frame against the stimulus on/off times
- Plot a timing log of all states and their function evaluation transition times
Initial clear up of any previous objects
Make sure we start in a clean environment, not essential
clear myStims myTask myExp myScreen sca %PTB screen clear all
Setup our visual stimuli
First we use the metaStimulus class to create a stimulus manager object that collects and handles groups of stimuli as if they were a single 'thing', so for example when you use the draw method myStims.draw(), it tells each of its child stimuli to draw in order. You can show and hide each stimulus in the group and only thoses set to draw will do so. Note you can control each stimulus yourself (each stimulus has its own set of control functions), but using metaStimulus makes the code simpler...
myStims = metaStimulus();
first stimulus is a smoothed 5° red disc
myStims{1} = discStimulus('colour', [0.7 0.2 0], 'size', 5, 'sigma', 20);
second stimulus is an optimised 0.8° fixation cross from Thaler et al., 2013
myStims{2} = fixationCrossStimulus('size', 0.8);
Task Initialisation
The taskSequence class defines a stimulus sequence (task) which is composed of randomised stimulus parameter changes (called variables) repeated over a set of blocks. A trial is an individual stimulus presentation. This
For behavioural tasks, several of the parameters like myTask.trialTime are not used as the state machine takes over the job of task timing, but the stimulus randomisation is still useful for such tasks. In this case the state info file can use taskSequence to deterimine the next stimulus value. There are functions to handle what happens if the subject responds incorrectly, where we can re-randomise the next value within the block.
myTask = taskSequence(); %new taskSequence object instance myTask.realTime = true; % do we use system clock, rather than fixed FPS ticks
Our variable is xyPosition, applied to stimulus 1 only. 3 different position values so 3 trials per block...
myTask.nVar(1).name = 'xyPosition';
myTask.nVar(1).stimulus = 1;
myTask.nVar(1).values = {[-10 -10], [0 0], [10 10]};
We call the method to randomise the trials into a block (3 blocks, 3 trials) structure.
myTask.nBlocks = 3; randomiseTask(myTask);
≣≣≣≣⊱ taskSequence<taskSequence#1F2C2B111>: Took 60.9 ms | randomiseTask
Setup screenManager Object
screenManager controls the PTB Screen(). We initialise the object with parameters to open the PTB screen with. Note distance and pixels per cm define the resultant geometry > pixel mappings. You can set several screen parameters, windowing, blending etc.
myScreen = screenManager('distance', 57.3,... % display distance from observer 'pixelsPerCm', 27,... % calibration value for pixel density, measure using calibrateSize() 'windowed', [],... % use fullscreen [] or window [X Y]? 'backgroundColour', [0.5 0.5 0.5],... % initial background colour 'blend', true,... % enable OpenGL blending, you can also set blend modes when needed 'bitDepth', '8bit'); % FloatingPoint32bit, 8bit, FloatingPoint16bit etc. % use retina mode for macOS if ismac; myScreen.useRetina = true; end
PsychVulkanCore-INFO: Vulkan instance (version 1.4.313) created.
Setup runExperiment Object
We now pass our stimulus, screen and task objects to the runExperiment class. runExperiment contains the runTask() method that actually runs the behavioural task.
Importantly, the stateInfoFile 'FixationTrainingStateInfo.m' determines the behavioural protocol that the state machine will run. The state machine is available as myExp.stateMachine. Read through that StateInfo file to better understand what is being done. stateInfoFiles contain some general configuration, then a set of cell-arrays of functions, and a table of states which run these function arrays as the states are entered and exited. For this simple task, it starts in a paused state, then transitions to a blank period, then the stimulus presentation, where initiating and maintaining fixation on the cross leads to a correct state or breaking fixation leads to breakFix state, then the state machine loops back to blank etc. using the myTask object to set variable values on each trial.
myExp = runExperiment('stimuli', myStims,... %stimulus objects 'screen', myScreen,... %screen manager object 'task', myTask,... % task randomised stimulus sequence 'stateInfoFile', 'DefaultStateInfo.m', ... % use the default state info file 'verbose', true, ... % more logging to the command window 'debug', false,... % debug mode for testing? 'logStateTimers',true); myExp.eyetracker.device = 'irec'; % iRecHS2 eyetracker myExp.eyetracker.dummy = true; % dummy mode, so mouse replaces eye position myexp.sessionData.subjectName = 'Simulcra'; myexp.sessionData.researcherName = 'Automated-Test'; myexp.comment = "This is a test run";
≣≣≣≣⊱ Run Experiment<runExperiment#1F2C39BC8>: Cascaded Verbose = 1 to all objects...
Run the full behavioural task
runTask(myExp);
--->arduinoManager: Ports available:
/dev/ttyS0 /dev/ttyS1 /dev/ttyS10 /dev/ttyS11 /dev/ttyS12
/dev/ttyS13 /dev/ttyS14 /dev/ttyS15 /dev/ttyS16 /dev/ttyS17
/dev/ttyS18 /dev/ttyS19 /dev/ttyS2 /dev/ttyS20 /dev/ttyS21
/dev/ttyS22 /dev/ttyS23 /dev/ttyS24 /dev/ttyS25 /dev/ttyS26
/dev/ttyS27 /dev/ttyS28 /dev/ttyS29 /dev/ttyS3 /dev/ttyS30
/dev/ttyS31 /dev/ttyS4 /dev/ttyS5 /dev/ttyS6 /dev/ttyS7
/dev/ttyS8 /dev/ttyS9
PTB-INFO: Using PortAudio V19.7.0-devel, revision 147dd722548358763a8b649b3e4b41dfffbcfbb6
PTB-INFO: Using PortAudio V19.7.0-devel, revision 147dd722548358763a8b649b3e4b41dfffbcfbb6
PTB-INFO: Using PortAudio V19.7.0-devel, revision 147dd722548358763a8b649b3e4b41dfffbcfbb6
PTB-INFO: Using PortAudio V19.7.0-devel, revision 147dd722548358763a8b649b3e4b41dfffbcfbb6
Using selected device with DeviceIndex = :
PTB-INFO: Using PortAudio V19.7.0-devel, revision 147dd722548358763a8b649b3e4b41dfffbcfbb6
PTB-INFO: Choosing deviceIndex 0 [HDA Intel PCH: ALC3234 Analog (hw:0,0)] as default output audio device.
PTB-INFO: New audio device -1 with handle 0 opened as PortAudio stream:
PTB-INFO: For 2 channels Playback: Audio subsystem is ALSA, Audio device name is HDA Intel PCH: ALC3234 Analog (hw:0,0)
PTB-INFO: Real samplerate 44100.000000 Hz. Input latency 0.000000 msecs, Output latency 9.977324 msecs.
≣≣≣≣⊱ taskSequence<taskSequence#1F2C2B111>: Took 24.2 ms | randomiseTask
---> taskSequence.initialise: Initialised!
Warning: Calling STRUCT on an object prevents the object from hiding its
implementation details and should thus be avoided. Use DISP or DISPLAY to see
the visible public details of an object. See 'help struct' for more
information.
---> screenManager: Normal Screen Preferences used.
---> screenManager: Probing for a Display++...BitsPlusPlus: Could not find a Bits# config file under [/home/cog5/.Psychtoolbox/BitsSharpConfig.txt]. Assuming a Bits+ device instead of a Bits# is connected.
BitsPlusPlus: Please create a config file under this name if you have a Bits# and want to use it as Bits# instead of as a Bits+.
BitsPlusPlus: The most simple way is to create an empty file. A more robust way is to store the name of the Bits# serial port
BitsPlusPlus: in the first line of the text file, e.g., COM5 [Windows], or /dev/ttyACM0 [Linux] or similar.
NO Display++
---> screenManager: Internal processing set to: 8 bits
PTB-INFO: This is Psychtoolbox-3 for GNU/Linux X11, under Matlab 64-Bit Intel (Version 3.0.22 - Build date: Apr 10 2026).
PTB-INFO: OS support status: Linux 7.0.0-14-generic Supported.
PTB-INFO: For information about paid support and other commercial services, please type 'PsychPaidSupportAndServices'.
PTB-INFO: Most parts of the Psychtoolbox distribution are licensed to you under terms of the MIT license, with some
PTB-INFO: restrictions. See file 'License.txt' in the Psychtoolbox root folder for the exact licensing conditions.
PTB-INFO: Psychtoolbox and its prebuilt mex files are distributed in the hope that they will be useful, but WITHOUT
PTB-INFO: ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
PTB-INFO: OpenGL-Renderer is AMD :: AMD Radeon RX 6800 (radeonsi, navi21, LLVM 20.1.2, DRM 3.64, 7.0.0-14-generic) :: 4.6 (Compatibility Profile) Mesa 25.2.8-0ubuntu0.24.04.2
PTB-INFO: Screen 1 : Window 10 : VBL startline = 1200 : VBL Endline = -1
PTB-INFO: Will try to use OS-Builtin OpenML sync control support for accurate Flip timestamping.
PTB-INFO: Measured monitor refresh interval from VBLsync = 16.680536 ms [59.950111 Hz]. (50 valid samples taken, stddev=0.000516 ms.)
PTB-INFO: Reported monitor refresh interval from operating system = 16.680845 ms [59.949001 Hz].
PTB-INFO: Psychtoolbox imaging pipeline starting up for window with requested imagingmode 1025 ...
PTB-INFO: Will use 8 bits per color component framebuffer for stimulus drawing.
PTB-INFO: Will use 8 bits per color component framebuffer for any stimulus post-processing.
===>>> screenManager: opened win: 10 kind: 1
---> screenManager: Previous OpenGL blending: GL_ONE | GL_ZERO
---> screenManager: OpenGL blending now: GL_SRC_ALPHA | GL_ONE_MINUS_SRC_ALPHA
Compiling all shaders matching SmoothedDiscShader * into a GLSL program.
Building a fragment shader:Reading shader from file /home/cog5/Code/Psychtoolbox-3/Psychtoolbox/PsychOpenGL/PsychGLSLShaders/SmoothedDiscShader.frag.txt ...
Building a vertex shader:Reading shader from file /home/cog5/Code/Psychtoolbox-3/Psychtoolbox/PsychOpenGL/PsychGLSLShaders/SmoothedDiscShader.vert.txt ...
---> computePosition: Disc<discStimulus#1F2C25520> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
---> computePosition: fix<fixationCrossStimulus#1F2C282FB> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
≣≣≣≣ No strobe output I/O...
-->arduinoManager: In silent mode, reset() & open() to connect!
===> No reward TTLs will be sent...
≣≣≣≣⊱ iRec<iRecManager#1F2CA19FF>: Running iRec in Dummy Mode | Initialise
===>>> screenManager.open(): Screen already open!
---> screenManager: Skipping Sync Tests etc. - ONLY FOR DEVELOPMENT!
---> screenManager: Probing for a Display++...BitsPlusPlus: Could not find a Bits# config file under [/home/cog5/.Psychtoolbox/BitsSharpConfig.txt]. Assuming a Bits+ device instead of a Bits# is connected.
BitsPlusPlus: Please create a config file under this name if you have a Bits# and want to use it as Bits# instead of as a Bits+.
BitsPlusPlus: The most simple way is to create an empty file. A more robust way is to store the name of the Bits# serial port
BitsPlusPlus: in the first line of the text file, e.g., COM5 [Windows], or /dev/ttyACM0 [Linux] or similar.
NO Display++
---> screenManager: Internal processing set to: 8 bits
PTB-INFO: Proper timing and timestamping of visual stimulus onset is not reliably supported at all on this desktop GUI
PTB-INFO: when running in windowed mode (non-fullscreen), or for transparent windows. If PTB aborts with
PTB-INFO: 'Synchronization failure' you can disable the sync test via a call to Screen('Preference', 'SkipSyncTests', 2).
PTB-INFO: You won't get proper stimulus onset timestamps in any case though, so windowed mode is of limited use.
PTB-INFO: Using a desktop GUI like GNOME-3 or Ubuntu desktop, which uses the Mutter compositor, may give better timing if
PTB-INFO: you opt-in into our new experimental(!) support: Call setenv('PSYCH_EXPERIMENTAL_NETWMTS', '1') at start of your script.
PTB-INFO: OpenGL-Renderer is AMD :: AMD Radeon RX 6800 (radeonsi, navi21, LLVM 20.1.2, DRM 3.64, 7.0.0-14-generic) :: 4.6 (Compatibility Profile) Mesa 25.2.8-0ubuntu0.24.04.2
PTB-INFO: Screen 0 : Window 12 : VBL startline = 2160 : VBL Endline = -1
PTB-INFO: Will try to use OS-Builtin OpenML sync control support for accurate Flip timestamping.
PTB-INFO: Reported monitor refresh interval from operating system = 16.667778 ms [59.995998 Hz].
PTB-INFO: All startup display tests and calibrations disabled. Assuming a refresh interval of 59.995998 Hz. Timing will be inaccurate!
PTB-INFO: Psychtoolbox imaging pipeline starting up for window with requested imagingmode 1025 ...
PTB-INFO: Will use 8 bits per color component framebuffer for stimulus drawing.
PTB-INFO: Will use 8 bits per color component framebuffer for any stimulus post-processing.
---> screenManager: Previous OpenGL blending: GL_ONE | GL_ZERO
---> screenManager: OpenGL blending now: GL_SRC_ALPHA | GL_ONE_MINUS_SRC_ALPHA
===>>> CALIBRATING IREC... <<<===
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
===>>> CALIBRATING IREC FINISHED... <<<===
≣Close⊱ Close Touch Manager...
≣reset⊱ Touch data reset: softReset = 0 | lastPressed = 0
≣≣≣≣⊱touchManager: Dummy Mode Active
===>>> User Functions instantiated…
===≣≣≣≣⊱ Loading State File: DefaultStateInfo.m
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=0.32 | R=2.00 | Strict=1
=================>> Built state info file <<==================
Columns 1 through 4
{'name' } {'next' } {'time' } {'entryFcn'}
{'pause' } {'prefix' } {[ Inf]} {11×1 cell }
{'prefix' } {'fixate' } {[0.750000000000000]} { 8×1 cell }
{'fixate' } {'breakfix' } {[ 10]} { 1×1 cell }
{'stimulus' } {'incorrect'} {[ 10]} { 2×1 cell }
{'correct' } {'prefix' } {[0.100000000000000]} { 3×1 cell }
{'incorrect'} {'timeout' } {[0.100000000000000]} { 3×1 cell }
{'breakfix' } {'timeout' } {[0.100000000000000]} { 3×1 cell }
{'timeout' } {'prefix' } {[ 2]} { 0×0 cell }
{'calibrate'} {'pause' } {[0.500000000000000]} { 4×1 cell }
{'drift' } {'pause' } {[0.500000000000000]} { 4×1 cell }
{'offset' } {'pause' } {[0.500000000000000]} { 4×1 cell }
{'override' } {'pause' } {[0.500000000000000]} { 1×1 cell }
{'flash' } {'pause' } {[0.500000000000000]} { 1×1 cell }
{'showgrid' } {'pause' } {[ 10]} { 0×0 cell }
Columns 5 through 7
{'withinFcn'} {'transitionFcn'} {'exitFcn'}
{0×0 cell } {0×0 cell } { 1×1 cell}
{1×1 cell } {0×0 cell } { 3×1 cell}
{3×1 cell } {1×1 cell } { 3×1 cell}
{3×1 cell } {1×1 cell } { 2×1 cell}
{1×1 cell } {0×0 cell } {10×1 cell}
{1×1 cell } {0×0 cell } {11×1 cell}
{1×1 cell } {0×0 cell } {11×1 cell}
{1×1 cell } {0×0 cell } { 0×0 cell}
{0×0 cell } {0×0 cell } { 0×0 cell}
{0×0 cell } {0×0 cell } { 0×0 cell}
{0×0 cell } {0×0 cell } { 0×0 cell}
{0×0 cell } {0×0 cell } { 0×0 cell}
{0×0 cell } {0×0 cell } { 0×0 cell}
{1×1 cell } {0×0 cell } { 0×0 cell}
=================>> Built state info file <<=================
≣≣≣≣⊱ Path: /home/cog5/OptickaFiles/SavedData/lab/subjects/Simulcra/2026-06-18/004 created...
≣≣≣≣>>> START BEHAVIOURAL TASK: 2026-06-18-20-05-07_004_Simulcra <<<≣≣≣≣
Initial Path: /home/cog5/OptickaFiles/SavedData/lab/subjects/Simulcra/2026-06-18/004
Initial Comments:
≣≣≣≣⊱ Creating Behavioural Record Plot Window...
≣≣≣≣⊱ Increasing Priority...
PTB-INFO: Gamemode optimizations enable requested. Current/Old status: Disabled
PTB-INFO: New status: Active
≣≣≣≣ Warming up the GPU, Eyetracker and I/O systems... <<<===
begin state: stateMachine warmup... ...exit
middle state: stateMachine warmup... ...exit
surprise state: stateMachine warmup... ...exit
end state: stateMachine warmup... ...exit
--->>> Total time to do state traversal: 0.311918 secs
--->>> Loops: 95265 thus ~0.00327422 ms per loop
≣≣≣≣⊱ state machine<stateMachine#1F2D85A96>: stateMachine not running... | finish method
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Show stimuli: 1 2 | Show
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+->IREC Message: 87
-+-+->IREC Message: 65
-+-+->IREC Message: 82
-+-+->IREC Message: 77
-+-+->IREC Message: 85
-+-+->IREC Message: 80
-+-+->IREC Message: 95
-+-+->IREC Message: 84
-+-+->IREC Message: 69
-+-+->IREC Message: 83
-+-+->IREC Message: 84
-+-+->IREC Message: 32
-+-+->IREC Message: 51
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
≣≣≣≣ Save initial state in case of crash: /tmp/TEMP2026-06-18-20-05-07_004_Simulcra.mat ...
... Saved!
---> computePosition: Disc<discStimulus#1F2C25520> X = 1230px | 270px | 0deg <> Y = 870px | 270px | 0deg
---> computePosition: fix<fixationCrossStimulus#1F2C282FB> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
≣≣≣≣⊱⊱⊱ Igniting the State Machine... ⊰⊰⊰≣≣≣≣
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
PAUSED, press [p] to resume...
-+-+->IREC Message: -100
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: pause @ 0.00s - 0 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: pause @ 1.31s | state time: 1.31s | 78/78 ticks
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=0.31 | R=2.00 | Strict=1
-+-+->IREC Message: -1500
-+-+->IREC Message: 3
-+-+->IREC Message: 85
-+-+->IREC Message: 85
-+-+->IREC Message: 73
-+-+->IREC Message: 68
-+-+->IREC Message: 32
-+-+->IREC Message: 50
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: prefix @ 1.33s - 78 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ INITFIX : prefix:2 | B:1 R:1 [1/9] | V: 3 | Time: 2.085 (44) isFix:0 isExcl:0 isFixInit:0 isBlink:0
fixLength: 0.00 > xyPosition: 10.00 10.00 | updateVariables: B:1 R:1 T:1 V:3>S1:xyPositionOut=10 10
-+-+->IREC Message: 77
-+-+->IREC Message: 83
-+-+->IREC Message: 71
-+-+->IREC Message: 58
-+-+->IREC Message: 83
-+-+->IREC Message: 116
-+-+->IREC Message: 97
-+-+->IREC Message: 114
-+-+->IREC Message: 116
-+-+->IREC Message: 32
-+-+->IREC Message: 70
-+-+->IREC Message: 105
-+-+->IREC Message: 120
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: prefix @ 2.08s | state time: 0.75s | 44/122 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: fixate @ 2.11s - 122 ticks
-+-+-> EyeTracker:testSearchHoldFixation FIXATION SUCCESSFUL!: stimulus time:[0.32 0.00 0.32] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=1.00 | R=2.00 | Strict=1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Show stimuli: 1 2 | Show
-+-+->IREC Message: -1500
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: fixate @ 2.44s | state time: 0.34s | 20/142 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: stimulus @ 2.45s - 142 ticks
-+-+->IREC Message: -1499
-+-+-> EyeTracker:testHoldFixation FIXATION SUCCESSFUL!: correct time:[1.01 0.00 1.01] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: stimulus @ 3.48s | state time: 1.03s | 62/204 ticks
-+-+->IREC Message: -1501
-+-+->IREC Message: 1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: correct @ 3.48s - 204 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ CORRECT : correct:5 | B:1 R:1 [1/9] | V: 3 | Time: 3.603 (133) isFix:1 isExcl:0 isFixInit:0 isBlink:0
fixLength: 1.01 > xyPosition: 10.00 10.00 | updateVariables: B:1 R:1 T:1 V:3>S1:xyPositionOut=10 10
≣≣≣≣⊱ taskSequence<taskSequence#1F2C2B111>: Trial = 1 Response = 1 @ 1.8e+09 secs
---> computePosition: Disc<discStimulus#1F2C25520> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
---> computePosition: fix<fixationCrossStimulus#1F2C282FB> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: correct @ 3.60s | state time: 0.11s | 7/211 ticks
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=0.43 | R=2.00 | Strict=1
-+-+->IREC Message: -1500
-+-+->IREC Message: 2
-+-+->IREC Message: 85
-+-+->IREC Message: 85
-+-+->IREC Message: 73
-+-+->IREC Message: 68
-+-+->IREC Message: 32
-+-+->IREC Message: 54
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: prefix @ 6.01s - 211 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ INITFIX : prefix:6 | B:1 R:2 [2/9] | V: 2 | Time: 6.772 (177) isFix:0 isExcl:0 isFixInit:0 isBlink:0
fixLength: 0.00 > xyPosition: 0.00 0.00 | updateVariables: B:1 R:2 T:2 V:2>S1:xyPositionOut=0 0
-+-+->IREC Message: 77
-+-+->IREC Message: 83
-+-+->IREC Message: 71
-+-+->IREC Message: 58
-+-+->IREC Message: 83
-+-+->IREC Message: 116
-+-+->IREC Message: 97
-+-+->IREC Message: 114
-+-+->IREC Message: 116
-+-+->IREC Message: 32
-+-+->IREC Message: 70
-+-+->IREC Message: 105
-+-+->IREC Message: 120
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: prefix @ 6.76s | state time: 0.75s | 44/255 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: fixate @ 6.80s - 255 ticks
-+-+-> EyeTracker:testSearchHoldFixation FIXATION SUCCESSFUL!: stimulus time:[0.43 0.00 0.43] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=1.00 | R=2.00 | Strict=1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Show stimuli: 1 2 | Show
-+-+->IREC Message: -1500
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: fixate @ 7.25s | state time: 0.45s | 27/282 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: stimulus @ 7.26s - 282 ticks
-+-+->IREC Message: -1499
-+-+-> EyeTracker:testHoldFixation FIXATION SUCCESSFUL!: correct time:[1.01 0.00 1.01] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: stimulus @ 8.28s | state time: 1.03s | 62/344 ticks
-+-+->IREC Message: -1501
-+-+->IREC Message: 1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: correct @ 8.28s - 344 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ CORRECT : correct:9 | B:1 R:2 [2/9] | V: 2 | Time: 8.407 (273) isFix:1 isExcl:0 isFixInit:0 isBlink:0
fixLength: 1.01 > xyPosition: 0.00 0.00 | updateVariables: B:1 R:2 T:2 V:2>S1:xyPositionOut=0 0
≣≣≣≣⊱ taskSequence<taskSequence#1F2C2B111>: Trial = 2 Response = 1 @ 1.8e+09 secs
---> computePosition: Disc<discStimulus#1F2C25520> X = 690px | -270px | 0deg <> Y = 330px | -270px | 0deg
---> computePosition: fix<fixationCrossStimulus#1F2C282FB> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: correct @ 8.40s | state time: 0.11s | 7/351 ticks
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=0.37 | R=2.00 | Strict=1
-+-+->IREC Message: -1500
-+-+->IREC Message: 1
-+-+->IREC Message: 85
-+-+->IREC Message: 85
-+-+->IREC Message: 73
-+-+->IREC Message: 68
-+-+->IREC Message: 32
-+-+->IREC Message: 65
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: prefix @ 9.34s - 351 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ INITFIX : prefix:A | B:1 R:3 [3/9] | V: 1 | Time: 10.108 (319) isFix:0 isExcl:0 isFixInit:0 isBlink:0
fixLength: 0.00 > xyPosition: -10.00 -10.00 | updateVariables: B:1 R:3 T:3
V:1>S1:xyPositionOut=-10 -10
-+-+->IREC Message: 77
-+-+->IREC Message: 83
-+-+->IREC Message: 71
-+-+->IREC Message: 58
-+-+->IREC Message: 83
-+-+->IREC Message: 116
-+-+->IREC Message: 97
-+-+->IREC Message: 114
-+-+->IREC Message: 116
-+-+->IREC Message: 32
-+-+->IREC Message: 70
-+-+->IREC Message: 105
-+-+->IREC Message: 120
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: prefix @ 10.10s | state time: 0.76s | 46/397 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: fixate @ 10.12s - 397 ticks
-+-+-> EyeTracker:testSearchHoldFixation FIXATION SUCCESSFUL!: stimulus time:[0.37 0.00 0.37] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=1.00 | R=2.00 | Strict=1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Show stimuli: 1 2 | Show
-+-+->IREC Message: -1500
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: fixate @ 10.50s | state time: 0.38s | 23/420 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: stimulus @ 10.50s - 420 ticks
-+-+->IREC Message: -1499
-+-+-> EyeTracker:testHoldFixation FIXATION SUCCESSFUL!: correct time:[1.01 0.00 1.01] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: stimulus @ 11.54s | state time: 1.03s | 62/482 ticks
-+-+->IREC Message: -1501
-+-+->IREC Message: 1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: correct @ 11.54s - 482 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ CORRECT : correct:D | B:1 R:3 [3/9] | V: 1 | Time: 11.660 (411) isFix:1 isExcl:0 isFixInit:0 isBlink:0
fixLength: 1.01 > xyPosition: -10.00 -10.00 | updateVariables: B:1 R:3 T:3
V:1>S1:xyPositionOut=-10 -10
≣≣≣≣⊱ taskSequence<taskSequence#1F2C2B111>: Trial = 3 Response = 1 @ 1.8e+09 secs
---> computePosition: Disc<discStimulus#1F2C25520> X = 690px | -270px | 0deg <> Y = 330px | -270px | 0deg
---> computePosition: fix<fixationCrossStimulus#1F2C282FB> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: correct @ 11.65s | state time: 0.12s | 7/489 ticks
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=0.56 | R=2.00 | Strict=1
-+-+->IREC Message: -1500
-+-+->IREC Message: 1
-+-+->IREC Message: 85
-+-+->IREC Message: 85
-+-+->IREC Message: 73
-+-+->IREC Message: 68
-+-+->IREC Message: 32
-+-+->IREC Message: 69
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: prefix @ 12.31s - 489 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ INITFIX : prefix:E | B:2 R:1 [4/9] | V: 1 | Time: 13.078 (456) isFix:0 isExcl:0 isFixInit:0 isBlink:0
fixLength: 0.00 > xyPosition: -10.00 -10.00 | updateVariables: B:2 R:1 T:4
V:1>S1:xyPositionOut=-10 -10
-+-+->IREC Message: 77
-+-+->IREC Message: 83
-+-+->IREC Message: 71
-+-+->IREC Message: 58
-+-+->IREC Message: 83
-+-+->IREC Message: 116
-+-+->IREC Message: 97
-+-+->IREC Message: 114
-+-+->IREC Message: 116
-+-+->IREC Message: 32
-+-+->IREC Message: 70
-+-+->IREC Message: 105
-+-+->IREC Message: 120
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: prefix @ 13.07s | state time: 0.76s | 45/534 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: fixate @ 13.07s - 534 ticks
-+-+-> EyeTracker:testSearchHoldFixation FIXATION SUCCESSFUL!: stimulus time:[0.57 0.00 0.57] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=1.00 | R=2.00 | Strict=1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Show stimuli: 1 2 | Show
-+-+->IREC Message: -1500
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: fixate @ 13.65s | state time: 0.58s | 35/569 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: stimulus @ 13.66s - 569 ticks
-+-+->IREC Message: -1499
-+-+-> EyeTracker:testHoldFixation FIXATION SUCCESSFUL!: correct time:[1.02 0.00 1.02] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: stimulus @ 14.69s | state time: 1.03s | 62/631 ticks
-+-+->IREC Message: -1501
-+-+->IREC Message: 1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: correct @ 14.69s - 631 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ CORRECT : correct:11 | B:2 R:1 [4/9] | V: 1 | Time: 14.812 (560) isFix:1 isExcl:0 isFixInit:0 isBlink:0
fixLength: 1.02 > xyPosition: -10.00 -10.00 | updateVariables: B:2 R:1 T:4
V:1>S1:xyPositionOut=-10 -10
≣≣≣≣⊱ taskSequence<taskSequence#1F2C2B111>: Trial = 4 Response = 1 @ 1.8e+09 secs
---> computePosition: Disc<discStimulus#1F2C25520> X = 1230px | 270px | 0deg <> Y = 870px | 270px | 0deg
---> computePosition: fix<fixationCrossStimulus#1F2C282FB> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: correct @ 14.80s | state time: 0.11s | 7/638 ticks
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=0.30 | R=2.00 | Strict=1
-+-+->IREC Message: -1500
-+-+->IREC Message: 3
-+-+->IREC Message: 85
-+-+->IREC Message: 85
-+-+->IREC Message: 73
-+-+->IREC Message: 68
-+-+->IREC Message: 32
-+-+->IREC Message: 49
-+-+->IREC Message: 50
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: prefix @ 15.36s - 638 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ INITFIX : prefix:12 | B:2 R:2 [5/9] | V: 3 | Time: 16.130 (606) isFix:0 isExcl:0 isFixInit:0 isBlink:0
fixLength: 0.00 > xyPosition: 10.00 10.00 | updateVariables: B:2 R:2 T:5 V:3>S1:xyPositionOut=10 10
-+-+->IREC Message: 77
-+-+->IREC Message: 83
-+-+->IREC Message: 71
-+-+->IREC Message: 58
-+-+->IREC Message: 83
-+-+->IREC Message: 116
-+-+->IREC Message: 97
-+-+->IREC Message: 114
-+-+->IREC Message: 116
-+-+->IREC Message: 32
-+-+->IREC Message: 70
-+-+->IREC Message: 105
-+-+->IREC Message: 120
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: prefix @ 16.12s | state time: 0.76s | 46/684 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: fixate @ 16.13s - 684 ticks
-+-+-> EyeTracker:testSearchHoldFixation FIXATION SUCCESSFUL!: stimulus time:[0.30 0.00 0.30] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=1.00 | R=2.00 | Strict=1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Show stimuli: 1 2 | Show
-+-+->IREC Message: -1500
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: fixate @ 16.44s | state time: 0.31s | 19/703 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: stimulus @ 16.44s - 703 ticks
-+-+->IREC Message: -1499
-+-+-> EyeTracker:testHoldFixation FIXATION SUCCESSFUL!: correct time:[1.01 0.00 1.01] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: stimulus @ 17.47s | state time: 1.03s | 62/765 ticks
-+-+->IREC Message: -1501
-+-+->IREC Message: 1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: correct @ 17.48s - 765 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ CORRECT : correct:15 | B:2 R:2 [5/9] | V: 3 | Time: 17.598 (694) isFix:1 isExcl:0 isFixInit:0 isBlink:0
fixLength: 1.01 > xyPosition: 10.00 10.00 | updateVariables: B:2 R:2 T:5 V:3>S1:xyPositionOut=10 10
≣≣≣≣⊱ taskSequence<taskSequence#1F2C2B111>: Trial = 5 Response = 1 @ 1.8e+09 secs
---> computePosition: Disc<discStimulus#1F2C25520> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
---> computePosition: fix<fixationCrossStimulus#1F2C282FB> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: correct @ 17.59s | state time: 0.11s | 7/772 ticks
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=0.67 | R=2.00 | Strict=1
-+-+->IREC Message: -1500
-+-+->IREC Message: 2
-+-+->IREC Message: 85
-+-+->IREC Message: 85
-+-+->IREC Message: 73
-+-+->IREC Message: 68
-+-+->IREC Message: 32
-+-+->IREC Message: 49
-+-+->IREC Message: 54
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: prefix @ 18.32s - 772 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ INITFIX : prefix:16 | B:2 R:3 [6/9] | V: 2 | Time: 19.083 (740) isFix:0 isExcl:0 isFixInit:0 isBlink:0
fixLength: 0.00 > xyPosition: 0.00 0.00 | updateVariables: B:2 R:3 T:6 V:2>S1:xyPositionOut=0 0
-+-+->IREC Message: 77
-+-+->IREC Message: 83
-+-+->IREC Message: 71
-+-+->IREC Message: 58
-+-+->IREC Message: 83
-+-+->IREC Message: 116
-+-+->IREC Message: 97
-+-+->IREC Message: 114
-+-+->IREC Message: 116
-+-+->IREC Message: 32
-+-+->IREC Message: 70
-+-+->IREC Message: 105
-+-+->IREC Message: 120
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: prefix @ 19.07s | state time: 0.76s | 46/818 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: fixate @ 19.08s - 818 ticks
-+-+-> EyeTracker:testSearchHoldFixation FIXATION SUCCESSFUL!: stimulus time:[0.67 0.00 0.67] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=1.00 | R=2.00 | Strict=1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Show stimuli: 1 2 | Show
-+-+->IREC Message: -1500
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: fixate @ 19.76s | state time: 0.68s | 41/859 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: stimulus @ 19.76s - 859 ticks
-+-+->IREC Message: -1499
-+-+-> EyeTracker:testHoldFixation FIXATION SUCCESSFUL!: correct time:[1.02 0.00 1.02] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: stimulus @ 20.79s | state time: 1.03s | 62/921 ticks
-+-+->IREC Message: -1501
-+-+->IREC Message: 1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: correct @ 20.79s - 921 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ CORRECT : correct:19 | B:2 R:3 [6/9] | V: 2 | Time: 20.917 (850) isFix:1 isExcl:0 isFixInit:0 isBlink:0
fixLength: 1.02 > xyPosition: 0.00 0.00 | updateVariables: B:2 R:3 T:6 V:2>S1:xyPositionOut=0 0
≣≣≣≣⊱ taskSequence<taskSequence#1F2C2B111>: Trial = 6 Response = 1 @ 1.8e+09 secs
---> computePosition: Disc<discStimulus#1F2C25520> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
---> computePosition: fix<fixationCrossStimulus#1F2C282FB> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: correct @ 20.91s | state time: 0.12s | 7/928 ticks
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=0.25 | R=2.00 | Strict=1
-+-+->IREC Message: -1500
-+-+->IREC Message: 2
-+-+->IREC Message: 85
-+-+->IREC Message: 85
-+-+->IREC Message: 73
-+-+->IREC Message: 68
-+-+->IREC Message: 32
-+-+->IREC Message: 49
-+-+->IREC Message: 65
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: prefix @ 21.36s - 928 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ INITFIX : prefix:1A | B:3 R:1 [7/9] | V: 2 | Time: 22.135 (896) isFix:0 isExcl:0 isFixInit:0 isBlink:0
fixLength: 0.00 > xyPosition: 0.00 0.00 | updateVariables: B:3 R:1 T:7 V:2>S1:xyPositionOut=0 0
-+-+->IREC Message: 77
-+-+->IREC Message: 83
-+-+->IREC Message: 71
-+-+->IREC Message: 58
-+-+->IREC Message: 83
-+-+->IREC Message: 116
-+-+->IREC Message: 97
-+-+->IREC Message: 114
-+-+->IREC Message: 116
-+-+->IREC Message: 32
-+-+->IREC Message: 70
-+-+->IREC Message: 105
-+-+->IREC Message: 120
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: prefix @ 22.13s | state time: 0.77s | 46/974 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: fixate @ 22.13s - 974 ticks
-+-+-> EyeTracker:testSearchHoldFixation FIXATION SUCCESSFUL!: stimulus time:[0.25 0.00 0.25] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=1.00 | R=2.00 | Strict=1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Show stimuli: 1 2 | Show
-+-+->IREC Message: -1500
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: fixate @ 22.39s | state time: 0.26s | 16/990 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: stimulus @ 22.39s - 990 ticks
-+-+->IREC Message: -1499
-+-+-> EyeTracker:testHoldFixation FIXATION SUCCESSFUL!: correct time:[1.02 0.00 1.02] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: stimulus @ 23.43s | state time: 1.03s | 62/1052 ticks
-+-+->IREC Message: -1501
-+-+->IREC Message: 1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: correct @ 23.43s - 1052 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ CORRECT : correct:1D | B:3 R:1 [7/9] | V: 2 | Time: 23.553 (981) isFix:1 isExcl:0 isFixInit:0 isBlink:0
fixLength: 1.02 > xyPosition: 0.00 0.00 | updateVariables: B:3 R:1 T:7 V:2>S1:xyPositionOut=0 0
≣≣≣≣⊱ taskSequence<taskSequence#1F2C2B111>: Trial = 7 Response = 1 @ 1.8e+09 secs
---> computePosition: Disc<discStimulus#1F2C25520> X = 1230px | 270px | 0deg <> Y = 870px | 270px | 0deg
---> computePosition: fix<fixationCrossStimulus#1F2C282FB> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: correct @ 23.54s | state time: 0.12s | 7/1059 ticks
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=0.28 | R=2.00 | Strict=1
-+-+->IREC Message: -1500
-+-+->IREC Message: 3
-+-+->IREC Message: 85
-+-+->IREC Message: 85
-+-+->IREC Message: 73
-+-+->IREC Message: 68
-+-+->IREC Message: 32
-+-+->IREC Message: 49
-+-+->IREC Message: 69
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: prefix @ 24.00s - 1059 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ INITFIX : prefix:1E | B:3 R:2 [8/9] | V: 3 | Time: 24.754 (1026) isFix:0 isExcl:0 isFixInit:0 isBlink:0
fixLength: 0.00 > xyPosition: 10.00 10.00 | updateVariables: B:3 R:2 T:8 V:3>S1:xyPositionOut=10 10
-+-+->IREC Message: 77
-+-+->IREC Message: 83
-+-+->IREC Message: 71
-+-+->IREC Message: 58
-+-+->IREC Message: 83
-+-+->IREC Message: 116
-+-+->IREC Message: 97
-+-+->IREC Message: 114
-+-+->IREC Message: 116
-+-+->IREC Message: 32
-+-+->IREC Message: 70
-+-+->IREC Message: 105
-+-+->IREC Message: 120
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: prefix @ 24.75s | state time: 0.75s | 45/1104 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: fixate @ 24.75s - 1104 ticks
-+-+-> EyeTracker:testSearchHoldFixation FIXATION SUCCESSFUL!: stimulus time:[0.28 0.00 0.28] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=1.00 | R=2.00 | Strict=1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Show stimuli: 1 2 | Show
-+-+->IREC Message: -1500
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: fixate @ 25.05s | state time: 0.30s | 18/1122 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: stimulus @ 25.05s - 1122 ticks
-+-+->IREC Message: -1499
-+-+-> EyeTracker:testHoldFixation FIXATION SUCCESSFUL!: correct time:[1.02 0.00 1.02] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: stimulus @ 26.08s | state time: 1.03s | 62/1184 ticks
-+-+->IREC Message: -1501
-+-+->IREC Message: 1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: correct @ 26.08s - 1184 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ CORRECT : correct:21 | B:3 R:2 [8/9] | V: 3 | Time: 26.205 (1113) isFix:1 isExcl:0 isFixInit:0 isBlink:0
fixLength: 1.02 > xyPosition: 10.00 10.00 | updateVariables: B:3 R:2 T:8 V:3>S1:xyPositionOut=10 10
≣≣≣≣⊱ taskSequence<taskSequence#1F2C2B111>: Trial = 8 Response = 1 @ 1.8e+09 secs
---> computePosition: Disc<discStimulus#1F2C25520> X = 690px | -270px | 0deg <> Y = 330px | -270px | 0deg
---> computePosition: fix<fixationCrossStimulus#1F2C282FB> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: correct @ 26.20s | state time: 0.12s | 7/1191 ticks
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=0.25 | R=2.00 | Strict=1
-+-+->IREC Message: -1500
-+-+->IREC Message: 1
-+-+->IREC Message: 85
-+-+->IREC Message: 85
-+-+->IREC Message: 73
-+-+->IREC Message: 68
-+-+->IREC Message: 32
-+-+->IREC Message: 50
-+-+->IREC Message: 50
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: prefix @ 26.68s - 1191 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ INITFIX : prefix:22 | B:3 R:3 [9/9] | V: 1 | Time: 27.456 (1159) isFix:0 isExcl:0 isFixInit:0 isBlink:0
fixLength: 0.00 > xyPosition: -10.00 -10.00 | updateVariables: B:3 R:3 T:9
V:1>S1:xyPositionOut=-10 -10
-+-+->IREC Message: 77
-+-+->IREC Message: 83
-+-+->IREC Message: 71
-+-+->IREC Message: 58
-+-+->IREC Message: 83
-+-+->IREC Message: 116
-+-+->IREC Message: 97
-+-+->IREC Message: 114
-+-+->IREC Message: 116
-+-+->IREC Message: 32
-+-+->IREC Message: 70
-+-+->IREC Message: 105
-+-+->IREC Message: 120
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: prefix @ 27.45s | state time: 0.76s | 46/1237 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: fixate @ 27.45s - 1237 ticks
-+-+-> EyeTracker:testSearchHoldFixation FIXATION SUCCESSFUL!: stimulus time:[0.27 0.00 0.27] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=1.00 | R=2.00 | Strict=1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Show stimuli: 1 2 | Show
-+-+->IREC Message: -1500
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: fixate @ 27.73s | state time: 0.28s | 17/1254 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: stimulus @ 27.73s - 1254 ticks
-+-+->IREC Message: -1499
-+-+-> EyeTracker:testHoldFixation FIXATION SUCCESSFUL!: correct time:[1.02 0.00 1.02] f:1 ft:1 s:0 e:0 fi:0
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: stimulus @ 28.77s | state time: 1.03s | 62/1316 ticks
-+-+->IREC Message: -1501
-+-+->IREC Message: 1
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: correct @ 28.77s - 1316 ticks
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: Triggered! | transitionToStateWithName method
≣≣≣≣⊱ CORRECT : correct:25 | B:3 R:3 [9/9] | V: 1 | Time: 28.891 (1245) isFix:1 isExcl:0 isFixInit:0 isBlink:0
fixLength: 1.02 > xyPosition: -10.00 -10.00 | updateVariables: B:3 R:3 T:9
V:1>S1:xyPositionOut=-10 -10
≣≣≣≣⊱ taskSequence<taskSequence#1F2C2B111>: Trial = 9 Response = 1 @ 1.8e+09 secs
---> taskSequence.updateTask: Task FINISHED, no more updates allowed
---> computePosition: Disc<discStimulus#1F2C25520> X = 690px | -270px | 0deg <> Y = 330px | -270px | 0deg
---> computePosition: fix<fixationCrossStimulus#1F2C282FB> X = 960px | 0px | 0deg <> Y = 600px | 0px | 0deg
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: EXIT: correct @ 28.88s | state time: 0.12s | 7/1323 ticks
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Hide stimuli: 1 2 | Hide
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
-+-+-> EyeTracker:updateFixationValues: X=0 | Y=0 | IT=3.00 | FT=0.44 | R=2.00 | Strict=1
-+-+->IREC Message: -1500
-+-+->IREC Message: 1
-+-+->IREC Message: 85
-+-+->IREC Message: 85
-+-+->IREC Message: 73
-+-+->IREC Message: 68
-+-+->IREC Message: 32
-+-+->IREC Message: 50
-+-+->IREC Message: 54
≣≣≣≣⊱ Run Experiment<stateMachine#1F2D2C946>: ENTER: prefix @ 29.33s - 1323 ticks
--->>> Total time to do state traversal: 29.3351 secs
--->>> Loops: 1323 thus ~22.1732 ms per loop
≣≣≣≣⊱ metaStimulus<metaStimulus#1F2C18B01>: Show stimuli: 1 2 | Show
---> screenManager 1F2C32F09: Closing screen = 1, Win = 10, Kind = 1
INFO: PTB's Screen('Flip', 10) command seems to have missed the requested stimulus presentation deadline
INFO: a total of 12 times out of a total of 1532 flips during this session.
INFO: This number is fairly accurate (and indicative of real timing problems in your own code or your system)
INFO: if you provided requested stimulus onset times with the 'when' argument of Screen('Flip', window [, when]);
INFO: If you called Screen('Flip', window); without the 'when' argument, this count is more of a ''mild'' indicator
INFO: of timing behaviour than a hard reliable measurement. Large numbers may indicate problems and should at least
INFO: deserve your closer attention. Cfe. 'help SyncTrouble', the FAQ section at www.psychtoolbox.org and the
INFO: examples in the PDF presentation in PsychDocumentation/Psychtoolbox3-Slides.pdf for more info and timing tips.
WARNING: This session of your experiment was run by you with the setting Screen('Preference', 'SkipSyncTests', 2).
WARNING: This means that some internal self-tests and calibrations were skipped. Your stimulus presentation timing
WARNING: may have been wrong. This is fine for development and debugging of your experiment, but for running the real
WARNING: study, please make sure to set Screen('Preference', 'SkipSyncTests', 0) for maximum accuracy and reliability.
-+-+-> EyeTracker:RESET Fixation: fix length=0 fix total=0 fix #0
---> screenManager 1F2CA237F: Closing screen = 0, Win = 12, Kind = 1
WARNING: This session of your experiment was run by you with the setting Screen('Preference', 'SkipSyncTests', 2).
WARNING: This means that some internal self-tests and calibrations were skipped. Your stimulus presentation timing
WARNING: may have been wrong. This is fine for development and debugging of your experiment, but for running the real
WARNING: study, please make sure to set Screen('Preference', 'SkipSyncTests', 0) for maximum accuracy and reliability.
≣Close⊱ Close Touch Manager...
===≣≣≣≣⊱ Total ticks: 1247 | stateMachine ticks: 1323
===≣≣≣≣⊱ Tracker Time: 0 | PTB time: 29.3411 | Drift Offset: 0
#####################
≣≣≣≣ <strong>SAVED RAW DATA to: /home/cog5/OptickaFiles/SavedData/lab/subjects/Simulcra/2026-06-18/004/opticka.raw.2026-06-18-20-05-07_004_Simulcra.mat</strong>
#####################
#####################
≣≣≣≣ <strong>SAVED JSON DATA to: /home/cog5/OptickaFiles/SavedData/lab/subjects/Simulcra/2026-06-18/004/opticka.details.2026-06-18-20-05-07_004_Simulcra.json</strong>
#####################
#####################
≣≣≣≣ <strong>SAVED TIMED EVENT DATA to: /home/cog5/OptickaFiles/SavedData/lab/subjects/Simulcra/2026-06-18/004/events.table.2026-06-18-20-05-07_004_Simulcra.tsv</strong>
#####################
Lets print out a table of the stimulus values for every trial run
showTable(myTask);
Plot a timing log of every frame against the stimulus on/off times
PTB has the most reliable and precise timing control of any experimental control system, and we therefore log every flip time alongside the stimulus transitions. The timing log shows every recorded frame in relation to the stimulus transitions.
showTimingLog(myExp);
Plot a timing log of all states and their function evaluation transition times
The state machine also records the timestamps when states are entered and exited. In addition, it times how long each cell array of functions take to run on enter/within/exit, to check for any potential timing problems (you do not want enter/within states to take too long in case it causes frame drops, this can be seen via these plots).
showLog(myExp.stateMachine);