[GATK] Base Quality Score Recalibration (BQSR) Start.
BioinformaticsAndMe
100개에서 1개 틀리는 거면 괜찮아 보이지 않은가?
그러나 30억 Human genome을 생각해보자. 보통 WGS는 30X 정도 되므로,
30억 * 30X = 900억개의 base call이 발생할 것이다.
1%의 error로 봤을 때, 약 9억개 base가 error를 가지고 발생한 call이라는 것이다.
#원래 GATK에서 Base reacalibration은 'Indel realignment' 과정 후에 진행하였는데, GATK4로 넘어가면서 'Indel realignment'가 없어졌다.
#요즘 데이터 퀄리티가 realignment할 정도로 나쁘지 않고, 파이프라인의 다른 과정에서 realignment 보정 과정을 만회할 수 있다는 것 같다.
#Indel realignment가 시간이 오래걸리는데, 굳이 할 필요가 없으니 GATK4에서 그냥 뺀 것으로 보인다.
그 이유는 BQSR algorithm에서 dbSNP에 매칭되지 않는 base는 '에러'라 가정하고 진행되기 떄문이다.
A) Finding errors
# 아래 예제를 살펴보자 (어떤 염색체 위에 있고 0~9 base까지 길이 10인 리드가 존재한다)
BQSR에서 에러라고 여겨지는 포지션은 3번과 7번이다. 3번과 7번은
1)read base가 reference와 다르고, 2)dbSNP에도 없기 때문이다.
B) Aggregating the reported phred score
위 phred score (10 11 11 20 22 22 30 20 20 10)는 아래처럼 확률로 변환시켜, 10개의 평균 확률을 구할 수 있다.
(0.1 + 0.079 + 0.079 + 0.01 + 0.006 + 0.006 + 0.001 + 0.01 + 0.01 + 0.1)/10 = 0.0401
이것을 다시 phred score로 변환하면, phred score = -10 * log10(0.0401) ~= 14
따라서, 예제 리드의 reported phred score는 약 14이다.
C) Calculating the empirical phred score
이번에는 empirical(경험적) phred score를 구해보자.
10개의 염기 중 2개를 에러로 가정했으므로, 시퀀스는 2/10 = 0.2 정도의 에러 확률을 갖을 것이고,
(경험적이라는 의미는 실제 측정된 phred score를 이용하는 것이 아닌, 에러인지(true) 아닌지(false)를 true개수/전체개수의 빈도확률 형태로 나타낸 것)
phred score로 변환하면 -10 log10(.02) ~= 7.
따라서, empirical phred score는 약 7이다.
empirical phred score가 7 정도의 에러가 있다면, 원래 관찰된 phred score는 +7정도의 에러가 더해진 값이라 생각하자.
따라서, 각 value에 -7씩 감해주어 recalibration을 진행하자.
10-7=3, 11-7=4....
#GATK에서 위 과정은
- BaseRecalibrator로 recalibration 모델을 만들고
- ApplyBQSR로 score를 재조정하는
두 가지 command로 이루어진다.
#아래 그림은 recalibration 후, 측정된 quality와 경험적으로 확인된 quality의 일치도가 높아진 모습이다.
#다시 말해, read quality의 오류가 적절하게 보정되었다는 의미.
마무리하며..
시퀀싱데이터에서 Recalibration은 quality 보정을 위해 반드시 필요한 작업이다.
특히, dbSNP과 같이 여러 Known 데이터베이스 갖춘 Human에서는 error model을 다른종보다 쉽게 제작할 수 있기에,
정확한 downstream variant calling을 위해선, recalibration 과정이 error model에 기반하여 확실히 수행되어야 한다.
recalibration 모델에 사용되는 feature들은 아래 4가지 정도가 되겠는데, 자세한 사항은 아래 사이트를 참고하자.
- read group the read belongs to
- quality score reported by the machine
- machine cycle producing this base (Nth cycle = Nth base from the start of the read)
- current base + previous base (dinucleotide)
#참고 사이트
1) https://software.broadinstitute.org/gatk/documentation/article?id=11081
2) http://zenfractal.com/2014/01/25/bqsr/
[GATK] Base Quality Score Recalibration (BQSR) End.
BioinformaticsAndMe
'Algorithm' 카테고리의 다른 글
[GATK] HaplotypeCaller 알고리즘 (0) | 2018.08.13 |
---|---|
[PCA] 주성분분석 3 (0) | 2018.08.02 |
[PCA] 주성분분석 2 (0) | 2018.08.01 |
[PCA] 주성분분석 1 (0) | 2018.07.25 |
[GWAS] Imputation (2) | 2018.07.09 |