# QA log — IsletPerifusionAnalyzer (이슬렛퍼퓨젼애널라이저)

Build date: 2026-05-02
Slug: `islet-perifusion-analyzer`
MVP #1 of today's metabolic daily idea (DM domain, 동물실험 도구 — 데이터 분석 카테고리)

## Required gates

| # | Gate | Result |
|---|------|--------|
| 1 | `python3 -c "import ast; ast.parse(open('main.py').read())"` | ✅ pass |
| 2 | `python3 -c "import ast; ast.parse(open('lib/<each>.py').read())"` | ✅ pass for `__init__`, `parsers`, `corrections`, `kinetics`, `multianalyte`, `report`, `synth` |
| 3 | `python3 main.py --demo --report-dir ./output` exit 0 + outputs | ✅ pass — `EXIT=0`, 5 trace PNGs, 1 multi-analyte PNG, `kinetic_parameters.csv` (21 cols × 25 rows), `kinetic_parameters.xlsx`, 5 GraphPad CSVs, `kinetics.pzfx`, `reproducibility_checklist.md` + `.pdf`, `methods_draft.md`, `summary.md` |
| 4 | `python3 main.py --help` shows all flags | ✅ pass — `--input`, `--demo`, `--analyte`, `--report-dir`, `--graphpad`, `--checklist`, `--ieq`, `--flow`, `--dead-volume`, `--storage-hours` |
| 5 | README.md contains exec instructions + disclaimer + provenance | ✅ pass |

## Demo run summary
- 5 synthetic CSVs (primary mouse, INS-1, iPSC-SC-β D21, primary human C-peptide, primary mouse glucagon)
- 25 channels processed across 5 conditions × 5 files
- KCl intra-batch CV = **11.49 %** → KCl gate **PASS** (≤15 %)
- transit lag (100 µL / 0.1 mL·min⁻¹) = 1.00 min applied to time axis
- glucagon suppression: vehicle 47.7 % vs palmitate 15.2 % (biologically expected lipotoxicity)
- C-peptide:insulin ratio ≈ 1.0 across all conditions (consistent with synth generator)

## Optional features verified
- pydantic schema present but project still runs without it (graceful fallback dataclass) — verified via direct package check
- openpyxl present → XLSX written (`xlsx_ok=True` in summary)
- WeasyPrint absent → matplotlib PDF fallback used; Korean disclaimer transliterated to ASCII for legibility
- plotly absent → matplotlib used (matches spec "or matplotlib for static plot")
- click present but argparse used (per spec, either acceptable)

## Reproducibility checklist coverage
All 15 Diabetes/Diabetologia items emitted in `reproducibility_checklist.md` with pre-filled values for vendor, flow rate, dead volume + lag, KCl CV, IEQ basis, stimulation protocol, sample source. Remaining items flagged `[fill in]` for the user.

## Known limitations
- Synthetic data only; real BioRep/Brandel exports may have additional vendor-specific header rows (heuristic should still pick up `Time` column).
- `.pzfx` is a documented stub; Prism opens it and prompts the user to import the bundled `graphpad_*.csv` traces.
- Korean disclaimer renders correctly in MD; PDF fallback transliterates to ASCII when system fonts lack Hangul.

## Final status
**✅ PASS — MVP delivered, all 5 gates met, demo end-to-end exit 0.**
