首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >每月一生信流程之rnaseqDTU(差异转录本)

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

作者头像
生信技能树
发布于 2019-11-09 09:19:45
发布于 2019-11-09 09:19:45
2.5K00
代码可运行
举报
文章被收录于专栏:生信技能树生信技能树
运行总次数:0
代码可运行

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

全部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流程

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
salmon quant -i $index -l A -1 $fq1 -2 $fq2  -p 4 -o quants/${sample}_quant

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

image-20191106090849429

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

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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流程即可:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
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更新版) 里面给初学者的知识点路线图如下:

  • 了解常量和变量概念
  • 加减乘除等运算(计算器)
  • 多种数据类型(数值,字符,逻辑,因子)
  • 多种数据结构(向量,矩阵,数组,数据框,列表)
  • 文件读取和写出
  • 简单统计可视化
  • 无限量函数学习
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
学习 Vue 3 全家桶 - vuex
现代 Web 应用都是由三大件构成,分别是:组件、数据和路由。在一些数据组件之间需要共享的时候,应该如何实现?
Cellinlab
2023/05/17
3620
学习 Vue 3 全家桶 - vuex
Vue3学习笔记Day10 如何使用Vuex进行数据跨组件交互?
那多个组件之间的数据通信是如何实现的呢?常见方案:定义全局变量,任何组件需要数据就去全局变量获取。
用户1072003
2023/02/23
8470
Vue3学习笔记Day10 如何使用Vuex进行数据跨组件交互?
Vue3学习笔记(七)—— 状态管理、Vuex、Pinia
理论上来说,每一个 Vue 组件实例都已经在“管理”它自己的响应式状态了。我们以一个简单的计数器组件为例:
张果
2022/11/28
4.2K0
Vue3学习笔记(七)—— 状态管理、Vuex、Pinia
Vue3.0商店后台管理系统项目实战-vuex是什么(5大语法)
Vue3.0官方文档:https://cn.vuejs.org/ Element Plus文档:https://element-plus.gitee.io/zh-CN/
王小婷
2022/10/28
6610
Vuex3.x、Vuex4.x状态管理器学习笔记
什么是状态管理器?方便调试,方便维护数据。https://vuex.vuejs.org/zh/#%E4%BB%80%E4%B9%88%E6%98%AF%E2%80%9C%E7%8A%B6%E6%80%81%E7%AE%A1%E7%90%86%E6%A8%A1%E5%BC%8F%E2%80%9D%EF%BC%9F
房东的狗丶
2023/02/17
1.7K0
vue3中使用Vuex
Vuex 曾经是Vue.js的官方状态管理库。为什么说是曾经呢,因为在Vue.js官方网站的生态系统的官方系统中找不到Vuex的影子了,取而代之的是Pinia。那么问题来了,既然Vue官方已经舍弃了Vuex,使用Pinia取而代之,我们还有必要去深入了解Vuex吗?
九仞山
2023/10/14
7600
vue3中使用Vuex
Vue3之状态管理:Vuex和Pinia,孰强孰弱?
在前端开发中,状态管理器是一种用于管理应用程序全局状态的工具。它通常用于大型应用程序,可以帮助开发者更好地组织和管理状态,并提供一些强大的工具来简化状态的变更和使用。
用户6297767
2023/11/21
2.8K0
Vue3之状态管理:Vuex和Pinia,孰强孰弱?
Vue3 的 7 种和 Vue2 的 12 种组件通信,值得收藏
如果父组件是混合写法,子组件纯 Vue3 写法的话,是接收不到父组件里 data 的属性,只能接收到父组件里 setup 函数里传的属性。
Swift社区
2024/10/10
3580
Vue3 的 7 种和 Vue2 的 12 种组件通信,值得收藏
Vue3.0再不学就out了!跟我入门第一天,含集成ts、router、vuex等使用方法
由于在setup中不能使用this, 因为setup在初始化之前执行的,所以setup无法访问this setup是一个独立的钩子函数,不会依赖vue实例组件,如果用到外部函数,都需要从外部获取 不能再直接访问 this.router或this.router 或 this.router或this.route 作为代替,我们使用useRouter和useRoute函数
玖柒的小窝
2021/10/06
5620
Vue+Vue-Router+Vuex+SSR项目
Vue-Vue-Router-Vuex-SSR Vue+Webpack工程流搭建 Vue+Vue-Router+Vuex项目架构 服务端渲染 现在的前端框架是纯客户端渲染的,(请求🤴网站的时候,返回的html是没有什么内容的),存在问题是没有办法seo, 白屏时间较长。需要等待js加载完成,执行完成之后才会显示内容。 服务端渲染解决这些问题。 webpack升级注意 ⚠️ :1. 版本变化 2. 配置变化 3. 插件变化 vue-loader配置 const isDev = process.env.NOD
达达前端
2022/04/13
9530
10分钟学会vuex
通过上面两个步骤,每个组件中都有了$store属性,就是我们创建的容器。里面有commit,dispatch,state,getters,actions,mutations,在每个组件中可以通过this.$store打印出来看看。
Qiang
2019/06/05
4920
10分钟学会vuex
Vue3 过10种组件通讯方式
众所周知,Vue.js 中一个很重要的知识点是组件通信,不管是业务类的开发还是组件库开发,都有各自的通讯方法。
德育处主任
2022/04/17
2K0
Vue3 过10种组件通讯方式
一文让你彻底搞懂 vuex,满满的干货
简单地讲:可以把多个组件都需要的变量全部存储到一个对象里面,然后这个对象放在顶层的 vue 实例中,让其他组件可以使用。这样多个组件就可以共享这个对象中的所有属性。
呆呆
2021/12/01
9370
[源码解读]一文读懂Vuex4源码
写作不易,未经作者允许禁止以任何形式转载! Vuex4 Vuex是在Vue中常用的状态管理库,在Vue3发布后,这个状态管理库也随之发出了适配Vue3的Vuex4 快速过Vuex3.x原理 为什么每个组件都可以通过this.$store访问到store数据? 在beforeCreate时,通过mixin的方式注入了store 为什么Vuex中的数据都是响应式的 创建store的时候调用的是new Vue,创建了一个Vue实例,相当于借用了Vue的响应式。 mapXxxx是怎么获取到store中的数据和方法的
前端LeBron
2021/12/08
7530
[源码解读]一文读懂Vuex4源码
Vue状态管理——Vuex
  前面我们已经介绍过父子组件之间的通信方式,父组件通过prop向子组件传递数据,子组件通过自定义事件向父组件传递数据。然而,在实际项目中,经常会遇到多个组件需要访问同一数据的情况,且都需要根据数据的变化做出响应,而这些组件之间可能并不是父子组件这种简单的关系。在这种情况下,就需要一个全局的状态管理方案。在Vue开发中,官方推荐Vuex。   Vuex是一个专门为Vue.js应用程序开发的状态管理模式。它采用集中式存储来管理应用程序中所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex也被集成到了Vue的官方调试工具vue-devtools中,提供了诸如零配置的time-travel调试、状态快照导入/导出等高级调试功能。 下图所示为Vuex的工作原理图
别团等shy哥发育
2023/02/25
2.4K0
Vue状态管理——Vuex
《vue3+ts+element-plus 后台管理系统系列》之vuex4.x
Vuex4.x 和 TS 一起分包变化也是比较多的,先从官方例子说起。基础例子请查看官网,传送vuex4.x官网。
星宇大前端
2021/03/02
1.4K0
《vue3+ts+element-plus 后台管理系统系列》之vuex4.x
浅析Vuex及相关面试题答案
自从学习了Vue框架,其中必不可少的会用到vuex这个核心插件,而且在做项目的时候,基本都会使用,可能你会使用vuex状态管理,但是对vuex原理存在着或多或少的的疑惑或不解,这篇文章就针对vuex原理进行研究,希望能帮助到大家,如果有不准确的地方,大家多多指教。。。
前端开发博客
2020/11/04
1.1K0
浅析Vuex及相关面试题答案
在 vue-4.5 中学习 vuex/超详细教程
基础目录结构:默认Vuex代码写在index中,modules模块化代码则放在Addition.js与Subition.js中;state、mutations、actions、getters均有两种调用方式
玖柒的小窝
2021/10/09
7560
在 vue-4.5 中学习 vuex/超详细教程
Vuex 深入浅出超详细
Vuex 官网🔗: Vuex 是一个专为 Vue.js 应用程序设计的状态管理库,它提供了一种集中式管理 应用中的状态;
Java_慈祥
2024/08/10
2240
Vuex 深入浅出超详细
vuex-4.0.0-alpha.1 体验
新的vuex 基础使用及api 没要太大变化, 调用方式更灵活. 但在当前的新的vue 版本下, vuex 存在的意义不大.
copy_left
2020/04/24
2.4K2
推荐阅读
相关推荐
学习 Vue 3 全家桶 - vuex
更多 >
LV.5
编程严选网软件架构师
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档