Spaces:
Sleeping
Sleeping
File size: 4,278 Bytes
3318510 e9f7fd2 affc586 3eb11cb e665ab2 acda587 e665ab2 94e3d42 84f200a e9f7fd2 807f381 2033578 807f381 2ff95d7 5c739f9 fc7bdd2 2ff95d7 fc7bdd2 2ff95d7 6138273 9cfe6a8 5a2944b 9cfe6a8 807f381 057ede6 807f381 2033578 807f381 94e952a acda587 807f381 94e3d42 |
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 |
import streamlit as st
import pydicom
import matplotlib.pyplot as plt
import zipfile
import os
import subprocess
from datetime import datetime
# Flag to track if subprocess commands have been executed
subprocess_executed = False
# Streamlit app title
st.title("DICOM Image Viewer")
# Upload a ZIP file containing DICOM slices
uploaded_zip_file = st.file_uploader("Upload a ZIP file containing DICOM slices", type=["zip"])
# Function to read and display the DICOM image
@st.cache(suppress_st_warning=True, show_spinner=False)
def display_dicom_image(selected_slice, dicom_files):
dicom_data = pydicom.dcmread(dicom_files[selected_slice])
# Display the DICOM image
plt.imshow(dicom_data.pixel_array, cmap=plt.cm.bone)
plt.axis("off")
plt.title("DICOM Image")
plt.tight_layout()
return plt
if uploaded_zip_file is not None:
try:
# Create a temporary directory to unzip the files
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.")
except subprocess.CalledProcessError as e:
print(f"Error while running the script: {e}")
temp_dir = "/home/user/app/C2C/temp_dicom_dir"
os.makedirs(temp_dir, exist_ok=True)
full_path = os.path.abspath(temp_dir)
st.write(f"Temporary directory path: {full_path}")
with zipfile.ZipFile(uploaded_zip_file, "r") as zip_ref:
zip_ref.extractall(temp_dir)
# Get a list of DICOM files in the directory
dicom_files = [os.path.join(temp_dir, f) for f in os.listdir(temp_dir) if f.endswith(".dcm")]
dicom_files.sort() # Sort the files
if len(dicom_files) == 0:
st.error("No DICOM files found in the ZIP archive.")
else:
# Display a slider for selecting the slice
selected_slice = st.slider("Select a slice", 0, len(dicom_files) - 1, 0)
# Display the DICOM image using the cached function
plt = display_dicom_image(selected_slice, dicom_files)
st.pyplot(plt)
if not subprocess_executed:
command = "chmod +x 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 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 making the script executable: {e}")
# Set the flag to indicate that subprocess commands have been executed
subprocess_executed = True
current_datetime = datetime.now().strftime("%Y-%m-%d_%H-%M-%S")
video_path = f"/home/user/app/C2C/comp2comp/outputs/{current_datetime}/temp_dicom_dir/images/summary/aaa.mp4"
image_path = f"/home/user/app/C2C/comp2comp/outputs/{current_datetime}/temp_dicom_dir/images/summary/diameter_graph.png"
# Display the video generated by the inference script
if os.path.exists(video_path):
st.video(video_path, format="video/mp4")
# Display the image generated by the inference script
if os.path.exists(image_path):
st.image(image_path, caption="Diameter Graph", use_column_width=True)
except Exception as e:
st.error(f"Error: {str(e)}")
finally:
# Clean up by removing the temporary directory
for file in dicom_files:
os.remove(file)
os.rmdir(temp_dir)
st.write("Upload a ZIP file containing DICOM slices to view the images.")
|