Samtools 是一套用于操作 SAM (Sequence Alignment/Map)、BAM 和 CRAM 格式文件的工具集。它能够转换格式、排序、合并和索引,还可以快速检索任何区域的读段。
主要命令
1. view
samtools view [options] in.sam|in.bam|in.cram [region...]查看比对文件内容,可转换格式、过滤区域。默认输出为 SAM 格式。
2. tview
samtools tview [-p chr:pos] [-s STR] [-d display] in.sorted.bam [ref.fasta]文本比对查看器,基于 ncurses 库,可用于交互式查看比对结果。
3. quickcheck
samtools quickcheck [options] in.sam|in.bam|in.cram [...]快速检查输入文件是否完整,检查文件头和 EOF 块。
4. checksum
samtools checksum [options] in.sam|in.bam|in.cram生成 BAM 文件的 CRC32 校验和。
5. head
samtools head [options] in.sam|in.bam|in.cram打印文件头和可选的前几个比对记录。
6. index
samtools index [-bc] [-m INT] in.sam.gz|in.bam|in.cram [out.index]为坐标排序的 SAM、BAM 或 CRAM 文件创建索引,用于快速随机访问。
7. sort
samtools sort [-l level] [-m maxMem] [-o out.bam] [-O format] [-n] [-t tag] [-T tmpprefix] [-@ threads] [in.sam|in.bam|in.cram]按左端坐标或读段名称排序比对文件。
8. collate
samtools collate [options] in.sam|in.bam|in.cram [<prefix>]按名称分组读段,比完全排序更快。
9. cram-size
samtools cram-size [options] in.cram显示 CRAM 文件中块内容 ID 和相关数据系列的摘要。
10. idxstats
samtools idxstats in.sam|in.bam|in.cram从索引文件获取统计信息。
11. flagstat
samtools flagstat in.sam|in.bam|in.cram对输入文件进行完整遍历,计算并打印统计信息。
12. flags
samtools flags INT|STR[,...]在文本和数值标志表示之间转换。
13. stats
samtools stats [options] in.sam|in.bam|in.cram [region...]收集 BAM 文件的统计信息。
14. bedcov
samtools bedcov [options] region.bed in1.sam|in1.bam|in1.cram[...]报告 BED 文件中每个基因组区域的总读段碱基数。
15. depth
samtools depth [options] [in1.sam|in1.bam|in1.cram [in2.sam|in2.bam|in2.cram] [...]]计算每个位置或区域的读段深度。
16. ampliconstats
samtools ampliconstats [options] primers.bed in.sam|in.bam|in.cram[...]收集输入比对文件的统计信息。
17. mpileup
samtools mpileup [options] in.bam [in2.bam [in3.bam [...]]]生成文本 pileup 格式,用于 VCF/BCF 输出请使用 bcftools mpileup 命令。
18. consensus
samtools consensus [options] in.bam基于比对记录生成共识序列。
19. reference
samtools reference [options] in.bam基于比对记录生成参考序列。
20. coverage
samtools coverage [options] [in1.sam|in1.bam|in1.cram [in2.sam|in2.bam|in2.cram] [...]]生成染色体覆盖度直方图或表格。
21. merge
samtools merge [-nur1f] [-h inh.sam] [-t tag] [-R reg] [-b list] out.bam in1.bam [in2.bam in3.bam ... inN.bam]合并多个排序的比对文件。
22. split
samtools split [options] merged.sam|merged.bam|merged.cram按读组拆分文件。
23. cat
samtools cat [-b list] [-h header.sam] [-o out.bam] in1.bam in2.bam [ ... ]连接 BAM 或 CRAM 文件。
24. import
samtools import [options] in.fastq [ ... ]将 FASTQ 文件转换为未对齐的 SAM、BAM 或 CRAM 格式。
25. fastq/a
samtools fastq [options] in.bamsamtools fasta [options] in.bam将 BAM 或 CRAM 转换为 FASTQ 或 FASTA 格式。
26. faidx
samtools faidx <ref.fasta> [region1 [...]]索引 FASTA 格式参考序列或从索引的参考序列中提取子序列。
27. fqidx
samtools fqidx <ref.fastq> [region1 [...]]索引 FASTQ 格式参考序列或从索引的参考序列中提取子序列。
28. dict
samtools dict ref.fasta|ref.fasta.gz从 FASTA 文件创建序列字典文件。
29. calmd
samtools calmd [-Eeubr] [-C capQcoef] aln.bam ref.fasta生成 MD 标签。
30. fixmate
samtools fixmate [-rpcm] [-O format] in.nameSrt.bam out.bam填充 mate 坐标、ISIZE 和 mate 相关标志。
31. markdup
samtools markdup [-l length] [-r] [-s] [-T] [-S] in.algsort.bam out.bam标记坐标排序文件中的重复比对。
32. addreplacerg
samtools addreplacerg [-r rg-line | -R rg-ID] [-m mode] [-l level] [-o out.bam] in.bam添加或替换文件中的读组标签。
33. reheader
samtools reheader [-iP] in.header.sam in.bam用新的头替换 BAM 文件的头。
34. targetcut
samtools targetcut [-Q minBaseQ] [-i inPenalty] [-0 em0] [-1 em1] [-2 em2] [-f ref] in.bam通过检查读段深度识别目标区域。
35. phase
samtools phase [-AF] [-k len] [-b prefix] [-q minLOD] [-Q minBaseQ] in.bam调用和分型杂合 SNP。
36. depad
samtools depad [-SsCu1] [-T ref.fa] [-o output] in.bam将对齐到填充参考的 BAM 转换为对齐到去填充参考的 BAM。
37. ampliconclip
samtools ampliconclip [-o out.file] [-f stat.file] [--soft-clip] [--hard-clip] [--both-ends] [--strand] [--clipped] [--fail] [--no-PG] -b bed.file in.file根据 BED 文件中的数据剪切 SAM 兼容文件中的读段。
38. samples
samtools samples [-o out.file] [-i] [-T TAG] [-f refs.fasta] [-F refs_list] [-X]打印比对文件中的样本信息。
39. reset
samtools reset [-o FILE] [-x/--remove-tag tag_list] [--keep-tag tag_list] [--reject-PG pgid] [--no-RG] [--no-PG] [...]从记录中移除比对信息,生成未对齐的 SAM、BAM 或 CRAM 文件。
常用选项
全局命令选项
--input-fmt:指定输入格式--input-fmt-option:指定输入格式选项--output-fmt:指定输出格式--output-fmt-option:指定输出格式选项--reference:指定参考序列文件--write-index:自动创建索引--verbosity:设置详细级别
常见格式选项
level=INT:压缩级别(1-9)nthreads=INT:指定线程数filter=STRING:应用过滤器表达式reference=fasta_file:指定 FASTA 参考文件version=major.minor:指定 CRAM 版本fast, normal, small, archive:设置 CRAM 压缩配置文件
标志位说明
| 标志位 | 值 | 说明 |
|---|---|---|
| PAIRED | 0x1 | 成对测序技术 |
| PROPER_PAIR | 0x2 | 按比对器要求正确配对 |
| UNMAP | 0x4 | 比对未映射 |
| MUNMAP | 0x8 | 模板中下一个片段未映射 |
| REVERSE | 0x10 | 序列被反向互补 |
| MREVERSE | 0x20 | 模板中下一个片段序列被反向互补 |
| READ1 | 0x40 | 模板中第一个片段 |
| READ2 | 0x80 | 模板中最后一个片段 |
| SECONDARY | 0x100 | 次级比对 |
| QCFAIL | 0x200 | 未通过质量控制 |
| DUP | 0x400 | PCR 或光学重复 |
| SUPPLEMENTARY | 0x800 | 补充比对 |
环境变量
HTS_PATH:HTSlib 插件搜索路径REF_PATH:参考序列搜索路径REF_CACHE:本地参考序列缓存目录
示例用法
基本转换
# SAM转BAMsamtools view -b aln.sam > aln.bam
# BAM转CRAMsamtools view -C -T ref.fa aln.bam > aln.cram索引和排序
# 创建索引samtools index aln.bam
# 排序samtools sort -o sorted.bam aln.bam统计分析
# 查看比对统计samtools flagstat aln.bam
# 查看覆盖度samtools depth aln.bam
# 查看索引统计samtools idxstats aln.bam数据过滤
# 只显示特定区域samtools view aln.bam chr1:1000000-2000000
# 过滤低质量读段samtools view -q 20 aln.bam参考资料
- Samtools 网站: http://www.htslib.org/
- 文件格式规范: http://samtools.github.io/hts-specs
- 最新源码: https://github.com/samtools/samtools
- HTSlib 源码: https://github.com/samtools/htslib