SAM/BAM处理软件的用法

继前文:
https://www.jianshu.com/p/49569e3e56db?v=1667952653813

一、samtools

samtools是一个用于操作sam和bam文件的工具合集。

(1)安装

网站地址:
https://sourceforge.net/projects/samtools/files/samtools/
下载需要的版本,我选择下载最新版。



复制的链接是:
https://sourceforge.net/projects/samtools/files/samtools/1.16/samtools-1.16.1.tar.bz2/download
通常下载后得到的是一个download文件,这时候将download删掉就好了,即https://sourceforge.net/projects/samtools/files/samtools/1.16/samtools-1.16.1.tar.bz2
下载命令如下:

wget https://sourceforge.net/projects/samtools/files/samtools/1.16/samtools-1.16.1.tar.bz2
注意这里是bz格式的压缩文件
tar jxvf samtools-1.16.1.tar.bz2
cd samtools-1.16.1

注意这里的configure文件。
然后再输入命令:

./configure --prefix=~/samtools-1.16.1

出现错误:



这里应该用绝对路径,而我用的是相对路径。
于是输入:

pwd 显示绝对路径
./configure --prefix=/home/ylx/Biosofts/samtools-1.16.1

出现错误:



输入:

sudo apt install build-essential
sudo apt install gcc

出现错误:



输入:

apt-get install libncurses5-dev

出现错误:



输入:

apt install zlib1g

出现错误:



输入:

apt install libbz2-dev

出现错误:



输入:

apt install libbz2-dev

出现警告:



输入:

apt-get install libcurl4-openssl-dev

出现警告:



输入:

apt-get install apache2
apt-get install libssl-dev

然后再输入:

make 进行源代码编译
make install 源代码编译后进行安装
./samtools --help  检验是否安装成功
vi ../.bashrc
export PATH=~/samtools-1.16.1:$PATH 将这一条命令添加到.bashrc文件的末尾
source ../.bashrc
cd ~
samtools --help检验环境是否添加成功

(2)用法

1.为参考基因组建立索引,生成了prefix.fai文件
命令如下:

samtools faidx GCA_000817325.1_ASM81732
生成GCA_000817325.1_ASM81732v1_genomic.fna.fai文件
faidx :对fasta文件建立索引,生成的索引文件以.fai后缀结尾。该命令也能依据索引文件快速提取fasta文件中的某一条(子)序列

2.SAM格式转为BAM格式
命令如下:

samtools view -bhS -t GCA_000817325.1_ASM81732v1_genomic.fna.fai -o test_7942_bwa.bam test_7942_bwa.sam

生成文件test_7942_bwa.bam。
命令解释:

Usage: samtoolsview [options] <in.bam>|<in.sam> [region1 [...]] 
默认情况下不加region,则是输出所有的region. Options: 
-b output BAM 默认下输出是SAM 格式文件,该参数设置输出BAM 格式
-h print header for the SAM output 默认下输出的sam格式文件不带header,该参数设定输出sam文件时带header 信息
-H print header only (no alignments) 仅仅输出文件的头文件
-S input is SAM 默认下输入是BAM 文件,若是输入是SAM 文件,则最好加该参数,否则有时候会报错。
-u uncompressed BAM output (force -b) 该参数的使用需要有-b参数,能节约时间,但是需要更多磁盘空间。
-c 不输出匹配记录,只输出匹配记录的计数
-L 仅包括和bed文件存在overlap的reads
-X output FLAG in string (samtools-C specific) 
-t FILE list of reference names and lengths (force -S) [null] 使用一个list文件来作为header的输入
-T FILE reference sequence file (force -S) [null] 使用序列fasta文件作为header的输入
-o FILE output file name [stdout] 输出文件的名称
-R FILE list of read groups to be outputted [null] 
-f INT required flag, 0 for unset [0] -F INT filtering flag, 0 for unset [0] Skip alignments with bits present in INT [0] 数字4代表该序列没有比对到参考序列上,数字8代表该序列的mate序列没有比对到参考序列上

3.为bam文件排序
命令如下:

samtools sort test_7942_bwa.bam -o test_7942_bwa.bam.sorted

为bam文件排序,sort只能为bam文件排序,而不能为sam。不同版本samtoolssort命令的-o参数不同。
4.为排序的bam文件建立索引
命令如下:

samtools index test_7942_bwa.bam.sorted

生成test_7942_bwa.bam.sorted.bai文件。
5.统计比对结果

samtools depth test_7942_bwa.bam.sorted > depth.txt
less depth.txt
samtools depth测试参考基因组每个位点或一段区域的测序深度(不是常说的平均测序深度)并输出到标准输出。输入的bam文件必须先做samtools index。

然后再执行命令:

samtools flagstat test_7942_bwa.bam.sorted
给出BAM文件的比对结果,并输出比对统计结果。除了-@参数指定线程,没有其他的参数。

结果:



结果解读:

200126 + 0 in total (QC-passed reads + QC-failed reads) :总共的reads数
0 + 0 secondary
126 + 0 supplementary
0 + 0 duplicates
198223 + 0 mapped (99.05% : N/A) :总体上reads的匹配率
200000 + 0 paired in sequencing :有多少reads是属于paired reads
100000 + 0 read1 :reads1中的reads数
100000 + 0 read2 :reads2中的reads数
195878 + 0 properly paired (97.94% : N/A) :完美匹配的reads数和比例:比对到同一条参考序列,并且两条reads之间的距离符合设置的阈值
197918 + 0 with itself and mate mapped :paired reads中两条都比对到参考序列上的reads数
179 + 0 singletons (0.09% : N/A) :单独一条匹配到参考序列上的reads数,和上一个相加,则是总的匹配上的reads数
2 + 0 with mate mapped to a different chr :paired reads中两条分别比对到两条不同的参考序列的reads数
2 + 0 with mate mapped to a different chr (mapQ>=5) :同上一个,只是其中比对质量>=5的reads的数量

6.查看比对结果

samtools tview test_7942_bwa.bam.sorted GCA_000817325.1_ASM81732v1_genomic.fna
tview能直观的显示出reads比对基因组的情况,和基因组浏览器有点类似。可视化一般用IGV比较好。
使用H(左)J(上)K(下)L(右)移动显示界面。大写字母移动快,小写字母移动慢。使用空格建向左快速移动(和 L 类似),使用Backspace键向左快速移动(和 H 类似)。
Ctrl+H 向左移动1kb碱基距离; Ctrl+L 向右移动1kb碱基距离。
可以用颜色标注比对质量,碱基质量,核苷酸等。30~40的碱基质量或比对质量使用白色表示。
20~30黄色;10~20绿色;0~10蓝色。
使用点号切换显示碱基和点号;使用r切换显示read name等
还有很多其它的使用说明,具体按 ? 键来查看。

输入g,会出现如图Goto:,然后再输入染色体名称和想查看序列的位置。


7.将BAM格式文件转为BCF文件

samtools mpileup -f GCA_000817325.1_ASM81732v1_genomic.fna test_7942_bwa.bam.sorted > bcf.txt
less bcf.txt

结果:


samtools mpileup -gf GCA_000817325.1_ASM81732v1_genomic.fna test_7942_bwa.bam.sorted > test_PCC7942_bwa.bcf
less test_PCC7942_bwa.bcf

生成的test_PCC7942_bwa.bcf是一个二进制文件。
mpileup,以前为pileup也是samtools非常重要的命令。该命令用于生成bcf文件,再使用bcftools进行SNP和Indel的分析。bcftools是samtool中附带的软件,在samtools的安装文件夹中可以找到。
最常用的参数有2:
-f 输入有索引文件的fasta参考序列。
-g 输出到bcf格式。
mpileup不使用-u或-g参数时,则不生成二进制的bcf文件,而生成一个文本文件(输出到标准输出)。该文本文件统计了参考序列中每个碱基位点的比对情况;该文件每一行代表了参考序列中某一个碱基位点的比对结果。
txt文件解读:







一共有六列,分别是参考序列名,位置,参考碱基,比对上的reads数,比对情况,比对上的碱基的质量。其中第五列比较复杂,详细解读第五列。

.    :代表与参考序列正链匹配。
,    :代表与参考序列负链匹配。
A/T/C/G/N代表在正链上的不匹配。
a/t/c/g/n代表在负链上的不匹配。
*    :代表模糊碱基。
^   :代表匹配的碱基是一个read的开始。后面紧跟的ascii码减去33代表比对质量。这两个符号修饰的是后面的碱基,其后紧跟的碱基(.,ATCGatcgNn)代表该read的第一个碱基。
$    :代表一个read的结束,该符号修饰的是其前面的碱基。
正则式'+[0-9]+[ACGTNacgtn]+'代表在该位点后插入的碱基.比如上例中在scaffold_1的2847后插入了9个长度的碱基acggtgaag。表明此处极可能是indel。
正则式’-[0-9]+[ACGTNacgtn]+’代表在该位点后缺失的碱基。

详细参考文章:
https://www.jianshu.com/p/6b7a442d293f

二、picard

后续更新。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容