3강 / 20강

200기가바이트 — 조각을 제자리에 놓는다

제6장 「200기가바이트의 세계」

200기가바이트 — 조각을 제자리에 놓는다
짧은 조각 수십억 개를 참조 게놈이라는 답안지 위에 늘어놓는 일입니다.

이메일이 왔습니다. 첨부파일 네 개.

rosie_blood_R1.fastq.gz (48 GB) rosie_blood_R2.fastq.gz (51 GB) rosie_tumor_R1.fastq.gz (52 GB) rosie_tumor_R2.fastq.gz (55 GB)

합쳐서 200 GB. 이 안에 뭐가 들었는지부터 봅니다.

퍼즐 조각과 답안지

정렬(alignment)은 그 조각들을 참조 게놈 위에 늘어놓는 일입니다.

🧩
조각 수십억 개
150글자짜리 read. 어디서 왔는지 안 적혀 있다
📄
참조 게놈
개 표준 유전체 CanFam3.1. 완성된 퍼즐 그림
📍
정렬 결과 (BAM)
조각마다 몇 번 염색체 몇 번째 자리인지 적어 놓은 것
bwa mem -t 16 CanFam3.1.fa rosie_tumor_R1.fastq.gz rosie_tumor_R2.fastq.gz \ | samtools sort -o tumor.bam

이야기에서 이 계산에 이틀이 걸렸습니다.

커버리지 — 같은 자리를 몇 번 읽었나

이야기에 나오는 혈액 40×, 종양 85× 가 이겁니다. 게놈의 한 자리를 평균 몇 개의 read 가 덮고 있는지입니다.

커버리지 = (read 개수 × read 길이) ÷ 게놈 크기

왜 종양을 두 배 넘게 깊이 읽었을까요? 종양은 순수하지 않기 때문입니다.

떼어 낸 종양 조각 안에는 종양 세포만 있는 게 아닙니다. 정상 결합조직, 혈관, 침윤한 면역세포가 섞여 있습니다. 게다가 종양 세포끼리도 유전자가 다릅니다(종양 내 이질성). 그래서 일부 세포에만 있는 변이는 read 백 개 중 몇 개에만 나타납니다. 깊이 읽지 않으면 그 몇 개가 아예 안 잡히거나, 잡혀도 기계 오류와 구별되지 않습니다.

커버리지와 변이 빈도를 바꿔 보세요. 몇 개의 read 로 잡히는지, 우연히 놓칠 확률이 얼마인지 나옵니다.
불러오는 중…
결론이 뒤집히는 자리는 VAF 가 낮을 때뿐입니다. 그래서 종양만 85× 로 읽었습니다.
Python 브라우저에서 실행

중복 제거 — 같은 조각을 여러 번 센 것

picard MarkDuplicates I=tumor.bam O=tumor_dedup.bam M=tumor_metrics.txt

라이브러리를 만들 때 PCR 로 DNA 를 증폭합니다. 그러다 보면 원본 조각 하나가 사본 열 개가 되어 기계에 들어갑니다. 정렬하면 똑같은 자리에 똑같은 조각이 열 개 쌓입니다.

독립된 read 10개
서로 다른 DNA 분자 10개를 읽은 것. 증거 10개입니다.
복제된 read 10개
DNA 분자 하나를 열 번 베낀 것. 증거는 여전히 1개인데 프로그램은 10개로 셉니다. 오류 하나가 확신에 찬 변이가 됩니다.

중복 제거를 안 하면 4강의 변이 부르기가 가짜 변이를 자신 있게 내놓습니다. 이 한 줄을 빼먹는 것이 초심자가 가장 흔히 하는 실수입니다.

🤔 확인 문제
종양을 혈액보다 두 배 넘게 깊이 읽은 가장 큰 이유는?
🤔 확인 문제
PCR 중복 read 를 제거하지 않으면 무슨 일이 생기나요?