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使用注意事项
  1. HTSeq是对有参考基因组的转录组测序数据进行表达量分析的,其输入文件必须有SAM和GTF文件。
  2. 一般情况下HTSeq得到的Counts结果会用于下一步不同样品间的基因表达量差异分析,而不是一个样品内部基因的表达量比较。因此,HTSeq设置了-a参数的默认值10,来忽略掉比对到多个位置的reads信息,其结果有利于后续的差异分析。
  3. 输入的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
 
mode

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

  

输出

 
 

最新文章

  1. 单表60亿记录等大数据场景的MySQL优化和运维之道
  2. codeforces 425C Sereja and Two Sequences(DP)
  3. 【转】Python中的GIL、多进程和多线程
  4. 让jar程序在linux上一直执行
  5. jQuery图片延迟加载插件jQuery.lazyload使用方法(转)
  6. 函数fsp_seg_inode_page_find_free
  7. 配置iSCSI
  8. real-time application
  9. 使用android.view.TouchDelegate扩大View的触摸点击区域
  10. 【C#】详解使用Enumerable.Distinct方法去重
  11. 关于RadUpload上传问题总结
  12. linux(十四)之linux NFS服务管理
  13. 深入浅出Java类加载过程
  14. 微信小程序采坑(一)
  15. [NOIP2018]OI之旅的中转站
  16. AttributeError: 'module' object has no attribute 'main'
  17. mac开发常用工具和插件记录
  18. eclipse的快捷键【转载】
  19. 在JS文件中,不需要<script>标签
  20. 菜鸟学JS(三)——自动隐藏的悬浮框

热门文章

  1. 【原创】6. 在MYSQL++中实现SQL语法中的NULL
  2. 深入剖析SolrCloud(三)
  3. UVA-11280 Flying to Fredericton
  4. Java,Calendar -- 获取当前日期、当月月初日期、月末日期
  5. OpenCV 2.4.13 installed in Ubuntu 14 and CMakeLists Demo
  6. logback 中文手册
  7. 简单基础路径配置(单用JSP)EASYUI
  8. jqGrid查询案例(实用)
  9. LibreOJ 6002 最小路径覆盖(最大流)
  10. WinForm中DataGridView的使用(五) - 自定义列