바이러스 안전성 모델링: 리스크를 줄이는 단계로서의 불활성화와 여과
📍 현재 위치: 제IV부 · 다운스트림 모델링 — 제14장. 제품은 포집되고 농축되었습니다. 이 장은 제품을 개선하기 위해서가 아니라 리스크를 줄이기 위해 존재하는 단계들을 모델링하며, 모델이 진정으로 까다로운 무언가를 — 결코 거기 없었기를 바라는 어떤 것의 부재(absence)를 — 표현하도록 강제합니다.
지금까지의 모든 단계는 긍정적인 임무를 가지고 있었습니다. 세포를 키우고, 제품을 분리하며, 항체를 포집하는 것이었습니다. 바이러스 안전성(viral safety) 단계는 다릅니다. 이 단계의 목적은, 만약 외래성(adventitious) 바이러스가 공정을 오염시킨 적이 있다 하더라도 그것이 사라질 만큼 작은 수준까지 불활성화되고 제거되도록 보장하는 것입니다. 표준적인 접근법은 직교(orthogonal) 장벽을 사용합니다 — 외피보유(enveloped) 바이러스를 불활성화하는 저(低)pH 유지(low-pH hold) 단계와, 바이러스 입자를 크기에 따라 물리적으로 제거하는 나노여과(nanofiltration) 단계입니다 [1]. 이들을 모델링하는 일은 온톨로지(ontology)를 새로운 방향으로 잡아당기는데, 여기서 중요한 양이 제품의 속성이 아니라 리스크 감소의 척도이기 때문이며, 또한 그 척도가 대부분의 경우 배치별 측정값이 아니라 검증된 주장(validated claim)이기 때문입니다.
대부분의 주방 작업은 요리를 더 좋게 만들지만, 어떤 작업은 오로지 안전을 위해서만 존재합니다 — 결코 거기 없었기를 바라는 세균을 죽이는 온도까지 닭고기를 익히는 것처럼 말입니다. 오늘 저녁 식사에 "세균이 0마리"임을 쉽게 증명할 수는 없습니다 — 대신, 이 조리 단계가 그 세균들을 확실하게 죽인다는 사실을 한 번, 엄밀하게 검증해 두고, 그다음에는 매일 밤 단순히 그 온도에 도달했는지만 확인합니다. 바이러스 안전성도 똑같이 작동합니다. 그 죽이는 능력은 검증 연구에서 입증되었고, 각 배치는 조건이 충족되었는지를 확인합니다. 이 장은 그 구분을 — 한 번 입증된 능력과 매번 확인되는 조건 사이의 구분을 — 모델링하며, 이는 결국 대단히 중요한 것으로 드러납니다.
이 장에서 다루는 내용
우리는 바이러스 불활성화와 여과를, 핵심 속성이 로그 감소값(log reduction value, LRV)인 리스크를 줄이는 단위 조작(risk-reducing unit operation)으로 모델링하고, 상보적 장벽들의 직교성(orthogonality)을 모델링하며, 하나의 바이러스 안전성 단계를 해부합니다. 이 장의 무게는 그 미해결 부분에 실려 있습니다. 그래프가 어떻게 부재와 리스크 감소를 표현하는가, 그리고 데이터 무결성에 있어 결정적인 차이 — 검증된 청소율 주장(validated clearance claim)과 측정된 배치별 결과(measured per-batch result) 사이의 차이 — 입니다.
속성은 제품 품질이 아니라 리스크 감소다
저pH 유지와 나노필터는 둘 다 포집 풀(capture pool)을 더 안전한 물질로 변환하며, 평범한 derivedFrom 엣지를 놓습니다. 그러나 이들이 전달하도록 설계된 속성은 지금까지의 어떤 품질 속성과도 다릅니다. 그것은 로그 감소값(log reduction value, LRV) — 만약 바이러스가 존재한다면 이 단계가 바이러스 부하를 몇 자릿수(orders of magnitude)나 줄일 수 있는지를 나타내는 수치 — 입니다 [1]. LRV가 4라는 것은 만 배의 다시 천 배, 즉 만의 천 배 감소를 의미합니다. 이것은 단량체 순도(monomer purity)가 그러하듯 이 배치 제품의 측정된 속성이 아닙니다. 그것은 그 단계가 가상의 오염물을 줄일 수 있는 능력(capacity)의 척도입니다. 이를 올바르게 모델링한다는 것은, LRV를 제품 물질에 품질로서 붙이는 것이 아니라 단계에 검증된 능력으로서 붙이고, 배치별 기록을 — 검증 연구가 그 능력을 전달한다고 보여 준 — 조건들(pH, 유지 시간, 필터 무결성)과 연관 짓는 것을 의미합니다.
실행 예제는 바로 이것을 합니다. 각 단계는 bp:hasClearanceCapability를 통해 검증된 LRV를 지니며 — 하나의 bp:LogReductionValue 개체(bp:Capability이고, 그 자체로 bp:Disposition입니다) — 반면, 배치별로 측정된 조건들(검증이 의존했던 pH와 유지 시간)은 bp:inheresIn을 통해 청소된 물질에 내속(inhere)하는 bp:Quality 개체들로, 단량체 함량이 사용하는 것과 동일한 형태입니다.
@prefix bp: <https://example.org/bioproc#> .
@prefix xsd: <http://www.w3.org/2001/XMLSchema#> .
# The validated capability of the step (LRV 4.5), established once in a study.
bp:VI-001 a bp:LowPHHold ; rdfs:label "low-pH-hold viral inactivation" ;
bp:hasInput bp:PApool-001 ; bp:hasOutput bp:VIpool-001 ;
bp:hasClearanceCapability bp:LRV-VI-001 ;
bp:orthogonalTo bp:VF-001 ;
bp:realizes bp:VClear-Study .
bp:LRV-VI-001 a bp:LogReductionValue ; rdfs:label "low-pH-hold LRV (validated)" ;
bp:lrvValue "4.5"^^xsd:float ; bp:clearanceMechanism "enveloped-virus inactivation by low pH" ;
bp:isRealizedIn bp:VI-001 ; bp:establishedBy bp:VClear-Study .
# Per-batch measured conditions: qualities inhering in the cleared material.
bp:VIcond-pH a bp:LowPHHoldPHQuality ; rdfs:label "low-pH-hold pH (this batch)" ;
bp:inheresIn bp:VIpool-001 ; bp:holdPH "3.6"^^xsd:float .
bp:VIcond-time a bp:HoldTimeQuality ; rdfs:label "low-pH-hold time (this batch)" ;
bp:inheresIn bp:VIpool-001 ; bp:holdTimeMin "60.0"^^xsd:float .
배치별 조건들의 담지자는 bp:VIpool-001 — 바이러스 불활성화 풀로, derivedFrom bp:PApool-001이며 실행 예제의 황금 계보(WCB-CHO-001 → SEED-001 → BATCH-2026-001 → CLAR-001 → PApool-001 → VIpool-001 → VFpool-001 → POLpool-001 → DS-001 → DP-001) 위에 자리합니다 — 입니다. LRV(4.5)는 bp:hasClearanceCapability를 통해 단계에 걸려 있고, pH(3.6)와 유지 시간(60.0분)은 bp:inheresIn을 통해 물질에 걸려 있습니다 — 검증된 능력과 배치별 측정값이 혼동되지 않게 막아 주는 양면적 형태입니다. 위의 모든 토큰은 instances.ttl에서 그대로 복사한 것입니다.
직교성(orthogonality)은 단지 논의되는 것이 아니라 그 자체가 모델링됩니다. 두 장벽은, 서로 다른 기전으로 — pH에 의한 불활성화, 크기에 의한 제거로 — 바이러스를 제거할 때 직교합니다. 그래서 한 장벽을 이겨낸 바이러스가 다른 장벽까지 이겨낼 가능성은 낮으며, 총 청소율은 두 LRV의 합입니다 [1]. 그래프에서는 대칭 관계 bp:orthogonalTo가 bp:VI-001과 bp:VF-001(LRV 4.5와 4.2)을 연결하고, 총 주장 청소율(total claimed clearance)은 도출된 개체 bp:TotalClearance-mAb-A(bp:lrvValue 8.7)이므로, 검토자가 "누적 청소율이 충분한가, 그리고 그것이 진정으로 직교적인가?"를 수작업 합산이 아니라 쿼리로 물을 수 있습니다. 그 쿼리는 실제로 로드 가능한 파일입니다 — queries/orthogonal-clearance.rq는 bp:hasClearanceCapability를 따라가 각 단계의 LRV와 기전에 도달합니다.
PREFIX bp: <https://example.org/bioproc#>
SELECT ?step ?lrv ?mechanism WHERE {
?step bp:hasClearanceCapability ?cap .
?cap bp:lrvValue ?lrv ;
bp:clearanceMechanism ?mechanism .
} ORDER BY ?step
공개된 데이터에 대해 validate.py는 [('VF-001', 4.2), ('VI-001', 4.5)]을 반환합니다 — 총 8.7로, bp:TotalClearance-mAb-A와 정확히 일치합니다.
안전성 단계를 풀어 헤치면: 직교 장벽들은 각각 검증된 LRV(능력)를 지니는 반면, 각 배치는 검증이 그 능력을 전달한다고 보여 준 조건만을 기록합니다 — 검증된 주장 대 측정된 결과의 구분을 명시적으로 드러냅니다.
저자가 AI의 도움을 받아 직접 제작한 그림입니다.
검증된 총 청소율 8.7로 합산되는 두 개의 직교 장벽 — 그리고 이 장의 핵심 구분을 색으로 그려 냅니다: 검증된 능력(녹색)은 단계에 속하며 모든 배치에 대해 성립하는 반면, 측정된 조건(보라색)은 이 배치의 풀에 속합니다.
저자가 AI의 도움을 받아 직접 제작한 그림입니다.
미해결 과제: 부재의 모델링, 그리고 검증된 것 대 측정된 것
이 장의 어려움은 개념적이며, 바이러스 안전성보다 더 깊이 흐르는 한계를 드러냅니다. 그래프는 무엇이 존재하는지를 단언하도록 만들어졌습니다 — 이 배치는 저 풀로부터 derivedFrom이고, 이 결과는 hasValue 98.611입니다. 바이러스 안전성은 그래프에게 무엇이 존재하지 않는지를 확신하라고 요구합니다 — 감염성 바이러스가 없다는 것입니다. 그러나 부재는 직접 관찰되지 않습니다 — 한 배치에서 "바이러스 0"을 측정할 수는 없고, 어떤 검출 한계까지 검출에 실패할 수 있을 뿐입니다. 그래서 그 보증은 간접적으로 구조화됩니다. 검증 연구는 그 단계들이 실제로 존재할 법한 양보다 훨씬 많은 바이러스를 청소할 수 있음을 입증하고, 각 배치는 그 연구들이 의존한 조건들을 확인합니다. 그래프는 안전성 자체에 대한 측정이 아니라 추론의 사슬 — 검증된 능력에 충족된 조건을 더하면 수용 가능한 리스크를 함의한다 — 을 모델링합니다. 이를 정직하게 표현하는 것(능력, 조건, 추론)은, 허구의 배치별 "바이러스 = 0" 결과를 지어내는 대신 취해야 할, 올바르지만 쉽게 그르치기 쉬운 모델링 선택입니다.
이것을 안전하게 모델링할 수 있게 해 주는 것은, bp:Quality가 특정하게 의존하는 연속체(specifically dependent continuant)를 가리키는 BFO 범주에 — 담지자 없이는 떠다닐 수 없는 속성에 — 근거를 두고 있다는 점입니다. 정렬 파일은 이를 명시적으로 고정하며, bp:inheresIn을 품질을 그것이 의존하는 대상에 연결하는 BFO 관계에 고정합니다.
@prefix bp: <https://example.org/bioproc#> .
@prefix obo: <http://purl.obolibrary.org/obo/> .
@prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#> .
bp:Quality rdfs:subClassOf obo:BFO_0000019 . # BFO 'quality' (specifically dependent continuant)
bp:inheresIn rdfs:subPropertyOf obo:BFO_0000197 . # BFO 'inheres in' (inverse of 'bearer of')
bp:inheresIn은 BFO inheres in의 하위 속성이고 그 선언된 치역이 bp:Material이므로, 어휘는 측정된 배치별 조건이 오직 물질 담지자에만 붙도록 허용할 뿐 — 결코 공정에는 붙지 못하게 합니다. 그것이 LRV에 대한 이 모델의 내장된 정직성입니다. 단계의 검증된 청소 능력은 제품의 bp:inheresIn 품질로 표현될 수 없으며(정식 관계가 그것을 금지합니다), 이는 바로 이 장이 보존되어야 한다고 주장하는 구분입니다. (정식 파일에는 LRV 개체도, LRV 클래스도, LRV를 담지하는 능력 용어도 존재하지 않습니다. 실행 예제는 단량체 함량 같은 물질 품질만을 담고 있으므로, 능력 측면은 RDF로 지어내지 않고 산문으로 기술됩니다.)
그 밑바탕에는 이 시리즈 전체가 유념해야 할 구분이 놓여 있습니다. 바로 검증된 것 대 측정된 것(validated versus measured)입니다. LRV는 검증된 주장입니다 — 공정이 무엇을 할 수 있는지에 관해 전용 연구에서 한 번 확립된 것입니다. pH 측정값은 측정된 결과입니다 — 공정이 무엇을 했는지에 관해 매 배치 포착되는 것입니다. 이 둘을 혼동하는 것은 실제 데이터 무결성 실패입니다. LRV를 마치 이 배치에서 측정된 것처럼 기록하는 그래프는 어떤 계기도 관찰하지 않은 무언가를 단언하며, pH를 그것이 뒷받침하는 청소율과 연결하지 않고 pH만 기록하는 그래프는 그 pH가 중요한 이유를 잃어버립니다. 포집 장(capture chapter)은 세척 검증(cleaning validation)에서 똑같은 간극을 마주했고, 이는 보증이 센서가 아니라 연구에서 나오는 곳이라면 어디서나 되풀이됩니다. 모든 주장의 출처(provenance)를 — 이것이 검증으로 확립된 것인가, 아니면 이번 실행에서 측정된 것인가? — 모델링하는 일은 진술하기는 쉽고 자주 건너뛰어지지만, 출하를 방어할 수 있는 그래프와 그저 완전해 보이기만 하는 그래프를 가르는 바로 그것입니다. 여기서의 정직한 기준은, 바이러스 안전성은 모델링할 수 있되 모델이 검증된 능력을 배치별 측정값인 척하기를 거부할 때에만 그렇다는 것입니다.
왜 중요한가
바이러스 안전성은 그래프의 지적 정직성이 시험받는 지점인데, 측정된 수치에 기댈 수 없기 때문입니다. LRV를 단계의 검증된 능력으로, 배치별 기록을 그 능력을 얻게 해 주는 조건으로, 총 청소율을 도출된 직교 합으로 모델링하면, 그래프는 검토자가 따져 물을 수 있는 방어 가능한 안전성 논증을 뒷받침합니다. 이를 얼버무리면 — 배치별 청소율을 지어내거나, 조건을 능력으로부터 떼어 놓으면 — 그래프는 공정 전체에서 가장 안전에 결정적인 단 하나의 주장을 슬그머니 잘못 표현하게 됩니다. 더 넓게 보면, 이 장은 모델에게 한 번 입증된 것과 매번 확인되는 것을 구분하는 법을 가르치며, 이는 보증이 관찰이 아니라 검증으로 이루어지는 모든 곳에서 신뢰를 뒷받침하는 구분입니다.
실제 현장에서는
직교 바이러스 청소 — 저pH 불활성화에 나노여과를 더하고, LRV는 검증 연구에서 확립되며 조건은 배치별로 확인됩니다 — 는 단클론 항체(monoclonal-antibody) 공정에 대한 규제 기대치이며, 바이러스 안전성 지침에 성문화되어 있고 상업적 정제에서 표준입니다 [1][2][3]. 공장은 이미 검증 보고서와 배치별 조건 기록을 별도로 보관하고 있습니다. 모델링의 진전은 이들을 연결하는 것입니다 — 배치의 pH와 유지 시간을, 그것들을 의미 있게 만드는 청소 연구와 연결함으로써 — 그리하여 안전성 논증이 서로 무관한 두 개의 서류함이 아니라 연결되고 쿼리 가능한 구조가 되게 하는 것입니다. 이 단계가 강제하는 검증된 것 대 측정된 것의 규율은, 제VI부의 검증 및 거버넌스 장(validation and governance chapters)이 규제 모델이 어떻게 유지되는가로 일반화하는 바로 그것입니다.
핵심 용어
- 바이러스 안전성(viral safety) — 외래성 바이러스가 무시할 만한 수준까지 불활성화되고 제거되도록 보장하는 단계들로, 제품을 개선하기보다 리스크를 줄이는 것이다.
- 로그 감소값(log reduction value, LRV) — 만약 존재한다면 한 단계가 바이러스 부하에 대해 달성할 자릿수 단위의 감소량으로, 배치별 제품 품질이 아니라 단계의 검증된 능력으로 모델링된다.
- 직교 장벽(orthogonal barriers) — 서로 다른 기전(pH에 의한 불활성화, 크기에 의한 제거)으로 바이러스를 청소하여, 그 LRV들이 합산되어 총 청소율이 되는 상보적 단계들이다.
- 검증된 주장 대 측정된 결과(validated claim versus measured result) — LRV는 연구에서 한 번 입증된 것(능력)이고, pH나 유지 시간은 매 배치 측정되는 것(조건)이다. 이 둘을 혼동하는 것은 데이터 무결성 실패다.
- 부재의 모델링(modeling absence) — 오염물이 존재하지 않는다는 보증을, 허구의 배치별 "0" 측정값이 아니라 추론의 사슬(검증된 능력에 충족된 조건을 더하면 수용 가능한 리스크를 함의한다)로 표현하는 것이다.
- 저(低)pH 유지(low-pH hold) — 풀을 낮은 pH로 유지하여 외피보유 바이러스를 불활성화하는 것으로, 실행 예제에서는 검증된 LRV 4.5이며, 배치별 pH(3.6)와 유지 시간(60분)이 청소된 물질의 측정된 조건으로 기록된다.
- 나노여과(nanofiltration) — 바이러스 보유 필터(
NF-01)로 바이러스 입자를 크기 배제로 제거하는 것으로, 저pH 유지와 직교적인 검증된 LRV 4.2이며, 따라서 두 단계는 서로 다른 기전으로 청소하고 그 LRV들이 합산된다.
다음 이야기
이제 제품은 포집되었을 뿐 아니라 안전하기까지 합니다. 다음 장 폴리싱 모델링: 다단계 정제와 품질 속성은 불순물과 제품 변이체를 규격까지 끌어내리는 최종 정제 단계들을 모델링하며, 이를 통해 단량체 순도 같은 품질 속성이 어떻게 하나의 단계가 아니라 사슬 전체의 누적 효과로 빚어지는지, 그리고 그래프가 어떻게 어느 단일 노드도 소유하지 않는 공정에 하나의 결과를 귀속시키는지를 묻습니다.