| 148 | self.assertEqual(inverted.shape, im.shape) |
| 149 | |
| 150 | def pad_test_combine_ops(self, funcs, input_shape, expected_shape): |
| 151 | for mode in TESTS_PENDING_MODE: |
| 152 | # non-lazy |
| 153 | _funcs = [] |
| 154 | for func in funcs: |
| 155 | for _func, _params in func.items(): |
| 156 | _funcs.append(_func(mode=mode[0], **_params)) |
| 157 | trans = Compose(_funcs) |
| 158 | data = self.get_arr(input_shape) |
| 159 | is_map = isinstance(_funcs[0], MapTransform) |
| 160 | im = MetaTensor(data, meta={"a": "b", "affine": np.eye(len(input_shape))}) |
| 161 | input_data = {"img": im} if is_map else im |
| 162 | result_non_lazy = trans(input_data) |
| 163 | expected = result_non_lazy["img"] if is_map else result_non_lazy |
| 164 | self.assertIsInstance(expected, MetaTensor) |
| 165 | # lazy |
| 166 | pending_result = input_data |
| 167 | for _func in _funcs: |
| 168 | _func.lazy = True |
| 169 | pending_result = _func(pending_result) |
| 170 | pending_result = pending_result["img"] if is_map else pending_result |
| 171 | self.assertIsInstance(pending_result, MetaTensor) |
| 172 | assert_allclose(pending_result.peek_pending_affine(), expected.affine) |
| 173 | assert_allclose(pending_result.peek_pending_shape(), expected.shape[1:]) |
| 174 | # TODO: mode="bilinear" may report error |
| 175 | overrides = {"mode": "nearest", "padding_mode": mode[1], "align_corners": False} |
| 176 | result = apply_pending(pending_result, overrides=overrides)[0] |
| 177 | # compare |
| 178 | assert_allclose(result, expected, rtol=1e-5) |