Download README.md from Kwee-Lab/MyoSeg: direct link, hf CLI and curl.
- Browser
- Download file 3.41 kB
-
https://huggingface.co/spaces/Kwee-Lab/MyoSeg/resolve/main/README.md
- Command line
-
hf download hf://spaces/Kwee-Lab/MyoSeg/README.md
-
curl -L -o README.md https://huggingface.co/spaces/Kwee-Lab/MyoSeg/resolve/main/README.md
A newer version of the Streamlit SDK is available: 1.67.0
title: MyoSeg
emoji: 🔬
colorFrom: red
colorTo: red
sdk: streamlit
sdk_version: 1.45.1
app_file: src/streamlit_app.py
pinned: true
license: mit
MyoSeg — Myotube & Nuclei Analyzer
Version v12 (Oct 2026). Default preset Tuned to manual counts: calibrated against 55 manually
counted C2C12 wells. Held-out error: fusion index ±4.9 points, MyHC⁺ % ±4.9, myotube count r = 0.80
(see tuning/VALIDATION.md). Training defaults reproduces the earlier v9 results.
Deep-learning quantification of myotubes and nuclei in C2C12 immunofluorescence images (red = MyHC, blue = DAPI): nuclei, myotubes, MyHC⁺ nuclei, fusion index (cytoplasm-hole or pixel-overlap), nuclei per myotube and myotube area.
Code layout
| File | What it does |
|---|---|
src/myoseg_core.py |
The analysis engine — model, inference, postprocessing, metrics, quality checks, diagnosis. No Streamlit. |
src/streamlit_app.py |
The web app (UI only; calls the core). |
analyze_folder.py |
Command-line batch analysis using the same core. |
mcp_server.py |
MyoSeg as a tool for AI assistants (Model Context Protocol). |
benchmark.py |
Accuracy vs hand-labelled masks (Dice, count/FI error, uncertainty vs error). |
self_train.py |
Safe continual-learning / retraining pipeline. |
tests/ |
v9 equivalence test, MCP end-to-end test, synthetic image generator. |
Using the core from Python
import sys; sys.path.insert(0, "src")
import myoseg_core as core
model, info = core.load_model("model_final.pt")
params = core.make_params("Dense culture rescue", px_um=0.65)
res = core.analyze_image(model, core.load_rgb("img.tif"), params)
print(core.public_metrics(res["metrics"]))
print(core.compare_presets(res["probs"], res["myc_full"], params)) # no extra inference
print(core.quality_check(core.load_rgb("img.tif"), params, res["probs"]))
print(core.diagnose(res["metrics"], params))
Use MyoSeg from Claude (MCP server)
MyoSeg can be called directly by Claude Desktop, Claude Code or any MCP client. Images stay on your computer and no API key is needed.
pip install -r requirements-mcp.txt
python mcp_server.py # the client normally launches this for you
Claude Desktop — add to claude_desktop_config.json, then restart Claude:
{"mcpServers": {"myoseg": {"command": "python", "args": ["/ABSOLUTE/PATH/TO/myoseg/mcp_server.py"]}}}
Claude Code: claude mcp add myoseg -- python /ABSOLUTE/PATH/TO/myoseg/mcp_server.py
Then ask, for example: "Analyze ~/data/day5/control and ~/data/day5/treated with MyoSeg and compare the fusion index. Show me the overlay for the most uncertain image."
Tools: analyze_image, analyze_folder, compare_presets, compare_groups
(Welch t, Mann-Whitney, Cohen's d), quality_check, get_overlay, list_parameters, model_info.
Test-time augmentation and uncertainty
tta="flip4" or "d8" (sidebar: Test-time augmentation) averages the U-Net over
flipped/rotated copies. Every image also gets a model_uncertainty score
(0 = sure … 1 = coin-flip); uncertain images are queued for labelling and listed
first in the correction panel. Set UNCERTAINTY_FLAG_THR from benchmark.py output.
Benchmark against your labels
python benchmark.py /path/to/HELD_OUT_data --tta none flip4 d8 --sizes 512 768
Use images the model was not trained on.