Dengue · Severe Dengue · DSS — one antibody response, two channels of opposite sign
뎅기는 하나의 항체 반응을 부호가 반대인 두 경로로 읽는 병으로 기술했다.
| 무엇이 일어나는가 | 관찰되는 것 | |
|---|---|---|
| 경로 1 (보호) | 중화 IgG가 비리온을 제거 → 바이러스혈증 ↓ → 인터페론 ↓ | 해열 |
| 경로 2 (파괴) | 같은 IgG가 NS1·비리온과 결합 → 면역복합체 → 보체·비만세포 chymase·교차반응 T세포 TNF → 내피 글리코칼릭스 박리 → 반사계수 σ 하락 | 혈장 누출 |
두 경로가 같은 구동변수를 공유하므로 "열이 떨어지고 나서 환자가 나빠진다"는 것은 두 개의 사건이 아니라 한 사건을 두 번 본 것이며, 24–48시간의 위험기(critical phase)는 항체 상승의 폭 그 자체다.
모델 안에서 체온은 인터페론 → 시상하부 PGE₂ 로만 계산되고, 누출은 NS1·TNF·VEGF·chymase → 글리코칼릭스 로만 계산된다. 항체 상승 이후 두 사슬은 어떤 방정식도 공유하지 않는다. 그런데도 최저 맥압은 해열보다 21.5시간 앞서고 헤마토크릿 정점은 20.5시간 앞선다 — 하루 안이다. 이것이 이 모델의 중심 주장이며, 규칙이 아니라 계산 결과다.
두 번째 축은 누출은 오직 쇼크를 통해서만 스스로 멈춘다는 것이다.
J = Kf · [ (Pc − Pi) − σ·(Πp − Πi) ]
σ가 떨어졌을 때 여과를 멈출 만큼 빠르게 내려갈 수 있는 항은 Pc 하나뿐이고, Pc는 그것을 먹여 살리던 혈장량이 사라졌기 때문에 내려간다. 그래서 수액소생술은 누출을 다시 켜는 방식으로 관류를 회복시키며, 수액 용량-반응은 단조가 아니라 내부 최적점을 갖는 U자가 된다.
| 파일 | 내용 |
|---|---|
denv_qsp_model.dot · .svg · .png |
기계론적 지도 — 129 노드 · 17 클러스터 · 225 엣지 |
denv_mrgsolve_model.R |
mrgsolve QSP 모델 — 45 ODE, 18개 치료 시나리오, WHO 수액 사다리 |
denv_reference_model.py |
독립 Python/scipy 재구현 (검증용) |
denv_reference_output.txt |
위 스크립트의 전체 출력 — 아래 모든 숫자의 출처 |
denv_scenario_results.json |
시나리오·스윕 결과 (기계 판독용) |
denv_shiny_app.R |
Shiny 대시보드 — 10개 탭 |
denv_references.md |
121개 PubMed 링크, 14개 섹션 |
mrgsolve 모델의 45개 ODE를 코드 번역이 아니라 적어 놓은 방정식으로부터 Python/scipy로 다시 구현하고 LSODA로 풀었다. 이 재구현이 초기 원고의 결함 다섯 가지를 드러냈고, 모두 수정했다.
- Landis–Pappenheimer 교질삼투압 식을 알부민 농도에 적용했다. 이 식은 총단백 용이다. 그 결과 기저 순여과압이 1.5 mmHg가 아니라 13 mmHg가 되어 건강한 사람이 시간당 5 L를 누출했고, 하류의 모든 숫자가 무의미해졌다.
- 식욕부진 항이 실행 기간 동안 15 L를 배출하고 있었다. 혈장량 감소가
모세혈관 누출이 아니라 탈수에서 나오고 있었으므로, 병태생리가 통째로
가짜였다. 기저 섭취/배설을 균형시키고
ANOREX를 0.42 → 0.12로 낮췄다. - 삼출액이 쌓일 수 있는 구획이 없었다. 전신 간질은 림프가 보호하므로 (140 → 1100 mL/h) 흉수·복수가 생기지 않았다. 실제로 삼출액이 쌓이는 이유는 벽측 흉막 림프의 흡수 한계가 ~0.65 mL/kg/h로 전신 림프의 1/100이기 때문이다 (Miserocchi 1997). 자체 압력-용적 관계와 배액 상한을 가진 두 번째 Starling 구획을 넣었다.
- Kf를 손으로 정한 뒤 모세혈관전/후 저항비를 바꿨다. 기저가 어긋나
감염되지 않은 사람이 시간당 +52 mL를 누출했다. 이제
calibrate()가 "감염되지 않은 숙주는 정지 상태여야 한다"는 조건에서 Kf와 Kfs를 유도한다 (Kf = 91.77, Kfs = 13.89 mL/h/mmHg — 자유 파라미터가 아니다). - 일차 감염이 만성화됐다. 자가 항체가 중간 역가에 머물며 스스로를
증강시켰기 때문이다. 동종형 IgG의 4차 구조 에피토프 결합력 우위
(
AVIDN = 3, de Alwis 2012)를 넣자 회복기 재발이 사라졌다.
기저 자가검정 (감염 없는 숙주, 14일): ΔVp +1.9 mL · ΔVi −33.8 mL · ΔTP +0.004 g/dL · ΔHct −0.016 % · ΔMAP +0.012 mmHg. 정지 상태다.
같은 항체 풀에서 두 개의 점유율을 읽는다. 중화는 다중 결합이 필요해 가파른 Hill 함수이고, 옵소닌화는 비리온당 IgG 하나면 FcγR에 걸리므로 빠르게 포화한다.
E(A) = (1 − N) · [ 1 + (Φ−1)·A/(A+K) ]
↑ 떨어지는 Hill ↑ 올라가며 포화
떨어지는 항 × 올라가며 포화하는 항 = 종 모양. 가정한 것이 아니라 나온 것이다.
| 역가 | 1:0 | 1:20 | 1:40 | 1:57 | 1:80 | 1:320 | 1:696 | 1:1280 | 1:2560 |
|---|---|---|---|---|---|---|---|---|---|
| E | 1.00 | 11.81 | 12.69 | 12.83 (정점) | 12.65 | 4.85 | 1.00 | 0.231 | 0.042 |
Salje 2018 (Nature 557:719) 은 코호트에서 1:21–1:80에서 위험 상승, 1:1280 초과에서 보호를 측정했다. 모델의 정점은 1:57, 보호 전환점은 1:696이다.
모체 IgG는 제대혈 역가 1:1280에서 반감기 43일로 감소한다. 최대 증강 역가 1:57까지 내려가는 데 필요한 반감기 횟수는 log₂(1280/57) = 4.49.
4.49 × 43일 = 193일 = 6.3개월 관찰된 영아 DHF 발생 정점: 6–8개월 (Kliks 1988; Chau 2009)
입력은 제대혈 역가와 IgG 반감기 두 개뿐이며, 영아 데이터는 모델에 전혀 들어가지 않았다.
| 값 | |
|---|---|
| 기저 Hct (적혈구 2000 mL, 혈장 2800 mL) | 41.7 % |
| WHO 혈액농축 기준 (+20 %) | 50.0 % |
| 그 Hct에서의 혈장량 | 2000 mL |
| 이미 소실된 혈장 | 800 mL = 구획의 28.6 % |
기준이 늦게 울리는 이유이자, 이미 수액을 준 환자에서 이 기준이 지워지는 이유다.
| 변형 | 혈장 소실 % | 최저 총단백 | 최저 맥압 | 삼출액 mL | 중증도 |
|---|---|---|---|---|---|
| 전체 모델 | 30.6 | 5.21 | 10.8 | 1825 | 0.372 |
| σ를 0.97로 고정 | 6.6 | 6.94 | 30.7 | 77 | 0.091 |
| Kf를 기저로 고정 | 27.6 | 5.15 | 14.8 | 1768 | 0.262 |
| 단백 체질 제거 (PS=0) | 31.3 | 5.86 | 10.3 | 1420 | 0.337 |
| 장막 배액 무제한 | 28.8 | 5.29 | 13.3 | 1128 | 0.261 |
| 압수용체반사 제거 | 29.8 | 5.51 | 9.7 | 1117 | 0.661 |
σ를 고정하면 병이 사라지고, Kf를 고정해도 거의 그대로다. 투과성은 곁가지이고 체질(sieving)이 병이다. 압수용체반사를 끄면 삼출액은 줄고 중증도는 두 배가 된다 — 혈관수축이 Pc를 낮춰 누출을 막는 대신 관류를 희생하기 때문이다.
| 일차 (naive) | 이차 (1:55) | 비 | |
|---|---|---|---|
| 최고 바이러스혈증 (log₁₀) | 7.56 | 7.86 | 1.04 |
| 최고 NS1 (ng/mL) | 432 | 643 | 1.49 |
| 최고 중화 IgG (역가) | 182 | 620 | 3.40 |
| 최고 TNF-α (pg/mL) | 27.7 | 181 | 6.55 |
| 최고 chymase (ng/mL) | 7.8 | 15.5 | 2.00 |
| 글리코칼릭스 최저 | 0.70 | 0.24 | 0.35 |
| 최저 σ | 0.81 | 0.62 | 0.76 |
| Hct 상승 % | 13.2 | 21.7 | 1.65 |
| 혈장 소실 % | 20.0 | 30.6 | 1.53 |
| 최저 총단백 (g/dL) | 6.77 | 5.21 | 0.77 |
| 최저 맥압 (mmHg) | 24.6 | 10.8 | 0.44 |
| 삼출액 (mL) | 480 | 1825 | 3.80 |
| 최저 혈소판 (×10⁹/L) | 77 | 32 | 0.42 |
| 최고 AST (U/L) | 135 | 556 | 4.12 |
| 최고 젖산 (mmol/L) | 1.03 | 4.35 | 4.23 |
| WHO 경고징후 수 | 2 | 6 | 3.00 |
최고 바이러스혈증 차이는 0.3 log에 불과하다 — 두 경우 모두 같은 표적세포 풀을 소진하기 때문이다. 차이는 바이러스 부하가 아니라 면역병리에서 온다. (다만 질병 0.5일째 이차 감염의 바이러스혈증은 일차의 약 70배다 — Duyen 2011과 일치.)
| × WHO 사다리 | 정주량 mL | 쇼크 시간 | 삼출액 mL | 젖산 | 중증도 |
|---|---|---|---|---|---|
| 0 | 0 | 66.0 | 1825 | 4.35 | 0.372 |
| 0.25 | 1671 | 47.5 | 2031 | 2.50 | 0.289 |
| 0.50 | 3342 | 34.5 | 2188 | 1.63 | 0.254 |
| 0.75 | 5014 | 24.0 | 2293 | 1.14 | 0.249 |
| 1.00 | 6685 | 15.0 | 2359 | 1.09 | 0.249 |
| 1.50 | 10028 | 4.5 | 2456 | 1.09 | 0.256 |
| 2.00 | 13370 | 4.5 | 2561 | 1.09 | 0.269 |
| 3.00 | 20055 | 4.5 | 2737 | 1.09 | 0.297 |
곡선이 U자인 이유는 crystalloid가 Pc를 올리고 동시에 Πp를 희석하며, 두 항이 모두 J를 증가시키기 때문이다. 최적점(0.75×, 약 5.0 L)이 WHO 사다리 부근에 떨어진다는 것은 실제 환자에서 조정된 프로토콜에 대한 독립적인 확인이다.
소생 효율은 3배 무너진다: σ = 0.97에서는 혈장 1 mL를 남기는 데 crystalloid 5.5 mL면 되지만, 누출 최저점에서는 16.2 mL, 3× 사다리에서는 29.7 mL가 든다.
| 투여 시작 (열 발생 후) | NS1 노출적분 (% 무치료) | 쇼크 시간 | 이득 % |
|---|---|---|---|
| 0 h | 6.2 | 0.0 | 25.0 |
| 12 h | 30.5 | 0.0 | 20.6 |
| 24 h | 83.6 | 7.0 | 6.2 |
| 36 h | 98.5 | 14.0 | 1.4 |
| 48 h | 99.9 | 15.0 | 0.2 |
| ≥ 60 h | 100.0 | 15.0 | 0.0 |
24시간이면 NS1 노출적분의 84 %가 이미 지출된 뒤다. balapiravir는 발열 후 72시간 이내, celgosivir는 48시간 이내 등록했고 둘 다 음성이었다. 모델은 그 실패를 약효가 아니라 적분의 산술로 설명한다.
코르티코스테로이드도 같은 절벽을 갖는다. 발열 시점 투여는 중증도를 0.249 → 0.195로 낮추지만 바이러스 제거를 늦춰 NS1 노출적분을 15.6k → 21.1k로 올린다. 72시간 투여의 가치는 5 %다 — Tam 2012는 72시간 이내 등록해서 아무것도 찾지 못했다.
지혈을 네 가지 요건의 곱으로 적었다 — 혈소판 수 × 피브리노겐 × 혈관벽 × 관류. 곱이므로 가장 나쁜 항이 답을 정한다.
| 무치료 | 3 pool 수혈 | |
|---|---|---|
| 혈소판 최저 (×10⁹/L) | 32 | 44 (+12) |
| 출혈 지수 | 0.490 | 0.444 |
| 중증도 | 0.249 | 0.237 |
최저점에서 가장 나쁜 항은 혈관벽이고, 혈소판은 혈관벽이 아니다. AAPT (Lye 2017, Lancet 389:1611) 도 같은 결론에 도달했다 — 모델은 시험에 맞춘 것이 아니라 구조적 이유로 동의한다.
| 누출 정도 | 최저 σ | crystalloid 중증도 | colloid 중증도 | 차이 |
|---|---|---|---|---|
| 중등도 | 0.656 | 0.195 | 0.179 | −0.016 |
| 중증 | 0.616 | 0.249 | 0.222 | −0.027 |
| 심각 | 0.594 | 0.292 | 0.262 | −0.030 |
콜로이드가 더하는 교질삼투압 항은 Starling 식에서 σ가 곱해진 채로 들어간다. Wills 2005 (NEJM 353:877) 은 512명 소아에서 전체적 차이는 없고 맥압이 가장 좁은 층에서만 콜로이드 이득을 발견했다. 모델은 그 패턴을 지시받지 않고 재현한다.
모든 숙주에게 같은 모기 접종량을 주고 항체 역가만 바꿨다 (이 스윕만은 접종 시점부터 실행한다 — 보호된 숙주는 애초에 감염되지 않을 자유가 있어야 하기 때문이다).
| 역가 | E | 최고 V (log₁₀) | Hct+% | 최저 맥압 | 최저 혈소판 | 중증도 |
|---|---|---|---|---|---|---|
| naive | 1.00 | 7.58 | 14.3 | 23.6 | 79 | 0.002 |
| 1:20 | 11.81 | 7.83 | 22.2 | 9.9 | 32 | 0.399 |
| 1:55 | 12.83 | 7.84 | 22.2 | 10.0 | 32 | 0.394 |
| 1:160 | 10.31 | 7.60 | 21.9 | 10.6 | 34 | 0.376 |
| 1:320 | 4.85 | 6.94 | 19.9 | 13.8 | 40 | 0.287 |
| 1:640 | 1.21 | 5.44 | 13.3 | 23.3 | 72 | 0.072 |
| 1:1280 | 0.23 | 4.33 | 0.3 | 37.1 | 250 | 0.000 |
| ≥1:2560 | ≤0.04 | 1.70 | 0.3 | 37.1 | 250 | 0.000 |
이 한 곡선에서 세 가지가 따라 나온다: DHF가 두 번째 감염의 병인 이유, 영아 뎅기의 연령 분포, 그리고 백신은 새로운 기전이 아니라 역가를 설정하는 장치일 뿐이므로 접종 전 혈청상태 검사가 산술적으로 강제된다는 것 (Sridhar 2018; WHO 2018 position paper).
| # | 시나리오 | Hct+% | 최저 PP | 쇼크 h | 최저 PLT | 삼출액 mL | 젖산 | AST | 중증도 |
|---|---|---|---|---|---|---|---|---|---|
| S01 | 일차 감염 (naive) | 13.2 | 24.6 | 0.0 | 77 | 480 | 1.03 | 135 | 0.001 |
| S02 | 이차 감염, 무치료 | 21.7 | 10.8 | 66.0 | 32 | 1825 | 4.35 | 556 | 0.372 |
| S03 | 이차 + WHO 수액 | 17.0 | 17.3 | 15.0 | 32 | 2359 | 1.09 | 184 | 0.249 |
| S04 | 과소 소생 (50 %) | 17.7 | 16.6 | 34.5 | 32 | 2188 | 1.63 | 258 | 0.254 |
| S05 | 과다 소생 (200 %) | 17.0 | 17.3 | 4.5 | 32 | 2561 | 1.09 | 176 | 0.269 |
| S06 | 콜로이드 구조요법 | 17.0 | 17.3 | 4.5 | 32 | 2306 | 1.09 | 176 | 0.222 |
| S07 | 알부민 구조요법 | 17.0 | 17.3 | 18.5 | 32 | 2132 | 1.09 | 187 | 0.226 |
| S08 | 예방적 혈소판 수혈 | 17.0 | 17.3 | 15.0 | 44 | 2359 | 1.09 | 184 | 0.237 |
| S09 | 스테로이드 (내원 시점) | 17.0 | 17.3 | 7.5 | 35 | 2346 | 1.09 | 176 | 0.223 |
| S09b | 스테로이드 (발열 시점) | 13.1 | 22.2 | 0.0 | 35 | 2320 | 1.04 | 193 | 0.195 |
| S10 | 항바이러스제 48 h | 17.0 | 17.3 | 15.0 | 32 | 2359 | 1.09 | 184 | 0.249 |
| S11 | 항바이러스제 내원 시점 | 17.0 | 17.3 | 15.0 | 33 | 2359 | 1.09 | 184 | 0.249 |
| S12 | 백신 접종 혈청음성자 | 21.7 | 10.8 | 66.0 | 32 | 1825 | 4.37 | 558 | 0.373 |
| S13 | 백신 접종 혈청양성자 | 6.3 | 31.0 | 0.0 | 130 | 566 | 1.00 | 25 | 0.001 |
| S14 | 삼차 감염 (고역가) | 6.4 | 31.0 | 0.0 | 129 | 581 | 1.00 | 25 | 0.001 |
| S15 | 고용량 파라세타몰 | 17.0 | 17.3 | 15.0 | 32 | 2361 | 1.09 | 184 | 0.249 |
| S16 | 항-NS1 단클론항체 | 15.1 | 19.6 | 1.0 | 38 | 2348 | 1.05 | 170 | 0.212 |
| S17 | 조기 경구 수분보충 | 13.1 | 22.3 | 0.0 | 32 | 2533 | 1.05 | 170 | 0.251 |
| S18 | 내원 8시간 지연 | 19.9 | 13.4 | 27.0 | 32 | 2366 | 2.24 | 269 | 0.286 |
S12 = S02: CYD-TDV를 맞은 혈청음성자는 자연 이차 감염과 구별되지 않는다. 백신이 새로운 기전을 만드는 것이 아니라 역가를 증강 구간에 놓기 때문이다. 같은 백신이 S13에서는 역가를 1:696 위로 밀어 올려 보호한다.
내원 시점(t = 48 h)은 손으로 고른 시각이 아니다. 무치료 이차 감염 경과에서 모델 자신이 WHO 경고징후 3개를 처음 만족하는 순간이다.
45개 ODE, 17개 기능 블록:
| 블록 | 상태변수 |
|---|---|
| 바이러스학 | 표적세포 · eclipse · 생산성 감염세포 · 바이러스혈증 · NS1 |
| 항체 | 기존 이형 IgG · 신생 중화 IgG · 형질모세포 · 항체분비세포 |
| 세포면역 | 활성 CD8 T세포 |
| 매개체 | I형 IFN · TNF-α · IL-10 · VEGF-A · 비만세포 chymase |
| 내피 | 글리코칼릭스 · 수리전도도 배수 |
| 체액 (전신) | 혈장량 · 간질량 · 혈장단백 · 간질단백 |
| 체액 (장막) | 흉수·복수량 |
| 혈액학 | 적혈구량 · 혈소판 · 거핵구 용량 · 항혈소판항체 · 피브리노겐 · 백혈구 |
| 간 | 생존 간세포분율 · AST · ALT |
| 체온 | 시상하부 PGE₂ · 심부체온 |
| 순환 | SVR 배수 · 심박수 · 젖산 |
| 약물 | 콜로이드 · 항바이러스제 depot/혈장 · 파라세타몰 · 메틸프레드니솔론 |
| 적분 | 누적 수액 in/out · NS1 노출 · 면역복합체 노출 |
자유롭지 않은 파라미터들. Guyton의 교과서 값 (Pc 17.3, Pi −3.0, Πp 27.4,
Πi 8.0 mmHg, 기저 림프류 140 mL/h)을 넣으면 두 여과계수는 선택의 대상이
아니다: calibrate()가 "감염되지 않은 숙주는 정지해 있어야 한다"는 조건에서
Kf = 91.77, Kfs = 13.89 mL/h/mmHg를 유도한다.
library(mrgsolve); library(dplyr); library(ggplot2)
mod <- mread("denv_mrgsolve_model.R")
# 이차 감염, 무치료
out <- mod |> param(ABH0 = 55) |> mrgsim(end = 336, delta = 0.5)
plot(out, LOG10V + NS1 + SIGMA + Hct + PP + EFFUS + PLT + TEMP ~ time/24)
# 대시보드
shiny::runApp("denv_shiny_app.R")# 독립 검증 재실행 (numpy + scipy 필요)
python3 denv_reference_model.py- 혈청형을 구분하지 않는다. DENV-1~4는 복제 적합도와 교차반응 구조가
다르지만 모델은 스칼라 역가 하나와
FCROSS하나만 갖는다. 어떤 혈청형 순서가 가장 나쁜지는 말할 수 없다. - 잠복기를 다루지 않는다. t = 0은 발열 시점이다. 모든 시나리오가 같은 바이러스혈증에서 출발하므로 항체 상태만이 유일한 차이다. 역가 스윕만 접종 시점부터 실행한다.
- 연령을 다루지 않는다. 소아는 같은 매개체 부하에서 성인보다 많이 누출한다 (Gamble 2000). 이 모델은 70 kg 성인 기준이다.
- 누출의 공간적 이질성을 다루지 않는다. 흉막강과 복강을 단일 구획과 단일 유순도로 묶었다.
- 응고 캐스케이드가 없다. 피브리노겐은 상태변수 하나이며 트롬빈, protein C 축, 섬유소용해가 없다.
σ가 0.97로 고정되면 중증도가 0.372 → 0.091로 떨어진다는 것은 이 모델에서 가장 강한 단일 주장이다. 사람에서 반사계수를 직접 측정할 방법이 없으므로, syndecan-1과 hyaluronan 탈락 지표를 σ의 대리로 쓴 것에 전적으로 의존한다. Suwarto 2017이 그 대리를 뒷받침하지만 정량적 사상(mapping)은 이 모델의 것이며 독립 검증을 받지 않았다.
교육·연구 목적의 정성적·반정량적 QSP 모델입니다. 공개 문헌과 임상시험 데이터로 구성했으나 독립적으로 검증·인증되지 않았으며 실제 임상 의사결정, 처방, 또는 규제 제출에 사용해서는 안 됩니다.
