MCPcopy Create free account
hub / github.com/Project-MONAI/MONAI / test_decollated

Method test_decollated

tests/data/utils/test_decollate.py:215–253  ·  view source on GitHub ↗
(self)

Source from the content-addressed store, hash-verified

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
256if __name__ == "__main__":

Callers

nothing calls this directly

Calls 2

DecollatedClass · 0.90
metaMethod · 0.45

Tested by

no test coverage detected