Diff of /AutoSegmentationGUI.py [000000] .. [ffcb78]

Switch to unified view

a b/AutoSegmentationGUI.py
1
import tkinter as tk
2
from tkinter import messagebox
3
from tkinter import ttk
4
import os
5
import sys
6
7
sys.path.append(os.path.join(os.getcwd(), 'Preprocessing Medical Data Pipeline'))
8
import main
9
10
def create_subtitle(text):
11
    subtitle_label = tk.Label(root, text=text, font=("Helvetica", 12, "bold"), pady=5)
12
    subtitle_label.pack()
13
14
15
def run_script_preprocessing():
16
    ScanDirectory = entry_scan_directory.get("1.0", "end-1c")
17
    # runTask = parameter0_combobox.get()
18
    scan_folder_name = entry_parameter5.get("1.0", "end-1c")
19
    # mask_file_name = entry_parameter6.get("1.0", "end-1c")
20
    resizing = parameter2_combobox.get()
21
22
    main.Preprocessing(ScanDirectory, scan_folder_name, resizing)
23
24
# def run_script_data_aug():
25
#     aug_fname = entry_parameter14.get("1.0", "end-1c")
26
#     num_augs = entry_parameter4.get()
27
#     ScanDirectory = entry_scan_directory.get("1.0", "end-1c")
28
29
#     main.DataAug(ScanDirectory, aug_fname, num_augs)
30
31
def run_script_prep_test_scan():
32
    # runTask = parameter9_combobox.get()
33
    cutoffSlice = entry_parameter8.get()
34
    ScanDirectory = entry_scan_directory.get("1.0", "end-1c")
35
    folders = entry_parameter7.get("1.0", "end-1c")
36
37
    main.preprocessTestScansMain(cutoffSlice, ScanDirectory, folders)
38
39
def run_script_visualise():
40
    # runTask = parameter9_combobox.get()
41
    cutoffSlice = entry_parameter12.get()
42
    mask_file_name = entry_parameter13.get("1.0", "end-1c")
43
    ScanDirectory = entry_scan_directory.get("1.0", "end-1c")
44
    main.VisualiseSlice(ScanDirectory, mask_file_name, cutoffSlice)
45
46
def run_script_model():
47
    # runTask = parameter9_combobox.get()
48
    subjectfname = entry_parameter21.get("1.0", "end-1c")
49
    ScanDirectory = entry_scan_directory.get("1.0", "end-1c")
50
    main.AutoSegModel(ScanDirectory, subjectfname)
51
52
53
# Create the main window
54
root = tk.Tk()
55
root.title("Lower Limb Musculoskeletal Automatic Segmentation Tool")
56
57
58
label_scan_directory = tk.Label(root, text="Base Directory (Example: D:/MRI - Tairawhiti):", font=("Helvetica", 12, "bold"))  # Changed label text
59
label_scan_directory.pack()
60
entry_scan_directory = tk.Text(root, height=1, width=100)
61
entry_scan_directory.pack()
62
# entry_scan_directory = tk.Entry(root)  # Changed variable name
63
# entry_scan_directory.pack()
64
65
create_subtitle('-'*160)
66
create_subtitle("Preprocessing Training Data (DICOM MRI Scans + NIFITI Binary Segmentation Masks)")
67
create_subtitle('-'*160)
68
69
# Create input fields
70
# label_parameter0 = tk.Label(root, text="Run Preprocessing Raw DICOM MRI Scans & Raw NIFITI Segmentation Masks Task:")
71
# label_parameter0.pack()
72
# parameter0_values = ["True", "False"]
73
# parameter0_combobox = ttk.Combobox(root, values=parameter0_values)
74
# parameter0_combobox.pack()
75
76
77
label_parameter5 = tk.Label(root, text="Scan Folder Name (Example: 6_AutoBindWATER_650_9B):") 
78
label_parameter5.pack()
79
entry_parameter5 = tk.Text(root, height=1, width=40)
80
entry_parameter5.pack()
81
82
# label_parameter6 = tk.Label(root, text="Mask File Name (File Type: _.nii) (Example: 6_RR_fibula_9B) (Note: if Multi-Class, set to 'multi'!):") 
83
# label_parameter6.pack()
84
# entry_parameter6 = tk.Text(root, height=1, width=40)
85
# entry_parameter6.pack()
86
87
label_parameter2 = tk.Label(root, text="Select Image Data Size: ")
88
label_parameter2.pack()
89
parameter2_values = ["512x512", "256x256"]
90
parameter2_combobox = ttk.Combobox(root, values=parameter2_values)
91
parameter2_combobox.pack()
92
93
# label_parameter3 = tk.Label(root, text="Apply Image Preprocessing Techniques:")
94
# label_parameter3.pack()
95
# parameter3_values = ["True", "False"]
96
# parameter3_combobox = ttk.Combobox(root, values=parameter3_values)
97
# parameter3_combobox.pack()
98
99
# label_parameter4 = tk.Label(root, text="Cropping Dimensions (If Apply_Image_Preprocessing_Techniques = True) (Format: [top,bottom,left,right]):") 
100
# label_parameter4.pack()
101
# entry_parameter4 = tk.Entry(root)
102
# entry_parameter4.pack()
103
104
# Create run button
105
create_subtitle('-'*80)
106
run_button = tk.Button(root, text="Run Preprocessing Layer (Scan Stack & Segmentation Masks)", command=run_script_preprocessing)
107
run_button.pack()
108
109
create_subtitle('-'*160)
110
create_subtitle("Preprocessing Inference/Test Data (Raw DICOM MRI Scans)")
111
create_subtitle('-'*160)
112
113
# label_parameter9 = tk.Label(root, text="Run Preprocessing Patient Scans For Automatic Segmentation Task:")
114
# label_parameter9.pack()
115
# parameter9_values = ["True", "False"]
116
# parameter9_combobox = ttk.Combobox(root, values=parameter3_values)
117
# parameter9_combobox.pack()
118
119
120
label_parameter7 = tk.Label(root, text="Scan Folder Name (Example: 6_AutoBindWATER_650_9B):") 
121
label_parameter7.pack()
122
entry_parameter7 = tk.Text(root, height=1, width=40)
123
entry_parameter7.pack()
124
125
126
label_parameter8 = tk.Label(root, text="Approximate Slice Index of Pelvis (Lowest Slice Index of Any Region of Interest Being Segmented):") 
127
label_parameter8.pack()
128
entry_parameter8 = tk.Entry(root)
129
entry_parameter8.pack()
130
131
create_subtitle('-'*80)
132
run_button = tk.Button(root, text="Generate Preprocessed Inference/Prediction (Scan Stack)", command=run_script_prep_test_scan)
133
run_button.pack()
134
135
136
create_subtitle('-'*160)
137
create_subtitle("Run Automatic Segmentation Model (Pre-trained resnet34 U-Net)")
138
create_subtitle('-'*160)
139
140
# label_parameter9 = tk.Label(root, text="Run Preprocessing Patient Scans For Automatic Segmentation Task:")
141
# label_parameter9.pack()
142
# parameter9_values = ["True", "False"]
143
# parameter9_combobox = ttk.Combobox(root, values=parameter3_values)
144
# parameter9_combobox.pack()
145
146
147
label_parameter21 = tk.Label(root, text="Subject Scan File Name (Example: msk_006):") 
148
label_parameter21.pack()
149
entry_parameter21 = tk.Text(root, height=1, width=40)
150
entry_parameter21.pack()
151
152
create_subtitle('-'*80)
153
run_button = tk.Button(root, text="Generate Segmentation Output", command=run_script_model)
154
run_button.pack()
155
156
# create_subtitle('-'*160)
157
# create_subtitle("Data Augmentation")
158
# create_subtitle('-'*160)
159
160
161
# label_parameter14 = tk.Label(root, text="Preprocessed Data File Name (Example: msk_006):") 
162
# label_parameter14.pack()
163
# entry_parameter14 = tk.Text(root, height=1, width=40)
164
# entry_parameter14.pack()
165
166
# label_parameter4 = tk.Label(root, text="Number of Augmentations Per Image:") 
167
# label_parameter4.pack()
168
# entry_parameter4 = tk.Entry(root)
169
# entry_parameter4.pack()
170
171
172
# create_subtitle('-'*80)
173
# run_button = tk.Button(root, text="Augment Training Data", command=run_script_data_aug)
174
# run_button.pack()
175
176
177
178
create_subtitle('-'*160)
179
create_subtitle("Visualisations of 2D Scans & Masks")
180
create_subtitle('-'*160)
181
182
label_parameter12 = tk.Label(root, text="Slice Number:") 
183
label_parameter12.pack()
184
entry_parameter12 = tk.Entry(root)
185
entry_parameter12.pack()
186
187
label_parameter13 = tk.Label(root, text="Mask File Name (Example: 4_R_tibia_5A, Example(Multi): msk_006) (Requires the preprocessed data!):") 
188
label_parameter13.pack()
189
entry_parameter13 = tk.Text(root, height=1, width=40)
190
entry_parameter13.pack()
191
192
create_subtitle('-'*80)
193
run_button = tk.Button(root, text="Generate Data Visualisations", command=run_script_visualise)
194
run_button.pack()
195
create_subtitle('-'*160)
196
197
# Start the main loop
198
root.mainloop()