Esempio n. 1
0
    def test_yarn_relabel_a(self) -> None:
        f1 = ff.parse('s(4,2)').rename('f1')
        f2 = ff.parse('s(4,5)').rename('f2')
        f3 = ff.parse('s(2,2)').rename('f3')
        f4 = ff.parse('s(2,8)').rename('f4')
        f5 = ff.parse('s(4,4)').rename('f5')
        f6 = ff.parse('s(6,4)').rename('f6')

        b1 = Bus.from_frames((f1, f2, f3))
        b2 = Bus.from_frames((f4, ))
        b3 = Bus.from_frames((f5, f6))

        y1 = Yarn((b1, b2, b3))

        self.assertEqual(
            y1.relabel(lambda x: f'--{x}--').loc['--4--'].shape, (4, 4))

        # None is a no-op
        self.assertEqual(y1.relabel(None).loc[4].shape, (4, 4))

        with self.assertRaises(RelabelInvalid):
            y1.relabel({3, 4, 5})

        self.assertEqual(
            y1.relabel(tuple('abcdef'))['d':].status['shape'].to_pairs(),
            (('d', (2, 8)), ('e', (4, 4)), ('f', (6, 4))))

        y2 = Yarn((b1, b2, b3), index=tuple('abcdef'))
        self.assertEqual(y2.index.values.tolist(),
                         ['a', 'b', 'c', 'd', 'e', 'f'])
        self.assertEqual(
            y2.relabel(IndexAutoFactory).index.values.tolist(),
            [0, 1, 2, 3, 4, 5])
Esempio n. 2
0
    def test_yarn_init_c(self) -> None:

        with self.assertRaises(ErrorInitYarn):
            Yarn((ff.parse('s(2,2)'), ))

        with self.assertRaises(ErrorInitYarn):
            Yarn(Series((ff.parse('s(2,2)'), ), dtype=object))
Esempio n. 3
0
    def test_yarn_init_b(self) -> None:

        f1 = ff.parse('s(4,4)|v(int,float)').rename('f1')
        f2 = ff.parse('s(4,4)|v(str)').rename('f2')
        f3 = ff.parse('s(4,4)|v(bool)').rename('f3')
        b1 = Bus.from_frames((f1, f2, f3))

        f4 = ff.parse('s(4,4)|v(int,float)').rename('f4')
        f5 = ff.parse('s(4,4)|v(str)').rename('f5')
        b2 = Bus.from_frames((f4, f5))

        y1 = Yarn((b1, b2), index=tuple('abcde'))
        self.assertEqual(y1.index.values.tolist(), list('abcde'))
        self.assertEqual(y1[['a', 'c', 'e']].shape, (3, ))

        y2 = Yarn((b1, b2))
        self.assertEqual(y2.index.values.tolist(), list(range(5)))
        self.assertEqual(y2[2:].shape, (3, ))

        y3 = Yarn((b2, ),
                  index=('2021-01-01', '2021-02-15'),
                  index_constructor=IndexDate)
        self.assertEqual(y3.index.__class__, IndexDate)
        self.assertEqual(
            y3.index.values.tolist(),
            [datetime.date(2021, 1, 1),
             datetime.date(2021, 2, 15)])

        with self.assertRaises(ErrorInitYarn):
            y4 = Yarn((b2, ), index=range(5))
Esempio n. 4
0
    def test_yarn_rehierarch_b(self) -> None:
        f1 = ff.parse('s(4,2)').rename('f1')
        f2 = ff.parse('s(4,5)').rename('f2')
        f3 = ff.parse('s(2,2)').rename('f3')

        b1 = Bus.from_frames((f1, f2, f3))

        y1 = Yarn((b1, ))
        with self.assertRaises(RuntimeError):
            y1.rehierarch((1, 0))
Esempio n. 5
0
    def test_yarn_rehierarch_a(self) -> None:
        f1 = ff.parse('s(4,2)').rename('f1')
        f2 = ff.parse('s(4,5)').rename('f2')
        f3 = ff.parse('s(2,2)').rename('f3')
        f4 = ff.parse('s(2,8)').rename('f4')
        f5 = ff.parse('s(4,4)').rename('f5')
        f6 = ff.parse('s(6,4)').rename('f6')

        b1 = Bus.from_frames((f1, f2, f3))
        b2 = Bus.from_frames((f4, ))
        b3 = Bus.from_frames((f5, f6))

        y1 = Yarn((b1, b2, b3),
                  index=IndexHierarchy.from_product(('a', 'b'), (1, 2, 3)))
        self.assertEqual(
            y1.iloc[[0, 2, 4]].rehierarch((1, 0)).status['shape'].to_pairs(),
            (((1, 'a'), (4, 2)), ((3, 'a'), (2, 2)), ((2, 'b'), (4, 4))))
Esempio n. 6
0
    def test_yarn_relabel_flat_a(self) -> None:
        f1 = ff.parse('s(4,2)').rename('f1')
        f2 = ff.parse('s(4,5)').rename('f2')
        f3 = ff.parse('s(2,2)').rename('f3')
        f4 = ff.parse('s(2,8)').rename('f4')
        f5 = ff.parse('s(4,4)').rename('f5')
        f6 = ff.parse('s(6,4)').rename('f6')

        b1 = Bus.from_frames((f1, f2, f3))
        b2 = Bus.from_frames((f4,))
        b3 = Bus.from_frames((f5, f6))

        y1 = Yarn((b1, b2, b3), index=IndexHierarchy.from_product(('a', 'b'), (1, 2, 3)))

        self.assertEqual(
                y1.relabel_flat()[('a', 3):].status['shape'].to_pairs(),
                ((('a', 3), (2, 2)), (('b', 1), (2, 8)), (('b', 2), (4, 4)), (('b', 3), (6, 4)))
                )
Esempio n. 7
0
    def test_yarn_init_d(self) -> None:

        with self.assertRaises(ErrorInitYarn):
            Yarn(Series(np.array((False, True))))
Esempio n. 8
0
    def test_yarn_init_a(self) -> None:

        with self.assertRaises(ErrorInitSeries):
            Yarn(np.array([3, 4]))