def test_random_distributions_2D(self):
        ### test whether all 4 possible mirrorings occur in approximately equal frquencies in 2D

        batch_gen = BasicDataLoader((self.x_2D, self.y_2D), self.batch_size, number_of_threads_in_multithreaded=None)
        batch_gen = SingleThreadedAugmenter(batch_gen, MirrorTransform((0, 1)))

        counts = np.zeros(shape=(4,))

        for b in range(self.num_batches):
            batch = next(batch_gen)

            for ix in range(self.batch_size):
                if (batch['data'][ix, :, :, :] == self.cam_left).all():
                    counts[0] = counts[0] + 1

                elif (batch['data'][ix, :, :, :] == self.cam_updown).all():
                    counts[1] = counts[1] + 1

                elif (batch['data'][ix, :, :, :] == self.cam_updown_left).all():
                    counts[2] = counts[2] + 1

                elif (batch['data'][ix, :, :, :] == self.cam).all():
                    counts[3] = counts[3] + 1

        self.assertTrue([1 if (2200 < c < 2800) else 0 for c in counts] == [1]*4, "2D Images were not mirrored along "
                                                                                  "all axes with equal probability. "
                                                                                  "This may also indicate that "
                                                                                  "mirroring is not working")
    def test_segmentations_2D(self):
        ### test whether segmentations are mirrored coherently with images

        batch_gen = BasicDataLoader((self.x_2D, self.y_2D), self.batch_size, number_of_threads_in_multithreaded=None)
        batch_gen = SingleThreadedAugmenter(batch_gen, MirrorTransform((0, 1)))

        equivalent = True

        for b in range(self.num_batches):
            batch = next(batch_gen)
            for ix in range(self.batch_size):
                if (batch['data'][ix] != batch['seg'][ix]).all():
                    equivalent = False

        self.assertTrue(equivalent, "2D images and seg were not mirrored in the same way (they should though because "
                                    "seg needs to match the corresponding data")