每月一生信流程之rnaseqDTU(差异转录本)

每月一生信流程栏目灵感来自于《铁汉1991》博客的《每日一生信》,他那个时候介绍的主要是生信基础知识,包括数据结构,数据格式,数据库资源,计算机基础等等,所以每天都可以进步,每天都有成果。这些基础知识已经被分享的七七八八了,所以我这里推陈出新,来一个每月一生信流程,陪生信技能树的粉丝们一起进步!

上一期我们推荐的是转录组经典表达量矩阵下游分析大全 本期我们聊聊可变剪切,流程里面写的差异转录本,或者差异外显子,都差不多的意思。

全部bioconductor流程链接在;http://www.bioconductor.org/packages/release/BiocViews.html#___GeneExpressionWorkflow 目前的27个流程,已经分门别类的整理好了,我们每个月学一个流程,预计两年就可以成为生物信息学领域的全栈工程师啦!

一图看懂DGE, DTE and DTU

参考文献:F1000Research 2019, 8:213 Last updated: 18 MAR 2019

image-20191106170904529

今天学习rnaseqDTU

我们首先看看转录组领域的基因表达相关流程吧,首先一起学习的是Swimming downstream: statistical analysis of differential transcript usage following Salmon quantification

  • http://www.bioconductor.org/packages/release/workflows/vignettes/rnaseqDTU/inst/doc/rnaseqDTU.html

这个就没有中文版了,实际上是使用salmon软件把我们的RNA-seq测序的fastq数据根据参考转录组进行定量后,走几个R包流程。

在R里面安装这个bioconductor流程

if (!requireNamespace("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("rnaseqDTU")

因为原文写的实在是太详细了,我这里就不拷贝粘贴了,大家直接去阅读即可:

  • RNA-seq workflow for differential transcript usage following Salmon quantification

  • http://www.bioconductor.org/packages/release/workflows/vignettes/rnaseqDTU/inst/doc/rnaseqDTU.R

全部目录如下;

  • 3 Methods

  • 3.1 Simulation

  • 3.2 Operation

  • 3.3 Quantification and data import

  • 3.4 DTU testing

  • 4 Workflow

  • 4.1 Salmon quantification

  • 4.2 Importing counts into R/Bioconductor

  • 4.3 Transcript-to-gene mapping

  • 5 Statistical analysis of differential transcript usage

  • 5.1 DRIMSeq

  • 5.2 stageR following DRIMSeq

  • 5.3 Post-hoc filtering on the standard deviation in proportions

  • 5.4 DEXSeq

  • 5.5 stageR following DEXSeq

  • 5.6 Citing methods in published research

  • 6 DTU analysis complements DGE analysis

  • 6.1 DGE analysis with DESeq2

  • 6.2 DGE analysis with edgeR

  • 6.3 End of workflow section

流程代码

首先是salmon的:

salmon quant -i $index -l A -1 $fq1 -2 $fq2  -p 4 -o quants/${sample}_quant

每个样本的fq测序数据都会被

image-20191106090849429

然后把所有的样本的quant.sf文件批量读取到R里面:

rm(list = ls())  
options(stringsAsFactors = F)
library(rnaseqDTU)
library(tximport)
files=list.files('quants/',pattern = 'quant.sf',recursive = T,full.names = T)
txi <- tximport(files, type="salmon", txOut=TRUE,
                countsFromAbundance="scaledTPM")
cts <- txi$counts
cts <- cts[rowSums(cts) > 0,]

library(GenomicFeatures)
# 文件 gencode.v32.annotation.gtf.gz 自己在gencode数据库网页下载即可
gtf <- "../database/gencode/gencode.v32.annotation.gtf.gz"
txdb.filename <- "gencode.v32.annotation.sqlite"
txdb <- makeTxDbFromGFF(gtf)
saveDb(txdb, txdb.filename)

txdb <- loadDb(txdb.filename)
txdf <- select(txdb, keys(txdb, "GENEID"), "TXNAME", "GENEID")
tab <- table(txdf$GENEID)
txdf$ntx <- tab[match(txdf$GENEID, names(tab))]

cts[1:3,1:3]
range(colSums(cts)/1e6)
head(txdf) 
cts=cts[rownames(cts) %in%  txdf$TXNAME,] 
dim(cts)
txdf <- txdf[match(rownames(cts),txdf$TXNAME),]
all(rownames(cts) == txdf$TXNAME)

counts <- data.frame(gene_id=txdf$GENEID,
                     feature_id=txdf$TXNAME,
                     cts)
save(counts,files,file = 'salmon-out.Rdata')

上面整理salmon结果的代码,看起来很复杂,其实修改的地方不多,值得注意的是:

image-20191106091705316

表达矩阵的第一列是基因的ID,第二列是转录本的ID,后面才是表达量哦。

有一个分组信息,我这里并没有给出我的代码,因为每个人的项目不一样,你需要自己制作,但凡有点R语言基础的,都是没有问题啦。就是 samps 那个变量的内容,有了它,下面的DRIMSeq流程分析差异转录本表达量才有意义。

接着运行DRIMSeq流程即可:

library(DRIMSeq)
d <- dmDSdata(counts=counts, samples=samps)
d
counts(d[1,])[,1:4]
n <- 12
n.small <- 6
d <- dmFilter(d,
              min_samps_feature_expr=n.small, min_feature_expr=10,
              min_samps_feature_prop=n.small, min_feature_prop=0.1,
              min_samps_gene_expr=n, min_gene_expr=10)
d
table(table(counts(d)$gene_id))
design_full <- model.matrix(~condition, data=DRIMSeq::samples(d))
colnames(design_full)
table(samps$condition)
set.seed(1)
system.time({
  d <- dmPrecision(d, design=design_full)
  d <- dmFit(d, design=design_full)
  d <- dmTest(d, coef="conditionControl")
})
res <- DRIMSeq::results(d)
head(res)
res.txp <- DRIMSeq::results(d, level="feature")
head(res.txp)
no.na <- function(x) ifelse(is.na(x), 1, x)
res$pvalue <- no.na(res$pvalue)
res.txp$pvalue <- no.na(res.txp$pvalue)
save(d,res,res.txp,file = 'DRIMSeq-out.Rdata')

是不是非常简单,就拿到了全部的转录本水平的差异表达 呢,还可以可视化如下:

image-20191106091900001

可以看到,我举例的这个项目里面,tumor和control组的样本量是不平衡的,而且基因ID也不容易理解,大家可以自行转换为基因的symbol,这样出图更直观。

学习这样的流程是需要一定背景知识的

首先是LINUX学习

我在《生信分析人员如何系统入门Linux(2019更新版)》把Linux的学习过程分成6个阶段 ,提到过每个阶段都需要至少一天以上的学习:

  • 第1阶段:把linux系统玩得跟Windows或者MacOS那样的桌面操作系统一样顺畅,主要目的就是去可视化,熟悉黑白命令行界面,可以仅仅以键盘交互模式完成常规文件夹及文件管理工作。

  • 第2阶段:做到文本文件的表格化处理,类似于以键盘交互模式完成Excel表格的排序、计数、筛选、去冗余,查找,切割,替换,合并,补齐,熟练掌握awk,sed,grep这文本处理的三驾马车。

  • 第3阶段:元字符,通配符及shell中的各种扩展,从此linux操作不在神秘!

  • 第4阶段:高级目录管理:软硬链接,绝对路径和相对路径,环境变量

  • 第5阶段:任务提交及批处理,脚本编写解放你的双手

  • 第6阶段:软件安装及conda管理,让linux系统实用性放飞自我

然后是R学习

我在在生信分析人员如何系统入门R(2019更新版) 里面给初学者的知识点路线图如下:

  • 了解常量和变量概念

  • 加减乘除等运算(计算器)

  • 多种数据类型(数值,字符,逻辑,因子)

  • 多种数据结构(向量,矩阵,数组,数据框,列表)

  • 文件读取和写出

  • 简单统计可视化

  • 无限量函数学习

必备书籍及视频

书籍贪多不烂,下面2本必买,读5遍以上:

视频必须强推生信技能树近30万学习量的基础合辑:

生信技能树可变剪切相关教程节选

因为做目录确实很浪费时间,差不多就下面这些,大家先学习吧:

(0)

相关推荐

  • R语言和STAN,JAGS:用RSTAN,RJAG建立贝叶斯多元线性回归预测选举数据

    原文链接:http://tecdat.cn/?p=21978 本文将介绍如何在R中用rstan和rjags做贝叶斯回归分析,R中有不少包可以用来做贝叶斯回归分析,比如最早的(同时也是参考文献和例子最多 ...

  • 初入IC行业后端学习建议

    很多同学毕业以后,能进到一个不错的公司,有大公司,有小公司,各有各的好,各有各的弊端.在小公司,可能事事亲历亲为,学习的东西比较多,但也有个问题,缺乏流程化管理,小公司带来的问题正是大公司不担心的:大 ...

  • 每月一生信流程之RNAseq123

    目前bioconductor社区有27个流程,早在2015/2016年我组织生信菜鸟团小伙伴建设bioconductor中文社区的时候就想系统性的学习和分享,一晃四五年过去了, 我们的biocondu ...

  • 每月一生信流程之rnaseqGene

    每月一生信流程栏目灵感来自于<铁汉1991>博客的<每日一生信>,他那个时候介绍的主要是生信基础知识,包括数据结构,数据格式,数据库资源,计算机基础等等,所以每天都可以进步,每 ...

  • 人一生要流多少眼泪,仿佛是苍天注定的更是无法逃避的

    ​2021年4月27日,晚21点左右到医院探望病人,路过急症室听到一女人一边嚎啕大哭,嘴里一边说着伤感的话,不知为什么我真想去安慰她,又怕引起她更加伤心,不经意间想到人一生要流多少眼泪,仿佛是苍天注定 ...

  • 诗词丨醉漾轻舟,信流引到花深处

    点绛唇·桃源 宋·秦观 醉漾轻舟,信流引到花深处. 尘缘相误,无计花间住. 烟水茫茫,千里斜阳暮. 山无数,乱红如雨.不记来时路. 译 文 醉酒后荡着小船,任流水引着轻舟飘向花草深处.现实世界的名利缠 ...

  • 我好恨!!!为什么没能早点看到这封信[流...

    我好恨!!!为什么没能早点看到这封信[流...

  • 西贝莜面村,以客户为中心的流程之美

    今天是周末,去西贝,用餐流程又简化了.一直有一个梦想...有时间的时候,我要整理开发一个餐厅的流程故事.扯远了,先说说今天感受到的西贝流程之美吧. 一.沙漏,背后是端到端流程绩效管理能力 说到餐厅行业 ...

  • 检测bam文件的完整度-流程之殇

    本来以为有bai文件就说明是流程运行是完整的,事实上我还是太年轻,最近处理一个 600个病人的肿瘤WES数据,走流程过程发现卡在CNVKIT,部分样本出现了:   File "pysam/l ...

  • 可变剪切流程之suppa的diffsplice太慢了

    我们发布了转录组产品线的一些服务,连接生信技能树粉丝群体的数据分析工程师和有数据分析的科研人员: 明码标价之转录组常规测序服务(仅需799每个样品) 明码标价之普通转录组上游分析 明码标价之转录组下游 ...

  • 如信流鼻血要仰头止血民间几大偏方会害了宝宝!

    多多今年一岁半,平时由奶奶照顾.不久前刚学会走路,多多揉着奶奶的时间去卫生间,跑到饮水机前玩.不小心碰到热水开关时,多多的左臂被热水烫伤.李奶奶立即找到牙膏抹在多多的手上.半个多小时后,她发现多多的手 ...