diff options
author | Théo de la Hogue | 2022-04-20 20:40:50 +0200 |
---|---|---|
committer | Théo de la Hogue | 2022-04-20 20:40:50 +0200 |
commit | 2e0f8f4200da7bba4667e4bc098a3c5d964ae40e (patch) | |
tree | bdf5dac9208af0c47a0926071d334e569b94d939 /src/argaze/GazeFeatures.py | |
parent | 2ebe773a5137048b013ee43e4ad4651e69ddc9bd (diff) | |
download | argaze-2e0f8f4200da7bba4667e4bc098a3c5d964ae40e.zip argaze-2e0f8f4200da7bba4667e4bc098a3c5d964ae40e.tar.gz argaze-2e0f8f4200da7bba4667e4bc098a3c5d964ae40e.tar.bz2 argaze-2e0f8f4200da7bba4667e4bc098a3c5d964ae40e.tar.xz |
Using @dataclass decoration to define base library data structures
Diffstat (limited to 'src/argaze/GazeFeatures.py')
-rw-r--r-- | src/argaze/GazeFeatures.py | 34 |
1 files changed, 15 insertions, 19 deletions
diff --git a/src/argaze/GazeFeatures.py b/src/argaze/GazeFeatures.py index dfbfc2d..a382ddc 100644 --- a/src/argaze/GazeFeatures.py +++ b/src/argaze/GazeFeatures.py @@ -1,5 +1,6 @@ #!/usr/bin/env python +from dataclasses import dataclass import math from argaze import DataStructures @@ -9,16 +10,12 @@ import numpy FIXATION_MAX_DURATION = 1000 +@dataclass class GazePosition(DataStructures.DictObject): """Define gaze position.""" - def __init__(self, x, y): - - super().__init__(type(self).__name__, **{'x': x, 'y': y}) - - def __iter__(self): - yield self.x - yield self.y + x: float + y: float class TimeStampedGazePositions(DataStructures.TimeStampedBuffer): """Define timestamped buffer to store gaze positions.""" @@ -30,12 +27,13 @@ class TimeStampedGazePositions(DataStructures.TimeStampedBuffer): super().__setitem__(key, value) +@dataclass class Fixation(DataStructures.DictObject): """Define fixation""" - def __init__(self, duration, dispersion, cx, cy): - - super().__init__(type(self).__name__, **{'duration': duration, 'dispersion': dispersion, 'centroid': [cx, cy]}) + duration: float + dispersion: float + centroid: tuple((float, float)) class TimeStampedFixations(DataStructures.TimeStampedBuffer): """Define timestamped buffer to store fixations.""" @@ -177,7 +175,7 @@ class DispersionBasedFixationIdentifier(FixationIdentifier): if duration > 0: # return timestamp and fixation - return ts_list[0], Fixation(duration, dispersion, cx, cy) + return ts_list[0], Fixation(duration, dispersion, (cx, cy)) return -1, None @@ -193,12 +191,13 @@ class DispersionBasedFixationIdentifier(FixationIdentifier): return -1, None +@dataclass class VisualScanStep(DataStructures.DictObject): """Define a visual scan step as a duration, the name of the area of interest and all its frames during the step.""" - def __init__(self, duration, aoi, frames = []): - - super().__init__(type(self).__name__, **{'duration': duration, 'aoi': aoi, 'frames': frames}) + duration: float + aoi: str + frames: DataStructures.TimeStampedBuffer class TimeStampedVisualScanSteps(DataStructures.TimeStampedBuffer): """Define timestamped buffer to store visual scan steps.""" @@ -230,9 +229,7 @@ class VisualScanGenerator(): if step == None: continue - if step.get_type() == 'VisualScanStep': - - visual_scan_steps[ts] = step + visual_scan_steps[ts] = step return visual_scan_steps @@ -260,9 +257,8 @@ class PointerBasedVisualScan(VisualScanGenerator): #if not aoi_scene_current.looked: # raise ValueError('TimeStampedAOIScenes must be looked using look_at method.') - for name in aoi_scene_current.areas(): + for name, aoi in aoi_scene_current.areas.items(): - aoi = aoi_scene_current[name] aoi_looked = aoi.pointer != None if aoi_looked: |