Saving and Loading Event Data#

What you will learn in this tutorial:#

  • how to save your event data

  • how to load your event data

Preparations#

We import pymovements as the alias pm for convenience.

[1]:
import pymovements as pm
/home/docs/checkouts/readthedocs.org/user_builds/pymovements/envs/v0.23.0/lib/python3.9/site-packages/tqdm/auto.py:21: TqdmWarning: IProgress not found. Please update jupyter and ipywidgets. See https://ipywidgets.readthedocs.io/en/stable/user_install.html
  from .autonotebook import tqdm as notebook_tqdm

Let’s start by downloading our ToyDataset and loading in its data:

[2]:
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.

Using already downloaded and verified file: data/ToyDataset/downloads/pymovements-toy-dataset.zip
Extracting pymovements-toy-dataset.zip to data/ToyDataset/raw
100%|██████████| 23/23 [00:00<00:00, 322.48it/s]
100%|██████████| 20/20 [00:00<00:00, 59.44it/s]
[2]:
Dataset
  • DatasetDefinition
    DatasetDefinition
    • None
      None
    • dict (0 items)
      • dict (1 items)
        • dict (4 items)
          • list (5 items)
            • 'timestamp'
            • 'x'
            • (3 more)
          • dict (5 items)
            • Float64
              Float64
            • Float64
              Float64
            • (3 more)
          • (2 more)
      • None
        None
      • Experiment
        Experiment
        • EyeTracker
          EyeTracker
          • None
            None
          • None
            None
          • None
            None
          • None
            None
          • 1000
            1000
          • None
            None
          • None
            None
        • 1000
          1000
        • Screen
          Screen
          • 68
            68
          • 30.2
            30.2
          • 1024
            1024
          • 'upper left'
            'upper left'
          • 38
            38
          • 1280
            1280
          • 15.599386487782953
            15.599386487782953
          • -15.599386487782953
            -15.599386487782953
          • 12.508044410882546
            12.508044410882546
          • -12.508044410882546
            -12.508044410882546
      • None
        None
      • 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'>
      • True
        True
      • 'pymovements Toy Dataset'
        'pymovements Toy Dataset'
      • dict (0 items)
        • 'ToyDataset'
          'ToyDataset'
        • list (2 items)
          • 'x'
          • 'y'
        • None
          None
        • list (1 items)
          • ResourceDefinition(content='gaze', filename='pymovements-toy-dataset.zip', url='http://github.com/aeye-lab/pymovements-toy-dataset/zipball/6cb5d663317bf418cec0c9abe1dde5085a8a8ebd/', md5='4da622457637a8181d86601fe17f3aa8', filename_pattern='trial_{text_id:d}_{page_id:d}.csv', filename_pattern_schema_overrides={'text_id': <class 'int'>, 'page_id': <class 'int'>})
        • 'timestamp'
          'timestamp'
        • 'ms'
          'ms'
        • None
          None
        • None
          None
      • list (0 items)
        • dict (1 items)
          • DataFrame (3 columns, 20 rows)
            shape: (20, 3)
            text_idpage_idfilepath
            i64i64str
            01"aeye-lab-pymovements-toy-datas…
            02"aeye-lab-pymovements-toy-datas…
            03"aeye-lab-pymovements-toy-datas…
            04"aeye-lab-pymovements-toy-datas…
            05"aeye-lab-pymovements-toy-datas…
            31"aeye-lab-pymovements-toy-datas…
            32"aeye-lab-pymovements-toy-datas…
            33"aeye-lab-pymovements-toy-datas…
            34"aeye-lab-pymovements-toy-datas…
            35"aeye-lab-pymovements-toy-datas…
        • list (20 items)
          • Gaze
            • DataFrame (6 columns, 17223 rows)
              shape: (17_223, 6)
              timestimuli_xstimuli_ytext_idpage_idpixel
              i64f64f64i64i64list[f64]
              1988145-1.0-1.001[206.8, 152.4]
              1988146-1.0-1.001[206.9, 152.1]
              1988147-1.0-1.001[207.0, 151.8]
              1988148-1.0-1.001[207.1, 151.7]
              1988149-1.0-1.001[207.0, 151.5]
              2005363-1.0-1.001[361.0, 415.4]
              2005364-1.0-1.001[358.0, 414.5]
              2005365-1.0-1.001[355.8, 413.8]
              2005366-1.0-1.001[353.1, 413.2]
              2005367-1.0-1.001[351.2, 412.9]
            • Events
              Events
              • DataFrame (6 columns, 0 rows)
                shape: (0, 6)
                text_idpage_idnameonsetoffsetduration
                i64i64stri64i64i64
              • list (2 items)
                • 'text_id'
                • 'page_id'
            • list (2 items)
              • 'text_id'
              • 'page_id'
            • Experiment
              Experiment
              • EyeTracker
                EyeTracker
                • None
                  None
                • None
                  None
                • None
                  None
                • None
                  None
                • 1000
                  1000
                • None
                  None
                • None
                  None
              • 1000
                1000
              • Screen
                Screen
                • 68
                  68
                • 30.2
                  30.2
                • 1024
                  1024
                • 'upper left'
                  'upper left'
                • 38
                  38
                • 1280
                  1280
                • 15.599386487782953
                  15.599386487782953
                • -15.599386487782953
                  -15.599386487782953
                • 12.508044410882546
                  12.508044410882546
                • -12.508044410882546
                  -12.508044410882546
          • Gaze
            • DataFrame (6 columns, 29799 rows)
              shape: (29_799, 6)
              timestimuli_xstimuli_ytext_idpage_idpixel
              i64f64f64i64i64list[f64]
              2008305-1.0-1.002[141.4, 153.6]
              2008306-1.0-1.002[141.1, 153.2]
              2008307-1.0-1.002[140.7, 152.8]
              2008308-1.0-1.002[140.6, 152.7]
              2008309-1.0-1.002[140.5, 152.6]
              2038099-1.0-1.002[273.8, 773.8]
              2038100-1.0-1.002[273.8, 774.1]
              2038101-1.0-1.002[273.9, 774.5]
              2038102-1.0-1.002[274.0, 774.4]
              2038103-1.0-1.002[274.0, 773.9]
            • Events
              Events
              • DataFrame (6 columns, 0 rows)
                shape: (0, 6)
                text_idpage_idnameonsetoffsetduration
                i64i64stri64i64i64
              • list (2 items)
                • 'text_id'
                • 'page_id'
            • list (2 items)
              • 'text_id'
              • 'page_id'
            • Experiment
              Experiment
              • EyeTracker
                EyeTracker
                • None
                  None
                • None
                  None
                • None
                  None
                • None
                  None
                • 1000
                  1000
                • None
                  None
                • None
                  None
              • 1000
                1000
              • Screen
                Screen
                • 68
                  68
                • 30.2
                  30.2
                • 1024
                  1024
                • 'upper left'
                  'upper left'
                • 38
                  38
                • 1280
                  1280
                • 15.599386487782953
                  15.599386487782953
                • -15.599386487782953
                  -15.599386487782953
                • 12.508044410882546
                  12.508044410882546
                • -12.508044410882546
                  -12.508044410882546
          • (18 more)
        • PosixPath('data/ToyDataset')
          PosixPath('data/ToyDataset')
        • DatasetPaths
          DatasetPaths
          • 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')
          • PosixPath
            PosixPath('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)

            Now let’s do some preprocessing:

            [3]:
            
            dataset.pix2deg()
            dataset.pos2vel()
            
            dataset.gaze[0]
            
            100%|██████████| 20/20 [00:00<00:00, 32.30it/s]
            100%|██████████| 20/20 [00:00<00:00, 65.30it/s]
            
            [3]:
            
            Gaze
            • DataFrame (8 columns, 17223 rows)
              shape: (17_223, 8)
              timestimuli_xstimuli_ytext_idpage_idpixelpositionvelocity
              i64f64f64i64i64list[f64]list[f64]list[f64]
              1988145-1.0-1.001[206.8, 152.4][-10.697598, -8.852399][null, null]
              1988146-1.0-1.001[206.9, 152.1][-10.695183, -8.859678][null, null]
              1988147-1.0-1.001[207.0, 151.8][-10.692768, -8.866956][1.610194, -5.256267]
              1988148-1.0-1.001[207.1, 151.7][-10.690352, -8.869381][0.402548, -4.447465]
              1988149-1.0-1.001[207.0, 151.5][-10.692768, -8.874233][0.402561, -3.234462]
              2005363-1.0-1.001[361.0, 415.4][-6.932438, -2.386672][-63.266374, -21.085616]
              2005364-1.0-1.001[358.0, 414.5][-7.006376, -2.408998][-63.249652, -19.431326]
              2005365-1.0-1.001[355.8, 413.8][-7.060582, -2.426362][-60.359624, -15.710061]
              2005366-1.0-1.001[353.1, 413.2][-7.12709, -2.441245][null, null]
              2005367-1.0-1.001[351.2, 412.9][-7.173881, -2.448686][null, null]
            • Events
              Events
              • DataFrame (6 columns, 0 rows)
                shape: (0, 6)
                text_idpage_idnameonsetoffsetduration
                i64i64stri64i64i64
              • list (2 items)
                • 'text_id'
                • 'page_id'
            • list (2 items)
              • 'text_id'
              • 'page_id'
            • Experiment
              Experiment
              • EyeTracker
                EyeTracker
                • None
                  None
                • None
                  None
                • None
                  None
                • None
                  None
                • 1000
                  1000
                • None
                  None
                • None
                  None
              • 1000
                1000
              • Screen
                Screen
                • 68
                  68
                • 30.2
                  30.2
                • 1024
                  1024
                • 'upper left'
                  'upper left'
                • 38
                  38
                • 1280
                  1280
                • 15.599386487782953
                  15.599386487782953
                • -15.599386487782953
                  -15.599386487782953
                • 12.508044410882546
                  12.508044410882546
                • -12.508044410882546
                  -12.508044410882546

            Detect some events:

            [4]:
            
            dataset.detect_events('ivt')
            
            dataset.events[0]
            
            20it [00:00, 97.00it/s]
            
            [4]:
            
            Events
            • DataFrame (6 columns, 73 rows)
              shape: (73, 6)
              text_idpage_idnameonsetoffsetduration
              i64i64stri64i64i64
              01"fixation"19881471988322175
              01"fixation"19883511988546195
              01"fixation"19885921988736144
              01"fixation"19887881989013225
              01"fixation"19890601989170110
              01"fixation"20041322004331199
              01"fixation"20043992004687288
              01"fixation"20047142004878164
              01"fixation"20049312005109178
              01"fixation"20051382005287149
            • list (2 items)
              • 'text_id'
              • 'page_id'
            [5]:
            
            dataset.detect_events('microsaccades')
            
            dataset.events[0]
            
            20it [00:00, 54.84it/s]
            
            [5]:
            
            Events
            • DataFrame (6 columns, 215 rows)
              shape: (215, 6)
              text_idpage_idnameonsetoffsetduration
              i64i64stri64i64i64
              01"fixation"19881471988322175
              01"fixation"19883511988546195
              01"fixation"19885921988736144
              01"fixation"19887881989013225
              01"fixation"19890601989170110
              01"saccade"2005110200512616
              01"saccade"2005128200513810
              01"saccade"2005288200534557
              01"saccade"200534720053569
              01"saccade"200535920053656
            • list (2 items)
              • 'text_id'
              • 'page_id'

            We now have event dataframes available with our detected event data.

            Saving#

            Saving your event data is as simple as:

            [6]:
            
            dataset.save_events()
            
            100%|██████████| 20/20 [00:00<00:00, 2841.67it/s]
            
            [6]:
            
            Dataset
            • DatasetDefinition
              DatasetDefinition
              • None
                None
              • dict (0 items)
                • dict (1 items)
                  • dict (4 items)
                    • list (5 items)
                      • 'timestamp'
                      • 'x'
                      • (3 more)
                    • dict (5 items)
                      • Float64
                        Float64
                      • Float64
                        Float64
                      • (3 more)
                    • (2 more)
                • None
                  None
                • Experiment
                  Experiment
                  • EyeTracker
                    EyeTracker
                    • None
                      None
                    • None
                      None
                    • None
                      None
                    • None
                      None
                    • 1000
                      1000
                    • None
                      None
                    • None
                      None
                  • 1000
                    1000
                  • Screen
                    Screen
                    • 68
                      68
                    • 30.2
                      30.2
                    • 1024
                      1024
                    • 'upper left'
                      'upper left'
                    • 38
                      38
                    • 1280
                      1280
                    • 15.599386487782953
                      15.599386487782953
                    • -15.599386487782953
                      -15.599386487782953
                    • 12.508044410882546
                      12.508044410882546
                    • -12.508044410882546
                      -12.508044410882546
                • None
                  None
                • 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'>
                • True
                  True
                • 'pymovements Toy Dataset'
                  'pymovements Toy Dataset'
                • dict (0 items)
                  • 'ToyDataset'
                    'ToyDataset'
                  • list (2 items)
                    • 'x'
                    • 'y'
                  • None
                    None
                  • list (1 items)
                    • ResourceDefinition(content='gaze', filename='pymovements-toy-dataset.zip', url='http://github.com/aeye-lab/pymovements-toy-dataset/zipball/6cb5d663317bf418cec0c9abe1dde5085a8a8ebd/', md5='4da622457637a8181d86601fe17f3aa8', filename_pattern='trial_{text_id:d}_{page_id:d}.csv', filename_pattern_schema_overrides={'text_id': <class 'int'>, 'page_id': <class 'int'>})
                  • 'timestamp'
                    'timestamp'
                  • 'ms'
                    'ms'
                  • None
                    None
                  • None
                    None
                • list (20 items)
                  • Events
                    • DataFrame (6 columns, 215 rows)
                      shape: (215, 6)
                      text_idpage_idnameonsetoffsetduration
                      i64i64stri64i64i64
                      01"fixation"19881471988322175
                      01"fixation"19883511988546195
                      01"fixation"19885921988736144
                      01"fixation"19887881989013225
                      01"fixation"19890601989170110
                      01"saccade"2005110200512616
                      01"saccade"2005128200513810
                      01"saccade"2005288200534557
                      01"saccade"200534720053569
                      01"saccade"200535920053656
                    • list (2 items)
                      • 'text_id'
                      • 'page_id'
                  • Events
                    • DataFrame (6 columns, 352 rows)
                      shape: (352, 6)
                      text_idpage_idnameonsetoffsetduration
                      i64i64stri64i64i64
                      02"fixation"20083072008474167
                      02"fixation"20084982008603105
                      02"fixation"20086282008806178
                      02"fixation"20088622009051189
                      02"fixation"20090642009201137
                      02"saccade"2037638203765416
                      02"saccade"2037656203766610
                      02"saccade"2037812203783018
                      02"saccade"203783220378397
                      02"saccade"203784520378516
                    • list (2 items)
                      • 'text_id'
                      • 'page_id'
                  • (18 more)
                • dict (1 items)
                  • DataFrame (3 columns, 20 rows)
                    shape: (20, 3)
                    text_idpage_idfilepath
                    i64i64str
                    01"aeye-lab-pymovements-toy-datas…
                    02"aeye-lab-pymovements-toy-datas…
                    03"aeye-lab-pymovements-toy-datas…
                    04"aeye-lab-pymovements-toy-datas…
                    05"aeye-lab-pymovements-toy-datas…
                    31"aeye-lab-pymovements-toy-datas…
                    32"aeye-lab-pymovements-toy-datas…
                    33"aeye-lab-pymovements-toy-datas…
                    34"aeye-lab-pymovements-toy-datas…
                    35"aeye-lab-pymovements-toy-datas…
                • list (20 items)
                  • Gaze
                    • DataFrame (8 columns, 17223 rows)
                      shape: (17_223, 8)
                      timestimuli_xstimuli_ytext_idpage_idpixelpositionvelocity
                      i64f64f64i64i64list[f64]list[f64]list[f64]
                      1988145-1.0-1.001[206.8, 152.4][-10.697598, -8.852399][null, null]
                      1988146-1.0-1.001[206.9, 152.1][-10.695183, -8.859678][null, null]
                      1988147-1.0-1.001[207.0, 151.8][-10.692768, -8.866956][1.610194, -5.256267]
                      1988148-1.0-1.001[207.1, 151.7][-10.690352, -8.869381][0.402548, -4.447465]
                      1988149-1.0-1.001[207.0, 151.5][-10.692768, -8.874233][0.402561, -3.234462]
                      2005363-1.0-1.001[361.0, 415.4][-6.932438, -2.386672][-63.266374, -21.085616]
                      2005364-1.0-1.001[358.0, 414.5][-7.006376, -2.408998][-63.249652, -19.431326]
                      2005365-1.0-1.001[355.8, 413.8][-7.060582, -2.426362][-60.359624, -15.710061]
                      2005366-1.0-1.001[353.1, 413.2][-7.12709, -2.441245][null, null]
                      2005367-1.0-1.001[351.2, 412.9][-7.173881, -2.448686][null, null]
                    • Events
                      Events
                      • DataFrame (6 columns, 215 rows)
                        shape: (215, 6)
                        text_idpage_idnameonsetoffsetduration
                        i64i64stri64i64i64
                        01"fixation"19881471988322175
                        01"fixation"19883511988546195
                        01"fixation"19885921988736144
                        01"fixation"19887881989013225
                        01"fixation"19890601989170110
                        01"saccade"2005110200512616
                        01"saccade"2005128200513810
                        01"saccade"2005288200534557
                        01"saccade"200534720053569
                        01"saccade"200535920053656
                      • list (2 items)
                        • 'text_id'
                        • 'page_id'
                    • list (2 items)
                      • 'text_id'
                      • 'page_id'
                    • Experiment
                      Experiment
                      • EyeTracker
                        EyeTracker
                        • None
                          None
                        • None
                          None
                        • None
                          None
                        • None
                          None
                        • 1000
                          1000
                        • None
                          None
                        • None
                          None
                      • 1000
                        1000
                      • Screen
                        Screen
                        • 68
                          68
                        • 30.2
                          30.2
                        • 1024
                          1024
                        • 'upper left'
                          'upper left'
                        • 38
                          38
                        • 1280
                          1280
                        • 15.599386487782953
                          15.599386487782953
                        • -15.599386487782953
                          -15.599386487782953
                        • 12.508044410882546
                          12.508044410882546
                        • -12.508044410882546
                          -12.508044410882546
                  • Gaze
                    • DataFrame (8 columns, 29799 rows)
                      shape: (29_799, 8)
                      timestimuli_xstimuli_ytext_idpage_idpixelpositionvelocity
                      i64f64f64i64i64list[f64]list[f64]list[f64]
                      2008305-1.0-1.002[141.4, 153.6][-12.268583, -8.823284][null, null]
                      2008306-1.0-1.002[141.1, 153.2][-12.275749, -8.832989][null, null]
                      2008307-1.0-1.002[140.7, 152.8][-12.285302, -8.842695][-5.572617, -6.065816]
                      2008308-1.0-1.002[140.6, 152.7][-12.28769, -8.845121][-3.582268, -4.043733]
                      2008309-1.0-1.002[140.5, 152.6][-12.290078, -8.847547][-2.388085, -2.021821]
                      2038099-1.0-1.002[273.8, 773.8][-9.071149, 6.490168][1.21962, 1.635403]
                      2038100-1.0-1.002[273.8, 774.1][-9.071149, 6.497527][1.626175, 4.497406]
                      2038101-1.0-1.002[273.9, 774.5][-9.06871, 6.50734][1.626186, 1.635423]
                      2038102-1.0-1.002[274.0, 774.4][-9.066271, 6.504886][null, null]
                      2038103-1.0-1.002[274.0, 773.9][-9.066271, 6.492621][null, null]
                    • Events
                      Events
                      • DataFrame (6 columns, 352 rows)
                        shape: (352, 6)
                        text_idpage_idnameonsetoffsetduration
                        i64i64stri64i64i64
                        02"fixation"20083072008474167
                        02"fixation"20084982008603105
                        02"fixation"20086282008806178
                        02"fixation"20088622009051189
                        02"fixation"20090642009201137
                        02"saccade"2037638203765416
                        02"saccade"2037656203766610
                        02"saccade"2037812203783018
                        02"saccade"203783220378397
                        02"saccade"203784520378516
                      • list (2 items)
                        • 'text_id'
                        • 'page_id'
                    • list (2 items)
                      • 'text_id'
                      • 'page_id'
                    • Experiment
                      Experiment
                      • EyeTracker
                        EyeTracker
                        • None
                          None
                        • None
                          None
                        • None
                          None
                        • None
                          None
                        • 1000
                          1000
                        • None
                          None
                        • None
                          None
                      • 1000
                        1000
                      • Screen
                        Screen
                        • 68
                          68
                        • 30.2
                          30.2
                        • 1024
                          1024
                        • 'upper left'
                          'upper left'
                        • 38
                          38
                        • 1280
                          1280
                        • 15.599386487782953
                          15.599386487782953
                        • -15.599386487782953
                          -15.599386487782953
                        • 12.508044410882546
                          12.508044410882546
                        • -12.508044410882546
                          -12.508044410882546
                  • (18 more)
                • PosixPath('data/ToyDataset')
                  PosixPath('data/ToyDataset')
                • DatasetPaths
                  DatasetPaths
                  • 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')
                  • PosixPath
                    PosixPath('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 of the event data is saved into this directory:

                    [7]:
                    
                    dataset.paths.events
                    
                    [7]:
                    
                    PosixPath('data/ToyDataset/events')
                    

                    Let’s confirm it by printing all the new files in this directory:

                    [8]:
                    
                    print(list(dataset.paths.events.glob('*/*/*')))
                    
                    [PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_0_1.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_1_2.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_0_2.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_3_5.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_1_4.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_0_4.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_3_4.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_2_3.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_2_2.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_3_1.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_1_5.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_3_3.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_2_4.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_3_2.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_2_5.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_1_3.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_0_3.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_1_1.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_0_5.feather'), PosixPath('data/ToyDataset/events/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_2_1.feather')]
                    

                    All of the files have been saved into the Dataset.paths.events as feather files.

                    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:

                    [9]:
                    
                    dataset.save_events(events_dirname='events_csv', extension='csv')
                    
                    100%|██████████| 20/20 [00:00<00:00, 2171.75it/s]
                    
                    [9]:
                    
                    Dataset
                    • DatasetDefinition
                      DatasetDefinition
                      • None
                        None
                      • dict (0 items)
                        • dict (1 items)
                          • dict (4 items)
                            • list (5 items)
                              • 'timestamp'
                              • 'x'
                              • (3 more)
                            • dict (5 items)
                              • Float64
                                Float64
                              • Float64
                                Float64
                              • (3 more)
                            • (2 more)
                        • None
                          None
                        • Experiment
                          Experiment
                          • EyeTracker
                            EyeTracker
                            • None
                              None
                            • None
                              None
                            • None
                              None
                            • None
                              None
                            • 1000
                              1000
                            • None
                              None
                            • None
                              None
                          • 1000
                            1000
                          • Screen
                            Screen
                            • 68
                              68
                            • 30.2
                              30.2
                            • 1024
                              1024
                            • 'upper left'
                              'upper left'
                            • 38
                              38
                            • 1280
                              1280
                            • 15.599386487782953
                              15.599386487782953
                            • -15.599386487782953
                              -15.599386487782953
                            • 12.508044410882546
                              12.508044410882546
                            • -12.508044410882546
                              -12.508044410882546
                        • None
                          None
                        • 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'>
                        • True
                          True
                        • 'pymovements Toy Dataset'
                          'pymovements Toy Dataset'
                        • dict (0 items)
                          • 'ToyDataset'
                            'ToyDataset'
                          • list (2 items)
                            • 'x'
                            • 'y'
                          • None
                            None
                          • list (1 items)
                            • ResourceDefinition(content='gaze', filename='pymovements-toy-dataset.zip', url='http://github.com/aeye-lab/pymovements-toy-dataset/zipball/6cb5d663317bf418cec0c9abe1dde5085a8a8ebd/', md5='4da622457637a8181d86601fe17f3aa8', filename_pattern='trial_{text_id:d}_{page_id:d}.csv', filename_pattern_schema_overrides={'text_id': <class 'int'>, 'page_id': <class 'int'>})
                          • 'timestamp'
                            'timestamp'
                          • 'ms'
                            'ms'
                          • None
                            None
                          • None
                            None
                        • list (20 items)
                          • Events
                            • DataFrame (6 columns, 215 rows)
                              shape: (215, 6)
                              text_idpage_idnameonsetoffsetduration
                              i64i64stri64i64i64
                              01"fixation"19881471988322175
                              01"fixation"19883511988546195
                              01"fixation"19885921988736144
                              01"fixation"19887881989013225
                              01"fixation"19890601989170110
                              01"saccade"2005110200512616
                              01"saccade"2005128200513810
                              01"saccade"2005288200534557
                              01"saccade"200534720053569
                              01"saccade"200535920053656
                            • list (2 items)
                              • 'text_id'
                              • 'page_id'
                          • Events
                            • DataFrame (6 columns, 352 rows)
                              shape: (352, 6)
                              text_idpage_idnameonsetoffsetduration
                              i64i64stri64i64i64
                              02"fixation"20083072008474167
                              02"fixation"20084982008603105
                              02"fixation"20086282008806178
                              02"fixation"20088622009051189
                              02"fixation"20090642009201137
                              02"saccade"2037638203765416
                              02"saccade"2037656203766610
                              02"saccade"2037812203783018
                              02"saccade"203783220378397
                              02"saccade"203784520378516
                            • list (2 items)
                              • 'text_id'
                              • 'page_id'
                          • (18 more)
                        • dict (1 items)
                          • DataFrame (3 columns, 20 rows)
                            shape: (20, 3)
                            text_idpage_idfilepath
                            i64i64str
                            01"aeye-lab-pymovements-toy-datas…
                            02"aeye-lab-pymovements-toy-datas…
                            03"aeye-lab-pymovements-toy-datas…
                            04"aeye-lab-pymovements-toy-datas…
                            05"aeye-lab-pymovements-toy-datas…
                            31"aeye-lab-pymovements-toy-datas…
                            32"aeye-lab-pymovements-toy-datas…
                            33"aeye-lab-pymovements-toy-datas…
                            34"aeye-lab-pymovements-toy-datas…
                            35"aeye-lab-pymovements-toy-datas…
                        • list (20 items)
                          • Gaze
                            • DataFrame (8 columns, 17223 rows)
                              shape: (17_223, 8)
                              timestimuli_xstimuli_ytext_idpage_idpixelpositionvelocity
                              i64f64f64i64i64list[f64]list[f64]list[f64]
                              1988145-1.0-1.001[206.8, 152.4][-10.697598, -8.852399][null, null]
                              1988146-1.0-1.001[206.9, 152.1][-10.695183, -8.859678][null, null]
                              1988147-1.0-1.001[207.0, 151.8][-10.692768, -8.866956][1.610194, -5.256267]
                              1988148-1.0-1.001[207.1, 151.7][-10.690352, -8.869381][0.402548, -4.447465]
                              1988149-1.0-1.001[207.0, 151.5][-10.692768, -8.874233][0.402561, -3.234462]
                              2005363-1.0-1.001[361.0, 415.4][-6.932438, -2.386672][-63.266374, -21.085616]
                              2005364-1.0-1.001[358.0, 414.5][-7.006376, -2.408998][-63.249652, -19.431326]
                              2005365-1.0-1.001[355.8, 413.8][-7.060582, -2.426362][-60.359624, -15.710061]
                              2005366-1.0-1.001[353.1, 413.2][-7.12709, -2.441245][null, null]
                              2005367-1.0-1.001[351.2, 412.9][-7.173881, -2.448686][null, null]
                            • Events
                              Events
                              • DataFrame (6 columns, 215 rows)
                                shape: (215, 6)
                                text_idpage_idnameonsetoffsetduration
                                i64i64stri64i64i64
                                01"fixation"19881471988322175
                                01"fixation"19883511988546195
                                01"fixation"19885921988736144
                                01"fixation"19887881989013225
                                01"fixation"19890601989170110
                                01"saccade"2005110200512616
                                01"saccade"2005128200513810
                                01"saccade"2005288200534557
                                01"saccade"200534720053569
                                01"saccade"200535920053656
                              • list (2 items)
                                • 'text_id'
                                • 'page_id'
                            • list (2 items)
                              • 'text_id'
                              • 'page_id'
                            • Experiment
                              Experiment
                              • EyeTracker
                                EyeTracker
                                • None
                                  None
                                • None
                                  None
                                • None
                                  None
                                • None
                                  None
                                • 1000
                                  1000
                                • None
                                  None
                                • None
                                  None
                              • 1000
                                1000
                              • Screen
                                Screen
                                • 68
                                  68
                                • 30.2
                                  30.2
                                • 1024
                                  1024
                                • 'upper left'
                                  'upper left'
                                • 38
                                  38
                                • 1280
                                  1280
                                • 15.599386487782953
                                  15.599386487782953
                                • -15.599386487782953
                                  -15.599386487782953
                                • 12.508044410882546
                                  12.508044410882546
                                • -12.508044410882546
                                  -12.508044410882546
                          • Gaze
                            • DataFrame (8 columns, 29799 rows)
                              shape: (29_799, 8)
                              timestimuli_xstimuli_ytext_idpage_idpixelpositionvelocity
                              i64f64f64i64i64list[f64]list[f64]list[f64]
                              2008305-1.0-1.002[141.4, 153.6][-12.268583, -8.823284][null, null]
                              2008306-1.0-1.002[141.1, 153.2][-12.275749, -8.832989][null, null]
                              2008307-1.0-1.002[140.7, 152.8][-12.285302, -8.842695][-5.572617, -6.065816]
                              2008308-1.0-1.002[140.6, 152.7][-12.28769, -8.845121][-3.582268, -4.043733]
                              2008309-1.0-1.002[140.5, 152.6][-12.290078, -8.847547][-2.388085, -2.021821]
                              2038099-1.0-1.002[273.8, 773.8][-9.071149, 6.490168][1.21962, 1.635403]
                              2038100-1.0-1.002[273.8, 774.1][-9.071149, 6.497527][1.626175, 4.497406]
                              2038101-1.0-1.002[273.9, 774.5][-9.06871, 6.50734][1.626186, 1.635423]
                              2038102-1.0-1.002[274.0, 774.4][-9.066271, 6.504886][null, null]
                              2038103-1.0-1.002[274.0, 773.9][-9.066271, 6.492621][null, null]
                            • Events
                              Events
                              • DataFrame (6 columns, 352 rows)
                                shape: (352, 6)
                                text_idpage_idnameonsetoffsetduration
                                i64i64stri64i64i64
                                02"fixation"20083072008474167
                                02"fixation"20084982008603105
                                02"fixation"20086282008806178
                                02"fixation"20088622009051189
                                02"fixation"20090642009201137
                                02"saccade"2037638203765416
                                02"saccade"2037656203766610
                                02"saccade"2037812203783018
                                02"saccade"203783220378397
                                02"saccade"203784520378516
                              • list (2 items)
                                • 'text_id'
                                • 'page_id'
                            • list (2 items)
                              • 'text_id'
                              • 'page_id'
                            • Experiment
                              Experiment
                              • EyeTracker
                                EyeTracker
                                • None
                                  None
                                • None
                                  None
                                • None
                                  None
                                • None
                                  None
                                • 1000
                                  1000
                                • None
                                  None
                                • None
                                  None
                              • 1000
                                1000
                              • Screen
                                Screen
                                • 68
                                  68
                                • 30.2
                                  30.2
                                • 1024
                                  1024
                                • 'upper left'
                                  'upper left'
                                • 38
                                  38
                                • 1280
                                  1280
                                • 15.599386487782953
                                  15.599386487782953
                                • -15.599386487782953
                                  -15.599386487782953
                                • 12.508044410882546
                                  12.508044410882546
                                • -12.508044410882546
                                  -12.508044410882546
                          • (18 more)
                        • PosixPath('data/ToyDataset')
                          PosixPath('data/ToyDataset')
                        • DatasetPaths
                          DatasetPaths
                          • 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')
                          • PosixPath
                            PosixPath('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:

                            [10]:
                            
                            alternative_dirpath = dataset.path / 'events_csv'
                            print(list(alternative_dirpath.glob('*/*/*')))
                            
                            [PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_2_2.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_2_5.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_3_1.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_2_1.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_1_1.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_3_3.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_3_2.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_3_4.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_1_3.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_2_3.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_0_5.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_0_2.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_1_4.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_2_4.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_0_3.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_1_5.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_1_2.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_0_4.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_0_1.csv'), PosixPath('data/ToyDataset/events_csv/aeye-lab-pymovements-toy-dataset-6cb5d66/data/trial_3_5.csv')]
                            

                            Loading#

                            Now let’s imagine that this preprocessing and saving was done in another file and we only want to load the preprocessed data.

                            We simulate this by initializing a new dataset object. We don’t need to download any additional data.

                            [11]:
                            
                            preprocessed_dataset = pm.Dataset('ToyDataset', path='data/ToyDataset')
                            

                            The preprocessed data can now simply be loaded by setting preprocessed to True:

                            [12]:
                            
                            preprocessed_dataset.load(events=True)
                            
                            dataset.events[0]
                            
                            100%|██████████| 20/20 [00:00<00:00, 64.03it/s]
                            100%|██████████| 20/20 [00:00<00:00, 1042.48it/s]
                            
                            [12]:
                            
                            Events
                            • DataFrame (6 columns, 215 rows)
                              shape: (215, 6)
                              text_idpage_idnameonsetoffsetduration
                              i64i64stri64i64i64
                              01"fixation"19881471988322175
                              01"fixation"19883511988546195
                              01"fixation"19885921988736144
                              01"fixation"19887881989013225
                              01"fixation"19890601989170110
                              01"saccade"2005110200512616
                              01"saccade"2005128200513810
                              01"saccade"2005288200534557
                              01"saccade"200534720053569
                              01"saccade"200535920053656
                            • list (2 items)
                              • 'text_id'
                              • 'page_id'

                            By default, the events directory and the feather extension will be chosen.

                            In case of alternative directory names or other file formats you can use the following:

                            [13]:
                            
                            preprocessed_dataset.load(
                                events=True,
                                events_dirname='events_csv',
                                extension='csv',
                            )
                            dataset.events[0]
                            
                            100%|██████████| 20/20 [00:00<00:00, 60.96it/s]
                            100%|██████████| 20/20 [00:00<00:00, 913.61it/s]
                            
                            [13]:
                            
                            Events
                            • DataFrame (6 columns, 215 rows)
                              shape: (215, 6)
                              text_idpage_idnameonsetoffsetduration
                              i64i64stri64i64i64
                              01"fixation"19881471988322175
                              01"fixation"19883511988546195
                              01"fixation"19885921988736144
                              01"fixation"19887881989013225
                              01"fixation"19890601989170110
                              01"saccade"2005110200512616
                              01"saccade"2005128200513810
                              01"saccade"2005288200534557
                              01"saccade"200534720053569
                              01"saccade"200535920053656
                            • list (2 items)
                              • 'text_id'
                              • 'page_id'

                            What you have learned in this tutorial:#

                            • saving your preprocesed data using Dataset.save_preprocessed()

                            • load your preprocesed data using Dataset.load(preprocessed=True)

                            • using custom directory names by specifying preprocessed_dirname

                            • using other file formats than the default feather format by specifying extension