RNA-seq:Kallisto+Sleuth (2)

Kallisto下游推荐的分析软件是Sleuth,所以我们本次介绍如何使用Sleuth进行相关的分析。

RNA-seq在完成转录本的鉴定及定量后,我们经常做的分析之一就是差异表达。通常我们使用较多的有以下工具:

而Kallisto主要推荐的下游分析软件是Sleuth这个R包。Sleuth与其他常用的包进行比较其结果还是很不错的。

下面我们来介绍一下该包的使用。

Sleuth的安装

source("http://bioconductor.org/biocLite.R")
biocLite("rhdf5")
install.packages("devtools")
devtools::install_github("pachterlab/sleuth")

如果你安装了conda,也可以通过命令行的方式安装conda install --channel bioconda r-sleuth

Sleuth的使用

#设置kallisto生成的路径
base_dir <- "/home/617/sleuth_analysis/kallisto_qaunt_output"
#获取所有的simple_id,具体可以看一些file.path命令的使用
sample_id <- dir(file.path(base_dir))
sample_id
## [1] "WT_1" "WT_2" "WT_3" Mutation_1"
## [5] "Mutation_2" Muatation_3"
#获取结果文件的路径
kal_dirs <- sapply(sample_id, function(id) file.path(base_dir, id))
kal_dirs
##                                                  WT_1 
## "/home/617/sleuth_analysis/kallisto_qaunt_output/WT_1" 
##                                                  WT_2
## "/home/617/sleuth_analysis/kallisto_qaunt_output/WT_2" 
##                                                  WT_3 
## "/home/617/sleuth_analysis/kallisto_qaunt_output/WT_3" 
##                                                  Mutation_1 
## "/home/617/sleuth_analysis/kallisto_qaunt_output/Mutation_1" 
##                                                  Mutation_2
## "/home/617/sleuth_analysis/kallisto_qaunt_output/Mutation_2" 
##                                                  Mutation_3
## "/home/617/sleuth_analysis/kallisto_qaunt_output/Mutation_3"

#读取实验设计表
s2c <- read.table("./design_matrix.txt", header = TRUE, sep='\t',stringsAsFactors=FALSE)
s2c
##           sample condition reps
## 1 WT_1        WT    1
## 2 WT_2        WT    2
## 3 WT_3        WT    3
## 4 Mutation_1        Mutation    1
## 5 Mutation_2        Mutation    2
## 6 Mutation_3        Mutation    3
#与路径合并
s2c <- dplyr::mutate(s2c, path = kal_dirs)
print(s2c)
##           sample condition reps
## 1 WT_1        WT    1
## 2 WT_2        WT    2
## 3 WT_3        WT    3
## 4 Mutation_1        Mutation    1
## 5 Mutation_2        Mutation    2
## 6 Mutation_3        Mutation    3
##                                                                 path
## 1 /home/617/sleuth_analysis/kallisto_qaunt_output/WT_1
## 2 /home/617/sleuth_analysis/kallisto_qaunt_output/WT_2
## 3 /home/617/sleuth_analysis/kallisto_qaunt_output/WT_3
## 4 /home/617/sleuth_analysis/kallisto_qaunt_output/Mutation_1
## 5 /home/617/sleuth_analysis/kallisto_qaunt_output/IMutation_2
## 6 /home/617/sleuth_analysis/kallisto_qaunt_output/Mutation_3

#获取转录本ID信息
#方法一:基于biomart
library(biomaRt)
#change to genename
mart <- biomaRt::useMart(biomart = "ENSEMBL_MART_ENSEMBL",
                         dataset = "hsapiens_gene_ensembl",
                         host = 'ensembl.org')
t2g <- biomaRt::getBM(attributes = c("ensembl_transcript_id", "ensembl_gene_id",
                                     "external_gene_name"), mart = mart)
t2g <- dplyr::rename(t2g, target_id = ensembl_transcript_id,
                     ens_gene = ensembl_gene_id, ext_gene = external_gene_name)
#方法二:下载EnsDb.Hsapiens.v75或者其他版本相应的R包
library('EnsDb.Hsapiens.v75')
library('ensembldb')
mmsdb<- EnsDb.Hsapiens.v75
tx.mms<- transcripts(mmsdb, return.type = "DataFrame")
tx.mms<- tx.mms[, c("tx_id", "gene_id")]  
gene.mms<- genes(mmsdb, return.type = "DataFrame") 
gene.mms<- gene.mms[, c("gene_id", "symbol")]  
tx2genes.mms <- merge(tx.mms, gene.mms, by = "gene_id") 
t2g <- tx2genes.mms[, 2:3]
#方法三:自己制作相应的txt文件第一列为target_id,第二列为对应的gene(可以用ID或者是Symbol)
t2g <- read.table("./t2g.txt", header = TRUE, stringsAsFactors=FALSE)

#读取Kallisto结果文件
#如果之前在kallisto quant没有设置-b参数该步会报错
library(sleuth)
so <- sleuth_prep(s2c, ~ condition, target_mapping = t2g, extra_bootstrap_summary = TRUE)

#如果想要将一个基因的不同转录本合并,可以按照以下模式导入
so <- sleuth_prep(s2c, ~ condition, target_mapping = t2g, extra_bootstrap_summary = TRUE,gene_mode=T,aggregation_column = 'ext_gene')

#建立模型,该步通过依据不同实验条件下(WT与Mutation)的数据构建线性模型,以“smooth”每个样品的原始kallisto丰度估计值。
so <- sleuth_fit(so)
#为了鉴定不同组差异表达的转录本,sleuth进行第二次拟合即“reduced”模型,该模型假设两种条件下的丰度相等。然后Sleuth将识别与“full”模型明显更好拟合的转录本,即在假设丰度相等的情况下与reduced模型拟合度低,而加入变量不同的实验条件后与full模型的拟合度高,说明该转录本/基因表达有差异。
so <- sleuth_fit(so, ~1, 'reduced')
#Sleuth采取 likelihood ratio test(LRT) 进行鉴定
so <- sleuth_lrt(so, 'reduced', 'full')
#可以使用models()查看不同的模型
models(so)
## [  full  ]
## formula:  ~condition 
## coefficients:
##  (Intercept)
##      conditionWW
## [  reduced  ]
## formula:  ~1 
## coefficients:
##  (Intercept)

# LRT检验结果
sleuth_table <- sleuth_results(so, 'reduced:full', 'lrt', show_all = FALSE)
sleuth_significant <- dplyr::filter(sleuth_table, qval <= 0.05)

#Sleuth还提供了Wald test。该函数计算每个转录本上一个特定'beta'系数的Wald检验;这提供了β值,它们是成对比较的fold change偏差值。
so <- sleuth_wt(so,'conditionWT','full')
results_table <- sleuth_results(so, 'conditionWT', test_type = 'wt')
sleuth_significant <- dplyr::filter(results_table, qval <= 0.05)

#如何导出基因表达量TPM
sleuth_geneexp<-sleuth_to_matrix(so,'obs_norm', 'tpm')



以上就是Sleuth 的应用。如果你依然还是想要使用经典的DESeq2,你可以这样导入文件:

library(tximport)
library(DESeq2)
txi<-tximport(files=kal_dirs,type='kallisto',tx2gene=t2g)
dds1<-DESeqDataSetFromTximport(txi,s2c,~condition)

然后就可使用DESeq2进行下游的分析。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容