Day1—差异分析,我该如何选择?limma DESeq edge ?

目前,转录组学差异分析的三种常用流程:DEseq2edgeRlimma

在具体选择哪一个的问题上,有几个点需要明确:

  1. 在进行差异分析之前,首先明确你处理的是哪种测序数据。芯片测序只能用limma包分析,高通量测序(RNAseq)三者通吃。

  2. 此外,imma包在生物信息学分析中,还有一个很重要的功能是处理批次效应,特别是进行TCGAGTExs数据合并

  3. edgeR包有个优势,就是可以处理无生物学重复的样本,而DEseq2limma不可。

一.limma

1.  GSE42872数据获取

<pre class="md-fences md-end-block md-fences-with-lineno ty-contain-cm modeLoaded" spellcheck="false" lang="R" cid="n17" mdtype="fences" style="box-sizing: border-box; overflow: visible; font-family: Monaco, Consolas, &quot;Andale Mono&quot;, &quot;DejaVu Sans Mono&quot;, monospace; margin-top: 0px; margin-bottom: 20px; font-size: 0.9rem; display: block; break-inside: avoid; text-align: left; white-space: normal; background: rgb(51, 51, 51); position: relative !important; padding: 10px 10px 10px 0px; width: inherit; color: rgb(184, 191, 198); font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;"> ### 1.读入数据(以数据GSE42872为例)
 #方法1:直接借助getGEO函数读取
 library(GEOquery)
 library(limma)
 exprSet<-getGEO('GSE42872',destdir='.',
  AnnotGPL=F,
  getGPL=F) 
 #方法2:在GEO官网界面,下载数据Series Matrix File(s),然后本地读取
 exprSet <- read.table("data/GSE42872_series_matrix.txt",
  comment.char="!",
  stringsAsFactors=F,
  header=T)
 rownames(exprSet) <- exprSet[,1]
 exprSet <- exprSet[,-1]
 
 
 ### 2.数据预处理,探针ID转换,探针去重
 #注意此时数据的格式是矩阵
 ex <- exprSet
 qx <- as.numeric(quantile(ex, c(0., 0.25, 0.5, 0.75, 0.99, 1.0), na.rm=T))
 LogC <- (qx[5] > 100) ||
  (qx[6]-qx[1] > 50 && qx[2] > 0) ||
  (qx[2] > 0 && qx[2] < 1 && qx[4] > 1 && qx[4] < 2)
 # 开始判断
 if (LogC) {
  ex[which(ex <= 0)] <- NaN
  ## 取log2
  exprSet <- log2(ex)
  print("log2 transform finished")
 }else{
  print("log2 transform not needed")
 }
 boxplot(exprSet,outline=FALSE, notch=T, las=2)
 # 该函数默认使用quntile 矫正差异
 exprSet=normalizeBetweenArrays(exprSet)
 boxplot(exprSet,outline=FALSE, notch=T, las=2)
 exprSet <- as.data.frame(exprSet)
 
 
 ### 3.探针基因名转换
 ### platformMap 中有常见的平台个R注释包的对应关系,这是果子老师整理的。当然,平台对应的R注释包自行检索,也不麻烦。
 platformMap <- data.table::fread("resource/platformMap.txt",data.table = F)
 index <- "GPL6244" #平台的名称在GSE42872中查看
 paste0(platformMap$bioc_package[grep(index,platformMap$gpl)],".db") #输出结果即为R注释包
 library(hugene10sttranscriptcluster.db)  #hugene10sttranscriptcluster.db为上一步所得的结果
 probe2symbol_df <- toTable(get("hugene10sttranscriptclusterSYMBOL"))  #probe2symbol_df即为包含探针和基因名的数据
 
 
 ### 4.探针转换以及去重
 library(dplyr)
 library(tibble)
 exprSet <- exprSet %>%
  rownames_to_column("probe_id") %>%
  inner_join(probe2symbol_df,by="probe_id") %>%
  select(-probe_id) %>%
  select(symbol,everything()) %>%
  mutate(rowMean =rowMeans(.[,-1])) %>%
  arrange(desc(rowMean)) %>%
  distinct(symbol,.keep_all = T) %>%
  select(-rowMean) %>%
  column_to_rownames("symbol")
 
 save(exprSet,file = "output/exprSet_rmdup.Rdata")
 
  

2.  limma包进行差异分析流程

 ### 1.创建分组
 group <- c(rep("con",3),rep("treat",3))
 group <- factor(group,levels = c("con","treat"))
 
 ### 2.构建比较矩阵
 design <- model.matrix(~0+group)
 colnames(design) <- levels(group)
 design
 contrast.matrix <- makeContrasts(treat - con,levels=design)
 contrast.matrix 
 
 ### 3.接下来是一顿常规操作
 fit <- lmFit(exprSet,design)#线性模型拟合
 fit2 <- contrasts.fit(fit, contrast.matrix) 
 fit2 <- eBayes(fit)#贝叶斯检验
 
 ### 4.最终得到差异分析结果
 allDiff=topTable(fit2,adjust='fdr',coef=1,number=Inf)</pre>

二.DESeq

### 1.读入表达矩阵文件 (数据链接:https://pan.baidu.com/s/1MmO2_oPMkqYZjoulna527Q 提取码:djft)
exprSet <- data.table::fread("data/exprSet_counts.csv",data.table = F)

### 2.读入样本信息文件(数据链接:https://pan.baidu.com/s/1hGfBDTnD11_MJrNU4WxUTw 提取码:ci1h) 
metadata <- data.table::fread("data/metadata.txt",data.table = F,header = F)
rownames(metadata) <- metadata[,1]
metadata <- metadata[colnames(exprSet)[-1],]
# 添加分组信息
metadata$group <- ifelse(grepl("ESR1",metadata$V2),"treat","control")
metadata = metadata[,c(1,3)]
colnames(metadata) <- c("sample","group")


### 3.核心环节,构建dds对象,前面的操作都是铺垫
library(DESeq2)
dds <-DESeqDataSetFromMatrix(countData=exprSet,
 colData=metadata,
 design=~group,
 tidy=TRUE)# 第一列如果是基因名称,需要自动处理,设置参数tidy=TRUE
nrow(dds)
rownames(dds)
# 筛选样本,counts函数提取表达量数据
dds <- dds[rowSums(counts(dds))>1,]
nrow(dds)

### 4.数据质量判断
vsd <- vst(dds, blind = FALSE) # vst标准化处理
plotPCA(vsd, "group")# 内置函数plotPCA进行主成分分析画图

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

推荐阅读更多精彩内容