前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >🤒 limma | 配对样本的差异分析怎么搞!?(一)

🤒 limma | 配对样本的差异分析怎么搞!?(一)

作者头像
生信漫卷
发布2022-10-31 17:14:56
1.7K0
发布2022-10-31 17:14:56
举报

1写在前面

最近在用limma包做配对样本的差异分析,在这里和大家分享一下吧。

大家可以先思考一下,配对非配对的结果一样吗??🧐

应用场景: 同一病人的癌旁样本,同一样品的多时间点测序等。

2用到的包

代码语言:javascript
复制
rm(list = ls())
library(tidyverse)
library(limma)
library(GEOquery)

3示例数据

这里我从GEO数据库上download了一个dataset。😘 在3个样本中对T细胞B细胞分别进行了转录组分析。 每个样本的细胞都分为Controlanti-BTLA组。

我们先常规下载数据吧,boxplot不是很齐啊,强迫症的我必须标准化!🤨

代码语言:javascript
复制
GSE194314 <- getGEO('GSE194314', destdir=".",getGPL = F)
exprSet <- exprs(GSE194314[[1]]) 
boxplot(log2(exprSet))


代码语言:javascript
复制
exprSet <- normalizeBetweenArrays(exprSet) %>% 
  log2(.)
boxplot(exprSet)

nice!~ 齐了,接着做吧。

4获取分组数据

代码语言:javascript
复制
pdata <- pData(GSE194314[[1]])

5整理分组数据

这里我们提取出分组数据后转为factor

代码语言:javascript
复制
individuals <- factor(unlist(lapply(pdata$characteristics_ch1.1,function(x) strsplit(as.character(x),":")[[1]][2])))

treatment <- unlist(lapply(pdata$characteristics_ch1.2,function(x) strsplit(as.character(x),":")[[1]][2]))

treatment <- factor(treatment,levels = unique(treatment))

6非配对处理

6.1 整理分组矩阵

这里我们只把treatment作为分组信息纳入design中,进行配对

代码语言:javascript
复制
design_non_paried <- model.matrix(~ 0 + treatment)
colnames(design_non_paried) <- c("Control","anti-BTLA")

fit1 <- lmFit(exprSet,design_non_paried)
fit1 <- eBayes(fit1)

6.2 差异分析

代码语言:javascript
复制
allDiff_non_paired <- topTable(fit1,
                             adjust = 'BH',
                             coef =  "anti-BTLA",
                             n = Inf,
                             #p.value = 0.05
                             )

7配对处理

7.1 整理分组矩阵

代码语言:javascript
复制
design_paried <- model.matrix(~ individuals + treatment)
fit2 <- lmFit(exprSet,design_paried)
fit2 <- eBayes(fit2)

7.2 差异分析

代码语言:javascript
复制
allDiff_paired <- topTable(fit2,
                             adjust = 'BH',
                             coef = "treatment anti-BTLA",
                             n = Inf)

8对比结果

我们直接用火山图可视化对比一下吧。这里我们把阈值设置为|logFC|>1pvalue<0.05

代码语言:javascript
复制
library(EnhancedVolcano)
library(patchwork)

p1 <- EnhancedVolcano(allDiff_non_paired,
    lab = rownames(allDiff_non_paired),
    x = 'logFC',
    y =  'P.Value',
    title = 'non_paired',
    pointSize = 3.0,
    labSize = 6.0,
    legendPosition = 'right',
    pCutoff = 0.05,
    FCcutoff = 1)
  

p2 <- EnhancedVolcano(allDiff_paired,
    lab = rownames(allDiff_paired),
    x = 'logFC',
    y =  'P.Value',
    title = 'paired',
    pointSize = 3.0,
    labSize = 6.0,
    legendPosition = 'right',
    pCutoff = 0.05,
    FCcutoff = 1)

p1 + p2

配对非配对的区别还是挺大的!🤩🤩🤩

9小彩蛋

细心的小伙伴肯定发现了,这里我们假设T细胞B细胞是同一个细胞,不进行区分。🤨 但实际上需要进行T细胞B细胞分层对比,下期我们再介绍Multi-level如何处理吧。


最后祝大家早日不卷!~


本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-09-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信漫卷 微信公众号,前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1写在前面
  • 2用到的包
  • 3示例数据
  • 4获取分组数据
  • 5整理分组数据
  • 6非配对处理
    • 6.1 整理分组矩阵
      • 6.2 差异分析
      • 7配对处理
        • 7.1 整理分组矩阵
          • 7.2 差异分析
          • 8对比结果
          • 9小彩蛋
          相关产品与服务
          灰盒安全测试
          腾讯知识图谱(Tencent Knowledge Graph,TKG)是一个集成图数据库、图计算引擎和图可视化分析的一站式平台。支持抽取和融合异构数据,支持千亿级节点关系的存储和计算,支持规则匹配、机器学习、图嵌入等图数据挖掘算法,拥有丰富的图数据渲染和展现的可视化方案。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档