Spaces:
Sleeping
Sleeping
File size: 4,126 Bytes
3318510 e9f7fd2 ba1be58 affc586 3eb11cb e665ab2 ba1be58 5253012 94e3d42 84f200a d51683b ba1be58 d11206a ba1be58 6044769 e02146a b531d2e 6044769 bf22f2d 6044769 b531d2e 6044769 e02146a b3c4662 6044769 bf22f2d 6044769 bf22f2d 6044769 e02146a 6044769 50f84d0 6044769 |
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 |
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'
st.image(logo_image_path, width=150)
st.title("Automated Abdominal Aortic Aneurysm Detection")
# Function to install dependencies
@st.cache_resource
def install_dependencies():
command = "chmod +x install.sh"
subprocess.run(command, shell=True, check=True)
command = "./install.sh"
subprocess.run(command, shell=True, check=True)
# Function to run inference
@st.cache_resource
def run_inference():
command = "chmod +x inference.sh"
subprocess.run(command, shell=True, check=True)
command = "./inference.sh"
subprocess.run(command, shell=True, check=True)
# Function to zip and download files
def zip_and_download(directory, zip_filename):
zipf = zipfile.ZipFile(zip_filename, 'w', zipfile.ZIP_DEFLATED)
for root, _, files in os.walk(directory):
for file in files:
zipf.write(os.path.join(root, file), os.path.relpath(os.path.join(root, file), directory))
zipf.close()
with open(zip_filename, 'rb') as f:
bytes_data = f.read()
st.download_button(label="Download Outputs", data=bytes_data, file_name=zip_filename, mime="application/zip")
# Main Streamlit code
def main():
st.write("Upload a ZIP file containing DICOM slices")
uploaded_zip_file = st.file_uploader("Upload a .zip file", type=["zip"])
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)
with zipfile.ZipFile(uploaded_zip_file, "r") as zip_ref:
zip_ref.extractall(temp_dir)
st.success("Zip file uploaded successfully")
if st.button("Analyze"):
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")
video_path = os.path.join(temp_dicom_dir_path, "images/summary/aaa.mp4")
image_path = os.path.join(temp_dicom_dir_path, "images/summary/diameter_graph.png")
largest_slice = os.path.join(temp_dicom_dir_path, "images/summary/out.png")
if os.path.exists(video_path) and os.path.exists(image_path) and os.path.exists(largest_slice):
zip_filename = os.path.join(temp_dir, "outputs.zip")
zip_and_download(temp_dicom_dir_path, zip_filename)
st.title("Largest Slice")
st.image(largest_slice, use_column_width=True)
st.title("Video")
st.video(video_path, format="video/mp4")
st.title("Diameter Graph")
st.image(image_path, use_column_width=True)
else:
st.error("Output files not found.")
else:
st.warning("No subdirectories found inside 'outputs'.")
else:
st.error("The 'outputs' directory does not exist.")
except Exception as e:
st.error(f"Error: {str(e)}")
if __name__ == "__main__":
main()
|