SAMtools Reference
SAMtools BAM/CRAM 조작 명령어(view/sort/index/mpileup) 레퍼런스
SAMtools Reference 소개
SAMtools 레퍼런스는 차세대 시퀀싱 워크플로우에서 SAM/BAM/CRAM 정렬 파일을 다루는 핵심 도구인 SAMtools의 포괄적인 명령어 치트 시트입니다. 파일 변환 및 정렬(view, sort, index, merge, collate), 필터링 및 추출(영역 선택, -f/-F FLAG 기반 필터링, -q MAPQ 필터링, fastq/fasta 추출, 리드 그룹 관리), 통계 및 품질 관리(flagstat, idxstats, stats, depth, coverage, flags) 등 25개 이상의 명령어를 카테고리별로 정리했습니다.
변이 탐지 관련 항목으로 BCFtools 파이프라인과 연동하는 mpileup, 합의 서열 생성, calmd를 통한 MD/NM 태그 재계산을 다룹니다. 유틸리티 명령어에는 collate, fixmate, sort, markdup를 스트리밍 방식으로 연결하는 완전한 중복 제거 파이프라인이 포함됩니다. faidx를 이용한 FASTA 인덱싱, dict를 이용한 시퀀스 딕셔너리 생성, 터미널 기반 정렬 뷰어 tview도 실전 예제와 함께 문서화되어 있습니다.
각 항목은 멀티스레드 처리(-@ threads), 메모리 할당(-m), BED 파일 영역 필터링(-L), 출력 형식 선택(-b BAM, -C CRAM), 파이프 워크플로우 등 자주 사용하는 플래그를 포함한 실제 명령줄 예제를 제공합니다. 전체 게놈 시퀀싱 분석을 위한 BWA-MEM부터 변이 탐지까지의 완전한 파이프라인 예제가 모든 명령어를 하나로 연결해 줍니다. 모든 콘텐츠는 브라우저에서 로컬로 실행되며 서버로 데이터가 전송되지 않습니다.
주요 기능
- FLAG(-f/-F) 및 MAPQ(-q) 필터링을 포함한 SAM/BAM/CRAM 형식 변환 명령어
- 좌표/이름 기준 정렬, BAI/CSI/CRAI 인덱싱, 멀티스레드 옵션을 지원하는 다중 파일 병합
- 스트리밍 구문으로 연결하는 완전한 중복 제거 파이프라인: collate, fixmate -m, sort, markdup
- flagstat, idxstats, stats, depth, coverage를 통한 정렬 통계 및 JSON/그래프 출력
- BCFtools 변이 탐지 및 합의 서열 생성을 위한 위치별 pileup(mpileup)
- Paired-end 리드 처리 및 비매핑 리드 필터링을 지원하는 BAM에서 FASTQ/FASTA 추출
- FASTA 인덱싱(faidx), 시퀀스 딕셔너리(dict), 리드 그룹 관리(addreplacerg, split)
- 참조 게놈 인덱싱부터 중복 제거 및 QC까지 전체 BWA-MEM + SAMtools WGS 파이프라인
자주 묻는 질문
SAMtools란 무엇이며 어떤 파일 형식을 다루나요?
SAMtools는 SAM(Sequence Alignment/Map), BAM(압축 바이너리 SAM), CRAM(참조 기반 압축) 형식 파일을 읽고 쓰고 편집하고 인덱싱하는 명령줄 도구 모음입니다. 형식 변환부터 통계, 변이 탐지 전처리까지 거의 모든 NGS 생물정보학 파이프라인의 핵심 구성요소입니다.
samtools view에서 FLAG 값으로 리드를 필터링하는 방법은?
-f는 특정 FLAG 비트가 설정된 리드를 포함하고, -F는 제외합니다. 예를 들어 -F 0x4는 비매핑 리드를 제외하고, -f 0x2는 properly paired 리드만 유지하며, -F 0x900은 secondary 및 supplementary 정렬을 제거합니다. 주요 FLAG 값으로 0x4(비매핑), 0x100(secondary), 0x400(PCR 중복), 0x800(supplementary)이 있습니다.
SAMtools로 중복을 제거하는 올바른 파이프라인은 무엇인가요?
권장 스트리밍 파이프라인은 samtools collate -O | samtools fixmate -m - - | samtools sort - | samtools markdup - dedup.bam입니다. collate는 이름별로 리드를 그룹화하고, fixmate는 mate score 태그(-m)를 추가하며, sort는 좌표 순으로 재정렬하고, markdup는 중복을 식별하고 선택적으로 제거(-r 플래그)합니다.
BAM 파일에서 정렬 통계를 얻으려면 어떻게 하나요?
samtools flagstat으로 빠른 FLAG 기반 요약(매핑률%, properly paired%, 중복수)을 얻습니다. samtools idxstats로 염색체별 리드 수를 확인합니다. samtools stats로 오류율, 삽입 크기 분포, 품질 점수 등 포괄적 지표를 생성하며, plot-bamstats로 시각화할 수 있습니다.
게놈 영역별 커버리지 깊이를 계산하는 방법은?
samtools depth로 위치별 커버리지를 확인합니다(-a로 깊이 0인 위치 포함, -d 0으로 최대 깊이 제한 해제). samtools coverage로 염색체별 평균 깊이, 커버리지 범위 백분율, 평균 매핑 품질 등 요약 통계를 얻습니다. 두 명령 모두 BED 파일 영역 필터링을 지원합니다.
BAM 파일에서 FASTQ 리드를 추출하려면 어떻게 하나요?
Paired-end 추출은 samtools fastq -1 R1.fq.gz -2 R2.fq.gz를 사용합니다. 최적의 결과를 위해 먼저 BAM을 이름 정렬(samtools sort -n)하세요. 비매핑 리드만 추출하려면 samtools view -b -f 0x4를 samtools fastq로 파이프합니다. Single-end나 FASTA 출력은 samtools fasta를 사용합니다.
BAI와 CSI 인덱스의 차이점은 무엇인가요?
BAI는 염색체 크기가 2^29(약 512Mb) 이하인 BAM 파일의 표준 인덱스 형식입니다. CSI(Coordinate Sorted Index)는 더 큰 염색체를 지원하며 비표준 게놈에 필요합니다. BAI는 samtools index로, CSI는 samtools index -c로 생성합니다. CRAM 파일은 .crai 인덱스를 사용합니다.
BWA와 SAMtools를 이용한 전체 WGS 분석 파이프라인은 어떻게 구성하나요?
먼저 bwa index, samtools faidx, samtools dict로 참조 게놈을 인덱싱합니다. 그다음 bwa mem을 samtools sort로 파이프하여 정렬합니다. 정렬된 BAM을 인덱싱하고, 중복 제거 파이프라인(collate, fixmate, sort, markdup)을 실행한 뒤 다시 인덱싱하고, flagstat과 stats로 검증합니다. 레퍼런스에 스레드 및 리드 그룹 매개변수를 포함한 전체 파이프라인이 수록되어 있습니다.