Lesson 18 of 20
개에서는 건너뛴다 — BQSR 과 알려진 변이 목록
제5장 「GATK 파이프라인에서 개 게놈의 특수성을 어떻게 다룰 것인가」
마틴의 셋째 질문입니다. 앞의 두 질문이 여기서 만납니다.
소설이 답까지 적어 둡니다.
"GATK의 여러 단계는 알려진 변이 목록이 있다는 전제 위에 만들어져 있다. 장비의 품질 점수를 보정하는 단계가 그렇다. 이미 알려진 자리를 빼고 남은 차이를 오류로 보고 그 오류의 패턴을 학습해 점수를 고치는 방식이다. 개에는 그 목록이 빈약하다. 그러면 진짜 변이가 오류로 분류되고, 그 오류 패턴이 다시 점수를 망가뜨린다."
잘못이 두 번 일어납니다. 학습이 오염되고, 그 오염이 다시 진짜 변이를 지웁니다.
Python
Runs in your browser
그래서 개에서는 어떻게 하나 — 세 가지 길
| 길 | 어떻게 | 대가 |
|---|---|---|
| 건너뛴다 | BQSR 없이 그대로 변이 부르기로 간다 | 원래 Q값의 편향이 남는다. 최신 장비에서는 편향이 작아 견딜 만하다 |
| 부트스트랩 | 먼저 엄격하게 변이를 부르고, 그 결과를 '알려진 목록' 삼아 BQSR 을 돌리고, 다시 부른다 | 여러 번 돌아야 한다. 돌 때마다 조금씩 수렴한다 |
| 공개 목록을 쓴다 | Dog10K · EVA 의 개 변이 목록을 가져다 쓴다 | 품종 편중이 있다. 로지 같은 믹스견은 덜 덮인다 |
실무에서 가장 흔한 것은 부트스트랩입니다. GATK 문서도 "알려진 변이가 없는 종에서는 부트스트랩하라"고 적어 두었습니다.
II 권 11강에서 이 문턱들을 직접 옮겨 봅니다. 옮기면 결론이 옮겨집니다.
Python
Runs in your browser
그리고 워크숍 노트북은 무엇을 했나
노트북 4단계는 GATK 를 아예 쓰지 않습니다. bcftools 를 씁니다.
bcftools mpileup -f kit_locus.fa -a FORMAT/AD,FORMAT/DP -Q15 -q10 …
| bcftools call -m -v -Ov -o sample.vcf
| bcftools call -m -v -Ov -o sample.vcf
왜냐하면 bcftools 에는 BQSR 이 없기 때문입니다. 알려진 변이 목록도, 훈련 집합도 필요 없습니다. 리드를 세로로 쌓아 세는 것뿐입니다.
그래서 좋은 점
개에서 전제가 깨질 곳이 없다. 설치가 가볍고 교실에서 몇 초에 돈다
그래서 잃는 것
종양-정상 짝 모형이 없다. 낮은 VAF 를 못 잡는다.
뺄셈을 손으로 해야 한다 — II 권 6~7강
🤔 Check yourself
개 데이터에서 BQSR 을 그대로 돌리면 안 되는 이유는?
Answer BQSR 은 '알려진 변이를 뺀 나머지 차이는 전부 오류'라는 가정 위에 섭니다. 목록이 절반만 덮으면 학습 자료의 큰 몫이 진짜 변이가 되고, 모형이 변이 자리의 문맥을 오류로 배웁니다. 잘못이 두 번 일어납니다.
🤔 Check yourself
GATK 문서가 알려진 변이가 없는 종에 권하는 방법은?
Answer 부트스트랩입니다. 엄격한 첫 호출 → 그 결과를 known sites 로 → BQSR → 다시 호출을 반복하면 조금씩 수렴합니다. 아예 건너뛰는 것도 실무에서 흔한 선택이고, 최신 장비에서는 원래 Q값의 편향이 작아 견딜 만합니다.
🤔 Check yourself
워크숍 노트북이 GATK Mutect2 대신 bcftools 를 쓰는 이유로 가장 정확한 것은?
Answer bcftools 는 리드를 세로로 쌓아 세는 것뿐이라 사람용 자원을 하나도 요구하지 않습니다. 대신 종양-정상 짝 모형이 없어서 뺄셈을 손으로 해야 하고, 낮은 VAF 를 못 잡습니다. 이 맞바꿈을 아는 것이 이 강의가 노리는 것입니다.