def commit(self): if len(self.selection): cluster_ids = set() column_ids = set() for (ir, ic) in self.selection: cluster_ids.add(ir) column_ids.add(ic) new_domain = Domain([ self.data.domain[self.columns.values[col]] for col in column_ids ], self.data.domain.class_vars, self.data.domain.metas) selected_data = Values([ FilterDiscrete(self.cluster_var, [self.clusters[ir]]) for ir in cluster_ids ], conjunction=False)(self.data) selected_data = selected_data.transform(new_domain) annotated_data = create_annotated_table( self.data.transform(new_domain), np.where(np.in1d(self.data.ids, selected_data.ids, True))) else: selected_data = None annotated_data = create_annotated_table(self.data, []) if self.ca is not None and self._task is None: table = self.ca.create_contingency_table() else: table = None self.Outputs.selected_data.send(selected_data) self.Outputs.annotated_data.send(annotated_data) self.Outputs.contingency.send(table)
def commit(self): if self.data is None: self.Outputs.selected_data.send(None) self.Outputs.annotated_data.send(None) self.Outputs.contingency.send(None) return if len(self.selection_indices): cluster_ids = set() gene_ids = set() for (ir, ic) in self.selection_indices: if not self.transpose: cluster_ids.add(ir) gene_ids.add(ic) else: cluster_ids.add(ic) gene_ids.add(ir) columns = self.clusters if self.transpose else [str(x) for x in self.matrix.domain.attributes] rows = self.clusters if not self.transpose else [str(x) for x in self.matrix.domain.attributes] new_domain = Domain([self.data.domain[columns[i]] for i in gene_ids], self.data.domain.class_vars, self.data.domain.metas) selected_data = Values([FilterDiscrete(self.cluster_var, [rows[i]]) for i in cluster_ids], conjunction=False)(self.data) selected_data = selected_data.transform(new_domain) annotated_data = create_annotated_table(self.data, np.where(np.in1d(self.data.ids, selected_data.ids, True))) else: selected_data = None annotated_data = create_annotated_table(self.data, []) clusters_values = list(set(self.clusters)) table = ClusterAnalysis.contingency_table( self.matrix, DiscreteVariable("Gene" if self.transpose else self.cluster_var.name, clusters_values), [str(x) for x in self.matrix.domain.attributes], [[clusters_values.index(c)] for c in self.clusters] ) self.Outputs.selected_data.send(selected_data) self.Outputs.annotated_data.send(annotated_data) self.Outputs.contingency.send(table)
def commit(self): if len(self.selection): cluster_ids = set() gene_ids = set() for (ir, ic) in self.selection: if not self.transpose: cluster_ids.add(ir) gene_ids.add(ic) else: cluster_ids.add(ic) gene_ids.add(ir) new_domain = Domain( [self.data.domain[self.genes[i]] for i in gene_ids], self.data.domain.class_vars, self.data.domain.metas) selected_data = Values([ FilterDiscrete(self.cluster_var, [self.clusters[i]]) for i in cluster_ids ], conjunction=False)(self.data) selected_data = selected_data.transform(new_domain) annotated_data = create_annotated_table( self.data.transform(new_domain), np.where(np.in1d(self.data.ids, selected_data.ids, True))) else: selected_data = None annotated_data = create_annotated_table(self.data, []) if self.matrix is not None: table = ClusterAnalysis.contingency_table( self.matrix, DiscreteVariable(self.cluster_var.name, np.array(self.clusters)), np.array(self.genes)[self.gene_order], self.cluster_order[..., np.newaxis]) else: table = None self.Outputs.selected_data.send(selected_data) self.Outputs.annotated_data.send(annotated_data) self.Outputs.contingency.send(table)