Пример #1
0
    def test_paddedBlockExtraction(self):
        for params in TestBlockExtraction.PARAMS:
            strategy = PaddedBlockingStrategy(
                [1] * len(params.aryshape),
                params.padding)  # dummy splits; not used here
            n = reduce(lambda x, y: x * y, params.aryshape)
            ary = arange(n, dtype='int16').reshape(params.aryshape)
            key, val = strategy.extractBlockFromImage(ary, params.blockslices,
                                                      params.timepoint,
                                                      params.ntimepoints)

            expectedSlices = [
                slice(params.timepoint, params.timepoint + 1, 1)
            ] + list(params.blockslices)
            assert_equals(params.timepoint, key.temporalKey)
            assert_equals(params.ntimepoints, key.origShape[0])
            assert_equals(tuple(params.aryshape), tuple(key.origShape[1:]))
            assert_equals(tuple(expectedSlices), tuple(key.imgSlices))

            try:
                _ = len(params.padding)
                padding = list(params.padding)
            except TypeError:
                padding = [params.padding] * ary.ndim

            expectedPaddedSlices = []
            expectedValSlices = []
            for slise, pad, l in zip(params.blockslices, padding, ary.shape):
                paddedStart = max(0, slise.start -
                                  pad) if not (slise.start is None) else 0
                paddedEnd = min(l, slise.stop +
                                pad) if not (slise.stop is None) else l
                actualPadStart = slise.start - paddedStart if not (
                    slise.start is None) else 0
                actualPadEnd = paddedEnd - slise.stop if not (
                    slise.stop is None) else 0
                expectedPaddedSlices.append(slice(paddedStart, paddedEnd, 1))
                expectedValSlices.append(
                    slice(actualPadStart,
                          (paddedEnd - paddedStart) - actualPadEnd, 1))

            expectedAry = expand_dims(ary[expectedPaddedSlices], axis=0)
            expectedPaddedSlices = [
                slice(params.timepoint, params.timepoint + 1, 1)
            ] + expectedPaddedSlices
            expectedValSlices = [slice(0, 1, 1)] + expectedValSlices
            assert_equals(tuple(expectedPaddedSlices), tuple(key.padImgSlices))
            assert_equals(tuple(expectedValSlices), tuple(key.valSlices))
            assert_equals(tuple(expectedAry.shape), tuple(val.shape))
            assert_true(array_equal(expectedAry, val))
    def test_paddedBlockExtraction(self):
        for params in TestBlockExtraction.PARAMS:
            strategy = PaddedBlockingStrategy([1] * len(params.aryshape), params.padding)  # dummy splits; not used here
            n = reduce(lambda x, y: x * y, params.aryshape)
            ary = arange(n, dtype="int16").reshape(params.aryshape)
            key, val = strategy.extractBlockFromImage(ary, params.blockslices, params.timepoint, params.ntimepoints)

            expectedSlices = [slice(params.timepoint, params.timepoint + 1, 1)] + list(params.blockslices)
            assert_equals(params.timepoint, key.temporalKey)
            assert_equals(params.ntimepoints, key.origShape[0])
            assert_equals(tuple(params.aryshape), tuple(key.origShape[1:]))
            assert_equals(tuple(expectedSlices), tuple(key.imgSlices))

            try:
                _ = len(params.padding)
                padding = list(params.padding)
            except TypeError:
                padding = [params.padding] * ary.ndim

            expectedPaddedSlices = []
            expectedValSlices = []
            for slise, pad, l in zip(params.blockslices, padding, ary.shape):
                paddedStart = max(0, slise.start - pad) if not (slise.start is None) else 0
                paddedEnd = min(l, slise.stop + pad) if not (slise.stop is None) else l
                actualPadStart = slise.start - paddedStart if not (slise.start is None) else 0
                actualPadEnd = paddedEnd - slise.stop if not (slise.stop is None) else 0
                expectedPaddedSlices.append(slice(paddedStart, paddedEnd, 1))
                expectedValSlices.append(slice(actualPadStart, (paddedEnd - paddedStart) - actualPadEnd, 1))

            expectedAry = expand_dims(ary[expectedPaddedSlices], axis=0)
            expectedPaddedSlices = [slice(params.timepoint, params.timepoint + 1, 1)] + expectedPaddedSlices
            expectedValSlices = [slice(0, 1, 1)] + expectedValSlices
            assert_equals(tuple(expectedPaddedSlices), tuple(key.padImgSlices))
            assert_equals(tuple(expectedValSlices), tuple(key.valSlices))
            assert_equals(tuple(expectedAry.shape), tuple(val.shape))
            assert_true(array_equal(expectedAry, val))