# CHANGELOG — AdipoCLSPolarMap

## [2026-05-10]

### 수행 내용
- 2026-05-10 #2 daily-idea (Obesity / 동물실험 도구) MVP 빌드.
- 합성 지방조직 multi-channel IF mini WSI 생성기 + adipocyte segmentation +
  CLS auto-detection + ATM M1/M2 polarization + 그룹 ANOVA + Streamlit UI 통합.
- 검수 7/7 PASS (AST / lib import / 합성 데이터 / analyze_wsi / cohort ANOVA /
  main import / 의존성).

### 주요 결정 사항
- **합성 데이터 + heuristic 파이프라인**: 외부 네트워크/모델 다운로드 금지
  정책상 StarDist / cellpose 같은 ML segmentation을 사용할 수 없으므로,
  연결 컴포넌트 + ring/shell 휴리스틱으로 시연 (numpy + scipy.ndimage).
- **Multi-channel mock**: (perilipin, F4/80, CD11c, CD206, DAPI) 5채널 float32
  array. 그룹별 dead 비율과 M1:M2 비율을 다르게 시뮬레이션해 정량 분석에서
  ANOVA 유의 차이가 나오도록 설계.
- **CLS shell coverage**: 단일 radial sampling은 detection radius vs truth
  radius 차이로 hit율이 0이 되는 문제가 있어, 0.85r/1.0r/1.15r 다중 radial
  sampling으로 보정.
- **ANOVA fallback**: scipy 미설치 환경 대비 manual F-stat 계산 + 거친 p
  근사 분기 추가.

### 변경된 파일
- `main.py` — Streamlit 진입점 + headless analyze_wsi/cohort_anovas helper
- `lib/__init__.py` — 패키지 docstring + __all__
- `lib/synth_adipose.py` — 그룹/depot별 합성 WSI 생성, demo cohort builder
- `lib/adipo_seg.py` — perilipin ring + F4/80 dilate-fill-erode 기반 dead
  adipocyte 검출
- `lib/cls_detect.py` — DAPI nuclei centroid + dead radius 1.4× 내 nuclei
  ≥3 + multi-radial shell coverage ≥0.5 휴리스틱
- `lib/atm_polarize.py` — CLS shell ring 영역 CD11c/CD206 평균 intensity 비율
- `lib/stats.py` — one_way_anova (scipy 우선, fallback)
- `data/demo_cohort.json` — 코호트 디자인 메타
- `output/.gitkeep` — 빈 출력 디렉토리 유지
- `requirements.txt` — streamlit/numpy/scipy/matplotlib/scikit-image
- `README.md` — 목적/기능/실행/한계/디스클레이머
- `QA.md` — 검수 로그 7/7 PASS

### 재현 방법
```bash
cd "projects/2026-05-10-2-adipo-cls-polar-map"
pip install -r requirements.txt
streamlit run main.py
# 또는 헤드리스:
python3 -c "from main import analyze_wsi; from lib.synth_adipose import synthesize_wsi; \
  print(analyze_wsi(synthesize_wsi('HFD','eWAT','m1',size=512,seed=42)))"
```

### 한계
- 시연용 MVP. 실제 IF 슬라이드에는 channel registration / illumination
  correction / autofluorescence subtraction 등 전처리 필수.
- mean_diameter_um ANOVA는 유의차 없음 (등가원 반경 한계).
- 본 도구는 연구·참고용. 임상 진단 사용 금지.
