Esempio n. 1
0
    def test_parallel_with_weights_and_minimum(self):
        """Test of the parallel ccmbinator with weights and minimum."""
        dataset1 = lambda: (i for i in range(10))
        dataset2 = lambda: (i for i in range(10, 110))
        parallel = data.Parallel([dataset1, dataset2],
                                 counters=(10, 100),
                                 reweight_by_minimum=True)
        generator = parallel()

        self.assertEqual(next(generator), 0)
        self.assertEqual(next(generator), 10)
        self.assertEqual(next(generator), 11)
        self.assertEqual(next(generator), 12)
        self.assertEqual(next(generator), 13)
        self.assertEqual(next(generator), 14)
        self.assertEqual(next(generator), 15)
        self.assertEqual(next(generator), 16)
        self.assertEqual(next(generator), 17)
        self.assertEqual(next(generator), 18)
        self.assertEqual(next(generator), 19)
        self.assertEqual(next(generator), 1)
        self.assertEqual(next(generator), 20)
        self.assertEqual(next(generator), 21)
        self.assertEqual(next(generator), 22)
        self.assertEqual(next(generator), 23)
        self.assertEqual(next(generator), 24)
        self.assertEqual(next(generator), 25)
        self.assertEqual(next(generator), 26)
        self.assertEqual(next(generator), 27)
        self.assertEqual(next(generator), 28)
        self.assertEqual(next(generator), 29)
        self.assertEqual(next(generator), 2)
Esempio n. 2
0
    def test_parallel_with_gradual_reweighting_remainders_big(self):
        """Test of the parallel ccmbinator with weights and minimum."""
        dataset1 = lambda: (i for i in itertools.cycle(range(1)))
        dataset2 = lambda: (i for i in itertools.cycle(range(10, 30)))
        dataset3 = lambda: (i for i in itertools.cycle(range(30, 80)))
        dataset4 = lambda: (i for i in itertools.cycle(range(100, 220)))
        parallel = data.Parallel([dataset2, dataset1, dataset4, dataset3],
                                 counters=(20, 1, 120, 50),
                                 gradually_reweight=True,
                                 use_remainders=True)
        generator = parallel()

        for _ in range(3):
            self.assertEqual(next(generator), 0)
            for i in range(20):
                self.assertEqual(next(generator), 10 + i)
                for j in range(2):
                    self.assertEqual(next(generator), 30 + 2 * i + j)
                    for k in range(2):
                        self.assertEqual(next(generator),
                                         100 + 2 * 2 * i + 2 * j + k)
            # Here we process the remainder from datasets 3 and 4:
            for i in range(10):
                self.assertEqual(next(generator), 70 + i)
            for i in range(40):
                self.assertEqual(next(generator), 180 + i)
Esempio n. 3
0
    def test_stack_parallel(self):
        """Test of stacked parallel ccmbinators."""
        dataset1 = lambda: (i for i in range(10))
        dataset2 = lambda: (i for i in range(10, 20))
        dataset3 = lambda: (i for i in range(20, 30))
        parallel_lev0 = data.Parallel([dataset1, dataset2])
        parallel_lev1 = data.Parallel([parallel_lev0, dataset3])
        generator = parallel_lev1()

        self.assertEqual(next(generator), 0)
        self.assertEqual(next(generator), 20)
        self.assertEqual(next(generator), 10)
        self.assertEqual(next(generator), 21)
        self.assertEqual(next(generator), 1)
        self.assertEqual(next(generator), 22)
        self.assertEqual(next(generator), 11)
        self.assertEqual(next(generator), 23)
        self.assertEqual(next(generator), 2)
        self.assertEqual(next(generator), 24)
        self.assertEqual(next(generator), 12)
Esempio n. 4
0
    def test_parallel(self):
        """Check that data.Serial works inside another data.Serial."""
        dataset1 = lambda: (i for i in range(10))
        dataset2 = lambda: (i for i in range(10, 20))
        parallel = data.Parallel(dataset1, dataset2)
        generator = parallel()

        self.assertEqual(next(generator), 0)
        self.assertEqual(next(generator), 10)
        self.assertEqual(next(generator), 1)
        self.assertEqual(next(generator), 11)
Esempio n. 5
0
    def test_parallel(self):
        """Basic test of the parallel ccmbinator."""
        dataset1 = lambda: (i for i in range(10))
        dataset2 = lambda: (i for i in range(10, 20))
        parallel = data.Parallel([dataset1, dataset2])
        generator = parallel()

        self.assertEqual(next(generator), 0)
        self.assertEqual(next(generator), 10)
        self.assertEqual(next(generator), 1)
        self.assertEqual(next(generator), 11)
        self.assertEqual(next(generator), 2)
        self.assertEqual(next(generator), 12)
Esempio n. 6
0
    def test_parallel_with_gradual_reweighting(self):
        """Test of the parallel ccmbinator with weights and minimum."""
        dataset1 = lambda: (i for i in itertools.cycle(range(1)))
        dataset2 = lambda: (i for i in itertools.cycle(range(10, 30)))
        dataset3 = lambda: (i for i in itertools.cycle(range(30, 70)))
        parallel = data.Parallel([dataset2, dataset1, dataset3],
                                 counters=(20, 1, 40),
                                 gradually_reweight=True)
        generator = parallel()

        for _ in range(3):
            self.assertEqual(next(generator), 0)
            for i in range(20):
                self.assertEqual(next(generator), 10 + i)
                self.assertEqual(next(generator), 30 + 2 * i)
                self.assertEqual(next(generator), 30 + 2 * i + 1)
Esempio n. 7
0
    def test_parallel_with_zero_counters(self):
        """Test of stacked parallel ccmbinators."""
        dataset1 = lambda: (i for i in range(10))
        dataset2 = lambda: (i for i in range(10, 20))
        dataset3 = lambda: (i for i in range(20, 30))
        parallel = data.Parallel([dataset1, dataset2, dataset3],
                                 counters=[1, 0, 1])
        generator = parallel()

        self.assertEqual(next(generator), 0)
        self.assertEqual(next(generator), 20)
        self.assertEqual(next(generator), 1)
        self.assertEqual(next(generator), 21)
        self.assertEqual(next(generator), 2)
        self.assertEqual(next(generator), 22)
        self.assertEqual(next(generator), 3)
        self.assertEqual(next(generator), 23)
Esempio n. 8
0
    def test_parallel_with_weights(self):
        """Test of the parallel ccmbinator with weights."""
        dataset1 = lambda: (i for i in range(10))
        dataset2 = lambda: (i for i in range(10, 20))
        parallel = data.Parallel([dataset1, dataset2], counters=(2, 1))
        generator = parallel()

        self.assertEqual(next(generator), 0)
        self.assertEqual(next(generator), 10)
        self.assertEqual(next(generator), 1)
        self.assertEqual(next(generator), 11)
        self.assertEqual(next(generator), 2)
        self.assertEqual(next(generator), 3)
        self.assertEqual(next(generator), 12)
        self.assertEqual(next(generator), 4)
        self.assertEqual(next(generator), 5)
        self.assertEqual(next(generator), 13)
Esempio n. 9
0
    def test_parallel_with_gen_not_none(self):
        """Test of the parallel ccmbinator with a not none generator."""
        dataset1 = lambda _: (i for i in range(10))
        dataset2 = lambda _: (i for i in range(10, 20))
        parallel = data.Parallel([dataset1, dataset2])

        def test_generator():
            yield 0

        generator = parallel(gen=test_generator)

        self.assertEqual(next(generator), 0)
        self.assertEqual(next(generator), 10)
        self.assertEqual(next(generator), 1)
        self.assertEqual(next(generator), 11)
        self.assertEqual(next(generator), 2)
        self.assertEqual(next(generator), 12)
Esempio n. 10
0
    def test_parallel_with_weights(self):
        """Check that data.Serial works inside another data.Serial."""
        dataset1 = lambda: (i for i in range(10))
        dataset2 = lambda: (i for i in range(10, 20))
        parallel = data.Parallel([dataset1, dataset2], counters=(2, 1))
        generator = parallel()

        self.assertEqual(next(generator), 0)
        self.assertEqual(next(generator), 10)
        self.assertEqual(next(generator), 1)
        self.assertEqual(next(generator), 11)
        self.assertEqual(next(generator), 2)
        self.assertEqual(next(generator), 3)
        self.assertEqual(next(generator), 12)
        self.assertEqual(next(generator), 4)
        self.assertEqual(next(generator), 5)
        self.assertEqual(next(generator), 13)
Esempio n. 11
0
    def test_parallel_with_gen_not_none(self):
        """Check that data.Serial works inside another data.Serial."""
        dataset1 = lambda _: (i for i in range(10))
        dataset2 = lambda _: (i for i in range(10, 20))
        parallel = data.Parallel([dataset1, dataset2])

        def test_generator():
            yield 0

        generator = parallel(gen=test_generator)

        self.assertEqual(next(generator), 0)
        self.assertEqual(next(generator), 10)
        self.assertEqual(next(generator), 1)
        self.assertEqual(next(generator), 11)
        self.assertEqual(next(generator), 2)
        self.assertEqual(next(generator), 12)
Esempio n. 12
0
    def test_parallel_with_weights_three_datasets(self):
        """Check that data.Serial works inside another data.Serial."""
        dataset1 = lambda: (i for i in range(10))
        dataset2 = lambda: (i for i in range(10, 20))
        dataset3 = lambda: (i for i in range(20, 30))
        parallel = data.Parallel([dataset1, dataset2, dataset3],
                                 counters=(2, 1, 3))
        generator = parallel()

        self.assertEqual(next(generator), 0)  # (1,0,0)
        self.assertEqual(next(generator), 10)  # (1,1,0)
        self.assertEqual(next(generator), 20)  # (1,1,1)
        self.assertEqual(next(generator), 1)  # (2,1,1)
        self.assertEqual(next(generator), 21)  # (2,1,2)
        self.assertEqual(next(generator), 22)  # (2,1,3)
        self.assertEqual(next(generator), 2)  # (1,0,0)
        self.assertEqual(next(generator), 11)  # (1,1,0)
        self.assertEqual(next(generator), 23)  # (1,1,1)
        self.assertEqual(next(generator), 3)  # (2,1,1)
        self.assertEqual(next(generator), 24)  # (2,1,2)
        self.assertEqual(next(generator), 25)  # (2,1,3)
        self.assertEqual(next(generator), 4)  # (1,0,0)