# MASHGraveyardReframe-Kor (매시그레이브야드리프레임코어)

> phase 2/3에서 endpoint/design 사유로 **실패한 MASH trial**을
> **표적 무효(target-invalidity) vs trial 설계 결함(trial-design)**으로 귀속하고,
> "표적 폐기 vs subtype 재포지셔닝 vs endpoint 재설계(NIT 기반) vs 조합"
> 재설계 가설을 **귀속 근거(audit)와 함께 ranked** 생성하는 standalone 도구.

- **도메인**: MASLD / MASH
- **카테고리**: 연구 아이디어 생성 (가설 생성·문헌 갭 분석·온톨로지 기반 새 연구 도출)
- **맥락**: resmetirom(THR-β, MAESTRO-NASH)가 2024 미국 가속승인으로 MASH 최초 승인 약물을 뚫은 **직후** — 그 이전 다수 phase 2/3 trial은 efficacy/design 사유로 실패했다. 이 "묘지(graveyard)"를 다시 읽어 재설계·재포지셔닝 기회를 찾는다.

---

## 핵심 기능 (5)

1. **MASH 실패 레지스트리** — phase 2/3 실패·중단·미달 trial을 약물·표적·기전·실패유형(efficacy·design·safety)·결과수치로 구조화 (`data/mash_failures.json`, ~13종).
2. **target-vs-trial 귀속 엔진** — (a) 표적 무효 증거(유전적 지지·동일표적 타질환 성패) (b) trial 결함(placebo response 크기·population 이질성·histology endpoint 신뢰·검정력·노출/용량)을 종합해 **"표적이 죽었나 vs trial이 죽였나(+안전성)"** 확률적 판정.
3. **재설계 가설 생성** — 표적유효+trial결함 → endpoint 재설계(NIT/MRI-PDFF)·population 재정의·placebo-response 완화·조합 / 표적무효 → 폐기 권고+인접표적 / 안전성 → 차세대 분자.
4. **재포지셔닝 탐색** — 실패 MASH 약물 표적이 다른 대사/간질환(PBC·PSC·간섬유증·심대사)에서 유효한지 매핑 (**elafibranor→PBC 전례**).
5. **가설 ranking · 최소검증설계** — plausibility×귀속 임팩트 점수 + "최소 phase 2 재설계(endpoint·population·N)" 초안 + 귀속 근거 audit.

---

## 실행법

### CLI (표준 라이브러리만 — 설치 불필요, 오프라인)

```bash
python3 main.py --help          # 옵션 안내
python3 main.py --summary       # 레지스트리 요약(귀속·실패 유형 집계)
python3 main.py --top 8         # 재설계 가설 ranked 상위 8
python3 main.py --list          # 전체 실패 약물 목록
python3 main.py --drug selonsertib --attribution   # 약물 상세 + 귀속 판정
python3 main.py --reposition    # 재포지셔닝(인접 적응증) 매핑
python3 main.py                 # 기본: 요약 + ranked top 5
```

> `main.py`는 **streamlit/networkx 없이도** Python 3 표준 라이브러리만으로 완전 동작한다.

### Streamlit UI (선택)

```bash
streamlit run app.py
```

탭 구성: ① 재설계 RANKED, ② 약물 상세·귀속(그래프), ③ 재포지셔닝, ④ 레지스트리.
streamlit 미설치 시 안내 메시지 후 graceful 종료(전역 설치는 정책상 금지).

---

## 귀속 로직 요약

각 약물의 `attribution`은 `p_target_invalid` / `p_trial_killed` / (`p_safety_killed`)
세 확률로 표현되며, 정규화 후 우세 원인을 판정한다(차이가 작으면 `mixed`).

| 판정 | 의미 | 권고 |
|------|------|------|
| target_invalid | 표적 자체가 MASH에서 무효 | 폐기 + 인접표적 탐색 |
| trial_killed | 표적 유효 가능, 설계가 실패 야기 | endpoint/population/placebo/조합 재설계 |
| safety_killed | 효능은 있으나 분자 안전성 한계 | 차세대 분자·저용량·조합 |

---

## 데이터 출처

공개·무료 소스 기반 **curated 데모** 데이터:

- **ClinicalTrials.gov v2 (results)** — trial 설계·readout
- **PubMed (post-hoc 분석)** — placebo response·population·endpoint 논의
- **Open Targets** — 표적 유전적 지지 / 동일표적 타질환 성패

> 역사적 실패 사실(STELLAR, AURORA/CENTAUR, RESOLVE-IT→ELATIVE, ENCORE, REGENERATE,
> FALCON, ATLAS 등)은 공개 기록 기반이나, **attribution 확률·placebo_response 등
> 세부 수치는 교육/연구용 합성·근사값**이다(데이터 파일 `_meta.disclaimer` 참조).

---

## 검수 체크리스트

- [x] `python3 -c "import ast; ast.parse(open('main.py').read())"` 통과
- [x] `python3 main.py --help` 동작
- [x] `--summary` / `--top N` / `--list` / `--drug NAME --attribution` / `--reposition` 실제 실행
- [x] 약물 미발견 시 비-0 종료코드
- [x] `python3 -c "import ast; ast.parse(open('app.py').read())"` 통과
- [x] `data/mash_failures.json` 로드 테스트(13종)
- [x] main.py가 streamlit/networkx 없이 동작
- [x] 디스클레이머 모든 출력 경로에 포함

상세 검수 로그: [`QA.md`](./QA.md)

---

## ⚠️ 면책 (Disclaimer)

**본 도구는 참고용·연구용 가설 생성 도구이며, 임상 의사결정 도구가 아닙니다.**
attribution 확률·placebo_response 등 세부 수치는 공개 사실에 기반한 교육/연구용
합성·근사값으로, 실제 환자 치료·약물 선택·규제 판단의 근거로 사용해서는 안 됩니다.
생성된 모든 재설계·재포지셔닝 가설은 **전문가 검증 및 정식 임상연구 설계**를 거쳐야 합니다.
