BioPlayground

🧬
목록으로

Profile HMM과 gene finding: HMM을 실전 도메인·유전자 검출로 확장하기

2-상태 HMM에서 벗어나 Match·Insert·Delete로 확장된 Profile HMM. Pfam 도메인 검색부터 GeneMark·AUGUSTUS의 유전자 구조 검출 원리까지.

심화
|
22
|
검증 완료 (2026-07-20)
profile hmmgene predictionprotein domain
진행률0/34 (0%)

2-상태 HMM에서 100-상태 HMM으로

M18~M20에서 다룬 HMM은 상태 두 개(H, L)의 장난감 모델이었습니다. 실무에서 HMM이 정말 강력해지는 지점은 상태 수가 폭발하면서 시퀀스 구조를 정교하게 표현하기 시작할 때입니다. Profile HMM은 이 확장의 대표작이고, gene finding은 그 실전 응용의 왕관입니다.

이 편에서는 Profile HMM의 세 가지 상태(Match, Insert, Delete)와 그 위상 구조, HMMER 도구의 실제 사용법, 그리고 HMM이 유전자 구조 검출에 어떻게 쓰이는지 전부 훑습니다. HMM 시리즈의 마지막이자 실전 편입니다.

Profile HMM — MSA에서 HMM으로

Multiple Sequence Alignment(MSA)를 마쳤다고 합시다. 100개 상동 단백질을 정렬한 결과 컬럼 200개짜리 매트릭스가 나왔습니다. 이 정보를 요약해서 새 서열이 이 패밀리의 일원인지 검색할 방법이 필요합니다.

가장 단순한 접근은 각 컬럼의 문자 빈도를 저장한 PSSM(Position-Specific Scoring Matrix). 그런데 PSSM은 갭(삽입·삭제)을 자연스럽게 다루지 못합니다. Profile HMM은 이 한계를 넘습니다.

세 가지 상태를 각 MSA 컬럼마다 정의합니다.

  • Match state (M_i): 컬럼 i에서 문자 방출. 방출 확률은 그 컬럼의 아미노산 분포에서 학습
  • Insert state (I_i): 컬럼 i와 i+1 사이의 삽입. 방출 확률은 백그라운드 분포에 가까움
  • Delete state (D_i): 컬럼 i를 건너뜀. 방출 없음(silent state)

이 세 상태가 각 컬럼마다 있고, 서로 정해진 위상으로만 연결됩니다.

text
M_1 → M_2 → M_3 → ... → M_L
      ↕     ↕     ↕            ↕
    D_1 → D_2 → D_3 → ... → D_L
      ↕     ↕     ↕            ↕
    I_0   I_1   I_2   ...    I_L
     ↑     ↑     ↑             ↑
    (loop) (loop) ...       (loop)

Match는 다음 Match·Delete·Insert로. Delete는 다음 Match·Delete로. Insert는 자기 자신 loop 또는 다음 Match·Delete로. 상태 수는 대략 3L + 2 (L = MSA 컬럼 수)로, L=200이면 상태 602개. 큰 HMM이지만 격자 채우기의 뼈대는 M18과 완전히 같습니다.

Viterbi로 Profile HMM 검색

새 단백질 서열 X가 들어오면 Profile HMM 위에서 Viterbi를 돌립니다.

Vj(k)=maxs[Vj1(s)a(sk)]b(k,xj)V_j(k) = \max_{s} \left[ V_{j-1}(s) \cdot a(s \to k) \right] \cdot b(k, x_j)

k는 지금 상태(M_i, I_i, D_i 중 하나), j는 서열의 위치. 격자 크기는 O(L × T). 결과 최적 경로는 X의 각 문자를 어떤 컬럼의 어떤 상태(Match/Insert/Delete)에 대응시킨 배열입니다.

이 경로의 총 점수가 비트 스코어(bit score)이고, 도메인 히트 판정에 씁니다. Pfam의 각 도메인은 이 Profile HMM 하나로 표현되고, 새 단백질 서열은 Pfam 전체(~2만 개)를 대상으로 이 검색을 반복합니다. 원리는 M18과 같지만 규모가 완전히 다릅니다.

HMMER — Profile HMM의 표준 도구

HMMER(Sean Eddy et al.)는 Profile HMM의 사실상 표준 구현입니다. Pfam·InterPro의 백엔드로 쓰이고, 명령 몇 줄이면 실무 도메인 검색이 됩니다.

bash
# 1) 설치 (Colab이나 SageMaker Studio Lab에서 그대로 됩니다)
wget http://eddylab.org/software/hmmer/hmmer-3.4.tar.gz
tar xzf hmmer-3.4.tar.gz
cd hmmer-3.4 && ./configure && make && sudo make install
hmmscan -h
# 2) Pfam 데이터베이스 다운로드
wget https://ftp.ebi.ac.uk/pub/databases/Pfam/current_release/Pfam-A.hmm.gz
gunzip Pfam-A.hmm.gz
hmmpress Pfam-A.hmm
# 3) 쿼리 서열 준비 (예: p53)
cat > p53.fasta <<'EOF'
>P04637 Human p53
MEEPQSDPSVEPPLSQETFSDLWKLLPENNVLSPLPSQAMDDLMLSPDDIEQWFTEDPGP
DEAPRMPEAAPPVAPAPAAPTPAAPAPAPSWPLSSSVPSQKTYQGSYGFRLGFLHSGTAK
SVTCTYSPALNKMFCQLAKTCPVQLWVDSTPPPGTRVRAMAIYKQSQHMTEVVRRCPHHE
EOF
# 4) 도메인 검색
hmmscan --domtblout p53.domtbl Pfam-A.hmm p53.fasta
head -20 p53.domtbl

--domtblout 출력의 컬럼을 보면 도메인 이름, 좌표, i-Evalue(개별 도메인 E-value), c-Evalue(조건부 E-value), 스코어가 나옵니다. p53은 P53 도메인(PF00870)이 정확한 좌표로 잡힙니다. PSI-BLAST가 여러 번 반복해야 얻던 원거리 상동성을 한 번의 검색으로 얻습니다.

두 개의 큰 변종 도구도 알아둡시다.

  • hmmsearch: 하나의 HMM(Profile)으로 여러 서열 검색
  • hmmscan: 여러 HMM(Pfam 전체)으로 하나의 서열 검색

방향이 반대입니다. 실무에서 도메인 프로파일링에는 hmmscan, 특정 패밀리 스크리닝에는 hmmsearch.

새 도메인 만들기 — hmmbuild

Pfam에 없는 나만의 도메인 프로파일을 만들려면 MSA를 재료로 hmmbuild.

bash
# MSA 파일(FASTA aligned or Stockholm 포맷) → HMM 파일
hmmbuild my_domain.hmm my_msa.sto
# 사전 훈련 확률화(Baum-Welch가 여기 안에서 돌아갑니다)
head -30 my_domain.hmm

HMM 파일 내부를 열어보면 각 컬럼의 방출 확률표와 전이 확률표가 로그 도메인으로 저장돼 있습니다. 이 파일 하나가 한 도메인의 통계적 지문입니다. 팀원과 공유하면 그대로 재현됩니다.

HMM으로 유전자 찾기 — gene finding

원핵생물 유전자 예측은 상대적으로 단순합니다. 유전자의 시작(ATG), 코돈 3자 반복, 종료(TAA/TAG/TGA). GeneMark나 Prodigal 같은 도구는 이 구조를 상태 6~10개짜리 HMM으로 표현합니다.

  • 인터제닉(intergenic) 상태
  • ORF 시작 상태 (start codon)
  • 코돈 3자 상태 (codon position 1, 2, 3)
  • 종료 상태 (stop codon)

이 상태들 사이 전이가 유전자 시작·종료의 확률을 정합니다. 방출 확률은 GC content · 코돈 사용 편향 등을 반영합니다.

진핵생물은 훨씬 복잡합니다. 엑손·인트론·5'UTR·3'UTR·스플라이스 사이트·프로모터. AUGUSTUS나 GENSCAN 같은 도구는 상태 수백 개짜리 HMM을 씁니다. 다음 편 예고 삼아 상태 위상을 스케치하면.

text
5'UTR → Start → Exon → Donor → Intron → Acceptor → Exon → ... → Stop → 3'UTR
                          ↓                          ↑
                          └─────── (반복) ───────────┘

각 상태에서의 방출 확률은 종별로 학습됩니다. AUGUSTUS는 훈련 세트가 큰 인간·마우스에서는 정확도가 90%대, 훈련 데이터가 적은 비모델 종에서는 60~70%대. HMM 유전자 예측기의 정확도는 훈련 데이터의 질과 양에 종속됩니다.

실습 — Prodigal로 박테리아 유전자 찾기

원핵생물 편만 짧게 실습해봅시다.

bash
# Prodigal 설치 (경량, HMMER보다 훨씬 단순)
conda install -c bioconda prodigal
prodigal -v
# E. coli K-12 게놈 다운로드
wget https://ftp.ncbi.nlm.nih.gov/genomes/all/GCA/000/005/845/GCA_000005845.2_ASM584v2/GCA_000005845.2_ASM584v2_genomic.fna.gz
gunzip GCA_000005845.2_ASM584v2_genomic.fna.gz
# 유전자 예측 실행 (single mode = 하나의 유기체)
prodigal -i GCA_000005845.2_ASM584v2_genomic.fna \
-o ecoli.gff -a ecoli.faa -f gff -p single
# 예측된 유전자 수
grep -c "^>" ecoli.faa

E. coli K-12는 약 4,300개 유전자가 예측됩니다 (실제 값과 5% 이내로 일치). 이 결과가 실질적으로 상태 몇 개 HMM에서 나온 것이라는 사실이 놀랍습니다. Profile HMM의 힘이 여기서 다시 확인됩니다.

복잡도와 실무의 감

  • Profile HMM 검색: O(L × T). L은 프로파일 길이, T는 쿼리 길이. Pfam 전체(2만 프로파일)를 훑어도 노트북에서 분 단위
  • Gene finding: 게놈 크기 T와 상태 수 N에 O(T × N²). 인간 게놈(3 × 10⁹)에서도 서버 한 대 며칠

이 두 규모가 실무의 감입니다. HMMER는 노트북 도구, AUGUSTUS는 서버 도구. GPU 가속은 최근에야 붙기 시작했습니다(HMMER의 SIMD 벡터화가 이미 잘 돼서 CPU 최적화만으로 충분했던 배경).

CS 매핑 — 유한 상태 기계의 확률판

DryBench에서 다룬 finite state machine 개념이 여기 그대로 확장됩니다.

  • 결정론적 FSM: 각 상태에서 다음 상태가 확정
  • 비결정론적 FSM: 여러 다음 상태 가능 (선택 방법 미정)
  • HMM: 각 다음 상태에 확률 부여
  • Profile HMM: HMM에 삽입·삭제 상태를 추가해서 갭 처리

이 점진적 확장 과정을 몸에 익히면, 훗날 Transformer의 attention을 보아도 "가중치 붙은 상태 전이의 완전 연결 확장"으로 해석할 수 있습니다. 모든 시퀀스 모델은 상태-전이-방출의 재조합에 지나지 않는다.

다음 편으로 이어지는 갈래 — Micro Tier 마감

M21이 Micro Tier(M01~M30)의 §M.4 마지막입니다. 다음 편부터는 어셈블리 알고리즘으로 넘어갑니다.

  • 다음 편 (M22): OLC 어셈블리 — Overlap-Layout-Consensus. 오버랩 그래프와 해밀턴 경로
  • 두 편 뒤 (M23): De Bruijn Graph — 오일러 경로 어셈블리. 짧은 리드 시대의 표준
  • 세 편 뒤 (M24): hifiasm — PacBio HiFi 다이플로이드 조립. 최신 롱리드 표준

HMM 시리즈가 Rosalind에서 채점받을 수 있는 확률 모델의 대표였다면, 어셈블리 시리즈는 그래프 알고리즘의 바이오 응용입니다. 격자에서 그래프로 뇌를 바꿀 준비를 합시다.

더 깊게 파고 싶다면

  • Krogh, Brown, Mian, Sjölander, Haussler (1994), Hidden Markov Models in Computational Biology: Applications to Protein Modeling, JMB — Profile HMM을 처음 정립한 논문. 지금 봐도 유효합니다.
  • HMMER 공식 문서: http://eddylab.org/software/hmmer/ — 사용법·확률 유도·튜토리얼 전량.
  • EMBL-EBI Training — Pfam·InterPro 실전 재생목록. 도메인 검색이 왜 그렇게 유용한지 감을 잡을 수 있습니다.
  • Stanford CS262 — Gill Bejerano 교수의 gene finding 강의 (자막 완비). GENSCAN의 HMM 위상도를 판서로 봅니다.
  • AUGUSTUS 튜토리얼: https://github.com/Gaius-Augustus/Augustus/wiki — 실전 진핵 유전자 예측 파이프라인.

Pfam 웹사이트에서 아무 단백질 서열이나 붙여넣고 검색을 돌려봅시다. 도메인 지도가 그려지는 것을 보면, HMM이 왜 반세기 넘게 살아남은 알고리즘 프레임인지 몸으로 알게 됩니다.