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))
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))
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))
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))
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))