# CHANGELOG — SarcoMyokinEngine

## [2026-04-25]

### 수행 내용
- SarcoMyokinEngine MVP 구축: 22개 마이오카인에 대한 sarcopenic obesity 복합 바이오마커 가설 엔진
- 5개 핵심 기능 모두 구현: (1) 마이오카인 어휘집 SQLite, (2) PubMed 증거+공출현 행렬, (3) GTEx+HPA 발현 통합, (4) 트리플렛 랭킹, (5) 패널별 ELISA 비용/혈액량/검정력 표
- CLI 4개 서브커맨드: `init`, `rank-triplets`, `panel`, `stats`
- 검증 6단계 모두 통과 (QA.md 참조)

### 주요 결정 사항
- **DuckDB 대신 SQLite**: stdlib만 쓰라는 제약 → sqlite3 사용
- **트리플렛 전수열거 회피**: C(22,3)=1,540은 작지만 명세대로 300개 샘플링 후 정렬
- **검정력 폐쇄형 근사**: scipy 없이 `Phi(d*sqrt(n/2) - 1.96)` 정규근사 사용. n>=30에서 t-검정과 ~1% 이내 일치
- **합성 공출현 데이터 희소**: 33쌍만 채움 → 미탐색 보너스가 트리플렛 대부분에서 1.0 가까이 나오는 현상 발생. MVP 수준에서는 의도된 결과 (실제 PubMed로 교체하면 자연 해소)
- **마이오카인 22개**: 명세 22개 그대로 사용 (myostatin, FGF21, GDF15, irisin, IL-6, BAIBA, METRNL, SPARC, IGF-1, IL-15, leptin, adiponectin, FNDC5, decorin, BDNF, IL-7, FSTL1, apelin, CXCL10, MIF, CTSB, OSM)

### 변경된 파일
- `main.py` - CLI 진입점 및 4개 서브커맨드
- `data/myokines.json` - 22개 마이오카인 메타데이터
- `data/pubmed_evidence.json` - 합성 SO 증거 카운트 + 공출현 행렬
- `data/gtex_expression.csv` - 합성 GTEx TPM (근육/지방 SC/지방 V/간)
- `data/hpa_expression.csv` - 합성 HPA 단백질 발현 수준
- `data/reactome_pathways.json` - 합성 마이오카인→Reactome 매핑
- `README.md` - 사용법 + 면책고지
- `QA.md` - 검증 로그

### 재현 방법
```bash
cd "projects/2026-04-25-3-sarco-myokin-engine"
python3 main.py init
python3 main.py stats
python3 main.py rank-triplets --top 10
python3 main.py panel myostatin FGF21 GDF15
```
의존성 없음 (Python 3 stdlib만).
