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)
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
    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)