변이(VCF)를 유전자/단백질 영향, 인구 빈도, 임상 DB 정보로 주석(annotation)합니다. 이 가이드는 Funcotator(GATK) 중심이며, 대안으로 VEP, SnpEff도 간단히 소개합니다.
# 스레드 & 레퍼런스
THREADS=20
REF_DIR="/home/kang/raw_data/gatk_bundle/v0"
REF="${REF_DIR}/Homo_sapiens_assembly38.fasta"
# 입력(05단계 출력)
VAR_IN="/home/kang/God_Nas/WGS_2nd/variant" # *.filtered.vcf.gz
# 출력
ANN_OUT="/home/kang/God_Nas/WGS_2nd/annotation"
mkdir -p "${ANN_OUT}"
# Funcotator 데이터소스(로컬 위치로 수정)
FUNC_DS="/home/kang/raw_data/gatk_bundle/dataSourcesFolder/funcotator_dataSources.v1.7.20200521s/"
인델의 left-align 및 multi-allelic 분리는 주석 정확도를 높입니다.
# 예: NP-21.filtered.vcf.gz → 정규화
SAMPLE="NP-21"
bcftools norm -f "${REF}" -m -both \
-O z -o "${ANN_OUT}/${SAMPLE}.normalized.vcf.gz" \
"${VAR_IN}/${SAMPLE}.filtered.vcf.gz"
tabix -p vcf "${ANN_OUT}/${SAMPLE}.normalized.vcf.gz"
SAMPLE="NP-21"
gatk Funcotator \
-R "${REF}" \
-V "${ANN_OUT}/${SAMPLE}.normalized.vcf.gz" \
-O "${ANN_OUT}/${SAMPLE}.funcotated.maf.gz" \
--output-file-format MAF \
--data-sources-path "${FUNC_DS}" \
--ref-version hg38 \
--annotation-default tumor_barcode:${SAMPLE}
SAMPLE="Family01_Proband"
gatk Funcotator \
-R "${REF}" \
-V "${ANN_OUT}/${SAMPLE}.normalized.vcf.gz" \
-O "${ANN_OUT}/${SAMPLE}.funcotated.vcf.gz" \
--output-file-format VCF \
--data-sources-path "${FUNC_DS}" \
--ref-version hg38
tabix -p vcf "${ANN_OUT}/${SAMPLE}.funcotated.vcf.gz"
#!/usr/bin/env bash
set -euo pipefail
THREADS=20
REF="/home/kang/raw_data/gatk_bundle/v0/Homo_sapiens_assembly38.fasta"
VAR_IN="/home/kang/God_Nas/WGS_2nd/variant"
ANN_OUT="/home/kang/God_Nas/WGS_2nd/annotation"
FUNC_DS="/home/kang/raw_data/gatk_bundle/dataSourcesFolder/funcotator_dataSources.v1.7.20200521s/"
mkdir -p "${ANN_OUT}"
shopt -s nullglob
for VCF in "${VAR_IN}"/*.filtered.vcf.gz; do
SAMPLE="$(basename "${VCF}" .filtered.vcf.gz)"
echo "[NORM] ${SAMPLE}"
bcftools norm -f "${REF}" -m -both -O z -o "${ANN_OUT}/${SAMPLE}.normalized.vcf.gz" "${VCF}"
tabix -p vcf "${ANN_OUT}/${SAMPLE}.normalized.vcf.gz"
echo "[FUNCOTATOR] ${SAMPLE}"
gatk Funcotator -R "${REF}" \
-V "${ANN_OUT}/${SAMPLE}.normalized.vcf.gz" \
-O "${ANN_OUT}/${SAMPLE}.funcotated.maf.gz" \
--output-file-format MAF \
--data-sources-path "${FUNC_DS}" \
--ref-version hg38 \
--annotation-default tumor_barcode:${SAMPLE}
done
echo "All annotations written to: ${ANN_OUT}"
| 컬럼 | 설명 |
|---|---|
| Hugo_Symbol | 유전자명 |
| Chromosome / Start_Position / End_Position | 게놈 위치 |
| Variant_Classification / Variant_Type | 예: Missense_Mutation / SNP, INS, DEL |
| Reference_Allele, Tumor_Seq_Allele1/2 | 염기 정보 |
| t_depth, t_ref_count, t_alt_count | 종양 depth 및 ref/alt 카운트 |
| tumor_barcode | 샘플명(우리가 기본 주입) |
| gnomAD_xxx | 인구 빈도(희귀 변이 판별에 중요) |
| ClinVar_* | 임상 해석(해석 시 버전/맥락 확인) |
| HGVSp/HGVSc | 단백질/전사체 표기(p./c.) |
플러그인으로 gnomAD/ClinVar/CADD 등 확장 쉬움. 로컬 캐시 설치 필요.
# 예시: VEP VCF → VCF
vep -i input.vcf.gz -o output.vep.vcf.gz --vcf \
--cache --offline --assembly GRCh38 \
--dir_cache /path/to/vep_cache \
--fork 20 --compress_output bgzip
tabix -p vcf output.vep.vcf.gz
가볍고 빠름. snpSift로 추가 필터/주석 가능.
# 예시: SnpEff
snpEff -v GRCh38.99 input.vcf.gz | bgzip -c > output.snpeff.vcf.gz
tabix -p vcf output.snpeff.vcf.gz