コード例 #1
0
    def update_control(self):
        """ Update the control area of the widget. Populate the list
        views with keys from attribute labels.
        
        """
        keys = self.get_suitable_keys(self.data)

        model = PyListModel(keys)
        self.separate_view.setModel(model)
        self.connect(
            self.separate_view.selectionModel(),
            SIGNAL("selectionChanged(QItemSelection, QItemSelection)"),
            self.on_separate_key_changed)

        model = PyListModel(keys)
        self.relevant_view.setModel(model)
        self.connect(
            self.relevant_view.selectionModel(),
            SIGNAL("selectionChanged(QItemSelection, QItemSelection)"),
            self.on_relevant_key_changed)

        self.openContext("", keys)

        # Get the selected keys from the open context
        context = self.currentContexts[""]
        separate_keys = getattr(context, "separate_keys", set())
        relevant_keys = getattr(context, "relevant_keys", set())

        def select(model, selection_model, selected_items):
            all_items = list(model)
            try:
                indices = [all_items.index(item) for item in selected_items]
            except:
                indices = []
            for ind in indices:
                selection_model.select(model.index(ind),
                                       QItemSelectionModel.Select)

        self._disable_updates = True
        try:
            select(self.relevant_view.model(),
                   self.relevant_view.selectionModel(), relevant_keys)

            select(self.separate_view.model(),
                   self.separate_view.selectionModel(), separate_keys)
        finally:
            self._disable_updates = False
コード例 #2
0
    def set_data(self, data=None):
        """ Set the input example table.
        """
        self.closeContext()
        self.clear()
        self.data = data
        self.error(0)
        self.warning(0)
        if data and not self.get_suitable_keys(data):
            self.error(0, "Data has no suitable attribute labels.")
            data = None

        if data:
            self.info_box.setText("{0} genes\n{1} experiments".format(
                len(data), len(data.domain)))
            self.update_control()
            self.split_data()
        else:
            self.separate_view.setModel(PyListModel([]))
            self.relevant_view.setModel(PyListModel([]))
            self.groups_scroll_area.setWidget(QWidget())
            self.info_box.setText("No data on input.\n")
            self.commit()
コード例 #3
0
    def __init__(self,
                 parent=None,
                 signalManager=None,
                 title="Quality Control"):
        OWWidget.__init__(self, parent, signalManager, title, wantGraph=True)

        self.inputs = [("Experiment Data", Orange.data.Table, self.set_data)]

        ## Settings
        self.selected_distance_index = 0

        ## Attributes
        self.data = None
        self.distances = None
        self.groups = None
        self.unique_pos = None
        self.base_group_index = 0

        ## GUI
        box = OWGUI.widgetBox(self.controlArea, "Info")
        self.info_box = OWGUI.widgetLabel(box, "\n")

        ## Separate By box
        box = OWGUI.widgetBox(self.controlArea, "Separate By")
        self.split_by_model = PyListModel()
        self.split_by_view = QListView()
        self.split_by_view.setSelectionMode(QListView.ExtendedSelection)
        self.split_by_view.setModel(self.split_by_model)
        box.layout().addWidget(self.split_by_view)

        self.connect(
            self.split_by_view.selectionModel(),
            SIGNAL("selectionChanged(QItemSelection, QItemSelection)"),
            self.on_split_key_changed)

        ## Sort By box
        box = OWGUI.widgetBox(self.controlArea, "Sort By")
        self.sort_by_model = PyListModel()
        self.sort_by_view = QListView()
        self.sort_by_view.setSelectionMode(QListView.ExtendedSelection)
        self.sort_by_view.setModel(self.sort_by_model)
        box.layout().addWidget(self.sort_by_view)

        self.connect(
            self.sort_by_view.selectionModel(),
            SIGNAL("selectionChanged(QItemSelection, QItemSelection)"),
            self.on_sort_key_changed)

        ## Distance box
        box = OWGUI.widgetBox(self.controlArea, "Distance Measure")
        OWGUI.comboBox(box,
                       self,
                       "selected_distance_index",
                       items=[t[0] for t in self.DISTANCE_FUNCTIONS],
                       callback=self.on_distance_measure_changed)

        self.connect(self.graphButton, SIGNAL("clicked()"), self.save_graph)

        self.scene = QGraphicsScene()
        self.scene_view = QualityGraphicsView(self.scene)
        self.scene_view.setRenderHints(QPainter.Antialiasing)
        self.scene_view.setAlignment(Qt.AlignLeft | Qt.AlignVCenter)
        self.mainArea.layout().addWidget(self.scene_view)

        self.connect(self.scene_view, SIGNAL("view_size_changed(QSize)"),
                     self.on_view_resize)

        self._disable_updates = False
        self._cached_distances = {}
        self._base_index_hints = {}
        self.main_widget = None

        self.resize(800, 600)