| 산출물 | 파일 |
|---|---|
| 🗺️ 기계론적 지도 | xald_qsp_model.dot · SVG · PNG — 169 노드 / 265 엣지 / 18 클러스터 |
| ⚙️ mrgsolve 모델 | xald_mrgsolve_model.R — 63 ODE, 시간 단위 = 일(day), 24개 시나리오 |
| 📊 Shiny 대시보드 | xald_shiny_app.R — 11개 탭 |
| 📚 참고문헌 | xald_references.md — PubMed 52편 (PMID 전수 조회 검증) |
하나의 병변이 두 개의 독립 변수를 만든다.
ABCD1 소실 (하나의 병변)
│
┌───────────────┴───────────────┐
▼ ▼
변수 (1) VLCFA 축적 변수 (2) 뇌염증 스위치
───────────────────── ─────────────────────
결정론적 · 용량 의존 이중안정 (스위치, 속도 아님)
측정된다 (혈장 C26:0) 측정되지 않는다 (MRI 전까지)
주변부에서 도달 가능 CNS 내부에서만 도달 가능
(1)에서 (2)로 가는 연결은 속도상수가 아니라 역치(threshold) 로 씌어 있고,
그 역치를 넘길지 말지는 감수성 계수 SUSC 가 결정합니다. 그리고 뇌 VLCFA는
투과 게이트(VLCGATE)를 통해 들어오는데 이 게이트는 모든 X-ALD 환자에서 이미
포화되어 있습니다 — 검증 결과 환자 0.994 / 비보유자 0.081. 게이트가 포화된
변수는 표현형을 구별할 수 없습니다. 그래서 다음이 모두 코딩된 규칙이 아니라
모델의 출력이 됩니다.
- 혈장 C26:0가 표현형을 예측하지 못하는 이유. 이 질환 최대의 음성 결과입니다.
집단 시뮬레이션에서 뇌형 환자와 순수 AMN 환자의 혈장 C26:0는 소수점까지 같은
1.299 μmol/L 이고, 갈라지는 것은 오직
SUSC하나입니다. - 로렌조 오일이 표지자를 정상화하면서 병을 못 막는 이유. 에루크산은 BBB를 넘지
못하고(
FLOBBB= 0), CNS VLCFA의 약 88%는 국소 합성입니다. - HSCT / eli-cel이 병을 멈추면서 표지자를 못 내리는 이유. 교정 미세아교세포는
변수 (2)를 되돌리지만, 뇌 백질 지질 질량의 6%에 불과해
CBR을 움직이지 못합니다. - 이식 후 12–18개월 지체 창이 존재하는 이유.
KMGREP(미세아교세포 치환 속도)의 결과이며, 규칙으로 넣은 것이 아닙니다.
표지자를 고치는 약은 병을 고치지 못하고, 병을 고치는 약은 표지자를 고치지 못한다.
검증 앵커 A17 = 0.0% (로렌조 오일의 Loes 감소율)와 A20 = 0.0% (유전자치료 후 혈장 C26:0 변화율)가 이 문장의 정량적 형태입니다. 둘 다 방정식에 코딩되어 있지 않고, 짝지은 대조군과의 비교에서 계산되어 나옵니다.
xald_bifurcation() 이 이분법으로 안장-노드 분기점을 찾습니다. 이 값은 방정식에
쓰여 있지 않고 탐색되어 나옵니다.
SUSC* = 0.4086
SUSC 0.40 → 스위치 점화 안 함 → 순수 AMN (최고 Loes 0.3)
SUSC 0.44 → 점화 → 뇌형 (최고 Loes 34)
발병 연령은 파라미터가 아닙니다. 임계값에서 얼마나 위에 있는지가 결정합니다
(critical slowing down). 같은 방정식, SUSC 만 바꾼 결과:
| SUSC | 뇌형 발병 | Loes 1→15 | 표현형 |
|---|---|---|---|
| 0.28 | — | — | 순수 AMN |
| 0.40 | — | — | 순수 AMN (임계 바로 아래) |
| 0.44 | 7.7세 | 2.66년 | 뇌형 (임계 근방 → 늦고 느리다) |
| 0.46 | 6.7세 | 1.70년 | 뇌형 |
| 0.52 | 5.1세 | 0.85년 | 뇌형 |
| 1.55 | 4.1세 | 1.45년 | 뇌형 (임계에서 멀다 → 빠르다) |
임상 관찰(발병 3–10세, 최빈 7세)이 파라미터 하나의 분포에서 나옵니다.
SUSC 에만 개체간 변이($OMEGA = 0.36, 로그정규)를 주고 300명을 돌린 결과:
| 항목 | 모델 | 문헌 |
|---|---|---|
| 뇌형 전환 비율 | 37.0% | 35–40% |
| 부신부족 비율 | 100% | 약 80% (과대예측 — 아래 실패 항목) |
| 뇌형 발병 연령 | 중간 4.0세, 범위 2.2–8.9세 | 4–8세, 최빈 7세 |
xald_validate() 가 A1–A23을 실행합니다. 아래 "모델" 열의 어느 값도 방정식에
코딩되어 있지 않습니다. 전부 mrgsolve 2.0.1에서 읽어낸 값입니다.
| # | 앵커 | 목표 | 모델 | 오차 |
|---|---|---|---|---|
| A1 | 정상 혈장 C26:0 (μmol/L) | 0.35 | 0.348 | −0.6% |
| A2 | 미치료 X-ALD 혈장 C26:0 | 1.30 | 1.299 | −0.1% |
| A3 | C26:0 상승 배수 | 3.70 | 3.71 | +0.3% |
| A4 | 정상 C26:0-lysoPC | 0.060 | 0.0594 | −1.0% |
| A5 | X-ALD C26:0-lysoPC | 0.550 | 0.557 | +1.2% |
| A6 | 출생 시 lysoPC 상승 배수 | 8.0 | 9.37 | +17.1% |
| A7 | 정상 코르티솔 (nmol/L) | 300 | 295 | −1.7% |
| A8 | 부신부족 발생 연령 (세) | 7.5 | 6.65 | −11.3% |
| A9 | 부신부족 시 ACTH (pg/mL) | 150 | 154 | +2.7% |
| A10 | 부신부족 시 혈청 K⁺ | 5.8 | 6.15 | +6.0% |
| A11 | 뇌형 발병 연령 (세) | 7.0 | 6.71 | −4.1% |
| A12 | Loes 1 → 15 기간 (년) | 1.50 | 1.70 | +13.3% |
| A13 | 미치료 최종 Loes | 32 | 34 | +6.2% |
| A14 | 순수 AMN 최대 Loes | 0.5 | 0.32 | −36% |
| A15 | AMN EDSS (45세) | 4.0 | 3.99 | −0.2% |
| A16 | 로렌조 오일 C26:0 감소율 | 50% | 45% | −10% |
| A17 | 로렌조 오일 Loes 감소율 | 0% | 0.0% | — |
| A18 | eli-cel 후 18개월 Loes 상승 | 2.5점 | 2.1점 | −16% |
| A19 | eli-cel 24개월 무MFD | 달성 | 달성 | 0% |
| A20 | eli-cel 후 혈장 C26:0 변화 | 0% | 0.0% | — |
| A21 | 호중구 생착 (일) | 13 | 10 | −23.1% |
| A22 | 단핵구 키메리즘 (1년) | 0.95 | 0.982 | +3.4% |
| A23 | 부설판 누적 AUC (mg·h/L) | 90 | 90 | 0% |
20% 이내: 19 / 21 (A17·A20은 목표가 0이라 백분율 정의 없음).
- 부신부족 유병률 100% (문헌 약 80%). 부신 축에는 개체간 변이를 주지 않았기
때문에 모든 모의 반접합자가 동일한 부신 동태를 갖습니다.
SUSC에만$OMEGA를 준 설계의 직접적 대가이며, 부신 축에 두 번째$OMEGA를 추가하면 해결되지만 그러면 앵커 A8이 재보정 대상이 되므로 이번 판에서는 고치지 않고 보고합니다. - 뇌형 발병 연령 중간값 4.0세 (문헌 최빈 7세). 로그정규
SUSC분포의 오른쪽 꼬리에 있는 개체들이 임계에서 멀어 일찍 발병합니다. 범위(2.2–8.9세)는 임상 범위와 겹치지만 중심이 왼쪽으로 치우쳐 있습니다. - A14: 순수 AMN 최대 Loes 0.32 (목표 0.5). 목표보다 덜 나쁜 방향의 미달입니다.
- A21: 호중구 생착 10일 (실측 중간 13일). 조건화 후 조혈 재구성이 다소 빠릅니다.
- 소베티롬 계열이 예방하지 못한다 — 이것은 예측이지 실패가 아닐 수 있습니다.
CNS 침투 티로미메틱은 뇌 VLCFA를 3.53 → 2.47(−30%)로 내리지만 투과 게이트가
포화되어 있어 표현형은 바뀌지 않았습니다(최고 Loes 34 유지). 모델의 예측은
"대사 교정은 게이트를 닫을 만큼 거의 완전해야 한다" 이며, 이는 검증 가능한
주장입니다. 다만 게이트의 Hill 지수(
HVBR= 6)는 STRUCT 파라미터이므로 이 예측의 강도는 그 선택에 의존합니다. 그 의존성을 명시해 둡니다. - 레리글리타존은 부분 지연만 만든다. ADVANCE 시험의 1차 평가변수 미충족과 방향은 맞으나, 시험의 뇌 병변 발생 건수를 수치 앵커로 쓰지 않았습니다 (문헌 파일 §14 참조).
HSPEED = 1, CIRCAMP = 0.55로 되돌리고 10세 시점에서 코신트로핀 자극을 줍니다.
검사 시점의 상태는 출생 상태에서 10년을 실제로 늙힌 뒤 얻습니다(그렇게 하지 않고
start = t0만 주면 손상 없는 부신으로 검사를 받게 되어 예비능이 0.289가 아니라
0.854로 나옵니다 — 통합 중 실제로 발생).
| 기저 코르티솔 | 자극 후 최대 | 예비능 | 판정 | |
|---|---|---|---|---|
| 비보유자 | 295 nmol/L | 536 | 0.965 | 정상 (>500) |
| X-ALD (10세) | 147 nmol/L | 168 | 0.289 | 부신부족 |
명시하는 한계. KMA = 25 pg/mL이므로 기저 ACTH 수준에서 이미 부신이 Vmax의 약
50%로 구동됩니다. 실제 부신보다 자극 여유(headroom)가 좁아서, 임상 검사의 60분보다
긴 자극(3.6시간)을 주어야 500 nmol/L 절단값을 넘습니다. KMA와 VST를 다시 잡아
여유를 넓히면 앵커 A8–A10이 깨지므로 여유를 그대로 두고 한계를 적어 둡니다.
판별력 자체는 536 대 168로 충분히 큽니다.
이 모델은 첫 실행에서 동작하지 않았습니다. 아래는 모두 실제로 발생한 실패이며, 해당 코드 주석에 같은 설명이 남아 있습니다.
- 건강한 사람에서 LSODA가 죽었다 (
t = 2621일, corrector convergence failed,fabs(h_) = hmin). 원인:max(x, 0)형태의 정류(rectifier)를 건강한 평형점에서 정확히 0이 되는 항에 걸어 두어 미분 불연속(kink)이 안정점 위에 놓였습니다.HSCN,MYEL,MYESCV,LOESV,NFSV, 그리고 칼륨의pos(1-ALDACT)가 모두 그랬습니다. → 용량 제한·수복 항을 매끄러운 로지스틱으로 재작성. - 건강한 사람의 혈장 C26:0가 0.348이 아니라 0.232로 수렴했다.
PXC = ALDPF + 0.45*ABCD2F가 건강한 퍼옥시좀 용량을 1.45로 만들었고, 동시에 미치료 null 환자에게 정상의 32% 용량을 선물했습니다 — ABCD2가 기저에서 질환을 구제해 버린 것이고, 그것은 이 질환이 존재하는 이유와 정반대입니다. → ABCD2는 유도된 증분만 기여하도록rect(ABCD2F - 1). - 건강한 사람의 혈청 칼륨이 0.46 mmol/L까지 떨어졌다. 알도스테론 정상상태가
목표(0.30)를 넘어 0.84로 수렴했고
KKSENS*(1-ALDACT)가 한쪽으로 무한했습니다. →VALD재계산 + 양방향 유계 Hill. - 건강한 사람의 사이토카인이 1e18까지 폭주했다. TNF → 성상교세포 → CCL2 →
단핵구 → TNF 루프를 포화 없는 선형 증폭기로 짜서, 선형 이득이
1.355 × BBBP. BBB가 0.738을 넘어 열리면 유계 정상상태가 존재하지 않습니다. → 모든 동원 단계를 용량 제한(로지스틱) + 자극에 대한 포화로. - 건강한 40세가 Loes 34점을 받았다. ROS 기저값이 손상 항에 그대로 들어가
건강한 평형이
MYEL0.97,OLGP0.98이었습니다. → 손상 구동을 건강 기준값 초과분(ROSREF,ATPREF)으로 정의해 건강을 정확히 0점으로. - 스위치가 자기 시동을 걸 수 없었다. 점화 게이트를 수초 잔해에 걸었는데, 잔해 생성(8.8e-4/일)이 처리 용량(1.76/일)보다 세 자릿수 작아 잔해가 절대 역치에 도달하지 못했습니다. → 게이트를 미세아교세포 결손으로 이동(Eichler 2008: 미세아교세포 자멸사가 탈수초보다 먼저). 잔해는 점화가 아니라 증폭 항으로 옮김.
- 모든 환자가 뇌형이 되었다. 미세아교세포 사멸이 자기재생의 6배여서 상주 풀이 전 환자에서 0이 되고 처리 용량도 함께 사라졌습니다. 스위치가 감수성과 무관해집니다. → 풀이 감소된 고원에 머물도록 재보정. 스위치가 스위치이려면 풀이 일부 남아 있어야 합니다.
- eli-cel이 자기 대조군과 똑같았다. 항염 억제만으로는 높은 고정점이 MGP 0.79 →
0.61로만 이동하고 증폭이 여전히 포화됩니다. → 다음으로 교정 미세아교세포 분율
MGN/(MGN+MGC)로 상한을 걸었더니 이번엔 미치료 뇌형이 스스로 꺼졌습니다 (상주 풀이 죽으면 비율이 붕괴). → 분모에 침윤 단핵구를 포함한 미교정 골수계 분율UNCF로 확정. 미치료 시UNCF ≡ 1(상주 풀이 얼마나 고갈되든), 유전자치료 후에는 단핵구 키메리즘(수 주)이 먼저 떨어뜨립니다. - 염증이 꺼진 이식 환자가 Loes 30점을 받았다. Loes를 "현재 손상 목표를 느리게
추격하는 래칫"으로 짜서 최고 목표값을 영구 보존했습니다. 몇 달 만에 정지된
병변도 일시적 최고점이 함축한 점수까지 계속 올라갔습니다. 다음 판(파괴
플럭스의 적분)은 재수초화가 만든 수초를 다시 파괴하는 되풀이 때문에 누적 플럭스가
수년간 계속 늘어 Loes 1→15가 5–7년으로 벌어졌습니다. → 현재 손상을 빠르게
추격하는 단방향 추적기로 확정(수 주 내 반영, 악화가 멈추면 즉시 정지, 절대 하강
없음). 가역적인 조영증강 점수는 상태변수에 적립하지 않고
$TABLE판독값으로 분리.
추가로, 병변 확산이 자기촉매적이어야 한다는 점도 통합 중에 드러났습니다. 1차
소실 항만으로는 "Loes 2→15 약 18개월"과 "3–4년 내 거의 완전 탈수초"를 동시에 만족할
수 없습니다(1차 항은 감속하는데 임상은 가속합니다). 전진하는 병변 전선의 길이가
병변과 함께 자란다는 항(KSPREAD)을 넣어 후기 속도가 초기의 약 5배가 되게 했습니다.
입력 (사용자가 정하는 것): 잔존 ALDP 기능 MUTRES, 여성 보유자의 결핍 세포 분율
FMOS와 상보 CRSC, 감수성 SUSCTV, 식이 DIETSC, 벡터 카피수 VCNIN, 부설판
노출 배수, 각 약물의 용량·개시 시점, 이식 시점(Loes 기준으로 지정).
출력 (모델이 만들어야 하는 것, 절대 알려주지 않는 것): 혈장 C26:0와
C26:0-lysoPC, 조직별 VLCFA, 투과 게이트 포화도, 스위치 상태와 루프 이득, 분기점
SUSC*, 뇌형 발병 연령, Loes·NFS·MFD, EDSS와 6분 보행, 코르티솔·ACTH·K⁺와 부신부족
발생 연령, 단핵구 키메리즘과 교정 미세아교세포 궤적, 치료 지체 창의 길이, MDS/AML
누적 확률, 그리고 집단의 표현형 분포.
이식 시점조차 입력이 아닙니다. .find_loes_day() 가 짝지은 미치료 자연사를 먼저
돌려 지정된 Loes 값에 도달하는 날을 찾고, 그 날에 이식합니다.
치료 효과가 "다른 환자를 비교한 결과"가 되지 않도록, 주요 치료군마다 같은 출생 상태·같은 유전형·같은 감수성에서 출발한 무치료 대조군을 함께 돌립니다.
| 치료군 | 짝지은 대조군 |
|---|---|
| 07 로렌조 오일 (뇌형 감수성) | 08 동일 환자, 무치료 |
| 10 eli-cel (Loes 2에서 이식) | 11 동일 환자, 무치료 |
| 16 하이드로코르티손 보충 | 17 동일 환자, 보충 없음 |
| 12 eli-cel (Loes 15에서 이식) | 10과 같은 환자, 이식 시점만 다름 |
| 14 / 15 부설판 0.72배 / 1.28배 | 10과 같은 환자, 노출만 다름 |
X-ALD 아이는 이미 상승된 C26:0-lysoPC를 가지고 태어나기 때문에 신생아 선별이
가능합니다. 이 모델은 그 값을 입력하지 않습니다. xald_birth() 가 정상 초기값에서
시작해 환자의 유전형으로 280일 자궁내 구간을 시뮬레이션하고, 그 끝 상태를 출생
상태로 씁니다. 앵커 A6(출생 시 lysoPC 9.37배 상승)은 그렇게 나온 값입니다.
HSPEED(기본 0.02). 내인성 호르몬 하위계(ACTH 반감기 10분, 코르티솔 80분)를 14,600일 지평에서 그대로 풀면 LSODA가 분 단위 스텝으로 40년을 적분해야 합니다. 생성과 소실을 같은 계수로 스케일하므로 모든 정상상태는 수학적으로 불변이고 접근 속도만 느려집니다. ACTH 자극검사 시나리오(24)만HSPEED = 1과 일주기 구동(CIRCAMP = 0.55)으로 되돌려 실제 동태로 풉니다.- 만성 투약은 일일 볼루스가 아니라 정속 주입으로 표현했습니다. 평균 노출과 정상상태는 정확하고, 하루 안의 최고–최저 변동은 버립니다. 40년 동안 3,650회 볼루스마다 솔버를 재시작시키지 않기 위한 선택이며, 최고–최저가 중요한 급성 시나리오는 실제 볼루스를 씁니다.
setwd("x-linked-adrenoleukodystrophy")
source("xald_mrgsolve_model.R")
xald_report() # 검증 앵커 + 분기점 + 집단 표현형 분포
xald_validate() # A1-A23 표만
xald_bifurcation() # 안장-노드 분기점 탐색 (이분법)
d <- xald_run("s10_elicel_early") # 시나리오 하나
xald_population(n = 300) # 집단 시뮬레이션
# 대시보드
shiny::runApp("xald_shiny_app.R")지도 렌더링:
dot -Tsvg xald_qsp_model.dot -o xald_qsp_model.svg
dot -Tpng -Gdpi=150 xald_qsp_model.dot -o xald_qsp_model.png검증 환경: R 4.3.3 · mrgsolve 2.0.1 · Graphviz 2.43.0.
교육·연구 목적의 반정량적 QSP 모델입니다. 독립적으로 검증·인증되지 않았으며 임상
의사결정·처방·규제 제출에 사용해서는 안 됩니다. 파라미터 출처 구분(LIT / FIT /
STRUCT)과 인용 근거는 xald_references.md에 있습니다.