Пример #1
0
    def test_tooltips(self):
        data_in = Orange.data.Table("titanic")
        res = Orange.evaluation.TestOnTrainingData(
            data=data_in,
            learners=[
                Orange.classification.KNNLearner(),
                Orange.classification.LogisticRegressionLearner()
            ],
            store_data=True)

        self.send_signal(self.widget.Inputs.evaluation_results, res)
        self.widget.roc_averaging = OWROCAnalysis.Merge
        self.widget.target_index = 0
        self.widget.selected_classifiers = [0, 1]
        vb = self.widget.plot.getViewBox()
        vb.childTransform()  # Force pyqtgraph to update transforms

        curve = self.widget.plot_curves(self.widget.target_index, 0)
        curve_merge = curve.merge()
        view = self.widget.plotview
        item = curve_merge.curve_item  # type: pg.PlotCurveItem

        # no tooltips to be shown
        pos = item.mapToScene(0.0, 1.0)
        pos = view.mapFromScene(pos)
        mouseMove(view.viewport(), pos)
        self.assertIs(self.widget._tooltip_cache, None)

        # test single point
        pos = item.mapToScene(0.22504, 0.45400)
        pos = view.mapFromScene(pos)
        mouseMove(view.viewport(), pos)
        shown_thresh = self.widget._tooltip_cache[1]
        self.assertTrue(QToolTip.isVisible())
        np.testing.assert_almost_equal(shown_thresh, [0.40000], decimal=5)

        pos = item.mapToScene(0.0, 0.0)
        pos = view.mapFromScene(pos)
        # test overlapping points
        mouseMove(view.viewport(), pos)
        shown_thresh = self.widget._tooltip_cache[1]
        self.assertTrue(QToolTip.isVisible())
        np.testing.assert_almost_equal(shown_thresh, [1.8, 1.89336], decimal=5)

        # test that cache is invalidated when changing averaging mode
        self.widget.roc_averaging = OWROCAnalysis.Threshold
        self.widget._replot()
        mouseMove(view.viewport(), pos)
        shown_thresh = self.widget._tooltip_cache[1]
        self.assertTrue(QToolTip.isVisible())
        np.testing.assert_almost_equal(shown_thresh, [1, 1])

        # test nan thresholds
        self.widget.roc_averaging = OWROCAnalysis.Vertical
        self.widget._replot()
        mouseMove(view.viewport(), pos)
        self.assertIs(self.widget._tooltip_cache, None)
Пример #2
0
    def test_tooltips(self):
        data_in = Orange.data.Table("titanic")
        res = Orange.evaluation.TestOnTrainingData(
            data=data_in,
            learners=[Orange.classification.KNNLearner(),
                      Orange.classification.LogisticRegressionLearner()],
            store_data=True
        )

        self.send_signal(self.widget.Inputs.evaluation_results, res)
        self.widget.roc_averaging = OWROCAnalysis.Merge
        self.widget.target_index = 0
        self.widget.selected_classifiers = [0, 1]
        vb = self.widget.plot.getViewBox()
        vb.childTransform()  # Force pyqtgraph to update transforms

        curve = self.widget.plot_curves(self.widget.target_index, 0)
        curve_merge = curve.merge()
        view = self.widget.plotview
        item = curve_merge.curve_item  # type: pg.PlotCurveItem

        # no tooltips to be shown
        pos = item.mapToScene(0.0, 1.0)
        pos = view.mapFromScene(pos)
        mouseMove(view.viewport(), pos)
        self.assertIs(self.widget._tooltip_cache, None)

        # test single point
        pos = item.mapToScene(0.22504, 0.45400)
        pos = view.mapFromScene(pos)
        mouseMove(view.viewport(), pos)
        shown_thresh = self.widget._tooltip_cache[1]
        self.assertTrue(QToolTip.isVisible())
        np.testing.assert_almost_equal(shown_thresh, [0.40000], decimal=5)

        pos = item.mapToScene(0.0, 0.0)
        pos = view.mapFromScene(pos)
        # test overlapping points
        mouseMove(view.viewport(), pos)
        shown_thresh = self.widget._tooltip_cache[1]
        self.assertTrue(QToolTip.isVisible())
        np.testing.assert_almost_equal(shown_thresh, [1.8, 1.89336], decimal=5)

        # test that cache is invalidated when changing averaging mode
        self.widget.roc_averaging = OWROCAnalysis.Threshold
        self.widget._replot()
        mouseMove(view.viewport(), pos)
        shown_thresh = self.widget._tooltip_cache[1]
        self.assertTrue(QToolTip.isVisible())
        np.testing.assert_almost_equal(shown_thresh, [1, 1])

        # test nan thresholds
        self.widget.roc_averaging = OWROCAnalysis.Vertical
        self.widget._replot()
        mouseMove(view.viewport(), pos)
        self.assertIs(self.widget._tooltip_cache, None)