diff options
Diffstat (limited to 'src/argaze/GazeFeatures.py')
-rw-r--r-- | src/argaze/GazeFeatures.py | 41 |
1 files changed, 11 insertions, 30 deletions
diff --git a/src/argaze/GazeFeatures.py b/src/argaze/GazeFeatures.py index 32b7de7..5ef3c32 100644 --- a/src/argaze/GazeFeatures.py +++ b/src/argaze/GazeFeatures.py @@ -28,8 +28,8 @@ import pandas from argaze import DataFeatures from argaze.AreaOfInterest import AOIFeatures - -class GazePosition(tuple, DataFeatures.TimestampedObject): +@DataFeatures.timestamp +class GazePosition(tuple): """Define gaze position as a tuple of coordinates with precision. Parameters: @@ -37,15 +37,12 @@ class GazePosition(tuple, DataFeatures.TimestampedObject): message: a string to describe why the position is what it is. """ - def __new__(cls, position: tuple = (), precision: int | float = None, message: str = None, - timestamp: int | float = math.nan): + def __new__(cls, position: tuple = (), **kwargs): return tuple.__new__(cls, position) - def __init__(self, position: tuple = (), precision: int | float = None, message: str = None, - timestamp: int | float = math.nan): + def __init__(self, position: tuple = (), precision: int | float = None, message: str = None): - DataFeatures.TimestampedObject.__init__(self, timestamp) self.__precision = precision self.__message = message @@ -392,8 +389,8 @@ class GazePositionCalibrator(DataFeatures.PipelineStepObject): raise NotImplementedError('ready getter not implemented') - -class GazeMovement(TimeStampedGazePositions, DataFeatures.TimestampedObject): +@DataFeatures.timestamp +class GazeMovement(TimeStampedGazePositions): """Define abstract gaze movement class as timestamped gaze positions list. !!! note @@ -410,30 +407,14 @@ class GazeMovement(TimeStampedGazePositions, DataFeatures.TimestampedObject): # noinspection PyArgumentList return TimeStampedGazePositions.__new__(cls, positions) - def __init__(self, positions: TimeStampedGazePositions = None, finished: bool = False, message: str = None, timestamp: int | float = math.nan): + def __init__(self, positions: TimeStampedGazePositions = None, finished: bool = False, message: str = None): """Initialize GazeMovement""" TimeStampedGazePositions.__init__(self, positions) - DataFeatures.TimestampedObject.__init__(self, timestamp) self.__finished = finished self.__message = message - @property - def timestamp(self) -> int | float: - """Get first position timestamp.""" - if self: - return self[0].timestamp - - def is_timestamped(self) -> bool: - """If first position exist, the movement is timestamped.""" - return bool(self) - - @timestamp.setter - def timestamp(self, timestamp: int | float): - """Block gaze movement timestamp setting.""" - raise ('GazeMovement timestamp is first position timestamp.') - def is_finished(self) -> bool: """Is the movement finished?""" return self.__finished @@ -552,8 +533,8 @@ class TimeStampedGazeMovements(DataFeatures.TimestampedObjectsList): def __init__(self, gaze_movements: list = []): DataFeatures.TimestampedObjectsList.__init__(self, GazeMovement, gaze_movements) - -class GazeStatus(list, DataFeatures.TimestampedObject): +@DataFeatures.timestamp +class GazeStatus(list): """Define gaze status as a list of 1 or 2 (index, GazeMovement) tuples. Parameters: @@ -561,8 +542,8 @@ class GazeStatus(list, DataFeatures.TimestampedObject): """ def __init__(self, position: GazePosition): - DataFeatures.TimestampedObject.__init__(self, timestamp=position.timestamp) - + + self.timestamp = position.timestamp self.__position = position @property |