Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Supported by

Eye Tracker Log Skipping Messages (OpenGaze)

Hello!

I am using Gazepoint in a few different experiments and in every eye tracking log .tsv file I have noticed it sometimes skips messages that I try to log, and other times it writes the message multiple times. I have tried logging in an inline script with eyetracker.log("message") in the run tab, as well as logging with the built-in pygaze_log item (pause between messages set to default 2ms). I have them placed in a sequence before a sketchpad item as my intention is to mark in the eye log when each different sketchpad is being displayed so that when analyzing the eye log I can see what was being displayed, is there a better way to go about doing this?

Thank you!

Comments

  • Hi Brandon,

    This is a consequence of the inherent limitations of GazePoint's OpenGaze API. It works by adding a log message to a particular sample, and thus will log the 'active' log message when a sample is logged. This can lead to logging the same message twice.

    The missing log messages are more worrying, as the log function I wrote should wait until at least one sample with the message is logged. There should also be an additional log where all log messages are registered too, which does not suffer from the OpenGaze log limitations. Do your log messages show up in there? This file should be [filename]_log.txt, where your data file is called [filename].tsv.

    Cheers,
    Edwin

  • Thanks for the response, Edwin (and sorry for this late reply I haven't been in lab over the winter break). The additional .txt log file you mentioned does have all the log messages properly showing!

    Thanks,
    Brandon

  • Hi Brandon,

    Excellent, thanks! That means that at least logging is working on some level.

    Few different things to double-check:

    1. Nothing currently appears in the "USER" column? This is the right-most column in the TSV file.

    2. Could you make sure that your messages are logged during the Run phase? The best ways of writing messages are by using an inline_script item (not nested in a sub-sequence) directly after a sketchpad that has a duration of 0 ms (you can add an advanced_delay item after the inline_script if needed). This inline script should just say eyetracker.log("sketchpad_onset") (feel free to edit the message) within its Run phase. Alternatively, you could use a pygaze_log element, which should have the option for automatic logging of all variables disabled, and should just say sketchpad_onset (or your own message) in the text box. If you want to use variables, you can refer to them with square brackets.

    If you still don't see any messages in your log file, I might need your experiment script and log file to debug what's going on.

    Cheers,
    Edwin

  • Edwin,

    The "USER" column in the TSV file is logging things. Most of the cells are "0" with the occasional log (as I have put in the experiment). In following your directions for the second question I've noticed that the logging seems perfect for the first run and it's only once it loops that it begins to work incorrectly as previously mentioned (skipping some log commands). To confirm this I tested it in a new experiment that ran a simple sketchpad_1 > log > wait > sketchpad_2 > log. It logged both when I ran it as a single sequence, then I ran it again in a loop and it logged properly the first time through, then it started skipping (some) logs again when it looped!

    Attached is a zip file with the actual task I'm working on ("Asynchrony") as well as the little test I did ("Simple_Test") and the data from 1 run of each in case you need any of it! I have also tried putting the start recording and stop recording elements inside the loop but that didn't change anything.

    Thanks so much for the help!
    Brandon

  • edited January 2019

    Hi Brandon,

    Thanks for your efforts to pinpoint the issue! I'll have a look at the documents when I can. (I know that's a bit unhelpful for now, but just wanted to let you know that I saw your message, and am not ignoring you.)

    Cheers,
    Edwin

  • Updating this with a few more things I've tried! I said in my previous comment that it seems to be an issue only when looping but it turns out that wasn't right, I made an experiment with no loops just a collection of sketchpads and loggers to test and still got the issue. I can't seem to find any kind of pattern to this error that may lead to a specific cause. I even tried including the start/stop recording inside the loop (even though it slows down the experiment considerably) and it skipped the start and stop messages too! Any ideas for workarounds would also be greatly appreciated!

    Thanks!

  • Hi @Edwin and @Brandon,

    is there any update about this issue? I have the same problem, skipped and/or multiple messages in the USER column. It happens with the built-in pygaze_log item and with the "start_trial" message writen by the pygaze_start_recording item.

    Maybe these are inherent limitations but I wonder some way of minimizing that.

    Thanks a bunch!

  • Hi!

    I had the same issues. I think I might fixed them. In opengaze.py I set the maxwait [for acknowledgment] from 9ms to 30ms. I noticed that sending a single log-file already takes ~10-20ms (which is reaaally slow, but it is what it is)


    sometimes I still had missing log messages, what weirdly fixed it for me: adding e.g. the trialnumber to the log block.

    e.g. content of logblock: `show_fixation_cross [trial_nr]`


    Maybe it helps, I would love some input, because I dont really understand the acknowledgment loop & what adding a parameter does to help it :-D


    Cheers, Benedikt

Sign In or Register to comment.