# CHANGELOG — DMRepurpRank-Kor (디엠리퍼프랭크코어)

## [2026-05-15]

### 수행 내용
- DM 도메인 / 연구 아이디어 생성 카테고리 MVP `DMRepurpRank-Kor` 초기 빌드.
- 비당뇨 약물 → 당뇨 효능 재포지셔닝 후보를 7+ source (DrugBank, OpenTargets, UK Biobank/KoGES GWAS, CMAP/L1000, FAERS, HIRA/KIDS-KD, IMPC, KCD-7/8, viability) 합성 데이터로 통합 ranking + 한국어 IIT/KDDF grant proposal card 생성하는 Python CLI 구현.
- 5축 점수 (MR, CMAP, target-pathway, RWE, viability) → composite ranking 산출.
- `--top N`, `--weights`, `--card`, `--export-json`, `--summary` 5개 CLI 옵션 구현.
- 합성 데이터 5개 CSV (50개 비당뇨 약물 후보, 다양 ATC class) 생성.
- 의학적 디스클레이머 README + CLI 모든 출력 6개 위치에 노출.
- 검수 6개 명령 모두 통과 (QA.md 기록).

### 주요 결정 사항
- **Statistical primitives**: rpy2 / R 의존 금지 제약 → numpy / scipy 도 사용하지 않고 Python 표준 라이브러리(math, statistics, csv, json)만으로 Wald ratio, IVW meta, Spearman ρ, 5축 정규화 점수 함수를 직접 구현. 환경 의존성 최소화 + 설치 명령 없이 즉시 실행 가능.
- **합성 데이터 ranking 검증**: 약리학적으로 알려진 fenofibrate (PPAR-α), telmisartan (AGTR1+PPAR-γ), canakinumab (IL-1β, CANTOS 부분 시그널) 등이 Top 5에 위치하도록 합성값을 디자인 → 데이터 정합성 + 시연 신뢰성 확보. 메트포르민(DR001)은 reference 로 표시하고 ranking 에서 분리.
- **닥터앤서 3.0 호환 JSON envelope**: `tool, version, build_date, domain, category, consortium, sources, candidates` 구조로 export → 향후 OLYMPUS / 닥터앤서 3.0 pipeline 에 직접 ingest 가능.
- **한국어 first-class**: 약물 KR 이름 (예: 텔미사르탄), KCD E11.x 시그널 라벨 (강한감소/감소/약한감소/중립/약한증가/증가/강한증가), card 본문 narrative 전부 한국어. `--card` 인자도 KR/EN/drug_id 모두 lookup.

### 변경된 파일
- `projects/2026-05-15-1-dm-repurp-rank-kor/main.py` — CLI 진입점 + 5축 스코어링 + ranking + card 생성 + JSON export 전체 로직 (≈ 600 라인)
- `projects/2026-05-15-1-dm-repurp-rank-kor/data/drugs.csv` — 50개 비당뇨 약물 (ATC, DrugBank, target, viability)
- `projects/2026-05-15-1-dm-repurp-rank-kor/data/gwas_mr.csv` — GWAS IV + β_exposure/outcome + F-stat
- `projects/2026-05-15-1-dm-repurp-rank-kor/data/cmap_signatures.csv` — 4-tissue T2DM signature reversal
- `projects/2026-05-15-1-dm-repurp-rank-kor/data/faers_rwe.csv` — RR/ROR/PRR/EBGM + KCD E11.x 한국어 signal
- `projects/2026-05-15-1-dm-repurp-rank-kor/data/target_pathway.csv` — GWAS+KEGG overlap p + IMPC KO 표현형
- `projects/2026-05-15-1-dm-repurp-rank-kor/README.md` — 도구 설명 + 실행법 + 출처 + 디스클레이머
- `projects/2026-05-15-1-dm-repurp-rank-kor/QA.md` — 6개 검수 명령 결과 + 재현 명령
- `projects/2026-05-15-1-dm-repurp-rank-kor/CHANGELOG.md` — 본 파일

### 재현 방법

```bash
cd "projects/2026-05-15-1-dm-repurp-rank-kor"

# 1. 구문 체크
python3 -c "import ast; ast.parse(open('main.py').read())"

# 2. 기본 실행
python3 main.py --help
python3 main.py --summary

# 3. Top 10 ranking
python3 main.py --top 10

# 4. 가중치 커스텀
python3 main.py --top 10 --weights mr=0.4,cmap=0.2,target=0.2,rwe=0.15,viability=0.05

# 5. 한국어 hypothesis card
python3 main.py --card 텔미사르탄
python3 main.py --card Fenofibrate
python3 main.py --card DR007

# 6. JSON export (닥터앤서 3.0 호환)
python3 main.py --export-json /tmp/dm_test.json
python3 -c "import json; d=json.load(open('/tmp/dm_test.json')); print(len(d['candidates']))"
```

### 빌드 중 발생한 이슈
- 1차 실행 시 `print_summary()` 내 f-string 안의 `{DRUG_N}` placeholder가 NameError 유발. 1회 fix (f-string → 일반 문자열 + `drug_n` 변수 binding)로 해결.
