구조 변이 annotation tool: AnnotSV

유전체 정보로 부터 임상적으로 중요한 변이를 검출하기 위해서는 NGS 시퀀싱 기기의 read 정보로부터 변이 검출까지의 파이프 라인 못지 않게, 얻어낸 수많은 변이로 부터 병인에 중요한 역할을 할 것으로 생각되는 후보 변이를 필터링하는 전략이 매우 중요하게 됩니다. 따라서 적절한 데이터 베이스로 부터 Annotation을 하는 과정은 매우 중요하게 되는데, 이번 포스팅은 다양한 변이 중에서 구조 변이 (Structural variation; SV)을 대상으로 Annotation을 할 수 있는 도구 중에 하나인 AnnotSV에 대해서 소개하고자 합니다. AnnotSV는 이전에 소개했던 Annovar의 CNV (copy number variant) 버젼에 해당한다고 볼 수 있습니다.

[관련 포스팅 보기]

AnnotSV는 다양한 구조 변이의 Annotation 기능 뿐만 아니라, ACMG (American College of Medical Genetics)에서 권장하는 구조 변이의 판독 기준에 따라서, 해당 변이의 중요도를 5가지 카테고리로 구분해줍니다. Input으로는 bed 파일 또는 vcf 파일을 받으며, 다양한 유전자, 조절 인자, 기존에 알려진 병적 변이, 질병과의 연관성 등을 기준으로 ACMG class를 보고해줍니다. 위 그림은 AnnotSV의 이러한 분석 과정을 보여주고 있습니다.

[bed 파일의 기본 구조] bed 파일은 1) 염색체 번호 (Chromosome), 2) 시작 지점 (Start), 3) 끝 지점 (End)의 3가지 기본적인 정보를 토대로 유전체 내의 특정 범위에 대한 정보를 제공해줍니다.

구조 변이 (CNV)의 경우, 적은 수의 염기 변이 (SNV)보다 short-read sequencing을 이용하는 경우, 기술적으로 검출하는 해상도의 한계가 있으며 (deletion보다 duplication 검출이 어려움. 충분한 Depth와 Supporting read가 확보되어야 하며, 이 때문에 translocation도 검출이 어려움.) 변이의 해석도 더 어려운 경우가 많습니다. 따라서, 적절한 한계점을 인지하고 적절한 분석 방법론을 적용하는 것이 중요하며, 현재도 많은 부분들이 현재 진행형으로 연구가 되고 있는 분야입니다.

다만, 최근 ACMG에서 구조 변이의 임상적 해석을 위한 Criteria를 제시해주어, 많은 부분 임상적으로 활용이 가능해진 부분이 있습니다. (아래 참고 논문: Riggs, Erin Rooney, et al. Genetics in Medicine 22.2 (2020): 245-257) 그동안 구조 변이의 해석에 여러가지 어려운 점들이 많았는데, 최근 이 쪽 분야도 많은 툴들과 방법론 들이 개발되고 있는 것 같습니다. 그런 점에서 AnnotSV는 구조 변이를 연구하고 해석하는 입장에서 매우 유용한 툴임이 분명합니다.

[References]

AnnotSV Github: https://github.com/lgmgeo/AnnotSV

AnnotSV Homepage: https://www.lbgi.fr/AnnotSV/

Geoffroy, Véronique, et al. “AnnotSV: an integrated tool for structural variations annotation.” Bioinformatics 34.20 (2018): 3572-3574.

Geoffroy, Véronique, et al. “AnnotSV and knotAnnotSV: a web server for human structural variations annotations, ranking and analysis.” Nucleic Acids Research (2021).

Riggs, Erin Rooney, et al. “Technical standards for the interpretation and reporting of constitutional copy-number variants: a joint consensus recommendation of the American College of Medical Genetics and Genomics (ACMG) and the Clinical Genome Resource (ClinGen).” Genetics in Medicine 22.2 (2020): 245-257.

plink를 이용한 GWAS 분석 및 Manhattan plot 만들기

유전체 연구에 있어서 연구 디자인 (Study Design)과 형질 (Phenotype) 은 매우 중요합니다. 특히 약물 유전체 연구에 있어서의 관심 형질은 체내 약물 농도나 대사능, 부작용의 발생 여부 등이기 때문에 더욱더 정확한 표현형을 수집하기가 어려운 점이 있습니다. 최근에 논문을 쓰면서, GWAS (Genome-wide association study)를 돌리고, Manhattan plot을 그릴 일이 있어서, 관련 분석 과정을 정리해볼까 합니다.

관련 포스팅 보기>

 

I. PLINK

1-s2.0-S0002929707613524-gr4_lrg

대부분의 GWASSNP array를 이용하여, 대표 유전자 마커를 이용한 표현형 연관성 연구로 진행이 되는데, 이때 주로 사용하는 Tool이 plink입니다. (해당 tool이 논문으로 나온게 2007년이니까 벌써 10년도 넘은 소프트웨어입니다..) 그러나 아직도 쓰이고 있다는 건, 그만큼 많은 연구자들이 쓴다는 것이고, 대표적인 소프트웨어라고 할 수 있습니다. (1.9 버젼이 나온 이후, 2.0 버젼을 베타 테스트하고 있다고 한지도 꽤 오래 되었는데, 그 이후 업데이트가 매우 느리게 진행되고 있는 것이 단점입니다.) 물론, BI tool 답게 많은 경쟁 소프트웨어들이 나왔는데 (ex. EPACTS), 아직도 대부분의 논문에서 plink를 쓰는 것을 보면, 대부분의 분석을 하는데 plink만 있어도 크게 무리가 없기 때문이 아닐까 합니다. plink의 사용법은 plink 홈페이지 (PLINK: Whole genome data analysis toolset)의 tutorial page에 매우 자세하게 소개가 되어 있어서, 그때 그때 필요한 내용들을 찾아서 쓰면 됩니다.

plink 다운로드 및 설치>

<VCF 파일 압축 및 인덱싱>

bgzip -c [myvcf.vcf] > [myvcf.vcf.gz]
tabix -p vcf -f [myvcf.vcf.gz]

<PED, MAP 파일 or BED, BIM, FAM 파일 만들기>

plink 실행을 위해서는 PED & MAP file 또는 binary 형식으로 변환된 BED, BIM, FAM file이 필요합니다. 일반적으로 SNP array 데이터를 생산하면 만들어주기 때문에 따로 준비할 필요는 없습니다. 간혹 NGS로 생산된 시퀀싱 데이터로 plink로 실행하고 싶은 경우, vcf 파일을 위의 형식으로 변환하면 좋은데, 아래와 같은 command가 유용합니다.

plink --noweb --vcf [myvcf.vcf.gz] --recode --out myplink
plink --noweb --vcf [myvcf.vcf.gz] --recode --make-bed --out myplink

<PLINK 파일 기본 QC>

plink --file myplink --missing-genotype N --make-bed --mind 0.05 --maf 0.05 --geno 0.1 --hwe 1e-6 --recode --out myplink.QC

missing genotype 여부, genotyping calling rate, minor allele feqeuncy, HWE (Hardy-Weinberg equilibrium) cut-off 기준으로 이를 위반하는 SNP들은 모두 날려버리는 quality control 과정입니다.

<plink를 이용한 연관 분석>

plink를 이용한 연관 분석은 통계 모형에 기반하기 때문에 우선적으로 어떤 모델을 이용하여, 어떻게 분석을 할지를 고려해야 합니다. Genetic inheritance mode (Additive, Dominant, Recessive)와 분석 형질이 Dichotomous trait인지 Continuous trait 인지에 따라서 Case-control, linear regression, logistic regression model 등을 적용할 수 있습니다. 더불어, 보정을 위한 공변량(covariate)으로 무엇을 선택할 것인지도 중요합니다.

분석을 위한 Input Phenotype data를 준비하는 과정도 중요한데, 다음 페이지에서 자세하게 소개가 되어 있습니다.

[분석을 위한 command]

plink --noweb --bfile [mydata] --[additive/dominant/recessive] --[assoc/linear/logistic] --pheno [phenotype_file] --pheno-name [phenotype_name] --covar [covariates_file] --covar-name [covariates_name] --out [result_file]

위의 command에 적절한 inheritance mode [additive/dominant/recessive]와 분석 모델 [assoc/linear/logistic]을 골라서, 분석을 실행하면 됩니다. 특정 SNP에 대한 Conditioning을 원하는 경우, –cond [SNP ID]를 추가합니다.

위의 분석 과정을 거치면, 모든 SNP 위치에 대한 Beta 및 P value가 계산됩니다. Beta는 해당 SNP의 Effect size를 나타내는 통계량이고, P value는 해당 SNP의 통계적 유의도를 의미합니다. Manhattan plot은 일반적으로 여기서 계산된 P value에 -log를 취한 형태로 그리게 됩니다.

II. Manhattan Plot 그리기

Manhattan Plot을 그리는 방법도 다양하지만, 여기서는 제일 간편한 qqman R package를 이용하도록 하겠습니다. 자세한 option은 아래 Reference의 자료들을 참고 바랍니다.

library(qqman)

## plink 결과 파일 불러오기
data &amp;amp;lt;- read.table("plink_result", header = T, stringsAsFactors=F)

## Manhattan plot 그리기
manhattan(data, main = "Manhattan Plot", ylim = c(0, 40), cex = 0.8, cex.axis = 0.9, col = c("grey", "skyblue"))

## QQ plot 그리기
qq(data$P)
GWAS

위의 패키지를 이용하면, 위와 같은 Manhattan plot을 손쉽게 만들 수 있습니다.

III. HaploView

마지막으로, SNP 정보의 linkage 여부에 따른 LD block의 시각화를 위한 Haploview에 대해서 간단히 정리하고, 포스팅을 마치도록 하겠습니다.

Haploview 4.2 Download

plink --noweb --bfile [mydata] --extract [Gene_SNP_list] --recodeHV --out [Gene_haploview]

plink의 위의 command를 이용하여, Haploview를 원하는 SNP의 list에 대해 ped 및 info 파일을 생성합니다. 이를 HaploView 프로그램을 통해 loading해주면, 생성된 LD block과  계산된Haplotype 조회가 가능합니다. 아래 그림은 HaploView를 이용하여, 생성된 LD block 입니다.

Figure S5

[References]

PLINK: Whole genome data analysis toolset

Purcell, Shaun, et al. “PLINK: a tool set for whole-genome association and population-based linkage analyses.” The American journal of human genetics 81.3 (2007): 559-575.

Chang, Christopher C., et al. “Second-generation PLINK: rising to the challenge of larger and richer datasets.” Gigascience 4.1 (2015): s13742-015.

qqman R package GitHub

Manhattan plot in R: a review