Version 1.0 of the EYE-EEG extension for EEGLAB
For more information on this software, visit https://www.eyetracking-eeg.org
EYE-EEG toolbox for combining eye-tracking & EEG
Home Page: https://www.eyetracking-eeg.org
Version 1.0 of the EYE-EEG extension for EEGLAB
For more information on this software, visit https://www.eyetracking-eeg.org
Received the following bug report:
When we try to synchronize data in eeglab with eye-eeg, we found that messages could not be recognized from *.asc file. After lots of tests, finally we found that eye-eeg could not read messages with offset.
The full structure of Eyelink messages is:
`‘MSG' + timeStamp + [offset] + messageText`
Messages with [offset] means events happened [offset] millisecond ago. Like this:
`MSG 4336690 3151 face2_Onset 127`
And those without [offset] means events happens realtime. Like this(4333539 = 4336690 - 3151):
`MSG 4333539 face2_Onset 127`
Messages with [offset] are used in E-Prime to markup the actually onset time of each E-Object(stimulate screen).
Hi Olaf,
the bugfix you had in searchclosest.m:
''' % ------ -------'''
is for the bug:
searchclosest(1:10,11), thus if the event is larger. But the same bug can appear if the to-be-searched timeis smaller: searchclosest(1:10,0)
i.e. you need to add:
if to< 1
to= 1;
end
searchlcosest(1:10,0) should not fail.
Maybe you can drop the dependency and directly use:
[~,I] = min(abs(timelist,t));
this will not make use of the sortedness of the list, but uses inbuild functions (the lists are not that large) Best, Bene
As alternative to Engbert & Kliegl (2003). Available in MATLAB should be straightforward to integrate.
In line 101 of overweightevents.m
eeglab's pop_rmbase.m
is called with two input arguments (i.e., pop_rmbase(sac, [])
. This worked fine when used with older eeglab versions. With Matlab 2019b and eeglab2019.1, it throws the following error:
Not enough input arguments.
Error in pop_rmbase (line 165)
elseif ~isempty(pointrange)
Error in overweightevents (line 101)
sac = pop_rmbase(sac,[]); % baseline subtracted across whole epoch
Error in pop_overweightevents (line 86)
[EEG_overweighted] = overweightevents(EEG,event2overweight,timelim,ow_proportion,removemean);
I think the error is due to recent changes in pop_rmbase
. Adding a third, empty, input argument seems to solve the problem: pop_rmbase(sac, [], [])
This third argument shouldn't make a difference. See pop_rmbase's documentation:
Baseline points vector (overwritten by timerange).
% Empty or [] input -> Use whole epoch as baseline
The landing position of the last saccade of each epoch is incorrect. This seems to be due to a bug in function detecteyemovements.m
in line 360:
if endsmp(end) > size(gazexy,2), endsmp(end) = size(gazexy,2); end
The intention here seems to be that if the temporal offset of the last saccade ensmp(end)
is later than the last sampling point of the epoch, then the offset should simply be the last available sampling point. However, if I understand correctly the code above refers to the wrong dimension of gazexy, which represents sampling points * eye channels (vertical, horizontal). Thus, the offset of the last saccade is almost garanteed to be later than size(gazexy,2)
= 2.
I think the correct code should refer to the first dimension of gazexy:
if endsmp(end) > size(gazexy,1), endsmp(end) = size(gazexy,1); end
Using the pilot data I uploaded to http://likan.oss-cn-beijing.aliyuncs.com/Data/Disjunction2Pilot.zip
When I trying to corregister EEG with ET, using the method 2 with the "TTL_SYNC" as the keyword, I got the following error:
A similar problem has also being reported under the EEGLAB, sccn/eeglab#452
Thank you very much.
Likan
Currently, fix events do not contain properties like incoming saccade amplitude. only saccade events do. To facilitate deconvolution methods and other analyses, sacc. props. should also be added to fixation events
Bug report from user Stefan (August-13, 2019)
Problem in synchronization.
On line 248, I changed
new_ix = zeros(length(ET.event),1);
into
new_ix = zeros(size(ET.event,1),1);
and now it runs just fine.
Dear team,
I’m started to look at your great toolbox EYE-EEG. I’m trying to use it for my data analysis, but unfortunately I got some issues…
Especially, when I tried to evaluate the ET/EEG synchronization (via cross-correlation) I got a ‘Dimensions of array being concatenated are not consistent’ error message… Do you know what I’m doing wrong? All the previous steps in your tutorial (https://www.eyetracking-eeg.org/tutorial.html#tutorial10) works well!
Many thanks in advance for any answers
best,
Carole
I have been using EYE-EEG via the GUI for a while, since I hadn't fully standardised my analysis procedure and now I am looking to start scripting my preprocessing, so I took the details from EEG.history, but it looks like pop_rej_eyecontin causes an error when called as a function directly from a script (and not from the GUI).
This is code taken from a successful preprocessing analysis that I then took to put into an automated script:
EEG = pop_loadbv(eeg_data_folder, eeg_data_filename);
EEG.setname='raw';
EEG = eeg_checkset(EEG);
% Import eyetracking information
EEG = pop_importeyetracker(EEG, fullfile(eeg_data_folder, fixed_et_data_filename),[sync_trigger_start sync_trigger_end] ,[2 3] ,{'L-GAZE-X' 'L-GAZE-Y'},0,1,0,1,4);
EEG.setname='raw_et-sync'; % added eye-tracking data & perform synchronisation
EEG = eeg_checkset(EEG);
% Reject bad eye-tracking data (keep the data, just mark it as bad)
EEG = pop_rej_eyecontin(EEG,[65 66] ,[1 1] ,[Inf Inf],100,2);
And I get the following error:
Error using pop_rej_eyecontin
Too many input arguments.
Since it works via the GUI and I remember Olaf implementing this specific change, I wonder if there is some edge case that needs to be changed elsewhere. Any info would be greatly appreciated as I really would like to avoid a GUI-style preprocessing of all the files I am about to acquire :)
Thanks to user Maria for this bug report!
I came across the following issues when using the eye-eeg plugin for eeglab.
In eye-eeg-0.99\synchronize.m
Line 247
Should be
new_ix = zeros(size(ET.event, 1),1);
Instead of
new_ix = zeros(length(ET.event),1);
Also in \eye-eeg-0.99\detecteyemovements.m
Line 240
find(ismember({EEG.event.type},'bad_ET'))
gives an error – at least with my eeglab data
“Error using cell/ismember (line 34)
Input A of class cell and input B of class char must be cell arrays of character vectors,
unless one is a character vector.”
My eeglab is version v2019.1
My eye-eeg is 0.85
Matlab 2018b
Hello
When running overweightevents with removemean setting set to true
I get error message
**"Not enough input arguments.
Error in pop_rmbase (line 165)
elseif ~isempty(pointrange)
Error in overweightevents (line 101)
sac = pop_rmbase(sac,[]); % baseline subtracted across whole epoch
Error in pop_overweightevents (line 86)
[EEG_overweighted] = overweightevents(EEG,event2overweight,timelim,ow_proportion,removemean);"**
From what I can tell this results from line 101 of the overweightevents.m where
sac = pop_rmbase(sac,[]); is called.
I checked the pop_rmbase function of eeglab and at least for my version that function is set to receive 3 inputs instead of 2.
So, at least for me, following adjustment (adding another empty input) on line 101 of overweightevents.m
sac = pop_rmbase(sac,[],[]);
seems to fix the issue.
Best wishes
Otto
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.