QSP model — mechanistic map · 45-ODE mrgsolve model · 12-tab Shiny app · 96 PubMed references
태아 적혈구가 파괴되는 속도는 세 인자의 곱이며, 이 질환의 모든 치료법은 그중 정확히 하나씩을 소유한다.
destruction = A(t) × f_ag(t) × M(t)
태아에게 실제로 순환 혈색소 중 망상내피계
전달된 항체 항원-양성 분율 청소 용량
| 인자 | 무엇인가 | 누가 움직이는가 |
|---|---|---|
| A | 모체 역가 × 태반 컨베이어 용량(주당 e^0.268, 16→36주에 약 210배) | 니포칼리맙(FcRn 차단), 혈장교환, 고용량 IVIG(FcRn 경쟁), 그리고 그 상류의 anti-D 예방 |
| f_ag | 순환 적혈구 중 항원을 가진 분율 | 자궁내수혈(IUT) — 공혈 적혈구는 항원-음성이므로 수혈은 혈색소를 더하는 것이 아니라 기질을 희석한다 |
| M | 비장·간 대식세포의 청소 용량과 그 포화 | 고용량 IVIG(FcγR 차단), 비장 용적 |
f_ag가 이 지도의 핵심이다. 아무도 이름 붙이지 않는 이 인자 때문에, 수혈 후 헤모글로빈 감소율은 시행할수록 완만해진다(모델 0.29 → 0.18 → 0.17 g/dL/일, 감시 seed 10개 평균). 수혈의 효과가 그것이 실어다 준 헤모글로빈보다 오래 지속되는 이유다.
-
컨베이어 시계 — 주당 e^0.268. 태반 FcRn 수송 용량은 16주에서 36주 사이에 약 210배 증가한다. 스스로도 자라는 태아에 희석되고 나면, 태아가 실제로 경험하는 양 — 태아:모체 항체 농도비 — 이 19.5주 대비 만삭에 약 17배가 된다. 같은 항체 역가가 임신 주수에 따라 전혀 다른 노출이 된다. 따라서 조기발현(early-onset) 중증 HDFN은 다른 질환이 아니라, 컨베이어가 아직 약할 때에도 위험할 만큼 높은 역가일 뿐이다. FcRn 차단제를 14–16주에 시작해야 하는 이유도 여기 있다 — 질환을 치료하는 것이 아니라 컨베이어가 위험한 용량을 실어 나르기 전에 막는 것이다.
-
청소 시계 — 분만 시점의 불연속. 자궁 내에서 빌리루빈은 태반, 즉 모체의 간을 통해 반감기 약 1시간으로 제거된다. 그래서 8 g/dL의 용혈을 겪는 태아는 빈혈이지만 황달은 아니다. 분만하면 그 경로가 절단되고, 성인의 약 6%인 UGT1A1 활성이 그 자리를 대신한다. 용혈은 동일한데 질환이 달라진다 — 분모의 숫자 하나가 바뀌었기 때문이다.
-
그리고 하나의 느린 상태변수: 신생아 내 모체 IgG의 반감기 3주. 용혈은 분만보다 6주를 더 산다 — 수혈로 억제된 골수가 가장 답하기 어려운 시점이다.
여덟 개의 숫자만 적합했다. 모두 발표된 요약 통계이며, 서로 독립적인 4단계로 진행된다(hdfn_calibrate.py, 로그는 calib.log).
| 단계 | 파라미터 | 표적 |
|---|---|---|
| 1 | v0, g_pl |
태아:모체 총 IgG 비 0.075(19.5주), 1.25(39주) — Malek 1996 |
| 2 | kops |
항-D 15 IU/mL에서 첫 IUT가 26주 — Nishie 2012 코호트 평균 26.1주 |
| 3 | ksens, fmh_ante |
예방 없음 16%, 분만 후 300 µg만 1.6% |
| 4 | ugt_birth, ugt_t50 |
건강한 만삭 신생아의 생리적 황달 정점 8 mg/dL, 약 4일 |
| — | emh_thresh |
명백한 복수가 5–6 g/dL에서 나타나도록 배치 |
Kres, dev, nip_pl_pen, do2_alpha(=1), visc_k(=0)는 구조적(structural) 으로 고정하고, 적합하지 않은 대신 민감도로 보고한다.
적합기(fitter)가 한 번도 보지 못한 것들 — 즉 예측:
| 구간 | 모델 | 보고값 |
|---|---|---|
| 1차 IUT 이후 | 0.291 g/dL/일 | 0.40 (SD 0.25) — Nishie 2012 |
| 2차 IUT 이후 | 0.183 g/dL/일 | (측정되지 않음) |
| 3차 IUT 이후 | 0.171 g/dL/일 | (측정되지 않음) |
순서는 예측되고 크기는 1/3만큼 과소예측된다(약 0.5 SD). 감추지 않고 첫 구간을 세 항으로 분해한다.
| 항 | 기여 |
|---|---|
| 항원-양성 세포 파괴 (4.55 g Hb) | +0.345 g/dL/일 |
| 공혈 적혈구 노화 (1.41 g Hb) | +0.107 g/dL/일 |
| 용적 변화 (114 → 101 mL) | −0.144 g/dL/일 |
| 합계 | 0.308 g/dL/일 |
세 번째 항의 부호가 예상과 반대다: 파괴되는 적혈구 용적이 혈장 용적 증가보다 빠르게 줄어들기 때문에 태아태반 혈액량이 오히려 감소하고, 희석은 감소를 돕는 대신 0.14 g/dL/일만큼 거스른다. 공혈 적혈구 수명을 70일 → 45일 → 30일로 줄이면 감소율이 0.290 → 0.322 → 0.359로 커져 남은 격차의 절반쯤만 메워진다. 따라서 공혈세포 생존만으로도 설명되지 않고 최소 한 항이 더 빠져 있다 — 후보는 공혈세포의 bystander 소실, 시술 후 24시간 내 격리, 또는 모델이 잡는 것보다 짧은 실제 간격이다. 모델은 성인의 70일을 유지하고 격차를 보고한다.
뇌 산소 전달이 방어된다면(혈류 ∝ 1/Hb), 속도 × 헤모글로빈은 상수이므로
PSV MoM = 1 / Hb MoM → 1.50 MoM ⟺ Hb 0.667 MoM
즉 그 절단값은 중등도 빈혈의 정의(0.65 MoM) 그 자체의 산술적 상(image) 이며 ROC 산물이 아니다.
민감도와 위양성률은 순수하게 측정 오차의 성질이므로, 모델에 "어떤 측정 오차가 보고값을 재현하는가"를 물을 수 있다. Mari 2000의 코호트 구성(비빈혈 41 · 경증 35 · 중등도 4 · 중증 31)에서:
| 측정 CV | 민감도 | 위양성률 |
|---|---|---|
| 10% | 98% | 5% |
| 15% | 97% | 10% |
| 20% | 94% | 14% |
| 보고값 | 100% | 12% |
민감도는 어떤 CV에서도 재현된다(중증 태아는 절단값보다 한참 위에 있다). 정보를 가진 숫자는 위양성률이고, 그것이 Doppler 재현성의 CV를 15–20%로 못 박는다 — 질환의 성질이 아니라 검사자·기법의 성질에 대한, 검증 가능한 진술이다.
점도항을 따로 더하면 이 결과가 깨진다: visc_k를 0 → 0.45 → 0.90 → 1.80으로 올리면 1.5 MoM이 대응하는 Hb가 0.667 → 0.703 → 0.733 → 0.780 MoM으로 밀리고 위양성률이 10 → 15 → 20 → 31%로 커진다. 관찰된 12%와 맞는 것은 visc_k = 0뿐이다. 물리적 이유도 같다 — 점도 감소가 만드는 혈류 증가가 바로 산소 전달 방어의 기전이므로, 따로 세면 이중 계산이다.
산소 전달이 방어되고 최대 심박출 예비능이 2.2배라면, 태아가 전달을 방어할 수 없게 되는 지점은 Hb MoM = 1/2.2 = 0.45, 즉 약 5.5 g/dL이다. 모델에서 명백한 복수는 0.49 MoM(6.28 g/dL, GA 29.9주) 에서 처음 나타난다. Nicolaides의 임상 규칙(약 5 g/dL 이하)과 일치한다. 제대정맥압은 빈혈과 함께 상승한 뒤 가장 극단적인 경우에 다시 떨어지는데(Ville 1994가 보고한 비단조 패턴), 이것도 모델에서 그대로 나온다.
코팅되지 않은 태아 적혈구는 그저 적혈구다 — 모체 순환에서 반감기 약 70일로 생존한다. 그래서 3일 지연은 항원 노출 적분의 몇 %만 흘린다. 창이 분(minute)이 아니라 일(day) 단위인 이유이고, 2주가 되면 닫히는 이유이기도 하다.
용량 규칙은 약동학이 아니라 화학량론이다: 태아 적혈구 1 mL당 anti-D 20 µg(= 100 IU/mL). 따라서 300 µg = 1500 IU는 태아 적혈구 15 mL, 즉 태아 전혈 30 mL를 덮는다. 모델의 300 µg 곡선은 정확히 태아 전혈 30 mL에서 꺾인다.
| 요법 | 집단 감작률 |
|---|---|
| 예방 없음 | 16.00% (적합 표적) |
| 분만 후 300 µg (24시간 내) | 1.60% (적합 표적) |
| 분만 후 100 µg (24시간 내) | 2.34% |
| 분만 후 300 µg, 72시간 지연 | 2.17% |
| 분만 후 300 µg, 7일 지연 | 3.20% |
| 분만 후 300 µg, 14일 지연 | 4.75% |
| 28주 산전 단독 | 2.28% |
| 28주 산전 + 분만 후 300 µg | 0.26% — 예측, 관찰값 0.1–0.4% |
| 28주 산전 + 분만 후 600 µg | 0.22% |
잔여 위험이 면역학의 실패가 아니라 산술의 실패이기 때문에 이 예측이 성립한다: 고정 300 µg 용량이 덮을 수 없는 태아모체출혈 분포의 꼬리다.
Moise 2024(NEJM)의 등록 기준을 가정하지 않고 모델 안에서 재현했다 — 가상의 산모는 치료하지 않았을 때 24주 전에 수혈이 필요했을 경우에만 등록된다. 항-D 정량치에 로그정규 사전분포를 두고 그 기준으로 선별한 뒤 니포칼리맙 30 mg/kg/주를 투여한다.
| 모델 | UNITY | |
|---|---|---|
| 32주 이상 생존 출생, IUT 없음 | 11/30 = 37% | 7/13 = 54% (95% CI 25–81) |
| 수두종 | 1/30 | 0/13 |
등록된 가상 산모의 항-D 중앙값은 52 IU/mL(IQR 33–63)이었고, 선별 통과율은 38%였다. 예측은 보고된 95% 신뢰구간(25–81%) 안에 들어간다. 다만 이 결과는 사전분포의 산포(GSD)라는 단 하나의 분포 가정에 의존하며, 그 민감도를 표로 함께 보고한다. 이 시뮬레이션이 만들어낸 가장 예리한 추론은 약에 관한 것이다:
태반 syncytiotrophoblast의 FcRn이 혈관 내피의 FcRn과 같은 니포칼리맙 농도를 본다면 이동은 99% 이상 차단되고 UNITY 집단의 어떤 태아도 수혈이 필요하지 않았을 것이다. 13명 중 6명이 필요했다. 따라서 태반 FcRn은 내피 FcRn보다 훨씬 포화시키기 어렵다(모델의 가정: 간질 침투 15%).
항-Kell은 순환 적혈구가 아니라 적혈구 전구세포를 파괴한다(Vaughan 1998). 모델에서는 kell_kill 한 개를 0에서 올리는 것뿐이며, 그 결과 같은 헤모글로빈에 전혀 다른 이차 지표가 따라온다. 임상적 귀결은 모델이 만들어낸 경고다: Kell 감작에서 양수 ΔOD450은 빈혈을 3.2배 과소평가한다(같은 조건에서 항-D 0.0398 대 항-K 0.0124) — 순환에 도달하지 못한 세포가 만든 빈혈이므로 헴이 방출되지 않는다. 빌리루빈에 기반한 감시 전략은 Kell 질환에서 구조적으로 틀리고, MCA-PSV에 기반한 것은 그렇지 않다.
무치료 15 IU/mL 사례에서 명백한 복수는 GA 29.9주, Hb 6.28 g/dL(0.49 MoM) 에서 처음 나타난다. 알부민은 EMH에 의해 억제되고, 제대정맥압은 4.5 → 7.2 mmHg로 오르며, 여과는 17 → 71 mL/일로 증가하는데 림프 회수는 17 → 59에서 멈춘다. 건강한 태아는 정의상 표류하지 않는다(림프 용량 = 기저 여과량).
네 번 수혈받은 태아는 질환 중증도에 비해 낮은 빌리루빈으로 태어난다. 순환 헤모글로빈의 대부분이 아무도 공격하지 않는 공혈 헤모글로빈이기 때문이다 — 자궁 내 감소율을 완만하게 만든 그 f_ag가 황달도 완만하게 만든다. 그리고 헤모글로빈 최저점은 첫 주가 아니라 생후 약 39일에 온다(정점 빌리루빈 16.9 mg/dL, 교환수혈 0회, 보충수혈 4회, 철 부하 187 mg): 모체 IgG는 3주 반감기로 남아 있고, 수개월의 수혈로 억제된 골수에는 예비능이 없다. 이 아이들이 2–3개월간 보충 수혈을 필요로 하는 이유다.
이 모델은 열한 개의 실제 결함을 실행을 통해 노출시켰고, 전부 hdfn_reference_output.txt 16절에 기록되어 있다. 그럴듯한 숫자만 만들어내는 결함이 가장 위험하다는 점에서, 각 항목에는 그것이 무엇을 했는지를 함께 적었다.
- 순환을 "고정 혈액량 + 감쇠하는 초과분"으로 썼더니, 수혈은 시술 직후에는 맞아 보이고 하루 뒤 태아를 20 g/dL로 혈액농축시켰다. 혈장 용적 + 적혈구 용적으로 다시 썼고, 그 과정에서 첫 오류가 감추고 있던 두 번째 오류가 드러났다 — 농축 적혈구가 태아 내 항체를 희석하고 있었는데, 실제로는 그렇지 않다.
- 조혈이 빈혈에만 반응하고 다혈에는 반응하지 않아서, 수혈로 다혈이 된 태아가 계속 최대로 적혈구를 만들었다. 이것이 수혈 후 감소의 대부분을 상쇄하고 감소율을 파괴 속도에 둔감하게 만들었다. EPO를 Hb MoM에 대해 양방향으로 고쳤다.
- 생산을 절대 속도로 썼는데, 질량이 네 배가 되는 태아에게는 맞지 않는다. 이제 요구량(노화 + 혈액량 성장)의 배수이며, 그래서
k_prod = 1은 적합된 숫자가 아니다. - Starling 균형에 기저 불균형이 있어서 건강한 태아가 18주부터 복수를 모았고 사망 위험 함수가 그것에 반응했다. 이제 림프 용량을 기저 여과량으로 정의한다.
- 장수 형질세포가 없어서 감작된 모든 산모의 역가가 임신 중에 붕괴했다(33주에 15 → 0.06 IU/mL).
- 감작을 태아 세포의 청소 flux로 구동했는데, 그러면 72시간 창이 불가능하다. 이제 노출 적분으로 구동하며, 그 결과 72시간 창이 유도된다.
- 빌리루빈에 총 체수분 분포용적(0.75 L/kg)을 주었다. 알부민 결합이므로 0.20 L/kg이다. 잘못된 용적으로는 생리적 황달의 산술이 닫히지 않는다.
- UGT1A1 성숙을 6일 시상수의 1차 과정으로 썼더니 생후 3일에 성인의 40% 활성이 되었다.
- 교환수혈이 공혈세포를 제거하지 않고 추가만 했다. 그래서 공혈 질량이 시행마다 커지고, 그 노화가 커지고, 빌리루빈 생산이 커지고, 역치가 다시 걸리는 양성 피드백이 생겼다 — 한 신생아에서 총 빌리루빈 1.2×10⁷ mg/dL과 69회의 "교환"에 도달했다. 이중용적 교환은 용적 중성이며 순환 내용물의 약 85%를 제거한다.
- "고정 2주 간격 IUT" 프로토콜이 한 번도 작동하지 않았다. 첫 트리거를 설정하는 코드가 없어서 그 arm이 조용히 "수혈 0회"를 보고하고 무치료와 수치적으로 동일해졌다.
- IVIG 기전 분해에서 "FcγR 단독" arm을 IVIG 풀을 0으로 만들어 구현했는데, 그러면 두 기전이 동시에 사라진다. arm이 무력해 보였고 서술은 진실과 정반대 결론을 내렸다. 이제 모델에
ivig_compete스위치가 있다.
추가로 모델이 아니라 분석 스크립트에 있던 두 개의 조용한 버그도 기록한다: 서식 문자열 안의 홀따옴 %("40% of adult")가 %o 변환으로 읽혀 40분치 계산의 마지막 블록에서 스크립트를 죽였고, 4절의 점도 민감도가 이동된 문턱값을 풀지 않고 상수를 인쇄했다. hdfn_section_rerun.py가 존재하는 이유다.
계산에 의해 반증된 저자의 사전 기대(삭제하지 않고 보고):
- "수혈은 헤모글로빈을 더해서 작동한다." → 최소한 그만큼 기질을 제거해서 작동한다. 2절이 두 효과를 분리한다.
- "IVIG의 일은 FcγR 차단이 한다." → 아니다. 스위치를 고친 뒤 보니 전달 항체에 대한 효과는 거의 전부 FcRn 경쟁이었고(5.57 → 1.20 IU/mL), FcγR 차단은 거의 기여하지 않았다 — 이 정도 항체 부하에서는 망상내피계가 율속 단계가 아니기 때문이다.
- "모체 IgG를 70% 낮추는 FcRn 차단제는 질환을 없애야 한다." → 실제로 없앤다. 태반 FcRn이 내피 FcRn보다 훨씬 포화시키기 어렵지 않다면. UNITY의 실패율이 바로 그것을 함의한다.
- "MCA-PSV에는 점도항이 필요하다." → 넣으면 1.5 MoM 문턱값이 중등도 빈혈의 정의에서 벗어나고 위양성률이 관찰값을 넘는다(4절).
| 파일 | 내용 |
|---|---|
hdfn_qsp_model.dot · .svg · .png |
기계론적 지도 — 201 노드 / 18 클러스터. 상자=상태변수(ODE), 타원=매개체/flux, 육각형=약물·시술, 다이아몬드=임상 종점, 팔각형=유도된 문턱값 또는 산술 항등식 |
hdfn_mrgsolve_model.R |
45개 ODE mrgsolve 모델 + 산과 프로토콜을 이산시간 제어기로 구현한 R 드라이버 + 16개 시나리오 |
hdfn_shiny_app.R |
12개 탭 대시보드. 4번 탭이 A × f_ag × M을 각각의 궤적으로 보여주며, 사이드바의 모든 치료 조절기에는 그것이 움직이는 인자가 라벨로 붙어 있다 |
hdfn_references.md |
96개 문헌. 전부 NCBI esearch/esummary로 실시간 해석(resolve)했고, 각 항목에 모델이 그 논문에서 무엇을 가져왔는지(intent) 를 함께 적어 검색된 논문이 의도와 맞지 않으면 한눈에 보이게 했다 |
hdfn_python_reference.py |
실행된 기준 구현. 45개 ODE를 scipy로 적분한다. mrgsolve 파일과 이 파일이 어긋나면 이 파일이 옳다 |
hdfn_calibrate.py · calib.log · hdfn_calibration.json |
4단계 보정과 그 전체 로그 |
hdfn_analysis.py · hdfn_reference_output.txt |
위의 모든 숫자를 생산하는 스크립트와 그 출력 |
mkrefs.py · refs_raw.json · refs_meta.json |
문헌 해석 스크립트와 원시 payload — 모든 인용을 재도출할 수 있다 |
모체(13) 총 IgG · 항-D IgG1 · 항-D IgG3 · 기억 B세포 · 형질세포 · 코팅되지 않은 태아 적혈구 · 코팅된 태아 적혈구 · 수동 anti-D · 근주 depot · 감작 신호 · 니포칼리맙 중앙/말초 · IVIG 유래 IgG
태아 항체(4) 총 IgG · 항-D IgG1 · 항-D IgG3 · 니포칼리맙
순환·적혈구(8) 추정체중 · 혈장 용적 · 자기 항원-양성 Hb · 공혈 항원-음성 Hb · 망상적혈구 · 옵소닌화 Hb · 전구세포 · 간외 조혈
항상성(7) EPO · 망상내피 용량 · 알부민 · 복수 · 심장 비보상 지수 · 젖산 · 핵적혈구
빌리루빈(7) 혈장 · 조직 · 장내 · 광이성체 · 양수 · UGT1A1 · 누적 신경독성 노출
기록·위험(6) 누적 위험함수 · 철 부하 · 출생 후 체중 · 태아에 전달된 누적 항체 · 누적 파괴량 · 누적 노화량
- 수혈 후 감소율을 약 1/3 과소예측한다(0.291 대 0.40 g/dL/일, SD 0.25). 공혈 적혈구 수명을 30일로 줄여도 0.359까지만 가므로, 공혈세포 생존만으로 설명되지 않는다. 모델은 성인의 70일을 유지하고 격차를 보고한다.
- UK "저위험" 밴드를 재현하지 못한다. <4 IU/mL 밴드에서도 44%가 수혈을 필요로 하고 88%가 신생아 교환수혈에 이른다(가상 집단 n=100). 파괴는 역가에 선형인데 컨베이어는 시간에 지수적이므로, 역가가 4배 낮아지면 질환이 4배 가벼워지는 것이 아니라 ln(4)/0.268 = 5.2주 늦춰진다. 항체→탐식 단계의 문턱 비선형성이 빠져 있는 것으로 보인다(14절).
- MCA-PSV 위양성률은 측정 CV 10%에서 과소예측된다(5% 대 12%). 12%를 재현하려면 CV 15–20%가 필요하다(4절).
- 모체 총 IgG가 임신 중 Malek이 측정한 30–40%가 아니라 약 12%만 떨어진다. 희석과 태반 sink는 있지만 모체 IgG 합성 감소 항이 없다 — 아마 이것이 빠진 항이다.
- UNITY 시뮬레이션은 항-D 정량치 산포라는 하나의 분포 가정만큼만 좋다. 그 가정을 바꾸면 답이 넓게 움직인다는 사실을 스윕으로 함께 보고한다.
- 신생아 IVIG에는 투여 경로가 없다: FcγR 항은 모체 IVIG로만 구동된다.
- 양수 ΔOD450은 단일 혼합조로 모델링했다. Liley 구역을 정량적으로 재현하지는 않으며, anti-D 대 anti-K 대비만 재현한다.
- 환경에 R 툴체인이 없어서
hdfn_mrgsolve_model.R과hdfn_shiny_app.R은 실행된 Python 기준 구현을 방정식 단위로 미러링했을 뿐 직접 실행되지는 않았다. - 모든 파라미터는 문헌에 근거한 근사치이며, 이 모델은 교육·연구 목적이다. 실제 임상 의사결정에 사용해서는 안 된다.