Skip to content

Latest commit

 

History

History

aneurysmal-subarachnoid-hemorrhage

README.md

동맥류성 지주막하출혈 → 지연성 뇌허혈 (aSAH-DCI) QSP 모델

Aneurysmal Subarachnoid Haemorrhage → Delayed Cerebral Ischaemia

aSAH-DCI QSP mechanistic map


한 문장 요약

지연성 뇌허혈(DCI)을 "지주막하 혈액 → 혈관경련 → 허혈"의 사슬로 놓지 않고, 하나의 세동맥 확장 예비능(vasodilatory reserve)을 네 소비자가 나눠 쓰는 구조로 놓는다. 그러면 클라조센탄이 혈관조영상 혈관경련을 65% 줄이고도 3개월 결과를 전혀 바꾸지 못한 이유가 가정이 아니라 계산 결과로 나온다.


왜 이 구조인가 — 기존 서술이 설명하지 못하는 네 가지

# 사실 사슬 서술의 문제
i 클라조센탄은 중등–중증 혈관조영 경련을 약 65% 줄이지만(CONSCIOUS-1) 결과를 바꾸지 못한다(CONSCIOUS-2/3) 사슬이 맞다면 결과도 따라와야 한다
ii 니모디핀은 혈관조영상 구경을 거의 바꾸지 않는데도 결과를 개선하는 유일한 약이다 사슬의 방향과 반대다
iii 혈관조영 경련 없이 생기는 DCI가 있고, 중등–중증 경련 환자의 3분의 2는 DCI가 없다 사슬이 일대일이 아니다
iv 유도 고혈압·밀리논은 어떤 환자에서 듣고 어떤 환자에서 안 듣는다(HIMALAIA 무효) 사슬에는 환자별 조건이 없다

세 가지 구조적 주장

CLAIM 1 — 하나의 예비능, 네 소비자

뇌혈관 저항을 직렬 3요소로 쪼갠다.

R_large   전도동맥.  단, r⁻⁴ 를 따르는 것은 경련 구간(FSEG = 0.33)뿐이다
RA        세동맥.    유일하게 조절 가능한 요소.  RA0 0.85 → RAmin 0.20
R_micro   미세혈관 + 모세혈관

자동조절:  RA_desired = CPP/CBF_target − R_large − R_micro
           RA         = AREG·clamp(RA_desired) + (1−AREG)·RA0
           CBF        = CPP / (R_large + RA + R_micro)

예비능    = RA0 − RAmin = 0.65 저항단위

이 하나의 예비능을 넷이 나눠 쓴다.

소비자 무엇이 먹는가 관찰 가능성
C1 대혈관 경련 ΔR_large 혈관조영·TCD가 보는 유일한 것
C2 미세혈관 긴장 페리사이트·세동맥 수축 보이지 않음
C3 모세혈관 미세혈전 모세혈관 탈락 보이지 않음
C4a 관류압 손실 ICP↑ / MAP↓ 보임(그러나 약의 부작용으로 생긴다)
C4b 확산성 탈분극 예비능 요소 자체를 수축시킨다(역 신경혈관 결합) 침습적 ECoG만

한 소비자에서 종말점으로 가는 사상(mapping)은 비선형이고 문맥 의존적이다. 같은 33% 구경 감소가, 예비능이 온전한 환자에서는 무해하고 이미 미세혈전에 예비능을 써버린 환자에서는 경색을 만든다. 한 소비자를 막는 약은 그 소비자가 마침 한계 소비자(marginal consumer)였던 부분집합에서만 듣는다. 이것이 약이 혈관조영을 이기고 임상시험에 지는 구조적 이유다.

CLAIM 2 — 미세순환은 저항의 각주가 아니라 산소 추출 한계를 깎는다

Jespersen & Østergaard의 통과시간 이질성(CTH) 이론을 그대로 넣는다.

CTH    = (RMIC − 1) + 2.5·MTHR
OEFmax = 0.85 / (1 + 1.75·CTH)
ISCH   = 1 − DO2·OEFmax / CMRO2,       DO2 = CBF × CaO2

균질한 혈관망에서 충분했던 CBF가 막힌 혈관망에서는 충분하지 않다. 이 항 때문에 미세혈전과 페리사이트 긴장이 1급 소비자가 되고, 빈혈(CaO2)과 발열(CMRO2)이 혈관경련과 정확히 같은 노드로 들어온다.

CLAIM 3 — 시간창은 달력이 아니라 헤모글로빈 처리 동역학이다

모델 어디에도 "4일" 스위치가 없다. 시간창은 전이 사슬과 유도성 싱크의 합성곱이다.

CLOT --k_mat 0.25--> RBCL --k_hem 0.23--> OXYHB --(HP · CD163 · HO-1 · CSF)-->
                     ↑ 적혈구가 먼저 용혈에 들어가야 한다 = 지연
                                        ↑ HO-1은 유도성, t½ 1.9 d = 지체

여기서 두 가지가 바로 따라 나온다. 출혈량이 많으면 정점이 더 이르고 더 높다. 그리고 CSF 배액은 효과기를 막는 것이 아니라 입력 함수를 절단한다 — 구조적으로 다른 개입이며, 하류 차단제와 교환 가능하지 않다.


계산된 결과 (주장이 아니라 계산)

아래 숫자는 전부 sah_reference_check.py (numpy/RK4 독립 구현, 가상환자 900명, dt 0.01일)가 산출한 것이고 전체 출력은 sah_reference_check_output.txt에 그대로 있다.

1. 해리 (the dissociation)

지표 값
corr(최대 구경 감소, 최종 경색 용적) r = 0.363, r² = 0.132
corr(최고 TCD 유속, 최종 경색 용적) r = −0.023, r² = 0.001
중등–중증 경련이 있으나 DCI가 없는 환자 그런 환자의 63.9%
중등–중증 경련 없이 생긴 DCI 전체 DCI의 10.9%

TCD 유속이 경색과 사실상 무상관인 것은 우연이 아니다. 유속은 Q/A 이므로 심하게 경련하고 심하게 저관류된 혈관은 오히려 낮게 읽힌다. 진단 성능도 그대로 갈린다.

검사 민감도 특이도
TCD > 120 cm/s 66.4% 39.3%
TCD > 160 cm/s 13.4% 84.9%
TCD > 200 cm/s 0.8% 98.9%
PbtO2 < 20 mmHg 95.0% 60.0%
PbtO2 < 15 mmHg 82.4% 84.9%

PbtO2가 이기는 이유는 그것이 공유 노드 자체를 재기 때문이다. TCD는 네 소비자 중 하나만, 그것도 흐름에 교란된 형태로 본다.

2. 예비능을 누가 먹는가 (표준치료 기준, 인구 평균 지분)

일 대혈관 미세긴장 미세혈전 CPP SD 총수요/예비능
2 29.8% 23.8% 3.0% 39.9% 3.5% 0.24
4 61.8% 18.0% 5.0% 13.3% 1.9% 0.73
6 70.9% 12.0% 6.2% 7.9% 2.9% 1.27
8 70.3% 9.4% 7.4% 6.9% 6.1% 1.54
10 67.4% 8.2% 8.5% 7.1% 8.9% 1.58
14 60.3% 7.3% 10.4% 8.9% 13.1% 1.34

대혈관은 확실히 가장 큰 소비자다. 그러나 전 뇌혈관 저항 중 경련 구간의 몫은 0일 15.0% → 6일 37.3% 이고, 나머지 63%는 다른 곳에 있다. 그리고 "가장 큼"과 "막으면 종말점이 움직임"은 같은 말이 아니다 — 그것이 다음 표다.

3. 완벽한 단일 경로 차단 vs 실제 약물

개입 DCI% DCI RR 불량결과 RR
표준치료 (기준) 26.4 1.00 1.00
완벽한 대혈관 차단(비현실적) 9.2 0.35 0.61
완벽한 미세긴장 차단 15.2 0.58 0.76
완벽한 미세혈전 차단 9.1 0.34 0.59
완벽한 SD 차단 23.2 0.88 0.87
자동조절능 보존 19.2 0.73 0.82
대혈관 + 미세혈전 동시 0.0 0.00 0.42
네 소비자 전부 완벽 차단 0.0 0.00 0.42
실제 클라조센탄 15 mg/h 16.6 0.63 1.07

두 가지가 여기서 나온다.

(a) 결과 종말점의 천장. DCI를 0%까지 완전히 없애도 불량 결과는 기저의 41.8%까지만 내려간다. 남는 58%는 초기 뇌손상(EBI)과 비-DCI 채널이다. 이것이 DCI를 표적으로 하는 어떤 약에도 걸려 있는 하드 실링이다 — 시험이 왜 자꾸 실패하는지에 대한 정량적 답.

(b) 완벽함과 실제 사이의 간격. 대혈관 소비자를 완벽히 없애면 결과 RR 0.61이다. 클라조센탄은 같은 소비자를 부분적으로 없애고 결과 RR 1.07을 낸다. 그 간격이 중복성 + 위해 채널이다.

경로 두 개를 동시에 막는 실험은 상가 이하(sub-additive) 로 나왔다(단독 0.651 + 0.655 = 1.307 vs 동시 1.000). 완벽 차단은 하나만으로도 DCI의 대부분을 없애기 때문에 천장에 부딪힌다. 즉 이 모델에서 단일 표적이 실패하는 이유는 "경로가 상승작용해서"가 아니라 실제 약이 완벽 차단에 한참 못 미치고, 종말점에는 DCI 밖의 천장이 따로 있어서다.

4. 클라조센탄: 혈관조영의 승리가 어디서 사라지는가

중등–중증 혈관조영 경련   65.3%  →  21.6%     (RR 0.33 ; CONSCIOUS-1 목표 0.35)
최대 구경 감소(중앙값)     37%   →   25%
DCI                        26.4%  →  16.6%     (RR 0.63)
불량 결과                  29.5%  →  31.6%     (RR 1.07 ; CONSCIOUS-2 목표 ~1.05)

반사실(counterfactual): 위해 채널만 끄면 불량 결과 18.6% (RR 0.63)

즉 혈관조영 효과는 진짜이고, 종말점 효과는 먼저 중복성에, 다음으로 위해 채널에 먹힌다. 위해 채널은 세 갈래로 같은 노드에 들어간다: 수액 정체 → 폐부종 → PaO2↓, 저혈압 → CPP↓, 혈액희석 → CaO2↓. 마지막 것이 특히 조용하다 — 산소 함량을 깎는 것은 저항을 건드리는 것과 정확히 같은 효과다. 모델의 수액 정체 부담은 중앙값 0.00 → 0.75 (IQR 0.47–1.15)로 올라가고, 임계값을 1.50으로 잡으면 13.6%가 넘는다.

5. 창(window)은 만들어진 것이 아니라 생겨난 것

층 oxyHb 정점 ET-1 정점 구경 최저점 허혈 정점
전체 3.0일 (0.33 RU) 5.7일 8.5일 (38% 감소) 11.2일
mFisher 1-2 3.3일 (0.21 RU) 6.0일 8.5일 (31%) 12.2일
mFisher 3-4 2.9일 (0.38 RU) 5.6일 8.5일 (40%) 11.0일
Hp1-1/1-2 3.0일 (0.31 RU) 5.8일 8.5일 (37%) 11.5일
Hp2-2 2.9일 (0.36 RU) 5.6일 8.5일 (39%) 11.0일

예측대로 출혈량이 많으면 더 이르고 더 높다. 층별 DCI 발생률:

  • modified Fisher: mF1 2.3% · mF2 11.9% · mF3 18.0% · mF4 50.0%
  • Hp 유전형: Hp1-1/1-2 25.8% vs Hp2-2 27.7%
  • 자동조절능 3분위: 하위 34.3% · 중위 26.3% · 상위 18.7%

6. 빈혈은 같은 노드의 소비자다

층 n DCI
Hb < 10 g/dL 47 48.9%
Hb 10–13 479 29.6%
Hb ≥ 13 374 19.5%

빈혈군만 수혈하면 DCI 48.9% → 42.6% (RR 0.87). 혈관을 하나도 건드리지 않고 얻은 값이다.

7. 표적이 아니라 노선이 문제다 — 경구 vs 정주 니모디핀

니모디핀 없음  : 경련 72.9%  DCI 34.4%  불량결과 36.8%   (4-11일 평균 CPP 85.4)
경구 니모디핀  : 경련 65.3%  DCI 26.4%  불량결과 29.5%   (CPP 82.7)   RR 0.80
정주 니모디핀  : 경련 65.0%  DCI 30.7%  불량결과 32.8%   (CPP 76.3)   RR 0.89

노출은 사실상 같고(Css 약 48 ng/mL), 경련 감소도 같다. 갈리는 것은 CPP 하나다. 같은 약, 같은 표적, 다른 노선 — 그리고 다른 결론.

8. 그 밖의 시나리오 (전체 15개 중 발췌, RR은 표준치료 대비)

시나리오 경련(≥33%) DCI 불량결과 RR
실로스타졸 100 mg bid 59.0% 13.1% 0.69
조기 요추 배액 52.3% 16.2% 0.74
척수강내 니카르디핀 삽입물 17.9% 11.0% 0.66
유도 고혈압 (MAP +20) 65.3% 18.1% 0.90
밀리논 0.5 µg/kg/min 57.8% 18.3% 0.82
케타민 (SD 억제) 65.3% 24.1% 0.87
심바스타틴 40 mg 63.4% 24.1% 0.96
클라조센탄+실로스타졸+배액 8.4% 3.1% 0.80

마지막 행이 CLAIM 1의 마무리다. 세 경로를 동시에 치면 DCI는 26.4% → 3.1% 로 떨어지는데 불량 결과는 20%만 개선된다 — 다시 그 천장이다.

9. 모니터링 선행 시간과 전신 채널

  • TCD > 120 cm/s: 중앙값 3.4일 · PbtO2 < 20 mmHg: 2.9일 · 경색 시작: 6.4일
  • 저나트륨혈증 < 135 mmol/L 30.1% · < 130 mmol/L 4.6%
  • 누적 SD 횟수 중앙값 6회 (DCI군 65회 vs 비DCI군 4회)
  • 자동조절능 최저값 중앙값 0.59 (DCI군 0.33 vs 비DCI군 0.67)

파일

파일 내용
sah_qsp_model.dot 기계론적 지도 소스 (22 클러스터 · 221 노드 · 339 엣지문)
sah_qsp_model.svg / .png 렌더링 (150 dpi)
sah_mrgsolve_model.R mrgsolve QSP 모델 — 39 ODE (8 PK/노출 + 31 질환·혈역학·손상), 15 시나리오, 12 분석함수
sah_shiny_app.R Shiny 대시보드 8탭 (예비능 게이지 · PK · 헤모글로빈 시계 · 4개 소비자 · 관류/산소 · 엔드포인트 · 시나리오 · 모니터링)
sah_references.md 참고문헌 89편, PMID 전부 PubMed E-utilities로 검증
sah_reference_check.py 독립 numpy/RK4 전사 구현. 위 모든 숫자를 산출
sah_reference_check_output.txt 위 스크립트의 전체 출력 (그대로 커밋)

상태변수 (39 ODE)

묶음 상태
약물 PK/노출 (8) NIMG · NIMC · CLAZ · CILO · STAT · MILRC · NICA · KETA
혈액·헤모글로빈 (8) CLOT · IVH · RBCL · OXYHB · HP · HEME · HO1 · BOX
효과기 (6) ET1 · NOB · ROS · RHOK · INFL · PAI
혈관 역학 (5) SPASM · STRUCT · RMIC · MTHR · AREG
확산성 탈분극 (3) SDSUS · SDBUR · SDCUM
관류·손상 (7) EDEMA · HYDRO · ICP · MAP · OGD · INFVOL · EBI
전신 (2) NAS · FLUID

15 시나리오

S1 지지요법만 · S2 경구 니모디핀(표준) · S3 정주 니모디핀 · S4/S5 클라조센탄 15 / 5 mg/h · S6 실로스타졸 · S7 심바스타틴 · S8 조기 요추 배액 · S9 척수강내 니카르디핀 · S10 유도 고혈압 · S11 밀리논 · S12 케타민 · S13 수혈 · S14 3제 병용 · S15 전체 스택


보정 (문헌 목표 vs 모델)

항목 목표 모델
중등–중증 혈관조영 경련 (대조군) 약 66% 65.3%
DCI 발생률 약 30% 26.4%
불량 결과 mRS 4-6 (90일) 30–35% 29.5%
저나트륨혈증 < 135 30–50% 30.1%
클라조센탄 RR 중등–중증 경련 0.35 0.33
클라조센탄 RR 불량 결과 약 1.05 1.07
니모디핀 RR 불량 결과 0.67 0.80
실로스타졸 RR DCI 0.47 0.50
심바스타틴 RR 불량 결과 약 1.00 0.96
요추 배액 RR 불량 결과 0.76 0.74

모델이 문헌과 어긋나거나 실패한 지점 (튜닝으로 지우지 않고 기록)

  1. 니모디핀의 결과 개선폭이 얕다. RR 0.80 대 Cochrane 0.67. 방향은 맞고 크기가 작다. 모델에서 니모디핀의 이득은 미세혈관·SD·경색전환 경로로만 들어가는데, 문헌의 0.67에는 이 모델이 담지 않은 성분이 포함되어 있을 수 있다.
  2. 혈관조영 경련 없는 DCI가 적다. 10.9% 대 문헌 20–30%. 미세혈전·SD 경로를 더 키우면 맞출 수 있으나 전체 DCI 발생률이 목표를 넘는다. 발생률을 맞추는 쪽을 택했다.
  3. "임의의 혈관경련(≥25% 감소)"이 85.4%로 높다. 문헌의 60–70%와 어긋나는데, 이는 모델이 가장 심하게 영향받은 영역 하나를 대표 구획으로 삼기 때문이다. 임상시험 정의와 맞추는 지표는 ≥33%(중등–중증)이며 그것은 65.3%로 일치한다.
  4. modified Fisher 양극단이 벌어져 있다. mF1 2.3%(문헌 약 6–12%), mF4 50.0%(문헌 약 35–40%). 순서는 단조롭게 맞지만 기울기가 급하다.
  5. 저나트륨혈증 < 130 이 낮다. 4.6% 대 문헌 10–20%.
  6. 가설이 재현되지 않은 항목 — 유도 고혈압의 자동조절 의존성. 모델을 만들 때 "압력 수동(AREG 낮음) 환자에서만 유도 고혈압이 듣는다"를 예측했는데 계산은 반대로 나왔다(유도 고혈압 DCI RR: 자동조절 손상군 0.73 vs 온전군 0.62; 밀리논은 0.75 vs 0.60). 이 구조에서는 MAP 상승이 언제나 CPP와 최대 달성 가능 혈류를 올리고, 자동조절 손상군은 애초에 여유가 적어 상대 이득이 작다. HIMALAIA 무효를 자동조절 층화로 설명하려는 가설은 이 모델에서 지지되지 않는다 — 실패한 예측으로 남긴다.
  7. 위해 채널을 폐 합병증 발생률로 읽어서는 안 된다. FLUID에 개인별 감수성을 넣었지만(클라조센탄군 중앙값 0.75, IQR 0.47–1.15) 임계값을 임상 폐 합병증률 (CONSCIOUS-2 약 8% vs 3%)에 맞춰 보정하지는 않았다. 위해 항의 크기는 CONSCIOUS-2의 결과 무효를 재현하도록 맞춘 것이며, 폐부종 발생률 자체의 예측에는 쓸 수 없다.
  8. 비-DCI 경색(수술 관련·EBI 관련)을 별도 상태로 두지 않았다. 경색 용적은 DCI 경로만 채운다. 결과 로짓의 EBI 항이 그 몫을 대신 담고 있다.

재현

# 지도
dot -Tsvg sah_qsp_model.dot -o sah_qsp_model.svg
dot -Tpng -Gdpi=150 sah_qsp_model.dot -o sah_qsp_model.png

# 위 README의 모든 숫자 (numpy만 필요, 약 10분)
python3 sah_reference_check.py

# mrgsolve 모델
Rscript -e 'source("sah_mrgsolve_model.R"); print(sah_run_all(300)$scenarios)'

# 대시보드
Rscript -e 'shiny::runApp("sah_shiny_app.R")'

면책

교육·연구 목적의 반정량적 QSP 모델이다. 공개 문헌과 임상시험 데이터로 구성했으나 독립적으로 검증·인증되지 않았으며 임상 의사결정·처방·규제 제출에 사용해서는 안 된다. 파라미터는 설명을 위한 근사치이고, 특히 위 "어긋나는 지점" 8개 항목은 이 모델로 답해서는 안 되는 질문의 목록이다.