Handling Gaze Events#
What you will learn in this tutorial:#
how to detect different events using different algorithms like IDT, IVT and microsaccades
how to compute event properties like peak velocity and amplitude
how to save and load your event data
Preparations#
At first, we import pymovements as the alias pm for convenience.
import pymovements as pm
Then we download a dataset ToyDataset and load its data:
dataset = pm.Dataset('ToyDataset', path='data/ToyDataset')
dataset.download()
dataset.load()
INFO:pymovements.dataset.dataset:
You are downloading the pymovements Toy Dataset. Please be aware that pymovements does not
host or distribute any dataset resources and only provides a convenient interface to
download the public dataset resources that were published by their respective authors.
Please cite the referenced publication if you intend to use the dataset in your research.
Downloading https://github.com/pymovements/pymovements-toy-dataset/archive/refs/heads/main.zip to data/ToyDataset/downloads/pymovements-toy-dataset.zip
Checking integrity of pymovements-toy-dataset.zip
Extracting pymovements-toy-dataset.zip to data/ToyDataset/raw
Extracting archive: 0%| | 0/23 [00:00<?, ?file/s]
Extracting archive: 100%|██████████| 23/23 [00:00<00:00, 357.42file/s]
-
DatasetDefinitionDatasetDefinition
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
NoneNone
-
dict (1 items)
-
'trial_{text_id:d}_{page_id:d}.csv''trial_{text_id:d}_{page_id:d}.csv'
-
-
dict (1 items)
-
dict (2 items)
-
<class 'int'><class 'int'>
-
<class 'int'><class 'int'>
-
-
-
TrueTrue
-
'pymovements Toy Dataset''pymovements Toy Dataset'
-
dict (0 items)
-
'ToyDataset''ToyDataset'
-
NoneNone
-
NoneNone
-
list (1 items)
-
ResourceDefinition
-
'gaze''gaze'
-
'pymovements-toy-dataset.zip''pymovements-toy-dataset.zip'
-
'trial_{text_id:d}_{page_id:d}.csv''trial_{text_id:d}_{page_id:d}.csv'
-
dict (2 items)
-
<class 'int'><class 'int'>
-
<class 'int'><class 'int'>
-
-
NoneNone
-
dict (4 items)
-
'timestamp''timestamp'
-
'ms''ms'
- (2 more)
-
-
'256901852c1c07581d375eef705855d6''256901852c1c07581d375eef705855d6'
-
NoneNone
-
str'https://github.com/pymovements/pymovements-toy-dataset/archive/refs/heads/main.zip'
-
-
ResourceDefinition
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
-
tuple (20 items)
-
Events
-
DataFrame (4 columns, 0 rows)shape: (0, 4)
name onset offset duration str i64 i64 i64 -
NoneNone
-
-
Events
-
DataFrame (4 columns, 0 rows)shape: (0, 4)
name onset offset duration str i64 i64 i64 -
NoneNone
-
- (18 more)
-
Events
-
dict (1 items)
-
DataFrame (3 columns, 20 rows)shape: (20, 3)
text_id page_id filepath i64 i64 str 0 1 "pymovements-toy-dataset-main/d… 0 2 "pymovements-toy-dataset-main/d… 0 3 "pymovements-toy-dataset-main/d… 0 4 "pymovements-toy-dataset-main/d… 0 5 "pymovements-toy-dataset-main/d… … … … 3 1 "pymovements-toy-dataset-main/d… 3 2 "pymovements-toy-dataset-main/d… 3 3 "pymovements-toy-dataset-main/d… 3 4 "pymovements-toy-dataset-main/d… 3 5 "pymovements-toy-dataset-main/d…
-
-
list (20 items)
-
Gaze
-
DataFrame (4 columns, 17223 rows)shape: (17_223, 4)
time stimuli_x stimuli_y pixel i64 f64 f64 list[f64] 1988145 -1.0 -1.0 [206.8, 152.4] 1988146 -1.0 -1.0 [206.9, 152.1] 1988147 -1.0 -1.0 [207.0, 151.8] 1988148 -1.0 -1.0 [207.1, 151.7] 1988149 -1.0 -1.0 [207.0, 151.5] … … … … 2005363 -1.0 -1.0 [361.0, 415.4] 2005364 -1.0 -1.0 [358.0, 414.5] 2005365 -1.0 -1.0 [355.8, 413.8] 2005366 -1.0 -1.0 [353.1, 413.2] 2005367 -1.0 -1.0 [351.2, 412.9] -
EventsEvents
-
DataFrame (4 columns, 0 rows)shape: (0, 4)
name onset offset duration str i64 i64 i64 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
-
Gaze
-
DataFrame (4 columns, 29799 rows)shape: (29_799, 4)
time stimuli_x stimuli_y pixel i64 f64 f64 list[f64] 2008305 -1.0 -1.0 [141.4, 153.6] 2008306 -1.0 -1.0 [141.1, 153.2] 2008307 -1.0 -1.0 [140.7, 152.8] 2008308 -1.0 -1.0 [140.6, 152.7] 2008309 -1.0 -1.0 [140.5, 152.6] … … … … 2038099 -1.0 -1.0 [273.8, 773.8] 2038100 -1.0 -1.0 [273.8, 774.1] 2038101 -1.0 -1.0 [273.9, 774.5] 2038102 -1.0 -1.0 [274.0, 774.4] 2038103 -1.0 -1.0 [274.0, 773.9] -
EventsEvents
-
DataFrame (4 columns, 0 rows)shape: (0, 4)
name onset offset duration str i64 i64 i64 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
- (18 more)
-
Gaze
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
DatasetPathsDatasetPaths
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
PosixPath('data/ToyDataset/downloads')PosixPath('data/ToyDataset/downloads')
-
PosixPath('data/ToyDataset/events')PosixPath('data/ToyDataset/events')
-
PosixPath('data/ToyDataset/precomputed_events')PosixPath('data/ToyDataset/precomputed_events')
-
PosixPathPosixPath('data/ToyDataset/precomputed_reading_measures')
-
PosixPath('data/ToyDataset/preprocessed')PosixPath('data/ToyDataset/preprocessed')
-
PosixPath('data/ToyDataset/raw')PosixPath('data/ToyDataset/raw')
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
-
list (0 items)
-
list (0 items)
The dataset consists of gaze data in 20 files (check Dataset/gaze above). Every Gaze has some samples with six columns (check Gaze/samples): [time, stimuli_x, stimuli_y, text_id, page_id, pixel]. The Gaze/events DataFrame is empty so far. To be able to calculate events, we need to do some basic preprocessing, which will add new columns to the dataset samples DataFrame:
Dataset.pix2deg(): addspositioncolumn with degrees from the screen center needed by theidtalgorithmDataset.pos2vel(): addsvelocitycolumn with gaze velocities needed bymicrosaccadesandivtalgorithms
dataset.pix2deg()
dataset.pos2vel('smooth')
dataset.gaze[0]
-
DataFrame (6 columns, 17223 rows)shape: (17_223, 6)
time stimuli_x stimuli_y pixel position velocity i64 f64 f64 list[f64] list[f64] list[f64] 1988145 -1.0 -1.0 [206.8, 152.4] [-10.697598, -8.852399] [null, null] 1988146 -1.0 -1.0 [206.9, 152.1] [-10.695183, -8.859678] [null, null] 1988147 -1.0 -1.0 [207.0, 151.8] [-10.692768, -8.866956] [1.610194, -5.256267] 1988148 -1.0 -1.0 [207.1, 151.7] [-10.690352, -8.869381] [0.402548, -4.447465] 1988149 -1.0 -1.0 [207.0, 151.5] [-10.692768, -8.874233] [0.402561, -3.234462] … … … … … … 2005363 -1.0 -1.0 [361.0, 415.4] [-6.932438, -2.386672] [-63.266374, -21.085616] 2005364 -1.0 -1.0 [358.0, 414.5] [-7.006376, -2.408998] [-63.249652, -19.431326] 2005365 -1.0 -1.0 [355.8, 413.8] [-7.060582, -2.426362] [-60.359624, -15.710061] 2005366 -1.0 -1.0 [353.1, 413.2] [-7.12709, -2.441245] [null, null] 2005367 -1.0 -1.0 [351.2, 412.9] [-7.173881, -2.448686] [null, null] -
EventsEvents
-
DataFrame (4 columns, 0 rows)shape: (0, 4)
name onset offset duration str i64 i64 i64 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
Now every Gaze/samples DataFrame has two more columns: position and velocity which will be used by the event detection algorithms.
Detecting Events#
pymovements provides a range of event detection methods for several types of gaze events.
See the reference for Events to get an overview of all the supported methods.
For this tutorial we will use the I-DT and I-VT (idt and ivt) algorithms for detecting fixations and the microsaccades algorithm for detecting saccades.
Let’s start with fixations detection using the idt algorithm with the dispersion_threshold equal to 2.7:
dataset.detect_events('idt', dispersion_threshold=2.7)
-
DatasetDefinitionDatasetDefinition
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
NoneNone
-
dict (1 items)
-
'trial_{text_id:d}_{page_id:d}.csv''trial_{text_id:d}_{page_id:d}.csv'
-
-
dict (1 items)
-
dict (2 items)
-
<class 'int'><class 'int'>
-
<class 'int'><class 'int'>
-
-
-
TrueTrue
-
'pymovements Toy Dataset''pymovements Toy Dataset'
-
dict (0 items)
-
'ToyDataset''ToyDataset'
-
NoneNone
-
NoneNone
-
list (1 items)
-
ResourceDefinition
-
'gaze''gaze'
-
'pymovements-toy-dataset.zip''pymovements-toy-dataset.zip'
-
'trial_{text_id:d}_{page_id:d}.csv''trial_{text_id:d}_{page_id:d}.csv'
-
dict (2 items)
-
<class 'int'><class 'int'>
-
<class 'int'><class 'int'>
-
-
NoneNone
-
dict (4 items)
-
'timestamp''timestamp'
-
'ms''ms'
- (2 more)
-
-
'256901852c1c07581d375eef705855d6''256901852c1c07581d375eef705855d6'
-
NoneNone
-
str'https://github.com/pymovements/pymovements-toy-dataset/archive/refs/heads/main.zip'
-
-
ResourceDefinition
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
-
tuple (20 items)
-
Events
-
DataFrame (4 columns, 56 rows)shape: (56, 4)
name onset offset duration str i64 i64 i64 "fixation" 1988145 1988563 418 "fixation" 1988564 1988750 186 "fixation" 1988751 1989178 427 "fixation" 1989179 1989436 257 "fixation" 1989437 1989600 163 … … … … "fixation" 2003929 2004090 161 "fixation" 2004091 2004363 272 "fixation" 2004364 2004883 519 "fixation" 2004885 2005116 231 "fixation" 2005117 2005298 181 -
NoneNone
-
-
Events
-
DataFrame (4 columns, 94 rows)shape: (94, 4)
name onset offset duration str i64 i64 i64 "fixation" 2008305 2008621 316 "fixation" 2008622 2008821 199 "fixation" 2008822 2009214 392 "fixation" 2009215 2009433 218 "fixation" 2009434 2009704 270 … … … … "fixation" 2036840 2037175 335 "fixation" 2037176 2037424 248 "fixation" 2037462 2037644 182 "fixation" 2037645 2037824 179 "fixation" 2037825 2038103 278 -
NoneNone
-
- (18 more)
-
Events
-
dict (1 items)
-
DataFrame (3 columns, 20 rows)shape: (20, 3)
text_id page_id filepath i64 i64 str 0 1 "pymovements-toy-dataset-main/d… 0 2 "pymovements-toy-dataset-main/d… 0 3 "pymovements-toy-dataset-main/d… 0 4 "pymovements-toy-dataset-main/d… 0 5 "pymovements-toy-dataset-main/d… … … … 3 1 "pymovements-toy-dataset-main/d… 3 2 "pymovements-toy-dataset-main/d… 3 3 "pymovements-toy-dataset-main/d… 3 4 "pymovements-toy-dataset-main/d… 3 5 "pymovements-toy-dataset-main/d…
-
-
list (20 items)
-
Gaze
-
DataFrame (6 columns, 17223 rows)shape: (17_223, 6)
time stimuli_x stimuli_y pixel position velocity i64 f64 f64 list[f64] list[f64] list[f64] 1988145 -1.0 -1.0 [206.8, 152.4] [-10.697598, -8.852399] [null, null] 1988146 -1.0 -1.0 [206.9, 152.1] [-10.695183, -8.859678] [null, null] 1988147 -1.0 -1.0 [207.0, 151.8] [-10.692768, -8.866956] [1.610194, -5.256267] 1988148 -1.0 -1.0 [207.1, 151.7] [-10.690352, -8.869381] [0.402548, -4.447465] 1988149 -1.0 -1.0 [207.0, 151.5] [-10.692768, -8.874233] [0.402561, -3.234462] … … … … … … 2005363 -1.0 -1.0 [361.0, 415.4] [-6.932438, -2.386672] [-63.266374, -21.085616] 2005364 -1.0 -1.0 [358.0, 414.5] [-7.006376, -2.408998] [-63.249652, -19.431326] 2005365 -1.0 -1.0 [355.8, 413.8] [-7.060582, -2.426362] [-60.359624, -15.710061] 2005366 -1.0 -1.0 [353.1, 413.2] [-7.12709, -2.441245] [null, null] 2005367 -1.0 -1.0 [351.2, 412.9] [-7.173881, -2.448686] [null, null] -
EventsEvents
-
DataFrame (4 columns, 56 rows)shape: (56, 4)
name onset offset duration str i64 i64 i64 "fixation" 1988145 1988563 418 "fixation" 1988564 1988750 186 "fixation" 1988751 1989178 427 "fixation" 1989179 1989436 257 "fixation" 1989437 1989600 163 … … … … "fixation" 2003929 2004090 161 "fixation" 2004091 2004363 272 "fixation" 2004364 2004883 519 "fixation" 2004885 2005116 231 "fixation" 2005117 2005298 181 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
-
Gaze
-
DataFrame (6 columns, 29799 rows)shape: (29_799, 6)
time stimuli_x stimuli_y pixel position velocity i64 f64 f64 list[f64] list[f64] list[f64] 2008305 -1.0 -1.0 [141.4, 153.6] [-12.268583, -8.823284] [null, null] 2008306 -1.0 -1.0 [141.1, 153.2] [-12.275749, -8.832989] [null, null] 2008307 -1.0 -1.0 [140.7, 152.8] [-12.285302, -8.842695] [-5.572617, -6.065816] 2008308 -1.0 -1.0 [140.6, 152.7] [-12.28769, -8.845121] [-3.582268, -4.043733] 2008309 -1.0 -1.0 [140.5, 152.6] [-12.290078, -8.847547] [-2.388085, -2.021821] … … … … … … 2038099 -1.0 -1.0 [273.8, 773.8] [-9.071149, 6.490168] [1.21962, 1.635403] 2038100 -1.0 -1.0 [273.8, 774.1] [-9.071149, 6.497527] [1.626175, 4.497406] 2038101 -1.0 -1.0 [273.9, 774.5] [-9.06871, 6.50734] [1.626186, 1.635423] 2038102 -1.0 -1.0 [274.0, 774.4] [-9.066271, 6.504886] [null, null] 2038103 -1.0 -1.0 [274.0, 773.9] [-9.066271, 6.492621] [null, null] -
EventsEvents
-
DataFrame (4 columns, 94 rows)shape: (94, 4)
name onset offset duration str i64 i64 i64 "fixation" 2008305 2008621 316 "fixation" 2008622 2008821 199 "fixation" 2008822 2009214 392 "fixation" 2009215 2009433 218 "fixation" 2009434 2009704 270 … … … … "fixation" 2036840 2037175 335 "fixation" 2037176 2037424 248 "fixation" 2037462 2037644 182 "fixation" 2037645 2037824 179 "fixation" 2037825 2038103 278 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
- (18 more)
-
Gaze
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
DatasetPathsDatasetPaths
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
PosixPath('data/ToyDataset/downloads')PosixPath('data/ToyDataset/downloads')
-
PosixPath('data/ToyDataset/events')PosixPath('data/ToyDataset/events')
-
PosixPath('data/ToyDataset/precomputed_events')PosixPath('data/ToyDataset/precomputed_events')
-
PosixPathPosixPath('data/ToyDataset/precomputed_reading_measures')
-
PosixPath('data/ToyDataset/preprocessed')PosixPath('data/ToyDataset/preprocessed')
-
PosixPath('data/ToyDataset/raw')PosixPath('data/ToyDataset/raw')
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
-
list (0 items)
-
list (0 items)
The detected events are added as rows with the name fixation to the event dataframe:
dataset.events[0]
-
DataFrame (4 columns, 56 rows)shape: (56, 4)
name onset offset duration str i64 i64 i64 "fixation" 1988145 1988563 418 "fixation" 1988564 1988750 186 "fixation" 1988751 1989178 427 "fixation" 1989179 1989436 257 "fixation" 1989437 1989600 163 … … … … "fixation" 2003929 2004090 161 "fixation" 2004091 2004363 272 "fixation" 2004364 2004883 519 "fixation" 2004885 2005116 231 "fixation" 2005117 2005298 181 -
NoneNone
As you can see, 56 fixations were found for the first file.
Now let’s try another algorithm ivt with velocity_threshold=20. Because we don’t want to mix fixations found by different algorithms we add name parameter with ‘fixation.ivt’
dataset.detect_events('ivt', velocity_threshold=20, name='fixation.ivt')
dataset.events[0]
-
DataFrame (4 columns, 129 rows)shape: (129, 4)
name onset offset duration str i64 i64 i64 "fixation" 1988145 1988563 418 "fixation" 1988564 1988750 186 "fixation" 1988751 1989178 427 "fixation" 1989179 1989436 257 "fixation" 1989437 1989600 163 … … … … "fixation.ivt" 2004132 2004331 199 "fixation.ivt" 2004399 2004687 288 "fixation.ivt" 2004714 2004878 164 "fixation.ivt" 2004931 2005109 178 "fixation.ivt" 2005138 2005287 149 -
NoneNone
Now we have additional rows with name=’fixations.ivt’.
Let’s try to use the microsaccades algorithm to detect fixations.
dataset.detect_events('microsaccades', minimum_duration=12)
-
DatasetDefinitionDatasetDefinition
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
NoneNone
-
dict (1 items)
-
'trial_{text_id:d}_{page_id:d}.csv''trial_{text_id:d}_{page_id:d}.csv'
-
-
dict (1 items)
-
dict (2 items)
-
<class 'int'><class 'int'>
-
<class 'int'><class 'int'>
-
-
-
TrueTrue
-
'pymovements Toy Dataset''pymovements Toy Dataset'
-
dict (0 items)
-
'ToyDataset''ToyDataset'
-
NoneNone
-
NoneNone
-
list (1 items)
-
ResourceDefinition
-
'gaze''gaze'
-
'pymovements-toy-dataset.zip''pymovements-toy-dataset.zip'
-
'trial_{text_id:d}_{page_id:d}.csv''trial_{text_id:d}_{page_id:d}.csv'
-
dict (2 items)
-
<class 'int'><class 'int'>
-
<class 'int'><class 'int'>
-
-
NoneNone
-
dict (4 items)
-
'timestamp''timestamp'
-
'ms''ms'
- (2 more)
-
-
'256901852c1c07581d375eef705855d6''256901852c1c07581d375eef705855d6'
-
NoneNone
-
str'https://github.com/pymovements/pymovements-toy-dataset/archive/refs/heads/main.zip'
-
-
ResourceDefinition
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
-
tuple (20 items)
-
Events
-
DataFrame (4 columns, 222 rows)shape: (222, 4)
name onset offset duration str i64 i64 i64 "fixation" 1988145 1988563 418 "fixation" 1988564 1988750 186 "fixation" 1988751 1989178 427 "fixation" 1989179 1989436 257 "fixation" 1989437 1989600 163 … … … … "saccade" 2004373 2004385 12 "saccade" 2004688 2004704 16 "saccade" 2004879 2004901 22 "saccade" 2005110 2005126 16 "saccade" 2005288 2005345 57 -
NoneNone
-
-
Events
-
DataFrame (4 columns, 366 rows)shape: (366, 4)
name onset offset duration str i64 i64 i64 "fixation" 2008305 2008621 316 "fixation" 2008622 2008821 199 "fixation" 2008822 2009214 392 "fixation" 2009215 2009433 218 "fixation" 2009434 2009704 270 … … … … "saccade" 2036849 2036861 12 "saccade" 2037161 2037188 27 "saccade" 2037412 2037503 91 "saccade" 2037638 2037654 16 "saccade" 2037812 2037830 18 -
NoneNone
-
- (18 more)
-
Events
-
dict (1 items)
-
DataFrame (3 columns, 20 rows)shape: (20, 3)
text_id page_id filepath i64 i64 str 0 1 "pymovements-toy-dataset-main/d… 0 2 "pymovements-toy-dataset-main/d… 0 3 "pymovements-toy-dataset-main/d… 0 4 "pymovements-toy-dataset-main/d… 0 5 "pymovements-toy-dataset-main/d… … … … 3 1 "pymovements-toy-dataset-main/d… 3 2 "pymovements-toy-dataset-main/d… 3 3 "pymovements-toy-dataset-main/d… 3 4 "pymovements-toy-dataset-main/d… 3 5 "pymovements-toy-dataset-main/d…
-
-
list (20 items)
-
Gaze
-
DataFrame (6 columns, 17223 rows)shape: (17_223, 6)
time stimuli_x stimuli_y pixel position velocity i64 f64 f64 list[f64] list[f64] list[f64] 1988145 -1.0 -1.0 [206.8, 152.4] [-10.697598, -8.852399] [null, null] 1988146 -1.0 -1.0 [206.9, 152.1] [-10.695183, -8.859678] [null, null] 1988147 -1.0 -1.0 [207.0, 151.8] [-10.692768, -8.866956] [1.610194, -5.256267] 1988148 -1.0 -1.0 [207.1, 151.7] [-10.690352, -8.869381] [0.402548, -4.447465] 1988149 -1.0 -1.0 [207.0, 151.5] [-10.692768, -8.874233] [0.402561, -3.234462] … … … … … … 2005363 -1.0 -1.0 [361.0, 415.4] [-6.932438, -2.386672] [-63.266374, -21.085616] 2005364 -1.0 -1.0 [358.0, 414.5] [-7.006376, -2.408998] [-63.249652, -19.431326] 2005365 -1.0 -1.0 [355.8, 413.8] [-7.060582, -2.426362] [-60.359624, -15.710061] 2005366 -1.0 -1.0 [353.1, 413.2] [-7.12709, -2.441245] [null, null] 2005367 -1.0 -1.0 [351.2, 412.9] [-7.173881, -2.448686] [null, null] -
EventsEvents
-
DataFrame (4 columns, 222 rows)shape: (222, 4)
name onset offset duration str i64 i64 i64 "fixation" 1988145 1988563 418 "fixation" 1988564 1988750 186 "fixation" 1988751 1989178 427 "fixation" 1989179 1989436 257 "fixation" 1989437 1989600 163 … … … … "saccade" 2004373 2004385 12 "saccade" 2004688 2004704 16 "saccade" 2004879 2004901 22 "saccade" 2005110 2005126 16 "saccade" 2005288 2005345 57 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
-
Gaze
-
DataFrame (6 columns, 29799 rows)shape: (29_799, 6)
time stimuli_x stimuli_y pixel position velocity i64 f64 f64 list[f64] list[f64] list[f64] 2008305 -1.0 -1.0 [141.4, 153.6] [-12.268583, -8.823284] [null, null] 2008306 -1.0 -1.0 [141.1, 153.2] [-12.275749, -8.832989] [null, null] 2008307 -1.0 -1.0 [140.7, 152.8] [-12.285302, -8.842695] [-5.572617, -6.065816] 2008308 -1.0 -1.0 [140.6, 152.7] [-12.28769, -8.845121] [-3.582268, -4.043733] 2008309 -1.0 -1.0 [140.5, 152.6] [-12.290078, -8.847547] [-2.388085, -2.021821] … … … … … … 2038099 -1.0 -1.0 [273.8, 773.8] [-9.071149, 6.490168] [1.21962, 1.635403] 2038100 -1.0 -1.0 [273.8, 774.1] [-9.071149, 6.497527] [1.626175, 4.497406] 2038101 -1.0 -1.0 [273.9, 774.5] [-9.06871, 6.50734] [1.626186, 1.635423] 2038102 -1.0 -1.0 [274.0, 774.4] [-9.066271, 6.504886] [null, null] 2038103 -1.0 -1.0 [274.0, 773.9] [-9.066271, 6.492621] [null, null] -
EventsEvents
-
DataFrame (4 columns, 366 rows)shape: (366, 4)
name onset offset duration str i64 i64 i64 "fixation" 2008305 2008621 316 "fixation" 2008622 2008821 199 "fixation" 2008822 2009214 392 "fixation" 2009215 2009433 218 "fixation" 2009434 2009704 270 … … … … "saccade" 2036849 2036861 12 "saccade" 2037161 2037188 27 "saccade" 2037412 2037503 91 "saccade" 2037638 2037654 16 "saccade" 2037812 2037830 18 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
- (18 more)
-
Gaze
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
DatasetPathsDatasetPaths
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
PosixPath('data/ToyDataset/downloads')PosixPath('data/ToyDataset/downloads')
-
PosixPath('data/ToyDataset/events')PosixPath('data/ToyDataset/events')
-
PosixPath('data/ToyDataset/precomputed_events')PosixPath('data/ToyDataset/precomputed_events')
-
PosixPathPosixPath('data/ToyDataset/precomputed_reading_measures')
-
PosixPath('data/ToyDataset/preprocessed')PosixPath('data/ToyDataset/preprocessed')
-
PosixPath('data/ToyDataset/raw')PosixPath('data/ToyDataset/raw')
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
-
list (0 items)
-
list (0 items)
The detected events are added as rows with the name saccade to the event dataframe:
dataset.events[0]
-
DataFrame (4 columns, 222 rows)shape: (222, 4)
name onset offset duration str i64 i64 i64 "fixation" 1988145 1988563 418 "fixation" 1988564 1988750 186 "fixation" 1988751 1989178 427 "fixation" 1989179 1989436 257 "fixation" 1989437 1989600 163 … … … … "saccade" 2004373 2004385 12 "saccade" 2004688 2004704 16 "saccade" 2004879 2004901 22 "saccade" 2005110 2005126 16 "saccade" 2005288 2005345 57 -
NoneNone
Now there are three sets of events in the dataset.events DataFrame with different values in the ‘name’ column:
set(dataset.events[0].frame['name'])
{'fixation', 'fixation.ivt', 'saccade'}
Computing Event Properties#
pymovements provides a range of event properties.
See the reference for Events to get an overview of all the supported properties.
For this tutorial we will compute several properties of saccades.
We start out with the peak velocity:
dataset.compute_event_properties("peak_velocity")
dataset.events[0]
-
DataFrame (5 columns, 222 rows)shape: (222, 5)
name onset offset duration peak_velocity str i64 i64 i64 f64 "fixation" 1988145 1988563 418 200.144558 "fixation" 1988564 1988750 186 249.67823 "fixation" 1988751 1989178 427 211.598748 "fixation" 1989179 1989436 257 189.183243 "fixation" 1989437 1989600 163 255.077509 … … … … … "saccade" 2004373 2004385 12 70.374183 "saccade" 2004688 2004704 16 175.646379 "saccade" 2004879 2004901 22 209.46361 "saccade" 2005110 2005126 16 137.917594 "saccade" 2005288 2005345 57 352.550667 -
NoneNone
Check above that a new column with the name peak_velocity has appeared in the event DataFrame.
We can also pass a list of properties. Let’s add the amplitude and dispersion:
dataset.compute_event_properties(["amplitude", "dispersion"])
dataset.events[0]
-
DataFrame (7 columns, 222 rows)shape: (222, 7)
name onset offset duration peak_velocity amplitude dispersion str i64 i64 i64 f64 f64 f64 "fixation" 1988145 1988563 418 200.144558 2.492864 2.712569 "fixation" 1988564 1988750 186 249.67823 2.651198 2.865026 "fixation" 1988751 1989178 427 211.598748 2.585906 2.779518 "fixation" 1989179 1989436 257 189.183243 2.614347 2.77424 "fixation" 1989437 1989600 163 255.077509 2.594651 2.729391 … … … … … … … "saccade" 2004373 2004385 12 70.374183 0.7073 0.766684 "saccade" 2004688 2004704 16 175.646379 1.807485 1.875716 "saccade" 2004879 2004901 22 209.46361 2.933818 3.086169 "saccade" 2005110 2005126 16 137.917594 1.405354 1.501217 "saccade" 2005288 2005345 57 352.550667 14.682541 16.101153 -
NoneNone
This way we can compute all of our desired properties in a single run.
Saving Event Data#
Saving your event data is as simple as:
dataset.save_events()
-
DatasetDefinitionDatasetDefinition
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
NoneNone
-
dict (1 items)
-
'trial_{text_id:d}_{page_id:d}.csv''trial_{text_id:d}_{page_id:d}.csv'
-
-
dict (1 items)
-
dict (2 items)
-
<class 'int'><class 'int'>
-
<class 'int'><class 'int'>
-
-
-
TrueTrue
-
'pymovements Toy Dataset''pymovements Toy Dataset'
-
dict (0 items)
-
'ToyDataset''ToyDataset'
-
NoneNone
-
NoneNone
-
list (1 items)
-
ResourceDefinition
-
'gaze''gaze'
-
'pymovements-toy-dataset.zip''pymovements-toy-dataset.zip'
-
'trial_{text_id:d}_{page_id:d}.csv''trial_{text_id:d}_{page_id:d}.csv'
-
dict (2 items)
-
<class 'int'><class 'int'>
-
<class 'int'><class 'int'>
-
-
NoneNone
-
dict (4 items)
-
'timestamp''timestamp'
-
'ms''ms'
- (2 more)
-
-
'256901852c1c07581d375eef705855d6''256901852c1c07581d375eef705855d6'
-
NoneNone
-
str'https://github.com/pymovements/pymovements-toy-dataset/archive/refs/heads/main.zip'
-
-
ResourceDefinition
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
-
tuple (20 items)
-
Events
-
DataFrame (7 columns, 222 rows)shape: (222, 7)
name onset offset duration peak_velocity amplitude dispersion str i64 i64 i64 f64 f64 f64 "fixation" 1988145 1988563 418 200.144558 2.492864 2.712569 "fixation" 1988564 1988750 186 249.67823 2.651198 2.865026 "fixation" 1988751 1989178 427 211.598748 2.585906 2.779518 "fixation" 1989179 1989436 257 189.183243 2.614347 2.77424 "fixation" 1989437 1989600 163 255.077509 2.594651 2.729391 … … … … … … … "saccade" 2004373 2004385 12 70.374183 0.7073 0.766684 "saccade" 2004688 2004704 16 175.646379 1.807485 1.875716 "saccade" 2004879 2004901 22 209.46361 2.933818 3.086169 "saccade" 2005110 2005126 16 137.917594 1.405354 1.501217 "saccade" 2005288 2005345 57 352.550667 14.682541 16.101153 -
NoneNone
-
-
Events
-
DataFrame (7 columns, 366 rows)shape: (366, 7)
name onset offset duration peak_velocity amplitude dispersion str i64 i64 i64 f64 f64 f64 "fixation" 2008305 2008621 316 167.343877 2.283024 2.706135 "fixation" 2008622 2008821 199 314.396904 2.578854 2.79657 "fixation" 2008822 2009214 392 305.525917 2.612895 2.908934 "fixation" 2009215 2009433 218 216.195201 2.612208 2.765062 "fixation" 2009434 2009704 270 208.05132 2.566305 2.70311 … … … … … … … "saccade" 2036849 2036861 12 54.743137 0.472141 0.529715 "saccade" 2037161 2037188 27 223.056103 2.358604 2.587752 "saccade" 2037412 2037503 91 406.701444 16.94863 18.346458 "saccade" 2037638 2037654 16 138.382767 1.411621 1.827761 "saccade" 2037812 2037830 18 240.193236 2.739312 3.024326 -
NoneNone
-
- (18 more)
-
Events
-
dict (1 items)
-
DataFrame (3 columns, 20 rows)shape: (20, 3)
text_id page_id filepath i64 i64 str 0 1 "pymovements-toy-dataset-main/d… 0 2 "pymovements-toy-dataset-main/d… 0 3 "pymovements-toy-dataset-main/d… 0 4 "pymovements-toy-dataset-main/d… 0 5 "pymovements-toy-dataset-main/d… … … … 3 1 "pymovements-toy-dataset-main/d… 3 2 "pymovements-toy-dataset-main/d… 3 3 "pymovements-toy-dataset-main/d… 3 4 "pymovements-toy-dataset-main/d… 3 5 "pymovements-toy-dataset-main/d…
-
-
list (20 items)
-
Gaze
-
DataFrame (6 columns, 17223 rows)shape: (17_223, 6)
time stimuli_x stimuli_y pixel position velocity i64 f64 f64 list[f64] list[f64] list[f64] 1988145 -1.0 -1.0 [206.8, 152.4] [-10.697598, -8.852399] [null, null] 1988146 -1.0 -1.0 [206.9, 152.1] [-10.695183, -8.859678] [null, null] 1988147 -1.0 -1.0 [207.0, 151.8] [-10.692768, -8.866956] [1.610194, -5.256267] 1988148 -1.0 -1.0 [207.1, 151.7] [-10.690352, -8.869381] [0.402548, -4.447465] 1988149 -1.0 -1.0 [207.0, 151.5] [-10.692768, -8.874233] [0.402561, -3.234462] … … … … … … 2005363 -1.0 -1.0 [361.0, 415.4] [-6.932438, -2.386672] [-63.266374, -21.085616] 2005364 -1.0 -1.0 [358.0, 414.5] [-7.006376, -2.408998] [-63.249652, -19.431326] 2005365 -1.0 -1.0 [355.8, 413.8] [-7.060582, -2.426362] [-60.359624, -15.710061] 2005366 -1.0 -1.0 [353.1, 413.2] [-7.12709, -2.441245] [null, null] 2005367 -1.0 -1.0 [351.2, 412.9] [-7.173881, -2.448686] [null, null] -
EventsEvents
-
DataFrame (7 columns, 222 rows)shape: (222, 7)
name onset offset duration peak_velocity amplitude dispersion str i64 i64 i64 f64 f64 f64 "fixation" 1988145 1988563 418 200.144558 2.492864 2.712569 "fixation" 1988564 1988750 186 249.67823 2.651198 2.865026 "fixation" 1988751 1989178 427 211.598748 2.585906 2.779518 "fixation" 1989179 1989436 257 189.183243 2.614347 2.77424 "fixation" 1989437 1989600 163 255.077509 2.594651 2.729391 … … … … … … … "saccade" 2004373 2004385 12 70.374183 0.7073 0.766684 "saccade" 2004688 2004704 16 175.646379 1.807485 1.875716 "saccade" 2004879 2004901 22 209.46361 2.933818 3.086169 "saccade" 2005110 2005126 16 137.917594 1.405354 1.501217 "saccade" 2005288 2005345 57 352.550667 14.682541 16.101153 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
-
Gaze
-
DataFrame (6 columns, 29799 rows)shape: (29_799, 6)
time stimuli_x stimuli_y pixel position velocity i64 f64 f64 list[f64] list[f64] list[f64] 2008305 -1.0 -1.0 [141.4, 153.6] [-12.268583, -8.823284] [null, null] 2008306 -1.0 -1.0 [141.1, 153.2] [-12.275749, -8.832989] [null, null] 2008307 -1.0 -1.0 [140.7, 152.8] [-12.285302, -8.842695] [-5.572617, -6.065816] 2008308 -1.0 -1.0 [140.6, 152.7] [-12.28769, -8.845121] [-3.582268, -4.043733] 2008309 -1.0 -1.0 [140.5, 152.6] [-12.290078, -8.847547] [-2.388085, -2.021821] … … … … … … 2038099 -1.0 -1.0 [273.8, 773.8] [-9.071149, 6.490168] [1.21962, 1.635403] 2038100 -1.0 -1.0 [273.8, 774.1] [-9.071149, 6.497527] [1.626175, 4.497406] 2038101 -1.0 -1.0 [273.9, 774.5] [-9.06871, 6.50734] [1.626186, 1.635423] 2038102 -1.0 -1.0 [274.0, 774.4] [-9.066271, 6.504886] [null, null] 2038103 -1.0 -1.0 [274.0, 773.9] [-9.066271, 6.492621] [null, null] -
EventsEvents
-
DataFrame (7 columns, 366 rows)shape: (366, 7)
name onset offset duration peak_velocity amplitude dispersion str i64 i64 i64 f64 f64 f64 "fixation" 2008305 2008621 316 167.343877 2.283024 2.706135 "fixation" 2008622 2008821 199 314.396904 2.578854 2.79657 "fixation" 2008822 2009214 392 305.525917 2.612895 2.908934 "fixation" 2009215 2009433 218 216.195201 2.612208 2.765062 "fixation" 2009434 2009704 270 208.05132 2.566305 2.70311 … … … … … … … "saccade" 2036849 2036861 12 54.743137 0.472141 0.529715 "saccade" 2037161 2037188 27 223.056103 2.358604 2.587752 "saccade" 2037412 2037503 91 406.701444 16.94863 18.346458 "saccade" 2037638 2037654 16 138.382767 1.411621 1.827761 "saccade" 2037812 2037830 18 240.193236 2.739312 3.024326 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
- (18 more)
-
Gaze
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
DatasetPathsDatasetPaths
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
PosixPath('data/ToyDataset/downloads')PosixPath('data/ToyDataset/downloads')
-
PosixPath('data/ToyDataset/events')PosixPath('data/ToyDataset/events')
-
PosixPath('data/ToyDataset/precomputed_events')PosixPath('data/ToyDataset/precomputed_events')
-
PosixPathPosixPath('data/ToyDataset/precomputed_reading_measures')
-
PosixPath('data/ToyDataset/preprocessed')PosixPath('data/ToyDataset/preprocessed')
-
PosixPath('data/ToyDataset/raw')PosixPath('data/ToyDataset/raw')
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
-
list (0 items)
-
list (0 items)
All the event data is saved into this directory:
dataset.paths.events
PosixPath('data/ToyDataset/events')
Let’s confirm it by printing all files in this directory:
print(list(dataset.paths.events.glob('*/*/*')))
[PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_0_1.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_1_2.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_0_2.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_3_5.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_1_4.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_0_4.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_3_4.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_2_3.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_2_2.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_3_1.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_1_5.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_3_3.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_2_4.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_3_2.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_2_5.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_1_3.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_0_3.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_1_1.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_0_5.feather'), PosixPath('data/ToyDataset/events/pymovements-toy-dataset-main/data/trial_2_1.feather')]
All files have been saved into the Dataset.paths.events as files in Feather format.
If we want to save the data into an alternative directory and also use a different file format like csv we can use the following:
dataset.save_events(events_dirname='events_csv', extension='csv')
-
DatasetDefinitionDatasetDefinition
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
NoneNone
-
dict (1 items)
-
'trial_{text_id:d}_{page_id:d}.csv''trial_{text_id:d}_{page_id:d}.csv'
-
-
dict (1 items)
-
dict (2 items)
-
<class 'int'><class 'int'>
-
<class 'int'><class 'int'>
-
-
-
TrueTrue
-
'pymovements Toy Dataset''pymovements Toy Dataset'
-
dict (0 items)
-
'ToyDataset''ToyDataset'
-
NoneNone
-
NoneNone
-
list (1 items)
-
ResourceDefinition
-
'gaze''gaze'
-
'pymovements-toy-dataset.zip''pymovements-toy-dataset.zip'
-
'trial_{text_id:d}_{page_id:d}.csv''trial_{text_id:d}_{page_id:d}.csv'
-
dict (2 items)
-
<class 'int'><class 'int'>
-
<class 'int'><class 'int'>
-
-
NoneNone
-
dict (4 items)
-
'timestamp''timestamp'
-
'ms''ms'
- (2 more)
-
-
'256901852c1c07581d375eef705855d6''256901852c1c07581d375eef705855d6'
-
NoneNone
-
str'https://github.com/pymovements/pymovements-toy-dataset/archive/refs/heads/main.zip'
-
-
ResourceDefinition
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
-
tuple (20 items)
-
Events
-
DataFrame (7 columns, 222 rows)shape: (222, 7)
name onset offset duration peak_velocity amplitude dispersion str i64 i64 i64 f64 f64 f64 "fixation" 1988145 1988563 418 200.144558 2.492864 2.712569 "fixation" 1988564 1988750 186 249.67823 2.651198 2.865026 "fixation" 1988751 1989178 427 211.598748 2.585906 2.779518 "fixation" 1989179 1989436 257 189.183243 2.614347 2.77424 "fixation" 1989437 1989600 163 255.077509 2.594651 2.729391 … … … … … … … "saccade" 2004373 2004385 12 70.374183 0.7073 0.766684 "saccade" 2004688 2004704 16 175.646379 1.807485 1.875716 "saccade" 2004879 2004901 22 209.46361 2.933818 3.086169 "saccade" 2005110 2005126 16 137.917594 1.405354 1.501217 "saccade" 2005288 2005345 57 352.550667 14.682541 16.101153 -
NoneNone
-
-
Events
-
DataFrame (7 columns, 366 rows)shape: (366, 7)
name onset offset duration peak_velocity amplitude dispersion str i64 i64 i64 f64 f64 f64 "fixation" 2008305 2008621 316 167.343877 2.283024 2.706135 "fixation" 2008622 2008821 199 314.396904 2.578854 2.79657 "fixation" 2008822 2009214 392 305.525917 2.612895 2.908934 "fixation" 2009215 2009433 218 216.195201 2.612208 2.765062 "fixation" 2009434 2009704 270 208.05132 2.566305 2.70311 … … … … … … … "saccade" 2036849 2036861 12 54.743137 0.472141 0.529715 "saccade" 2037161 2037188 27 223.056103 2.358604 2.587752 "saccade" 2037412 2037503 91 406.701444 16.94863 18.346458 "saccade" 2037638 2037654 16 138.382767 1.411621 1.827761 "saccade" 2037812 2037830 18 240.193236 2.739312 3.024326 -
NoneNone
-
- (18 more)
-
Events
-
dict (1 items)
-
DataFrame (3 columns, 20 rows)shape: (20, 3)
text_id page_id filepath i64 i64 str 0 1 "pymovements-toy-dataset-main/d… 0 2 "pymovements-toy-dataset-main/d… 0 3 "pymovements-toy-dataset-main/d… 0 4 "pymovements-toy-dataset-main/d… 0 5 "pymovements-toy-dataset-main/d… … … … 3 1 "pymovements-toy-dataset-main/d… 3 2 "pymovements-toy-dataset-main/d… 3 3 "pymovements-toy-dataset-main/d… 3 4 "pymovements-toy-dataset-main/d… 3 5 "pymovements-toy-dataset-main/d…
-
-
list (20 items)
-
Gaze
-
DataFrame (6 columns, 17223 rows)shape: (17_223, 6)
time stimuli_x stimuli_y pixel position velocity i64 f64 f64 list[f64] list[f64] list[f64] 1988145 -1.0 -1.0 [206.8, 152.4] [-10.697598, -8.852399] [null, null] 1988146 -1.0 -1.0 [206.9, 152.1] [-10.695183, -8.859678] [null, null] 1988147 -1.0 -1.0 [207.0, 151.8] [-10.692768, -8.866956] [1.610194, -5.256267] 1988148 -1.0 -1.0 [207.1, 151.7] [-10.690352, -8.869381] [0.402548, -4.447465] 1988149 -1.0 -1.0 [207.0, 151.5] [-10.692768, -8.874233] [0.402561, -3.234462] … … … … … … 2005363 -1.0 -1.0 [361.0, 415.4] [-6.932438, -2.386672] [-63.266374, -21.085616] 2005364 -1.0 -1.0 [358.0, 414.5] [-7.006376, -2.408998] [-63.249652, -19.431326] 2005365 -1.0 -1.0 [355.8, 413.8] [-7.060582, -2.426362] [-60.359624, -15.710061] 2005366 -1.0 -1.0 [353.1, 413.2] [-7.12709, -2.441245] [null, null] 2005367 -1.0 -1.0 [351.2, 412.9] [-7.173881, -2.448686] [null, null] -
EventsEvents
-
DataFrame (7 columns, 222 rows)shape: (222, 7)
name onset offset duration peak_velocity amplitude dispersion str i64 i64 i64 f64 f64 f64 "fixation" 1988145 1988563 418 200.144558 2.492864 2.712569 "fixation" 1988564 1988750 186 249.67823 2.651198 2.865026 "fixation" 1988751 1989178 427 211.598748 2.585906 2.779518 "fixation" 1989179 1989436 257 189.183243 2.614347 2.77424 "fixation" 1989437 1989600 163 255.077509 2.594651 2.729391 … … … … … … … "saccade" 2004373 2004385 12 70.374183 0.7073 0.766684 "saccade" 2004688 2004704 16 175.646379 1.807485 1.875716 "saccade" 2004879 2004901 22 209.46361 2.933818 3.086169 "saccade" 2005110 2005126 16 137.917594 1.405354 1.501217 "saccade" 2005288 2005345 57 352.550667 14.682541 16.101153 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
-
Gaze
-
DataFrame (6 columns, 29799 rows)shape: (29_799, 6)
time stimuli_x stimuli_y pixel position velocity i64 f64 f64 list[f64] list[f64] list[f64] 2008305 -1.0 -1.0 [141.4, 153.6] [-12.268583, -8.823284] [null, null] 2008306 -1.0 -1.0 [141.1, 153.2] [-12.275749, -8.832989] [null, null] 2008307 -1.0 -1.0 [140.7, 152.8] [-12.285302, -8.842695] [-5.572617, -6.065816] 2008308 -1.0 -1.0 [140.6, 152.7] [-12.28769, -8.845121] [-3.582268, -4.043733] 2008309 -1.0 -1.0 [140.5, 152.6] [-12.290078, -8.847547] [-2.388085, -2.021821] … … … … … … 2038099 -1.0 -1.0 [273.8, 773.8] [-9.071149, 6.490168] [1.21962, 1.635403] 2038100 -1.0 -1.0 [273.8, 774.1] [-9.071149, 6.497527] [1.626175, 4.497406] 2038101 -1.0 -1.0 [273.9, 774.5] [-9.06871, 6.50734] [1.626186, 1.635423] 2038102 -1.0 -1.0 [274.0, 774.4] [-9.066271, 6.504886] [null, null] 2038103 -1.0 -1.0 [274.0, 773.9] [-9.066271, 6.492621] [null, null] -
EventsEvents
-
DataFrame (7 columns, 366 rows)shape: (366, 7)
name onset offset duration peak_velocity amplitude dispersion str i64 i64 i64 f64 f64 f64 "fixation" 2008305 2008621 316 167.343877 2.283024 2.706135 "fixation" 2008622 2008821 199 314.396904 2.578854 2.79657 "fixation" 2008822 2009214 392 305.525917 2.612895 2.908934 "fixation" 2009215 2009433 218 216.195201 2.612208 2.765062 "fixation" 2009434 2009704 270 208.05132 2.566305 2.70311 … … … … … … … "saccade" 2036849 2036861 12 54.743137 0.472141 0.529715 "saccade" 2037161 2037188 27 223.056103 2.358604 2.587752 "saccade" 2037412 2037503 91 406.701444 16.94863 18.346458 "saccade" 2037638 2037654 16 138.382767 1.411621 1.827761 "saccade" 2037812 2037830 18 240.193236 2.739312 3.024326 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
- (18 more)
-
Gaze
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
DatasetPathsDatasetPaths
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
PosixPath('data/ToyDataset/downloads')PosixPath('data/ToyDataset/downloads')
-
PosixPath('data/ToyDataset/events')PosixPath('data/ToyDataset/events')
-
PosixPath('data/ToyDataset/precomputed_events')PosixPath('data/ToyDataset/precomputed_events')
-
PosixPathPosixPath('data/ToyDataset/precomputed_reading_measures')
-
PosixPath('data/ToyDataset/preprocessed')PosixPath('data/ToyDataset/preprocessed')
-
PosixPath('data/ToyDataset/raw')PosixPath('data/ToyDataset/raw')
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
-
list (0 items)
-
list (0 items)
Let’s confirm again by printing all the new files in this alternative directory:
alternative_dirpath = dataset.path / 'events_csv'
print(list(alternative_dirpath.glob('*/*/*')))
[PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_2_2.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_2_5.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_3_1.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_2_1.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_1_1.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_3_3.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_3_2.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_3_4.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_1_3.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_2_3.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_0_5.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_0_2.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_1_4.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_2_4.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_0_3.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_1_5.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_1_2.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_0_4.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_0_1.csv'), PosixPath('data/ToyDataset/events_csv/pymovements-toy-dataset-main/data/trial_3_5.csv')]
Loading Previously Computed Events Data#
Let’s initialize a new dataset object from the same ToyDataset.
preprocessed_dataset = pm.Dataset('ToyDataset', path='data/ToyDataset')
When we load the dataset using load() without any parameters there will be no events loaded:
preprocessed_dataset.load()
-
DatasetDefinitionDatasetDefinition
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
NoneNone
-
dict (1 items)
-
'trial_{text_id:d}_{page_id:d}.csv''trial_{text_id:d}_{page_id:d}.csv'
-
-
dict (1 items)
-
dict (2 items)
-
<class 'int'><class 'int'>
-
<class 'int'><class 'int'>
-
-
-
TrueTrue
-
'pymovements Toy Dataset''pymovements Toy Dataset'
-
dict (0 items)
-
'ToyDataset''ToyDataset'
-
NoneNone
-
NoneNone
-
list (1 items)
-
ResourceDefinition
-
'gaze''gaze'
-
'pymovements-toy-dataset.zip''pymovements-toy-dataset.zip'
-
'trial_{text_id:d}_{page_id:d}.csv''trial_{text_id:d}_{page_id:d}.csv'
-
dict (2 items)
-
<class 'int'><class 'int'>
-
<class 'int'><class 'int'>
-
-
NoneNone
-
dict (4 items)
-
'timestamp''timestamp'
-
'ms''ms'
- (2 more)
-
-
'256901852c1c07581d375eef705855d6''256901852c1c07581d375eef705855d6'
-
NoneNone
-
str'https://github.com/pymovements/pymovements-toy-dataset/archive/refs/heads/main.zip'
-
-
ResourceDefinition
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
-
tuple (20 items)
-
Events
-
DataFrame (4 columns, 0 rows)shape: (0, 4)
name onset offset duration str i64 i64 i64 -
NoneNone
-
-
Events
-
DataFrame (4 columns, 0 rows)shape: (0, 4)
name onset offset duration str i64 i64 i64 -
NoneNone
-
- (18 more)
-
Events
-
dict (1 items)
-
DataFrame (3 columns, 20 rows)shape: (20, 3)
text_id page_id filepath i64 i64 str 0 1 "pymovements-toy-dataset-main/d… 0 2 "pymovements-toy-dataset-main/d… 0 3 "pymovements-toy-dataset-main/d… 0 4 "pymovements-toy-dataset-main/d… 0 5 "pymovements-toy-dataset-main/d… … … … 3 1 "pymovements-toy-dataset-main/d… 3 2 "pymovements-toy-dataset-main/d… 3 3 "pymovements-toy-dataset-main/d… 3 4 "pymovements-toy-dataset-main/d… 3 5 "pymovements-toy-dataset-main/d…
-
-
list (20 items)
-
Gaze
-
DataFrame (4 columns, 17223 rows)shape: (17_223, 4)
time stimuli_x stimuli_y pixel i64 f64 f64 list[f64] 1988145 -1.0 -1.0 [206.8, 152.4] 1988146 -1.0 -1.0 [206.9, 152.1] 1988147 -1.0 -1.0 [207.0, 151.8] 1988148 -1.0 -1.0 [207.1, 151.7] 1988149 -1.0 -1.0 [207.0, 151.5] … … … … 2005363 -1.0 -1.0 [361.0, 415.4] 2005364 -1.0 -1.0 [358.0, 414.5] 2005365 -1.0 -1.0 [355.8, 413.8] 2005366 -1.0 -1.0 [353.1, 413.2] 2005367 -1.0 -1.0 [351.2, 412.9] -
EventsEvents
-
DataFrame (4 columns, 0 rows)shape: (0, 4)
name onset offset duration str i64 i64 i64 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
-
Gaze
-
DataFrame (4 columns, 29799 rows)shape: (29_799, 4)
time stimuli_x stimuli_y pixel i64 f64 f64 list[f64] 2008305 -1.0 -1.0 [141.4, 153.6] 2008306 -1.0 -1.0 [141.1, 153.2] 2008307 -1.0 -1.0 [140.7, 152.8] 2008308 -1.0 -1.0 [140.6, 152.7] 2008309 -1.0 -1.0 [140.5, 152.6] … … … … 2038099 -1.0 -1.0 [273.8, 773.8] 2038100 -1.0 -1.0 [273.8, 774.1] 2038101 -1.0 -1.0 [273.9, 774.5] 2038102 -1.0 -1.0 [274.0, 774.4] 2038103 -1.0 -1.0 [274.0, 773.9] -
EventsEvents
-
DataFrame (4 columns, 0 rows)shape: (0, 4)
name onset offset duration str i64 i64 i64 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
- (18 more)
-
Gaze
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
DatasetPathsDatasetPaths
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
PosixPath('data/ToyDataset/downloads')PosixPath('data/ToyDataset/downloads')
-
PosixPath('data/ToyDataset/events')PosixPath('data/ToyDataset/events')
-
PosixPath('data/ToyDataset/precomputed_events')PosixPath('data/ToyDataset/precomputed_events')
-
PosixPathPosixPath('data/ToyDataset/precomputed_reading_measures')
-
PosixPath('data/ToyDataset/preprocessed')PosixPath('data/ToyDataset/preprocessed')
-
PosixPath('data/ToyDataset/raw')PosixPath('data/ToyDataset/raw')
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
-
list (0 items)
-
list (0 items)
But when we load it with the events=True parameter the events will be loaded:
preprocessed_dataset.load(events=True)
-
DatasetDefinitionDatasetDefinition
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
NoneNone
-
dict (1 items)
-
'trial_{text_id:d}_{page_id:d}.csv''trial_{text_id:d}_{page_id:d}.csv'
-
-
dict (1 items)
-
dict (2 items)
-
<class 'int'><class 'int'>
-
<class 'int'><class 'int'>
-
-
-
TrueTrue
-
'pymovements Toy Dataset''pymovements Toy Dataset'
-
dict (0 items)
-
'ToyDataset''ToyDataset'
-
NoneNone
-
NoneNone
-
list (1 items)
-
ResourceDefinition
-
'gaze''gaze'
-
'pymovements-toy-dataset.zip''pymovements-toy-dataset.zip'
-
'trial_{text_id:d}_{page_id:d}.csv''trial_{text_id:d}_{page_id:d}.csv'
-
dict (2 items)
-
<class 'int'><class 'int'>
-
<class 'int'><class 'int'>
-
-
NoneNone
-
dict (4 items)
-
'timestamp''timestamp'
-
'ms''ms'
- (2 more)
-
-
'256901852c1c07581d375eef705855d6''256901852c1c07581d375eef705855d6'
-
NoneNone
-
str'https://github.com/pymovements/pymovements-toy-dataset/archive/refs/heads/main.zip'
-
-
ResourceDefinition
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
-
tuple (20 items)
-
Events
-
DataFrame (7 columns, 222 rows)shape: (222, 7)
name onset offset duration peak_velocity amplitude dispersion str i64 i64 i64 f64 f64 f64 "fixation" 1988145 1988563 418 200.144558 2.492864 2.712569 "fixation" 1988564 1988750 186 249.67823 2.651198 2.865026 "fixation" 1988751 1989178 427 211.598748 2.585906 2.779518 "fixation" 1989179 1989436 257 189.183243 2.614347 2.77424 "fixation" 1989437 1989600 163 255.077509 2.594651 2.729391 … … … … … … … "saccade" 2004373 2004385 12 70.374183 0.7073 0.766684 "saccade" 2004688 2004704 16 175.646379 1.807485 1.875716 "saccade" 2004879 2004901 22 209.46361 2.933818 3.086169 "saccade" 2005110 2005126 16 137.917594 1.405354 1.501217 "saccade" 2005288 2005345 57 352.550667 14.682541 16.101153 -
NoneNone
-
-
Events
-
DataFrame (7 columns, 366 rows)shape: (366, 7)
name onset offset duration peak_velocity amplitude dispersion str i64 i64 i64 f64 f64 f64 "fixation" 2008305 2008621 316 167.343877 2.283024 2.706135 "fixation" 2008622 2008821 199 314.396904 2.578854 2.79657 "fixation" 2008822 2009214 392 305.525917 2.612895 2.908934 "fixation" 2009215 2009433 218 216.195201 2.612208 2.765062 "fixation" 2009434 2009704 270 208.05132 2.566305 2.70311 … … … … … … … "saccade" 2036849 2036861 12 54.743137 0.472141 0.529715 "saccade" 2037161 2037188 27 223.056103 2.358604 2.587752 "saccade" 2037412 2037503 91 406.701444 16.94863 18.346458 "saccade" 2037638 2037654 16 138.382767 1.411621 1.827761 "saccade" 2037812 2037830 18 240.193236 2.739312 3.024326 -
NoneNone
-
- (18 more)
-
Events
-
dict (1 items)
-
DataFrame (3 columns, 20 rows)shape: (20, 3)
text_id page_id filepath i64 i64 str 0 1 "pymovements-toy-dataset-main/d… 0 2 "pymovements-toy-dataset-main/d… 0 3 "pymovements-toy-dataset-main/d… 0 4 "pymovements-toy-dataset-main/d… 0 5 "pymovements-toy-dataset-main/d… … … … 3 1 "pymovements-toy-dataset-main/d… 3 2 "pymovements-toy-dataset-main/d… 3 3 "pymovements-toy-dataset-main/d… 3 4 "pymovements-toy-dataset-main/d… 3 5 "pymovements-toy-dataset-main/d…
-
-
list (20 items)
-
Gaze
-
DataFrame (4 columns, 17223 rows)shape: (17_223, 4)
time stimuli_x stimuli_y pixel i64 f64 f64 list[f64] 1988145 -1.0 -1.0 [206.8, 152.4] 1988146 -1.0 -1.0 [206.9, 152.1] 1988147 -1.0 -1.0 [207.0, 151.8] 1988148 -1.0 -1.0 [207.1, 151.7] 1988149 -1.0 -1.0 [207.0, 151.5] … … … … 2005363 -1.0 -1.0 [361.0, 415.4] 2005364 -1.0 -1.0 [358.0, 414.5] 2005365 -1.0 -1.0 [355.8, 413.8] 2005366 -1.0 -1.0 [353.1, 413.2] 2005367 -1.0 -1.0 [351.2, 412.9] -
EventsEvents
-
DataFrame (7 columns, 222 rows)shape: (222, 7)
name onset offset duration peak_velocity amplitude dispersion str i64 i64 i64 f64 f64 f64 "fixation" 1988145 1988563 418 200.144558 2.492864 2.712569 "fixation" 1988564 1988750 186 249.67823 2.651198 2.865026 "fixation" 1988751 1989178 427 211.598748 2.585906 2.779518 "fixation" 1989179 1989436 257 189.183243 2.614347 2.77424 "fixation" 1989437 1989600 163 255.077509 2.594651 2.729391 … … … … … … … "saccade" 2004373 2004385 12 70.374183 0.7073 0.766684 "saccade" 2004688 2004704 16 175.646379 1.807485 1.875716 "saccade" 2004879 2004901 22 209.46361 2.933818 3.086169 "saccade" 2005110 2005126 16 137.917594 1.405354 1.501217 "saccade" 2005288 2005345 57 352.550667 14.682541 16.101153 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
-
Gaze
-
DataFrame (4 columns, 29799 rows)shape: (29_799, 4)
time stimuli_x stimuli_y pixel i64 f64 f64 list[f64] 2008305 -1.0 -1.0 [141.4, 153.6] 2008306 -1.0 -1.0 [141.1, 153.2] 2008307 -1.0 -1.0 [140.7, 152.8] 2008308 -1.0 -1.0 [140.6, 152.7] 2008309 -1.0 -1.0 [140.5, 152.6] … … … … 2038099 -1.0 -1.0 [273.8, 773.8] 2038100 -1.0 -1.0 [273.8, 774.1] 2038101 -1.0 -1.0 [273.9, 774.5] 2038102 -1.0 -1.0 [274.0, 774.4] 2038103 -1.0 -1.0 [274.0, 773.9] -
EventsEvents
-
DataFrame (7 columns, 366 rows)shape: (366, 7)
name onset offset duration peak_velocity amplitude dispersion str i64 i64 i64 f64 f64 f64 "fixation" 2008305 2008621 316 167.343877 2.283024 2.706135 "fixation" 2008622 2008821 199 314.396904 2.578854 2.79657 "fixation" 2008822 2009214 392 305.525917 2.612895 2.908934 "fixation" 2009215 2009433 218 216.195201 2.612208 2.765062 "fixation" 2009434 2009704 270 208.05132 2.566305 2.70311 … … … … … … … "saccade" 2036849 2036861 12 54.743137 0.472141 0.529715 "saccade" 2037161 2037188 27 223.056103 2.358604 2.587752 "saccade" 2037412 2037503 91 406.701444 16.94863 18.346458 "saccade" 2037638 2037654 16 138.382767 1.411621 1.827761 "saccade" 2037812 2037830 18 240.193236 2.739312 3.024326 -
NoneNone
-
-
NoneNone
-
ExperimentExperiment
-
EyeTrackerEyeTracker
-
NoneNone
-
NoneNone
-
NoneNone
-
NoneNone
-
10001000
-
NoneNone
-
NoneNone
-
-
10001000
-
ScreenScreen
-
6868
-
30.230.2
-
10241024
-
'upper left''upper left'
-
3838
-
12801280
-
15.59938648778295315.599386487782953
-
-15.599386487782953-15.599386487782953
-
12.50804441088254612.508044410882546
-
-12.508044410882546-12.508044410882546
-
-
-
- (18 more)
-
Gaze
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
DatasetPathsDatasetPaths
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
PosixPath('data/ToyDataset/downloads')PosixPath('data/ToyDataset/downloads')
-
PosixPath('data/ToyDataset/events')PosixPath('data/ToyDataset/events')
-
PosixPath('data/ToyDataset/precomputed_events')PosixPath('data/ToyDataset/precomputed_events')
-
PosixPathPosixPath('data/ToyDataset/precomputed_reading_measures')
-
PosixPath('data/ToyDataset/preprocessed')PosixPath('data/ToyDataset/preprocessed')
-
PosixPath('data/ToyDataset/raw')PosixPath('data/ToyDataset/raw')
-
PosixPath('data/ToyDataset')PosixPath('data/ToyDataset')
-
-
list (0 items)
-
list (0 items)
By default, the events directory and the feather extension will be chosen.
In the case of alternative directory names or other file formats, you can use the following:
preprocessed_dataset.load(
events=True,
events_dirname='events_csv',
extension='csv',
)
dataset.events[0]
-
DataFrame (7 columns, 222 rows)shape: (222, 7)
name onset offset duration peak_velocity amplitude dispersion str i64 i64 i64 f64 f64 f64 "fixation" 1988145 1988563 418 200.144558 2.492864 2.712569 "fixation" 1988564 1988750 186 249.67823 2.651198 2.865026 "fixation" 1988751 1989178 427 211.598748 2.585906 2.779518 "fixation" 1989179 1989436 257 189.183243 2.614347 2.77424 "fixation" 1989437 1989600 163 255.077509 2.594651 2.729391 … … … … … … … "saccade" 2004373 2004385 12 70.374183 0.7073 0.766684 "saccade" 2004688 2004704 16 175.646379 1.807485 1.875716 "saccade" 2004879 2004901 22 209.46361 2.933818 3.086169 "saccade" 2005110 2005126 16 137.917594 1.405354 1.501217 "saccade" 2005288 2005345 57 352.550667 14.682541 16.101153 -
NoneNone
What you have learned in this tutorial:#
detecting different events with different algorithms by using
Dataset.detect_events()computing event properties by using
Dataset.compute_event_properties()saving your preprocesed data using
Dataset.save_preprocessed()load your preprocesed data using
Dataset.load(events=True)using custom directory names by specifying
preprocessed_dirnameusing other file formats than the default
featherformat by specifyingextension