(self)
| 213 | self.assertEqual(out[1]["out"], 0) # verify padding fill_value |
| 214 | |
| 215 | def test_decollated(self): |
| 216 | test_case = { |
| 217 | "image": torch.tensor([[[1, 2]], [[3, 4]]]), |
| 218 | "meta": {"out": ["test", "test"]}, |
| 219 | PostFix.meta("image"): {"scl_slope": torch.Tensor((0.0, 0.0))}, |
| 220 | "loss": 0.85, |
| 221 | } |
| 222 | transform = Decollated(keys=["meta", PostFix.meta("image")], detach=False) |
| 223 | out = transform(test_case) |
| 224 | self.assertFalse("loss" in out) |
| 225 | self.assertEqual(out[0]["meta"]["out"], "test") |
| 226 | self.assertEqual(out[0][PostFix.meta("image")]["scl_slope"], 0.0) |
| 227 | self.assertTrue(isinstance(out[0][PostFix.meta("image")]["scl_slope"], torch.Tensor)) |
| 228 | # decollate all data with keys=None |
| 229 | transform = Decollated(keys=None, detach=True) |
| 230 | out = transform(test_case) |
| 231 | self.assertEqual(out[1]["loss"], 0.85) |
| 232 | self.assertEqual(out[0]["meta"]["out"], "test") |
| 233 | self.assertEqual(out[0][PostFix.meta("image")]["scl_slope"], 0.0) |
| 234 | self.assertTrue(isinstance(out[0][PostFix.meta("image")]["scl_slope"], float)) |
| 235 | |
| 236 | # test list input |
| 237 | test_case = [ |
| 238 | torch.tensor([[[1, 2]], [[3, 4]]]), |
| 239 | {"out": ["test", "test"]}, |
| 240 | {"scl_slope": torch.Tensor((0.0, 0.0))}, |
| 241 | {"out2": ["test1"]}, |
| 242 | 0.85, |
| 243 | [], |
| 244 | ] |
| 245 | transform = Decollated(keys=None, detach=False, fill_value=-1) |
| 246 | out = transform(test_case) |
| 247 | |
| 248 | self.assertEqual(out[0][-2], 0.85) # scalar replicates |
| 249 | self.assertEqual(out[1][-2], 0.85) # scalar replicates |
| 250 | self.assertEqual(out[1][-3], -1) # fill value for the dictionary item |
| 251 | self.assertEqual(out[0][1]["out"], "test") |
| 252 | self.assertEqual(out[0][2]["scl_slope"], 0.0) |
| 253 | self.assertTrue(isinstance(out[0][2]["scl_slope"], torch.Tensor)) |
| 254 | |
| 255 | |
| 256 | if __name__ == "__main__": |
nothing calls this directly
no test coverage detected