Creating a universal SNP and small indel variant caller with deep neural networks (biorxiv.org)
DeepVariant paper
biorXiv ( Nat Biotech.), 2018
Variant calling
1) NGS read 는 ref 에 align 됨
2) Align 된 read 에서 ref genome 과 다른 부분을 찾음.
3) 각 candidate site 마다 read 와 ref read 는 pileup image 로 생성되서 저장됨. Pileup image 에는 reads + quality + read feauture 가 한 레이어 당 RGB 의 3차원으로 들어감
4) 훈련된 CNN 모델이 각 image 에서 genotype likelihood 를 계산
5) genotype likelihood 가 hetero 거나 non-reference homozygous 면 call 함
6) CNN 모델을 training 시키는 것은 Pileup image + known genotype 으로 진행 ( 여기서 Deepvariant의 machinary 중 pileup image 생성되는 것을 다시 사용함 )
7) 이렇게 라벨링된 image + genotype pair 는 CNN 으로 들어가는데 이 CNN 모델은 다른 이미지 분류 모델일 수도 있고, 이전에 쓰인 DeepVariant 모델일 수도 있음.
8) CNN training 의 목적은 genotype prediction accuracy 를 극대화할 수 있는 방향으로 최적화 하려는 것임. Stochastic gradient descent algorithm사용
9) 충분한 cycle 이나 time 이 지난 후에 variant calling 을 위해서 model freeze
Candidate parsing
def is_candidate(counts, allele):
allele_count = counts[allele]
total_counts = sum(counts.values())
return not is_reference_base(allele)
and allele_count >= min_count
and allele_count / total_count >= min_fraction
Train 은 reference genome + true genotype 으로 했고, model freeze 후에 novel site 에 적용을 했다고 한다.
GATK 에서는 error read 가 독립적이라고 가정하고 분석하기 때문에, error 가 전체적인 read 에서 있을 것이라는 것은 생각하지 못한다. 따라서 CNN 을 도입한 DeepVariant 가 전체적인 것을 포괄하여 call 을 함에 있어서 더 좋은 성능을 냈을 것
하지만 WES 에서는 성능이 좀 떨어지기는 했었는데, re-training 을 하니까 좋아졌다는 것. Exome 이 genome 영역보다 훨씬 적기도 한데다가, non-uniform coverage, FP variant 가 많아서 더 call 이 어렵다 함.
Reference
Google AI Blog: DeepVariant: Highly Accurate Genomes With Deep Neural Networks (googleblog.com)
댓글