Opticka 2.16.1
Opticka is an experiment manager for behavioral research.
Loading...
Searching...
No Matches
eyelinkAnalysis Class Reference

eyelinkAnalysis offers a set of methods to load, parse & plot raw EDF files. It understands opticka trials (where EDF messages TRIALID start a trial and TRIAL_RESULT ends a trial by default) so can parse eye data and plot it for trial groups. You can also manually find microsaccades, and perform ROI/TOI filtering on the eye movements. More...

Detailed Description

eyelinkAnalysis offers a set of methods to load, parse & plot raw EDF files. It understands opticka trials (where EDF messages TRIALID start a trial and TRIAL_RESULT ends a trial by default) so can parse eye data and plot it for trial groups. You can also manually find microsaccades, and perform ROI/TOI filtering on the eye movements.

Copyright ©2014-2022 Ian Max Andolina — released: LGPL3, see LICENCE.md

Inheritance diagram for eyelinkAnalysis:

Public Member Functions

function eyelinkAnalysis (in varargin)
 
function load (in me, in force)
 
function parseSimple (in me)
 
function parse (in me)
 
function parseSaccades (in me)
 parse saccade related data
 
function pruneNonRTTrials (in me)
 remove trials from correct list that did not use a rt start or end message
 
function updateCorrectIndex (in me, in idx)
 update correct index list
 
function pruneTrials (in me, in num)
 prunetrials – very rarely (n=1) we lose a trial strobe in the plexon data and thus when we try to align the plexon trial index and EDF trial index they are off-by-one, this function is used once the index of the trial is know to prune it out of the EDF data set and recalculate the indexes.
 
function plotRaw (in me)
 give a list of trials and it will plot both the raw eye position and the events
 
function plot (in me, in select, in type, in seperateVars, in name)
 give a list of trials and it will plot both the raw eye position and the events
 
function clickMe (in src, in ignoredArg)
 
function spawnMe (in src, in ignoredArg)
 
function parseROI (in me)
 
function parseTOI (in me)
 
function plotROI (in me)
 
function clickMe (in src, in ignoredArg)
 
function plotTOI (in me)
 
function clickMe (in src, in ignoredArg)
 
function get ppd (in me)
 
function fixVarNames (in me)
 
function removeRawData (in me)
 
function reparseVars (in me)
 
- Public Member Functions inherited from analysisCore
function analysisCore (in varargin)
 Class constructor.
 
function checkPaths (in me, in varargin)
 checkPaths: if we've saved an object then load it on a new machine paths to source files may be wrong. If so then allows us to find a new directory for the source files.
 
function showEyePlots (in me, in varargin)
 showEyePlots if we have a linked eyelink file show the raw data plots
 
function showInfo (in me, in varargin)
 showInfo shows the info box for the plexon parsed data
 
function setStats (in me, in varargin)
 setStats set up the stats structure used in many Fieldtrip analyses
 
function set baselineWindow (in me, in in)
 
function optimiseSize (in me)
 optimiseSize remove the raw matrices etc. to reduce memory
 
function GUI (in me, in varargin)
 show a GUI if available for analysis object
 
function initialise (in me, in varargin)
 
function setTimeFreqOptions (in me, in varargin)
 setTimeFreqOptions for Fieldtrip time freq analysis of LFP data
 
- Public Member Functions inherited from optickaCore
function optickaCore (in varargin)
 Class constructor.
 
function get fullName (in me)
 
function getALF (in me, in subject, in sessionPrefix, in lab, in create)
 
function findAttributes (in me, in attrName, in attrValue)
 
function findAttributesandType (in me, in attrName, in attrValue, in type)
 find properties of object with specific attributes, for example all properties whose GetAcccess attribute is public and type is logical.
 
function findPropertyDefault (in me, in propName)
 
function clone (in me)
 Use this syntax to make a deep copy of the object, i.e. OBJ_OUT has the same field values, but will not behave as a handle-copy of me anymore.
 
function checkSuperclasses (in List)
 
function editProperties (in me, in properties)
 method to modify a set of properties
 
function setProp (in me, in property, in value)
 method to fast change a particular value. This is useful for use in anonymous functions, like in the state machine.
 
function initialiseGlobals (in me, in doReset, in doOpen)
 
function initialiseSaveFile (in me)
 Initialise Save prefix.
 
function checkPaths (in me)
 checks the paths are valid
 

Static Public Member Functions

static function plotSecondaryEyeLogs (in tS)
 we also collect eye position within the main PTB loop (sampled at every screen refresh) and this is a lower resolution backup of the eye position data if we need.
 
- Static Public Member Functions inherited from analysisCore
static function doFFT (in p, in fs, in ff, in normalise, in useHanning)
 phaseDifference basic phase diff measurement
 
static function phaseDifference (in x, in y)
 phaseDifference basic phase diff measurement
 
static function phase (in x)
 phase basic phase measurement
 
static function subselectFieldTripTrials (in ft, in idx)
 subselectFieldTripTrials sub-select trials where the ft function fails to use cfg.trials
 
static function findNearest (in in, in value)
 find nearest value in a vector, if more than 1 index return the first
 
static function linearFit (in x, in y)
 
static function var2SE (in var, in dof)
 convert variance to standard error
 
static function rad2ang (in alphain, in rect, in rot)
 
static function ang2rad (in alpha)
 
static function stderr (in data, in type, in onlyerror, in alpha, in dim, in avgfn)
 
static function areabar (in xv, in yv, in ev, in c1, in alpha, in varargin)
 
static function pupilConversion (in value, in cal, in calSize)
 
static function cellArray2Num (in data)
 
static function optimalLayout (in len)
 calculates preferred row col layout for multiple plots
 
static function optimalColours (in n_colors, in bg, in func)
 make optimally different colours for plots Copyright 2010-2011 by Timothy E. Holy
 
static function parsecolor (in s)
 
static function colorstr2rgb (in c)
 
- Static Public Member Functions inherited from optickaCore
static function makeArgs (in args)
 Converts cell args to structure array.
 
static function addDefaults (in args, in defs)
 add default options to arg input
 
static function hasKey (in in, in key)
 check if a struct / object has a propery / field
 
static function getKeys (in device)
 PTB Get key presses, stops key bouncing.
 

Public Attributes

Property file
 file name
 
Property dir
 directory
 
Property trialStartMessageName
 which EDF message contains the trial start tag
 
Property variableMessageName
 which EDF message contains the variable name or value
 
Property rtStartMessage
 
Property rtEndMessage
 EDF message name to end the stimulus presentation or subject repsonse.
 
Property trialEndMessage
 
Property rtOverrideMessage
 override the rtStart time with a custom message?
 
Property minSaccadeDistance
 minimum saccade distance in degrees
 
Property VFAC
 relative velocity threshold
 
Property MINDUR
 minimum saccade duration
 
Property tS
 the temporary experiement structure which contains the eyePos recorded from opticka
 
Property excludeIncorrect
 exclude incorrect trials when indexing (trials contain an idx and correctedIdx value and you can use either)
 
Property ROI
 region of interest?
 
Property TOI
 time of interest?
 
Property verbose
 verbose output?
 
Property pixelsPerCm
 screen resolution
 
Property distance
 screen distance
 
Property useDiameter
 
Property correctValue
 
Property incorrectValue
 
Property breakFixValue
 
Property trialsToPrune
 
Property rtLimits
 these are used for spikes spike saccade time correlations
 
Property rtDivision
 
Property trialOverride
 trial list from the saved behavioural data, used to fix trial name bug in old files
 
Property xCenter
 screen X center in pixels
 
Property yCenter
 screen Y center in pixels
 
Property override573
 57.3 bug override
 
Property downSample
 downsample the data for plotting
 
Property excludeTrials
 
Constant Property EVENT_TYPES = struct
 
Constant Property RECORDING_STATES = struct
 
Constant Property EYES = struct
 
Constant Property PUPIL = struct
 
Constant Property MISSING_DATA_VALUE =
 
- Public Attributes inherited from analysisCore
Property doPlots
 generate plots?
 
Property baselineWindow
 +- time window (s) for baseline estimation/removal [-0.2 0]
 
Property measureRange
 default range (s) to measure values from
 
Property plotRange
 default range to plot data
 
Property rootDirectory
 root directory to check for data if files can't be found
 
Property gd
 getDensity stats object, used for group comparisons
 
Property options
 various stats values in a structure for different analyses
 
Property openUI
 is the UI opened?
 
- Public Attributes inherited from optickaCore
Property name
 object name
 
Property comment
 comment
 
Property verbose
 verbose logging, subclasses must assign this. This is normally logical true/false
 
Property dateStamp
 clock() dateStamp set on construction
 
Property uuid
 universal ID
 
Property paths
 storage of various paths
 
Property fullName
 The fullName is the object name combined with its uuid and class name.
 

Protected Member Functions

function closeUI (in me, in varargin)
 
function makeUI (in me, in varargin)
 
function updateUI (in me, in varargin)
 
function notifyUI (in me, in varargin)
 
function parseEvents (in me)
 main parse loop for EDF events, has to be one big serial loop
 
function parseAsVars (in me)
 
function parseSecondaryEyePos (in me)
 
function parseFixationPositions (in me)
 
function toDegrees (in me, in in)
 
function toPixels (in me, in in)
 
function computeMicrosaccades (in me)
 
function vecvel (in xx, in SAMPLING, in TYPE)
 
function microsacc (in x, in vel, in VFAC, in MINDUR)
 
function binsacc (in sacl, in sacr)
 
function saccpar (in bsac)
 
- Protected Member Functions inherited from analysisCore
virtual function makeUI (in me)
 make the UI for the analysis object
 
virtual function closeUI (in me)
 close the UI for the analysis object
 
virtual function updateUI (in me)
 update the UI for the analysis object
 
function initialiseOptions (in me)
 initialise settings for fieldtrip time frequency analysis
 
function inheritPlxReader (in me, in p)
 Allows two analysis objects to share a single plxReader object. This is important in cases where for e.g. an LFPAnalysis object uses the same plexon file as its spikeAnalysis child used for spike-LFP anaysis.
 
function setSelection (in me, in in)
 set trials / var parsing from outside, override dialog, used when yoked to another analysis object, for example when spikeAnalysis is a child of LFPAnalysis
 
function initialiseStats (in me)
 initialise the statistics options, see setStats()
 
function formatByClass (in me, in dp, in dn)
 format data for ROC
 
function roc (in me, in data)
 ROC see http://www.subcortex.net/research/code/area_under_roc_curve.
 
function auc (in me, in data, in alpha, in flag, in nboot, in varargin)
 Area under ROC.
 
function aucBootstrap (in me, in data, in nboot, in flag, in H0)
 AUC bootstrap.
 
- Protected Member Functions inherited from optickaCore
function parseArgs (in me, in args, in allowedProperties)
 Sets properties from a structure or normal arguments pairs, ignores invalid or non-allowed properties.
 
function addArgs (in me, in args)
 
function setPaths (in me)
 Sets properties from a structure or normal arguments pairs, ignores invalid or non-allowed properties.
 
function getFonts (in me)
 set paths for object
 
function toStructure (in me)
 Converts properties to a structure.
 
function getType (in me, in in)
 
function logOutput (in me, in in, in message, in override)
 Give a metaproperty return the likely property class.
 
function salutation (in me, in varargin)
 Prints messages dependent on verbosity.
 

Additional Inherited Members

- Protected Attributes inherited from analysisCore
Property panels
 UI panels.
 
Property yokedSelection
 do we yoke the selection to the parent object (e.g. LFPAnalysis > spikeAnalysis)
 
Property handles
 handles for the GUI
 
- Protected Attributes inherited from optickaCore
Property cloning
 are we cloning this from another object
 
Property mversion
 Matlab version number, this is transient so it is not saved.
 
Property sansFont
 sans font
 
Property monoFont
 monoFont
 
Property className
 class name
 
Property savePrefix
 save prefix generated from clock time
 
Property fullName_
 cached full name
 

Constructor & Destructor Documentation

◆ eyelinkAnalysis()

function eyelinkAnalysis::eyelinkAnalysis ( in  varargin)

Member Function Documentation

◆ binsacc()

function eyelinkAnalysis::binsacc ( in  sacl,
in  sacr 
)
protected

◆ clickMe() [1/3]

function eyelinkAnalysis::clickMe ( in  src,
in  ignoredArg 
)

◆ clickMe() [2/3]

function eyelinkAnalysis::clickMe ( in  src,
in  ignoredArg 
)

◆ clickMe() [3/3]

function eyelinkAnalysis::clickMe ( in  src,
in  ignoredArg 
)

◆ closeUI()

function eyelinkAnalysis::closeUI ( in  me,
in  varargin 
)
protected
Parameters

return

◆ computeMicrosaccades()

function eyelinkAnalysis::computeMicrosaccades ( in  me)
protected

◆ fixVarNames()

function eyelinkAnalysis::fixVarNames ( in  me)
Parameters

return

◆ load()

function eyelinkAnalysis::load ( in  me,
in  force 
)
Parameters

return

◆ makeUI()

function eyelinkAnalysis::makeUI ( in  me,
in  varargin 
)
protected
Parameters

return

◆ microsacc()

function eyelinkAnalysis::microsacc ( in  x,
in  vel,
in  VFAC,
in  MINDUR 
)
protected

◆ notifyUI()

function eyelinkAnalysis::notifyUI ( in  me,
in  varargin 
)
protectedvirtual
Parameters

return

Reimplemented from analysisCore.

◆ parse()

function eyelinkAnalysis::parse ( in  me)
Parameters

return

◆ parseAsVars()

function eyelinkAnalysis::parseAsVars ( in  me)
protected
Parameters

return

◆ parseEvents()

function eyelinkAnalysis::parseEvents ( in  me)
protected

main parse loop for EDF events, has to be one big serial loop

Parameters

return

◆ parseFixationPositions()

function eyelinkAnalysis::parseFixationPositions ( in  me)
protected
Parameters

return

◆ parseROI()

function eyelinkAnalysis::parseROI ( in  me)
Parameters

return

◆ parseSaccades()

function eyelinkAnalysis::parseSaccades ( in  me)

parse saccade related data

Parameters

return

◆ parseSecondaryEyePos()

function eyelinkAnalysis::parseSecondaryEyePos ( in  me)
protected
Parameters

return

◆ parseSimple()

function eyelinkAnalysis::parseSimple ( in  me)
Parameters

return

◆ parseTOI()

function eyelinkAnalysis::parseTOI ( in  me)
Parameters

return

◆ plot()

function eyelinkAnalysis::plot ( in  me,
in  select,
in  type,
in  seperateVars,
in  name 
)

give a list of trials and it will plot both the raw eye position and the events

Parameters

return

◆ plotRaw()

function eyelinkAnalysis::plotRaw ( in  me)

give a list of trials and it will plot both the raw eye position and the events

Parameters

return

◆ plotROI()

function eyelinkAnalysis::plotROI ( in  me)
Parameters

return

◆ plotSecondaryEyeLogs()

static function eyelinkAnalysis::plotSecondaryEyeLogs ( in  tS)
static

we also collect eye position within the main PTB loop (sampled at every screen refresh) and this is a lower resolution backup of the eye position data if we need.

Parameters

return

◆ plotTOI()

function eyelinkAnalysis::plotTOI ( in  me)
Parameters

return

◆ ppd()

function get eyelinkAnalysis::ppd ( in  me)
Parameters

return

◆ pruneNonRTTrials()

function eyelinkAnalysis::pruneNonRTTrials ( in  me)

remove trials from correct list that did not use a rt start or end message

Parameters

return

◆ pruneTrials()

function eyelinkAnalysis::pruneTrials ( in  me,
in  num 
)

prunetrials – very rarely (n=1) we lose a trial strobe in the plexon data and thus when we try to align the plexon trial index and EDF trial index they are off-by-one, this function is used once the index of the trial is know to prune it out of the EDF data set and recalculate the indexes.

Parameters

return

◆ removeRawData()

function eyelinkAnalysis::removeRawData ( in  me)

◆ reparseVars()

function eyelinkAnalysis::reparseVars ( in  me)

◆ saccpar()

function eyelinkAnalysis::saccpar ( in  bsac)
protected

◆ spawnMe()

function eyelinkAnalysis::spawnMe ( in  src,
in  ignoredArg 
)

◆ toDegrees()

function eyelinkAnalysis::toDegrees ( in  me,
in  in 
)
protected

◆ toPixels()

function eyelinkAnalysis::toPixels ( in  me,
in  in 
)
protected

◆ updateCorrectIndex()

function eyelinkAnalysis::updateCorrectIndex ( in  me,
in  idx 
)

update correct index list

Parameters

return

◆ updateUI()

function eyelinkAnalysis::updateUI ( in  me,
in  varargin 
)
protected
Parameters

return

◆ vecvel()

function eyelinkAnalysis::vecvel ( in  xx,
in  SAMPLING,
in  TYPE 
)
protected

Member Data Documentation

◆ breakFixValue

Property eyelinkAnalysis::breakFixValue

◆ correctValue

Property eyelinkAnalysis::correctValue

◆ dir

Property eyelinkAnalysis::dir

directory

◆ distance

Property eyelinkAnalysis::distance

screen distance

◆ downSample

Property eyelinkAnalysis::downSample

downsample the data for plotting

◆ EVENT_TYPES

Constant Property eyelinkAnalysis::EVENT_TYPES = struct

◆ excludeIncorrect

Property eyelinkAnalysis::excludeIncorrect

exclude incorrect trials when indexing (trials contain an idx and correctedIdx value and you can use either)

◆ excludeTrials

Property eyelinkAnalysis::excludeTrials

◆ EYES

Constant Property eyelinkAnalysis::EYES = struct

◆ file

Property eyelinkAnalysis::file

file name

◆ incorrectValue

Property eyelinkAnalysis::incorrectValue

◆ MINDUR

Property eyelinkAnalysis::MINDUR

minimum saccade duration

◆ minSaccadeDistance

Property eyelinkAnalysis::minSaccadeDistance

minimum saccade distance in degrees

◆ MISSING_DATA_VALUE

Constant Property eyelinkAnalysis::MISSING_DATA_VALUE =

◆ override573

Property eyelinkAnalysis::override573

57.3 bug override

◆ pixelsPerCm

Property eyelinkAnalysis::pixelsPerCm

screen resolution

◆ PUPIL

Constant Property eyelinkAnalysis::PUPIL = struct

◆ RECORDING_STATES

Constant Property eyelinkAnalysis::RECORDING_STATES = struct

◆ ROI

Property eyelinkAnalysis::ROI

region of interest?

◆ rtDivision

Property eyelinkAnalysis::rtDivision

◆ rtEndMessage

Property eyelinkAnalysis::rtEndMessage

EDF message name to end the stimulus presentation or subject repsonse.

◆ rtLimits

Property eyelinkAnalysis::rtLimits

these are used for spikes spike saccade time correlations

◆ rtOverrideMessage

Property eyelinkAnalysis::rtOverrideMessage

override the rtStart time with a custom message?

◆ rtStartMessage

Property eyelinkAnalysis::rtStartMessage

the EDF message name to start measuring stimulus presentation, and this is the 0 time in the analysis by default, can be overridden by send SYNCTIME or rtOverrideMessage

◆ TOI

Property eyelinkAnalysis::TOI

time of interest?

◆ trialEndMessage

Property eyelinkAnalysis::trialEndMessage

EDF message name to signal end of the trial, also parses a passed number, so e.g. "TRIAL_RESULT -1" sets the trial.result to -1, these are used to label trials as correct, incorrect, breakfix etc.

◆ trialOverride

Property eyelinkAnalysis::trialOverride

trial list from the saved behavioural data, used to fix trial name bug in old files

◆ trialStartMessageName

Property eyelinkAnalysis::trialStartMessageName

which EDF message contains the trial start tag

◆ trialsToPrune

Property eyelinkAnalysis::trialsToPrune

◆ tS

Property eyelinkAnalysis::tS

the temporary experiement structure which contains the eyePos recorded from opticka

◆ useDiameter

Property eyelinkAnalysis::useDiameter

conversion pupil size to mm? true/false | calibration value | measured diameter

◆ variableMessageName

Property eyelinkAnalysis::variableMessageName

which EDF message contains the variable name or value

◆ verbose

Property eyelinkAnalysis::verbose

verbose output?

◆ VFAC

Property eyelinkAnalysis::VFAC

relative velocity threshold

◆ xCenter

Property eyelinkAnalysis::xCenter

screen X center in pixels

◆ yCenter

Property eyelinkAnalysis::yCenter

screen Y center in pixels


The documentation for this class was generated from the following file: