def split_clusters(self, clusters, clusters_old, cluster_groups, cluster_colors, clusters_new): if not hasattr(clusters, '__len__'): clusters = [clusters] spikes = get_indices(clusters_old) # Find groups and colors of old clusters. cluster_indices_old = np.unique(clusters_old) cluster_indices_new = np.unique(clusters_new) # Get group and color of the new clusters, from the old clusters. groups = self.loader.get_cluster_groups(cluster_indices_old) # colors = self.loader.get_cluster_colors(cluster_indices_old) # Add clusters. for cluster_new, group in zip(cluster_indices_new, groups): self.loader.add_cluster(cluster_new, group, random_color()) # Set the new clusters to the corresponding spikes. self.loader.set_cluster(spikes, clusters_new) # Remove empty clusters. clusters_empty = self.loader.remove_empty_clusters() self.loader.unselect() clusters_to_select = sorted(set(cluster_indices_old).union( set(cluster_indices_new)) - set(clusters_empty)) return dict(clusters_to_split=clusters, clusters_split=get_array(cluster_indices_new), clusters_empty=clusters_empty)
def split_clusters(self, clusters, clusters_old, cluster_groups, cluster_colors, clusters_new): if not hasattr(clusters, '__len__'): clusters = [clusters] spikes = get_indices(clusters_old) # Find groups and colors of old clusters. cluster_indices_old = np.unique(clusters_old) cluster_indices_new = np.unique(clusters_new) # Get group and color of the new clusters, from the old clusters. groups = self.loader.get_cluster_groups(cluster_indices_old) # colors = self.loader.get_cluster_colors(cluster_indices_old) # Add clusters. self.loader.add_clusters(cluster_indices_new, # HACK: take the group of the first cluster for all new clusters get_array(groups)[0]*np.ones(len(cluster_indices_new)), random_color(len(cluster_indices_new))) # Set the new clusters to the corresponding spikes. self.loader.set_cluster(spikes, clusters_new) # Remove empty clusters. clusters_empty = self.loader.remove_empty_clusters() self.loader.unselect() clusters_to_select = sorted(set(cluster_indices_old).union( set(cluster_indices_new)) - set(clusters_empty)) return dict(clusters_to_split=clusters, clusters_split=get_array(cluster_indices_new), clusters_empty=clusters_empty)
def _wizard_change_candidate_color(self): candidate = self.wizard.current_candidate() target = self.wizard.current_target() # color = self.loader.get_cluster_color(candidate) return ('_cluster_color_changed', ( candidate, random_color(), ))
def add_group(self, name, channels=[]): color = random_color() group = self.model.add_group(name, color) groupidx = group.groupidx() # Signal. log.debug("Adding group {0:s}.".format(name)) self.groupAdded.emit(groupidx, name, color) # Move the selected channels to the new group. if channels: self.move_channels(channels, groupidx) self.expandAll() return groupidx
def merge_clusters(self, clusters_old, cluster_groups, cluster_colors, cluster_merged): # Get spikes in clusters to merge. # spikes = self.loader.get_spikes(clusters=clusters_to_merge) spikes = get_indices(clusters_old) clusters_to_merge = get_indices(cluster_groups) group = np.max(get_array(cluster_groups)) # color_old = get_array(cluster_colors)[0] color_new = random_color() self.loader.add_cluster(cluster_merged, group, color_new) # Set the new cluster to the corresponding spikes. self.loader.set_cluster(spikes, cluster_merged) # Remove old clusters. for cluster in clusters_to_merge: self.loader.remove_cluster(cluster) self.loader.unselect() return dict(clusters_to_merge=clusters_to_merge, cluster_merged=cluster_merged, cluster_merged_colors=(color_new, color_new),)
def _wizard_change_candidate_color(self): candidate = self.wizard.current_candidate() target = self.wizard.current_target() # color = self.loader.get_cluster_color(candidate) return ('_cluster_color_changed', (candidate, random_color(),))