Skip to content

Latest commit

 

History

History

toxic-alcohol-poisoning

README.md

독성 알코올 중독 (메탄올 · 에틸렌글리콜) — QSP 모델

Toxic Alcohol Poisoning (Methanol · Ethylene Glycol) · Quantitative Systems Pharmacology

산출물 파일
🗺️ 기계론적 지도 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 없음)

조직 원리 (The organising thesis)

모체 알코올은 독이 아니다. 메탄올과 에틸렌글리콜은 근사적으로 삼투 발자국이 유별나게 큰 에탄올류 진정제이고, 그 자체로는 장기 독성이 거의 없다. 이 질환의 모든 병변은 환자 자신의 간이 만들어 내는 산성 대사물에 있다.

메탄올         --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. 시계는 작동한다 — 내려가는 동안만. 1시간의 37.5에서 24시간의 0.65까지 비는 경과 시간만 읽는다. 그러나 반응이 끝나면 포름산이 제거되며 음이온 간극이 닫히고 비는 다시 올라간다(0.65 → 1.26). 비가 1 근처인 환자는 "절반쯤 진행"과 "끝나고 회복 중" 사이에서 모호하며, 이때 구별해 주는 것은 합이다.
  2. 합은 용량의 하한이지 추정치가 아니다. 1시간에 35.0을 읽고 실제 섭취량은 36.4 mmol/L — 96% 회수. 1.9시간에 4% 과대(§4의 중탄산 공간 효과), 48시간에는 초기값의 31%까지 감쇠한다. 일찍 읽으면 정량적이고 늦게 읽으면 과소평가다.
  3. 삼투압 간극은 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가 농도보다 나은 예후 인자인 이유 — pH는 전달항 안에 있다

막을 통과하는 것은 비이온화 포름산뿐이다.

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는 그 그림자를 읽는다.


검증에서 저자 자신의 주장 두 개가 반박되었다

이 저장소의 관행대로 반박된 주장은 조용히 지우지 않고 반박된 상태로 남긴다.

반박 A — "투석이 포메피졸을 제거해서 세션 중에 플럭스가 튄다"

지도의 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배 증량은 약간의 차단을 사면서 그보다 큰 진정을 사고, 진정은 호흡부전 위험함수 안에 있다. 모델이 "에탄올을 과소투여하는 게 좋다"고 말하는 것이 아니라, 에탄올의 이익과 해악이 같은 용량 안에 있고 포메피졸은 그렇지 않다고 말하는 것이다.

반박 B — "pH가 가장 좋은 예후 인자다"

용량과 도착 시각을 교차시킨 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%밖에 움직이지 않는다. 그 손상의 대부분은 글리콜알데히드가 세뇨관에 직접 작용한 것이고, 그것은 이들이 작용하는 분기점보다 상류다.


지연의 대가 — 해독제 창(window)은 규칙이 아니라 기울기다

메탄올 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밖에 안 되어서 해독제를 보류했다"가 틀린 문장인 이유다 — 그 시점의 농도는 이제 환자를 해치지 않을 부분의 양이다.


25개 시나리오 (요약)

시나리오 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). 저자의 사전 예상과 다르며 이유는 구조적이다: 침착 속도가 옥살산 전달에 의해 제한되고 칼슘에 의해 제한되지 않기 때문이다. 지도에서 칼슘 보충을 "조건부"로 그려 둔 것은 여전히 옳지만, 그 이유는 결정 촉진이 아니라 적응증이 좁다는 것이다.


검증 (Verification)

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 — 음수 상태 없음, 누출 없음.

R ↔ Python 교차 검증

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 구현에서 나온 것이다.


보정 근거 (Calibration anchors)

항목 문헌 모델
메탄올 소실 (포화 농도) 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)

기계론적 지도 (20 클러스터)

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를 붙인 채 그대로 남겨 두었다.


재현 (Reproduce)

# 지도
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, 보조인자 비가산성의 범위, 잔여 삼투압 간극, 경험적 칼슘 부하의 무효성)은 모델의 예측이며 임상 데이터로 확인된 사실이 아닙니다. 반증 가능하게 진술해 둔 것은 검증받기 위한 것이지 채택되기 위한 것이 아닙니다.