对featureCounts来源的表达矩阵使用DEXSeq分析可变剪切

featureCounts我们粉丝都耳熟能详了,我们转录组流程介绍的对比对后的bam文件基于基因注释文件定量的首选软件,用法非常简单,关键是速度飞快,吊打htseq-counts几条街,而用DEXSeq分析可变剪切,外显子差异表达呢,我们以前也分享过用法,那个时候是使用示例的表达矩阵。

回顾一下featureCounts的命令及表达矩阵结果

使用featurecounts时候,我们通常的命令及参数是:

gtf="/home/yb77613/reference/gtf/gencode/gencode.v32.annotation.gtf"
bin_featureCounts="/home/yb77613/biosoft/featureCounts/subread-1.5.3-Linux-x86_64/bin/featureCounts";
$bin_featureCounts -T 4 -p -t exon -g gene_name  -a $gtf -o all.counts.id.txt  ../hisat2/*.bam 1>counts.id.log 2>&1

实际上,就一个 -t exon -g gene_name 需要理解一下,就是报名数reads数量的时候,只考虑gtf文件里面记录是exon的坐标的reads,然后最后的输出矩阵,以gene_name信息为行。

image-20191104175328158

可以很明显的看到,前面的6列,是基因的名字,染色体,起始终止坐标,正负链信息,基因长度信息。我圈起来的那个是miRNA,所以基因长度是68bp。

认识一下DEXSeq的输入表达矩阵

但是使用DEXSeq分析可变剪切,外显子差异表达,需要的不是基于基因的表达矩阵,而是基于exon的,比如官网例子:

image-20191104175538781

官网提供的是HTseq-count软件的结果转为DEXSeq输入的脚本,因为HTseq-count软件速度实在是不敢恭维,我还是想使用featurecounts。虽然它并没有DEXSeq输入的接口,但是简单谷歌,就可以搜得到解决方法;https://github.com/vivekbhr/Subread_to_DEXSeq

其实就是因为它需要不一样的gtf文件和gff文件。

安装GitHub插件处理gencode数据库的gtf文件

这里采用最原始的下载即可:https://github.com/vivekbhr/Subread_to_DEXSeq.git

cd 
cd biosoft 
git clone https://github.com/vivekbhr/Subread_to_DEXSeq.git
cd Subread_to_DEXSeq
wget ftp://ftp.ebi.ac.uk/pub/databases/gencode/Gencode_human/release_32/gencode.v32.annotation.gtf.gz
gunzip gencode.v32.annotation.gtf.gz

使用GitHub代码对gtf文件进行预处理:

which python
which pip 
pip install HTSeq
cd ~/biosoft/Subread_to_DEXSeq
python dexseq_prepare_annotation2.py -f out_gv32.gtf gencode.v32.annotation.gtf   out_gv32.gff 

速度很快,得到的文件如下:

image-20191104184822694

这个时候,需要记住的是,gtf文件可以被featureCounts用来定量,而后缀为gff的文件,是DEXSeq包需要的。

检查两个文件

首先看看后缀为gff的文件,是DEXSeq包需要的:

suppressPackageStartupMessages(library("DEXSeq"))
suppressPackageStartupMessages(library("pasilla"))
inDir <- system.file("extdata", package="pasilla")  
gffFile <- list.files(inDir, pattern="gff$", full.names=TRUE) 
gffFile

我的电脑的DEXSeq包举例的这个gff文件 在:

/Library/Frameworks/R.framework/Versions/3.5/Resources/library/pasilla/extdata/Dmel.BDGP5.25.62.DEXSeq.chr.gff

内容如下所示

image-20191106214450287

可以看到我们针对gencode数据库的gtf文件的处理,得到的文件也是符合要求的,跟这个R包自带的果蝇的例子类似,就是记录每个基因的多个转录本坐标,一个基因有多个转录本,就融合一下。

image-20191202111326033

然后看看gtf文件,可以看到跟gff文件的区别几乎没有。

image-20191202111420077

使用featureCounts定量

接下来就可以使用featureCounts对我们的bam文件进行定量啦,先看看示例数据:

suppressPackageStartupMessages(library("DEXSeq"))
suppressPackageStartupMessages(library("pasilla"))

inDir <- system.file("extdata", package="pasilla")
countFiles <- list.files(inDir, pattern="fb.txt$", full.names=TRUE)
countFiles
## 共七个样本,可以从文件名看到样本描述
head(read.table(countFiles[1]))

下面的截图是HTseq-count软件的结果,

image-20191106215755455

我们嫌弃HTseq-count软件运行速度太慢,所以才想着featureCounts,所以一切都得使用https://github.com/vivekbhr/Subread_to_DEXSeq  的脚本了。

conda activate rna 
gtf=/home/yb77613/biosoft/Subread_to_DEXSeq/gencode.v32.annotation.gtf
#gtf=/home/yb77613/biosoft/Subread_to_DEXSeq/out_gv32.gtf
featureCounts -f -O  -p -T 4  -F GTF \
-a ok.gtf \
-o test.txt ../star/SRR2016941.bam 
-o npc2_fCount.out.txt ../star/*bam   1>counts.id.log 2>&1 & 

重点是   -O 参数, 统计所有重叠的的meta-features的reads (或-f参数指定的feature)。

写在最后

其实我最后并没有成功,因为作者GitHub提供的这个插件并不好用,所以我决定自己来针对这个工具写脚本,总有一些时候,不得不从头编程而不是依赖于现有工具。

说到编程,不得不安利一下我们的习题:

看到有人提问

生物信息有没有什么编程练习题

这里再次强烈安利我们技能树出品的全套生信工程师编程练习题,文末有赠送120集全套工程师级别python视频教程,无需转发,无需点赞,任性随意送!

编程实战教程目录

  • 01:生信编程思维讲解

  • 02: hg19基因组序列的一些探究

  • 03: hg38每条染色体的基因、转录本分布

  • 04: 多个同样行列式文件的合并

  • 05: 根据GTF画基因的多个转录本结构

  • 06: 下载最新版的KEGG信息,并且解析好

  • 07: 写超几何分布检验

  • 08: ID转换

  • 09: R语言爬虫

  • 10: R语言shiny

  • 11: 用Biostrings包来处理fasta序列

  • 12: 根据指定染色体及坐标得到序列

  • 13: JSON 数据的格式化

  • 14: fasta 数据处理

真正的编程能力是什么?解决问题的能力,就是编程能力

【资源分享】生物信息学编程实战(文末赠送120集工程师级别python视频教程)

(0)

相关推荐

  • linux(1)-- gffread

    gffread gffread: used to generate a FASTA file with the DNA sequences for all transcripts in a GFF f ...

  • GFF和GTF的异同及相互转换

    GFF(gff)全称为:general feature format GTF(gtf)全称为:gene transfer format 前者用来注释基因组,后者用来注释基因. 异同点: GTF文件和G ...

  • TBtools | GFF3/GTF 文件操作讲演

    写在前面 大概一年前就有不少朋友提到想了解相关功能的操作.尽管在公众号上已推送过几乎每一个功能的推送,但文字吸收效率可能确实不如视频讲演.一年前挖的坑,现在终于可以填了.直接原因还是最近数据分析时优化 ...

  • 转录组学习六(reads计数与标准化)

    任务 学习了解各个reads计数,及标准化的原理,如RPKM/FPKM/TPM的统计学原理: 了解reads计数的各个软件,用入门的htseq-count软件对每个样本内生成关于表达量的文件: 用脚本 ...

  • 用DEXSeq分析可变剪切,外显子差异表达

    以后只用Rmarkdown写博客啦! 如果你想知道这样的图如何做出来了: 请直接点击下面的阅读原文阅读,省掉了图文排版时间,赞~ http://www.bio-info-trainee.com/bio ...

  • 表达矩阵可视化大全

    貌代码被折叠了,大家需要阅读原文才能复制粘贴我代码在Rstudio里面直接运行,几分钟就可以学会15个图的制作! basic visualization for expression matrix j ...

  • lncRNA实战项目-第四步-得到表达矩阵的流程

    响应生信技能树的号召:lncRNA数据分析传送门 , 一起来一个lncRNA数据分析实战! SRA->FASTQ->BAM->COUNTS 这几个步骤而已,中间穿插一些质控的手段,每 ...

  • 从GEO数据库下载得到表达矩阵 一文就够

    在第一讲我们详细介绍了GEO数据库的基础知识及规律,也了解了如何利用官方R包GEOquery来探索GEO数据库,当然,我的生信菜鸟团博客里面也从很多其它角度解析过它,欢迎大家自行搜索学习.总得来说,从 ...

  • 使用CGP数据库的表达矩阵进行药物反应预测

    发表这个算法的文章是:Clinical drug response can be predicted using baseline gene expression levels and in vitr ...

  • 要读源代码才能解决的报错-GEOquery下载表达矩阵缺样本名

    最近生信技能树的很多朋友反馈一个GEOquery的bug,而且这个错误对初学者来说,是不可能解决的问题,值得分享一下!(2018-11-27 计) 就是昨天推文末尾的小测试: GEOquery包的ge ...

  • 如果表达矩阵被归一化会发生什么

    事情起源于,某个吃了很多汉堡王一起学习的日子,技能树一众学徒一起学习从GEO数据挖掘到limma差异分析等等等. 选的数据集倒是很有.趣.依据原始表达矩阵随便画的热图是这样的

  • 表达矩阵的归一化和标准化,去除极端值,异常值

    我们阅读量破万的综述:RNA-seq这十年(3万字长文综述)给粉丝朋友们带来了很多理解上的挑战,所以我们开辟专栏慢慢介绍其中的一些概念性的问题,上一期: RNA-seq的counts值,RPM, RP ...

  • 转录组表达矩阵为什么需要主成分分析以及怎么做

    我们阅读量破万的综述:RNA-seq这十年(3万字长文综述)给粉丝朋友们带来了很多理解上的挑战: 所以我们开辟专栏慢慢介绍其中的一些概念性的问题,上一期:表达矩阵的归一化和标准化,去除极端值,异常值 ...