# ObesityWithdrawnRevive-Kor (오베시티위드드론리바이브코어)

> **Domain:** Obesity
> **Category:** Research idea generation (가설 생성 · 문헌 갭 분석 · 온톨로지 기반 새 연구 도출)

## 목적 (One-liner)

시장에서 **철수당한** 항비만제(fenfluramine/판막증·PPH, sibutramine/CV,
rimonabant/CB1 중추 정신, lorcaserin/발암 신호 등)와 중단 후보를 모아
**harm-기전 온톨로지**(5-HT2B→판막증, CB1 중추→정신/자살성, 교감→CV,
비선택 5-HT→PPH)를 구축하고, **표적은 유지하되 harm을 제거하는** de-risking
가설(말초제한 · biased/부분 agonism · 아형 선택성 · 조직선택 전달 · 취약군 사전배제 ·
용량 재설계)을 생성한다. 차세대 후보의 **historical harm class 상속 위험**도 추적하는
standalone 연구용 도구.

## 핵심 기능 (5)

1. **철수/중단 레지스트리** — 시장철수 + 미승인(CHMP/FDA 거부) + 개발중단 후보를
   약물·표적·기전·철수사유·증거등급으로 구조화 (14종 curated).
2. **harm-기전 온톨로지** — 각 철수를 harm 기전 노드로 매핑하고 표적 발현 조직 연결
   (5-HT2B→판막 섬유아세포, CB1→CNS, 교감→심혈관, 비선택 5-HT→폐혈관 등, 8 노드).
3. **de-risking 가설 생성** — harm 기전별 완화 레버(말초제한 BBB비투과 · biased/부분
   agonism · 5-HT2C vs 2B 아형 선택성 · 조직선택 전달 · 취약군 배제 · 용량 재설계) +
   plausibility · 전례 근거. 가설별 점수 = plausibility × 표적관련성 × 증거등급.
4. **historical harm 상속 추적** — 차세대 후보(클래스/표적/중추작용 여부) 입력 시
   인접 historical harm class 위험 플래그 (중추작용이면 HIGH, 말초제한 주장이면 MITIGATED).
5. **가설 ranking · 검증설계** — de-risking 가설별 최소 전임상/early-phase 검증 초안
   (말초제한 Kp,uu PK · 2C/2B 선택성 지수 · 판막 영상 surveillance 등).

## 실행법

### CLI (표준 라이브러리만, streamlit/networkx 불필요)

```bash
python3 main.py --help
python3 main.py                 # 기본: 요약 + 상위 5 가설
python3 main.py --list          # 철수/중단 레지스트리
python3 main.py --summary       # 통계 요약
python3 main.py --top 8         # 상위 8 ranked de-risking 가설
python3 main.py --drug rimonabant            # 약물별 harm map + 가설
python3 main.py --inherit-risk "central CB1 inverse agonist"
python3 main.py --inherit-risk "peripherally restricted CB1 agonist"
```

### Streamlit UI (선택, streamlit 필요)

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

탭: 1) Registry · 2) Harm Ontology · 3) De-risking Hypotheses ·
4) Inheritance Tracker · 5) Summary. 네트워크 호출 없이 로컬 데이터만 사용.

## 검수 체크리스트

- [x] `python3 -c "import ast; ast.parse(open('main.py').read())"` 통과
- [x] `python3 -c "import ast; ast.parse(open('app.py').read())"` 통과
- [x] `python3 main.py --help` 동작
- [x] `python3 main.py --top 8`, `--list`, `--summary`, `--drug`, `--inherit-risk` 동작
- [x] `data/withdrawn_registry.json` 로드 (14 drugs / 8 harm / 6 levers / 5 classes)
- [x] `main.py` 가 streamlit/networkx import 없이 동작 (표준 라이브러리만)
- [x] 외부 네트워크 호출 없음 (전부 오프라인)
- [x] 의학적 안전성 디스클레이머 표시 (CLI 배너 + UI 경고)

상세 로그는 `QA.md` 참조.

## 데이터 출처 (모두 무료 공개)

- **WITHDRAWN** — withdrawn drugs DB (ETH/CECAD)
- **FDA** — Drug Safety / withdrawal notices
- **EMA CHMP** — refusal / withdrawal assessment reports
- **ClinicalTrials.gov** — 개발 프로그램 상태
- **FAERS** — post-market 시그널 맥락
- **Open Targets** — 표적-조직 발현 맥락

레지스트리의 약물·철수사유·연도·표적은 **공개된 역사적 사실** 기반.
de-risking 레버 매핑, plausibility 점수, 상속 엣지, 점수 산식은
**합성/시연용(SYNTHETIC DEMO)** 콘텐츠다.

## ⚠️ 디스클레이머

**참고용 · 연구용 가설 생성 도구이며 임상 의사결정 도구가 아니다.**
This is a reference / research hypothesis-generation tool only.
NOT clinical decision support. NOT medical advice. NOT a substitute for
regulatory, toxicological, or clinical evaluation. 생성된 가설은
전문가 검토와 독립적 실험 검증을 반드시 거쳐야 한다.

## 파일 구성

```
2026-06-05-2-obesity-withdrawn-revive-kor/
├── main.py                       # CLI 진입점 (stdlib only)
├── app.py                        # Streamlit UI (같은 로직 래핑)
├── data/
│   └── withdrawn_registry.json   # curated/synthetic 레지스트리 + 온톨로지
├── README.md
└── QA.md
```
