i noticed that i keep getting "no eye data available" warning in unity i think that has to do with the fact that I keep getting repeat points from the eyetracker...anyone have any idea what might cause this?
How would I know what the best calibration settings are? I often get jumpy data and am trying to understand what the best settings are? For reference I am trying to record myself reading a magazine. Appreciate any help!
Which pupil product are you using
Hi, I am having problem with installing pye3d in my environment, to be specific this line in the error message stood out to me:
C:/Users/xxx/AppData/Local/Temp/pip-install-h7doemcv/pye3d_ca3738a1ddbc4b878ee076087d697d91/_skbuild/win32-3.8/cmake-build/projections.cxx:203:41: warning: division by zero [-Wdiv-by-zero]
enum { __pyx_check_sizeof_voidp = 1 / (int)(SIZEOF_VOID_P == sizeof(void*)) };
The full error message is here: https://pastebin.com/DtJvHNC7
Hi, is there a way to access the eye-tracking positions in the raw invisible folders without putting them into the pupil player first?
Yes, you can access the files using e.g. numpy and python. The format is documented here https://docs.google.com/spreadsheets/d/1e1Xc1FoQiyf_ZHkSUnVdkVjdIanOdzP0dgJdJgt0QZg/edit#gid=254480793
@user-3cff0d @user-b14f98 I started building a script that loads pupil and reference data and runs a calibration using one of the available gazers https://github.com/papr/pupil-core-pipeline
Excellent!! I'm going to see if I can get the pupil detection pipeline I whipped up a while back to work with that, since it looks like pupil_detection.py
is currently blank
What could you tell me about the pupil.pldata
file that I'm assuming the PL pupil detector system outputs? Is there a funciton I can import and call once I've gotten the pupil ellipses to generate that file?
After reading the code, I found out that each detected pupil frame's datum is saved to a big file, "offline_pupil.pldata", once the "file_source.video_finished" event happens. This seems to only happen after offline pupil detection. (line 540 of pupil_src/shared_modules/pupil_producers.py)
Is "pupil.pldata" the same as "offline_pupil.pldata", only obtained at the time of data collection rather than offline? If so, is it possible that "offline_data/offline_pupil.pldata" is the file I want rather than "pupil.pldata", since all the data we want to process is done via offline pupil detection?
I think they should be interchangeable, but I am not 100% certain. I would recommend giving it a try.
Hi @papr , I have a couple of questions after trying to run that script>
First, in the videos I'm attempting to run it on, the timestamps in the calibration points appear to be well before any timestamps in the pupil datums. This is resulting in a NotEnoughDataError
exception in the GazerBase.fit_on_calib_data()
method in gazer_base.py, since all of the calibration timestamps are very distant from the pupil timestamps. To give exact numbers, the pupil datums have timestamps that range from 702362.0428299999 to 702763.118501, whereas the calibration points have timestamps that range from 702322.8024246271 to 702347.4913665827. I've tried re-detecting the pupils and re-doing the calibration points within Pupil Player, but nothing has fixed it thus far. Do you know what might be causing it?
Secondly, in the available_mapping_methods()
function in the src/core/pipeline.py file in the above script, it calls the method gaze_mapping.user_selectable_gazer_classes_posthoc()
from the Pupil Labs Core folder shared_modules/gaze_mapping
. This package does not contain any function called "user_selectable_gazer_classes_posthoc()", so I replaced it with "user_selectable_gazer_classes()" and it seems to work fine. Am I missing something, or is that function supposed to be missing from that package?
Thanks!
I noticed the time offset, too. I am not sure why the recording of the pupil data would start with such a delay. If post-hoc detection does not fix the issue, it means that the eye videos started recording with a delay, too.
If there is a time sync issue, this would also explain why the calibration was so bad. π
in order for the function to become available, you need to have this branch checked out https://github.com/pupil-labs/pupil/tree/post-hoc-vr-gazer
I'll give this a shot, thanks. It's interesting that there are no visual errors in the graphs in PL Player if the eye timestamps are delayed by that much, wouldn't there be gaps at (in this case) the beginning of the graphs that show confidence and pupil diameter?
yes, they should ~~be shifted~~ start further to the right if the recording start was delayed.
They are not, however. Here's what the first part of the recording looks like, including where the calibration points are
This looks correct. This should give you matching ref and pupil data.
Make sure to close Player (flushes detection cache to disk) and load the data from offline_data/offline_pupil.pldata
It doesn't, unfortunately. The latest calibration timestamp is 702347.4913665827 and the earliest pupil timestamp is 702362.0428299999
I've closed Player multiple times throughout, and I haven't changed the final line of the .env file described in the readme.md of your script
REF_DATA_LOCATION=${RECORDING_LOCATION}/offline_data/reference_locations.msgpack
That is correct. You need to change the location from which the pupil data is loaded
@user-3cff0d Here https://github.com/papr/pupil-core-pipeline/blob/main/src/core/pipeline.py#L123
Ohhhh you're right
It's reading it from pupil.pldata
That's funny I pointed it out a few days ago then completely forgot I did so
haha, true π
@user-3cff0d I am off for tonightβοΈ let us know how it works when reading the post-hoc data
Will do! Thanks for the help, as usual \:)