Example #1
0
 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
     })
Example #2
0
    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)
Example #4
0
 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)
Example #5
0
 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)
Example #6
0
    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)
Example #7
0
 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}
         )