def test_dataloader(self): dataset = Dataset( data=[{ "img": np.array([[[0.0, 1.0], [2.0, 3.0]]]) }, { "img": np.array([[[0.0, 1.0], [2.0, 3.0]]]) }], transform=IntensityStatsd(keys="img", ops=["max", "mean"], key_prefix="orig"), ) # set num workers = 0 for mac / win num_workers = 2 if sys.platform == "linux" else 0 dataloader = DataLoader(dataset=dataset, num_workers=num_workers, batch_size=2) orig_method = mp.get_start_method() mp.set_start_method("spawn", force=True) for d in dataloader: meta = d["img_meta_dict"] np.testing.assert_allclose(meta["orig_max"], [3.0, 3.0], atol=1e-3) np.testing.assert_allclose(meta["orig_mean"], [1.5, 1.5], atol=1e-3) # restore the mp method mp.set_start_method(orig_method, force=True)
def test_factor(self): key = "img" stats = IntensityStatsd(keys=key, ops="max", key_prefix="orig") shifter = ShiftIntensityd(keys=[key], offset=1.0, factor_key=["orig_max"]) data = {key: self.imt, PostFix.meta(key): {"affine": None}} result = shifter(stats(data)) expected = self.imt + 1.0 * np.nanmax(self.imt) np.testing.assert_allclose(result[key], expected)
def test_mask(self): data = { "img": np.array([[[0.0, 1.0], [2.0, 3.0]]]), "img_mask": np.array([[[1, 0], [1, 0]]], dtype=bool) } stats = IntensityStatsd(keys="img", ops=["max", "mean"], mask_keys="img_mask", key_prefix="orig") meta = stats(data)["img_meta_dict"] np.testing.assert_allclose(meta["orig_max"], 2.0, atol=1e-3) np.testing.assert_allclose(meta["orig_mean"], 1.0, atol=1e-3)
def test_factor(self): key = "img" stats = IntensityStatsd(keys=key, ops="max", key_prefix="orig") shifter = RandShiftIntensityd(keys=[key], offsets=1.0, factor_key=["orig_max"], prob=1.0) data = {key: self.imt, key + "_meta_dict": {"affine": None}} shifter.set_random_state(seed=0) result = shifter(stats(data)) np.random.seed(0) # simulate the randomize() of transform np.random.random() expected = self.imt + np.random.uniform(low=-1.0, high=1.0) * np.nanmax(self.imt) np.testing.assert_allclose(result[key], expected)
def test_value(self, input_param, data, meta_key, expected): meta = IntensityStatsd(**input_param)(data)[meta_key] for k, v in expected.items(): self.assertTrue(k in meta) np.testing.assert_allclose(v, meta[k], atol=1e-3)