Spaces:
Sleeping
Sleeping
| import gradio as gr, os | |
| from bootstrap_upstream import fetch_upstream | |
| from pipeline.rules import zone_lus_score, ZoneFeatures | |
| from pipeline import rtlucassen_wrapper as rtl | |
| from pipeline import medivlad_wrapper as mvl | |
| def setup_check(): | |
| results = fetch_upstream() | |
| folders = { | |
| "B-line_detection": os.path.isdir("external/B-line_detection"), | |
| "LUS-Segmentation-RT": os.path.isdir("external/LUS-Segmentation-RT"), | |
| "MeDiVLAD": os.path.isdir("external/MeDiVLAD"), | |
| "weights_rtlucassen": os.path.isdir("models/rtlucassen"), | |
| "weights_medivlad": os.path.isdir("models/medivlad"), | |
| } | |
| return {"fetched": results, "folders": folders} | |
| def score_demo_zone(_clip): | |
| try: | |
| b_counts, _ = rtl.run_bline_detector(_clip) | |
| median_b = sorted(b_counts)[len(b_counts)//2] if b_counts else 0 | |
| z = ZoneFeatures(b_count=median_b, b_area_frac=0.0, has_consolidation=False) | |
| return {"zone_score": zone_lus_score(z), "median_b": median_b} | |
| except Exception as e: | |
| return {"error": str(e)} | |
| def run_medivlad(_clip): | |
| try: | |
| return mvl.run_video_severity(_clip) | |
| except Exception as e: | |
| return {"error": str(e)} | |
| with gr.Blocks() as demo: | |
| gr.Markdown("## NeoLUS — Original Repos (private research)\n**Note:** Upload authorized weights to `/models/*`. Not for clinical use.") | |
| with gr.Accordion("Setup / Status", open=True): | |
| gr.Button("Run setup check").click(setup_check, None, gr.JSON()) | |
| with gr.Tab("Zone Scoring"): | |
| clip = gr.Video(label="Zone clip") | |
| go = gr.Button("Analyze zone") | |
| out = gr.JSON() | |
| go.click(score_demo_zone, clip, out) | |
| with gr.Tab("Video Severity (MeDiVLAD)"): | |
| clip2 = gr.Video() | |
| go2 = gr.Button("Run") | |
| out2 = gr.JSON() | |
| go2.click(run_medivlad, clip2, out2) | |
| if __name__ == "__main__": | |
| demo.launch() | |