def __init__( self, g_pool, max_dispersion=1.50, min_duration=80, max_duration=220, show_fixations=True, ): super().__init__(g_pool) self.max_dispersion = max_dispersion self.min_duration = min_duration self.max_duration = max_duration self.show_fixations = show_fixations self.current_fixation_details = None self.fixation_data = deque() self.prev_index = -1 self.bg_task = None self.status = "" self._gaze_changed_listener = data_changed.Listener("gaze_positions", g_pool.rec_dir, plugin=self) self._gaze_changed_listener.add_observer("on_data_changed", self._classify) self.notify_all({ "subject": "fixation_detector.should_recalculate", "delay": 0.5 })
def __init__( self, g_pool, history_length=0.2, onset_confidence_threshold=0.5, offset_confidence_threshold=0.5, ): self._history_length = None self._onset_confidence_threshold = None self._offset_confidence_threshold = None super().__init__( g_pool, history_length, onset_confidence_threshold, offset_confidence_threshold, ) self.filter_response = [] self.response_classification = [] self.timestamps = [] g_pool.blinks = pm.Affiliator() self.cache = { "response_points": (), "class_points": (), "thresholds": () } self.pupil_positions_listener = data_changed.Listener( "pupil_positions", g_pool.rec_dir, plugin=self) self.pupil_positions_listener.add_observer( "on_data_changed", self._on_pupil_positions_changed)
def __init__(self, g_pool, *args, **kwargs): super().__init__(g_pool, *args, use_online_detection=False, **kwargs) self.MARKER_CACHE_VERSION = 3 # Also add very small detected markers to cache and filter cache afterwards self.CACHE_MIN_MARKER_PERIMETER = 20 self.cache_seek_idx = mp_context.Value("i", 0) self.marker_cache = None self.marker_cache_unfiltered = None self.cache_filler = None self._init_marker_cache() self.last_cache_update_ts = time.perf_counter() self.CACHE_UPDATE_INTERVAL_SEC = 5 self._init_marker_detection_modes() self.gaze_on_surf_buffer = None self.gaze_on_surf_buffer_filler = None self._heatmap_update_requests = set() self.export_proxies = set() self._gaze_changed_listener = data_changed.Listener("gaze_positions", g_pool.rec_dir, plugin=self) self._gaze_changed_listener.add_observer( "on_data_changed", self._on_gaze_positions_changed)
def __init__(self, g_pool, show_world_fps=True, show_eye_fps=True): super().__init__(g_pool) self.show_world_fps = show_world_fps self.show_eye_fps = show_eye_fps self.cache_fps_data() self.pupil_positions_listener = data_changed.Listener( "pupil_positions", g_pool.rec_dir, plugin=self) self.pupil_positions_listener.add_observer( "on_data_changed", self._on_pupil_positions_changed)
def __init__(self, g_pool): super().__init__(g_pool) self._pupil_changed_announcer = data_changed.Announcer( "pupil_positions", g_pool.rec_dir, plugin=self) self._pupil_changed_listener = data_changed.Listener("pupil_positions", g_pool.rec_dir, plugin=self) self._pupil_changed_listener.add_observer("on_data_changed", self._refresh_timelines)
def __init__(self, g_pool): super().__init__(g_pool) self.inject_plugin_dependencies() self._task_manager = PluginTaskManager(plugin=self) self._recording_uuid = PupilRecording( g_pool.rec_dir).meta_info.recording_uuid self._setup_storages() self._setup_controllers() self._setup_ui() self._setup_timelines() self._pupil_changed_listener = data_changed.Listener("pupil_positions", g_pool.rec_dir, plugin=self) self._pupil_changed_listener.add_observer( "on_data_changed", self._calculate_all_controller.calculate_all)
def __init__( self, g_pool, max_dispersion=1.50, min_duration=80, max_duration=220, show_fixations=True, ): super().__init__(g_pool) self.max_dispersion = max_dispersion self.min_duration = min_duration self.max_duration = max_duration self.show_fixations = show_fixations self.current_fixation_details = None self.fixation_data = [] self.prev_index = -1 self.bg_task = None self.status = "" self.data_dir = os.path.join(g_pool.rec_dir, "offline_data") self._gaze_changed_listener = data_changed.Listener( "gaze_positions", g_pool.rec_dir, plugin=self ) self._gaze_changed_listener.add_observer("on_data_changed", self._classify) self._fixations_changed_announcer = data_changed.Announcer( "fixations", g_pool.rec_dir, plugin=self ) try: self.load_offline_data() except ( FileNotFoundError, self.VersionMismatchError, self.ConfigMismatchError, self.DataMismatchError, ) as err: logger.debug(f"Offline data not loaded: {err} ({type(err).__name__})") self.notify_all( {"subject": "fixation_detector.should_recalculate", "delay": 0.5} )