-
-
Notifications
You must be signed in to change notification settings - Fork 27
Fixation Training Notes
In the CoreProtocols
folder there is a FixationTrainingDistractor.mat
protocol. This protocol has 3 stimuli, a distractor grating, a flashing attention spot and a fixation cross. There are 3 variables, that move the spot/cross and the grating independently (the variable is called xyPosition
and uses a cell array to define a set of X/Y points on the screen defined in degrees), and that change the angle of the grating. In the FixationTrainingDistractorStateInfo.m
state info file you can see the following controls that may be useful:
%-----------------------
% remote calibration enables manual control and selection of each fixation
% this is useful for a baby or monkey who has not been trained for fixation
% use 1-9 to show each dot, space to select fix as valid, INS key ON EYELINK KEYBOARD to
% accept calibration!
eL.remoteCalibration = true;
This sets the calibration to a manual mode, in this mode you press the number keys for each point, waiting for the subject to reply. This gives more control for untrained subjects than that default automatic placement mode.
eL.calibrationStyle = 'HV3'; % calibration style
eL.calibrationProportion = [0.2 0.2]; %the proportion of the screen occupied by the calibration stimuli
This defines a 3-point calibration and scales the calibration points closer to the centre of the screen to make it easier. In addition, you can press d
when on the calibration screen to go into drift-correct mode which is similar to a 1-point calibration.
The fixation point moves on each trial, due to this setting:
%==================================================================
%which stimulus in the list from the GUI is used for a fixation target?
me.stimuli.fixationChoice = 3;
This selects stimulus 3 (fixation cross), and when the X and Y position changes, then the fixation centre is updated to follow it.
To allow the task to update properly you will notice the following methods run to ensure the variables and fixation location are updated. For example when you exit the correct
state:
%----------------------when we exit the correct state
correctExitFcn = {
@()updateVariables(me,[],[],true); %update the task variables
@()update(me.stimuli); %update our stimuli ready for display
@()updateFixationTarget(me, true); % make sure the fixation follows me.stimuli.fixationChoice
@()updatePlot(bR, eL, sM); % update the behavioural report plot
@()drawnow; % ensure we update the figure
};
We update the variables for the next trial (updateVariables(me,[],[],true)
), update the stimuli so they change their drawing position etc. based on the changed variables (update(me.stimuli)
), and update the fixation position to follow the chosen stimulus (updateFixationTarget(me, true)
).