BioPlayground

🧬
목록으로

합착 이론: 집단 유전학의 시간 역산 관점

왜 계통수를 시간 역방향으로 추적하는가. Kingman의 coalescent 정리부터 msprime 실전 시뮬레이션, effective population size 추정까지.

심화
|
18
|
검증 완료 (2026-07-20)
population geneticscoalescentancestral recombination graph
진행률0/34 (0%)

관점을 뒤집으면 문제가 쉬워진다

M26~M28에서 계통수는 "과거에서 현재로" 진화하는 트리로 그렸습니다. 공통 조상에서 시작해 종 분화를 통해 leaf가 등장. 이 관점은 직관적이지만 계산적으로는 무겁습니다.

Coalescent theory는 관점을 뒤집습니다. 현재의 leaf에서 시작해 시간을 거꾸로 거슬러 올라가면서 계통이 합쳐지는 시점(coalescent event)을 확률적으로 추적합니다. Kingman(J Appl Prob 1982)이 정립한 이 관점 하나로 집단 유전학의 많은 문제가 훨씬 단순해집니다.

이 편에서는 coalescent의 정수와 msprime 도구의 실전 사용을 배웁니다. Micro Tier 마지막 두 편(집단 유전학 §M.6.29·30)의 첫 편.

Kingman의 합착 정리

집단 크기 N인 이상 랜덤 교배 집단에서 k개의 계통을 추적합니다. 시간 역방향으로 한 세대 갈 때, 두 계통이 같은 부모를 가질 확률은

P(coalesce in 1 generation)(k2)1NP(\text{coalesce in 1 generation}) \approx \binom{k}{2} \cdot \frac{1}{N}

k개 중 2개 조합 × 두 계통이 같은 부모일 확률 1/N.

세대 시간을 N으로 rescale하면 (τ = t/N), coalescent 사건 사이의 대기 시간은 지수 분포를 따릅니다.

TkExp((k2))T_k \sim \text{Exp}\left( \binom{k}{2} \right)

k개 계통이 남은 상태에서 다음 coalescent까지의 평균 대기 시간은 (2 / k(k-1)) × N 세대. k가 클수록 coalescent가 빠르게 일어나고, k가 작아지면 대기 시간이 급격히 길어집니다.

공통 조상까지의 총 시간(TMRCA):

E[TMRCA]=k=2n2Nk(k1)=2Nk=2n1k(k1)=2N(11n)E[T_{\text{MRCA}}] = \sum_{k=2}^{n} \frac{2N}{k(k-1)} = 2N \cdot \sum_{k=2}^{n} \frac{1}{k(k-1)} = 2N \cdot \left(1 - \frac{1}{n}\right)

n = 표본 계통 수. n이 커져도 TMRCA는 2N에 수렴. 표본을 아무리 많이 뽑아도 공통 조상까지의 시간은 크게 늘지 않는다는 놀라운 결과. 진화의 대부분은 소수 계통 사이에서 오래 대기하는 것.

왜 이게 유용한가

관점 뒤집기로 세 가지 큰 이점이 생깁니다.

  1. 계산 효율: 시간을 역방향으로만 추적. 현재 표본에 없는 조상 가지는 완전 무시. 정방향 시뮬레이션 대비 훨씬 빠름
  2. 통계 분석 가능: coalescent 시간 분포가 명시적 확률 분포. 관측 데이터에서 파라미터(effective population size N_e) 추정 가능
  3. 재현 가능한 시뮬레이션: 관측 데이터가 어떤 인구학적 시나리오와 부합하는지 시뮬레이션으로 검증 가능

이 세 가지가 오늘 집단 유전학의 정량적 도구 대부분(msprime, PopSizeABC, dadi, SLiM)의 근간입니다.

Effective Population Size — 실제 vs 유전학적

Coalescent는 "이상" 집단을 가정합니다. 랜덤 교배, 세대 겹침 없음, 성비 균등. 실제 집단은 이 가정과 항상 어긋납니다.

Effective population size N_e: 실제 집단이 coalescent 관점에서 "얼마나 큰 이상 집단처럼 행동하는가"를 나타내는 유효 크기.

인간의 실제 인구는 80억이지만 N_e ≈ 10,000. 왜냐면 병목·확장·자연 선택 · 성비 불균등 등이 실제 유전 다양성을 크게 줄이기 때문. 유전 데이터로부터 N_e를 추정하면 인구학적 역사(bottleneck, expansion, migration)를 역추정할 수 있습니다.

Watterson 추정치:

θ^W=San,an=i=1n11i\hat{\theta}_W = \frac{S}{a_n}, \quad a_n = \sum_{i=1}^{n-1} \frac{1}{i}

S = 관측된 segregating site 수, n = 표본 크기. θ = 4 N_e μ (μ는 세대당 돌연변이율)라는 관계로 N_e를 뽑습니다.

msprime — 코얼레센트 시뮬레이션의 표준

Kelleher et al. (PLoS Comput Biol 2016)의 msprime은 coalescent 시뮬레이션의 표준 도구입니다. 파이썬 라이브러리이고 수백만 계통도 초 단위.

python
# pip install msprime
import msprime
# 단순 시뮬레이션 — Ne=10000, 표본 10개, mutation rate 1e-8, 길이 10Mb
ts = msprime.sim_ancestry(
samples=10,
recombination_rate=1e-8,
sequence_length=10_000_000,
population_size=10_000,
random_seed=42,
)
ts = msprime.sim_mutations(ts, rate=1e-8, random_seed=42)
print(f"Trees: {ts.num_trees}")
print(f"Sites: {ts.num_sites}")
print(f"Total branch length: {ts.first().total_branch_length:.1f}")
# 첫 트리의 위상
print(ts.first().draw_text())

Tree Sequence 자료구조가 msprime의 결정적 이점. 관측 계통을 좌표 위에서 연속으로 추적하는 자료구조로, 게놈 전체(수십만 트리)를 압축 저장합니다.

인구학적 시나리오 시뮬레이션

msprime은 복잡한 인구학적 모델도 표현 가능. 예: 병목(bottleneck) → 확장(expansion) 시나리오.

python
demography = msprime.Demography()
demography.add_population(name="modern", initial_size=100_000)
demography.add_population_parameters_change(
time=500, # 500세대 전
population="modern",
initial_size=1_000 # 병목: 1000명으로 축소
)
demography.add_population_parameters_change(
time=2000, # 2000세대 전
population="modern",
initial_size=10_000 # 병목 이전 크기
)
ts = msprime.sim_ancestry(
samples={"modern": 20},
demography=demography,
recombination_rate=1e-8,
sequence_length=1_000_000,
random_seed=42,
)
print(f"TMRCA: {ts.first().tmrca(0, 1):.0f} generations")

인간의 out-of-Africa 병목이나 유럽인 특이 인구 팽창 같은 실제 시나리오를 이런 식으로 표현하고 검증합니다.

관측 데이터 vs 시뮬레이션 — ABC 프레임워크

Approximate Bayesian Computation (ABC):

  1. 인구학적 파라미터 후보(N_e, migration rate, 병목 시점 등)에서 랜덤 샘플
  2. 각 파라미터 세트로 coalescent 시뮬레이션
  3. 시뮬레이션 결과의 summary statistic(Watterson θ, Tajima's D 등)이 관측치와 얼마나 가까운지 측정
  4. 가까운 시뮬레이션의 파라미터를 posterior 분포로 유지

ABC는 명시적 우도 함수 없이도 파라미터 추정을 가능하게 하는 프레임입니다. Coalescent 시뮬레이션이 그 재료.

Ancestral Recombination Graph (ARG)

Coalescent의 확장으로 재조합(recombination) 을 포함하면 트리가 아니라 그래프가 나옵니다. 게놈 위치마다 트리 위상이 조금씩 다르고, 이 전체를 하나의 그래프로 표현한 것이 ARG.

ARG 재구성은 최근 매우 뜨거운 분야입니다. tsinfer + tsdate(Kelleher 등) 알고리즘이 UK Biobank 규모(수십만 개인) ARG를 구축했습니다. 이 ARG 하나로 GWAS · 인구학 · 자연 선택 신호까지 통합 분석 가능합니다.

Coalescent vs Phylogeny — 관점의 차이

계통수 (M26~M28)Coalescent
방향과거 → 현재현재 → 과거
대상종 · 유전자집단 내 개인
시간 척도100만~10억 년100~10만 년
모델진화 치환 모델 (JC/GTR)인구학 모델 (N_e, migration, bottleneck)
대표 도구IQ-TREE, RAxMLmsprime, SLiM
결과 자료구조이진 트리Tree Sequence · ARG

같은 데이터에도 두 관점이 다른 질문에 답합니다. 계통수는 관계, coalescent는 역사.

CS 매핑 — 역방향 시뮬레이션의 힘

DryBench에서 다룬 역방향 알고리즘 개념의 정수 사례.

  • 정방향: 대규모 시뮬레이션 필요 (실제 집단 크기)
  • 역방향: 표본에 관련된 계통만 추적 (표본 크기)

정방향은 표본에 도달할 확률이 극도로 낮은 경로도 다 시뮬레이션해야 합니다. 역방향은 이미 관측된 표본에서 시작하므로 확률 손실 없이 정확한 시뮬레이션이 가능합니다. 이 관점 뒤집기 하나가 계산 효율의 자릿수 차이를 만듭니다.

같은 원리가 이곳저곳 나타납니다. Bayesian inference의 posterior sampling(prior → data 가 아니라 data → prior 추적), reinforcement learning의 replay buffer(가치가 있었던 궤적만 학습), 심지어 컴파일러의 dead code elimination(도달 가능성을 역방향으로 추적). 역방향 사고가 알고리즘의 강력한 도구입니다.

Rosalind에서 채점받기

Rosalind는 직접적 coalescent 문제가 없지만, 인구 유전학 편의 WFMD, EBIN 등 관련 문제로 확률 계산의 감을 잡을 수 있습니다.

다음 편으로 이어지는 갈래 — Micro Tier 완결

  • 다음 편이자 마지막 (M30): Wright-Fisher model — 세대별 확률 과정. Coalescent의 정방향 대응. 중성 진화의 통계 모델
  • 이후: Phase B — System S1 Tier (NGS 파이프라인) — FASTQ에서 변이 검출까지의 실무 파이프라인 25편

더 깊게 파고 싶다면

  • Kingman (1982), The coalescent, Stochastic Processes and their Applications — 원 논문. 짧지만 정수.
  • Hudson (2002), Generating samples under a Wright-Fisher neutral model of genetic variation, Bioinformatics — ms 도구. msprime의 이전 세대 표준.
  • Kelleher, Etheridge, McVean (2016), Efficient coalescent simulation and genealogical analysis for large sample sizes, PLoS Comput Biol — msprime 원 논문.
  • msprime 튜토리얼: https://tskit.dev/msprime/docs/latest/tutorial.html — 파이썬 실전.
  • Harvard HST.508 — Coalescent theory 강의 (자막 완비).
  • Wakeley Coalescent Theory: An Introduction — 표준 교재. 수학적 유도.

msprime으로 병목 이후 확장의 예제를 시뮬레이션해서 SFS(Site Frequency Spectrum)를 뽑아봅시다. 병목의 통계적 지문이 SFS의 어느 부분에 남는지 눈으로 확인하는 것이 이 편의 진짜 실습입니다.