컬럼

Somatic Caller는 뭘 사용해야 하나요?

hongiiv 2014. 9. 19. 14:57
반응형
어제는 유전체학회의 정기학술대회에 기웃거리다 왔다. Bioinformatics 세션의 연세대 김상우 교수의 "Computational Approaches for Genomic Rare Variant Detection" 발표 후 질문중 하나가 여러개의 caller를 사용할때 어떤 caller를 사용해야 하냐는 것이었다. 

Combining Calls 또는 Ensemble Approach

숭실대 황규백 교수의 "Reducing False-Positve Incidental Findings with Ensemble Genotyping and Logistic Regression Based Variant Filtering Methods"를 보면 여러개의 caller의 조합이 좋은 성능을 나타내는 것을 볼 수 있다.

위의 논문에 의하면 일반적인 Variant Calling에서 여러개의 caller의 교집합 (여러개의 caller를 사용하기 때문에 Ensemble이라는 표현을 사용했으며, 그림에서는 nVCA+)을 사용하면 성능이 좋다고한다. 총 6개의 caller (GATK UnifiedGenotyper, SAMtools, glfSingle, FreeBayes, Atlas2, VarScan2)를 사용한 결과이다. SNV, Insertion Deletion의 Hom, Het 각각에 대한 성능을 보여준다.


위의 논문에 비해 Somatic calling에서도 위와 유사한 approach를 적용한 논문이 있는데 "Combining calls from multiple somatic mutation-callers"라는 논문에서도 somatic call을 위해 3개의 caller를 교집합을 사용하는 경우 그 성능이 좋음을 보여주고 있다.

Fitting logistic model 또는 LR-Based Variant Filtering

물론 두 논문다 여기서 끝나는 것이 아니라 variants에 대한 여러 feature들을 이용하여 Logistic 분석을 추가한다.

일반적인 variant의 경우 GQ(genotype quality score), dbSNP 여부, RepeatMasker와의 overlap, genic vs. intergenic, SNV substitution type을 사용하며, somatic인 경우 Tumor/Normal의 각  sequencing depth, variant allele fraction, dbSNP 여부, Mutation Set(각 caller에서의 calling 여부)을 이용하여 모델을 만들고 prediction을 수행한다.

그럼 슬슬 어떤 caller를 사용해야 할지에 대한 답을 해보자.

두 개 이상의 caller를 사용하면서 이에 여러 feature들을 이용하여 LR Model을 만들고 전체 variant set에 대해 해당 모델을 가지고 prediction해서 사용하는 것이 답!! 불편하다면 그냥 성격이 유사한 MuTect과 Virmid의 교집합 또는 성격이 다른 caller들의 교집합,,, 어허 필자양반 결론을 그딴식으로 내놓으면 내 어찌하란 말이오...

그래서 준비했다. 

어차피 여러개의 caller에 대해 공통적으로 나오는것을 사용하면 좋다는 것은 위의 두 논문에서 나름 gold standard data set을 통해 검증은 되었다. 뭐 caller가 많으면 많을수록 겹치는 variants의 갯수는 줄어들겠지만 그 놈들은 ture일 가능성이 점점 높아진다. 

앞선 포스팅에서 필자는 somatic caller의 유사도를 알아보았고, 기존의 논문들을 통해 MuTect, Virmid, Strelka가 유사한 성능과 특징을 가진다는 것을 알아보았다. 또한 그들이 3개의 툴이 공통적으로 지정한 variant는 2,312개로 MuTect 총 3,441개 중 67%, Virmid의 총 3,046개 중 76%, Strelka의 2,718개의 85%에 해당하며 평균적으로 각 툴이 찾은 variants들은 약 75%가 세개의 caller가 공통적으로 찾는 variants라는 것을 확인했다.

이제 각 variants의 특성을 뽑아내고 트레이닝을 시켜 모델을 만들면 되겠다. 이하 생략!

반응형