# QA — MASLDTriangulate-Kor

생성일: 2026-05-29
도메인: MASLD / 카테고리: 연구 아이디어 생성 (금)

## 1. AST 파싱 점검
- `python3 -c "import ast; ast.parse(open(p).read())"` → 12개 파일 모두 OK
  - main.py, app.py
  - triangulation/__init__.py, ontology.py, grid.py, lawlor.py, mvmr.py,
    mediation.py, genotype.py, bias.py, designs.py, report.py

## 2. CLI 진입점 점검 (stdlib only)
- `python3 main.py --help` → argparse usage 정상
- `python3 main.py --data-test` → `{"effects_loaded": 43, "stages_loaded": 6,
  "outcomes_loaded": 30, "instruments_loaded": 9, "designs_unique": 5,
  "stages_unique": 6, "outcomes_unique_count": 11, "korean_rows": 6}`
- `python3 main.py --grid` → 13 pair 정상 (1 DISCORDANT / 3 HIGH / 3 MODERATE / 6 LIMITED)
- `python3 main.py --pair "MASH" "CV death"` → Concordance HIGH, Lawlor 5/5, 4 design 비교
- `python3 main.py --mediation "MASH" "CV death"` → MASLD 32% / metabolic 68% / residual 1.94
  → "Metabolic-confounder-mediated (BMI/T2DM 공통 원인 의심)" 자동 해석
- `python3 main.py --genotype "PNPLA3" "resmetirom" "MASH"` → CC/CG/GG modifier + Korean AF 0.30
  → 한국 GG carrier ~9%, carrier ~51% design implication
- `python3 main.py --discordant --top 5` → F3 × LRC mortality DISCORDANT, 3 bias flag 진단
- `python3 main.py --korean` → 6 Korean rows, MODERATE external validity, lean MASLD 분리
- `python3 main.py --designs` → 8 design card 정상
- `python3 main.py --taxonomy` → 10 bias taxonomy 정상
- `python3 main.py --report /tmp/x.json` → 36307 bytes JSON 저장
- `python3 main.py --report-md /tmp/x.md` → 9126 bytes Markdown 저장

## 3. 데이터 로드 테스트
- `data/effects_sample.csv` → 43 rows (≥30 요구 충족)
  - 5 design: observational / MR / RCT / ex_vivo_pcls / within_subject_lifestyle
  - 6 stages: S1 / S1_lean / MASH / F2 / F3 / F4
  - 11 unique outcomes (15+ outcome 온톨로지 중 사용된 것)
- `data/outcome_ontology.csv` → 30 outcome (12 extra-hepatic cancer 포함)
- `data/masld_stages.csv` → 6 stage
- `data/mr_instruments.csv` → 9 instrument (PNPLA3 / TM6SF2 / HSD17B13 / MBOAT7 /
  GCKR / BMI/T2DM/WC polygenic / PNPLA3_korean)
- `data/allele_frequency_korean.csv` → 5 gene 한국 ancestry frequency

## 4. 5개 핵심 기능 점검
1. 5-design effect ingest + MASLD-outcome 온톨로지 → 43 rows, 13 pair, 6 stage, 11 outcome
   ✓ (S1_lean 한국 lean MASLD layer 분리)
2. 5-design triangulation grid + MASLD vs metabolic confounder 분리 → MVMR (PNPLA3+BMI+T2DM)
   + mediation (frac_masld vs frac_metabolic) 정상. MASH × CV death에서 metabolic 우세
   (32% vs 68%) 자동 분리.
3. Genotype-stratified treatment effect 가설 → PNPLA3 GG → resmetirom 1.20x effect,
   HSD17B13 carrier → 0.85x ceiling, TM6SF2 → discordance flag. 한국 PNPLA3 AF 0.30 적용.
4. Discordance bias direction 진단 + 8 design 가설 → 10 bias taxonomy, 8 design card
   (relevance score로 정렬). F3 × LRC mortality에서 external_validity_korean +
   selection_bias_biopsy + detection_bias_nit 자동 진단.
5. KASL·AASLD/EASL·OpenClaw·MASLDStager 리포트 → Markdown(9126 byte) / JSON(36307 byte)
   export. .docx fallback (python-docx 없으면 .md 저장).

## 5. 디스클레이머 확인
- README.md 맨 위 ⚠️ 박스 ✓
- triangulation/__init__.py DISCLAIMER 상수 ✓
- main.py 모든 CLI 명령 _print_disclaimer() 호출 ✓
- app.py st.warning(DISCLAIMER) 노출 ✓

## 6. 제약 준수
- 외부 네트워크 / 유료 API 호출 0 ✓
- 전역 패키지 설치 없음 ✓
- main.py stdlib only (pandas/streamlit/plotly 불필요) ✓ — 검증: `python3 main.py --grid`
  실행 시 `import` 에러 없음
- streamlit/pandas/plotly/python-docx 는 requirements.txt 에만 명시 (app.py 전용)
- scope 24시간 초과 없음 ✓

## 7. 결과
**ALL CHECKS PASSED.**
