# PancIsletMass v0

마우스 췌장 multiplex IHC whole-slide image (WSI) 입력 → 자동 β-cell mass
morphometry standalone Streamlit 도구. **2026-05-10 daily-ideas #1 (DM /
동물실험 도구)** MVP 빌드.

## 목적
당뇨/비만 전임상 연구에서 control vs HFD vs drug 코호트의 β-cell mass·증식·
세포사를 일관된 Cavalieri 방식으로 자동 산정하기 위한 prototype. 현재 버전은
실제 Cellpose/segmentation_models_pytorch가 아니라 **합성(synth) 데이터 +
heuristic intensity-threshold segmentation**으로 파이프라인 흐름을 시연한다.

## 도메인 / 카테고리
- 도메인: **DM (당뇨)**
- 카테고리: **동물실험 도구** (ex vivo whole-slide IHC β-cell mass morphometry)

## 핀포인트와의 차별성
- **DM Agent (정부과제)**: 임상 환자 의사결정 챗봇, in vivo 환자 대상.
- **IsletPerifusionAnalyzer (2026-05-02)**: islet **functional** GSIS 자극-반응
  곡선 분석. 본 도구는 **structural** β-cell area·mass morphometry로 상보적.
- **PancIsletMass v0 (본 도구)**: ex vivo 췌장 IHC WSI → islet detection →
  cell-type classification → Cavalieri β-cell mass (mg) → cohort ANOVA.

## 핵심기능 5
1. **WSI 로딩 + multi-channel 정렬** — NDPI/SVS/CZI/OME-TIFF 가정(MVP는 .npz),
   insulin / glucagon / somatostatin / Ki67 / TUNEL / DAPI 6채널 인식.
2. **췌도 auto-detection** — endocrine-marker score map → threshold + connected
   components, 면적 / 둘레 / 원형도(circularity) 산출. (실제 운영시
   Cellpose 2 + custom islet segmenter 교체 지점)
3. **세포 종류 분류** — pixel-level argmax 분류. α=glucagon+, β=insulin+,
   δ=somatostatin+, replication = β ∩ Ki67+, apoptosis = β ∩ TUNEL+.
4. **β-cell mass 산정** — Cavalieri systematic random sampling.
   `β-mass(mg) = (Σ β-area / Σ pancreas-section area) × pancreas weight(mg)`.
5. **코호트 통계 + export** — control vs HFD vs drug one-way ANOVA + Welch
   pairwise (Bonferroni), plotly violin, CSV export, 한국어 / 영문 dual label.

## 디렉토리
```
2026-05-10-1-panc-islet-mass/
  README.md
  QA.md
  main.py                 # Streamlit entry
  requirements.txt
  lib/
    __init__.py
    synth_wsi.py
    islet_detect.py
    cell_classify.py
    mass_compute.py
    stats.py
  data/
    sample_wsi/           # 실행 시 demo_cohort.json + .npz 생성됨
  output/
```

## 실행법
```bash
# (선택) 가상환경
python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
streamlit run main.py
```
- 첫 실행 시 `data/sample_wsi/`에 합성 cohort(3그룹×3마우스×5슬라이드 = 45장
  256x256 .npz)가 자동 생성된다. 재현 seed = 42.

## 검수 체크리스트
- [x] 모든 `.py` 파일 Python 구문 OK (ast.parse)
- [x] `lib.*` 모듈 import-able
- [x] 합성 데이터 생성기 1회 실행 (in-memory)
- [x] `main.py` import 검증 (streamlit 미설치 환경에서도 ast OK)
- [x] QA.md 검수 로그

## 한계
- 실제 OpenSlide / Cellpose 2 ML 모델 비탑재 — 합성 데이터 + heuristic 시연.
- 실험실 raw WSI 입력 / OME-TIFF 파서 / channel registration은 future work.
- 통계 p-value는 scipy 미설치시 NaN으로 fallback.

## 출처
2026-05-10 daily-ideas (DM, 동물실험 도구) — `picked-ideas/2026-05-10.md`
연관 자매 도구: 2026-05-02-1-islet-perifusion-analyzer (functional)

## 의학 디스클레이머
**본 도구는 연구·참고용입니다. 임상 진단 사용 금지.**
**For research use only — not for clinical diagnosis.**
