Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >差异分析①

差异分析①

作者头像
用户1359560
发布于 2018-08-27 03:34:31
发布于 2018-08-27 03:34:31
79600
代码可运行
举报
文章被收录于专栏:生信小驿站生信小驿站
运行总次数:0
代码可运行
  • 加载数据
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
setwd("D:\\diff")
# Reading in count data
files <- c("GSM1545535_10_6_5_11.txt", "GSM1545536_9_6_5_11.txt", 
           "GSM1545538_purep53.txt","GSM1545539_JMS8-2.txt", 
           "GSM1545540_JMS8-3.txt","GSM1545541_JMS8-4.txt", 
           "GSM1545542_JMS8-5.txt","GSM1545544_JMS9-P7c.txt", 
           "GSM1545545_JMS9-P8c.txt") 
read.delim(files[1], nrow=5)
  • 加载limma以及修改样本名
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(limma) 
library(edgeR) 
x <- readDGE(files, columns=c(1,3)) 
class(x)
dim(x)
# Organising sample information
samplenames <- substring(colnames(x), 12, nchar(colnames(x))) 
#截取x从第十二位到末尾的名字
samplenames

-加载样本分组信息

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
colnames(x) <- samplenames
group <- as.factor(c("LP", "ML", "Basal", "Basal",
                     "ML", "LP", "Basal", "ML", "LP")) 
x$samples$group <- group 
lane <- as.factor(rep(c("L004","L006","L008"), c(3,4,2))) 
x$samples$lane <- lane 
x$samples
> x$samples
                             files group lib.size norm.factors lane
10_6_5_11 GSM1545535_10_6_5_11.txt    LP 32863052            1 L004
9_6_5_11   GSM1545536_9_6_5_11.txt    ML 35335491            1 L004
purep53     GSM1545538_purep53.txt Basal 57160817            1 L004
JMS8-2       GSM1545539_JMS8-2.txt Basal 51368625            1 L006
JMS8-3       GSM1545540_JMS8-3.txt    ML 75795034            1 L006
JMS8-4       GSM1545541_JMS8-4.txt    LP 60517657            1 L006
JMS8-5       GSM1545542_JMS8-5.txt Basal 55086324            1 L006
JMS9-P7c   GSM1545544_JMS9-P7c.txt    ML 21311068            1 L008
JMS9-P8c   GSM1545545_JMS9-P8c.txt    LP 19958838            1 L008
  • 基因注释

这些基因信息可以使用特定的生物体包来检索,例如Mus.musculus8用于小鼠(或Homo.sapiens9用于人类)或biomaRt包,其连接Ensembl基因组数据库以执行基因注释。可以检索的信息类型包括gene symbols, gene names, chromosome names and locations, Entrez gene IDs, Refseq gene IDs and Ensembl gene IDs 等等。 biomaRt主要处理Ensembl基因ID,而Mus.musculus包含各种来源的信息,并允许用户在许多不同的基因ID之间进行选择作为关键。我们的数据集中可用的Entrez基因ID使用Mus.musculus软件包进行注释,以检索相关的基因符号和染色体信息。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(Mus.musculus) 
geneid <- rownames(x) 
genes <- select(Mus.musculus, keys=geneid, columns=c("SYMBOL", "TXCHROM"), 
                keytype="ENTREZID")
dim(genes)
head(genes)
#. For simplicity we do the latter, 
# keeping only the first occurrence of each gene ID.
genes <- genes[!duplicated(genes$ENTREZID),]
x$genes <- genes
x
  • 数据预处理

从原始尺度转换 对于差异表达和相关分析,基因表达很少在原始计数水平上考虑,因为文库测序的深度更大会导致更高的计数。相反,通常的做法是将原始计数转换为可以解决这种库大小差异的规模。流行的转换包括每百万次计数(CPM),每百万次计数(log-CPM),每千克转录本的读数(RPKM)和每千万转录本的百万分率(FPKM)。 在我们的分析中,CPM和log-CPM转换经常使用,尽管它们没有考虑RPKM和FPKM值所做的特征长度差异。尽管可以使用RPKM和FPKM值,但CPM和log-CPM值可以单独使用计数矩阵计算,并且足以用于我们感兴趣的比较类型。假设条件之间的异构体使用没有差异差异表达分析着眼于条件之间的基因表达变化,而不是比较多个基因的表达或得出绝对表达水平的结论。换句话说,基因长度对于感兴趣的比较保持不变,任何观察到的差异都是条件变化的结果,而不是基因长度的变化。 这里使用edgeR中的cpm函数将原始计数转换为CPM和log-CPM值,其中对数转换使用先前计数为0.25来避免采用零对数。如果基因长度可用,则RPKM值与使用edgeR中的rpkm函数的CPM值一样容易计算。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
cpm <- cpm(x) 
lcpm <- cpm(x, log=TRUE)
  • 去除低表达的基因

所有数据集将包括表达的基因和不表达的基因的组合。 虽然检查在一种条件下表达但不在另一种条件下表达的基因是有意义的,但是一些基因在所有样品中都未表达。 事实上,该数据集中19%的基因在所有九个样本中都有零个计数。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
table(rowSums(x$counts==0)==9)

keep.exprs <- rowSums(cpm>1)>=3
x <- x[keep.exprs,, keep.lib.sizes=FALSE]
dim(x)

library(RColorBrewer)
nsamples <- ncol(x)
col <- brewer.pal(nsamples, "Paired")
par(mfrow=c(1,2))
plot(density(lcpm[,1]), col=col[1], lwd=2, ylim=c(0,0.21), las=2,
     main="", xlab="")
title(main="A. Raw data", xlab="Log-cpm")
abline(v=0, lty=3)
for (i in 2:nsamples){
  den <- density(lcpm[,i])
  lines(den$x, den$y, col=col[i], lwd=2)
}
legend("topright", samplenames, text.col=col, bty="n")
lcpm <- cpm(x, log=TRUE)
plot(density(lcpm[,1]), col=col[1], lwd=2, ylim=c(0,0.21), las=2,
     main="", xlab="")
title(main="B. Filtered data", xlab="Log-cpm")
abline(v=0, lty=3)
for (i in 2:nsamples){
  den <- density(lcpm[,i])
  lines(den$x, den$y, col=col[i], lwd=2)
}
legend("topright", samplenames, text.col=col, bty="n")
  • 标准化基因表达分布

在样品制备或测序过程中,不具有生物学意义的外部因素会影响单个样品的表达。例如,与第二批处理的样品相比,在第一批实验中处理的样品可以具有更高的表达。假设所有样本应具有相似的表达值范围和分布。标准化需要确保每个样品的表达分布在整个实验中相似。 显示每个样本表达式分布(如密度或盒形图)的任何图都可用于确定是否有任何样本与其他样本不同。在这个数据集的所有样本中,log-CPM值的分布是相似的。 尽管如此,通过使用edgeR中的calcNormFactors函数来执行通过修剪M值平均值(TMM)的方法的归一化。这里计算的归一化因子用作库大小的缩放因子。使用DGEList对象时,这些规范化因子会自动存储在x $ samples $ norm.factors中。对于这个数据集,TMM归一化的影响是轻微的,这在比例因子的大小上是明显的,它们都相对接近于1。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
x <- calcNormFactors(x, method = "TMM")
x$samples$norm.factors
x2 <- x
x2$samples$norm.factors <- 1
x2$counts[,1] <- ceiling(x2$counts[,1]*0.05)
x2$counts[,2] <- x2$counts[,2]*5


par(mfrow=c(1,2))
lcpm <- cpm(x2, log=TRUE)
boxplot(lcpm, las=2, col=col, main="")
title(main="A. Example: Unnormalised data",ylab="Log-cpm")
x2 <- calcNormFactors(x2)
x2$samples$norm.factors
lcpm <- cpm(x2, log=TRUE)
boxplot(lcpm, las=2, col=col, main="")
title(main="B. Example: Normalised data",ylab="Log-cpm")
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.05.25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
【流程】使用limma、Glimma和edgeR,RNA-seq数据分析易如反掌
简单且高效地分析RNA测序数据的能力是Bioconductor的核心优势。RNA-seq分析通常从基因水平的序列计数开始,涉及到数据预处理,探索性数据分析,差异表达检验以及通路分析,得到的结果可用于指导进一步实验和验证研究。在这篇工作流程文章中,我们通过分析来自小鼠乳腺的RNA测序数据,示范了如何使用流行的edgeR包载入、整理、过滤和归一化数据,然后用limma包的voom方法、线性模型和经验贝叶斯调节(empirical Bayes moderation)来评估差异表达并进行基因集检验。通过使用Glimma包,此流程得到了增进,实现了结果的互动探索,使用户得以查看单个样本与基因。这三个软件包提供的完整分析突出了研究人员可以使用Bioconductor轻松地从RNA测序实验的原始计数揭示生物学意义。
王诗翔呀
2020/07/06
2.8K0
【流程】使用limma、Glimma和edgeR,RNA-seq数据分析易如反掌
差异分析③
一些研究需要不止一个调整后的p值cutoff值。 为了对重要性进行更严格的定义,可能需要log-fold-change(log-FC)超过最小值。 一般用来计算经验贝叶斯慢化t-统计的p值,并具有最小的log-FC要求。
用户1359560
2018/08/27
7930
差异分析③
一文看懂WGCNA 分析(2019更新版)
不过,我这点战绩根本就算不上什么,其实这个WGCNA包已经是十多年前发表的了,仍然是广受好评及引用量一直在增加,破万也是指日可待。
生信技能树
2019/09/30
30.6K2
一文看懂WGCNA 分析(2019更新版)
RNA-seq入门实战(八):GSVA——基因集变异分析
连续两次求贤令:曾经我给你带来了十万用户,但现在祝你倒闭,以及 生信技能树知识整理实习生招募,让我走大运结识了几位优秀小伙伴!大家开始根据我的ngs组学视频进行一系列公共数据集分析实战,其中几个小伙伴让我非常惊喜,不需要怎么沟通和指导,就默默的完成了一个实战!
生信技能树
2022/07/26
9.5K0
RNA-seq入门实战(八):GSVA——基因集变异分析
先差异后GSEA呢还是先ssGSEA后差异呢
我们一直以来都是给大家前面的两个方案,就是一定要先根据表达量矩阵做不同分组的差异,而且两者的结果一致性都还不错。但是前面的两个方案都会手动一个批次效应的影响,如果大家没有把握好其中的批次效应的去除,很容易在差异分析阶段就不小心引入了错误。
生信技能树
2022/07/26
1.5K0
先差异后GSEA呢还是先ssGSEA后差异呢
差异分析②
在这项研究中,我们感兴趣的是看到哪些基因在三种细胞群体之间的不同水平上表达。 在我们的分析中,假设基础数据是正态分布的,假设线性模型符合数据。 为了开始,设计矩阵与细胞群体和测序泳道(批次)信息一起建立。
用户1359560
2018/08/27
9060
差异分析②
什么?你做的差异基因方法不合适?
上一步,我们鉴定出了重要的干扰因素和解释变量可能对表达定量带来影响。scater允许在后续统计模型中引入这些变量来屏蔽技术操作带来的影响,或者可以给函数normaliseExprs()提供一个设计矩阵design matrix来直接移除干扰因素的影响。在这一章先不涉及这些。
生信宝典
2019/05/09
1.9K0
什么?你做的差异基因方法不合适?
奇怪的转录组差异表达矩阵之实验分组
使用RNA-Seq分析肺癌患者原发肿瘤中的基因表达差异,比较了有脑转移和没有脑转移的两组患者,以寻找不同表达的基因和潜在的信号通路
生信菜鸟团
2023/09/09
4600
奇怪的转录组差异表达矩阵之实验分组
RNA-seq入门实战(五):差异分析——DESeq2 edgeR limma的使用与比较
连续两次求贤令:曾经我给你带来了十万用户,但现在祝你倒闭,以及 生信技能树知识整理实习生招募,让我走大运结识了几位优秀小伙伴!大家开始根据我的ngs组学视频进行一系列公共数据集分析实战,其中几个小伙伴让我非常惊喜,不需要怎么沟通和指导,就默默的完成了一个实战!
生信技能树
2022/07/26
17.3K0
RNA-seq入门实战(五):差异分析——DESeq2 edgeR limma的使用与比较
跟着存档教程动手学RNAseq分析(三):使用DESeq2进行计数标准化
差异表达分析工作流程的第一步是计数标准化,这是对样本间基因表达进行准确比较所必需的。
王诗翔呀
2022/06/27
3.3K0
跟着存档教程动手学RNAseq分析(三):使用DESeq2进行计数标准化
初探mRNA、lncRNA联合分析之下游
虽然这个项目是在转录本水平上开展的研究,但既然我们拿到了基因表达矩阵,也干脆看一看一些基本情况,这个部分代码此处省略,基本上和后面的转录本水平对应代码,包括使用的封装函数,是一致的
生信菜鸟团
2023/08/23
7190
初探mRNA、lncRNA联合分析之下游
RNA-seq 231023
参考https://www.zhihu.com/people/gu_chen/posts?page=2
素素
2023/10/31
5390
转录组差异分析—基本流程
读取RawCounts.csv文件,其文件形式如下图行名为ensembleid,列名为样本名称。
sheldor没耳朵
2024/07/29
2340
转录组差异分析—基本流程
lncRNA实战项目-第六步-WGCNA相关性分析
WGCNA将lncRNA分成18个模块(3635个lncRNA),空间模块中lncRNA表达呈现明显的组织区域特异性,如:CB (M1, 794个lncRNAs),DG/CA1 (M2, 443个lncRNAs), CA1 (M4, 369个lncRNAs),neocortex (M7, 123个lncRNAs)和OC (M10,57个lncRNAs)。时间模块中lncRNA表达与年龄有关,而与组织区域不明显;性别模块中lncRNA表达与性别和年龄都相关。每个模块就必须做pathway/go等数据库的注释分
生信技能树
2018/03/05
5.2K0
lncRNA实战项目-第六步-WGCNA相关性分析
影响差异分析后的火山图的对称性的因素有哪些?
这个有点丑的火山图对应的文章是:《In vivo transcriptional analysis of mice infected with Leishmania major unveils cellular heterogeneity and altered transcriptomic profiling at single-cell resolution》,如下所示 :
生信技能树
2022/07/26
1.5K0
影响差异分析后的火山图的对称性的因素有哪些?
院士团队的WGCNA挖掘文章修改成为癌症转移与否关键模块
代码是完全公开的,大家很容易复制粘贴到自己的表达量矩阵群,其实算起来WGCNA本身就一个函数而已,就是划分基因模块,其它都是附加分析。总体来说就是4个步骤:
生信技能树
2023/09/04
4730
院士团队的WGCNA挖掘文章修改成为癌症转移与否关键模块
RNA-seq入门实战(十一):WGCNA加权基因共表达网络分析——关联基因模块与表型
连续两次求贤令:曾经我给你带来了十万用户,但现在祝你倒闭,以及 生信技能树知识整理实习生招募,让我走大运结识了几位优秀小伙伴!大家开始根据我的ngs组学视频进行一系列公共数据集分析实战,其中几个小伙伴让我非常惊喜,不需要怎么沟通和指导,就默默的完成了一个实战!
生信技能树
2022/07/26
13.8K3
RNA-seq入门实战(十一):WGCNA加权基因共表达网络分析——关联基因模块与表型
RNA-seq数据差异表达分析
分析转录组测序数据时,通常使用p值/q值和foldchange值来衡量基因的差异的表达水平。目前,大家普遍都认为转录组数据的read counts(即基因的reads数量)符合泊松分布。几个用于差异表达分析的R包如DESeq2和edgeR等,都是基于负二项分布模型设计的,整体而言结果相差不大。Limma包也可以用来分析RNA-seq数据,但主要用于分析芯片数据,现在用的人不多了。当然如果用泊松分布来做差异表达分析的话,也存在缺点,可能会忽视生物学样本间的个体差异。
阿凡亮
2020/04/13
4.4K0
带有疾病进展的多分组差异结果如何展示?
此次给绘制的图来自文献《Triple DMARD treatment in early rheumatoid arthritis modulates synovial T cell activation and plasmablast/plasma cell differentiation pathways》,是2017发表的,使用了他们团队自己2016发表的转录组测序数据,所以其实是有两个转录组测序数据集。
生信技能树
2025/01/02
1380
带有疾病进展的多分组差异结果如何展示?
找不到差异就删样品吗
对应的文章是:《Single-cell transcriptome analysis of human oocyte ageing》. J Cell Mol Med 2021 Jul; 之所以说这个数据集奇怪,因为它确实是单细胞,但是表达量矩阵看起来就跟传统的bulk转录组测序后的表达量矩阵一模一样,看起来非常像一个2分组的传统的bulk转录组测序:
生信技能树
2024/12/24
890
找不到差异就删样品吗
推荐阅读
相关推荐
【流程】使用limma、Glimma和edgeR,RNA-seq数据分析易如反掌
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验