Samtools于2009年由 Li Heng 发表在期刊BIOINFORMATICS上,被广泛地应用并整合在二代测序分析流程中,至今已超过2w+的引用率!

本文介绍Linux系统下通过编译安装samtools的操作方法,同时对samtools的功能和使用技巧进行介绍,Samtools是生物信息学中广泛使用的一款软件,主要用于处理基于高通量测序数据。

image-20240125152116666
image-20240125152116666

安装方法

首先,在官网下载最新版的安装包,以下是官网地址,如果你无法访问Github,可以在下面提供第一条链接进行下载(速度更快)。

https://cloud.filll.cn/samtools-1.19.2.tar.bz2
https://github.com/samtools/samtools/releases/
image-20240125153135782
image-20240125153135782

下载完成后,解压并进入samtools文件夹

tar -jxvf samtools-1.19.2.tar.bz2
cd samtools-1.19.2

如果你是管理员账户,想让服务器其他用户也能使用,可以直接运行以下命令:

./configure

但是,如果你只是普通用户,没有权限操作系统目录,则在后面加上prefix参数设置安装路径,例如设置到自己的家目录下:

./configure --prefix=~/software/samtools-1.19.2/

然后就可以开始make编译安装了

make
make install # 普通用户执行
sudo make install # 管理员用户执行

安装完成后,可以进行检查是否安装成功,如果出现以下提示,表示安装成功。

which samtools
/usr/local/bin/samtools

(STAR) [xx @ xx  15:32:01 ~]
$ samtools

Program: samtools (Tools for alignments in the SAM format)
Version: 1.19.2 (using htslib 1.19.1)

Usage:   samtools <command> [options]

Commands:
  -- Indexing
     dict           create a sequence dictionary file
     faidx          index/extract FASTA
     fqidx          index/extract FASTQ
     index          index alignment

配置环境变量,这样下次就能直接调用了。

export PATH=/yourdir:$PATH >> ~/.bashrc

主要功能

  1. 查看和转换格式:Samtools可以将SAM格式转换为二进制的BAM格式,这样做可以减少文件大小,提高数据处理效率。
  2. 排序和索引:对于BAM文件,Samtools可以按照染色体位置进行排序,并为其创建索引。
  3. 数据提取和查询:利用Samtools,用户可以根据需要提取BAM文件中的特定区域或者特定特征的数据。
  4. 统计分析:Samtools能够提供关于测序数据的统计信息,如覆盖度、碱基质量分布等。
  5. 变异检测:Samtools还包括用于变异检测(如单核苷酸多态性,SNPs)的工具。
  6. 错误校正:它还能帮助识别和校正测序错误。

常用命令与使用方法

对fasta文件建立索引

samtools faidx ref.fasta

通常用于为参考基因组建立索引,以上命令可以建立一个以.fai后缀结尾索引文件,非常好用。

对BAM文件进行排序

samtools sort [-T out.prefix][-@ threads][-m maxMem][-o out.sorted.bam][in.bam]

sort命令也很强大,可以对bam文件中的序列进行排序,默认下是按序列在fasta文件中的顺序(即header)和序列从左往右的位点排序。

  • @ 用于设置线程数
  • m 用于设置最大内存资源量

合并多个已排序的BAM文件

samtools merge [out.bam][in1.bam][in2.bam]

这个命令能够将多个bam文件合并成一个文件,如果想合并指定染色体,只需要添加R参数即可,例如“-R chr7”,支持批量合并,可以用*代替目录下所有文件。

samtools merge [-nur1f] [-h inh.sam] [-R reg] [-b <list>] <out.bam> <in1.bam> [<in2.bam><in3.bam>…<inN.bam]
参数:
    -l 指定压缩等级;
    -b FILE 输入文件列表,一个文件一行;
    -f 强制覆盖同名输出文件;
    -h FILE 指定FILE内的’@’头复制到输出bam文件中并替换输出文件的文件头。否则,输出文件的文件头将从第一个输入文件复制过来;
    -n 设定输入比对文件是以read名进行排序的而不是以染色体坐标排序的;
    -R STRING 合并输入文件的指定区域;
    -r 使RG标签添加到每一个比对文件上,标签值来自文件名;
    -u 输出的bam文件不压缩;
    -c 当多个输入文件包含相同的@RG头ID时,只保留第一个到合并后输出的文件。当合并多个相同样本的不同文件时,非常有用。
    -p 与-c参数类似,对于要合并的每一个文件中的@PG ID只保留第一个文件中的@PG。

今天的分享就到这里,下次分享bcftools的使用方法和技巧。

参考资料
https://github.com/samtools/samtools
https://zhuanlan.zhihu.com/p/658663764

本文由 mdnice 多平台发布

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐