def set_data(self, data):
        self.closeContext()

        self.clear()
        self.error([0, 1])
        self.data = data

        if self.data is not None:
            self.initialize(data)

        if self.data is not None and not self.targets:
            # If both attr. labels and classes are missing, show an error
            self.error(
                1, "Cannot compute gene scores! Differential expression "
                "widget requires a data-set with a discrete class "
                "variable(s) or column labels!")
            self.data = None

        if self.data is not None:
            # Initialize the selected groups/labels.
            # Default selected group key
            index = 0
            rowshint = data_hints.get_hint(data, "genesinrows", False)
            if not rowshint:
                # Select the first row group split candidate (if available)
                indices = [
                    i for i, grp in enumerate(self.targets)
                    if isinstance(grp, grouputils.RowGroup)
                ]
                if indices:
                    index = indices[0]

            self.current_group_index = index

            # Restore target label selection from context settings
            items = {(grp.name, val)
                     for grp in self.targets for val in grp.values}
            self.openContext(items)
            # Restore current group / selection
            model = self.label_selection_widget.model()
            selection = [
                model.index(i, 0, model.index(keyind, 0))
                for keyind, selection in enumerate(self.stored_selections)
                for i in selection
            ]
            selection = guiutils.itemselection(selection)

            self.label_selection_widget.setSelection(selection)
            self.label_selection_widget.setCurrentGroupIndex(
                self.current_group_index)

        self.commit()
Exemple #2
0
    def set_data(self, data=None):
        self.closeContext()
        self.clear()
        self.data = data
        self.error(0)
        self.warning([0, 1])
        if data is not None:
            self.init_from_data()

            if not self.targets:
                self.error(0, "Data has no suitable defined groups/labels")

            genesinrows = data_hints.get_hint(data, "genesinrows", True)

            # Select the first RowGroup if genesinrows hint is False
            if not genesinrows:
                ind = [
                    i for i, grp in enumerate(self.targets)
                    if isinstance(grp, grouputils.RowGroup)
                ]
                if ind:
                    self.current_group_index = ind[0]
                else:
                    self.current_group_index = 0 if self.targets else -1

            else:
                self.current_group_index = 0

            # TODO: Why does the current_group_index not get restored
            self.openContext([(grp.name, v) for grp in self.targets
                              for v in grp.values])
            model = self.target_widget.model()

            # FIX: This assumes fixed target key/values order.
            indices = [
                model.index(i, 0, model.index(
                    keyind,
                    0,
                )) for keyind, selected in enumerate(self.stored_selections)
                for i in selected
            ]

            selection = guiutils.itemselection(indices)
            self.target_widget.setCurrentGroupIndex(self.current_group_index)
            self.target_widget.setSelection(selection)

            self.plot()
        else:
            self.infoLabel.setText("No data on input.")

        self.unconditional_commit()
    def set_data(self, data):
        self.closeContext()

        self.clear()
        self.error([0, 1])
        self.data = data

        if self.data is not None:
            self.initialize(data)

        if self.data is not None and not self.targets:
            # If both attr. labels and classes are missing, show an error
            self.error(
                1, "Cannot compute gene scores! Differential expression "
                   "widget requires a data-set with a discrete class "
                   "variable(s) or column labels!"
            )
            self.data = None

        if self.data is not None:
            # Initialize the selected groups/labels.
            # Default selected group key
            index = 0
            rowshint = data_hints.get_hint(data, "genesinrows", False)
            if not rowshint:
                # Select the first row group split candidate (if available)
                indices = [i for i, grp in enumerate(self.targets)
                           if isinstance(grp, grouputils.RowGroup)]
                if indices:
                    index = indices[0]

            self.current_group_index = index

            # Restore target label selection from context settings
            items = {(grp.name, val)
                     for grp in self.targets for val in grp.values}
            self.openContext(items)
            # Restore current group / selection
            model = self.label_selection_widget.model()
            selection = [model.index(i, 0, model.index(keyind, 0))
                         for keyind, selection in enumerate(self.stored_selections)
                         for i in selection]
            selection = guiutils.itemselection(selection)

            self.label_selection_widget.setSelection(selection)
            self.label_selection_widget.setCurrentGroupIndex(
                self.current_group_index)

        self.commit()
    def set_data(self, data=None):
        self.closeContext()
        self.clear()
        self.data = data
        self.error(0)
        self.warning([0, 1])
        if data is not None:
            self.init_from_data()

            if not self.targets:
                self.error(0, "Data has no suitable defined groups/labels")

            genesinrows = data_hints.get_hint(data, "genesinrows", True)

            # Select the first RowGroup if genesinrows hint is False
            if not genesinrows:
                ind = [i for i, grp in enumerate(self.targets)
                       if isinstance(grp, grouputils.RowGroup)]
                if ind:
                    self.current_group_index = ind[0]
                else:
                    self.current_group_index = 0 if self.targets else -1

            else:
                self.current_group_index = 0

            # TODO: Why does the current_group_index not get restored
            self.openContext([(grp.name, v)
                              for grp in self.targets for v in grp.values])
            model = self.target_widget.model()

            # FIX: This assumes fixed target key/values order.
            indices = [model.index(i, 0, model.index(keyind, 0,))
                       for keyind, selected in enumerate(self.stored_selections)
                       for i in selected]

            selection = guiutils.itemselection(indices)
            self.target_widget.setCurrentGroupIndex(self.current_group_index)
            self.target_widget.setSelection(selection)

            self.plot()
        else:
            self.infoLabel.setText("No data on input.")

        self.unconditional_commit()