NGS 데이터를 만들면 하는 기본 작업중의 하나가 snp calling & genotyping. 어떻게 보면 이것이야 말로 NGS의 가장 큰 장점이 아닌가 싶다(예전에 랩 모임에서 작은 지웅이가 했던 말이 인상 깊었다. expression estimation을 굳이 RNA-Seq으로 해야 하나하는 문제였는데.. 물론 chip을 이용한 실험보다는 NGS를 이용한 transcriptome 분석에 많이 장점이 있기는 하나 단순 expression 양을 측정하는데 NGS를 사용하는 것은 다른 적용에 비해 얻을 수 있는 장점이 많지 않다는 것). 이 논문은 아래 그림에 SNP calling & genotyping 까지의 과정의 각 단계를 대략적으로 설명한다. 큰 틀을 잡는데 상당히 도움이 되는 논문이다.
review라 대략적으로 알고있는것들이 있는데 그런것은 넘어가고 새로운 것만 기록한다.
Base calling and alignment
base calling and quality scores
illumina 에서 보통 miscall error rate가 1%정도 인데 이것의 원인이 무엇인가 하면 기기 유리판에 증폭되어 같은 dna template가 cluster를 이루는데 이 cluster 안의 서로 다른 DNA copy들의 synthesis process의 desynchronization에 의한것. 그러니까 다르게 말하면 cluster를 이루는 동일한 DNA 가닥들이 한 base씩 합성하면서 fluorescence signal을 나타내게 되는데 이 합성되는 단계의 sync가 맞지않아서 signal이 동일해지지 않는다는 것. 이러한 현상은 synthesis의 cycle이 뒤로 갈수록 심해진다.
기기 회사에서 제공하는 base calling program 이외에
- 454 platform : Pyrobayes
- Illumina platform : Ibis, BayesCall
- SOLID platform : Rsolid
의 프로그램이 더 5~30 % 정도 improvement가 있단다.
Alignment and assembly
아시다시피 압축 알고리즘을 이용한 프로그램들(Bowtie, SOAP2,BWA) 가 상당히 빠르나 MAQ. Novoalign, Stampy 등 hash-based algorithm에 비해 sensitivity가 떨어진다, Novoalign과 Stampy 가 현재 가장 정확도가 높다한다니까 한번 봐볼만 하다.
Recalibration of per-base quality scores
SOAPsnp과 GATK의 recalibration에 대해 소개한다. 이것만 봐서는 이해가 힘들다.
Genotype and SNP calling
- SNP calling : polymorphisms의 base position을 찾기 위함
- genotype calling : 각 개인의 genotype을 결정하는 process. SNP calling이 된 위치에서만 가능
예전에는 그냥 단순 allele counting으로 cutoff를 정해서 SNP나 genotype을 calling 했는데 최근에는 probabilistic framework에 uncertainty를 포함하고 더 나아가 allele frequency나 LD pattern 같은 것도 고려사항에 추가 하기도 한다.
Early methods for calling genotypes
NGS를 이용한 초창기 연구에서는 filtering step(>=Q20)을 통해 high confidence base만을 이용해서 고정된 cutoff를 기준으로 SNP를 calling 했다. 예를 들어 Q20 filter를 하고 나서 non-reference allele이 20~80% 사이면 heterozygous genotype으로 그 외에 떨어지면 homozygous로 판단. 이는 deep sequencing일때는 상당히 유용하다.
Probabilistic methods
moderate 혹은 low depth sequencing에서 초창기 방식을 이용하면 heterozygous genotype이 under-calling 될수도 있으며 Q20 과 같은 filtering을 하게되면 가뜩이나 없는 read가 더 줄게 된다. 또 다른 문제는 단순 cutoff를 정해서 하는 것은 genotype inference에 대한 uncertainty 를 측정할 수 없다는 것이다. 그래서 각 genotype에 quality score를 이용하여 posterior probability를 제공하는 확률적인 방법론이 나오게 된다.
- posterior probability = prior probability * likelihood / constant
- p(G|X) = p(G) * p(X|G) / constant , G : genotype
- prior probability : the probability of genotype으로 reference data에서 이 값을 가져온다.
Calculating genotype likelihoods
각 read의 quality score를 이용해서 genotype likelihood(P(X|G)) 를 구할 수 있다. 한 개체에서 나온 특정 genomic site의 read i의 genotype G에 대한 확률 p(Xi|G)는 Xi의 quality score의 rescaling으로 계산이 가능하다. 그리고 genotype likelihood p(X|G)는 이 p(Xi|G)들의 product로 계산되어진다. 곱을 이용한다는 건 Xi 사이에 dependence가 없다는 가정이 들어간 것인데 alignment error나 PCR artefact가 있다면 이 가정은 사실이 아니게 된다. 이를 위해 weighting scheme가 제안되었는데.. (이는 잘 안나왔네..)
Martin이 낸 논문에서는 quality score 대신에 read에서 직접 error rate를 측정하는 방식을 제안했는데 이는 quality score의 정확도에 상관없이 error rate를 구할 수 있는 장점이 있지만 이게 얼마나 제대로 작동하는지는 아직 검증이 안되었단다.
Assigning priors using single samples
prior probability는 각 genotype 마다 동일한 확률로 할당하는 방법이 있고 아니면 외부 정보를 이용하여 할당하는 방법이 있다. SOAPsnp의 경우 dbSNP를 이용하는데 특정 genomic site에 dbSNP에서 G/T polymorphism이 알려져 있을때 GG와 TT에 대해서는 0.454를 GT에 대해서는 0.0909 확률을 prior probability로 할당한다. 나머지 genotype에 대해서는 10-4보다 작은 값을 할당한다.
Assigning priors using multiple samples
Incorporating LD information
A comparison of genotype-call accuracies
SNP calling
여태까지 genotype calling에 대해서만 설명했는데이는 SNP calling과는 약간의 차이가 있다. 예전 NGS 논문들에서는 한사람에 대해서만 분석을 했기 때문에 genotyping이 곧 SNP typing과 동일했다. 여러 사람의 샘플을 갖는 large data set에서는 여느 사람에게 나온 non-refence allele을 SNP라고 할 수 있는데 이는 사람 수가 늘수록 false-positive rate가 늘어날 수 있다는 문제점이 있다. 그담 뭐라 뭐라 하는데.. 당췌 이것만으론 이해 할 수 없다.
Filtering
Incorporating genotype uncertainty in anlayses of NGS data
Recommendations
Conclusions
No comments:
Post a Comment