4
4
import zipfile
5
5
import os
6
6
from datetime import datetime
7
+ import glob
7
8
8
9
st .set_page_config (page_title = "Upload TotalSegmentator" , page_icon = "⏫" )
9
10
10
11
st .markdown ("# Upload Zipped Image DICOM" )
11
12
st .sidebar .header ("Upload Image DICOM" )
12
13
14
+ def clean_files (path ):
15
+ files = glob .glob (path )
16
+ true_ct_files = 0
17
+ removed_files_not_dicom = 0
18
+ removed_files_not_CT = 0
19
+ for f in files :
20
+ try :
21
+ ds = pydicom .dcmread (f )
22
+ if ds .Modality != 'CT' :
23
+ os .remove (f )
24
+ removed_files_not_CT += 1
25
+ else :
26
+ ct_files += 1
27
+ except InvalidDicomError :
28
+ os .remove (f )
29
+ removed_files_not_dicom += 1
30
+ return true_ct_files , removed_files_not_CT , removed_files_not_dicom
31
+
13
32
14
33
def parse_files ():
15
34
if zip_ct is not None :
@@ -22,25 +41,10 @@ def parse_files():
22
41
os .makedirs (st .session_state ["input" ])
23
42
os .makedirs (st .session_state ["output" ])
24
43
z .extractall (st .session_state ["input" ])
25
- ct_files = z .namelist ()
26
- clean_ct_files = []
27
- dirty_ct_files = []
28
- if ct_files is not None :
29
- for ct_file in ct_files :
30
- try :
31
- dcm = pydicom .dcmread (z .open (ct_file ))
32
- # TODO add CT type check
33
- clean_ct_files .append (z .open (ct_file ))
34
- except InvalidDicomError :
35
- dirty_ct_files .append (z .open (ct_file ))
36
- st .sidebar .write (
37
- f"Successful uploaded file: { len (clean_ct_files )} /{ len (ct_files )} "
38
- )
39
- st .sidebar .write (
40
- f"Unsuccessful uploaded file: { len (dirty_ct_files )} /{ len (ct_files )} "
41
- )
42
-
43
- st .session_state ["CT" ] = clean_ct_files
44
+ true_ct_files , removed_files_not_CT , removed_files_not_dicom = clean_files (st .session_state ["input" ])
45
+ st .sidebar .write (
46
+ f"Successful checked files:\n found { true_ct_files } CT files\n removed { removed_files_not_CT } non-CT files \n removed { removed_files_not_dicom } non-DICOM files"
47
+ )
44
48
else :
45
49
st .sidebar .write ("Need to upload files first!" )
46
50
0 commit comments