| 산출물 | 파일 |
|---|---|
| 🗺️ 기계론적 지도 | tap_qsp_model.dot · SVG · PNG — 162 노드 / 246 엣지 / 20 클러스터 |
| ⚙️ mrgsolve 모델 | tap_mrgsolve_model.R — 50 ODE, 시간 단위 = 시(hour), 25개 시나리오 |
| 🐍 독립 검증 구현 | tap_python_reference.py · 출력 전문 — 15개 검증 섹션 |
| 📊 Shiny 대시보드 | tap_shiny_app.R — 12개 탭 |
| 📚 참고문헌 | tap_references.md — PubMed 88편 (mkrefs.py가 실시간 조회, 기억으로 쓴 PMID 없음) |
모체 알코올은 독이 아니다. 메탄올과 에틸렌글리콜은 근사적으로 삼투 발자국이 유별나게 큰 에탄올류 진정제이고, 그 자체로는 장기 독성이 거의 없다. 이 질환의 모든 병변은 환자 자신의 간이 만들어 내는 산성 대사물에 있다.
메탄올 --ADH--> 포름알데히드 --ALDH--> 포름산(FORMATE)
에틸렌글리콜 --ADH--> 글리콜알데히드 --ALDH--> 글리콜산 --> 옥살산
따라서 이 병은 농도가 아니라 플럭스의 적분이며, 그 플럭스는 하나의 Michaelis–Menten 식이고, 지금까지 쓰인 모든 치료는 그 식의 항 하나씩을 정확히 하나만 소유한다.
Vmax_i · (S_i/Km_i)
v_i = ───────────────────────────────────────── ① 생성
1 + Σ_j (S_j/Km_j) + [FOM]/Ki 포메피졸·에탄올이
분모를 소유
− CL_ren · (1 − f_reabs(pH_urine)) · ACID ② 신 배설
중탄산이 f_reabs를 소유
− CL_hd · ACID ③ 투석
기계가 이 항만 소유
− Vmax_THF · THF · ACID/(Km + ACID) ④ 엽산 의존 산화
폴린산이 Vmax를 소유
그리고 손상은 혈장 적분이 아니라 CNS 적분이며, 그 문턱에는 아무도 처방하지 않지만 모두가 측정하는 항이 있다.
d(ACID_cns)/dt = PS · ( f_HA(pH_혈장)·C_혈장 − f_HA(pH_뇌)·C_cns )
f_HA(pH) = 1/(1 + 10^(pH − pKa)) 포름산 pKa 3.75 · 글리콜산 3.83
이 구조 하나에서 다음이 주장이 아니라 산술로 따라 나온다. 아래 숫자는 전부
tap_python_reference.py가 출력한 것이며
tap_reference_output.txt에 전문이 있다.
포름산 1 mol이 생기면 그것이 가진 양성자 1 mol이 중탄산 1 mol을 적정하고 그 중탄산은 CO₂로 몸을 떠난다. 나트륨은 움직이지 않는다. 그래서 삼투압 간극은 모체 알코올이 사라진 만큼 떨어지고 음이온 간극은 산이 생긴 만큼 올라간다. 두 값의 비는 중증도가 아니라 경과 시간을 읽고, 두 값의 합은 환자가 언제 왔는지와 무관한 섭취량 추정치다.
메탄올 0.7 g/kg (1529 mmol), 무치료:
| t (h) | 메탄올 mg/dL | 포름산 mM | OG mOsm | ΔAG mEq | OG/ΔAG (시계) | 합 | pH |
|---|---|---|---|---|---|---|---|
| 0.5 | 88.7 | 1.18 | 28.1 | 0.8 | 37.5 | 28.9 | 7.360 |
| 2 | 101.4 | 4.43 | 32.8 | 3.3 | 9.85 | 36.2 | 7.334 |
| 8 | 61.9 | 13.91 | 22.6 | 12.4 | 1.83 | 34.9 | 7.259 |
| 16 | 22.8 | 23.03 | 15.1 | 18.8 | 0.81 | 33.9 | 6.985 |
| 24 | 4.5 | 25.62 | 12.7 | 19.6 | 0.65 | 32.3 | 6.694 |
| 48 | 0.0 | 18.61 | 12.4 | 9.8 | 1.26 | 22.3 | 7.300 |
세 가지가 나오는데, 그중 하나는 교과서와 반대다.
- 시계는 작동한다 — 내려가는 동안만. 1시간의 37.5에서 24시간의 0.65까지 비는 경과 시간만 읽는다. 그러나 반응이 끝나면 포름산이 제거되며 음이온 간극이 닫히고 비는 다시 올라간다(0.65 → 1.26). 비가 1 근처인 환자는 "절반쯤 진행"과 "끝나고 회복 중" 사이에서 모호하며, 이때 구별해 주는 것은 합이다.
- 합은 용량의 하한이지 추정치가 아니다. 1시간에 35.0을 읽고 실제 섭취량은 36.4 mmol/L — 96% 회수. 1.9시간에 4% 과대(§4의 중탄산 공간 효과), 48시간에는 초기값의 31%까지 감쇠한다. 일찍 읽으면 정량적이고 늦게 읽으면 과소평가다.
- 삼투압 간극은 0으로 돌아가지 않는다 — 그리고 이것은 유도된 결론이다. 메탄올이 사실상 다 없어진 24시간에도 OG는 12.7 mOsm에 머문다. 교과서는 "포름산이 중탄산을 1:1로 대체하므로 삼투압 간극이 정상화된다"고 말하지만, 그것은 두 물질이 분포용적을 공유할 때만 참이고 공유하지 않는다. 포름산은 35 L에 퍼지고 그것이 적정한 중탄산은 45–73 L에 걸쳐 완충된다. 그래서 혈장 포름산 상승분이 혈장 중탄산 하강분보다 크고(유기산증의 delta-ratio > 1과 같은 사실), 그 차이가 잔여 삼투압 간극으로 나타난다. 24시간 지난 메탄올 환자는 중등도로 상승한 삼투압 간극과 넓은 음이온 간극을 동시에 가질 것으로 예측되며, 그 남아 있는 간극을 미흡수 알코올의 증거로 읽는 임상의는 잘못된 치료를 선택하게 된다.
겉보기 중탄산 공간 = (0.40 + 2.6/[HCO3]) L/kg
| HCO3 mM | 공간 (70 kg) | 공간 / Vd(메탄올) 42 L |
|---|---|---|
| 24 | 35.6 L | 0.847 |
| 16 | 39.4 L | 0.938 |
| 12 | 43.2 L | 1.028 |
| 8 | 50.8 L | 1.208 |
| 4 | 73.5 L | 1.750 |
OG는 42 L로 나뉘어 떨어지고 ΔAG는 중탄산 공간으로 나뉘어 올라간다. 정상 HCO3에서 공간이 35.6 L이므로 ΔAG가 OG보다 약 18% 빠르게 움직여 합이 위로 흐르고, 산증이 깊어져 공간이 42 L를 넘으면 ΔAG 상승이 감속해 합이 되돌아온다. 편차는 자기제한적이고 그 크기는 위 표에서 읽을 수 있다.
막을 통과하는 것은 비이온화 포름산뿐이다.
| pH | f_HA 혈장 | 7.40 대비 유입속도 | 평형 CNS/혈장 비 | 7.40 대비 |
|---|---|---|---|---|
| 7.40 | 2.238e−04 | 1.00 | 0.398 | 1.00 |
| 7.20 | 3.547e−04 | 1.58 | 0.501 | 1.26 |
| 7.00 | 5.620e−04 | 2.51 | 0.631 | 1.58 |
| 6.90 | 7.074e−04 | 3.16 | 0.708 | 1.78 |
| 6.80 | 8.905e−04 | 3.98 | 0.795 | 2.00 |
하나의 식, 두 개의 효과, 같은 부호. pH 7.40 → 6.80은 뇌로의 유입 속도상수를 3.98배로, 평형 CNS/혈장 비를 2.00배로 만든다. 같은 혈중 포름산에서 CNS 부하가 두세 배 차이 난다. 임상의가 "교정해야 할 숫자"로 다루는 pH 범위가 실제로는 기전이다.
중탄산은 이 두 항을 되돌리는 동시에 세 번째 항도 움직인다. 세뇨관 재흡수는 비이온화 산의 비이온 확산이므로 재흡수 분율이 소변 pH의 함수다.
| HCO3 mM | 소변 pH | 재흡수 | 신 포름산 청소율 |
|---|---|---|---|
| 4 | 5.50 | 97.6% | 0.17 L/h |
| 12 | 6.13 | 93.4% | 0.47 L/h |
| 24 | 6.73 | 79.7% | 1.46 L/h |
| 28 | 7.66 | 32.8% | 4.84 L/h |
| 32 | 8.00 | 18.2% | 5.89 L/h |
함정의 방향을 보라: 환자가 아플수록(HCO3 낮고 소변 산성) 신장이 포름산을 더 많이 되돌려준다. 두 번째 자기증폭 고리이며, "산증은 숫자일 뿐"이 틀린 이유다.
ADH를 막는 것은 독을 없애는 것이 아니라 자기제거되던 독을 천천히 새는 저수지로 바꾸는 것이다. 그것이 완치인지 시간벌기인지는 청소율 항 하나가 결정한다.
| 2시간에 ADH 완전 차단, 투석 없음 | 정점 | 차단 상태 반감기 | <20 mg/dL 도달 |
|---|---|---|---|
| 메탄올 0.7 g/kg | 105.1 mg/dL | 46.6 h | 113 h |
| 에틸렌글리콜 90 mL | 200.6 mg/dL | 17.3 h | 59 h |
| 에틸렌글리콜 90 mL, GFR 30% | 207.6 mg/dL | 54.7 h | > 160 h |
문헌값은 메탄올 43–52시간, 에틸렌글리콜 약 17시간이다. 두 값 모두 맞추도록
따로 조정한 파라미터는 없다 — 차이는 전부 CLRE(에틸렌글리콜의 20–30%가
소변으로 그대로 나가는 항) 하나에서 나온다. 그래서 ADH 차단은 신기능이 온전한
에틸렌글리콜에서는 단독 확정 치료가 될 수 있고 메탄올에서는 시간벌기다.
그리고 세 번째 행이 이미 AKI에 빠진 에틸렌글리콜 환자를 투석해야 하는
이유 전부다: 독이 신장을 가져가면 에틸렌글리콜은 메탄올처럼 행동하기
시작한다.
v_i = Vmax_i·(S_i/Km_i) / (1 + Σ_j S_j/Km_j + F/Ki)
Km(mM): 에탄올 1.0 < 에틸렌글리콜 6.0 < 메탄올 8.0 · 포메피졸 Ki = 0.15 µM
| 조건 | 억제 인수 | 남은 플럭스 | 플럭스 mmol/h |
|---|---|---|---|
| 메탄올 100, 아무것도 없음 | 1.0 | 100% | 95.5 |
| 메탄올 100 + 에탄올 100 mg/dL | 5.4 | 18.4% | 17.6 |
| 메탄올 100 + 에탄올 150 mg/dL | 7.6 | 13.1% | 12.5 |
| 메탄올 100 + 포메피졸 10 µg/mL | 166.7 | 0.60% | 0.57 |
| 메탄올 20 + 에탄올 100 mg/dL | 13.2 | 7.6% | 4.0 |
| 메탄올 20 + 포메피졸 10 µg/mL | 457.1 | 0.22% | 0.12 |
| 메탄올 400 + 에탄올 100 mg/dL | 2.3 | 43.3% | 48.9 |
| 메탄올 400 + 포메피졸 10 µg/mL | 49.9 | 2.0% | 2.26 |
"포메피졸은 에탄올의 1000배"는 침대 옆에서는 틀린 말이다. 억제 인수는
(1 + ΣS/Km + I/Ki)/(1 + ΣS/Km)이므로 기질이 많을수록 작아진다. 메탄올
100 mg/dL에서 목표 농도의 에탄올은 여전히 산 생성 플럭스의 약 5분의 1을
돌아가게 두고 포메피졸은 1%도 남기지 않는다 — 정직한 비는 약 31배다.
그리고 메탄올 400 mg/dL에서는 포메피졸도 2.0%를 남긴다. 이것이
"차단은 결코 절대적이지 않다"의 산술이다.
포름산은 적분에 비례해 손상시키므로 같은 용량을 천천히 전달해도 손상은 같다. 옥살산은 용해도곱을 넘을 때만 침전하므로 같은 용량을 천천히 전달하면 손상이 줄어든다 — 같은 옥살산이 그냥 소변으로 나가기 때문이다.
에틸렌글리콜 90 mL, 총 용량 동일, 플럭스만 다름:
| 정점 옥살산 µM | 신 CaOx mmol | GFR 최저 % | 이온화 Ca 최저 mM | |
|---|---|---|---|---|
| 무치료 | 315.3 | 44.6 | 26 | 0.821 |
| 포메피졸 2 h | 56.9 | 5.1 | 95 | 1.127 |
| 포메피졸 6 h | 114.8 | 15.2 | 67 | 1.019 |
| 포메피졸 12 h | 201.8 | 28.7 | 43 | 0.914 |
메탄올에는 이에 대응하는 표가 없고 그 비대칭이 요점이다. "포메피졸이 시간을 벌어 주었다"는 문장은 메탄올보다 에틸렌글리콜에서 훨씬 강한 주장이다.
침착된 결정 1 mmol은 칼슘 1 mmol을 데려가므로 이온화 칼슘은 결정 부하의 화학량론적 그림자이고 QT는 그 그림자를 읽는다.
이 저장소의 관행대로 반박된 주장은 조용히 지우지 않고 반박된 상태로 남긴다.
지도의 17번 클러스터는 이 고리를 그려 놓았고 모델은 그것을 보여주기 위해 만들어졌다. 모델은 그렇게 말하지 않는다. 중요한 것은 투석이 해독제를 얼마나 빨리 제거하는가가 아니라 치료농도와 억제상수 사이의 여유 C/K다.
| 해독제 | 치료농도 | 억제상수 | 여유 C/K | 투석 k | 여유를 다 쓰는 데 필요한 투석 시간 |
|---|---|---|---|---|---|
| 포메피졸 | 0.1218 mM | 1.5e−04 mM | 812 | 0.408/h | 16.4 h |
| 에탄올 | 21.71 mM | 1.0 mM | 22 | 0.531/h | 5.8 h |
통상적인 4–6시간 세션은 포메피졸의 여유를 쓸 수 없고, 에탄올의 여유는 대부분 쓴다. 모델로 확인하면:
| 비교 | 재투여 함 → 안 함 | 산화된 용량 변화 | CNS 노출 변화 |
|---|---|---|---|
| 포메피졸, 6 h IHD | 동일 (3자리까지) | +0.3% | +0.1% |
| 에탄올, 6 h IHD | 다름 | +2.4% | +1.4% |
| 포메피졸, 30 h CRRT | 동일 | +0.0% | +0.0% |
세션 내부를 보면 기전이 보인다. 재투여를 생략한 포메피졸 팔은 6시간 뒤에도
C/Ki = 173이고 플럭스는 0.132 → 0.174 mmol/h(차단 없을 때 67)로 거의 움직이지
않는다. 에탄올 팔은 121 → 27 mg/dL로 떨어져 세션 말미의 플럭스가
3.74 대 1.36 mmol/h, 2.8배 차이가 난다.
따라서 정정된 결론: "투석 중 해독제를 늘려라"는 포메피졸에서는 넉넉한 안전 여유이고 에탄올에서는 정량적 필수다 — 두 약이 보통 가르쳐지는 방향과 반대다.
그리고 설계하지 않았는데 나온 관찰 하나: 총량 효과가 작은 이유는 투석이 자기 자신의 해독제 제거를 부분적으로 방어하기 때문이다. 같은 세션이 기질도 함께 빼내고 있어서, 같은 분자식의 두 항이 서로 반대 방향으로 당긴다. 정직하게 덧붙이면, 사망 확률은 에탄올 비증량 팔에서 오히려 약간 낮았다 (0.143 대 0.155). 2.5배 증량은 약간의 차단을 사면서 그보다 큰 진정을 사고, 진정은 호흡부전 위험함수 안에 있다. 모델이 "에탄올을 과소투여하는 게 좋다"고 말하는 것이 아니라, 에탄올의 이익과 해악이 같은 용량 안에 있고 포메피졸은 그렇지 않다고 말하는 것이다.
용량과 도착 시각을 교차시킨 16개 런에서:
| 입원 시 변수 | P(사망)과의 Spearman ρ |
|---|---|
| 입원 메탄올 농도 | −0.135 |
| 입원 포름산 농도 | +0.935 |
| 입원 pH | −0.841 |
확인된 부분, 그리고 강하게 확인된 부분: 입원 알코올 농도는 쓸모없고 심지어 부호가 반대로 간다. 이것은 잡음이 아니라 구조다 — 메탄올이 높다는 것은 반응이 아직 일어나지 않았다는 뜻이고, 그게 바로 해독제가 구할 수 있는 환자다. 알코올 농도만으로 중증도를 분류하는 규칙은 환자를 구제 가능성 순으로 정렬해 놓고 그것을 중증도라고 부른다.
확인되지 않은 부분: "pH가 최고"는 아니다. 혈중 포름산이 더 좋다 (ρ +0.94 대 −0.84). 당연하다 — 포름산이 근접 원인이고 pH는 그 하류 한 칸이다. pH가 침대 옆을 지배하는 이유는 더 좋은 변수라서가 아니라, 결정을 내려야 하는 네 시간 안에 포름산을 측정할 수 없기 때문이다. pH의 포름산 대비 잔여 이점은 전달항 하나에 국한된다: 같은 포름산인 두 환자는 같은 정도로 중독된 것이 아니고, 더 산성인 쪽이 나쁘다. 그렇게 조심스럽게 진술하면 방어할 수 있고, "pH가 가장 좋은 예후 인자"라고 말하면 그것은 검사 가용성의 인공물이다.
이소프로판올을 별도 구획으로 시뮬레이션하지 않는다. 항 하나를 삭제해서
시뮬레이션한다(시나리오 M17, 파라미터 NOACID = 1). ADH는 그대로 돌고 대사물은
아세톤(케톤)이 되어 양성자도 음이온도 생기지 않는다.
| 산을 만드는 경우 (M1) | 케톤을 만드는 경우 (M17) | |
|---|---|---|
| 산화된 메탄올 (mmol) | 1353 | 1353 ← 플럭스가 동일하다 |
| 정점 삼투압 간극 | 33.7 mOsm | 32.8 mOsm |
| 정점 음이온 간극 | 31.8 mEq | 12.0 mEq |
| pH 최저 | 6.680 | 7.399 |
| HCO3 최저 | 4.2 mM | 24.0 mM |
| 정점 혈장 포름산 | 25.62 mM | 0 |
| 정점 CNS 포름산 | 23.00 mM | 0 |
| 기저핵 손상 지수 | 0.930 | 0 |
| 최종 logMAR | 1.90 | 0 |
| P(사망) | 1.000 | 0.001 |
같은 알코올, 같은 ADH 플럭스, 같은 삼투압 간극, 항 하나 삭제 — 그리고 병이 사라진다. 그것이 이소프로판올 중독이다: 큰 삼투압 간극, 취한 환자, 케톤, 그리고 정상 음이온 간극, 침대와 시간으로 관리한다. 산 항을 제거했을 때 이렇게 되지 않는 메탄올 모델은 다른 분자를 모델링하고 있는 것이다.
두 번째 대조군은 지도의 20번 클러스터에 있다: 프로필렌글리콜 — 삼투압 간극과 음이온 간극이 둘 다 오르지만 산은 평범한 L-젖산이고 원인은 환자 자신의 로라제팜 주입이다. 간극은 특이적이지 않다.
에틸렌글리콜 90 mL:
| 정점 옥살산 µM | 신 CaOx mmol | GFR 최저 % | |
|---|---|---|---|
| 아무것도 없음 | 315.3 | 44.6 | 26 |
| 티아민 + 피리독신만 | 140.9 | 28.7 | 29 |
| 포메피졸 2 h | 56.9 | 5.1 | 95 |
| 포메피졸 2 h + 두 보조인자 | 48.3 | 2.8 | 95 |
| 포메피졸 12 h | 201.8 | 28.7 | 43 |
| 포메피졸 12 h + 두 보조인자 | 94.8 | 13.8 | 50 |
| 결정 부하에 대한 보조인자 효과 | 절대 (mmol) | 상대 (%) |
|---|---|---|
| 단독 | −16.0 | 35.8% |
| 포메피졸 2 h에 추가 | −2.4 | 46.1% |
| 포메피졸 12 h에 추가 | −14.9 | 51.9% |
절대값에서는 성립하고 상대값에서는 성립하지 않으며, 그 차이가 중요하다. 티아민과 피리독신은 글리옥실산 노드에서 나가는 탈출로 두 개를 넓히므로 이들이 소유하는 것은 플럭스에 곱해지는 비율이다. 비율은 대체로 스케일 불변이라 퍼센트 열이 평평해 보이고, 그래서 퍼센트는 이 표를 읽는 잘못된 방법이다. 절대 효과는 잔여 플럭스를 정확히 따라간다: 해독제 없으면 16 mmol, 늦은 해독제와 함께 15 mmol, 이른 해독제와 함께 2.4 mmol.
정정된 진술은 지도가 함축하는 것보다 좁고 더 유용하다. 보조인자는 포메피졸에 일반적으로 중복이 아니고 즉시 투여된 포메피졸에만 중복이다 — 즉시 차단만이 재배치할 글리옥실산을 남기지 않기 때문이다. 늦게 온 환자 — 해독제가 이미 대체로 무의미해진 그 환자 — 에게는 값싸고 무해한 두 약이 사실상 단독 효과를 그대로 유지한다. 2시간 내 포메피졸을 전원 투여한 뒤 티아민·피리독신을 무작위화하는 시험은 아무것도 찾지 못하도록 설계된 시험이고, 늦은 환자에서 같은 시험은 그렇지 않다.
보조인자가 고치지 못하는 것도 보라: 무치료 팔에서 GFR은 26 → 29%밖에 움직이지 않는다. 그 손상의 대부분은 글리콜알데히드가 세뇨관에 직접 작용한 것이고, 그것은 이들이 작용하는 분기점보다 상류다.
메탄올 0.7 g/kg, 포메피졸만(투석·중탄산 없음):
| 시작 h | pH 최저 | 포름산 최고 mM | CNS 포름산 최고 | logMAR | P(사망) | 이미 산화된 용량 % |
|---|---|---|---|---|---|---|
| 0 | 7.357 | 0.13 | 0.04 | 0.00 | 0.00 | 12 |
| 2 | 7.334 | 4.43 | 1.00 | 0.00 | 0.00 | 21 |
| 6 | 7.290 | 10.98 | 3.81 | 0.05 | 0.01 | 38 |
| 8 | 7.259 | 13.91 | 5.33 | 0.68 | 0.38 | 46 |
| 12 | 7.169 | 19.12 | 8.69 | 1.38 | 0.82 | 61 |
| 14 | 7.094 | 21.27 | 10.79 | 1.50 | 0.88 | 67 |
| 18 | 6.839 | 24.31 | 17.09 | 1.64 | 1.00 | 77 |
| 24 | 6.680 | 25.62 | 23.00 | 1.73 | 1.00 | 85 |
| 30 | 6.680 | 25.62 | 23.00 | 1.75 | 1.00 | 88 |
절벽은 없다. 결과 열이 매끄럽게 나빠지므로 "해독제 창"은 기울기에 붙인 마케팅 용어다. 그리고 마지막 열이 결과 열보다 먼저 포화한다: 18시간과 30시간 사이에 이미 산화된 용량 비율은 77 → 88%밖에 움직이지 않는데 그 두 환자의 차이는 생존자와 사망자의 차이다. 반응이 끝난 뒤에도 여전히 변하고 있는 것은 산이 얼마나 만들어졌는가가 아니라 얼마나 오래 남아 있는가이며, 포메피졸은 그것에 대해 아무것도 하지 않는다. 이것이 늦게 온 환자를 투석해야 하는 이유이고, "농도가 40 mg/dL밖에 안 되어서 해독제를 보류했다"가 틀린 문장인 이유다 — 그 시점의 농도는 이제 환자를 해치지 않을 부분의 양이다.
| 시나리오 | pH 최저 | HCO3 | AG | 포름산 | CNS | 글리콜산 | CaOx | iCa | GFR% | PUT | logMAR | P(사망) | P(실명) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| M1 무치료 | 6.680 | 4.2 | 32 | 25.62 | 23.00 | — | — | 1.17 | 100 | 0.93 | 1.90 | 1.00 | 1.00 |
| M2 포메피졸 2 h | 7.334 | 20.7 | 15 | 4.43 | 1.00 | — | — | 1.18 | 100 | 0.00 | 0.00 | 0.00 | 0.00 |
| M3 포메피졸 14 h | 7.094 | 6.2 | 30 | 21.27 | 10.79 | — | — | 1.16 | 100 | 0.71 | 1.50 | 0.88 | 1.00 |
| M4 포메피졸 8 h + IHD | 7.259 | 11.6 | 24 | 13.91 | 5.03 | — | — | 1.15 | 100 | 0.04 | 0.01 | 0.11 | 0.00 |
| M5 IHD 단독 15 h | 7.044 | 5.7 | 30 | 22.21 | 11.19 | — | — | 1.15 | 100 | 0.47 | 1.01 | 0.66 | 1.00 |
| M6 에탄올 동반 섭취 | 7.097 | 6.2 | 30 | 21.92 | 12.14 | — | — | 1.16 | 100 | 0.83 | 1.74 | 0.90 | 1.00 |
| M7 에탄올 해독 4 h | 7.288 | 17.0 | 19 | 7.86 | 2.70 | — | — | 1.18 | 100 | 0.00 | 0.00 | 0.21 | 0.00 |
| M8 중탄산 단독 | 7.259 | 11.6 | 32 | 24.79 | 10.93 | — | — | 1.13 | 100 | 0.81 | 1.70 | 0.77 | 1.00 |
| M9 6 h 완전 치료 | 7.290 | 14.3 | 22 | 10.98 | 3.57 | — | — | 1.15 | 100 | 0.00 | 0.00 | 0.00 | 0.00 |
| M10 포메피졸 14 h + 폴린산 | 7.094 | 6.2 | 30 | 21.27 | 10.77 | — | — | 1.16 | 100 | 0.67 | 1.42 | 0.87 | 1.00 |
| M11 투석 중 재투여 없음 | 7.259 | 11.6 | 24 | 13.91 | 5.03 | — | — | 1.15 | 100 | 0.04 | 0.01 | 0.11 | 0.00 |
| M12 1.5 g/kg 대량 + 2회 IHD | 7.273 | 16.2 | 20 | 9.31 | 2.70 | — | — | 1.15 | 100 | 0.00 | 0.00 | 0.02 | 0.00 |
| M13 CRRT 30 h | 7.259 | 11.6 | 24 | 13.91 | 5.06 | — | — | 1.15 | 100 | 0.06 | 0.10 | 0.22 | 0.00 |
| M14 에탄올 + IHD, 증량 | 7.259 | 11.6 | 24 | 13.91 | 5.20 | — | — | 1.15 | 100 | 0.04 | 0.02 | 0.15 | 0.00 |
| M15 에탄올 + IHD, 비증량 | 7.259 | 11.6 | 24 | 13.91 | 5.20 | — | — | 1.15 | 100 | 0.04 | 0.02 | 0.14 | 0.00 |
| M16 CRRT, 재투여 없음 | 7.259 | 11.6 | 24 | 13.91 | 5.06 | — | — | 1.15 | 100 | 0.06 | 0.10 | 0.22 | 0.00 |
| M17 대조군: 대사물이 케톤 | 7.399 | 24.0 | 12 | 0.00 | 0.00 | — | — | 1.18 | 100 | 0.00 | 0.00 | 0.00 | 0.00 |
| E1 EG 무치료 | 7.196 | 6.9 | 29 | 0.05 | 0.02 | 21.81 | 35.4 | 0.82 | 26 | 0.00 | 0.00 | 0.00 | 0.00 |
| E2 EG 포메피졸 2 h | 7.343 | 21.9 | 14 | 0.04 | 0.01 | 2.91 | 5.1 | 1.13 | 95 | 0.00 | 0.00 | 0.00 | 0.00 |
| E3 EG 포메피졸 12 h + IHD | 7.298 | 13.9 | 22 | 0.05 | 0.02 | 12.10 | 7.5 | 1.01 | 46 | 0.00 | 0.00 | 0.00 | 0.00 |
| E4 EG 보조인자만 | 7.213 | 7.5 | 28 | 0.05 | 0.02 | 21.54 | 23.0 | 0.94 | 29 | 0.00 | 0.00 | 0.00 | 0.00 |
| E5 EG 포메피졸 + 보조인자 | 7.343 | 21.9 | 14 | 0.04 | 0.01 | 2.91 | 2.8 | 1.15 | 95 | 0.00 | 0.00 | 0.00 | 0.00 |
| E6 EG in CKD (GFR 30%) | 7.343 | 21.8 | 14 | 0.04 | 0.01 | 3.02 | 8.3 | 1.09 | 95 | 0.00 | 0.00 | 0.00 | 0.00 |
| E7 EG 에탄올 해독 + IHD | 7.339 | 20.9 | 15 | 0.05 | 0.01 | 4.03 | 3.4 | 1.10 | 87 | 0.00 | 0.00 | 0.01 | 0.00 |
| E8 EG + 경험적 칼슘 부하 | 7.298 | 13.9 | 22 | 0.05 | 0.02 | 12.10 | 7.6 | 1.10 | 46 | 0.00 | 0.00 | 0.00 | 0.00 |
E8과 E3을 비교하면 경험적 칼슘 부하가 결정 부하를 의미 있게 늘리지 않는다 (7.6 대 7.5 mmol). 저자의 사전 예상과 다르며 이유는 구조적이다: 침착 속도가 옥살산 전달에 의해 제한되고 칼슘에 의해 제한되지 않기 때문이다. 지도에서 칼슘 보충을 "조건부"로 그려 둔 것은 여전히 옳지만, 그 이유는 결정 촉진이 아니라 적응증이 좁다는 것이다.
50개 ODE 전부를 Python/scipy로 독립 재구현했다
(tap_python_reference.py). 두 구현이 공유하는 것은
방정식뿐이다 — 다른 언어, 다른 적분기, 따로 작성. 이 작업이 여덟 개의 결함을
찾아냈고 그중 셋은 결론을 바꿨다.
| # | 결함 | 증상 | 수정 |
|---|---|---|---|
| 1 | 신 중탄산 재생성을 0.10/h로 씀 | 치사량 메탄올이 pH 7.33 | NH₄⁺ 배설 능력 항이므로 0.010/h |
| 2 | 세뇨관 CaOx 침착을 과포화 초과분에 비례하는 속도로 씀 | 결정 50 mmol/h 침착, 모든 EG 환자 이온화 칼슘 0 | 침착은 옥살산 전달을 넘을 수 없다 → 여과 부하의 포화 분율 |
| 3 | 시신경 손상을 유리체 포름산에 선형으로 구동 | 낮은 농도에 오래 노출된 환자 전원 실명 (에탄올 해독 팔 전체) | 망막은 기저핵과 같은 이유로 망가진다 → 망막 ATP 결손 구동, 역치 함수 |
| 4 | 근위세뇨관 손상에 플럭스 역치 없음 | 2시간 포메피졸 환자도 GFR 50%로 추락 | 잔여 비-ADH 플럭스는 멈추지 않으므로 Hill 역치 필요 |
| 5 | 투석 중탄산 이동을 소분자 청소율로 씀 | 300+ mmol/h 전달, HCO3 47, PaCO2 79 | 유효 전신 청소율 3.0 L/h |
| 6 | Winter 공식을 정상 HCO3 위로 외삽 | 알칼리성 환자에게 PaCO2 79 mmHg | 대사성 알칼리증은 mM당 ~0.7 mmHg |
| 7 | 외인성 NaHCO₃가 나트륨을 올리는 것을 무시 | 중탄산 정주에서 계산 음이온 간극 −11 | 나트륨을 세면 중탄산 치료는 음이온 간극을 거의 바꾸지 않는다 (임상적으로 중요한 거동) |
| 8 | pH 6.6 아래로 계속 적분 | pH 5.55, CNS 포름산 120 mM (시체의 숫자) | 최초 생존 불가 지점에서 절단 |
| 시나리오 | 투입 (mmol) | 계상 (mmol) | 오차 |
|---|---|---|---|
| M1 무치료 | 1529.2 | 1529.2 | −0.001% |
| M4 포메피졸 + IHD | 1529.2 | 1529.2 | −0.001% |
| M9 완전 치료 | 1529.2 | 1529.2 | −0.001% |
| M12 대량 | 3276.9 | 3276.9 | −0.001% |
| E1 EG 무치료 | 1614.2 | 1614.1 | −0.003% |
| E3 EG 포메피졸 + IHD | 1614.2 | 1614.1 | −0.003% |
| E6 EG in CKD | 1614.2 | 1614.2 | −0.001% |
ALL CHECKS PASS — 음수 상태 없음, 누출 없음.
tap_mrgsolve_model.R에 시나리오 M4의 16행 기준
궤적(19개 변수)이 TAP_REFERENCE_M4로 박혀 있고 tap_verify()가 그것과
비교한다. 허용 오차는 상대 2e−3(유효숫자 3자리)로 일부러 좁게 잡았다 — 두
구현이 방정식만 공유하기 때문에 이것은 항진명제가 아니라 실제 검사다.
source("tap_mrgsolve_model.R")
tap_verify() # 16 x 19 = 304개 비교주의. 이 컨테이너에는 R이 설치되지 않아(패키지 저장소 오류) mrgsolve 모델을 실행하지는 못했다. R 파일은 Python 참조 구현과 방정식 단위로 대응하도록 작성되었고 위 수용 시험이 그 대응을 검사하도록 들어 있지만, 실행 검증은 아직 이루어지지 않았다. R이 있는 환경에서
tap_verify()를 먼저 돌려 볼 것을 권한다. 이 README의 모든 수치는 실행 검증이 완료된 Python 구현에서 나온 것이다.
| 항목 | 문헌 | 모델 |
|---|---|---|
| 메탄올 소실 (포화 농도) | 8.5 mg/dL/h (4.4–25) | 100 mg/dL에서 7.3 mg/dL/h |
| 메탄올 말단 반감기 (비차단) | ~2.5–3 h | 2.4 h |
| 메탄올 반감기 (ADH 차단) | 43–52 h | 46.6 h |
| 에틸렌글리콜 반감기 (ADH 차단, 신기능 정상) | ~17 h | 17.3 h |
| 에틸렌글리콜 미변화 신 배설 | 20–30% | 26% (FE) |
| 포메피졸 치료농도 | >8.2 µg/mL | 15 mg/kg 부하 후 21 µg/mL |
| 포메피졸 Ki | 0.1–0.5 µM | 0.15 µM |
| 에탄올 목표농도 | 100–150 mg/dL | 100 mg/dL에서 억제인수 5.4 |
| 투석 청소율 (소분자) | 200–300 mL/min | 240 mL/min |
| CaOx 일수화물 Ksp (37 °C) | 2.32e−9 M² | 동일 |
| 겉보기 중탄산 공간 | 0.40 + 2.6/[HCO3] L/kg | 동일 |
| 중증 EG 글리콜산 | 10–25 mM | 무치료 21.8 mM |
| 중증 메탄올 포름산 | 10–20 mM (치명적 범위) | 무치료 25.6 mM (0.7 g/kg) |
1 노출·제품·경로·흡수 · 2 모체 알코올 처리(두 질환이 갈라지는 곳) · 3 ADH→ALDH 산화 캐스케이드 · 4 경쟁적 ADH 차단 · 5 포름산 처리(엽산) · 6 글리옥실산 분기 비율 · 7 옥살산칼슘 과포화(유일한 역치) · 8 미토콘드리아 독성과 젖산 · 9 산-염기 · 10 두 간극 시계 · 11 pH 의존 이온 트래핑 · 12 CNS(기저핵·시신경) · 13 신장 · 14 칼슘과 심장 · 15 포메피졸 약리 · 16 에탄올 해독요법 · 17 체외 제거 · 18 보조 치료 · 19 임상 엔드포인트 · 20 감별진단과 두 개의 대조군
지도 하단에는 논지의 여섯 문장이 클러스터를 가로지르는 굵은 엣지로 그려져 있다. 17번 클러스터의 "해독제도 투석된다" 고리는 위의 반박 A를 붙인 채 그대로 남겨 두었다.
# 지도
dot -Tsvg tap_qsp_model.dot -o tap_qsp_model.svg
dot -Tpng -Gdpi=150 tap_qsp_model.dot -o tap_qsp_model.png
# 검증 (R 없이 전부 재현 가능)
pip install numpy scipy
python3 tap_python_reference.py # 15개 섹션 전부
python3 tap_python_reference.py --section 9 # 반박 A만
# 참고문헌 재조회
python3 mkrefs.py --refresh
# R 모델과 대시보드
Rscript -e 'source("tap_mrgsolve_model.R"); tap_verify(); print(tap_all())'
Rscript -e 'shiny::runApp("tap_shiny_app.R")'교육 및 연구 목적의 정량적 시스템 약리학 모델입니다. 공개 문헌을 바탕으로 구성했으나 독립적으로 검증·인증되지 않았으며 실제 임상 의사결정, 처방, 또는 규제 제출에 사용해서는 안 됩니다. 특히 이 문서의 여러 결론(반박 A·B, 보조인자 비가산성의 범위, 잔여 삼투압 간극, 경험적 칼슘 부하의 무효성)은 모델의 예측이며 임상 데이터로 확인된 사실이 아닙니다. 반증 가능하게 진술해 둔 것은 검증받기 위한 것이지 채택되기 위한 것이 아닙니다.