def test_outputs(self): self.widget = self.create_widget(OWPeakFit) self.send_signal("Data", self.data) self.widget.add_preprocessor(PREPROCESSORS[0]) wait_for_preview(self.widget) self.widget.unconditional_commit() self.wait_until_finished() fit_params = self.get_output(self.widget.Outputs.fit_params) fits = self.get_output(self.widget.Outputs.fits) residuals = self.get_output(self.widget.Outputs.residuals) data = self.get_output(self.widget.Outputs.annotated_data) # fit_params self.assertEqual(len(fit_params), len(self.data)) np.testing.assert_array_equal(fit_params.Y, self.data.Y) np.testing.assert_array_equal(fit_params.metas, self.data.metas) # fits self.assertEqual(len(fits), len(self.data)) self.assert_domain_equal(fits.domain, self.data.domain) np.testing.assert_array_equal(fits.Y, self.data.Y) np.testing.assert_array_equal(fits.metas, self.data.metas) # residuals self.assertEqual(len(residuals), len(self.data)) self.assert_domain_equal(residuals.domain, self.data.domain) np.testing.assert_array_equal(residuals.X, fits.X - self.data.X) np.testing.assert_array_equal(residuals.Y, self.data.Y) np.testing.assert_array_equal(residuals.metas, self.data.metas) # annotated data self.assertEqual(len(data), len(self.data)) np.testing.assert_array_equal(data.X, self.data.X) np.testing.assert_array_equal(data.Y, self.data.Y) join_metas = np.asarray(np.hstack((self.data.metas, fit_params.X)), dtype=object) np.testing.assert_array_equal(data.metas, join_metas)
def test_transfer_highlight(self): data = SMALL_COLLAGEN self.send_signal("Data", data) wait_for_preview(self.widget) self.widget.curveplot.highlight(1) self.assertEqual(self.widget.curveplot_after.highlighted, 1) self.widget.curveplot.highlight(None) self.assertIsNone(self.widget.curveplot_after.highlighted)
def test_allint_indv(self): data = Orange.data.Table("peach_juice.dpt") for p in PREPROCESSORS: self.widget = self.create_widget(OWIntegrate) self.send_signal("Data", data) self.widget.add_preprocessor(p) wait_for_preview(self.widget) self.widget.unconditional_commit()
def test_allpreproc_indv(self): data = SMALLER_COLLAGEN for p in PREPROCESSORS: self.widget = self.create_widget(OWPreprocess) self.send_signal("Data", data) self.widget.add_preprocessor(p) self.widget.unconditional_commit() wait_for_preview(self.widget) self.wait_until_finished(timeout=10000)
def test_preview_sampled(self): data = SMALL_COLLAGEN assert len(data) > 3 self.send_signal("Data", data) self.widget.add_preprocessor(pack_editor(RememberDataEditor)) self.widget.preview_curves = 3 self.widget.show_preview() wait_for_preview(self.widget) self.assertEqual(3, len(RememberData.data))
def test_allpreproc_indv(self): data = Orange.data.Table("peach_juice.dpt") for p in PREPROCESSORS: self.widget = self.create_widget(OWPreprocess) self.send_signal("Data", data) self.widget.add_preprocessor(p) self.widget.unconditional_commit() wait_for_preview(self.widget) self.wait_until_finished(timeout=10000)
def test_bug_iris_crash(self): # bug with override wavenumbers: # TypeError: Object of type 'float32' is not JSON serializable data = Orange.data.Table('iris') self.send_signal("Data", data) # fixing getx output type fixes the bug self.assertEqual(getx(data).dtype, np.float_) self.widget.add_preprocessor(pack_model_editor(GaussianModelEditor)) self.widget.unconditional_commit() wait_for_preview(self.widget, 10000)
def test_exception_preview_after_data(self): self.editor.raise_exception = True self.editor.edited.emit() wait_for_preview(self.widget) self.assertIsNone(self.widget.curveplot_after.data) self.editor.raise_exception = False self.editor.edited.emit() wait_for_preview(self.widget) self.assertIsNotNone(self.widget.curveplot_after.data)
def test_simple_preview(self): data = Orange.data.Table("iris.tab") self.send_signal(OWIntegrate.Inputs.data, data) self.widget.add_preprocessor(pack_editor(IntegrateSimpleEditor)) self.widget.show_preview() wait_for_preview(self.widget) self.assertEqual(0, len(self.widget.curveplot.markings)) self.widget.flow_view.set_preview_n(0) self.widget.show_preview() wait_for_preview(self.widget) self.assertGreater(len(self.widget.curveplot.markings), 0)
def test_allpreproc_indv_ref_multi(self): """Test that preprocessors can handle references with multiple instances""" # len(data) must be > maximum preview size (10) to ensure test failure data = SMALL_COLLAGEN for p in PREPROCESSORS: self.widget = self.create_widget(OWPreprocess) self.send_signal("Data", data) self.send_signal("Reference", data) self.widget.add_preprocessor(p) self.widget.unconditional_commit() wait_for_preview(self.widget) self.wait_until_finished()
def test_out_of_range(self): data = Orange.data.Table("iris.tab") self.send_signal(OWIntegrate.Inputs.data, data) self.widget.add_preprocessor(pack_editor(IntegrateSimpleEditor)) editor = self.widget.flow_view.widgets()[0] editor.set_value("Low limit", 0) editor.edited.emit() wait_for_preview(self.widget) self.assertFalse(editor.Warning.out_of_range.is_shown()) editor.set_value("Low limit", -1) editor.edited.emit() wait_for_preview(self.widget) self.assertTrue(editor.Warning.out_of_range.is_shown())
def test_preview_keep_order(self): data = SMALL_COLLAGEN assert len(data) > 4 self.send_signal("Data", data) self.widget.add_preprocessor(pack_editor(RememberDataEditor)) self.widget.preview_curves = 3 self.widget.show_preview() wait_for_preview(self.widget) ids_old = RememberData.data.ids self.widget.preview_curves = 4 self.widget.show_preview() wait_for_preview(self.widget) ids_new = RememberData.data.ids self.assertEqual(4, len(ids_new)) self.assertEqual(list(ids_old), list(ids_new[:len(ids_old)]))
def test_reference_not_processed(self): """Testing setting for compatibility wih older saved schemas""" data = SMALL_COLLAGEN self.widget.process_reference = False self.assertFalse(self.widget.Warning.reference_compat.is_shown()) self.send_signal("Data", data) self.send_signal("Reference", data) self.widget.add_preprocessor(pack_editor(CutEditor)) self.widget.add_preprocessor(pack_editor(RememberDataEditor)) wait_for_preview(self.widget) self.assertIs(data, RememberData.reference) self.assertTrue(self.widget.Warning.reference_compat.is_shown()) self.widget.unconditional_commit() self.wait_until_finished() self.assertIs(data, RememberData.reference) self.assertTrue(self.widget.Warning.reference_compat.is_shown())
def test_reference_preprocessed_preview(self): data = SMALL_COLLAGEN self.widget.preview_curves = 3 self.send_signal("Data", data) self.send_signal("Reference", data) self.widget.add_preprocessor(pack_editor(CutEditor)) self.widget.add_preprocessor(pack_editor(RememberDataEditor)) wait_for_preview(self.widget) processed = getx(RememberData.reference) # cut by default cuts 10% of the data on both edges original = getx(data) # confirm that we are looking at preview data self.assertEqual(3, len(RememberData.data)) removed = set(original) - set(processed) self.assertGreater(len(removed), 0) self.assertEqual(set(), set(processed) - set(original)) self.assertFalse(self.widget.Warning.reference_compat.is_shown())
def test_allint_indv(self): for p in PREPROCESSORS: with self.subTest(msg=f"Testing model {p.name}"): settings = None if p.viewclass == PolynomialModelEditor: continue if p.viewclass == ExponentialGaussianModelEditor: settings = { 'storedsettings': { 'name': '', 'preprocessors': [('orangecontrib.spectroscopy.widgets.owwidget.eg', { 'center': OrderedDict([('value', 1650.0)]), 'sigma': OrderedDict([('value', 5.0), ('max', 20.0)]), 'gamma': OrderedDict([('value', 1.0), ('vary', "fixed")]), })] } } elif p.viewclass == PseudoVoigtModelEditor: settings = { 'storedsettings': { 'name': '', 'preprocessors': [('orangecontrib.spectroscopy.widgets.owwidget.pv', { 'center': OrderedDict([('value', 1650.0)]), 'fraction': OrderedDict([('vary', "fixed")]), })] } } self.widget = self.create_widget(OWPeakFit, stored_settings=settings) self.send_signal("Data", self.data) if settings is None: self.widget.add_preprocessor(p) wait_for_preview(self.widget, 10000) self.widget.onDeleteWidget()
def test_allint_indv_empty(self): data = Orange.data.Table("peach_juice.dpt")[:0] for p in PREPROCESSORS: self.widget = self.create_widget(OWIntegrate) self.send_signal("Data", data) self.widget.add_preprocessor(p) wait_for_preview(self.widget) self.widget.unconditional_commit() # no attributes data = Orange.data.Table("peach_juice.dpt") data = data.transform( Orange.data.Domain([], class_vars=data.domain.class_vars, metas=data.domain.metas)) for p in PREPROCESSORS: self.widget = self.create_widget(OWIntegrate) self.send_signal("Data", data) self.widget.add_preprocessor(p) wait_for_preview(self.widget) self.widget.unconditional_commit()
def test_allpreproc_indv_empty(self): data = SMALLER_COLLAGEN for p in PREPROCESSORS: self.widget = self.create_widget(OWPreprocess) self.send_signal("Data", data[:0]) self.widget.add_preprocessor(p) self.widget.unconditional_commit() wait_for_preview(self.widget) self.wait_until_finished(timeout=10000) # no attributes data = data.transform( Orange.data.Domain([], class_vars=data.domain.class_vars, metas=data.domain.metas)) for p in PREPROCESSORS: self.widget = self.create_widget(OWPreprocess) self.send_signal("Data", data) self.widget.add_preprocessor(p) self.widget.unconditional_commit() wait_for_preview(self.widget) self.wait_until_finished(timeout=10000)
def wait_for_preview(self): wait_for_preview(self.widget)
def wait_for_preview(self): wait_for_preview(self.widget, timeout=10000)