BioPlayground

🧬
목록으로

Wright-Fisher 모델과 중성 진화: 세대별 확률 과정과 R 시뮬레이션

집단 유전학의 시작점 Wright-Fisher 모델. 이항 표본 추출로 세대별 대립유전자 빈도 변화 시뮬레이션. Kimura 중성 이론과 유전자 부동의 정수.

심화
|
18
|
검증 완료 (2026-07-20)
population geneticsneutral evolutiongenetic drift
진행률0/34 (0%)

Coalescent의 정방향 대응

M29에서 시간 역방향으로 계보를 추적하는 coalescent를 배웠습니다. 그 이론이 딛고 서 있는 정방향 확률 모델이 Wright-Fisher 모델입니다. 1930년대에 Sewall Wright와 Ronald Fisher가 각각 정립했습니다.

Wright-Fisher는 집단 유전학의 알파이자 오메가입니다. 집단 크기 N의 이상 집단에서 세대 간 대립유전자 빈도가 어떻게 변하는가를 이산 확률 과정으로 표현합니다. Kimura의 중성 이론, coalescent, 심지어 최신 pangenome 분석까지 모두 이 모델에서 파생됩니다.

이 편은 Micro Tier 30편의 마지막 편이자, Phase A 완결의 왕관입니다.

모델 정의

집단 크기 N, 두 대립유전자 A와 a. 시각 t에서 A의 빈도 p_t.

Wright-Fisher 정의: 다음 세대(t+1)의 각 개체는 이전 세대(t)에서 랜덤하게, 독립적으로, 복원 추출로 부모를 뽑는다. 각 자식이 A를 가질 확률은 p_t.

즉 다음 세대의 A 개체 수 X는 이항 분포에서 뽑힙니다. X ~ Binomial(N, p_t). 새 빈도는 p 다음 = X 나누기 N.

이 이산 확률 과정이 모델의 전부입니다. 놀랍도록 단순한 정의에서 풍부한 결과들이 파생됩니다.

유전자 부동 (Genetic Drift)

Wright-Fisher의 결정적 예측은 선택압이 없어도 대립유전자 빈도가 흔들린다는 것입니다. 이항 분포에서 오는 무작위 표본 오차. 이걸 유전자 부동(genetic drift) 이라고 부릅니다.

세대별 빈도 변화의 분산은 p_t 곱하기 (1 빼기 p_t) 나누기 N입니다.

집단이 작을수록 부동이 크고, 빈도가 극값(0 또는 1)에 가까울수록 부동이 작습니다. 그리고 결국 대립유전자는 고정(fixation, 빈도 1) 되거나 소실(loss, 빈도 0) 됩니다. 이 두 상태는 흡수 상태 — 한 번 도달하면 벗어날 수 없음.

고정 확률과 시간

초기 빈도 p_0에서 대립유전자가 결국 고정될 확률은 p_0 그 자체입니다.

놀랍도록 단순한 결과. 초기 빈도가 곧 고정 확률. 새 돌연변이는 한 세대에 개체 하나만 가지므로 초기 빈도 = 1 나누기 2N, 따라서 새 중성 돌연변이의 고정 확률 = 1 나누기 2N.

고정까지의 평균 시간(고정된 경우만)은 대략 4N 세대 스케일입니다. p_0가 작으면 이 시간이 매우 길어집니다. 한 개체에서 시작한 새 돌연변이는 고정까지 평균 4N 세대. 인간(N 대략 10,000)이면 4만 세대 즉 100만 년 정도.

Kimura의 중성 진화 이론

Motoo Kimura(Nature 1968)의 중성 진화 이론이 이 모델의 결과를 진화 이론 전체에 확장했습니다. 요지.

대부분의 분자 수준 변이는 자연 선택이 아닌 중성 부동으로 고정된다.

이 명제가 발표됐을 때 격렬한 논쟁을 일으켰습니다. Darwinian 자연 선택이 진화의 유일한 엔진이라는 정통설과 정면 충돌. 지금은 Kimura의 관점이 분자 진화의 baseline으로 인정됩니다.

중성 이론의 정량적 예측: 한 site의 세대당 치환률은 세대당 돌연변이율 mu와 같습니다. 자세히 보면 (2N 곱 mu) 곱 (1 나누기 2N) = mu. 집단 크기 N이 사라지고 오직 mu만 남습니다. 관측된 종간 분자 진화 속도가 이 예측과 일치하는 것이 중성 이론의 강력한 증거였습니다.

R로 시뮬레이션 (20줄)

r
wright_fisher <- function(N, p0, generations, seed = NULL) {
  if (!is.null(seed)) set.seed(seed)
  p <- numeric(generations + 1)
  p[1] <- p0
  for (t in 2:(generations + 1)) {
    X <- rbinom(1, N, p[t-1])
    p[t] <- X / N
    if (p[t] == 0 || p[t] == 1) {
      p[t:(generations+1)] <- p[t]
      break
    }
  }
  return(p)
}

set.seed(42)
N <- 100
p0 <- 0.5
n_traj <- 20

trajectories <- replicate(n_traj, wright_fisher(N, p0, 500))
matplot(0:500, trajectories, type = 'l', lty = 1,
        xlab = "Generation", ylab = "Allele frequency",
        main = paste0("Wright-Fisher, N=", N, ", p0=", p0))
abline(h = c(0, 1), lty = 2, col = "gray")

플롯을 그리면 20개 궤적이 서로 다르게 흔들리다가 대부분 0 또는 1에 안착합니다. 선택압 없이도 다양성이 사라진다 — 이게 유전자 부동의 시각적 실증입니다.

파이썬 시뮬레이션과 통계 검증

python
import random
def wright_fisher(N, p0, generations, seed=None):
if seed is not None:
random.seed(seed)
p = [p0]
for _ in range(generations):
X = sum(1 for _ in range(N) if random.random() < p[-1])
pt = X / N
p.append(pt)
if pt == 0 or pt == 1:
p.extend([pt] * (generations - len(p) + 1))
break
return p
N = 100
p0 = 0.3
n_sims = 10000
fixed = 0
for i in range(n_sims):
p = wright_fisher(N, p0, 500, seed=i)
if p[-1] == 1:
fixed += 1
empirical = fixed / n_sims
print("empirical fixation:", empirical)
print("theoretical (p0):", p0)

시뮬레이션 10,000회로 경험적 고정 확률을 뽑으면 p_0 = 0.3에 매우 가까운 값이 나옵니다. 이론과 시뮬레이션의 일치가 통계적으로 검증됩니다.

확장 — 선택, 이주, 돌연변이

Wright-Fisher 기본형에는 세 가지 추가 힘을 얹을 수 있습니다.

자연 선택 (Selection): 각 대립유전자에 적합도 w_A, w_a. 다음 세대 A 빈도의 기대값은 p_t 곱하기 w_A 나누기 (p_t 곱하기 w_A 더하기 (1 빼기 p_t) 곱하기 w_a) 로 조정되고, 이 값이 이항 분포의 p 파라미터로 사용됩니다.

이주 (Migration): 매 세대 다른 집단에서 유입되는 대립유전자 비율 m. 새 빈도는 (1 빼기 m) 곱 p_t 더하기 m 곱 p_source.

돌연변이 (Mutation): 세대당 A에서 a로 돌연변이율 mu. 새 빈도는 (1 빼기 mu) 곱 p_t 더하기 nu 곱 (1 빼기 p_t).

이 세 힘과 부동이 균형하는 지점이 mutation-drift 균형, selection-drift 균형 등의 정상 분포. 인구 유전학 대부분이 이런 균형 상태의 분석입니다.

Wright-Fisher의 한계

  • 세대 겹침 없음 가정 (실제 인구는 겹침이 큼)
  • 랜덤 교배 가정 (실제 인구는 지리와 계층 구조가 큼)
  • 성비 균등 가정
  • 이산 세대 가정 (연속 세대 모델은 Moran model)

이 한계에도 불구하고 Wright-Fisher가 살아남은 이유는 coalescent와의 대칭성입니다. Wright-Fisher 정방향과 coalescent 역방향이 통계적으로 동등하다는 사실이 오늘 집단 유전학 이론의 등뼈입니다.

Moran Model — 연속 세대 대안

Wright-Fisher가 이산 세대라면 Moran model은 연속 세대. 매 시각 한 개체가 죽고 한 개체가 랜덤 부모의 자식으로 태어남. 수학적으로 더 다루기 쉬운 특성이 있어 이론 연구에 자주 쓰입니다. 실전 시뮬레이션은 Wright-Fisher가 표준.

SLiM — Wright-Fisher 시뮬레이션의 실전 도구

SLiM(Bioinformatics 2019)은 복잡한 Wright-Fisher 시뮬레이션의 표준 도구. Selection, migration, 인구 구조, chromosome recombination 모두 지원. Eidos 언어로 스크립트 작성.

text
// SLiM 예제: 병목 이후 확장과 자연 선택
initialize() {
    initializeMutationRate(1e-7);
    initializeMutationType("m1", 0.5, "f", 0.0);
    initializeMutationType("m2", 0.5, "f", 0.05);
    initializeGenomicElementType("g1", c(m1, m2), c(0.95, 0.05));
    initializeGenomicElement(g1, 0, 999999);
    initializeRecombinationRate(1e-8);
}

1 { sim.addSubpop("p1", 10000); }
1000 { p1.setSubpopulationSize(1000); }
2000 { p1.setSubpopulationSize(10000); }
3000 late() { sim.outputFull(); }

이런 스크립트를 몇 시간 굴리면 Wright-Fisher 예측 하에서 특정 시나리오의 유전 다양성 패턴을 관측할 수 있습니다.

CS 매핑 — 마르코프 체인의 정수

Wright-Fisher는 상태공간 (0 나누기 N)부터 (N 나누기 N)까지의 마르코프 체인입니다. 다음 상태가 오직 현재 상태에만 의존.

  • 전이 행렬: (N 더하기 1) 곱 (N 더하기 1). 각 원소는 이항 분포 확률
  • absorbing states: 상태 0 (loss)과 N (fixation)
  • stationary distribution: 흡수 시나리오라 정상 분포는 없음, 대신 흡수 확률과 시간이 정의됨

M18의 HMM도 마르코프 체인. 차이는 은닉 상태 대 관측 상태. 마르코프 체인 하나가 여러 옷을 갈아입습니다. 시퀀스 모델(HMM), 인구 유전학(Wright-Fisher), 강화학습(MDP), 페이지 랭크. 몸에 익히면 새 도메인의 마르코프 프로세스도 즉시 해체됩니다.

Rosalind에서 채점받기

Rosalind WFMD 문제. Wright-Fisher 세대별 확률 계산. 위 파이썬 함수의 이론 확률판을 그대로 구현.

Phase A 완결과 다음 편 이후 안내

M30이 Micro Tier(M01부터 M30) 30편의 마지막입니다. Phase A(코어 알고리즘 수학) 완결. 지금까지 배운 것을 감사해봅시다.

  • 서열과 정렬 알고리즘 (Needleman-Wunsch, Smith-Waterman, BLAST)
  • 문자열 인덱스 (접미사 트리, BWT, FM-index, minimap2, Diamond)
  • HMM (Viterbi, Forward-Backward, Baum-Welch, Profile HMM)
  • 어셈블리 (OLC, De Bruijn, hifiasm)
  • MSA와 계통수와 집단 유전학 (MAFFT, NJ, Fitch, IQ-TREE, coalescent, Wright-Fisher)

30편이 각각 8부터 14KB의 자체 저작 KO. 지금부터는 Phase B — System S1 Tier(NGS 파이프라인 25편) 로 진입 준비입니다. Micro의 이론이 이제 FASTQ부터 시작하는 실무 파이프라인에 결실을 봅니다.

더 깊게 파고 싶다면

  • Kimura (1968), Evolutionary rate at the molecular level, Nature — 중성 진화 이론 원 논문.
  • Ewens (2004), Mathematical Population Genetics — 표준 교재. Wright-Fisher, coalescent, selection 전 영역.
  • Haller와 Messer (2019), SLiM 3: forward genetic simulations beyond the Wright-Fisher model, MBE — SLiM 원 논문.
  • Harvard HST.508 — Wright-Fisher 강의 (자막 완비). Jonathan Pritchard의 판서.
  • Stanford BIOMEDIN 214 — 인구 유전학 강의. 실전 데이터 분석.

R로 위 시뮬레이션 코드를 실행하고, 집단 크기 N을 10, 100, 1000, 10000으로 바꿔가면서 부동 궤적을 관찰해봅시다. 집단이 클수록 부동이 느려진다는 예측을 눈으로 확인하는 것이, 이 편의 마지막 실습입니다.