Example #1
0
    def test_compound_transform(self):
        table = self.data_str
        domain = table.domain
        v1 = domain.metas[0]
        v1.attributes["a"] = "a"
        tv1 = apply_transform(v1, table, [AsContinuous(), Rename("Z1")])
        tv2 = apply_transform(
            v1, table,
            [AsContinuous(),
             Rename("Z2"),
             Annotate((("a", "b"), ))])

        self.assertIsInstance(tv1, ContinuousVariable)
        self.assertEqual(tv1.name, "Z1")
        self.assertEqual(tv1.attributes, {"a": "a"})

        self.assertIsInstance(tv2, ContinuousVariable)
        self.assertEqual(tv2.name, "Z2")
        self.assertEqual(tv2.attributes, {"a": "b"})

        tdomain = Domain([], metas=[tv1, tv2])
        ttable = table.transform(tdomain)

        assert_array_nanequal(
            ttable.metas, np.array([
                [0.1, 0.1],
                [1.0, 1.0],
            ], dtype=object))
Example #2
0
    def test_init_inst(self):
        domain = self.create_domain(
            ["x", DiscreteVariable("g", values="MF")],
            [DiscreteVariable("y", values="ABC")],
            self.metas,
        )
        vals = [42, "M", "B", "X", 43, "Foo"]
        inst = Instance(domain, vals)

        inst2 = Instance(domain, inst)
        assert_array_equal(inst2._x, np.array([42, 0]))
        self.assertEqual(inst2._y[0], 1)
        assert_array_equal(inst2._metas, np.array([0, 43, "Foo"],
                                                  dtype=object))

        domain2 = self.create_domain(
            ["z", domain[1], self.metas[1]],
            domain.class_vars,
            [self.metas[0], "w", domain[0]],
        )
        inst2 = Instance(domain2, inst)

        assert_array_nanequal(inst2._x, np.array([Unknown, 0, 43]))
        self.assertEqual(inst2._y[0], 1)
        assert_array_nanequal(inst2._metas,
                              np.array([0, Unknown, 42], dtype=object))
Example #3
0
 def test_reinterpret_string(self):
     table = self.data_str
     domain = table.domain
     tvars = []
     for v in domain.metas:
         for i, tr in enumerate(
             [AsContinuous(),
              AsCategorical(),
              AsTime(),
              AsString()]):
             vtr = apply_reinterpret(v, tr, table_column_data(
                 table, v)).renamed(f"{v.name}_{i}")
             if isinstance(tr, AsTime):
                 strp = StrpTime("Detect automatically", None, 1, 1)
                 vtr = apply_transform_var(vtr, [strp])
             tvars.append(vtr)
     tdomain = Domain([], metas=tvars)
     ttable = table.transform(tdomain)
     assert_array_nanequal(
         ttable.metas,
         np.array([
             [0.1, 0., np.nan, "0.1", 2010., 0., 1262304000., "2010"],
             [1.0, 1., np.nan, "1.0", 2020., 1., 1577836800., "2020"],
         ],
                  dtype=object))
    def test_init_xym_no_data(self):
        domain = self.mock_domain(with_classes=True, with_metas=True)
        inst = Instance(domain)
        self.assertIsInstance(inst, Instance)
        self.assertIs(inst.domain, domain)
        self.assertEqual(inst._x.shape, (len(self.attributes), ))
        self.assertEqual(inst._y.shape, (len(self.class_vars), ))
        self.assertEqual(inst._metas.shape, (3, ))
        self.assertTrue(all(isnan(x) for x in inst._x))
        self.assertTrue(all(isnan(x) for x in inst._y))

        assert_array_nanequal(inst._metas,
                              np.array([var.Unknown for var in domain.metas],
                                       dtype=object))
Example #5
0
 def test_reinterpret_string(self):
     table = self.data_str
     domain = table.domain
     tvars = []
     for v in domain.metas:
         for tr in [AsContinuous(), AsCategorical(), AsTime(), AsString()]:
             tr = apply_reinterpret(v, tr, table_column_data(table, v))
             tvars.append(tr)
     tdomain = Domain([], metas=tvars)
     ttable = table.transform(tdomain)
     assert_array_nanequal(
         ttable.metas,
         np.array([
             [0.1, 0., np.nan, "0.1", 2010., 0., 1262304000., "2010"],
             [1.0, 1., np.nan, "1.0", 2020., 1., 1577836800., "2020"],
         ],
                  dtype=object))
Example #6
0
    def test_init_inst(self):
        domain = self.create_domain(["x", DiscreteVariable("g", values="MF")],
                                    [DiscreteVariable("y", values="ABC")],
                                    self.metas)
        vals = [42, "M", "B", "X", 43, "Foo"]
        inst = Instance(domain, vals)

        inst2 = Instance(domain, inst)
        assert_array_equal(inst2._x, np.array([42, 0]))
        self.assertEqual(inst2._y[0], 1)
        assert_array_equal(inst2._metas, np.array([0, 43, "Foo"], dtype=object))

        domain2 = self.create_domain(["z", domain[1], self.metas[1]],
                                     domain.class_vars,
                                     [self.metas[0], "w", domain[0]])
        inst2 = Instance(domain2, inst)

        assert_array_nanequal(inst2._x, np.array([Unknown, 0, 43]))
        self.assertEqual(inst2._y[0], 1)
        assert_array_nanequal(inst2._metas, np.array([0, Unknown, 42],
                                                     dtype=object))