以下是对 samtools 各命令的详细中文解释及其拓展应用场景,结合功能分类和实际生物信息学分析需求整理:
一、索引命令(Indexing)
dict
功能:创建参考基因组的序列字典文件(.dict),记录染色体名称、长度等信息。
应用:为GATK等变异检测工具提供参考基因组元数据,确保染色体命名一致性。
示例:
samtools dict ref.fa -o ref.dict
faidx
功能:为FASTA文件建立索引(.fai),支持快速提取特定序列区域。
应用:配合 samtools faidx 提取子序列,或为BWA等比对工具提供索引。
示例:
samtools faidx ref.fa # 生成ref.fa.fai
samtools faidx ref.fa chr1:1000-2000 > region.fa
index
功能:为排序后的BAM文件创建索引(.bai),实现快速区域查询。
应用:samtools view 或IGV查看特定基因组区域时必备。
示例:
samtools index sorted.bam # 生成sorted.bam.bai
二、编辑命令(Editing)
calmd
功能:重新计算MD(Mismatch)和NM(Number of Mismatches)标签,标记与参考基因组不一致的碱基。
应用:提高变异检测准确性(如GATK预处理)。
示例:
samtools calmd -b -@ 4 aln.bam ref.fa > aln.calmd.bam
fixmate
功能:修复双端测序数据的配对信息(如插入片段长度、方向)。
应用:处理比对错误导致的配对信息丢失,为后续标记重复序列做准备。
示例:
samtools fixmate -@ 4 in.bam out.bam
reheader
功能:替换BAM文件的头信息(Header)。
应用:合并样本时统一头信息,或修正错误的测序平台信息。
示例:
samtools reheader new_header.sam in.bam > out.bam
markdup
功能:标记PCR重复序列(不删除),通过FLAG字段标注。
应用:变异检测前减少假阳性,保留原始数据。
示例:
samtools markdup -@ 4 in.bam out.bam
addreplacerg
功能:添加或替换Read Group(RG)标签,包含样本、文库等信息。
应用:多样本分析时区分来源,为GATK等工具提供必要元数据。
示例:
samtools addreplacerg -r "ID:Sample1" -r "SM:Normal" -o out.bam
in.bam
三、文件操作命令(File Operations)
collate
功能:按Read名称打乱并分组排序,优化后续处理效率。
应用:在名称排序的BAM文件上运行 fixmate 或 markdup。
示例**:
samtools collate -o collated.bam in.bam
merge
功能:合并多个已排序的BAM文件(需同参考基因组)。
应用:合并不同批次或技术重复的样本数据。
示例:
samtools merge merged.bam sample1.bam sample2.bam
sort
功能:按染色体坐标或Read名称排序(-n参数)。
应用:排序是索引、区域查询和变异检测的前提步骤。
示例:
samtools sort -@ 4 -o sorted.bam unsorted.bam
mpileup
功能:生成基因组每个位点的碱基覆盖信息(Pileup)。
应用:变异检测(SNP/Indel)的基础,可输出BCF/VCF格式。
示例:
samtools mpileup -f ref.fa -r chr1:1-1000 in.bam > out.pileup
fastq/fasta
功能:将BAM转换为FASTQ或FASTA格式。
应用:重新比对或序列提取(如提取未比对Reads)。
示例:
samtools fastq -f 4 unmapped.bam > unmapped.fq # 提取未比对Reads
四、统计命令(Statistics)
depth
功能:计算每个位点的测序深度。
应用:评估覆盖均匀性,识别低覆盖区域。
示例:
samtools depth -r chr1:1000-2000 in.bam > depth.txt
flagstat
功能:统计BAM文件的比对状态(如比对率、配对率)。
应用:质控报告核心指标,快速评估数据质量。
示例:
samtools flagstat in.bam > flagstat.txt
idxstats
功能:统计每条染色体的比对Reads数量。
应用:检测污染(如线粒体比例过高)或性染色体剂量异常
。
示例:
samtools idxstats in.bam > idxstats.txt
bedcov
功能:计算BED文件中每个区域的覆盖深度总和。
应用:靶向测序中目标区域覆盖统计(如外显子捕获)。
示例:
samtools bedcov targets.bed in.bam > cov_sum.txt
五、查看命令(Viewing)
view
功能:核心命令,支持SAM/BAM格式转换、区域提取、过滤。
应用:
格式转换:samtools view -bS in.sam > out.bam
区域提取:samtools view in.bam chr1:1000-2000
过滤:samtools view -b -q 30 -f 2 in.bam > high_qual.bam(高质量且正确配对的Reads)
tview
功能:终端可视化比对结果(交互式查看)。
应用:快速验证特定位点的比对情况(如疑似突变位点)。
示例:
samtools tview -p chr1:1000 in.bam ref.fa
flags
功能:解释FLAG数值的含义(如0x4=未比对)。
应用:辅助设计过滤条件(如 -f 2 -F 3844 过滤出唯一比对且正确配对的Reads)。
示例:
samtools flags 77 # 解释FLAG=77的含义
六、拓展使用场景总结
场景 推荐命令组合 说明
变异检测预处理 sort → markdup → index → calmd 标记重复、修复碱基标签
多样本合并 reheader → merge 统一头信息后合并文件
快速质控 flagstat + idxstats + depth 综合评估比对质量与覆盖度
靶向区域分析 view -L targets.bed → bedcov 提取目标区域并统计覆盖
数据转换与提取 view -b -f 4 → fastq 提取未比对Reads并转为FASTQ
交互式验证 tview + mpileup 可视化查看疑似突变位点