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(質量分析)。php

這裏須要注意的是HTSeq做爲read counts的計數軟件,承接的是上游比對軟件對於clean data給出的比對結果即bam文件(由sam文件sort獲得),和HTSeq能行使一樣做用的還有相似於GFold,bedtools等軟件,我會在最後作一個基本的結果比對。css

manual
油管視頻講解

HTSeq的安裝

 1 # 建立存放文件夾  2 mkdir ~/biosoft/HTseq && cd ~/biosoft/HTseq  3 
 4 # download並解壓  5 wget https://pypi.python.org/packages/fd/94/b7c8c1dcb7a3c3dcbde66b8d29583df4fa0059d88cc3592f62d15ef539a2/HTSeq-0.9.1.tar.gz#md5=fc71e021bf284a68f5ac7533a57641ac
 6 tar zxvf HTSeq-0.9.1.tar.gz  7 cd HTSeq-0.9.1/
 8 
 9 #使用python命令安裝,此處注意,install --user參數最好用上,除非你能夠獲取root權限 10 python setup.py build 11 python setup.py install --user 12 
13 # add bin/ to your PATH 14 vim .bashrc 15 PATH=/home/path_to/.local/bin:$PATH 16 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 對照示意圖能夠選擇本身須要的模式html

我這裏使用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的計數。python

安裝

gfold.V1.1.4.tar.gzdownload解壓後便可使用ios

使用

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文件包含五列:git

#說明很詳細,這裏再也不翻譯 
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文件示例:github

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的輸入文件一致,可是結果出入仍是較大的,此處僅做說明,不加以推薦。express


Bedtools :再一個count matrix的提取工具

bedtools是一個極其老牌的數據處理軟件了,由猶他大學一個實驗室開發,我也是看了生信菜鳥團Jimmy的一篇文章才知道也能夠用來計數的。vim

安裝

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

  

輸出

 
相關文章
相關標籤/搜索