Ejemplo n.º 1
0
    def _undo(self):
        if len(self.stack) == 1:
            print("Nothing left to undo.")
            return

        with self.timer_paused():
            last_action, _old_dataset = self.stack.pop()
            self.redo_stack.append((last_action, _old_dataset))

            new_labels = set(self.dataset.labels)
            changed_labels = get_changed_labels(self.dataset, _old_dataset)

            _old_selected = self.selected.copy()

            if "unhide" in last_action:
                for label in changed_labels:
                    selector = match_one(_old_dataset, label=label)
                    node = _old_dataset.nodes[selector][0]
                    self.hidden.append(node)

            if "hide node" in last_action:
                self.hidden.pop()

            if "delete unselected" in last_action:
                self.selected = set(_old_dataset.labels)
            else:
                self.selected = set.intersection(new_labels, changed_labels)
            self.colors = make_color_map(self.dataset.labels)
            self.UPDATED_CLUSTERS.emit(self.dataset, _old_dataset)
            self.CLUSTER_SELECT.emit(self.selected, _old_selected)
Ejemplo n.º 2
0
    def cleanup(self, label):
        _new_dataset = cleanup_node(self.dataset, label=label)
        new_labels = set(_new_dataset.labels)
        changed_labels = get_changed_labels(_new_dataset, self.dataset)

        _old_selected = self.selected.copy()
        self.selected = set.intersection(new_labels, changed_labels)
        self.colors = make_color_map(_new_dataset.labels)
        self._enstack("cleanup", _new_dataset)
        self.CLUSTER_SELECT.emit(self.selected, _old_selected)
Ejemplo n.º 3
0
    def cleanup_clusters(self, state):
        _new_dataset = cleanup_cluster_assignments(self.dataset, n_neighbors=3)
        new_labels = set(_new_dataset.labels)
        changed_labels = get_changed_labels(_new_dataset, self.dataset)

        _old_selected = self.selected.copy()
        self.selected = set.intersection(new_labels, changed_labels)
        self.colors = make_color_map(_new_dataset.labels)
        self._enstack("clean", _new_dataset)
        self.CLUSTER_SELECT.emit(self.selected, _old_selected)
Ejemplo n.º 4
0
    def recluster(self, label, mode):
        if mode == "waveform":
            _new_dataset = recluster_node(self.dataset, label=label)
        elif mode == "time":
            _new_dataset = recluster_node_in_time(self.dataset, label=label)
        new_labels = set(_new_dataset.labels)
        changed_labels = get_changed_labels(_new_dataset, self.dataset)

        _old_selected = self.selected.copy()
        self.selected = set.intersection(new_labels, changed_labels)
        self.colors = make_color_map(_new_dataset.labels)
        self._enstack("recluster", _new_dataset)
        self.CLUSTER_SELECT.emit(self.selected, _old_selected)
Ejemplo n.º 5
0
    def reset(self, new_dataset, old_dataset):
        old_scroll = self.verticalScrollBar().value()
        for label in get_changed_labels(new_dataset, old_dataset):
            if label in self._cached_cluster_info:
                del self._cached_cluster_info[label]
        self.setup_data()
        self.init_ui()
        for label, info in self._cached_cluster_info.items():
            info.update_color(self.colors[label])
        for label in self.dataset.labels:
            self.pixmaps[label].fill(
                gui.QColor(*[255 * c for c in self.colors[label]]))

        self.verticalScrollBar().setValue(old_scroll)
Ejemplo n.º 6
0
    def merge(self):
        if len(self.selected) < 2:
            widgets.QMessageBox.warning(
                self, "Merge failed", "Not enough clusters selected to merge")
            return

        _new_dataset = merge_nodes(self.dataset, labels=self.selected)
        new_labels = set(_new_dataset.labels)
        changed_labels = get_changed_labels(_new_dataset, self.dataset)

        _old_selected = self.selected.copy()
        self.selected = set.intersection(new_labels, changed_labels)
        self.colors = make_color_map(_new_dataset.labels)
        self._enstack("merge", _new_dataset)
        self.CLUSTER_SELECT.emit(self.selected, _old_selected)