BioPlayground

🧬
목록으로

BLAST E-value 통계: Gumbel 극값 분포로 정렬을 확률로 바꿉니다

왜 정렬 점수 자체는 의미가 없고 E-value가 결정적인가. Karlin-Altschul 통계와 Gumbel 극값 분포가 어떻게 정렬을 확률로 바꾸는지. 실무에서 E-value 임계를 어떻게 설정하는지.

중급
|
15
|
검증 완료 (2026-07-19)
E-valueKarlin-AltschulGumbel distributionstatistical significance
진행률0/34 (0%)

왜 이 편이 필요한가

M10에서 BLAST가 어떻게 후보 정렬을 찾는지 다뤘습니다. 그런데 정말 중요한 질문은 남아 있습니다. 정렬 점수 200점이 유의미한가? 3점 정도로 겨우 매치되는 서열은 무시해야 할까요? 100점은? 500점은?

정답은 "정렬 점수 자체는 무의미하고, 우연히 그런 점수가 나올 확률이 중요하다"는 것입니다. 이 확률을 재는 것이 E-value(Expect value) 입니다. Samuel Karlin과 Stephen Altschul이 1990년대 초에 정립한 이 통계는 BLAST 결과 해석의 핵심입니다.

이 편에서 우리는 E-value의 정의 · 유도 · 실무 임계를 정리합니다. 그리고 왜 Gumbel 극값 분포가 여기에 나타나는지가 놀랍도록 우아하게 풀립니다.

정의 — E-value란 무엇인가

E주어진 크기의 데이터베이스에서, 우연히 얻은 정렬이 점수 S 이상 나올 것으로 기대되는 개수입니다.

E=KmneλSE = K \cdot m \cdot n \cdot e^{-\lambda S}
  • m: 쿼리 길이
  • n: 데이터베이스 총 크기
  • λ\lambda: 정렬 점수의 스케일 상수 (BLOSUM62 · gapped: λ0.267\lambda \approx 0.267)
  • K: 검색 파라미터에 의존하는 상수 (BLOSUM62 · gapped: K0.041K \approx 0.041)

의미는 이렇습니다.

  • E = 0.001: 이 정도 점수의 정렬은 무작위 우연으로 1000번에 한 번만 나옴. 매우 유의.
  • E = 1: 우연히 한 개 나올 만함. 유의성 없음.
  • E = 100: 우연으로도 100개는 나옴. 완전 무의미.

관례적으로 E < 10⁻⁵이 유의성 임계로 자주 쓰입니다. 다만 사용 목적에 따라 다릅니다.

Gumbel 극값 분포가 왜 나오는가

이 지점이 이 편에서 가장 아름다운 부분입니다.

무작위 서열 쌍에서 국소 정렬을 여러 번 시도하면, 각 정렬 점수는 어떤 분포를 따릅니다. 특히 우리가 관심 있는 것은 최댓값의 분포입니다. "이 데이터베이스에서 우연히 얻을 수 있는 가장 큰 정렬 점수는 얼마인가?"

극값 통계(extreme value statistics)의 결과에 따르면, 매우 넓은 조건에서 최댓값의 분포는 세 가지 종류 중 하나로 수렴합니다. 그중 Gumbel 분포가 BLAST 정렬 점수에 적용됩니다.

P(SmaxS)1eKmneλSP(S_{\max} \ge S) \approx 1 - e^{-K m n e^{-\lambda S}}

KmneλSKmne^{-\lambda S}가 작을 때 1exx1 - e^{-x} \approx x이므로,

P(SmaxS)KmneλS=EP(S_{\max} \ge S) \approx K m n e^{-\lambda S} = E

E-value는 정확히 이 확률의 근사입니다. 그리고 정렬을 여러 개 뽑을 때는 포아송 근사가 적용됩니다.

P(k개 이상의 우연 정렬)=1i=0k1EieEi!P(\text{k개 이상의 우연 정렬}) = 1 - \sum_{i=0}^{k-1} \frac{E^i e^{-E}}{i!}

Karlin-Altschul 상수 Kλ\lambda

Kλ\lambda는 사용한 정렬 점수 행렬(BLOSUM62 등)과 갭 페널티에 따라 결정됩니다. Karlin-Altschul이 유도한 두 개의 방정식으로 계산됩니다.

λ\lambda는 정렬 점수의 로그 우도비 스케일링을 정합니다. 로그 밑을 정하는 정도의 의미이고, 대부분의 실무에서 자동으로 계산됩니다. K는 정렬의 예상 개수를 정하는 상수입니다.

BLAST 결과에서 이 두 값이 명시적으로 출력됩니다.

text
Lambda      K
0.267    0.041

이 두 값이 있으면 정렬 점수를 E-value로 변환할 수 있습니다.

파이썬으로 E-value 계산

python
import math
def evalue_from_score(score: float, m: int, n: int,
K: float = 0.041, lam: float = 0.267) -> float:
"""BLOSUM62 gapped 정렬의 E-value."""
return K * m * n * math.exp(-lam * score)
# BRCA1 쿼리(2000bp)로 nr(5 × 10^11 bp)를 검색했을 때 점수 100의 유의성
m = 2000
n = int(5e11)
for score in [50, 100, 150, 200, 300]:
e = evalue_from_score(score, m, n)
print(f"Score {score}: E = {e:.2e}")
# Score 50: E = 1.20e+08
# Score 100: E = 3.35e-02
# Score 150: E = 9.34e-12
# Score 200: E = 2.61e-21
# Score 300: E = 2.03e-40

관찰:

  • Score 50은 우연으로도 1억 번 나옵니다. 무의미.
  • Score 100 근처가 유의성 경계.
  • Score 150 이상은 확실히 유의.

E-value가 score의 지수 함수인 이유는 위의 Gumbel 유도에서 자연스럽게 나옵니다.

Bit score — 정규화된 점수

BLAST 결과에는 raw score와 함께 bit score가 나옵니다.

text
S' = \frac{\lambda S - \ln K}{\ln 2}
$$

bit score의 좋은 점은 $\lambda$와 `K`가 정규화됐다는 것입니다. 즉 데이터베이스 크기와 무관하게 정렬의 정보 이론적 가치를 나타냅니다.

E-value와 bit score의 관계는 이렇습니다.
$$
E = mn \cdot 2^{-S'}
$$

Bit score 40이면 매치 하나당 정보량이 40비트. Bit score 100 이상이면 유의성 확실.

## Multiple testing — 데이터베이스가 클수록 E-value가 커집니다

같은 정렬 점수라도 데이터베이스가 커지면 E-value가 자동으로 커집니다. 예를 들어 `n`을 10배로 하면 E-value도 10배가 됩니다. 이건 **다중 검정 문제**의 자연스러운 표현입니다.

작은 데이터베이스에서 유의했던 정렬이, 큰 데이터베이스에서는 우연으로 설명될 수 있습니다. 그래서 **E-value 임계는 데이터베이스 크기와 함께 정해야** 합니다.

- **nr (5 × 10¹¹ bp)**: E < 10⁻⁵ 정도가 관례
- **refseq_rna (100배 작음)**: 같은 유의성을 원한다면 E < 10⁻³ 정도로 완화 가능
- **자기 정렬 데이터베이스 (1 × 10⁸)**: E < 10⁻² 정도

M09의 DESeq2에서 다룬 Benjamini-Hochberg 조정과 원리는 같습니다. 검정 횟수가 늘면 유의성 임계를 조여야 합니다.

## 실습 — NCBI BLAST 결과의 E-value 해석

NCBI BLAST 웹에서 관심 서열을 검색한 결과의 다음 필드를 관찰해봅시다.

- **Score (Bits)**: bit score
- **E value**: 우연 매치 기대 개수
- **Identities**: 매치 비율
- **Query cover**: 쿼리의 몇 %가 정렬됐는지

E value가 매우 작으면(예: 0.0 또는 1e-100 수준)은 강한 매치입니다. E value가 1 근처이면 조심해서 해석해야 합니다.

## 자주 만나는 실무 함정

- **E-value 절대값에 집착**: E = 10⁻⁴와 10⁻⁵가 실무적으로 유의미한 차이가 아닐 수도 있습니다. bit score와 함께 판단.
- **저품질 데이터베이스**: 데이터베이스에 오염된 서열이 있으면 E-value 유의성이 왜곡됩니다. RefSeq · UniProt 같은 큐레이션된 데이터베이스가 신뢰도가 높습니다.
- **PSI-BLAST의 E-value**: PSI-BLAST는 반복 검색으로 프로파일을 만들어가며 매치를 확장합니다. 이때 E-value는 매 반복마다 재계산됩니다. 반복이 많으면 진짜와 우연의 경계가 흐려집니다.
- **번역 후 검색(tblastn · blastx)의 E-value**: 6프레임(정방향 3 + 역방향 3) 번역을 다 검사하므로, 유효 `m`이 6배가 됩니다. E-value 해석 시 이걸 고려해야 합니다.

## CS 매핑

- **극값 통계**: 큰 수의 법칙의 사촌. 정렬 점수 최댓값이 Gumbel로 수렴한다는 사실은 표본 크기가 커질 때 나타나는 극값 분포의 일반 이론입니다.
- **다중 검정**: 유전자 20,000개의 DESeq2 검정 · BLAST의 데이터베이스 크기 · 이미지의 픽셀 개수 모두 같은 원리입니다. 검정이 많을수록 임계를 조여야 합니다.
- **로그 우도비와 정보량**: bit score의 정의 자체가 정보 이론의 비트 수와 정확히 일치합니다. 통신 · 검색 · 압축 이론의 근본이 여기서 살아 있습니다.

## 다음 편으로 이어지는 갈래

- 다음 편 (M12): **로컬 BLAST 서버 구축** — 자신의 데이터로 로컬 검색.
- 두 편 뒤 (M13): **접미사 트리 · 배열** — BLAST 인덱스의 자료구조 정교화.
- 여섯 편 뒤 (M17): **DIAMOND** — 단백질 대규모 검색의 100배 가속.
- 열여덟 편 뒤 (S19): **DESeq2 · Benjamini-Hochberg** — 다중 검정 문제의 정통 처리.

## 더 깊게 파고 싶다면

본문은 BPD가 자체 재구성한 서술입니다. 심화는 아래로.

- **MIT 7.91J** — Christopher Burge 교수의 <cite>Local Alignment Statistics</cite> (자막 완비). Karlin-Altschul 통계를 수학적으로 엄밀하게 유도합니다.
- **원 논문**: Karlin, S. & Altschul, S. F. (1990), <cite>Methods for assessing the statistical significance of molecular sequence features</cite>, PNAS 87, 2264–2268. E-value 이론의 시조.
- **원 논문**: Altschul, S. F. et al. (1997), <cite>Gapped BLAST and PSI-BLAST</cite>, Nucleic Acids Res 25, 3389–3402. 실무 정착.
- **참고 교재**: Ewens & Grant *Statistical Methods in Bioinformatics* Chapter 7. 정통 서적.
- **NCBI Handbook** — <cite>BLAST Statistics</cite>. 실무 파라미터 해석.

NCBI BLAST 결과 여러 개를 관찰하고, E-value가 어떤 임계에서 유의미로 넘어가는지 감을 잡아봅시다. 다음 편 M12의 로컬 BLAST 서버가 왜 필요한지 자연스럽게 이해됩니다.