BAM 파일 읽는 법

간단하게 “BAM 파일 읽는 법 “을 정리해보았습니다. 그 전에 우선 BAM 파일은 어떤 파일인지 알아볼까요? BAM 파일은 reference genome에 mapping한 결과를 보여주는 파일입니다. BAM, SAM, CRAM 모두 mapping 결과를 보여주는데요. BAM은 단순히 텍스트 형식인 SAM 파일을 바이너리 형태로 압축한 반면 CRAM은 파일 크기를 더욱 줄이기 위해 원본 서열 대신 레퍼런스 서열의 차이점만 저장한 형식입니다.

BAM 파일은 바이너리 형식으로 압축되어 저장되기 때문에 리눅스에서 less, cat 과 같은 명령어로 바로 읽을 수 없습니다.

이를 위해서는 몇가지 툴을 사용해야 합니다.

BAM 파일 읽는 법은 여러 방법이 있지만 제가 자주 사용하는 방법은 2가지 입니다.

  1. samtools로 읽기
  2. gatk PrintReads로 읽기

BAM 파일 읽는 법 1 : samtools view

samtools view를 사용하는 방법입니다. -h 옵션은 헤더와 본문 모두 읽습니다.

samtools view -h [BAM 파일]

-H 옵션은 모든 내용이 아니라 헤더만 뽑아와서 읽을 수 있습니다.

samtools view -H [BAM 파일]

옵션이 없으면 본문만 읽습니다.

samtools view  [BAM 파일]

BAM 파일 읽는 법 2 : gatk PrintReads

gatk PrintReads는 바로 읽기만 할 수는 없습니다. sam 파일로 변환한 뒤 읽어야 하기 때문에 단발성으로 읽기에는 samtools 보다 적합하지 않습니다.

gatk PrintReads -I [BAM 파일] -O [SAM 파일]

SAM을 BAM으로 변환하는 법

SAM을 BAM으로 변환하는 법도 samtools를 이용합니다.

samtools의 -bs 옵션을 사용하고 표죽 출력을 저장하는 “>”를 사용하여 bam 파일로 저장합니다.

samtools view -bS [input.sam] > [output.bam]

BAM을 CRAM으로 변환하는 법

SAMtools를 사용하여 BAM 파일을 CRAM 파일로 변환할 수도 있습니다.

samtools view -C -T [reference.fasta] [input.bam] -o [output.cram]

-C: CRAM 형식으로 변환.

-T reference.fasta: 압축에 사용할 레퍼런스 서열 파일 지정.

CRAM을 BAM으로 변환하는 법

samtools view -b -T [reference.fasta] [input.cram] -o [output.bam]

BAM 과 CRAM의 차이

서두에서 설명했지만 표로 다시 정리하면 아래와 같습니다.

데이터 활용이 아니라 데이터 저장의 목적이 더 크다면 CRAM이 더 효율적인 선택이라는 것을 알 수 있습니다.

특성BAMCRAM
파일 형식바이너리 SAM 파일레퍼런스 기반 압축된 형식
압축 방식Gzip 기반 압축레퍼런스 기반 차이 압축
압축 효율더 효율적 (30-50% 더 작음)
레퍼런스 필요불필요필요 (파일 읽기/복원 시)
호환성높은 호환성 (대부분의 도구 지원)제한적 (최신 도구 필요)
사용 사례널리 사용되며 표준저장 공간 최적화가 필요한 경우

참고하면 좋은 사이트

https://www.htslib.org/

Leave a Comment

목차