From 6e46a56ea44390580068850e6b26d8ba6cbf44da Mon Sep 17 00:00:00 2001 From: Théo de la Hogue Date: Thu, 21 Apr 2022 00:18:04 +0200 Subject: Fixing fixation identification --- src/argaze/GazeFeatures.py | 13 +++++++++++++ src/argaze/utils/export_tobii_segment_fixations.py | 20 +++++++++----------- 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/src/argaze/GazeFeatures.py b/src/argaze/GazeFeatures.py index 6cdca71..e0c3e73 100644 --- a/src/argaze/GazeFeatures.py +++ b/src/argaze/GazeFeatures.py @@ -59,6 +59,19 @@ class FixationIdentifier(): def __next__(self): raise NotImplementedError('__next__() method not implemented') + def identify(self): + + fixations = GazeFeatures.TimeStampedFixations() + + for ts, item in self: + + if item == None: + continue + + fixations[ts] = item + + return fixations + class DispersionBasedFixationIdentifier(FixationIdentifier): """Implementation of the I-DT algorithm as described in: diff --git a/src/argaze/utils/export_tobii_segment_fixations.py b/src/argaze/utils/export_tobii_segment_fixations.py index f0a8a4d..7fbdf50 100644 --- a/src/argaze/utils/export_tobii_segment_fixations.py +++ b/src/argaze/utils/export_tobii_segment_fixations.py @@ -32,11 +32,11 @@ def main(): os.makedirs(os.path.dirname(args.output)) print(f'{os.path.dirname(args.output)} folder created') - fixations_filepath = f'{args.output}/fixations.json' + fixations_filepath = f'{args.output}/fixations.csv' else: - fixations_filepath = f'{args.segment_path}/fixations.json' + fixations_filepath = f'{args.segment_path}/fixations.csv' # Load a tobii segment tobii_segment = TobiiEntities.TobiiSegment(args.segment_path, int(args.time_range[0] * 1000000), int(args.time_range[1] * 1000000) if args.time_range[1] != None else None) @@ -66,7 +66,7 @@ def main(): # Start fixation identification fixation_analyser = GazeFeatures.DispersionBasedFixationIdentifier(generic_ts_gaze_positions, args.dispersion_threshold, args.duration_threshold) - ts_fixations = GazeFeatures.TimeStampedFixations() + fixations = GazeFeatures.TimeStampedFixations() # Initialise progress bar MiscFeatures.printProgressBar(0, int(tobii_segment_video.get_duration()/1000), prefix = 'Progress:', suffix = 'Complete', length = 100) @@ -76,18 +76,16 @@ def main(): if item == None: continue - if item.get_type() == 'Fixation': + fixations[ts] = item - ts_fixations[ts] = item + # Update Progress Bar + progress = ts - int(args.time_range[0] * 1000) + MiscFeatures.printProgressBar(progress, int(tobii_segment_video.get_duration()/1000), prefix = 'Progress:', suffix = 'Complete', length = 100) - # Update Progress Bar - progress = ts - int(args.time_range[0] * 1000) - MiscFeatures.printProgressBar(progress, int(tobii_segment_video.get_duration()/1000), prefix = 'Progress:', suffix = 'Complete', length = 100) - - print(f'\n{len(ts_fixations)} fixations found') + print(f'\n{len(fixations)} fixations found') # Export fixations analysis results - ts_fixations.export_as_json(fixations_filepath) + fixations.export_as_csv(fixations_filepath) print(f'Fixations saved into {fixations_filepath}') -- cgit v1.1