def test_report(self): settings = { "context_settings": [Context( attributes=dict(x=2, y=2, z=2), metas={}, values=dict( descriptors=[ ContinuousDescriptor("a", "x + 2", 1), DiscreteDescriptor("b", "x < 3", (), False), DiscreteDescriptor("c", "x > 15", (), True), DiscreteDescriptor("d", "y > x", ("foo", "bar"), False), DiscreteDescriptor("e", "x ** 2 + y == 5", ("foo", "bar"), True), StringDescriptor("f", "str(x)"), DateTimeDescriptor("g", "z") ], currentIndex=0) )] } w = self.create_widget(OWFeatureConstructor, settings) v = [ContinuousVariable(name) for name in "xyz"] domain = Domain(v, []) self.send_signal(w.Inputs.data, Table.from_numpy(domain, [[0, 1, 2]])) w.report_items = Mock() w.send_report() args = w.report_items.call_args[0][1] self.assertEqual(list(args), list("abcdefg"))
def test_construct_variables_discrete(self): data = Table("iris") name = "Discrete Variable" expression = ("iris_one if iris == 'Iris-setosa' else iris_two " "if iris == 'Iris-versicolor' else iris_three") values = ("iris one", "iris two", "iris three") desc = PyListModel([ DiscreteDescriptor( name=name, expression=expression, values=values, base_value=-1, ordered=False, ) ]) data = Table( Domain( list(data.domain.attributes) + construct_variables(desc, data.domain.variables), data.domain.class_vars, data.domain.metas, ), data, ) self.assertTrue(isinstance(data.domain[name], DiscreteVariable)) self.assertEqual(data.domain[name].values, list(values)) for i in range(3): self.assertEqual(data[i * 50, name], values[i])
def test_construct_variables_discrete(self): data = Table("iris") name = 'Discrete Variable' expression = "iris_one if iris == 'Iris-setosa' else iris_two " \ "if iris == 'Iris-versicolor' else iris_three" values = ('iris one', 'iris two', 'iris three') desc = PyListModel( [DiscreteDescriptor(name=name, expression=expression, values=values, ordered=False)] ) data = data.transform(Domain(list(data.domain.attributes) + construct_variables(desc, data), data.domain.class_vars, data.domain.metas)) self.assertTrue(isinstance(data.domain[name], DiscreteVariable)) self.assertEqual(data.domain[name].values, values) for i in range(3): self.assertEqual(data[i * 50, name], values[i])
def test_construct_variables_discrete_no_values(self): data = Table("iris") name = 'Discrete Variable' expression = "str(iris)[-1]" # last letter - a or r values = () desc = PyListModel( [DiscreteDescriptor(name=name, expression=expression, values=values, ordered=False)] ) data = data.transform(Domain(list(data.domain.attributes) + construct_variables(desc, data), data.domain.class_vars, data.domain.metas)) newvar = data.domain[name] self.assertTrue(isinstance(newvar, DiscreteVariable)) self.assertEqual(set(data.domain[name].values), set("ar")) for i in range(3): inst = data[i * 50] self.assertEqual(str(inst[name]), str(inst["iris"])[-1])