From a2698a1087fed9bc0eb0626cfc5576ddd1a41f3e Mon Sep 17 00:00:00 2001 From: neuronflow Date: Mon, 4 Dec 2023 17:35:33 +0100 Subject: [PATCH 1/6] new: add mask to input Signed-off-by: neuronflow --- tests/test_data/input/bet_tcia_example_t1c_mask.nii.gz | 1 + 1 file changed, 1 insertion(+) create mode 100644 tests/test_data/input/bet_tcia_example_t1c_mask.nii.gz diff --git a/tests/test_data/input/bet_tcia_example_t1c_mask.nii.gz b/tests/test_data/input/bet_tcia_example_t1c_mask.nii.gz new file mode 100644 index 0000000..b6fc495 --- /dev/null +++ b/tests/test_data/input/bet_tcia_example_t1c_mask.nii.gz @@ -0,0 +1 @@ +�3A�=_����7������������?A.���~��(����N��]���~Z��_��c�л�p; \ No newline at end of file From bd9f6f20a172b672dc5f3c29897189824e9cf8f0 Mon Sep 17 00:00:00 2001 From: neuronflow Date: Mon, 4 Dec 2023 17:49:11 +0100 Subject: [PATCH 2/6] only copy if the file does not exist Signed-off-by: neuronflow --- .../brain_extraction/brain_extractor.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/brainles_preprocessing/brain_extraction/brain_extractor.py b/brainles_preprocessing/brain_extraction/brain_extractor.py index de9cac5..030504e 100644 --- a/brainles_preprocessing/brain_extraction/brain_extractor.py +++ b/brainles_preprocessing/brain_extraction/brain_extractor.py @@ -88,7 +88,8 @@ def extract( + "_mask.nii.gz" ) - copyfile( - src=hdbet_mask_path, - dst=brain_mask_path, - ) + if hdbet_mask_path != brain_mask_path: + copyfile( + src=hdbet_mask_path, + dst=brain_mask_path, + ) From 3a2225f4b621c995e709951bb9f356f47cd90b94 Mon Sep 17 00:00:00 2001 From: neuronflow Date: Mon, 4 Dec 2023 17:49:39 +0100 Subject: [PATCH 3/6] new: mask Signed-off-by: neuronflow --- .../test_data/bet_tcia_example_t1c_mask.nii.gz | Bin 0 -> 23567 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/test_data/bet_tcia_example_t1c_mask.nii.gz diff --git a/tests/test_data/bet_tcia_example_t1c_mask.nii.gz b/tests/test_data/bet_tcia_example_t1c_mask.nii.gz new file mode 100644 index 0000000000000000000000000000000000000000..44cd865b6594078e011e66526368e0b0e49f3e51 GIT binary patch literal 23567 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 S Date: Mon, 4 Dec 2023 17:50:08 +0100 Subject: [PATCH 4/6] updated hdbet tests Signed-off-by: neuronflow --- tests/test_brain_extractor.py | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/tests/test_brain_extractor.py b/tests/test_brain_extractor.py index 54ca6d7..c9b0ad4 100644 --- a/tests/test_brain_extractor.py +++ b/tests/test_brain_extractor.py @@ -16,15 +16,21 @@ def setUp(self): self.brain_extractor = HDBetExtractor() self.input_image_path = input_dir + "/tcia_example_t1c.nii.gz" + self.input_brain_mask_path = input_dir + "/bet_tcia_example_t1c_mask.nii.gz" self.masked_image_path = self.output_dir + "/bet_tcia_example_t1c.nii.gz" - self.brain_mask_path = self.output_dir + "/bet_tcia_example_t1c_masked.nii.gz" + self.brain_mask_path = self.output_dir + "/bet_tcia_example_t1c_mask.nii.gz" + self.masked_again_image_path = ( + self.output_dir + "/bet_tcia_example_t1c_masked2.nii.gz" + ) print(self.input_image_path) print(self.masked_image_path) def tearDown(self): # Clean up created files if they exist - shutil.rmtree(self.output_dir) + #shutil.rmtree(self.output_dir) + ... + def test_extract_creates_output_files(self): # we try to run the fastest possible skullstripping on GPU @@ -47,11 +53,12 @@ def test_extract_creates_output_files(self): ) def test_apply_mask_creates_output_file(self): - # self.brain_extractor.apply_mask( - # self.input_image, self.mask_image, self.output_image - # ) - # self.assertTrue( - # os.path.exists(self.output_image_path), - # "Output image file was not created in apply_mask.", - # ) - ... + self.brain_extractor.apply_mask( + input_image_path=self.input_image_path, + mask_image_path=self.input_brain_mask_path, + masked_image_path=self.masked_again_image_path, + ) + self.assertTrue( + os.path.exists(self.masked_again_image_path), + "Output image file was not created in apply_mask.", + ) From 8aed8a30697652954c8b41f8916f5c45f4bc58df Mon Sep 17 00:00:00 2001 From: neuronflow Date: Mon, 4 Dec 2023 17:50:18 +0100 Subject: [PATCH 5/6] cleanup Signed-off-by: neuronflow --- tests/test_brain_extractor.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/tests/test_brain_extractor.py b/tests/test_brain_extractor.py index c9b0ad4..85c963a 100644 --- a/tests/test_brain_extractor.py +++ b/tests/test_brain_extractor.py @@ -28,9 +28,8 @@ def setUp(self): def tearDown(self): # Clean up created files if they exist - #shutil.rmtree(self.output_dir) - ... - + shutil.rmtree(self.output_dir) + def test_extract_creates_output_files(self): # we try to run the fastest possible skullstripping on GPU From 9c5fa05701d9c0610588f880a8005bca1fff4e32 Mon Sep 17 00:00:00 2001 From: neuronflow Date: Mon, 4 Dec 2023 17:50:56 +0100 Subject: [PATCH 6/6] bigger mask Signed-off-by: neuronflow --- .../bet_tcia_example_t1c_mask.nii.gz | Bin 23567 -> 0 bytes .../input/bet_tcia_example_t1c_mask.nii.gz | Bin 139 -> 23567 bytes 2 files changed, 0 insertions(+), 0 deletions(-) delete mode 100644 tests/test_data/bet_tcia_example_t1c_mask.nii.gz diff --git a/tests/test_data/bet_tcia_example_t1c_mask.nii.gz b/tests/test_data/bet_tcia_example_t1c_mask.nii.gz deleted file mode 100644 index 44cd865b6594078e011e66526368e0b0e49f3e51..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23567 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 SleM*si-