Giter Club home page Giter Club logo

eye-eeg's Introduction

eye-eeg's People

Contributors

olafdimigen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

eye-eeg's Issues

Cross-correlation assessment error

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

To Do

  • sychronize(): ET recording pauses interpolated as long drifts by interp1. Therefore invisible for bad data detection.
  • #17
  • #18

Bug report email: synchronize() & detecteyemovements()

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.”

Error using pop_rej_eyecontin Too many input arguments.

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 :)

Bug report: Problem with E-Prime "offsets" + Eyelink

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).

Bug? Incorrect saccade offset assigned in detecteyemovements.m

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

compatibility of overweightevents.m with newer pop_rmbase

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

Bug report: overweightevents.m does not work when removemean is set to true

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

bugreport pop_importeyetracker

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.

bugreport searchclosest

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.