RNA-seq分析htseq-count的使用
HTSeq作为一款可以处理高通量数据的python包,由Simon Anders, Paul Theodor Pyl, Wolfgang Huber等人携手推出HTSeq — A Python framework to work with high-throughput sequencing data。自发布以来就备受广大分析人员青睐,其提供了许多功能给那些熟悉python的大佬们去自信修改使用,同时也兼顾着给小白们提供了两个可以拿来可用的可执行文件 htseq-count(计数) 和 htseq-qa(质量分析)。
这里需要注意的是HTSeq作为read counts的计数软件,承接的是上游比对软件对于clean data给出的比对结果即bam文件(由sam文件sort得到),和HTSeq能行使同样作用的还有类似于GFold,bedtools等软件,我会在最后做一个基本的结果比对。
附manual
附油管视频讲解
HTSeq的安装
# 创建存放文件夹
mkdir ~/biosoft/HTseq && cd ~/biosoft/HTseq # download并解压
wget https://pypi.python.org/packages/fd/94/b7c8c1dcb7a3c3dcbde66b8d29583df4fa0059d88cc3592f62d15ef539a2/HTSeq-0.9.1.tar.gz#md5=fc71e021bf284a68f5ac7533a57641ac
tar zxvf HTSeq-0.9..tar.gz
cd HTSeq-0.9./ #使用python命令安装,此处注意,install --user参数最好用上,除非你可以获取root权限
python setup.py build
python setup.py install --user # add bin/ to your PATH
vim .bashrc
PATH=/home/path_to/.local/bin:$PATH
source .bashrc
HTSeq安装
HTSeq使用注意事项
- HTSeq是对有参考基因组的转录组测序数据进行表达量分析的,其输入文件必须有SAM和GTF文件。
- 一般情况下HTSeq得到的Counts结果会用于下一步不同样品间的基因表达量差异分析,而不是一个样品内部基因的表达量比较。因此,HTSeq设置了-a参数的默认值10,来忽略掉比对到多个位置的reads信息,其结果有利于后续的差异分析。
- 输入的GTF文件中不能包含可变剪接信息,否则HTSeq会认为每个可变剪接都是单独的基因,导致能比对到多个可变剪接转录本上的reads的计算结果是ambiguous,从而不能计算到基因的count中。即使设置-i参数的值为transcript_id,其结果一样是不准确的,只是得到transcripts的表达量。
HTSeq的使用
#这里承接的是上游hisat2比对软件得到的bam文件,sort by pos, 所以需要重新sort
samtools sort -n yourfile.bam > yourfile_name.bam htseq-count -f bam -r name -s no -a 10 -t exon -i gene_id -m intersection-nonempty yourfile_name.bam ~/reference/hisat2_reference/Homo_sapiens.GRCh38.86.chr_patch_hapl_scaff.gtf > counts.txt
# 命令参数
-f | --format default: sam 设置输入文件的格式,该参数的值可以是sam或bam。
-r | --order default: name 设置sam或bam文件的排序方式,该参数的值可以是name或pos。前者表示按read名进行排序,后者表示按比对的参考基因组位置进行排序。若测序数据是双末端测序,当输入sam/bam文件是按pos方式排序的时候,两端reads的比对结果在sam/bam文件中一般不是紧邻的两行,程序会将reads对的第一个比对结果放入内存,直到读取到另一端read的比对结果。因此,选择pos可能会导致程序使用较多的内存,它也适合于未排序的sam/bam文件。而pos排序则表示程序认为双末端测序的reads比对结果在紧邻的两行上,也适合于单端测序的比对结果。很多其它表达量分析软件要求输入的sam/bam文件是按pos排序的,但HTSeq推荐使用name排序,且一般比对软件的默认输出结果也是按name进行排序的。
-s | --stranded default: yes 设置是否是链特异性测序。该参数的值可以是yes,no或reverse。no表示非链特异性测序;若是单端测序,yes表示read比对到了基因的正义链上;若是双末端测序,yes表示read1比对到了基因正义链上,read2比对到基因负义链上;reverse表示双末端测序情况下与yes值相反的结果。根据说明文件的理解,一般情况下双末端链特异性测序,该参数的值应该选择reverse(本人暂时没有测试该参数)。
-a | --a default: 10 忽略比对质量低于此值的比对结果。在0.5.4版本以前该参数默认值是0。
-t | --type default: exon 程序会对该指定的feature(gtf/gff文件第三列)进行表达量计算,而gtf/gff文件中其它的feature都会被忽略。
-i | --idattr default: gene_id 设置feature ID是由gtf/gff文件第9列那个标签决定的;若gtf/gff文件多行具有相同的feature ID,则它们来自同一个feature,程序会计算这些features的表达量之和赋给相应的feature ID。
-m | --mode default: union 设置表达量计算模式。该参数的值可以有union, intersection-strict and intersection-nonempty。这三种模式的选择请见上面对这3种模式的示意图。从图中可知,对于原核生物,推荐使用intersection-strict模式;对于真核生物,推荐使用union模式。
-o | --samout 输出一个sam文件,该sam文件的比对结果中多了一个XF标签,表示该read比对到了某个feature上。
-q | --quiet 不输出程序运行的状态信息和警告信息。
-h | --help 输出帮助信息。
htseq-count 的三种比对模式
union, intersection-strict and intersection-nonempty 对照示意图可以选择自己需要的模式
我这里使用intersection_nonempty
HTSeq的输出
HTSeq将Count结果输出到标准输出,其结果示例如下:
head counts.txt
ENSG00000000003 0
ENSG00000000005 0
ENSG00000000419 1171
ENSG00000000457 563
ENSG00000000460 703
ENSG00000000938 0
ENSG00000000971 1
ENSG00000001036 925
ENSG00000001084 1468
ENSG00000001167 2997 tail count.txt
ENSG00000283696 18
ENSG00000283697 0
ENSG00000283698 1
ENSG00000283699 0
ENSG00000283700 0
__no_feature 3469791
__ambiguous 630717
__too_low_aQual 1346501
__not_aligned 520623
__alignment_not_unique 2849422
GFold:另一个count matrix的提取工具
GFold是一款2012年同济大学的研究组发表在Bioinformatics 上的软件,旨在通过对于相对基因变化找出RNA-seq中表达差异的基因,同时也可以用作read count的计数。
安装
gfold.V1.1.4.tar.gzdownload解压后即可使用
使用
gfold count -ann hg19Ref.gtf -tag sample1.sam -o sample1.read_cnt
gfold count -ann hg19Ref.gtf -tag sample2.sam -o sample2.read_cnt
输出
output文件包含五列:
#说明很详细,这里不再翻译
GeneSymbol:
For BED file, this is the 4'th column. For GPF file, this is the first column. For GTF format, this corresponds to 'gene_id' if it exists, 'NA' otherwise. GeneName:
For BED file, this is always 'NA'. For GPF file, this is the 12'th column. For GTF format, this corresponds to 'gene_name' if it exists, 'NA' otherwise. Read Count:
The number of reads mapped to this gene. Gene exon length:
The length sum of all the exons of this gene. RPKM:(#这里需要注意但是双端测序技术还未普及,这里未使用FPKM,况且RPKM和FPKM也不是能很好的代表基因表达水平 )
The expression level of this gene in RPKM.
output文件示例:
head example.read_cnt
ENSG00000000003 TSPAN6 0 4535 0
ENSG00000000005 TNMD 0 1610 0
ENSG00000000419 DPM1 1588 1207 27.4411
ENSG00000000457 SCYL3 1344 6883 4.07267
ENSG00000000460 C1orf112 1334 5967 4.66292
ENSG00000000938 FGR 0 3474 0
ENSG00000000971 CFH 2 8145 0.0051215
ENSG00000001036 FUCA2 1427 2793 10.6564
ENSG00000001084 GCLC 2462 8463 6.06767
ENSG00000001167 NFYA 5123 3811 28.0378
此处使用示例bam文件or sam文件和HTSeq的输入文件一致,但是结果出入还是较大的,此处仅作说明,不加以推荐。
Bedtools :再一个count matrix的提取工具
bedtools是一个极其老牌的数据处理软件了,由犹他大学一个实验室开发,我也是看了生信菜鸟团Jimmy的一篇文章才知道也可以用来计数的。
安装
wget https://github.com/arq5x/bedtools2/releases/download/v2.26.0/bedtools-2.26.0.tar.gz
tar zxvf bedtools-2.26.0.tar.gz
使用
bedtools multicov -bams 1.bam 2.bam 3.bam 4.bam-bed file.bed > read.count.txt
# 注意,此处的bed文件需要自己处理得到的,需要四列,第一列为chrN,第二列第三列为基因位置,第四列为基因名。类似于:
chr1 0 10000 ivl1
chr1 10000 20000 ivl2
chr1 20000 30000 ivl3
chr1 30000 40000 ivl4
输出
RNA-seq分析htseq-count的使用的更多相关文章
- RNA -seq
RNA -seq RNA-seq目的.用处::可以帮助我们了解,各种比较条件下,所有基因的表达情况的差异. 比如:正常组织和肿瘤组织的之间的差异:检测药物治疗前后,基因表达的差异:检测发育过程中,不同 ...
- RNA seq 两种计算基因表达量方法
两种RNA seq的基因表达量计算方法: 1. RPKM:http://www.plob.org/2011/10/24/294.html 2. RSEM:这个是TCGAdata中使用的.RSEM据说比 ...
- 报错注入分析之(count()、rand()、group by)分析,被大佬称为floor报错注入
PS:在这几天的学习当中很多的文章都将此注入方式称之为“floor报错分析”但经过我这几天的学习.个人觉得不该如此称呼!若君有意请详细阅读此篇文章.特别感谢米怀特的开导,说句实在的研究这个注入有四天了 ...
- RNA测序相对基因表达芯片有什么优势?
RNA测序相对基因表达芯片有什么优势? RNA-Seq和基因表达芯片相比,哪种方法更有优势?关键看适用不适用.那么RNA-Seq适用哪些研究方向?是否您的研究?来跟随本文了解一下RNA测序相对基因表达 ...
- xgene:之ROC曲线、ctDNA、small-RNA seq、甲基化seq、单细胞DNA, mRNA
灵敏度高 == 假阴性率低,即漏检率低,即有病人却没有发现出来的概率低. 用于判断:有一部分人患有一种疾病,某种检验方法可以在人群中检出多少个病人来. 特异性高 == 假阳性率低,即错把健康判定为病人 ...
- Linq查询操作之聚合操作(count,max,min,sum,average,aggregate,longcount)
在Linq中有一些这样的操作,根据集合计算某一单一值,比如集合的最大值,最小值,平均值等等.Linq中包含7种操作,这7种操作被称作聚合操作. 1.Count操作,计算序列中元素的个数,或者计算满足一 ...
- python处理.seq文件
# Deal with .seq format for video sequence # Author: Kaij # The .seq file is combined with images, # ...
- RNA测序研究现状与发展
RNA测序研究现状与发展 1 2,584 A+ 所属分类:Transcriptomics 收 藏 通常来说,某一个物种体内所有细胞里含有的DNA都应该是一模一样的,只是因为每一种细胞里所表达的R ...
- sbt编译spark程序提示value toDF is not a member of Seq()
sbt编译spark程序提示value toDF is not a member of Seq() 前提 使用Scala编写的Spark程序,在sbt编译打包的时候提示value toDF is no ...
- 【Python情感分析】用python情感分析李子柒频道视频热门评论
一.事件背景 今天是2021.12.2日,距离李子柒断更已经4个多月了,这是我在YouTube李子柒油管频道上,观看李子柒2021年7月14日上传的最后一条视频,我录制了视频下方的来自全世界各国网友的 ...
随机推荐
- 算法技巧讲解》关于对于递推形DP的前缀和优化
这是在2016在长沙集训的第三天,一位学长讲解了“前缀和优化”这一技巧,并且他这一方法用的很6,个人觉得很有学习的必要. 这一技巧能使线性递推形DP的速度有着飞跃性的提升,从O(N2)优化到O(N)也 ...
- cocos2D-x demo 的源码分析 #define ..##.. 的妙用.
最近在看cocos2d-x 但不知道如何下手,于是先看一下他编译的完成的testcpp的源码.发现了下面一段程序 typedef CCLayer* (*NEWTESTFUNC)(); #define ...
- 532. K-diff Pairs in an Array绝对值差为k的数组对
[抄题]: Given an array of integers and an integer k, you need to find the number of unique k-diff pair ...
- =面试题:java面试基本方向 背1 有用 项目二技术学完再看
一.Java基础 1. 集合框架A)集合中泛型优点? 将运行期的ClaasCastException 转到编译期异常. 泛型还提供通配符 1)HashMap---允许一个键为null,允许多个值为n ...
- 使用Cytoscape画PPI网络图
打开Cytoscape软件,根据菜单导入string_interactions.tsv文件 File ----> Import ----> Network from File 会弹出下图对 ...
- js实现选项卡切换
<!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...
- 当鼠标悬停在链接上,或者点击过的链接,颜色会被设置为 #2a6496。同时,会呈现一条下划线。点击过的链接,会呈现一个颜色码为 #333 的细的虚线轮廓。另一条规则是设置轮廓为 5 像素宽,且对于基于 webkit 浏览器有一个 -webkit-focus-ring-color 的浏览器扩展。轮廓偏移设置为 -2 像素
a:hover, a:focus { color: #2a6496; text-decoration: underline; } a:focus { outline: thin dotted #333 ...
- [GO]全局变量
package main import "fmt" func test01() { fmt.Println("test a = ", a) } //a := 1 ...
- oracle数据库创建表
实际工作中,在数据库中创建表是经常会用到的.我们今天呢?主要给大家来分享一下在数据库如何通过sql语句去创建表.其实,创建表很简单,只需要把数据库的数据类型和约束搞清楚就可以了,其他的就好说了.接下来 ...
- qt-vs-addin:Qt4和Qt5之VS插件如何共存与使用(转)
原则上,两者是不可以同时存在的,但是如果都安装了,该如何分别使用他们呢? Qt4 Visual Studio Add-in:官网可以下载安装程序,qt-vs-addin-1.1.11-opensour ...