제2장

제2장: 상류 공정 — 세포주, 배지, 성장 동역학

하류 공정은 세포가 만들어 낸 것만 회수할 수 있다. 이 장은 상류 공정의 정량적 도구를 다룬다. 클론을 고르고, 먹이고, 얼마나 빨리 자라고 얼마나 많이 생산하는지 측정하며, 생산 규모까지 확장하는 과정이다.

상류 공정(upstream processing, USP)은 동결 세포 바이알에서 생산 생물반응기의 수확까지 모든 단계를 포괄한다. WIA-BIO-015는 이를 두 곳에서 기술한다. 명세서 §2(세포주 개발, 배지, 접종원)와 명세서 §4(성장 동역학, 영양소 소비, 생산물 형성)이다. 참조 SDK는 같은 개념을 소수의 타입으로 표현한다. CellLine, GrowthKinetics, SubstrateConsumption, SpecificProductivity, 그리고 시료별 CellCultureMetrics이며, 계산 메서드는 calculateGrowthKinetics() 하나다. 이 장의 목표는 독자가 일일 원시 시료로부터 이 값들을 모두 손으로 계산하고, 각 필드가 기대하는 단위를 알며, 참조 코드가 어디서 지름길을 택하는지 알아보도록 하는 것이다.

숫자를 서로 대조할 수 있도록 이 장 전체에서 하나의 예시 CHO 유가식 배양 데이터를 사용한다. 이는 교육용 예시이지 벤치마크가 아니다. 값은 명세서 §4가 직접 제시하는 범위(예: μ 0.02–0.04 h⁻¹, 단클론항체의 qp 20–50 pg/cell/day) 안에 들도록 골랐다.

2.1 세포주 개발과 클론 선별

형질감염에서 세포은행 클론까지

생산 세포주는 숙주 세포(예: CHO 세포주)에 생산물 유전자를 선별 마커와 함께 삽입하는 데서 출발한다. CHO에는 두 가지 선별 시스템이 널리 쓰인다. 메토트렉세이트와 짝을 이루는 디하이드로엽산 환원효소(DHFR), 그리고 메티오닌 설폭시민과 짝을 이루는 글루타민 합성효소(GS)다. 둘 다 형질감염된 세포에 선택압을 걸어 마커를, 그리고 그와 함께 생산물 유전자를 발현하는 세포만 살아남게 한다. 살아남은 세포는 이질적인 풀(pool)을 이룬다. 여기서 단일 세포를 분리해 증식·선별하고, 선택된 클론을 마스터 세포은행과 워킹 세포은행으로 동결 보관한다. 이러한 세포 기질의 유래와 특성 분석은 ICH Q5D가, 발현 구조체 분석은 ICH Q5B가 다룬다. 규제 당국은 생산 세포주가 단일 세포에서 유래했다는 근거(클론성 보증)도 요구한다. 혼합 집단은 예측할 수 없는 방식으로 표류할 수 있기 때문이다.

선별은 깔때기 구조다. 수백에서 수천 개의 후보를 소규모 역가로 순위를 매기고, 상위 후보를 진탕 플라스크나 소형 생물반응기에서 유가식으로 시험한 뒤, 마지막 몇 개를 제품 품질(당쇄, 전하 변이체, 응집체)과 장기 계대 안정성으로 확인한다. 순서가 중요하다. 역가는 높지만 당쇄 프로파일이 표류하는 클론은 생산 클론이 될 수 없다.

안정성과 변동성

계대 안정성은 워킹 세포은행에서 생산 배양 종료까지 거치는 세대 수만큼 지난 뒤에도 클론이 같은 제품을 같은 양만큼 생산하는지를 묻는다. 흔히 후기 계대의 비생산성과 초기 계대의 비생산성의 비로 나타낸다. 배치 간 변동성은 반복 배양 간 역가의 변동계수(CV = 표준편차 ÷ 평균)로 표현하는 것이 보통이다. CHO의 안정성 저하는 도입 유전자의 침묵화나 복제수 손실과 관련되는 경우가 많다. 그래서 장기 안정성 시험은 나중에 덧붙이는 절차가 아니라 클론 선별의 일부다.

명세서의 클론 점수 — 순위 개념으로만 쓸 것

명세서 §2.1.2는 단일 점수를 제안한다.

Score = (Titer × Growth_rate × Stability) / Variability
  Titer        g/L
  Growth_rate  h⁻¹
  Stability    0–1
  Variability  CV (%)

생산성·성장·안정성은 보상하고 불일치는 벌한다는 직관은 타당하다. 그러나 이 식은 단위가 섞여 있어 절댓값에 물리적 의미가 없고, 명세서가 붙인 기준("Score > 10")은 현실적인 입력으로 도달할 수 없다. 예를 들어 역가 5 g/L, μ = 0.03 h⁻¹, 안정성 0.95, CV 10 %인 우수한 CHO 클론의 점수는 5 × 0.03 × 0.95 / 10 ≈ 0.014다. 따라서 이 책은 이 점수를 같은 조건에서 측정한 클론들의 순위를 매기는 수단으로만 다루고, 숫자 기준은 사용하지 않는다. 실무에서는 여러 기준을 명시적 가중치로 결합하는 경우가 많고, 제품 품질 속성은 곱셈 항이 아니라 합격/불합격 관문으로 두는 경우가 많다.

CellLine 타입

어떤 방법으로 클론을 고르든 결과는 CellLine 객체에 기록된다. 각 필드는 위에서 설명한 선별 데이터와 그대로 대응한다.

표 2-1. CellLine의 필드(types.ts)
필드타입 / 단위의미실무 메모
id, namestring세포주 식별자와 이름기록이 바이알까지 추적되도록 세포은행 식별자를 쓴다.
systemExpressionSystemCHO, E.coli, Yeast, Pichia, Insect, HEK-293, PER.C6, custom기본 가정을 좌우한다(지연기 시간은 §2.3 참조).
product, productTypestring, ProductType발현 대상과 그 분류예: 'antibody'
growthRateh⁻¹대표 비성장 속도 μ배양 전체 평균이 아니라 지수기에서 측정한다.
doublingTimeh대표 배가 시간 tdgrowthRate와 중복된다. td = ln 2 / μ를 만족해야 한다.
typicalTiterg/L예상 수확 역가어떤 공정 형식(회분식/유가식) 기준인지 밝힌다.
stability0–1계대 안정성사용한 비(예: 후기/초기 qp)를 정의한다.
generation정수, 선택세대 또는 계대 번호매 배양마다 기록한다. 안정성 주장이 이 값에 달려 있다.

growthRate와 doublingTime이 따로 저장되므로 한 레코드가 스스로 모순될 수 있다. |td − ln 2/μ|가 작은 허용오차를 넘으면 객체를 거부하는 간단한 검증만으로도 전사 오류를 일찍 잡을 수 있으며, 구현체 자체 적합성 시험의 좋은 후보다.

2.2 배지 설계

세포에 필요한 것

배양 배지는 에너지, 구성 재료, 신호를 공급해야 한다. 명세서 §2.2.1은 필수 성분을 다음과 같이 열거한다.

이 밖에 배지에는 삼투압을 맞추는 염, 완충계(보통 헤드스페이스의 CO₂와 함께 작동하는 중탄산염, 소규모에서는 HEPES로 보강하기도 한다), 지질 또는 지질 전구체, 그리고 기포를 공급하는 반응기에서는 비이온성 계면활성제 같은 전단 보호제가 들어간다.

화학 조성 배지와 가수분해물 배지

초기 동물세포 공정은 혈청을 썼고, 이후에는 식물·효모 가수분해물로 보강한 무혈청 배지를 썼다. 가수분해물은 저렴하고 역가를 끌어올리는 경우가 많지만, 조성이 로트마다 달라지는 복합 혼합물이며 동물 유래 성분은 외래성 인자 위험을 안고 있다. 그래서 현대의 플랫폼 공정은 모든 성분과 농도가 알려진 화학 조성(chemically defined, CD) 배지를 선호한다. CD 배지는 원인 분석을 가능하게 한다. 어떤 배치가 다르게 거동하면 배지를 원인에 넣거나 뺄 수 있다. 대가는 더 많은 개발 작업이다.

표 2-2. 배지 전략 비교
전략조성이 알려져 있는가로트 간 일관성주요 용도
혈청 함유아니오낮음연구, 과거 공정
가수분해물 첨가 무혈청일부중간가수분해물이 역가를 크게 높이는 공정
화학 조성예높음재조합 단백질의 현행 플랫폼 공정

기초 배지와 공급 배지는 하나의 설계다

유가식 배양에서 기초 배지는 출발점일 뿐이며, 배양 중에 농축 공급액이 추가된다. 기초 배지와 공급액은 함께 설계해야 한다. 기초 배지는 부산물을 쌓지 않으면서 초기 성장을 지탱하고, 공급액은 세포가 실제로 소비한 것을 채운다. 공급 속도 식은 제3장에서 다룬다. 여기서 중요한 것은 §2.4의 소비 속도가 공급 설계의 기반 숫자라는 점이다.

데이터 모델에서 배지 조성은 v1.0의 일급 객체가 아니다. SDK가 기록하는 것은 각 시료에 나타난 배지의 결과다. CellCultureMetrics.glucose(g/L), glutamine, lactate, ammonia(모두 mM)이다. 단위가 섞여 있다는 데 주의해야 한다. 포도당은 질량 농도, 나머지는 몰 농도다. 포도당 5 g/L는 약 27.8 mM(몰질량 180.16 g/mol)이고, 젖산 40 mM은 약 3.6 g/L(90.08 g/mol)다. 이 둘을 혼동하면 그럴듯해 보이면서도 몇 배나 틀린 레코드가 가장 쉽게 만들어진다.

2.3 성장 동역학

지수 성장

제약 없이 자라는 동안 각 세포는 일정한 평균 속도로 분열하므로, 세포 수는 이미 존재하는 세포 수에 비례해 늘어난다. 명세서 §4.1.1은 이를 다음과 같이 쓴다.

dX/dt = μ·X      →      X(t) = X₀ · e^(μ·t)

  X   생존 세포 밀도 (cells/mL)
  X₀  t = 0에서의 밀도
  μ   비성장 속도 (h⁻¹)
  t   시간 (h)

로그를 취하면 곡선은 직선 ln X = ln X₀ + μt가 된다. 따라서 데이터에서 μ를 구하는 방법은 두 가지다. 두 점 식 μ = ln(X₂/X₁)/(t₂ − t₁)을 쓰거나, ln X 대 t에 최소제곱 직선을 맞춰 기울기를 읽는 것이다. 배가 시간은 바로 따라 나온다(명세서 §4.1.2).

t_d = ln 2 / μ ≈ 0.693 / μ

계산 예시 — 지수 성장이 예측하는 것과 그 한계

μ = 0.03 h⁻¹(BIO_CONSTANTS.GROWTH_RATE.CHO의 값)인 CHO 배양을 3 × 10⁵ cells/mL로 접종했다고 하자.

4일째 값은 현실적이다. 7일째 값은 전형적인 유가식 배양이 보여 주는 값이 아니다. 그보다 훨씬 전에 영양소 고갈, 부산물 축적, 산소 전달 한계, 접촉 효과가 성장을 늦춘다. 교훈은 μ가 배양 전체가 아니라 한 단계의 성질이라는 것, 그리고 지수 모델을 지수기 밖으로 외삽하면 세포 밀도를 크게 과대평가한다는 것이다.

회분식 배양의 성장 단계

명세서 §3.2.1은 회분식 배양의 고전적 단계를 설명하며, BioreactorStatus.phase도 같은 어휘('inoculation' | 'lag' | 'exponential' | 'stationary' | 'death' | 'harvest')를 쓴다.

표 2-3. 배양 단계와 데이터에서 알아보는 법
단계일어나는 일일일 데이터에서의 특징
지연기새 배지·온도·밀도에 적응한다ln X가 거의 평탄하고 생존율은 안정적이다
지수기주어진 조건에서 최대에 가까운 속도로 성장한다ln X가 시간에 선형이다. μ는 여기서 측정한다
감속기 / 정지기영양소가 부족해지거나 저해 물질이 쌓여 성장이 느려진다일별 μ가 0으로 떨어진다. 생산물은 계속 쌓이는 경우가 많다
사멸기사멸이 분열을 앞지른다VCD와 생존율이 떨어지고, 세포 용해로 숙주세포 단백질과 DNA가 방출된다

실제 시료에서 μ 추정하기

실제 데이터는 하나의 지수 함수를 따르지 않는다. 이 장의 예시 데이터에서 0–7일의 생존 세포 밀도(VCD, 10⁶ cells/mL)는 0.3, 0.6, 1.2, 2.3, 4.2, 7.0, 9.8, 11.9다. 하루 간격마다 μ를 계산하면 0.029, 0.029, 0.027, 0.025, 0.021, 0.014, 0.008 h⁻¹이다. 처음 4일은 지수 성장에 가깝고 그 뒤로는 속도가 꾸준히 떨어진다. 0–4일 구간 회귀로 얻은 μ ≈ 0.0276 h⁻¹(td ≈ 25 h)이 이 공정의 CellLine.growthRate에 들어가야 할 값이다. 7일 전체를 평균하면 더 낮고 의미 없는 숫자가 나온다. 실무 규칙은 두 가지다.

  1. ln X 대 t 그래프를 보고 구간을 정하고, μ와 함께 그 구간을 보고한다.
  2. 총 세포 밀도가 아니라 생존 세포 밀도를 쓴다. CellCultureMetrics.cellDensity는 생존 세포 밀도로 정의되며, totalCellDensity는 별도 필드다.

calculateGrowthKinetics()가 실제로 하는 일

이 SDK 메서드는 CellLine을 받아 GrowthKinetics 객체를 돌려준다. 논리가 짧아 알고리즘 전체를 옮길 수 있다.

specificGrowthRate = cellLine.growthRate
doublingTime       = ln(2) / specificGrowthRate
maxGrowthRate      = 1.2 × specificGrowthRate      // 고정 가정
lagTime            = (system == 'CHO') ? 12 : 2    // 시간, 고정 가정

계산은 처음 두 줄뿐이다. 최대 성장 속도는 고정된 20 % 할증이고, 지연기 시간은 하드코딩된 경험칙이다. 알아 둘 결과가 세 가지 있다.

그렇다고 이 메서드가 목적에 비해 틀린 것은 아니다. GrowthKinetics 레코드를 채우는 편의 기능이다. 다만 maxGrowthRate와 lagTime으로 돌려주는 값은 측정값이 아니라 기본값으로 표시해야 한다.

시스템별 대표 성장 속도

표 2-4. 발현 시스템별 비성장 속도와 배가 시간
시스템명세서 §4.1.1의 μ 범위(h⁻¹)그 범위가 뜻하는 td명세서 §4.1.2가 제시한 tdBIO_CONSTANTS.GROWTH_RATE
동물세포(CHO)0.02–0.0417–35 h18–24 h0.03 (td ≈ 23 h)
E. coli0.4–1.00.7–1.7 h (42–104분)20–40분0.7 (td ≈ 59분)
효모0.15–0.352.0–4.6 h2–4 h0.25 (td ≈ 2.8 h)

E. coli 행은 두 열이 모두 필요한 이유를 보여 준다. 20–40분의 배가 시간은 μ 약 1.0–2.1 h⁻¹에 해당하며, 이는 영양이 풍부한 배지와 이상적 조건에서만 가능하다. 생산용 유가식 배양에서는 §2.5에서 설명할 이유로 공급을 의도적으로 제한해 μ를 최대치보다 한참 낮게 유지한다. 따라서 명세서의 두 문장은 서로 모순된다기보다 서로 다른 조건을 기술하는 것이지만, 구현체가 한쪽 값으로 다른 쪽을 검증해서는 안 된다.

2.4 기질 흡수

Monod 관계

μ는 제한 기질 농도 S에 어떻게 의존하는가? 명세서 §4.2.1은 Monod 식을 쓴다.

μ = μ_max · S / (K_s + S)

  μ_max  최대 비성장 속도 (h⁻¹)
  S      제한 기질 농도 (g/L)
  K_s    포화 상수: μ = μ_max / 2가 되는 S (g/L)

모양은 쌍곡선이다. S ≫ Ks이면 μ는 S와 거의 무관하고, S가 Ks에 가까워지면 급격히 떨어진다. 명세서는 포도당의 Ks를 동물세포 0.01–0.1 g/L, 미생물 0.001–0.01 g/L로 제시한다. 이는 일반 배지에 든 수 g/L에 비하면 작은 값이다. μmax = 0.04 h⁻¹, Ks = 0.05 g/L(예시 값)로 계산하면 다음과 같다.

표 2-5. Monod 예시: 포도당 감소에 따른 μ(μmax = 0.04 h⁻¹, Ks = 0.05 g/L, 예시)
포도당 S (g/L)μ (h⁻¹)μ / μmax
2.00.039098 %
0.50.036491 %
0.10.026767 %
0.050.020050 %

실무적 결론은 이렇다. 포도당은 거의 고갈되기 전까지는 성장을 제한하는 일이 드물다. 포도당이 아직 2 g/L인데 배양이 느려졌다면 원인은 거의 확실히 다른 데 있다. 다른 영양소, 젖산이나 암모니아, 삼투압, 용존 CO₂나 산소 등이다. Monod 모델은 개념 도구로, 그리고 포도당을 의도적으로 0 가까이 유지하는 미생물 유가식 배양에 쓰는 것이 가장 알맞다. 동물세포 배양에서는 관찰된 감속을 이것만으로 설명하는 일이 드물다. GrowthKinetics.saturationConstant는 Ks를 측정했을 때 기록하는 자리이며, SDK는 이 필드를 채우지 않는다.

비소비 속도와 유지 대사

세포는 기질을 두 가지 목적에 쓴다. 새 바이오매스를 만드는 것과 살아 있는 것이다. 명세서 §4.2.1은 둘을 함께 표현한다.

q_s = μ / Y_X/S + m_s

  q_s     비기질 소비 속도 (g/cell/h)
  Y_X/S   기질당 바이오매스 수율 (cells/g)
  m_s     유지 계수 (g/cell/h)

첫째 항은 성장에 비례하고 둘째 항은 성장이 멈춰도 계속된다. 그래서 정지기에도 포도당 소비는 0으로 떨어지지 않으며, 세포가 분열을 멈췄다고 공급을 그냥 끌 수 없다.

예를 들어 μ = 0.03 h⁻¹, YX/S = 2 × 10⁹ cells/g, ms = 2 × 10⁻¹² g/cell/h(CHO 배양에 대한 예시 값)라면 다음과 같다.

q_s = 0.03 / 2e9 + 2e-12
    = 1.5e-11 + 0.2e-11
    = 1.7e-11 g/cell/h   (17 pg/cell/h)

생존 세포 1 × 10⁷ cells/mL (= 1 × 10¹⁰ cells/L)일 때:
  부피 흡수 속도 = 1.7e-11 × 1e10 = 0.17 g/L/h ≈ 4.1 g/L/day

공급 설계가 필요로 하는 것은 마지막 숫자다. 최고 밀도에서 공급액이 하루에 대략 얼마의 포도당을 보충해야 하는지 알려 준다. 문제의 규모도 보여 준다. 이 밀도의 배양은 4 g/L의 포도당 여유분을 약 하루 만에 소진할 수 있다. 포도당을 최소 하루 한 번, 흔히 at-line으로 측정하는 이유다.

데이터 모델에서 SubstrateConsumption은 specificRate, yieldCoefficient, 선택 필드 maintenanceCoefficient, 그리고 substrate('glucose' | 'glutamine' | 'custom')를 기록한다. specificRate의 주석은 g/cell/h와 mmol/cell/h를 모두 허용한다. 타입이 자기 단위를 담지 않으므로, 구현체는 기질마다 하나의 규약을 고정하고 문서화해야 한다. 예컨대 CellCultureMetrics의 단위에 맞춰 포도당은 g/cell/h, 글루타민은 mmol/cell/h로 정하는 식이다.

2.5 부산물: 젖산, 암모니아, 글루타민

젖산

빠르게 자라는 동물세포는 산소가 있어도 포도당의 상당 부분을 젖산으로 바꾼다. 일종의 넘침 대사(overflow metabolism)다. 해당과정에서 포도당 한 분자는 최대 두 분자의 젖산을 낼 수 있으므로 몰비 Ylac/glc의 상한은 2다. 명세서 §4.2.2는 젖산 생성을 다음과 같이 표현한다.

q_lac = Y_lac/glc × q_glc        (mmol/cell/h)

그리고 목표를 Ylac/glc < 1.5 mol/mol로 둔다. 젖산이 중요한 이유는 두 가지다. 산이므로 pH를 유지하려면 염기를 넣어야 하고, 넣은 염기는 삼투압을 높인다. 또 고농도에서는 성장을 저해한다. 명세서는 저해 기준을 40 mM으로 명시하고, SDK의 monitorBioreactor()도 같은 숫자를 쓴다. 젖산이 40 mM을 넘으면 문제로, 30 mM을 넘으면 축적 중으로 표시한다(모든 기준값은 제6장에 정리한다).

많은 CHO 배양은 젖산 전환(lactate shift)을 보인다. 초기 생성기가 지나면 세포가 젖산을 순소비하는 쪽으로 바뀌며, 흔히 정지기로 넘어가는 무렵에 일어난다. 전환이 일어나는 배양은 삼투압을 억제하고 더 높은 역가에 이르는 경향이 있고, 그렇지 않은 배양은 젖산이 쌓여 결국 공정이 그것에 제한될 수 있다. 전환을 유도하는 전략으로는 포도당 제한(낮게 유지하되 0으로 만들지 않음), 염기 투입이 과하지 않도록 pH 설정값과 불감대 조정, 미량 금속 조정, 온도 전환(제3장에서 다룸) 등이 있다.

암모니아와 글루타민

글루타민은 많은 세포주에서 질소원이자 에너지원이다. 글루타민 대사는 암모니아를 내놓으며, 글루타민은 37 °C의 액체 배지에서 자연 분해되어 세포가 없어도 암모니아를 만든다. 암모니아는 성장을 저해할 수 있고 시알산화를 포함한 당쇄화에 영향을 준다고 보고되어 있다. SDK는 ammonia가 8 mM을 넘으면 주의를 띄운다.

흔한 완화책은 잘 확립되어 있다. 유리 글루타민 대신 알라닐-글루타민 같은 안정한 디펩타이드를 쓰거나, 글루타민 공급을 줄이거나, 스스로 글루타민을 합성해 무글루타민 배지에서 자랄 수 있는 GS 기반 세포주를 쓰는 것이다. 저마다 장단점이 있으며, 선택은 반응기 앞이 아니라 공정 개발 단계에서 이루어진다.

미생물의 대응 현상

다른 숙주에서도 분자만 다를 뿐 같은 양상이 나타난다. E. coli는 포도당 흡수가 호흡 능력을 넘으면 아세트산을 배출하고, Saccharomyces cerevisiae는 비슷한 조건에서 에탄올을 만든다. 대응 원리도 같다. 비흡수 속도가 넘침 지점 아래에 머물도록 기질 공급을 제한한다. 미생물 유가식 배양이 μmax보다 한참 낮은 μ로 운전되는 이유가 바로 이것이다.

표 2-6. CellCultureMetrics가 추적하는 부산물
분석 대상필드와 단위중요한 이유표준이 쓰는 값
젖산lactate, mM산 부하, 삼투압, 성장 저해저해 기준 40 mM(명세서 §4.2.2). SDK는 >40 mM 표시, >30 mM 경고
암모니아ammonia, mM성장 저해, 당쇄화 영향SDK 주의 >8 mM
글루타민glutamine, mM영양소이자 암모니아 원천v1.0에 기준 없음
포도당glucose, g/L주 탄소원v1.0에 기준 없음. 배지 범위 5–25 g/L(명세서 §2.2.1)

2.6 생산물 형성

비생산성과 IVC

수확 역가는 두 가지에 달려 있다. 얼마나 많은 세포가 얼마나 오래 일했는가, 그리고 각 세포가 단위 시간당 얼마나 생산했는가다. 앞의 것은 생존 세포 적분값 IVC = ∫X dt(단위 cells·day/mL 또는 cells·h/mL)로, 뒤의 것은 비생산성 qp로 나타낸다. 명세서 §4.3은 다음과 같이 정의한다.

q_p   = (1/X) · dP/dt              (pg/cell/day)
Y_P/X = P_final / ∫X dt              (명세서에서는 g/cell/h)

첫째 식을 배양 기간에 걸쳐 적분하면 둘이 같은 양임을 알 수 있다. qp가 대체로 일정하면 P = qp · IVC이므로, 역가를 IVC에 대해 그린 그래프의 기울기가 qp다. P 대 IVC 그래프는 배양 중 생산성이 바뀌는지(예: 온도 전환 이후) 보는 표준적인 방법이다. qp의 변화가 기울기 변화로 드러나기 때문이다.

사다리꼴 공식으로 IVC 계산하기

일일 시료로는 적분을 사다리꼴 공식으로 근사한다. 각 구간마다 두 VCD의 평균에 구간 길이를 곱한다. SDK에는 SpecificProductivity 타입(qp, averageVCD, ivc, yieldPerCell)은 있지만 이를 채우는 함수는 없으므로, 아래 계산은 구현체가 직접 제공해야 한다. 생존 세포 밀도는 CellCultureMetrics.cellDensity에서, 역가는 productConcentration에서 가져온다는 점에 유의한다.

import type { CellCultureMetrics, SpecificProductivity } from '@wia/bio-015/types';

interface Sample {
  hours: number;               // 접종 후 경과 시간 (h)
  metrics: CellCultureMetrics; // cellDensity = 생존 cells/mL, productConcentration = g/L
}

/** 생존 세포 밀도만으로 구한 사다리꼴 IVC (cells·h/mL). */
function integralViableCells(samples: Sample[]): number {
  let ivc = 0;
  for (let i = 1; i < samples.length; i++) {
    const dt = samples[i].hours - samples[i - 1].hours;
    if (dt <= 0) throw new Error('samples must be in strictly increasing time order');
    ivc += 0.5 * (samples[i].metrics.cellDensity + samples[i - 1].metrics.cellDensity) * dt;
  }
  return ivc;
}

/** 시료 시계열로 SpecificProductivity를 채운다. */
function specificProductivity(samples: Sample[]): SpecificProductivity {
  const first = samples[0];
  const last = samples[samples.length - 1];
  const ivcHours = integralViableCells(samples);                     // cells·h/mL
  const dP = (last.metrics.productConcentration ?? 0)
           - (first.metrics.productConcentration ?? 0);              // g/L
  const dPperMl = dP * 1e9;                                          // g/L → pg/mL
  const qpPerHour = dPperMl / ivcHours;                              // pg/cell/h
  const duration = last.hours - first.hours;
  return {
    qp: qpPerHour * 24,                                              // pg/cell/day
    averageVCD: ivcHours / duration,                                 // cells/mL
    ivc: ivcHours / 24,                                              // cells·day/mL
    yieldPerCell: (dP * 1e-3) / ivcHours,                            // g/cell/h
  };
}

이 코드에는 두 가지 규약이 들어 있으며, 어느 구현이든 문서로 남겨야 한다. IVC는 실무자가 가장 많이 읽는 단위인 cells·day/mL로 보고하고, yieldPerCell은 명세서의 g/cell/h를 따른다. 마지막 줄의 1 × 10⁻³은 g/L를 g/mL로 바꾸는 인자다.

이 장의 데이터로 푼 계산 예시

표 2-7. 예시 CHO 유가식 배양, 0–7일
일VCD (10⁶ cells/mL)그날로 끝나는 구간의 사다리꼴 (10⁶ cells·day/mL)누적 IVC
00.3—0
10.60.450.45
21.20.901.35
32.31.753.10
44.23.256.35
57.05.6011.95
69.88.4020.35
711.910.8531.20

7일째 역가가 1.2 g/L이고 접종 시점에는 사실상 0이라고 하자(역시 예시 값). 그러면 다음과 같다.

q_p = ΔP / IVC
    = (1.2 g/L × 1e9 (g/L당 pg/mL)) / (31.2 × 10⁶ cells·day/mL)
    = 1.2e9 / 3.12e7
    ≈ 38 pg/cell/day

평균 VCD = 31.2 × 10⁶ / 7 ≈ 4.5 × 10⁶ cells/mL
Y_P/X    = 38 pg/cell/day ÷ 24 ≈ 1.6 pg/cell/h = 1.6 × 10⁻¹² g/cell/h

결과는 명세서 §4.3.1이 항체에 대해 제시한 20–50 pg/cell/day 범위 안에 든다. IVC가 어디서 왔는지 보자. 3분의 2 이상이 5–7일에 쌓였다. 유가식 배양을 만드는 것은 배양 후반의 생산적인 세포·일(cell-day)이다. 생존율이 유지되는 동안 고밀도 구간을 하루이틀 늘리는 것이 qp를 몇 퍼센트 올리는 것보다 역가를 더 많이 더하는 경우가 흔하다.

부피 생산 속도와 qp 사이의 환산

운전자는 부피 생산 속도(g/L/h)를 보고 qp가 필요하거나, 그 반대인 경우가 많다. 환산에는 단위만 조심하면 된다.

q_p [pg/cell/day] = dP/dt [g/L/h] × 24 [h/day] × 1e9 [g/L당 pg/mL] / X [cells/mL]

예: X = 1 × 10⁷ cells/mL에서 dP/dt = 0.01 g/L/h
  q_p = 0.01 × 24 × 1e9 / 1e7 = 24 pg/cell/day

반대 방향으로, qp = 24 pg/cell/day인 1 × 10⁷ cells/mL 배양은 하루에 0.24 g/L의 생산물을 더한다. 어떤 역가 곡선이든 이것이 가장 빠른 타당성 점검이다. 역가가 세포 밀도 × qp가 허용하는 것보다 빨리 오르면 측정값 중 하나가 틀린 것이다.

2.7 종배양 확장과 접종

종배양 확장이 필요한 이유

세포은행 바이알 하나에 든 세포는 적지만, 생산 생물반응기는 접종 시 수천억 개의 세포가 필요하다. 동물세포는 너무 희석되면 잘 자라지 못하므로 생산 용기에 바로 넣을 수도 없다. 종배양 확장(시드 트레인)은 배양을 단계별로 키우며, 각 단계는 세포가 견딜 수 있는 밀도로 다음 단계를 접종한다. 명세서 §2.3.1은 전형적인 진행을 다음과 같이 제시한다.

T-플라스크 (25 cm²) → 진탕 플라스크 (125 mL) → 스피너 플라스크 (1 L)
  → 웨이브 백 (10 L) → 시드 생물반응기 (100 L) → 생산 반응기 (1,000–10,000 L)

단계당 확장 비율: 1:5 ~ 1:10

단계마다 걸리는 시간

각 단계를 1:N으로 나누고 같은 밀도까지 다시 키운다면, 단계마다 log2N번의 배가가 필요하다. td = 23 h일 때는 다음과 같다.

표 2-8. td = 23 h에서 시드 트레인 단계당 시간(이상적 지수 성장)
확장 비율필요한 배가 횟수단계당 시간
1:5log25 ≈ 2.32≈ 54 h (2.2일)
1:10log210 ≈ 3.32≈ 77 h (3.2일)

이것은 하한이다. 옮길 때마다 생기는 지연기가 시간을 더한다. 이 표는 명세서의 비율이 왜 그 범위에 모이는지 설명한다. 비율을 키우면 단계 하나를 줄이지만 각 단계가 길어지고 세포가 더 낮은 밀도에서 출발하며, 비율을 줄이면 용기와 취급이 늘어난다. 시점도 중요하다. 시드는 아직 지수기에 있을 때 옮겨야 한다. 시드 반응기에서 이미 느려진 세포는 그 상태를 생산 반응기로 가져간다.

마지막 단계의 크기 정하기

명세서 §2.3.2는 동물세포 접종 밀도를 2 × 10⁵ ~ 5 × 10⁵ cells/mL로 제시한다. 생산 반응기에서 거꾸로 계산하면 시드 반응기의 크기가 정해진다. 예로 작업 부피 2,000 L를 3 × 10⁵ cells/mL로 접종한다면 다음과 같다.

필요 세포 수 = 3e5 cells/mL × 2,000 L × 1,000 mL/L = 6 × 10¹¹ cells

이송 밀도 3 × 10⁶ cells/mL인 시드 반응기:
  필요 부피 = 6e11 / 3e6 = 2 × 10⁵ mL = 200 L   (1:10 확장)

같은 계산을 한 단계씩 거꾸로 적용하면 시드 트레인 전체와 그 일정표가 나온다. 미생물 공정에서는 접종원을 보통 작업 부피 대비 백분율이나 광학 밀도로 지정하지, mL당 세포 수로 지정하지 않는다. 미생물에 대한 명세서의 10⁷–10⁸ cells/mL라는 수치는 이례적인 표현 방식이므로 이 책에서는 기준으로 쓰지 않는다.

시드 트레인 기록하기

WIA-BIO-015 v1.0에는 시드 트레인 전용 객체가 없다. 실용적인 방법은 각 시드 용기를 자체 reactorId와 BioreactorStatus 스냅숏을 가진 생물반응기로 취급하고, 옮길 때마다 CellLine.generation을 기록하는 것이다. 그러면 워킹 세포은행에서 수확까지의 총 세대 수가 안정성 시험(§2.1)이 다룬 범위 안에 있는지 확인할 수 있다. 스냅숏 객체는 제5장에서 자세히 설명하고, 제7장에서 시드 트레인과 생산 반응기의 스냅숏을 배치 기록으로 묶는 방법을 보인다.

2.8 장 요약

상류 공정의 성능은 계산하기 쉽고 오용하기도 쉬운 몇 개의 숫자로 요약된다. 아래 표는 이 장에서 다룬 함정과 함께 그 숫자들을 모은 것이다.

표 2-9. 상류 공정 지표의 계산법과 주의점
지표식WIA 필드흔한 실수
μ지수기 ln X 대 t의 기울기CellLine.growthRate, GrowthKinetics.specificGrowthRate배양 전체 평균, 총 세포 사용
tdln 2 / μdoublingTimeμ와 맞지 않는 값 저장
qsμ / YX/S + msSubstrateConsumption.specificRate단위 미지정(g와 mmol)
IVC∫X dt (사다리꼴)SpecificProductivity.ivccells·h와 cells·day 혼용
qpΔP / IVCSpecificProductivity.qpg/L와 pg/mL 사이의 10⁹ 인자 누락
젖산, 암모니아측정값CellCultureMetrics.lactate, ammonia (mM)mM 필드에 g/L 입력

이해를 점검하는 질문:

  1. VCD가 36시간 동안 1.5 × 10⁶에서 4.0 × 10⁶ cells/mL로 늘었다. μ와 td는 얼마이며, 이 μ를 CellLine.growthRate에 저장하기 전에 무엇을 확인하겠는가?
  2. 포도당이 3 g/L인데 성장이 멈췄다. Monod 모델을 근거로 포도당이 원인일 가능성이 낮은 이유를 논하고, 다른 후보 세 가지를 들어라.
  3. 표 2-7에서 7일째 역가가 1.5 g/L라면 qp를 다시 계산하라. 같은 qp로 2.0 g/L에 이르려면 IVC가 얼마나 늘어야 하는가?
  4. calculateGrowthKinetics()는 왜 HEK-293 세포주에 2 h의 지연기 시간을 돌려주는가? 구현체에서는 어떻게 바로잡겠는가?
  5. 시드를 4 × 10⁶ cells/mL에서 옮긴다면, 4 × 10⁵ cells/mL로 접종하는 500 L 생산 배양을 위한 시드 반응기의 크기를 정하라.