티스토리 뷰

Clinical Sequencing을 위한 준비 - 표준 variants

미국 NIST (National Institute of Strandards and Technology)의 Div. Biosystems and Biomaterials 에서는 추후 임상으로서의 NGS 데이터 적용을 대비하기 위한 작업을 하고 있다. 이와 유사하게 국내에는 한국표준과학연구원 국가참조표준센터 (NCSRD)이 생명과학 관련 참조 표준 제정하고 있는데요. 아직 NGS 데이터와 관련한 표준은 없는 상태이다. (하단의 생명과학 관련 참조 표준 목록 참고) 

NIST는 NA12878에 대해서 자세한, 표준의 variants call set을 만들어 calling 알고리즘의 벤치마크나 기타 여러 분야에 활용할 수 있도록 하고 있다. 이 작업은 NIST, "Genome in a Bottle Consortium (GIAB) ", Harvard School (Dept. of Biostatistics) 공동으로 진행하였으며, 해당 결과는 CGAT (Genome Comparision & Analytic Testing)을 통해 활용이 가능하도록 하였다.

이와 관련되어 진행된 내용은 Blue Collar Bioinformaticsbcbio-nextgen에 설명되어 있으니 참고해보면 된다. 또한 이 작업은 Nature biotechnology에 "Integrating human sequence data sets provides a resource of benchmark SNP and indel genotype calls"에 논문으로 출판된 상태이다.

앞서 언급했듯이 NIST는 잘 알려진 CEU female NA12878에 대한 11 whole genome, 3 exome data set을 5개의 서로 다른 sequencing platform들을 가지고 Highly confident set of reference call를 생성했다.  (각 데이터셋은 GIAB의 ftp site를 통해 다운로드 가능) 서로 다른 sequencing platform과 variant caller로 인해 서로 다른 결과값들을 보여주고 이들간의 bias를 줄이기 위한 여러가지 방법이 동원되었다. 아래 표는 이러한 표준을 만들기 위해 사용한 플랫폼과 mapping algorithm들을 보여주고 있다. 최종적으로 다양한 sequencing technologies를 통합, bias를 최소화하고 machine learning을 적용하여 NA12878에 대해 2,741,014 SNP와 174,718 indels을 정의했다.

Referece call을 활용한 Calling method 평가

이렇게 만들어진 reference call을 가지고 FreeBayes, GATK UnifiedGenotyper, GATK HaplotypeCaller, 그리고 Ensembl calling method의 총 4가지 calling method들을 평가를 수행한 결과에 대해서 살펴 보도록 하겠다. 우선 각 calling method에 대한 간략하게 정의하면 다음과 같다.
  • Bayesian calling approach that handles sumultaneous SNPs and indel calling via assessment of regional haplotypes.
  • GATK UnifiedGenotyper: Bayesian approache to call SNPs and indels, treating each position independently.
  • GATK HaplotyperCaller: Performs local de-novo assembly to call SNPs and indels on individual haplotypes.
  • Ensembl calling method: Consensus approaches (하단의 "Machine Learining(SVM Ensemble)을 이용한 variants calling 성능 향상" 참고)
Blue Collar Bioinformatics의 글에 따르면, 각각의 평가 결과는 reference와의 concordant, dicordant에 따라 다음의 4개의 category로 나누어 평가를 진행하였다고 한다.
  • Concordant: reference material과 일치
  • Discordant (missing): NA12878의 reference에는 존재한 평가 데이터 셋에는 없는 변이 (these are potential false negatives)
  • Discordant (extra): 평가 데이터 셋에는 존재하나 reference에는 없는 변이 (these are potential false positives or missing calls from the refrerence materials)
  • Discordant (shared): 평가 데이터 셋과 reference에 모두 존재하나 서로 다른 변이 (allele differences, such as heteo vs. homo calls, or variant identification differences, such as indel start and end coordinates)
각 calling method에 대한 평가 결과는 다음과 같다.
  • FreeBayes: SNP과 indel 모두에서 GATK보다 우수한 성능을 보여줌, 최근 버전은 sensitivity와 specificity가 향상되어 GATK HaplotpyeCaller와 동등한 위치를 가짐, het/hom call의 경우 더 정확하여 이는 discordant shared variants의 lower number가 말해줌
  • GATK HaplotypeCaller: UnifiedGenotyper에 비해 전반적으로 나은 성능을 보여줌, 이전의 평가에서는 UnifiedGenotyper가 SNP에서 좋은 성능을  보였고, HaplotypeCaller가 indel에서 좋은 성능을 보였으나, GATK 2.7에서 SNP calling 부분을 해결함. GATK pipeline을 사용하는 경우 UnifiedGenotyepr의 indel 부분의 realigning에 성능이 떨어지므로 HaplotypeCaller를 사용할 것을 권장
  • Ensemble Calling approache: SNP와 INDEL에 있어서 가장 좋은 방법. homeozygote/heterozygote call에 대한 약간의 뒤쳐짐의 영향으로 HaplotypeCaller와 FreeBayes 모두 해당하는 것으로 이것을 반영하게 되어 discordant(share)가 높게 나오게 된다.

이미지 출처: Blue Collar Bioinformatics

calling sensitivity와 specificity와 함께 중요한 요인은 바로 분석에 걸리는 시간이다. 대략적으로 whole genome sequencing 데이터의 경우 HaplotypeCaller가 UnifiedGenotyper에 비해 7배 정도 느리며, FreeBayes보대 2배 느리다. Ensembl calling은 3가지 caller를 모두 사용하애 하기 때문에 시간이 많이 소요 된다. 그러나 이 시간은 compute infrastructure, coverage 등에 매우 변동적이다. 

Machine Learining(SVM Ensemble)을 이용한 variants calling 성능 향상

앞서서 여러가지 varinat calling method들이 서로 concordnat가 떨어지는 것을 확인했다. 그렇다면 다수의 caller를 통해 발굴된 variants를 모두 사용한다면 false positive가 많게되고, 그렇다고 concordant한 것들만 사용한다면 진짜 real variants를 놓칠 수 있게된다. 그렇다면 이시점에서 우리는 ML(Machine Learining)을 이용하는 방법을 고려해 볼 수 있다. 

잠깐 아래의 표와 벤다이어그램은 SevenBridge Genomics에서 발표한 내용으로 2가지 서로 다른 pipeline을 이용하여 Ion PGM  exome 데이터를 비교한 내용이다. 결과적으로 BWA-SW+GATK 조합의 pipeline의 경우 novel snp에 대한 Ti/Tv 비율이 1.05로 TMAP+IVH 대비 많은 true positive를 call하였다는 것을 알 수 있지만, TAMP이 놓친 ture variant를 찾았다고도 볼 수 있다. 따라서 무조건적으로 하나의 pipeline보다는 여러 pipeline(caller)를 이용하여 최대한의 성능을 낼 수 있는 방안이 필요한 것이다.


그렇다면 무조건적인 둘 혹은 그이상의 caller의 결과를 무조건 합한 결과를 사용하는 것이 아니라, 다음의 순서에 따라 ML을 적용한다.
  • training을 위해 모든 caller들이 공통적으로 찾은 variants를 true positive set(pass)으로 지정하고 하나의 caller만이 찾은 variants를 false positive(fail)로 지정한다. 
  • 위의 traing을 통해 만들어진 모델은 variant type, zygosity, reiongal sequence complexity(?)의 classifier(분류기)를 이용하여 분류를 수행한다. (ensemble) 
  • 최종적으로 분류를 통과한 variants를 사용한다.
그럼 이렇게 생성한 모델은 잘 만들어진것인지?에 대한 질문의 답은 위에서 언급했듯이 ensemble을 적용한 것을 referece call(정답을 알고있는)에 대해서 검증한 것이 있으므로 pass.

지금까지 표준 variant와 이를 통한 variant caller 비교에 대해서 알아보았다. 그리고 더 나아가 이러한 caller들을 ensemble하는 방법에 대해서도 알아 보았다. NGS 기술 발전과 보급으로 지속적으로 새로운 caller들이 저마다의 알고리즘으로 무장하고 계속 생겨나고 있다. 어느 하나의 caller를 사용하는것 보다는 이들을 모두 활용하는 방법을 통해 즉, 여러 모델의 출력을 결합하는 ensemble 방법을 통해 극적으로 성능을 향상할 수 있다. NGS variant를 검출하는데에 있어서 이러한 consensus 방법은 낮은 false positve rate에 의존하는 rare variant, pathway 분석, de-novo filtering에 유용하다.

출처: Blue Collar Bioinformatics, An automated ensemble method for combining and evaluating genomic variants from multiple callers 

지지벡터머신(SVM, support-vector machine)

분류하고자하는 범주의 평균을 사용해서 계산된 선형분류기와는 달리 각 범주와 가능한 멀리 떨어진 선(maximum-margin hyperplane, 최대허용 초평면)을 이용한다. 가장자리 점들을 구분선의 위치를 결정하는데에 사용되기 때무네 다른 데이터들을 제거하더라도 선은 동일한 장소에 존재하게 되며 이 선의 근처에 위치한 점들을 support-vector(지지벡터)라고 한다. support-vector를 찾고 이를 이용해서 구분선을 찾는 알고리즘이 바로 SVM이다.

SVM은 고차원 데이터 셋트에서 잘 작동하기 떄문에 데이터 중심의 과학 문제나 복잡한 데이터 셋트를 다루는 문제에서 자주 적용된다.
  • 얼굴표현분류
  • 국방 데이터셋트를 사용한 침입탐지
  • 단백질 서열 내의 단백질 구조 예측
  • 필기체 인식
  • 질병 예측 및 CCDS(Clinical Decision System)

Soft-maring classifier

SVM은 기본적으로 binary classifier(분류기)로 일반적으로 SVM이라고 한다면 몇개의 에러는 용인하고 줄을 긋게 된다.

Kernel

직선만 그릴 수 있기 때문에 직선으로 나뉘지 않는다면 데이터를 변형해서 둘 사이를 떨어뜨려 놓은 후 선을 긋는것으로 kernel은 떨어 뜨려 놓는, 비슷한 것끼지 뭉치게 하는 방법을 지정하는 것으로 kernel중 RBF(radial basis function) 방사함수, linear kernel, polynomical kernel이 존재한다. 즉 선형 분류로 불가능한 데이터에 대한 처리를 가능하게 한다. 계산시간이 증가하지만, 선형 분류기의 정확도를 높일 수 있다.

Radial Basis Kernel 왼쪽과 같이 선형으로 분류가 어려운 데이터를 오른쪽과 같이 커널을 적용

Python with libsvm

svm_train을 이용하여 svm_problem을 훈련 시킨후 [1,1,1]이라는 데이터를 해당 모델(m)을 이용하여 분류한다. 예측 결과 [1.0]로 분류되었으며 100%의 accuracy를 보인다.  [-1,1,1]을 예측하면 [1]이 아니며(accuracy 0%) [-1.0]으로 예측한다.
>>> from svmutil import *
>>> prob = svm_problem([1,-1],[[1,0,1],[-1,0,-1]])
>>> m = svm_train(prob, '-t 0 -c 10')
*
optimization finished, #iter = 1
nu = 0.025000
obj = -0.250000, rho = 0.000000
nSV = 2, nBSV = 0
Total nSV = 2
>>> predicted_labels, _, _ = svm_predict([1],[[1,1,1]],m)
Accuracy = 100% (1/1) (classification)
>>> print "Predicted value: " + str(predicted_labels[0])
Predicted value: 1.0
>>> predicted_labels, _, _ = svm_predict([1],[[-1,1,1]],m)
Accuracy = 0% (0/1) (classification)
>>> print "Predicted value: " + str(predicted_labels[0])
Predicted value: -1.

참고1: Ensemble

Machine Learning의 분류를 통해 여러개의 분류기(classifier)를 생성하고 이것들을 결함하여 학습하는 방법으로 다양한 분류기의 예측 결과를 결합하여 단일 분류기보다 신뢰성이 높은 예측값을 얻는 것이 목표이다. Ensemble은  SVM(Support Vector Machine)과 같은 한개의 학습 알고리즘을 사용하는 방법에 대해 주로 이루어졌으며, 학습 알고리즘을 조작하여 다양한 분류기를 생성한 후 다수결(Majority Voting)이나 가중치 투표(Weighted Voting)에 의해 예측값을 결합한다.
위에서는 ML을 이용하는 방법이었다면, 이건 오버랩되는 것들을 선택해서 하는 방법 또한 생겨나고 있다.
  • Consensus Genotyper for Exome Sequencing(CGES) Improving the Quality of Exome Variant Genotypes
    132 samples seuqenced at Hudson Alpha Institute for Biotechnology using the Numblegen Exome Capture and Illumina sequencing technology.
    In 2013, 1,184 published papers were indexed in PubMed with the key words "exome sequencing" (more than twice the number published in 2012)

참고2: 국가참조표준센터의 생명과학 분야 참조 표준

  • SNP Genotyping에 의한 1촌~6촌 Genetic Distance 유전체 생명정보
  • 한국인 차씨가계도의 유전적 거리
  • 조직적합성 판별 영역별 변이체의 상동성 기반 유전적 거리 
 
저작자 표시 비영리 동일 조건 변경 허락
신고
댓글
댓글쓰기 폼