Spaces:
Sleeping
Sleeping
File size: 5,381 Bytes
3318510 e9f7fd2 bf22f2d affc586 3eb11cb e665ab2 bf22f2d 5253012 94e3d42 84f200a 45f9554 bf22f2d 45f9554 747d9f4 bf22f2d 9eed4fa b531d2e bf22f2d b531d2e b3c4662 bf22f2d b3c4662 b531d2e 50f84d0 7a0b4da 50f84d0 3281da3 50f84d0 3281da3 50f84d0 60f23bc 50f84d0 807f381 057ede6 807f381 d17c251 50f84d0 94985b8 bf22f2d 94985b8 50f84d0 bf22f2d 94985b8 50f84d0 bf22f2d 50f84d0 b531d2e 807f381 b531d2e 50f84d0 36ee72b 50f84d0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
import streamlit as st
import pydicom
import matplotlib.pyplot as plt
import zipfile
import os
import subprocess
from datetime import datetime
import shutil
import moviepy.video.io.ImageSequenceClip
from io import BytesIO
from tkinter import Tcl
from PIL import Image
subprocess_executed = False
# logo_image_path = '1.png' # Replace with your logo image path or URL
# # Display the logo at the top of the page
# st.image(logo_image_path, width=150)
# st.title("Automated Abdominal Aortic Aneurysm Detection")
# Upload a ZIP file containing DICOM slices
st.write("Upload a ZIP file containing DICOM slices")
uploaded_zip_file = st.file_uploader("Upload a .zip file", type=["zip"])
@st.cache_resource
def install_dependencies():
command = "chmod +x install.sh"
try:
subprocess.run(command, shell=True, check=True)
print("Script 'install.sh' has been made executable.")
except subprocess.CalledProcessError as e:
print(f"Error while making the script executable: {e}")
command = "./install.sh"
try:
subprocess.run(command, shell=True, check=True)
print("Script 'install.sh' has started running.")
install_script_executed = True
except subprocess.CalledProcessError as e:
print(f"Error while running the script: {e}")
@st.cache_resource
def run_inference():
command = "chmod +x inference.sh"
try:
subprocess.run(command, shell=True, check=True)
print("Script 'inference.sh' has been made executable.")
except subprocess.CalledProcessError as e:
print(f"Error while making the script executable: {e}")
command = "./inference.sh"
try:
subprocess.run(command, shell=True, check=True)
print("Script 'inference.sh' has started running.")
except subprocess.CalledProcessError as e:
print(f"Error while running the script: {e}")
if uploaded_zip_file is not None:
try:
install_dependencies()
temp_dir = "/home/user/app/C2C/temp_dicom_dir"
os.makedirs(temp_dir, exist_ok=True)
full_path = os.path.abspath(temp_dir)
st.success("Zip file uploaded successfully")
with zipfile.ZipFile(uploaded_zip_file, "r") as zip_ref:
zip_ref.extractall(temp_dir)
dicom_files = [os.path.join(temp_dir, f) for f in os.listdir(temp_dir) if f.endswith(".dcm")]
dicom_files.sort()
# Anonymize DICOM files
for file_path in dicom_files:
ds = pydicom.dcmread(file_path)
# Anonymize personal information
if 'PatientName' in ds:
ds.PatientName = 'Anonymized'
if 'PatientID' in ds:
ds.PatientID = '00000000'
print("Anonymized")
ds.save_as(file_path)
except Exception as e:
st.error(f"Error: {str(e)}")
if st.button("Analyze"):
try:
st.success("Analysis started (expected time: 5 mins)")
run_inference()
outputs_directory = "/home/user/app/C2C/outputs"
if os.path.exists(outputs_directory):
subdirectories = [subdir for subdir in os.listdir(outputs_directory)
if os.path.isdir(os.path.join(outputs_directory, subdir))]
first_subdirectory = subdirectories[0] if subdirectories else None
if first_subdirectory:
subdirectory_path = os.path.join(outputs_directory, first_subdirectory)
temp_dicom_dir_path = os.path.join(subdirectory_path, "temp_dicom_dir")
dicom_subdirectories = [subdir for subdir in os.listdir(temp_dicom_dir_path)
if os.path.isdir(os.path.join(temp_dicom_dir_path, subdir))]
first_dicom_subdirectory = dicom_subdirectories[0] if dicom_subdirectories else None
if first_dicom_subdirectory:
video_path = os.path.join(temp_dicom_dir_path, first_dicom_subdirectory, "images/summary/aaa.mp4")
image_path = os.path.join(temp_dicom_dir_path, first_dicom_subdirectory, "images/summary/diameter_graph.png")
largest_slice = os.path.join(temp_dicom_dir_path, first_dicom_subdirectory, "images/summary/out.png")
if os.path.exists(largest_slice):
st.title("Largest Slice")
st.image(largest_slice, use_column_width=True)
# Display the video
if os.path.exists(video_path):
st.title("Video")
st.video(video_path, format="video/mp4")
# Display the image
if os.path.exists(image_path):
st.title("Diameter Graph")
st.image(image_path, use_column_width=True)
else:
st.warning("No subdirectories or folders found inside 'temp_dicom_dir'.")
else:
st.warning("No subdirectories or folders found inside the 'outputs' directory.")
else:
st.error("The 'outputs' directory does not exist.")
except Exception as e:
st.error(f"An error occurred: {str(e)}") |