htseq-count中怎么实现定量分析操作

发布时间:2021-08-12 16:55:11 作者:Leah
来源:亿速云 阅读:187

htseq-count中怎么实现定量分析操作,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

和featurecounts一样,htseq-count也是一款进行raw count定量的软件。该软件采用python语言进行开发,集成在HTseq这个包中。

对于python的包,通过pip可以方便的进行安装,代码如下

pip install HTSeq

HTSeq提供了许多处理NGS数据的功能,htseq-count只是其中进行定量分析的一个模块。

htseq-count的设计思想和featurecounts非常类似,也包含了feature和meta-features两个概念。对于转录组数据而言,feature指的是exon, 而meta-feature可以是gene, 也可以是transcript

进行定量分析需要以下两个文件

  1. 比对的BAM/SAM文件

  2. 基因组的GTF文件


对于双端数据,要求输入sort之后的BAM文件。

由于序列读长的限制和基因组的同源性,一条reads可能比对到多个基因上,而且基因之间也存在overlap, 在对这些特殊情况进行处理时,htseq-count内置了以下3种模式

  1. union

  2. intersection-strict

  3. intersection-nonempty


通过--mode参数指定某种模式,默认值为union。这3种模式在判断一条reads是否属于某个feature时,有不同的判别标准,示意图如下

htseq-count中怎么实现定量分析操作

在BAM文件,包含了比对上的reads和没有比对上的reads, 只有比对上的reads 会用来计数,htseq-count默认会根据mapping的质量值对BAM文件进行过滤,默认值为10, 意味着只有mapping quality > 10的reads才会用来计数,当然可以通过-a参数来修改这个阈值。

能够明确reads属于一个featurer时,比如示意图种的第一种情况,reads完全是gene_A的一个片段,该feature的计数就加1;能明确reads不属于一个feature时,称之为no_feature, 比如示意图种的第二种情况,reads的一部分比对上了gene_A, 在intersection_strict模式下,判定该reads不属于gene_A, 就是no_feature。

当不明确一条reads是否属于某个feature时,通常是由于reads在两个gene的overlap区,比如示意图中的第六和第七种情况,这样的reads被标记为ambigous。

当一条reads比对上了两个feature时,会被标记为alignment_not_unique。

在统计属于某个基因的reads数时,需要重点关注对 ambiguous 和 alignment_not_unique 的reads的处理, 通过--nonunique参数来指定,取值有以下两种

  1. none

  2. all


默认值为none时,这两种reads被忽略掉,不进行任何的计数;取值为all时,对应的所有feature的计数都会加1。

除了--mode--nonunique两个参数外,还需要关注--stranded参数,这个参数指定文库的类型,默认值为yes, 代表文库为链特异性文库,no代表为非链特异性文库。对于非链特异性文库文库,在判断一条reads是否属于一个基因时,只需要关注比对位置,而链特异性文库还需要关注比对的正负链和基因的正负链是否一致,只有一致时,才会计数。

理解了以上3个参数,就能够正确的使用htseq-count了。对于非链特异性的数据,常规用法如下

htseq-count \
-f bam \
-r name \
-s no \
-a 10 \
-t exon \
-i gene_id \
-m union \
--nonunique=none \
-o htseq.count \
align.sorted.bam \
hg19.gtf

在运行速度上,featurecounts比htseq-count快很多倍,而且feature-count不仅支持基因/转录本的定量,也支持exon等单个feature的定量。所以更加推荐使用featurecounts来定量。


看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

推荐阅读:
  1. MongoDB中怎么实现分片操作
  2. Thinkphp中怎么实现事务操作

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

上一篇:DESeq2中怎么实现两组间差异分析操作

下一篇:featureCounts中怎么实现定量分析操作

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》