Skip to content

timeseries

AudioTimeseries

AudioTimeseries(recording: NeonRecording, data: ArrayType | None = None)

Bases: BaseAVTimeseries

Audio frames

Source code in src/pupil_labs/neon_recording/timeseries/timeseries.py
50
51
52
53
54
def __init__(self, recording: "NeonRecording", data: ArrayType | None = None):
    self.recording = recording
    if data is None:
        data = self._load_data_from_recording(recording)
    self._data = data

data property

data

Data as a numpy array

pd property

pd

Data as a pandas DataFrame

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

BlinkTimeseries

BlinkTimeseries(recording: NeonRecording, data: ArrayType | None = None)

Bases: Timeseries[BlinkArray, BlinkRecord], BlinkProps

Blink event data.

Source code in src/pupil_labs/neon_recording/timeseries/timeseries.py
50
51
52
53
54
def __init__(self, recording: "NeonRecording", data: ArrayType | None = None):
    self.recording = recording
    if data is None:
        data = self._load_data_from_recording(recording)
    self._data = data

data property

data

Data as a numpy array

pd property

pd

Data as a pandas DataFrame

start_time class-attribute instance-attribute

start_time = fields[int64]('start_time')

Start timestamp of the blink.

stop_time class-attribute instance-attribute

stop_time = fields[int64]('stop_time')

Stop timestamp of the blink.

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

EventTimeseries

EventTimeseries(recording: NeonRecording, data: ArrayType | None = None)

Bases: Timeseries[EventArray, EventRecord], EventProps

Event annotations

Source code in src/pupil_labs/neon_recording/timeseries/timeseries.py
50
51
52
53
54
def __init__(self, recording: "NeonRecording", data: ArrayType | None = None):
    self.recording = recording
    if data is None:
        data = self._load_data_from_recording(recording)
    self._data = data

by_name cached property

by_name

Return a dict of event_name => all ts

data property

data

Data as a numpy array

event class-attribute instance-attribute

event: NDArray[str_] = fields[str_]('event')

Event name

pd property

pd

Data as a pandas DataFrame

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

EyeVideoTimeseries

EyeVideoTimeseries(recording: NeonRecording, data: ArrayType | None = None)

Bases: VideoTimeseries

Frames of video from the eye cameras

Source code in src/pupil_labs/neon_recording/timeseries/timeseries.py
50
51
52
53
54
def __init__(self, recording: "NeonRecording", data: ArrayType | None = None):
    self.recording = recording
    if data is None:
        data = self._load_data_from_recording(recording)
    self._data = data

data property

data

Data as a numpy array

height cached property

height: int | None

Height of the video

pd property

pd

Data as a pandas DataFrame

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

width cached property

width: int | None

Width of the video

EyeballTimeseries

EyeballTimeseries(recording: NeonRecording, data: ArrayType | None = None)

Bases: InterpolatableTimeseries[EyeballArray, EyeballRecord], EyeballProps

Eyeball data describing the 3D pose of the eyeballs.

Source code in src/pupil_labs/neon_recording/timeseries/timeseries.py
50
51
52
53
54
def __init__(self, recording: "NeonRecording", data: ArrayType | None = None):
    self.recording = recording
    if data is None:
        data = self._load_data_from_recording(recording)
    self._data = data

center_left class-attribute instance-attribute

center_left = fields[float64](['center_left_x', 'center_left_y', 'center_left_z'])

The 3D position of the left eyeball relative to the scene camera in mm.

center_right class-attribute instance-attribute

center_right = fields[float64](['center_right_x', 'center_right_y', 'center_right_z'])

The 3D position of the right eyeball relative to the scene camera in mm.

data property

data

Data as a numpy array

optical_axis_left class-attribute instance-attribute

optical_axis_left = fields[float64](['optical_axis_left_x', 'optical_axis_left_y', 'optical_axis_left_z'])

A 3D vector in the forward direction of the left eye's optical axis.

optical_axis_right class-attribute instance-attribute

optical_axis_right = fields[float64](['optical_axis_right_x', 'optical_axis_right_y', 'optical_axis_right_z'])

A 3D vector in the forward direction of the right eye's optical axis.

pd property

pd

Data as a pandas DataFrame

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

EyelidTimeseries

EyelidTimeseries(recording: NeonRecording, data: ArrayType | None = None)

Bases: InterpolatableTimeseries[EyelidArray, EyelidRecord], EyelidProps

Eyelid data describing the opening angles and apertures of each eyelid.

Source code in src/pupil_labs/neon_recording/timeseries/timeseries.py
50
51
52
53
54
def __init__(self, recording: "NeonRecording", data: ArrayType | None = None):
    self.recording = recording
    if data is None:
        data = self._load_data_from_recording(recording)
    self._data = data

angle_left class-attribute instance-attribute

angle_left = fields[float64](['angle_upper_left', 'angle_lower_left'])

Opening angles of the upper and lower eyelids of the left eye.

angle_right class-attribute instance-attribute

angle_right = fields[float64](['angle_upper_right', 'angle_lower_right'])

Opening angles of the upper and lower eyelids of the right eye.

aperture_left class-attribute instance-attribute

aperture_left = fields[float64](['aperture_left'])

Eyelid aperture of the left eye in mm.

aperture_right class-attribute instance-attribute

aperture_right = fields[float64](['aperture_right'])

Eyelid aperture of the right eye in mm.

data property

data

Data as a numpy array

pd property

pd

Data as a pandas DataFrame

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

FixationTimeseries

FixationTimeseries(recording: NeonRecording, data: ArrayType | None = None)

Bases: Timeseries[FixationArray, FixationRecord], FixationProps

Fixation event data.

Source code in src/pupil_labs/neon_recording/timeseries/timeseries.py
50
51
52
53
54
def __init__(self, recording: "NeonRecording", data: ArrayType | None = None):
    self.recording = recording
    if data is None:
        data = self._load_data_from_recording(recording)
    self._data = data

data property

data

Data as a numpy array

mean_gaze_point class-attribute instance-attribute

mean_gaze_point = fields[float32](['mean_gaze_x', 'mean_gaze_y'])

Mean gaze position in pixels. Note that this value may be a poor representation of the fixation in the presence of VOR movements.

pd property

pd

Data as a pandas DataFrame

start_gaze_point class-attribute instance-attribute

start_gaze_point = fields[float32](['start_gaze_x', 'start_gaze_y'])

Start gaze position in pixels.

start_time class-attribute instance-attribute

start_time = fields[int64]('start_time')

Start timestamp of fixation.

stop_gaze_point class-attribute instance-attribute

stop_gaze_point = fields[float32](['stop_gaze_x', 'stop_gaze_y'])

Stop gaze position in pixels.

stop_time class-attribute instance-attribute

stop_time = fields[int64]('stop_time')

Stop timestamp of fixation.

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

GazeLeftTimeseries

GazeLeftTimeseries(*args, **kwargs)

Bases: GazeTimeseries

2D gaze data from the left eye in scene-camera space

Source code in src/pupil_labs/neon_recording/timeseries/gaze.py
83
84
85
def __init__(self, *args, **kwargs):
    self.eye_suffix = "_left"
    super().__init__(*args, **kwargs)

data property

data

Data as a numpy array

pd property

pd

Data as a pandas DataFrame

point class-attribute instance-attribute

point = fields[float64](['point_x', 'point_y'])

2D gaze coordinates in the scene video in pixels.

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

GazeRightTimeseries

GazeRightTimeseries(*args, **kwargs)

Bases: GazeTimeseries

2D gaze data from the right eye in scene-camera space

Source code in src/pupil_labs/neon_recording/timeseries/gaze.py
91
92
93
def __init__(self, *args, **kwargs):
    self.eye_suffix = "_right"
    super().__init__(*args, **kwargs)

data property

data

Data as a numpy array

pd property

pd

Data as a pandas DataFrame

point class-attribute instance-attribute

point = fields[float64](['point_x', 'point_y'])

2D gaze coordinates in the scene video in pixels.

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

GazeTimeseries

GazeTimeseries(recording: NeonRecording, data: ArrayType | None = None)

Bases: InterpolatableTimeseries[GazeArray, GazeRecord], GazeProps

2D binocular gaze data in scene-camera space

Source code in src/pupil_labs/neon_recording/timeseries/timeseries.py
50
51
52
53
54
def __init__(self, recording: "NeonRecording", data: ArrayType | None = None):
    self.recording = recording
    if data is None:
        data = self._load_data_from_recording(recording)
    self._data = data

data property

data

Data as a numpy array

pd property

pd

Data as a pandas DataFrame

point class-attribute instance-attribute

point = fields[float64](['point_x', 'point_y'])

2D gaze coordinates in the scene video in pixels.

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

IMUTimeseries

IMUTimeseries(recording: NeonRecording, data: ArrayType | None = None)

Bases: Timeseries[ImuArray, ImuRecord], ImuProps

Motion and orientation data

Source code in src/pupil_labs/neon_recording/timeseries/timeseries.py
50
51
52
53
54
def __init__(self, recording: "NeonRecording", data: ArrayType | None = None):
    self.recording = recording
    if data is None:
        data = self._load_data_from_recording(recording)
    self._data = data

acceleration class-attribute instance-attribute

acceleration = fields[float64](['acceleration_x', 'acceleration_y', 'acceleration_z'])

Translational acceleration data.

angular_velocity class-attribute instance-attribute

angular_velocity = fields[float64](['angular_velocity_x', 'angular_velocity_y', 'angular_velocity_z'])

Angular velocity data.

data property

data

Data as a numpy array

pd property

pd

Data as a pandas DataFrame

rotation class-attribute instance-attribute

rotation = fields[float64](['quaternion_x', 'quaternion_y', 'quaternion_z', 'quaternion_w'])

Rotation as a quaternion given as xyzw.

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

PupilTimeseries

PupilTimeseries(recording: NeonRecording, data: ArrayType | None = None)

Bases: InterpolatableTimeseries[PupilArray, PupilRecord], PupilProps

Pupil data

Source code in src/pupil_labs/neon_recording/timeseries/timeseries.py
50
51
52
53
54
def __init__(self, recording: "NeonRecording", data: ArrayType | None = None):
    self.recording = recording
    if data is None:
        data = self._load_data_from_recording(recording)
    self._data = data

data property

data

Data as a numpy array

diameter_left class-attribute instance-attribute

diameter_left = fields[float64](['diameter_left'])

Pupil diameter of the left eye in mm.

diameter_right class-attribute instance-attribute

diameter_right = fields[float64](['diameter_right'])

Pupil diameter of the right eye in mm.

pd property

pd

Data as a pandas DataFrame

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

SaccadeTimeseries

SaccadeTimeseries(recording: NeonRecording, data: ArrayType | None = None)

Bases: Timeseries[SaccadeArray, SaccadeRecord], SaccadeProps

Saccade event data

Source code in src/pupil_labs/neon_recording/timeseries/timeseries.py
50
51
52
53
54
def __init__(self, recording: "NeonRecording", data: ArrayType | None = None):
    self.recording = recording
    if data is None:
        data = self._load_data_from_recording(recording)
    self._data = data

amplitude class-attribute instance-attribute

amplitude = fields[float32]('amplitude_angle')

Amplitude angle (degrees)

data property

data

Data as a numpy array

max_velocity class-attribute instance-attribute

max_velocity = fields[float32]('max_velocity')

Max velocity of Saccade (pixels/sec)

mean_gaze class-attribute instance-attribute

mean_gaze = fields[float32](['mean_gaze_x', 'mean_gaze_y'])

Mean gaze position in pixels

mean_velocity class-attribute instance-attribute

mean_velocity = fields[float32]('mean_velocity')

Mean velocity of Saccade (pixels/sec)

pd property

pd

Data as a pandas DataFrame

start_gaze class-attribute instance-attribute

start_gaze = fields[float32](['start_gaze_x', 'start_gaze_y'])

Start gaze position in pixels

start_time class-attribute instance-attribute

start_time = fields[int64]('start_time')

Start timestamp of Saccade

stop_gaze class-attribute instance-attribute

stop_gaze = fields[float32](['stop_gaze_x', 'stop_gaze_y'])

Stop gaze position in pixels

stop_time class-attribute instance-attribute

stop_time = fields[int64]('stop_time')

Stop timestamp of Saccade

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

SceneVideoTimeseries

SceneVideoTimeseries(recording: NeonRecording, data: ArrayType | None = None)

Bases: VideoTimeseries

Frames of video from the scene camera

Source code in src/pupil_labs/neon_recording/timeseries/timeseries.py
50
51
52
53
54
def __init__(self, recording: "NeonRecording", data: ArrayType | None = None):
    self.recording = recording
    if data is None:
        data = self._load_data_from_recording(recording)
    self._data = data

data property

data

Data as a numpy array

height cached property

height: int | None

Height of the video

pd property

pd

Data as a pandas DataFrame

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

width cached property

width: int | None

Width of the video

WornTimeseries

WornTimeseries(recording: NeonRecording, data: ArrayType | None = None)

Bases: Timeseries[WornArray, WornRecord], WornProps

Worn (headset on/off) data

Source code in src/pupil_labs/neon_recording/timeseries/timeseries.py
50
51
52
53
54
def __init__(self, recording: "NeonRecording", data: ArrayType | None = None):
    self.recording = recording
    if data is None:
        data = self._load_data_from_recording(recording)
    self._data = data

data property

data

Data as a numpy array

pd property

pd

Data as a pandas DataFrame

time class-attribute instance-attribute

time = fields[int64](TIMESTAMP_FIELD_NAME)

The moment these data were recorded

worn class-attribute instance-attribute

worn = fields[float64]('worn')

Boolean value indicating whether the headset is worn (1) or not (0).