(self)
| 23 | class TestCrossValidation(unittest.TestCase): |
| 24 | @skip_if_quick |
| 25 | def test_values(self): |
| 26 | testing_dir = Path(__file__).parents[1] / "testing_data" |
| 27 | train_transform = Compose( |
| 28 | [ |
| 29 | LoadImaged(keys=["image", "label"]), |
| 30 | EnsureChannelFirstd(keys=["image", "label"], channel_dim="no_channel"), |
| 31 | ScaleIntensityd(keys="image"), |
| 32 | ] |
| 33 | ) |
| 34 | val_transform = LoadImaged(keys=["image", "label"]) |
| 35 | |
| 36 | def _test_dataset(dataset): |
| 37 | self.assertEqual(len(dataset), 52) |
| 38 | self.assertTrue("image" in dataset[0]) |
| 39 | self.assertTrue("label" in dataset[0]) |
| 40 | self.assertTrue(isinstance(dataset[0]["image"], MetaTensor)) |
| 41 | self.assertTupleEqual(dataset[0]["image"].shape, (1, 34, 49, 41)) |
| 42 | |
| 43 | cvdataset = CrossValidation( |
| 44 | dataset_cls=DecathlonDataset, |
| 45 | nfolds=5, |
| 46 | seed=12345, |
| 47 | root_dir=testing_dir, |
| 48 | task="Task04_Hippocampus", |
| 49 | section="validation", |
| 50 | transform=train_transform, |
| 51 | download=True, |
| 52 | ) |
| 53 | |
| 54 | with skip_if_downloading_fails(): |
| 55 | data = cvdataset.get_dataset(folds=0) |
| 56 | |
| 57 | _test_dataset(data) |
| 58 | |
| 59 | # test training data for fold [1, 2, 3, 4] of 5 splits |
| 60 | data = cvdataset.get_dataset(folds=[1, 2, 3, 4]) |
| 61 | self.assertTupleEqual(data[0]["image"].shape, (1, 35, 52, 33)) |
| 62 | self.assertEqual(len(data), 208) |
| 63 | # test train / validation for fold 4 of 5 splits |
| 64 | data = cvdataset.get_dataset(folds=[4], transform=val_transform, download=False) |
| 65 | # val_transform doesn't add the channel dim to shape |
| 66 | self.assertTupleEqual(data[0]["image"].shape, (38, 53, 30)) |
| 67 | self.assertEqual(len(data), 52) |
| 68 | data = cvdataset.get_dataset(folds=[0, 1, 2, 3]) |
| 69 | self.assertTupleEqual(data[0]["image"].shape, (1, 34, 49, 41)) |
| 70 | self.assertEqual(len(data), 208) |
| 71 | |
| 72 | |
| 73 | if __name__ == "__main__": |
nothing calls this directly
no test coverage detected