Beispiel #1
0
 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_numeric_names(self):
     data = Table("iris")
     data.domain.attributes[0].name = "0.1"
     data.domain.attributes[1].name = "1"
     desc = PyListModel([
         ContinuousDescriptor(name="S",
                              expression="_0_1 + _1",
                              number_of_decimals=3)
     ])
     nv = construct_variables(desc, data.domain)
     ndata = Table(Domain(nv, None), data)
     np.testing.assert_array_equal(ndata.X[:, 0], data.X[:, :2].sum(axis=1))
     ContinuousVariable._clear_all_caches()
Beispiel #3
0
 def test_construct_variables_string(self):
     data = Table("iris")
     name = 'String Variable'
     expression = "str(iris) + '_name'"
     desc = PyListModel(
         [StringDescriptor(name=name, expression=expression)])
     data = data.transform(
         Domain(data.domain.attributes, data.domain.class_vars,
                list(data.domain.metas) + construct_variables(desc, data)))
     self.assertTrue(isinstance(data.domain[name], StringVariable))
     for i in range(3):
         self.assertEqual(data[i * 50, name],
                          str(data[i * 50, "iris"]) + "_name")
Beispiel #4
0
 def test_construct_numeric_names():
     data = Table("iris")
     newdomain = Domain(
         (ContinuousVariable("0.1"), ContinuousVariable("1")) +
         data.domain.attributes[2:], data.domain.class_var)
     data = Table.from_numpy(newdomain, data.X, data.Y)
     desc = PyListModel([
         ContinuousDescriptor(name="S",
                              expression="_0_1 + _1",
                              number_of_decimals=3)
     ])
     nv = construct_variables(desc, data)
     ndata = Table(Domain(nv, None), data)
     np.testing.assert_array_equal(ndata.X[:, 0], data.X[:, :2].sum(axis=1))
Beispiel #5
0
 def test_unicode_normalization():
     micro = "\u00b5"
     domain = Domain([ContinuousVariable(micro)])
     name = 'Micro Variable'
     expression = micro
     desc = PyListModel(
         [ContinuousDescriptor(name=name, expression=expression,
                               number_of_decimals=2)]
     )
     data = Table.from_numpy(domain, np.arange(5).reshape(5, 1))
     data = data.transform(Domain(data.domain.attributes,
                                  [],
                                  construct_variables(desc, data)))
     np.testing.assert_equal(data.X, data.metas)
 def test_construct_numeric_names(self):
     data = Table("iris")
     data.domain.attributes[0].name = "0.1"
     data.domain.attributes[1].name = "1"
     desc = PyListModel(
         [ContinuousDescriptor(name="S",
                               expression="_0_1 + _1",
                               number_of_decimals=3)]
     )
     nv = construct_variables(desc, data.domain.variables)
     ndata = Table(Domain(nv, None), data)
     np.testing.assert_array_equal(ndata.X[:, 0],
                                   data.X[:, :2].sum(axis=1))
     ContinuousVariable._clear_all_caches()
Beispiel #7
0
 def test_construct_variables_datetime(self):
     data = Table("housing")
     name = 'Date'
     expression = '"2019-07-{:02}".format(int(MEDV/3))'
     featuremodel = PyListModel(
         [DateTimeDescriptor(name=name, expression=expression)])
     data = Table(
         Domain(
             list(data.domain.attributes) +
             construct_variables(featuremodel, data),
             data.domain.class_vars, data.domain.metas), data)
     self.assertTrue(isinstance(data.domain[name], TimeVariable))
     for row in data:
         self.assertEqual("2019-07-{:02}".format(int(row["MEDV"] / 3)),
                          str(row["Date"])[:10])
 def test_construct_variables_string(self):
     data = Table("iris")
     name = 'String Variable'
     expression = "str(iris) + '_name'"
     desc = PyListModel(
         [StringDescriptor(name=name, expression=expression)]
     )
     data = Table(Domain(data.domain.attributes,
                         data.domain.class_vars,
                         list(data.domain.metas) +
                         construct_variables(desc, data.domain)),
                  data)
     self.assertTrue(isinstance(data.domain[name], StringVariable))
     for i in range(3):
         self.assertEqual(data[i * 50, name],
                          str(data[i * 50, "iris"]) + "_name")
 def test_construct_variables_continuous(self):
     data = Table("iris")
     name = 'Continuous Variable'
     expression = "pow(sepal_length + sepal_width, 2)"
     featuremodel = PyListModel(
         [ContinuousDescriptor(name=name, expression=expression,
                               number_of_decimals=2)]
     )
     data = Table(Domain(list(data.domain.attributes) +
                         construct_variables(featuremodel, data.domain),
                         data.domain.class_vars,
                         data.domain.metas), data)
     self.assertTrue(isinstance(data.domain[name], ContinuousVariable))
     for i in range(3):
         self.assertEqual(data[i * 50, name],
                          pow(data[i * 50, 0] + data[i * 50, 1], 2))
Beispiel #10
0
 def test_construct_variables_continuous(self):
     data = Table("iris")
     name = 'Continuous Variable'
     expression = "pow(sepal_length + sepal_width, 2)"
     featuremodel = PyListModel(
         [ContinuousDescriptor(name=name, expression=expression,
                               number_of_decimals=2)]
     )
     data = Table(Domain(list(data.domain.attributes) +
                         construct_variables(featuremodel, data.domain),
                         data.domain.class_vars,
                         data.domain.metas), data)
     self.assertTrue(isinstance(data.domain[name], ContinuousVariable))
     for i in range(3):
         self.assertEqual(data[i * 50, name],
                          pow(data[i * 50, 0] + data[i * 50, 1], 2))
 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),
                         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])
Beispiel #12
0
 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])
Beispiel #13
0
 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])