摩熵化学
数据库官网
小程序
打开微信扫一扫
首页 分子通 化学资讯 化学百科 反应查询 关于我们
请输入关键词

生信工具库重磅!Samtools 从 0 到 1 实战手册!

  • 使用教程
  • 生信分析
  • 生信工具
  • samtools
唯思派 前天 11:00

在高通量测序数据处理流程中,Samtools作为核心工具之一,凭借其高效的格式转换、排序、索引及数据筛选功能,成为基因组学、转录组学等领域的标配工具。本文将从安装、核心功能、实操命令到使用技巧,全面解析Samtools的使用要点。

概述

samtools是一个用于操作sam和bam格式文件的工具合集。其中,bam格式文件是sam文件的二进制格式,占据内存较小且运算速度更快。能够实现二进制查看、格式转换、排序及合并等功能,结合sam格式中的flag、tag等信息,还可以完成比对结果的统计汇总。

同时利用linux中的grep、awk等操作命令,还可以大大扩展samtools的使用范围与功能。sam和bam格式的比对文件主要由bwa、bowtie2、tophat和hisat2等序列比对工具产生,用于记录测序reads在参考基因组上的比对信息。

Samtools专注于处理SAM/BAM格式的测序数据,支持高效操作大规模基因组数据。其核心功能包括:

  • 格式转换:将文本格式的SAM文件转换为二进制BAM格式(减少存储空间),或反向转换用于特定分析。
  • 数据排序与索引:对BAM文件按染色体位置排序,并生成索引文件(.bai),加速数据检索。
  • 数据筛选与统计:根据比对质量(-q)、FLAG值(-f/-F)等条件过滤数据,或通过flagstat快速统计比对结果。
  • 头信息编辑与区域提取:支持修改BAM文件的头信息,或提取特定染色体、基因区域的比对数据。

安装与配置

1. 快速安装(推荐新手)

  • Linux/macOS:通过包管理器或Conda直接安装。  
    • Ubuntu/Debiansudo apt-get install samtools
    • CentOSsudo yum install samtools
    • Condaconda install bioconda::samtool
  • 源码编译

官网地址:https://github.com/samtools/samtools

http://www.htslib.org/download/下载源码后解压,进入目录执行 make 编译,并通过修改 .bash_profile 添加环境变量。

2. 验证安装

在终端输入 samtools --version,若显示版本号则表示安装成功。

samtools常见使用场景

测序文件格式

基因组测序下机数据或从基因组测序网站下载的未比对测序文件通常以fasta格式(包含每条read的序列信息)或fastq格式(包含每条read的序列信息及每个碱基的质量评分)存储。samtools无法直接处理这两种格式,因此需要先使用比对软件(如minimap2、bwa-mem2等)对这些文件进行比对,以生成sam或bam格式文件。sam文件格式是未压缩的,因此可以直接用文本编辑器查看,但其占用的存储空间较大,且由于未压缩,随机访问性能较差。

因此,在实际应用中我们通常使用二进制格式的bam文件。需要说明的是,sam/bam文件不仅可以记录比对后的序列信息,未比对的序列也能由sam/bam文件储存,通过这种方式可以记录每条read的其他信息,例如碱基修饰情况。对ONT下机数据使用guppy或者dorado进行basecalling之后所获得的未比对序列就是记录在bam文件中的。

对基因组比对文件(sam/bam)进行压缩,排序,索引

sam 是文本格式,而 bam 是对应的二进制格式。通过转换为 bam,可以减少存储空间并提高处理效率。以下是使用samtools将sam格式文件转化成bam文件的命令。注意,samtools工具尽量使用-o来指定输出文件,而非使用Linux管道重定向符>,这是由于使用>可能会将系统标准错误也同时输出到文件当中。

samtools的sort功能可以将基因组比对文件中的每一条read按照染色体标号(或者是contig标号)以及位置升序排列。只有排序之后的bam文件才能够进行索引。

对 bam 文件进行索引是为了快速访问特定区域的数据,这对于可视化(比如用 IGV 查看)或快速检索特定区域的比对结果非常有用。

查看相应的基因组比对文件内容

要查看 bam 文件的内容,

可以使用以下命令:

samtools view input.bam:显示 bam 文件的内容。

| less:通过 less 进行分页显示,方便浏览。

这种方式适用于快速查看 bam 文件的整体内容,比如检查文件是否正确。bam文件头信息通常包含比对所用的参考基因组、染色体信息以及其他元数据。

因使用场景过多,在此便不一一展示,感兴趣的小伙伴可自行检索。


常用命令及示例

1. SAM转BAM与排序

1 #转换格式并压缩
2 samtools view -S -b -o output.bam input.sam
3 #对BAM文件按染色体位置排序
4 samtools sort -o sorted.bam unsorted.bam
5 #生成索引文件
6 samtools index sorted.bam
注:排序后的BAM文件才能生成有效索引,否则软件可能报错。


2. 数据筛选与查看操作

过滤低质量比对(保留Mapping Quality > 30): samtools view -q 30 -b input.bam > filtered.bam
查看BAM文件头信息: samtools view -H input.bam
提取特定染色体数据: samtools view input.bam chr1 | less
统计比对信息: samtools flagstat input.bam


3. 其他实用命令

合并BAM文件:samtools merge out.bam file1.bam file2.bam
转换BAM为Fastq:samtools fastq input.bam > output.fastq
索引基因组Fasta文件:samtools faidx reference.fasta


使用技巧与注意事项

1. 参数组合:

使用 -h 保留SAM文件的头信息,-b 强制输出BAM格式。
通过 -o 指定输出文件,避免管道符导致错误。


2. 性能优化:

优先处理排序后的BAM文件,索引可加速IGV等工具的数据加载。
大文件操作时,可结合 & 符号后台运行命令。


3. 兼容性:

Samtools与BWA、Bedtools等工具无缝衔接,例如 bwa mem 的输出可直接用 samtools view 处理。


结语

Samtools作为生信分析的基石工具,其高效性与灵活性使其成为处理测序数据的首选。掌握其核心命令与使用逻辑,可显著提升基因组数据分析效率。若想了解更多,可参考官方文档:http://www.htslib.org/doc/samtools.html

【免责声明】发布内容来源于互联网、业内人士投稿以及微信公众号等公开资源,我们对文中观点持中立态度,文中观点不代表本平台的立场。所有文章仅供读者参考和交流使用。转载的文章版权归原作者所有,如有侵权行为,请及时与我们联系以便删除。

<END>