GTF: 유전자 주석 파일
RNA-seq에서 FASTQ를 게놈에 정렬한 뒤 “이 read가 어느 유전자에 속하나”를 세려면 유전자 위치표가 필요합니다. 그 위치표가 보통 GTF(Gene Transfer Format) 파일입니다. GTF는 GFF version 2 계열을 바탕으로, 유전자·전사체 정보를 다루기 위한 관례를 얹은 탭 구분 주석 형식입니다.
한 줄 요약:
GTF = 게놈 좌표 위에 유전자·전사체·엑손이 어디 있는지 적어둔 주석 파일어디에 쓰이나
섹션 제목: “어디에 쓰이나”GTF는 read 자체가 아니라 레퍼런스 주석(annotation) 입니다. 분석 파이프라인에서는 보통 이렇게 쓰입니다.
FASTQ → 정렬(STAR/HISAT2) → BAM ↓ GTF 주석 ↓ 유전자별 read count / TPM대표적인 사용처:
| 단계 | GTF의 역할 |
|---|---|
| genome index 생성 | STAR 같은 정렬기가 splice junction 정보를 미리 알 수 있게 함 |
| read counting | featureCounts, HTSeq-count가 read를 gene/exon에 배정 |
| transcript 정량 | RSEM, StringTie 등이 transcript 구조를 해석 |
| 결과 해석 | gene ID, gene name, transcript ID를 좌표와 연결 |
GTF 한 줄의 구조
섹션 제목: “GTF 한 줄의 구조”GTF는 탭으로 구분된 텍스트 파일입니다. 각 줄은 하나의 feature를 뜻하고, 항상 9개 컬럼을 가집니다.
chr1 HAVANA exon 11869 12227 . + . gene_id "ENSG00000223972"; transcript_id "ENST00000456328"; gene_name "DDX11L1";| 컬럼 | 이름 | 의미 |
|---|---|---|
| 1 | seqname | 염색체/contig 이름. 예: chr1, 1, GL000... |
| 2 | source | 주석 출처. 예: HAVANA, ENSEMBL |
| 3 | feature | feature 종류. 예: gene, transcript, exon, CDS, UTR |
| 4 | start | 시작 좌표 |
| 5 | end | 끝 좌표 |
| 6 | score | 점수. 없으면 . |
| 7 | strand | 가닥. +, -, . |
| 8 | frame / phase | CDS frame(phase). 단백질 코딩 영역이 아니면 보통 . |
| 9 | attributes | 세미콜론으로 구분된 부가 정보 |
좌표 규칙
섹션 제목: “좌표 규칙”GTF 좌표는 1-based inclusive 입니다.
start = 11869end = 12227이 뜻은 11869번째 염기부터 12227번째 염기까지 양 끝을 모두 포함한다는 뜻입니다.
주의할 점:
| 형식 | 좌표 규칙 |
|---|---|
| GTF / GFF / VCF | 1-based |
| BED | 0-based, half-open |
BED 파일과 GTF를 섞어 쓸 때는 좌표가 한 칸 어긋나는 실수가 자주 납니다.
attributes: 가장 중요한 9번째 컬럼
섹션 제목: “attributes: 가장 중요한 9번째 컬럼”GTF에서 실제 분석 도구가 가장 많이 읽는 부분은 9번째 컬럼입니다.
gene_id "ENSG00000141510";transcript_id "ENST00000269305";gene_name "TP53";gene_biotype "protein_coding";핵심 속성:
| 속성 | 의미 |
|---|---|
gene_id | 유전자 고유 ID. 보통 가장 안정적인 분석 단위 |
transcript_id | 전사체 isoform ID. gene 줄에는 없고 transcript, exon, CDS 줄에 붙는 경우가 많음 |
gene_name | 사람이 읽는 유전자 심볼. 예: TP53, MDM2 |
gene_biotype / gene_type | protein_coding, lncRNA, pseudogene 등 유전자 종류. Ensembl은 gene_biotype, GENCODE는 gene_type을 주로 사용 |
exon_number | transcript 안에서 exon 순서 |
분석에서는 가능하면 gene_name보다 gene_id를 기준으로 보관하는 편이 안전합니다. gene symbol은 바뀌거나 중복될 수 있지만, Ensembl gene ID 같은 식별자는 더 안정적입니다.
feature 종류
섹션 제목: “feature 종류”자주 보는 feature는 다음과 같습니다.
| feature | 의미 |
|---|---|
gene | 유전자 전체 영역 |
transcript | 하나의 전사체 isoform |
exon | transcript를 구성하는 exon |
CDS | 단백질로 번역되는 코딩 영역 |
UTR | 번역되지 않는 5’/3’ 영역 |
start_codon, stop_codon | 시작/종결 코돈 |
RNA-seq read count에서는 보통 exon feature를 유전자 단위로 합쳐 셉니다. 그래서 featureCounts를 쓸 때 자주 보이는 옵션이 -t exon -g gene_id 입니다.
featureCounts \ -a annotation.gtf \ -t exon \ -g gene_id \ -o counts.txt \ aligned.bam뜻:
| 옵션 | 의미 |
|---|---|
-a annotation.gtf | 사용할 GTF 주석 |
-t exon | exon 줄만 count 대상으로 사용 |
-g gene_id | 같은 gene_id를 가진 exon들을 묶어 유전자별 count 생성 |
GTF와 GFF3의 차이
섹션 제목: “GTF와 GFF3의 차이”GTF와 GFF3는 둘 다 유전자 주석 형식입니다. 모양도 비슷하지만 9번째 컬럼 문법이 다릅니다.
| 항목 | GTF | GFF3 |
|---|---|---|
| 9번째 컬럼 | gene_id "X"; transcript_id "Y"; | ID=exon1;Parent=transcript1 |
| 계층 표현 | gene_id, transcript_id 속성으로 연결 | ID, Parent로 부모-자식 관계 명시 |
GFF3는 ID, Parent 같은 예약 attribute를 사용해 gene → transcript → exon 계층을 더 명시적으로 표현합니다. GTF는 보통 각 줄에 반복되는 gene_id, transcript_id 값을 이용해 같은 유전자·전사체에 속한 feature를 묶습니다.
도구마다 기대하는 형식이 다릅니다. featureCounts처럼 여러 annotation 형식을 지원하는 도구도, 어떤 feature를 셀지(-t)와 어떤 attribute로 묶을지(-g)를 명확히 지정해야 합니다.
어디서 받나
섹션 제목: “어디서 받나”사람 유전체 분석에서는 주로 다음 주석을 씁니다.
| 출처 | 특징 |
|---|---|
| GENCODE | human/mouse RNA-seq에서 매우 널리 쓰이는 고품질 주석 |
| Ensembl | 다양한 종을 지원. Ensembl gene/transcript ID와 잘 맞음 |
| RefSeq | NCBI 기반 주석. 임상/레거시 파이프라인에서 자주 등장 |
중요한 것은 FASTA 게놈 파일과 GTF 주석의 빌드가 같아야 한다는 점입니다.
좋음: GRCh38 genome FASTA + GRCh38 GTF위험: GRCh37 genome FASTA + GRCh38 GTF실전 주의점
섹션 제목: “실전 주의점”1. 염색체 이름이 맞아야 함
섹션 제목: “1. 염색체 이름이 맞아야 함”게놈 FASTA는 chr1인데 GTF는 1이면 도구가 같은 염색체로 인식하지 못할 수 있습니다.
FASTA: >chr1GTF: 1 HAVANA exon ...이런 경우 count가 거의 0으로 나오거나 index 생성에서 경고가 납니다. chr prefix 유무를 반드시 확인하세요.
2. 주석 버전을 기록해야 함
섹션 제목: “2. 주석 버전을 기록해야 함”같은 GRCh38이라도 GENCODE v39, v44, v46처럼 주석 버전에 따라 유전자 모델이 달라질 수 있습니다. 재현성을 위해 결과와 함께 기록합니다.
genome: GRCh38annotation: GENCODE v46GENCODE/Ensembl은 계속 갱신되므로, “GRCh38을 썼다”만으로는 충분하지 않습니다. 논문·노트북·결과 테이블에는 가능하면 게놈 빌드 + 주석 출처 + release 번호를 같이 남깁니다.
3. gene_id 버전 suffix 처리
섹션 제목: “3. gene_id 버전 suffix 처리”Ensembl ID에는 버전이 붙을 수 있습니다.
ENSG00000141510.18다른 데이터베이스에는 suffix 없는 ENSG00000141510 형태로 들어 있는 경우가 많습니다. 외부 데이터와 합칠 때 .18 같은 버전 suffix를 유지할지 제거할지 정해야 합니다.
4. gene_name만 믿지 말 것
섹션 제목: “4. gene_name만 믿지 말 것”gene_name은 사람이 읽기 좋지만, 분석 키로는 약합니다.
- 과거 이름이 바뀔 수 있음
- 같은 symbol이 여러 위치에 등장할 수 있음
- pseudogene/lncRNA까지 포함하면 중복 가능성이 커짐
그래서 내부 분석 테이블은 gene_id를 기준으로 두고, 마지막 해석 단계에서 gene_name을 붙이는 방식이 안전합니다.
작은 예시
섹션 제목: “작은 예시”아래 예시는 하나의 유전자에 transcript 하나, exon 두 개가 있는 단순한 구조입니다.
chr1 source gene 1000 5000 . + . gene_id "GENE1"; gene_name "ABC1";chr1 source transcript 1000 5000 . + . gene_id "GENE1"; transcript_id "TX1";chr1 source exon 1000 1200 . + . gene_id "GENE1"; transcript_id "TX1"; exon_number "1";chr1 source exon 3000 5000 . + . gene_id "GENE1"; transcript_id "TX1"; exon_number "2";이 GTF를 기준으로 count하면, exon 1 또는 exon 2에 겹친 read들이 GENE1 count로 합쳐집니다.
한 줄 치트시트
섹션 제목: “한 줄 치트시트”GTF는 "게놈 위 유전자 지도"다.RNA-seq에서는 BAM의 read를 gene/exon에 배정하기 위해 쓴다.좌표는 1-based inclusive, 핵심 속성은 gene_id와 transcript_id.게놈 FASTA와 GTF는 같은 빌드·같은 염색체 이름을 써야 한다.관련 형식은 데이터 형식 레퍼런스와 TPM 정규화를 함께 참고하세요.
참고자료
섹션 제목: “참고자료”- Ensembl: GFF/GTF File Format: GFF/GTF의 9개 컬럼, 1-based inclusive 좌표, attribute 컬럼 설명.
- GENCODE: Data format: GENCODE GTF의 컬럼 정의,
gene_id,transcript_id,gene_type,exon_number등 attribute 설명. - Sequence Ontology: GFF3 specification: GFF3의
ID,Parent,tag=valueattribute 문법과 계층 표현. - Subread/featureCounts User Guide:
featureCounts -a annotation.gtf -t exon -g gene_id방식의 read summarization 옵션. - Liao Y, Smyth GK, Shi W. featureCounts: an efficient general purpose program for assigning sequence reads to genomic features. Bioinformatics (2014). DOI: 10.1093/bioinformatics/btt656