Skip to content

Commit 49c3749

Browse files
committed
totalsegmentator upload file cleaning
1 parent 99aed5b commit 49c3749

File tree

1 file changed

+23
-19
lines changed

1 file changed

+23
-19
lines changed

docker/totalsegmentator/streamlit/pages/1_⏫_Upload.py

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,31 @@
44
import zipfile
55
import os
66
from datetime import datetime
7+
import glob
78

89
st.set_page_config(page_title="Upload TotalSegmentator", page_icon="⏫")
910

1011
st.markdown("# Upload Zipped Image DICOM")
1112
st.sidebar.header("Upload Image DICOM")
1213

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+
1332

1433
def parse_files():
1534
if zip_ct is not None:
@@ -22,25 +41,10 @@ def parse_files():
2241
os.makedirs(st.session_state["input"])
2342
os.makedirs(st.session_state["output"])
2443
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:\nfound {true_ct_files} CT files\nremoved {removed_files_not_CT} non-CT files \nremoved {removed_files_not_dicom} non-DICOM files"
47+
)
4448
else:
4549
st.sidebar.write("Need to upload files first!")
4650

0 commit comments

Comments
 (0)