【万能代码分享】一键搞定Limma包非配对差异分析+热图+火山图+GO分析+KEGG分析+GSEA分析!

文摘   2024-11-14 21:52   美国  

热门免费资源:

一、国自然类:


1 1300份已中标标书全文

国自然项目答辩PPT

标书写作及参考文献模板

7 更多资源在更新中.....

2021历年国自然标书全文

国自然热点培训课

18-21年国自然中标清单

二、SCI实验类:

58套SCI实验操作视频

生物学实验操作手册

27款生物科研软件

qPCR计算万能模板

Excel统计分析模板

11 更多资源在更新中.....

69个SCI实验操作步骤

基因敲降shRNA实验步骤

近3年SCI实验资源汇总

Excel函数合集

10 SCI写作万能模板

三、科研绘图类:

PPT科研绘图素材合集

Office 正版软件安装包

直装版PS+AI安装包

PS修各种SCI实验图视频

资源共享群

PPT科研绘图插件VIP版

PPT/PS/AI科研绘图视频

Adobe全家桶安装包

PS 2021 (Mac)安装包

10 相亲交友群


一键搞定GEO芯片测序
注意:我们从GEO下载芯片测序(Array)数据之后,一般都是用limma包进行差异分析。那今天我们给大家分享的是:

“Limma包差异分析+热图+火山图+GO分析+KEGG分析+GSEA分析全套万能代码(附代码交流群)”


如下免费下载:

🔽①长按下方二维码关注🔽

②对话框输入关键词:220707

②对话框输入关键词:220707

②对话框输入关键词:220707


是全套的万能代码,自动判断是否需要log2转换,自动ID转换,自动同基因名处理,你只要知道下载的数据有几个样本就行。大家可以进群,群内不答疑,可代码共享。下面开始操作:

从生物医学之家进入GEO数据库,检索自己想要的测序数据(GSE是测序的代号):


我这里以GSE42872为例,检索之后进入该测序的主页:


我们可以看到,是array芯片测序数据(要注意与sequence区分),6个测序样本,3实验组比3对照组:



我们点击GEO2R在线差异分析(实验组比上对照组):


但是偶尔网络不好的时候,就是麻烦,老是报错:


网络好的时候,结果如下,我们发现CD36的lgFC是5.78,也就是实验组高表达(要记住这个数字,后面我们用代码跑出来也是这样,从而检验我们的代码是正确的)



那我们用R语言跑代码来做(这一套代码是万能代码,全套代码你只需要修改两个参数,其他什么都不用管,比如是否需要log,同基因名怎么办等等,这些你都不需要考虑)。

我们点击下载基因表达矩阵(同时记住测序公司的平台是GPL6244,跑代码的时候要用):


下载如下,是txt格式文件,下载后命名为1_GSE42872_series_matrix.txt随后我们还要准备代码文件【0_GEO_limma.R】平台文件【1_PlatformMap.txt】,我们把这三个文件放在一个文件夹下:


分别打开看看格式:


可以看到下面红色方框就是我们要的矩阵(行名是探针名,列名是样本名)



平台文件是我们自己整理的,网上也有很多可以下载,大家也可以自行下载,里面是平台GPL和需要的ID转换R包一一对应:



随后,我们就可以打开代码。具体如下(万能代码):

### 公众号:科研部### 公众号:科研部### 公众号:科研部### 该代码分为十部分:### 1.读入探针矩阵数据### 2.数据预处理:NA去除+log2转换+样本芯片矫正### 3.探针ID和基因名symbol转换### 4.基因Symbol表达矩阵获取:探针矩阵转换为基因Symbol矩阵+同名symbol保留表达量的最大值。### 5.使用limma包来做芯片的差异分析### 6.输出差异基因### 7. 作图,差异表达图,热图,火山图。### 8. 差异基因GO分析### 9. 差异基因KEGG分析### 10. 差异基因集的GSEA富集分析。

第零步,添加镜像,免得后面安装R包报错:

##################################################################################################### 0. 镜像##################################################################################################options(download.file.method = 'libcurl')options(url.method='libcurl')options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")options("repos" = c(CRAN="https://mirrors.tuna.tsinghua.edu.cn/CR

第一步,读入探针矩阵文件,提取探针表达矩阵:

##################################################################################################### 1.读入探针矩阵数据##################################################################################################exprSet <- read.table("1_GSE42872_series_matrix.txt",                      comment.char="!",                      stringsAsFactors=F,                      header=T)### comment.char="!" 意思是!开头的行作为注释
rownames(exprSet) <- exprSet[,1]exprSet <- exprSet[,-1]### 第一列变成行名

第二步,表达矩阵预处理:NA去除+log2转换+样本间芯片矫正:

##################################################################################################### 2.数据预处理:NA去除+log2转换+样本芯片矫正#################################################################################################### NA的去除,公众号:科研部ex <- exprSetqx <- 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)
## 自动判断是否需要log2转换,需要则进行log2转换if (LogC) { ex[which(ex <= 0)] <- NaN ## 取log2 exprSet <- log2(ex) print("log2 transform finished")}else{ print("log2 transform not needed")}
## 样本芯片矫正library(limma)boxplot(exprSet,outline=FALSE, notch=T, las=2)#矫正之前单个样本值,此时平不平都无所谓。exprSet=normalizeBetweenArrays(exprSet)### 该函数默认使用quntile 矫正样本间差异。(公众号:科研部)boxplot(exprSet,outline=FALSE, notch=T, las=2)#矫正之后单个样本值,此时是平的。exprSet <- as.data.frame(exprSet)

样本间芯片矫正前图如下,可以看到样本间是比较平的,不需要使用后面的矫正了。


那我们这里是万能代码,所以用exprSet=normalizeBetweenArrays(exprSet)的函数默认使用的quntile 矫正样本间差异。样本间芯片矫正后图如下,还是一样的平:


第三步,探针ID和基因名Symbol转换:

##################################################################################################### 3.探针ID和基因名symbol转换#################################################################################################### 读入platformMap.txt文件,platformMap 中有常见的GPL平台和ID转换需要的R包(一一对应)。platformMap <- data.table::fread("1_platformMap.txt",data.table = F)
## 找到该平台对应的ID转换R包index <- "GPL6244"## 数据储存在bioc_package这一列中paste0(platformMap$bioc_package[grep(index,platformMap$gpl)],".db")
## 安装该R包#if (!require("BiocManager", quietly = TRUE))# install.packages("BiocManager")#BiocManager::install("hugene10sttranscriptcluster.db")
## 加载该R包,并将探针ID转换成基因symbollibrary(hugene10sttranscriptcluster.db)probe2symbol_df <- toTable(get("hugene10sttranscriptclusterSYMBOL"))

这一步就是你要改这个平台GPL6244(就是把index <- "GPL6244"改成你自己数据的GPL号,告诉它我的芯片平台是GPL6244,然后用里面对应的R包进行ID转换,把探针的数字ID转换成基因名Symbol。

第四步,正式开始转换,获取基因Symbol表达矩阵:

##################################################################################################### 4.基因Symbol表达矩阵获取:探针矩阵转换为基因Symbol矩阵+同名symbol保留表达量的最大值。##################################################################################################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 = "2_exprSet_rmdup.Rdata")

第五步,Limma包差异分析:

##################################################################################################### 5.使用limma包来做芯片的差异分析#################################################################################################### 1.创建分组group <- c(rep("con",3),rep("treat",3))#意思是在矩阵里面前面3个对照组,后面3个实验组group <- factor(group,levels = c("con","treat"))
## 样本PCA主成分分析:提前预测结果,看两组样本是否分开,分开则说明差异挺大的,可以进行差异分析。res.pca <- prcomp(t(exprSet), scale = TRUE)library(factoextra)fviz_pca_ind(res.pca,col.ind = group)
## 构建比较矩阵design <- model.matrix(~group)## 比较矩阵命名colnames(design) <- levels(group)design
## 2.线性模型拟合fit <- lmFit(exprSet,design)## 3.贝叶斯检验fit2 <- eBayes(fit)## 4.输出差异分析结果,其中coef的数目不能操过design的列数allDiff=topTable(fit2,adjust='fdr',coef=2,number=Inf)## 这个数据很重要需要保存一下save(allDiff,file = "2_allDiff.Rdata")

这一步,唯一要的是group <- c(rep("con",3),rep("treat",3))#意思是在矩阵里面,前面3个是对照组,后面3个是实验组。那分好组后,PCA看是否分开:


从图可以看出,是分的很开的,差异分析才可靠。

第六步,输出差异基因:


差异基因如下:


第七步,作图。

先作一个基因看看,CD36确实升高了,并且有统计学意义:


再看看MOXD1:


再画热图,选取一群adj.P.Val < 0.05和abs(logFC) >3的差异基因做热图展示:


最后画火山图:


第八步,差异基因集的GO富集分析:

看前面代码,我们把差异基因表格保存为了2_diffgene_count.csv,打开看看:


富集分析如下,并保存结果:


结果打开看看:


选择GO分析中BP,CC,MF中P最小的前10个展现:


图片如下:


第九步,差异基因集的KEGG富集分析:


KEGG富集分析结果如下,不用再ID转换之类:


图如下,不会字体重叠之类:


还用pathway生成了新的文件夹:



文件夹如下:



第十步,所有基因的GSEA富集分析:


GSEA富集之后,自己可以选择行的将自己想要的结果可视化出来:



而把所有的GSEA结果保存起来:


所以,有了这个代码,你会从最初的3个文件:


一键跑完,最后16个文件:


好了,代码和演示数据,我已经上传百度云了:


“Limma包差异分析+热图+火山图+GO分析+KEGG分析+GSEA分析全套万能代码(附代码交流群)
如下免费下载:

🔽①长按下方二维码关注🔽

②对话框输入关键词:220707

②对话框输入关键词:220707

②对话框输入关键词:220707


更多免费资源:

三、科研绘图类:

PPT科研绘图素材合集

Office 正版软件安装包

直装版PS+AI安装包

PS修各种SCI实验图视频

AI科研绘图素材合集

11 AI科研绘图视频

13 SPSS统计分析实操课程

15 Origin绘图最全教程

17 Graphpad绘图视频

19 Image J图片处理视频

21 更多资源在更新中.....

PPT科研绘图插件VIP版

PPT/PS/AI科研绘图视频

Adobe全家桶安装包

PS 2021 (Mac)安装包

10 AI 2021安装包及素材

12 30 GB科研作图资源

14 Origin2021软件+教程

16 GraphPad绘图最全模板

18 Stata统计分析视频

20 Sigma plot绘图软件和视频

四、生信和写作类:

15套生信实操课程

TCGA数据挖掘课

零代码复现6分SCI教程

零代码复现4分SCI教程

WGCNA分析课程

11 GO分析傻瓜式教程

13 GSEA分析傻瓜式教程

15 渐变火山图傻瓜式教程图

17 GEO+TCGA数据挖掘课

19 41GB的生信分析+实验资源

GEO数据挖掘课

200篇生信自学范文

零代码复现5分SCI教程

8分SCI零代码复现步骤

10 超全生信数据库使用教程

12 KEGG富集分析教程

14 Meta分析范文+实操课

16 交集基因筛选高级教程

18 生信软件合集

辛苦整理,全文无任何广告!

觉得有用的话,您就点个在看、点赞!

科研部
由哈佛医学院及国内高校硕博们创办,一个共享临床论文、科研实验、生信挖掘、雅思托福等资源的平台!
 最新文章