Spaces:
Running
on
CPU Upgrade
Running
on
CPU Upgrade
File size: 3,299 Bytes
9aed5ca 2fbadd4 99c6bf5 4067ddf 99c6bf5 2fbadd4 fb59ade 4067ddf 2fbadd4 fb59ade 284bdef 2fbadd4 590cb4a 2fbadd4 99c6bf5 2fbadd4 ab38378 4067ddf 2fbadd4 fb59ade 2fbadd4 fb59ade 2fbadd4 fb59ade 2fbadd4 fb59ade 2fbadd4 fb59ade 2fbadd4 fb59ade 2fbadd4 e24d2e5 fb59ade 2fbadd4 |
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 |
import gradio as gr
from PIL import Image
# Single image analysis function (your existing logic)
def analyze_image(image, min_size, circularity, do_necrosis=True):
import Organoid_Analyzer_AI2_HF as analyzer
processed_img, picname, excelname = analyzer.main([image, min_size, circularity,do_necrosis])
return Image.fromarray(processed_img), picname, excelname
# Z-stack analysis function (adapt with your own logic)
def analyze_zstack(images, min_size, circularity, distance_cutoff=30, overlap_cutoff=0.4, do_necrosis=True):
import Organoid_Analyzer_AI_zstack2_HF as analyzer
images = [Image.open(f.name) for f in images]
processed_img, picname, excelname = analyzer.main(
[images, min_size, circularity, distance_cutoff, overlap_cutoff, do_necrosis]
)
return Image.fromarray(processed_img), picname, excelname
with gr.Blocks() as demo:
gr.Markdown("# AI Organoid Analyzer\nUpload an image (or Z-Stack) to run organoid analysis.")
z_stack_checkbox = gr.Checkbox(label="Enable Z-Stack", value=False)
do_necrosis_checkbox = gr.Checkbox(label="Enable necrosis detection", value=False)
image_input_single = gr.Image(type="pil", label="Upload Image", visible=True)
image_input_multi = gr.File(file_count="multiple", type="filepath", label="Upload Z-Stack Images", visible=False)
min_size_input = gr.Number(label="Minimum Organoid Size (pixels)", value=1000)
circularity_input = gr.Number(label="Minimum Circularity", value=0.25)
zstack_distance_cutoff_input = gr.Number(label="Z-Stack Centroid Distance Cutoff (pixels)", value=30, visible=False)
zstack_overlap_cutoff_input = gr.Number(label="Z-Stack Colony Overlap Cutoff", value=0.4, visible=False)
output_image = gr.Image(type="pil", label="Analyzed Image")
output_file_img = gr.File(label="Download Image")
output_file_excel = gr.File(label="Download results (Excel)")
process_btn = gr.Button("Process")
def toggle_inputs(z_stack_enabled):
return (
gr.update(visible=not z_stack_enabled), # single input
gr.update(visible=z_stack_enabled), # multi input
gr.update(visible=z_stack_enabled), # zstack_distance_cutoff_input
gr.update(visible=z_stack_enabled) # zstack_overlap_cutoff_input
)
z_stack_checkbox.change(
toggle_inputs,
inputs=z_stack_checkbox,
outputs=[
image_input_single,
image_input_multi,
zstack_distance_cutoff_input,
zstack_overlap_cutoff_input])
def conditional_analyze(z_stack, single_image, multi_images, min_size, circularity, do_necrosis, distance_cutoff, overlap_cutoff):
if z_stack:
return analyze_zstack(multi_images, min_size, circularity, distance_cutoff, overlap_cutoff, do_necrosis)
else:
return analyze_image(single_image, min_size, circularity, do_necrosis)
process_btn.click(
conditional_analyze,
inputs=[
z_stack_checkbox,
image_input_single,
image_input_multi,
min_size_input,
circularity_input,
do_necrosis_checkbox,
zstack_distance_cutoff_input,
zstack_overlap_cutoff_input
],
outputs=[output_image, output_file_img, output_file_excel])
demo.launch()
|