Skip to content

Commit 8ed1f6b

Browse files
committed
Last commit as LABelsToolkit
1 parent 1ad29de commit 8ed1f6b

9 files changed

+100
-21
lines changed

AUTHOR

+2
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
sebastiano ferraris <[email protected]>
2+
Dzhoshkun Ismail Shakir <[email protected]>

LABelsToolkit/agents/checker.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,4 @@ def number_connected_components_per_label(self, input_segmentation, where_to_sav
3232
if where_to_save_the_log_file is not None:
3333
f = open(where_to_save_the_log_file, 'w')
3434
f.write(msg)
35-
f.close()
35+
f.close()

LABelsToolkit/agents/segmenter.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import numpy as np
22
import nibabel as nib
3-
from LABelsToolkit.tools.aux_methods.utils_path import connect_path_tail_head
43

4+
from LABelsToolkit.tools.aux_methods.utils_path import connect_path_tail_head
55
from LABelsToolkit.tools.aux_methods.utils_nib import set_new_data
66
from LABelsToolkit.tools.detections.get_segmentation import intensity_segmentation, otsu_threshold, \
77
MoG_array

LABelsToolkit/main.py

+4
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,10 @@
99
from LABelsToolkit.agents.symmetrizer import LABelsToolkitSymmetrize
1010
from LABelsToolkit.agents.checker import LABelsToolkitChecker
1111
from LABelsToolkit.agents.header_controller import LABelsToolkitHeaderController
12+
from LABelsToolkit.agents.segmenter import LABelsToolkitSegmenter
1213
from LABelsToolkit.tools.icv.icv_estimator import ICV_estimator
1314

15+
1416
class LABelsToolkit(object):
1517

1618
def __init__(self, input_data_folder=None, output_data_folder=None):
@@ -51,4 +53,6 @@ def _set_attribute_agents(self):
5153
self.symmetrize = LABelsToolkitSymmetrize(self._pfo_in, self._pfo_out)
5254
self.check = LABelsToolkitChecker(self._pfo_in, self._pfo_out)
5355
self.header = LABelsToolkitHeaderController(self._pfo_in, self._pfo_out)
56+
self.segment = LABelsToolkitSegmenter(self._pfo_in, self._pfo_out)
5457
self.icv = ICV_estimator
58+

LABelsToolkit/tools/detections/check_imperfections.py

+1-16
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from skimage import measure
44

55
from LABelsToolkit.tools.aux_methods.utils_nib import one_voxel_volume
6+
from LABelsToolkit.tools.aux_methods.label_descriptor_manager import LabelsDescriptorManager
67

78

89
def check_missing_labels(im_segm, labels_descriptor, pfi_where_log=None):
@@ -60,19 +61,3 @@ def check_missing_labels(im_segm, labels_descriptor, pfi_where_log=None):
6061
f.close()
6162

6263
print('Log status saved in {}'.format(pfi_where_log))
63-
64-
65-
if __name__ == "__main__":
66-
# TODO move to examples:
67-
import nibabel as nib
68-
from LABelsToolkit.tools.aux_methods.label_descriptor_manager import LabelsDescriptorManager
69-
70-
pfi_segm = '/Users/sebastiano/Desktop/test_segmentation.nii.gz'
71-
pfi_ld = '/Users/sebastiano/Desktop/labels_descriptor.txt'
72-
73-
pfi_output_msg = '/Users/sebastiano/Desktop/output.txt'
74-
75-
ldm = LabelsDescriptorManager(pfi_ld)
76-
77-
im_se = nib.load(pfi_segm)
78-
check_missing_labels(im_se, ldm, pfi_output_msg)

LABelsToolkit/tools/detections/get_segmentation.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ def intensity_segmentation(in_array, num_levels=5):
3434
def otsu_threshold(in_array, side='above', return_as_mask=True):
3535
"""
3636
Segmentation of an array with Otsu thresholding parameters from skimage filters.
37-
:param im: input nibabel image.
37+
:param in_array: input nibabel image.
3838
:param side: must be 'above' or 'below', representing the side of the image thresholded after Otsu response.
3939
:param return_as_mask: the output can be a boolean mask if True.
4040
:return: thresholded input image according to Otsu and input parameters.
+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import nibabel as nib
2+
3+
4+
from LABelsToolkit.tools.aux_methods.label_descriptor_manager import LabelsDescriptorManager
5+
from LABelsToolkit.main import LABelsToolkit as LaB
6+
7+
8+
pfi_segm = '/Users/sebastiano/Desktop/test_segmentation.nii.gz'
9+
pfi_ld = '/Users/sebastiano/Desktop/labels_descriptor.txt'
10+
11+
pfi_output_msg = '/Users/sebastiano/Desktop/output.txt'
12+
13+
ldm = LabelsDescriptorManager(pfi_ld)
14+
15+
im_se = nib.load(pfi_segm)
16+
la = LaB()
17+
18+
# TODO
19+
la.check.missing_labels()
20+
# check_missing_labels(im_se, ldm, pfi_output_msg)

examples/prototype_clean_a_segmentation.py

+1-2
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# ---- GENERATE DATA ----
1515

1616

17-
if True: # not os.path.exists(jph(root_dir, 'data_examples', 'ellipsoids.nii.gz')):
17+
if not os.path.exists(jph(root_dir, 'data_examples', 'ellipsoids.nii.gz')):
1818

1919
creation_list = {'Examples folder' : True,
2020
'Punt e mes' : False,
@@ -28,7 +28,6 @@
2828

2929
gen.generate_figures(creation_list)
3030

31-
3231
# ---- PATH MANAGER ----
3332

3433
# input
+69
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import os
2+
from os.path import join as jph
3+
4+
from LABelsToolkit.tools.defs import root_dir
5+
from LABelsToolkit.main import LABelsToolkit as LaB
6+
7+
import a_generate_phantoms_for_examples as gen
8+
9+
10+
# ---- GENERATE DATA ----
11+
12+
13+
if not os.path.exists(jph(root_dir, 'data_examples', 'ellipsoids.nii.gz')):
14+
15+
creation_list = {'Examples folder' : True,
16+
'Punt e mes' : False,
17+
'C' : False,
18+
'Planetaruim' : False,
19+
'Buckle ellipsoids' : True,
20+
'Ellipsoids family' : False,
21+
'Cubes in the sky' : False,
22+
'Sandwich' : False,
23+
'Four-folds' : False}
24+
25+
gen.generate_figures(creation_list)
26+
27+
28+
# ---- PATH MANAGER ----
29+
30+
# input:
31+
pfi_input_anatomy = jph(root_dir, 'data_examples', 'ellipsoids.nii.gz')
32+
pfo_output_folder = jph(root_dir, 'data_output')
33+
34+
assert os.path.exists(pfi_input_anatomy), pfi_input_anatomy
35+
assert os.path.exists(pfo_output_folder)
36+
37+
# output:
38+
pfi_intensities_segmentation = jph(pfo_output_folder, 'ellipsoids_segm_int.nii.gz')
39+
pfi_otsu_segmentation = jph(pfo_output_folder, 'ellipsoids_segm_otsu.nii.gz')
40+
pfi_mog_segmentation_crisp = jph(pfo_output_folder, 'ellipsoids_segm_mog_crisp.nii.gz')
41+
pfi_mog_segmentation_prob = jph(pfo_output_folder, 'ellipsoids_segm_mog_prob.nii.gz')
42+
43+
print('---- PROCESS 1: intensities segmentation ----')
44+
45+
la = LaB()
46+
la.segment.simple_intensities_thresholding(pfi_input_anatomy, pfi_intensities_segmentation, number_of_levels=5)
47+
48+
print('---- PROCESS 2: Otsu ----')
49+
50+
la = LaB()
51+
la.segment.otsu_thresholding(pfi_input_anatomy, pfi_otsu_segmentation, side='above', return_as_mask=False)
52+
53+
print('---- PROCESS 2: MoG ----')
54+
55+
la = LaB()
56+
la.segment.mixture_of_gaussians(pfi_input_anatomy, pfi_mog_segmentation_crisp, pfi_mog_segmentation_prob,
57+
K=5, see_histogram=True)
58+
59+
print('---- VIEW ----')
60+
61+
opener1 = 'itksnap -g {} -s {}'.format(pfi_input_anatomy, pfi_intensities_segmentation)
62+
opener2 = 'itksnap -g {} -s {}'.format(pfi_input_anatomy, pfi_otsu_segmentation)
63+
opener3 = 'itksnap -g {} -s {}'.format(pfi_input_anatomy, pfi_mog_segmentation_crisp)
64+
opener4 = 'itksnap -g {} -o {}'.format(pfi_input_anatomy, pfi_mog_segmentation_prob)
65+
66+
os.system(opener1)
67+
os.system(opener2)
68+
os.system(opener3)
69+
os.system(opener4)

0 commit comments

Comments
 (0)