当前位置 : 主页 > 编程语言 > java >

测序深度的计算,你真的掌握了吗

来源:互联网 收集:自由互联 发布时间:2022-06-23
计算测序深度是数据分析中的一个常规操作,常用的工具有以下几种 1. samtools depth 命令如下 samtools depth input.bam sample.depth 2. samtools mpileup 命令如下 samtools mpileup -A -Q 0 chrY.bam | cut -f1,2,4

计算测序深度是数据分析中的一个常规操作,常用的工具有以下几种

1. samtools depth

命令如下

samtools depth input.bam > sample.depth

2. samtools mpileup

命令如下

samtools mpileup -A -Q 0 chrY.bam | cut -f1,2,4 > sample.depth

3. bdetools genomecov

命令如下

bedtools genomecov -ibam input.bam -d > sample.depth

尽管方法不同,但是输出结果的格式是相同的,示意如下

测序深度的计算,你真的掌握了吗_数据库

第一列是染色体名称,第二列是染色体上的坐标,第三列是对应的测序深度。原本以为计算测序深度就是这么轻松的一件事,但是在比较不同方法的输出结果时,却发现部分区域samtools计算的结果和bedtools的结果对应不上,结果如下

测序深度的计算,你真的掌握了吗_数据库_02

第三列为samtools软件计算出来的结果,第四列为bedtools软件计算出来的结果,可以看到,samtools的结果比bedtools少了很多。

为了确定这段区域真实的测序深度,将bam文件导入IGV软件之中进行查看,对应区域的结果如下

测序深度的计算,你真的掌握了吗_公众号_03

从reads来看,确实应该是10和16条,那么samtools计算出来的结果又是什么, 总不可能是samtools的bug吧,作为一个应用这个广泛的软件,不可能有如此低级的错误。

从结果来看,samtools在计算depth的过程中对reads进行了过滤,那么它过滤的原则是什么呢?通过查看bam文件中第二列的flag我找到了规律,143-150bp的reads有以下10条

测序深度的计算,你真的掌握了吗_数据分析_04

第二列的flag含义如下

0x91 145 PAIRED,REVERSE,READ2
0x163 355 PAIRED,PROPER_PAIR,MREVERSE,READ1,SECONDARY
0x63 99 PAIRED,PROPER_PAIR,MREVERSE,READ1

可以看到,其中有一个SECONDARY比对,对应数字355,这样的reads有4条,去除这4条之后,就是samtools计算的最终结果了。

作为SAM文件的官方操作工具,samtools内置了对flag的过滤, 而bedtools默认没有进行这样的过滤,只是简单统计了该区域比对上的reads数目。

在使用IGV展示测序深度时,可以用igvtools先计算出tdf文件再导入IGV中,这样比直接导入bam文件快很多。在tdf文件中,其测序深度和bedtools软件的计算结果是一致的,也是只统计了read数目,没有做过滤。

·end·


测序深度的计算,你真的掌握了吗_公众号_05

一个只分享干货的

生信众号


上一篇:玩转基因组浏览器之分面操作
下一篇:没有了
网友评论