AdritRao commited on
Commit
bf22f2d
·
verified ·
1 Parent(s): e6e540c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -54
app.py CHANGED
@@ -1,102 +1,104 @@
1
  import streamlit as st
2
  import pydicom
 
3
  import zipfile
4
  import os
5
  import subprocess
 
 
 
 
 
 
6
 
7
  subprocess_executed = False
8
 
9
- logo_image_path = '1.png'
 
 
10
  st.image(logo_image_path, width=150)
11
  st.title("Automated Abdominal Aortic Aneurysm Detection")
12
 
 
13
  st.write("Upload a ZIP file containing DICOM slices")
14
  uploaded_zip_file = st.file_uploader("Upload a .zip file", type=["zip"])
15
 
16
  @st.cache_resource
17
  def install_dependencies():
18
- command = "chmod +x install.sh"
19
- try:
20
- subprocess.run(command, shell=True, check=True)
21
- except subprocess.CalledProcessError as e:
22
- pass
23
-
24
- command = "./install.sh"
25
- try:
26
- subprocess.run(command, shell=True, check=True)
27
- except subprocess.CalledProcessError as e:
28
- pass
 
 
 
29
 
30
  @st.cache_resource
31
  def run_inference():
32
- command = "chmod +x inference.sh"
33
- try:
34
- subprocess.run(command, shell=True, check=True)
35
- except subprocess.CalledProcessError as e:
36
- pass
37
-
38
- command = "./inference.sh"
39
- try:
40
- subprocess.run(command, shell=True, check=True)
41
- except subprocess.CalledProcessError as e:
42
- pass
43
-
44
- def create_zip_file():
45
- outputs_directory = "/home/user/app/C2C/outputs"
46
- subdirectories = [subdir for subdir in os.listdir(outputs_directory)
47
- if os.path.isdir(os.path.join(outputs_directory, subdir))]
48
- first_subdirectory = subdirectories[0] if subdirectories else None
49
- if first_subdirectory:
50
- subdirectory_path = os.path.join(outputs_directory, first_subdirectory)
51
- temp_dicom_dir_path = os.path.join(subdirectory_path, "temp_dicom_dir")
52
-
53
- largest_slice = os.path.join(temp_dicom_dir_path, "largest_slice.png")
54
- diameter_graph = os.path.join(temp_dicom_dir_path, "diameter_graph.png")
55
- video_path = os.path.join(temp_dicom_dir_path, "video.mp4")
56
-
57
- files_to_zip = [largest_slice, diameter_graph, video_path]
58
-
59
- zip_file_path = os.path.join(outputs_directory, "outputs.zip")
60
- with zipfile.ZipFile(zip_file_path, 'w') as zipf:
61
- for file in files_to_zip:
62
- zipf.write(file, os.path.basename(file))
63
- return zip_file_path
64
- else:
65
- return None
66
 
67
  if uploaded_zip_file is not None:
68
- try:
69
  install_dependencies()
70
-
71
  temp_dir = "/home/user/app/C2C/temp_dicom_dir"
 
72
  os.makedirs(temp_dir, exist_ok=True)
 
 
73
 
 
74
  with zipfile.ZipFile(uploaded_zip_file, "r") as zip_ref:
75
  zip_ref.extractall(temp_dir)
76
 
77
  dicom_files = [os.path.join(temp_dir, f) for f in os.listdir(temp_dir) if f.endswith(".dcm")]
78
- dicom_files.sort()
79
 
 
80
  for file_path in dicom_files:
81
  ds = pydicom.dcmread(file_path)
 
 
82
  if 'PatientName' in ds:
83
  ds.PatientName = 'Anonymized'
84
  if 'PatientID' in ds:
85
  ds.PatientID = '00000000'
86
- ds.save_as(file_path)
87
 
 
 
 
 
88
  except Exception as e:
89
  st.error(f"Error: {str(e)}")
90
 
91
  if st.button("Analyze"):
 
92
  st.success("Analysis started (expected time: 5 mins)")
93
  run_inference()
94
 
 
95
  outputs_directory = "/home/user/app/C2C/outputs"
96
- zip_file_path = create_zip_file()
97
- if zip_file_path:
98
- st.success("Analysis completed. Click the button below to download the outputs.")
99
- st.download_button(label="Download Outputs", data=zip_file_path, file_name="outputs.zip", mime="application/zip")
100
 
101
  subdirectories = [subdir for subdir in os.listdir(outputs_directory)
102
  if os.path.isdir(os.path.join(outputs_directory, subdir))]
@@ -121,10 +123,12 @@ if st.button("Analyze"):
121
  st.title("Largest Slice")
122
  st.image(largest_slice, use_column_width=True)
123
 
 
124
  if os.path.exists(video_path):
125
  st.title("Video")
126
  st.video(video_path, format="video/mp4")
127
 
 
128
  if os.path.exists(image_path):
129
  st.title("Diameter Graph")
130
  st.image(image_path, use_column_width=True)
 
1
  import streamlit as st
2
  import pydicom
3
+ import matplotlib.pyplot as plt
4
  import zipfile
5
  import os
6
  import subprocess
7
+ from datetime import datetime
8
+ import shutil
9
+ import moviepy.video.io.ImageSequenceClip
10
+ from io import BytesIO
11
+ from tkinter import Tcl
12
+ from PIL import Image
13
 
14
  subprocess_executed = False
15
 
16
+ logo_image_path = '1.png' # Replace with your logo image path or URL
17
+
18
+ # Display the logo at the top of the page
19
  st.image(logo_image_path, width=150)
20
  st.title("Automated Abdominal Aortic Aneurysm Detection")
21
 
22
+ # Upload a ZIP file containing DICOM slices
23
  st.write("Upload a ZIP file containing DICOM slices")
24
  uploaded_zip_file = st.file_uploader("Upload a .zip file", type=["zip"])
25
 
26
  @st.cache_resource
27
  def install_dependencies():
28
+ command = "chmod +x install.sh"
29
+ try:
30
+ subprocess.run(command, shell=True, check=True)
31
+ print("Script 'install.sh' has been made executable.")
32
+ except subprocess.CalledProcessError as e:
33
+ print(f"Error while making the script executable: {e}")
34
+
35
+ command = "./install.sh"
36
+ try:
37
+ subprocess.run(command, shell=True, check=True)
38
+ print("Script 'install.sh' has started running.")
39
+ install_script_executed = True
40
+ except subprocess.CalledProcessError as e:
41
+ print(f"Error while running the script: {e}")
42
 
43
  @st.cache_resource
44
  def run_inference():
45
+ command = "chmod +x inference.sh"
46
+ try:
47
+ subprocess.run(command, shell=True, check=True)
48
+ print("Script 'inference.sh' has been made executable.")
49
+ except subprocess.CalledProcessError as e:
50
+ print(f"Error while making the script executable: {e}")
51
+
52
+ command = "./inference.sh"
53
+ try:
54
+ subprocess.run(command, shell=True, check=True)
55
+ print("Script 'inference.sh' has started running.")
56
+ except subprocess.CalledProcessError as e:
57
+ print(f"Error while running the script: {e}")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
 
59
  if uploaded_zip_file is not None:
60
+ try:
61
  install_dependencies()
62
+
63
  temp_dir = "/home/user/app/C2C/temp_dicom_dir"
64
+
65
  os.makedirs(temp_dir, exist_ok=True)
66
+ full_path = os.path.abspath(temp_dir)
67
+ st.success("Zip file uploaded successfully")
68
 
69
+
70
  with zipfile.ZipFile(uploaded_zip_file, "r") as zip_ref:
71
  zip_ref.extractall(temp_dir)
72
 
73
  dicom_files = [os.path.join(temp_dir, f) for f in os.listdir(temp_dir) if f.endswith(".dcm")]
74
+ dicom_files.sort()
75
 
76
+ # Anonymize DICOM files
77
  for file_path in dicom_files:
78
  ds = pydicom.dcmread(file_path)
79
+
80
+ # Anonymize personal information
81
  if 'PatientName' in ds:
82
  ds.PatientName = 'Anonymized'
83
  if 'PatientID' in ds:
84
  ds.PatientID = '00000000'
 
85
 
86
+ print("Anonymized")
87
+
88
+ ds.save_as(file_path)
89
+
90
  except Exception as e:
91
  st.error(f"Error: {str(e)}")
92
 
93
  if st.button("Analyze"):
94
+
95
  st.success("Analysis started (expected time: 5 mins)")
96
  run_inference()
97
 
98
+
99
  outputs_directory = "/home/user/app/C2C/outputs"
100
+
101
+
 
 
102
 
103
  subdirectories = [subdir for subdir in os.listdir(outputs_directory)
104
  if os.path.isdir(os.path.join(outputs_directory, subdir))]
 
123
  st.title("Largest Slice")
124
  st.image(largest_slice, use_column_width=True)
125
 
126
+ # Display the video
127
  if os.path.exists(video_path):
128
  st.title("Video")
129
  st.video(video_path, format="video/mp4")
130
 
131
+ # Display the image
132
  if os.path.exists(image_path):
133
  st.title("Diameter Graph")
134
  st.image(image_path, use_column_width=True)