以下是对 Samtools 常用命令及各参数的详细解释,整理为 Markdown 格式:
Samtools 常用命令总结
Samtools 是一个用于处理和分析 SAM(Sequence Alignment/Map)和 BAM(Binary Alignment/Map)格式文件的工具集。它提供了多种命令用于序列比对、格式转换、索引创建和统计分析等。
- 软件手册:Samtools 手册
常用操作
1. 将 SAM 文件转换为 BAM 文件
说明: 将 SAM 文件转换为 BAM 文件,以节省存储空间,同时许多下游分析工具使用 BAM 格式。
samtools view -bS -o alignments.bam input.sam
view
:将文件从 SAM 格式转换为 BAM 格式。-b
:输出 BAM 格式(binary)。-S
:指定输入为 SAM 格式(如果是旧版 SAMtools,1.3.0 之后可省略)。-o
:指定输出文件名为alignments.bam
。
2. 将 BAM 文件转换为 SAM 文件,同时包含 header 信息
说明: 提取 BAM 文件内容并保留头部信息,以 alignments.sam
为输出文件名。
samtools view -h -o alignments.sam alignments.bam
-h
:包含头部信息(header)。-o
:指定输出文件名为alignments.sam
。
3. 仅获取 BAM 文件中的 header 信息
说明: 只提取 BAM 文件中的头部信息。
samtools view -H alignments.bam
-H
:仅输出头部信息(header lines)。
4. 对 BAM 文件进行排序
说明: 对 BAM 文件进行排序,便于下游分析。
samtools sort alignments.bam -o alignments.sorted.bam
samtools sort -n alignments.bam -o alignments.name.sorted.bam
sort
:对 BAM 文件进行排序。-o
:指定输出文件名为alignments.sorted.bam
。-n
:基于 read 名进行排序(而非染色体位置)。
5. 为排序的 BAM 文件建立索引
说明: 对排序后的 BAM 文件建立索引,索引文件用于快速检索特定区域。
samtools index alignments.sorted.bam
index
:为 BAM 文件生成索引,输出文件为.bam.bai
格式。
6. 列出每条染色体上的 reads 数量
说明: 列出回帖到每条染色体的 reads 数目。
samtools idxstats alignments.sorted.bam > alignments.sorted.bam.stat
idxstats
:显示每条染色体的比对统计信息。- 输出结果:
- 第一列:染色体名称。
- 第二列:染色体长度。
- 第三列:mapped reads 数量。
- 第四列:unmapped reads 数量。
7. 基于比对质量筛选比对子集
说明: 筛选出比对质量高于 30 的 reads 子集,存储为 BAM 格式。
samtools view -b -q 30 -o alignments_MQmin30.bam alignments.bam
-q
:设置比对质量过滤阈值为 30,保留比对质量大于 30 的 reads。-b
:输出 BAM 格式。
8. 基于 SAM 标记字段的值筛选比对子集
说明: 根据标记值(flag)筛选或过滤 reads。标记值描述了 read 的比对情况,如是否比对成功、是否正确配对等。
# 去除没有比对的 reads
samtools view -b -F 4 -o alignments.mapped_only.bam alignments.bam
# 保留正确配对的 reads
samtools view -b -f 2 -o properly_paired_reads.bam alignments.bam
-F
:过滤掉具有指定标记的 reads(如-F 4
过滤掉未比对的 reads)。-f
:保留具有指定标记的 reads(如-f 2
保留正确配对的 reads)。
标记值示例:
- 0x1(PAIRED):双端测序。
- 0x2(PROPER_PAIR):正确配对。
- 0x4(UNMAP):未比对的片段。
- 0x8(MUNMAP):下一个片段未比对。
9. 基于标记字段获取 reads 的比对统计信息
说明: 生成比对统计报告,显示 QC 通过和未通过的 reads 数。
samtools flagstat alignments.bam
flagstat
:输出包含 QC 通过与未通过的 reads 的详细统计信息。
10. 提取 BAM 文件中比对到特定 contig 或区域的 reads
说明: 提取比对到特定 contig 或基因组区域的 reads。
# 提取比对到 contig18 的 reads
samtools view accepted_hits.bam.sort.bam Contig18 > Contig18.sam
# 提取比对到 contig18 上 10k-20k 区域的 reads
samtools view accepted_hits.bam.sort.bam Contig18:10000-20000 > Contig18_10-20k.sam
samtools view -b accepted_hits.bam.sort.bam Contig18:10000-20000 > Contig18_10-20k.bam
11. 合并多个 BAM 文件
说明: 将多个已排序的 BAM 文件合并为一个文件。
samtools merge merge.bam HS.sort.bam CK.sort.bam KO.sort.bam
merge
:合并多个已排序的 BAM 文件。
12. 统计测序深度
说明: 统计每个碱基位点的测序深度并输出到文件。
samtools depth merge.bam > depth
主要参数:
-r
:指定染色体号(region)。-q
:要求测序碱基的最低质量值。-Q
:要求比对的最低质量值。
参考
这个总结包括了 Samtools 的常见命令和每个参数的解释,有助于快速上手使用 Samtools 进行数据处理。