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)
예제 #2
0
    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)
예제 #5
0
 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)