featureCounts 软件说明
featuresCounts 软件用于定量,不仅可以支持gene的定量,也支持exon, gene bodies, genomic bins, chromsomal locations的定量;
官网 : http://bioinf.wehi.edu.au/featureCounts/
只需要输入reads的比对情况,就是BAM 文件,再输入一个你感兴趣的区间的注释(通常是基因或者转录本的注释gtf 文件,就可以了),所以不论是DNA seq 还是RNA seq, 这个软件都是可以定量的。
featureCounts 集成在subreads 软件中,类似 word 和 office 的关系,subreads 这个软件也有对应的 R包(Rsubreads).
featureCounts 需要两个输入文件:
1)reads的比对情况,这种信息通常都用BAM/ SAM文件来存储
2)区间注释文件,支持两种格式
最常见的gtf 格式
simplified annotation format(SAF) 格式, 示例如下
GeneID Chr Start End Strand
497097 chr1 3204563 3207049 -
497097 chr1 3411783 3411982 -
497097 chr1 3660633 3661579 -
在featureCounts 软件中,有两个核心概念:
1) feature , 类似 exon 这种
2) metafeature, 可以看做是一组 feature, 比如属于同一个gene 的外显子的组合
在定量的时候,支持对单个feature 定量(对外显子定量),也支持对meta-feature 进行定量(对基因进行定量), meta-feature 的定量是属于同一meta-features 下的所有features 的总和;
当reads 比对到2个或者以上的features 时,默认情况下,featureCounts在统计时会忽略到这部分reads, 如果你想要统计上这部分reads, 可以添加-O 参数,此时一条reads 比对到多个feature, 每个feature 定量时,都会加1,对于meta-features 来说,如果比对到多个features 属于同一个 meta-features(比如一条reads比对到了exon, 但这些exon 属于同一个gene), 则对于这个gene 而言,只会计数1次;
总之,不管对于feature 还是meta-feature, 只有比对多个不同的区间时,才会分别计数;
定量:
features 支持对单个样本定量,还支持对多个样本进行归一化
单个样本定量的用法示例
featureCounts -T 5 -t exon -g gene_id -a annotation.gtf -o counts.txt mapping.sam
多个样本归一化的用法示例
featureCounts -t exon -g gene_id -a annotation.gtf -o counts.txt library1.bam library2.bam library3.bam
下面对几个常用的选项详细解释一下:
-a : 指定的区间注释文件,默认是gtf格式
-T : 线程数,默认是1
-t : 想要统计的feature 的名称, 取值范围是gtf 文件中的第3列的值,默认是exon
-g : 想要统计的meta-feature 的名称,取值范围参考gtf 第9列注释信息,gtf 的第9列为 key=value 的格式, -g 参数可能的取值就是所有的key, 默认值是gene_id
其他的一些参数可以根据自己的目的,实际做调整。
输出结果的解读:
featuresCount 会输出两个文件,如果-o 指定的是gene, 则会产生gene 和 gene.summary 两个文件
gene 文件的部分内容如下
# Program:featureCounts v1.6.0; Command:"./featureCounts" "-T" "20" "-t" "exon" "-g" "gene_id" "-a" "hg19.gtf" "-o" "gene" "accepted_hits.bam"
Geneid Chr Start End Strand Length accepted_hits.bam
LOC102725121 chr1;chr1;chr1;chr15;chr15;chr15 11869;12613;13221;102516808;102518449;102518943 12227;12721;14362;102517949;102518557;102519301 +;+;+;-;-;- 3220 0
DDX11L1 chr1;chr1;chr1 11874;12613;13221 12227;12721;14409 +;+;+ 1652 0
WASH7P chr1;chr1;chr1;chr1;chr1;chr1;chr1;chr1;chr1;chr1;chr1 14362;14970;15796;16607;16858;17233;17606;17915;18268;24738;29321 14829;15038;15947;16765;17055;17368;17742;18061;18366;24891;29370 -;-;-;-;-;-;-;-;-;-;- 1769 88
# 号开头的注释行,记录了产生这个结果文件所用的命令,(感觉这个思路特别好,在输出的文件中记录当时的命令,便于核对)
Geneid 开头的行是表头,Geneid 代表统计的meta-features 的名称,Chr , Start, End 染色体上的位置,Strand 正负链,Length 该区间的长度,最后一列的表头是你的输入文件的名称,代表的是这个meta-feature 的count 值,即表达量
接下来看下正文部分,以第一行为例,在gtf 文件中共gene_id 为 LOC102725121 的行如下
chr1 refGene transcript 11869 14362 . + . gene_id "LOC102725121"; transcript_id "NR_148357"; gene_name "LOC102725121";
chr1 refGene exon 11869 12227 . + . gene_id "LOC102725121"; transcript_id "NR_148357"; exon_number "1"; exon_id "NR_148357.1"; gene_name "LOC102725121";
chr1 refGene exon 12613 12721 . + . gene_id "LOC102725121"; transcript_id "NR_148357"; exon_number "2"; exon_id "NR_148357.2"; gene_name "LOC102725121";
chr1 refGene exon 13221 14362 . + . gene_id "LOC102725121"; transcript_id "NR_148357"; exon_number "3"; exon_id "NR_148357.3"; gene_name "LOC102725121";
chr15 refGene transcript 102516808 102519301 . - . gene_id "LOC102725121"; transcript_id "NR_148357_2"; gene_name "LOC102725121";
chr15 refGene exon 102516808 102517949 . - . gene_id "LOC102725121"; transcript_id "NR_148357_2"; exon_number "1"; exon_id "NR_148357_2.1"; gene_name "LOC102725121";
chr15 refGene exon 102518449 102518557 . - . gene_id "LOC102725121"; transcript_id "NR_148357_2"; exon_number "2"; exon_id "NR_148357_2.2"; gene_name "LOC102725121";
chr15 refGene exon 102518943 102519301 . - . gene_id "LOC102725121"; transcript_id "NR_148357_2"; exon_number "3"; exon_id "NR_148357_2.3"; gene_name "LOC102725121";
对于 LOC102725121 这个meta-features 而言,在gtf 文件中有6个exon的记录,就是说有6个features , 所以可以看到对应的Chr, Start, End, Strand 这些列都有;分号分隔的6个值,Length 则是这6个exon 区间的的长度的总和,最后一列就是LOC102725121的表达量
这个结果文件有1个问题,就是同一个gene_id 会有多个染色体编号,这是因为gtf 文件中的gene_id 不是唯一标识符导致的,这样和我们想要的定量结果是不一样的,所以在实际分析中,应该挑选gtf 文件中的唯一标识符;
总结:
这个软件最大的特点就是运以行的非常快,几分钟就可以运行完1个人类基因组样本的定量;但是准备gtf 文件时,要确保-g 参数指定的值都是唯一标识符,才能达到预期的效果;
featureCounts 软件说明的更多相关文章
- DBImport V3.7版本发布及软件稳定性(自动退出问题)解决过程分享
DBImport V3.7介绍: 1:先上图,再介绍亮点功能: 主要的升级功能为: 1:增加(Truncate Table)清表再插入功能: 清掉再插,可以保证两个库的数据一致,自己很喜欢这个功能. ...
- nw.js桌面软件开发系列 第0.1节 HTML5和桌面软件开发的碰撞
第0.1节 HTML5和桌面软件开发的碰撞 当我们谈论桌面软件开发技术的时候,你会想到什么?如果不对技术本身进行更为深入的探讨,在我的世界里,有这么多技术概念可以被罗列出来(请原谅我本质上是一个Win ...
- 标准产品+定制开发:专注打造企业OA、智慧政务云平台——山东森普软件,交付率最高的技术型软件公司
一.公司简介山东森普信息技术有限公司(以下简称森普软件)是一家专门致力于移动互联网产品.企业管理软件定制开发的技术型企业.公司总部设在全国五大软件园之一的济南齐鲁软件园.森普SimPro是由Simpl ...
- JAVA程序员常用软件整理下载
********为了大家学习方便,特意整理软件下载如下:*************Java类软件:-------------------------------JDK7.0:http://pan.ba ...
- spring boot 实战:我们的第一款开源软件
在信息爆炸时代,如何避免持续性信息过剩,使自己变得专注而不是被纷繁的信息所累?每天会看到各种各样的新闻,各种新潮的技术层出不穷,如何筛选出自己所关心的? 各位看官会想,我们是来看开源软件的,你给我扯什 ...
- 易用BPM时代,软件开发者缘何选择H3?
近年来,企业级软件开发市场暗流汹涌,呈现出多种态势.软件开发团队规模趋于小型化,工作方式趋于快捷化,超过半数的软件开发者在工作中会选择使用易用的软件开发工具.随着流程管理越来越受到企业的重视,流程开发 ...
- 从国内流程管理软件市场份额看中国BPM行业发展
随着互联网+.中国制造2025.工业4.0等国家战略的支持与引导,企业在数字经济时代的信息化表现惊人,越来越多企业认识到,对于企业的发展来说,信息自动化远远还不够,企业的战略.业务和IT之间需保持高度 ...
- 一个软件开发者的BPM之路
我是小林,一名普通的软件工程师,从事BPM(业务流程管理)软件开发工作.我没有几十年的技术底蕴,无法像大牛们一样高谈阔论,品评BPM开发之道:也不是资深的流程管理专家,能与大家分析流程管理的时弊.我只 ...
- 敏捷软件开发VS传统软件工程
敏捷软件开发:又称敏捷开发,是一种从1990年代开始逐渐引起广泛关注的一些新兴软件开发方法,是一种应对快速变化的需求的一种软件开发能力. 与传统软件工程相比,它们的具体名称.理念.过程.术语都不尽相同 ...
随机推荐
- spring 空指针报错,Could not create connection to database server.
驱动问题,换成最近版本的mysql驱动
- 考前停课集训 Day7 嘞
Day7 正如一个大佬提醒的那样,棕名是会被嘲讽的 果然…… 在洛谷里…… 算了. 不必在意. 马上就要退役了. NOIP,开始的地方,也是结束的地方. 如果一群OIer比你小 还会嘲讽你, 你就该退 ...
- db2 runstats和reorg
当数据库里某张表上有大量插入操作时,需要在表上做 RUNSTATS 命令保证数据库掌握准确的统计信息. 当数据库里某张表中的记录变化很大时(大量插入.删除.更新操作),需要在表上做 REORG 和 R ...
- db2 load报文件系统满
使用db2 load导入数据 数据量比较大时常常会报文件系统已满错误. 原因分析:导入表建有索引,在load的“索引复制”阶段会从系统临时表空间拷贝到目标表空间,导致系统临时表空间所在的文件系统满,l ...
- Vue(十九)Vuex
Vuex 1. 简介 Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式.它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化. 简单来说,用来集中管 ...
- angularJs中怎么模拟jQuery中的this?
最近自己正在学习angularJs,在学到ng-click时,由于想获取当前点击元素的自身,开始想到了用$index来获取当前元素的索引同样能实现我想要的效果,但是在有些特殊的情况下,使用$index ...
- hql 语法详解
HQL查询:Criteria查询对查询条件进行了面向对象封装,符合编程人员的思维方式,不过HQL(Hibernate Query Lanaguage)查询提供了更加丰富的和灵活的查询特性,因此 Hib ...
- pygame-KidsCanCode系列jumpy-part0-使用sprite
油管(youtube)上有一个号称"史上最好的pygame教程"(传送门:https://www.youtube.com/watch?v=VO8rTszcW4s&list= ...
- 【总结】瞬时高并发(秒杀/活动)Redis方案
1,Redis 丰富的数据结构(Data Structures) 字符串(String) Redis字符串能包含任意类型的数据 一个字符串类型的值最多能存储512M字节的内容 利用INCR命令簇(IN ...
- Mac下不用重复输入ssh-key的密码
重装系统,复用以前的SSH key,发现每次调用这个Key都要输入Key的密码,很繁琐,以前不是这样的哦. 更新代码.SSH服务器总是提示: Enter passphrase for .../id_r ...