GSVA,GSEA,KEGG,GO学习

news2024/11/20 13:28:32

目录

GSVA

1:获取注释基因集

2:运行

GSEA

1,示例数据集

2,运行

GSEA_KEGG富集分析

GSEA_GO富集分析

DO数据库GSEA

MSigDB数据库选取GSEA

KEGG

1:运行

2:绘图

bar图

气泡图

绘图美化

GO


GSVA

1:获取注释基因集

2:运行

GSEA

1,示例数据集

2,运行

GSEA_KEGG富集分析

GSEA_GO富集分析

DO数据库GSEA

MSigDB数据库选取GSEA

KEGG

GO


GSVA

【精选】RNA 18. SCI 文章中基因集变异分析 GSVA_gsva分析-CSDN博客

RNA-seq入门实战(八):GSVA——基因集变异分析 - 知乎 (zhihu.com)

表达矩阵反映了样本和基因的关系,则GSVA将一个“样本×基因”的矩阵转化为“样本×通路”的矩阵,直接反映了样本和读者感兴趣的通路之间的联系。因此,如果用limma包做差异表达分析可以寻找样本间差异表达的基因,同样地,使用limma包对GSVA的结果(依然是一个矩阵)做同样的分析,则可以寻找样本间有显著差异的通路。这些“差异表达”的通路,相对于基因而言,更加具有生物学意义,更具有可解释性,是统计学与生物学成功结合后,对GSEA结果的一次升华,可以进一步用于肿瘤subtype的分型等等与生物学意义结合密切的探究。

1:获取注释基因集

可以用msigdbr包下载读取或者GSEA | MSigDB | Human MSigDB Collections (gsea-msigdb.org)下载整理。 按需下载整理

##进行数据读取
geneSets <- getGmt('c2.cp.kegg_medicus.v2023.2.Hs.symbols.gmt')    ###下载的基因集

##下载symbols的 注释文件,使用表达矩阵是省略了转换的麻烦
2:运行
rm(list = ls())  ## 魔幻操作,一键清空~
options(stringsAsFactors = F)

library(GSVA)
library(GSEABase)
library(clusterProfiler)

expr <- read.csv("easy_input_expr.csv", row.names = 1)#表达矩阵
geneSets <- getGmt('h.all.v2023.2.Hs.symbols.gmt')##symbols 较为方便

##运行
GSVA_hall <- gsva(expr=as.matrix(expr),#需要为matrix格式
                  gset.idx.list=geneSets, 
                  #   method="gsva", #c("gsva", "ssgsea", "zscore", "plage")
                  mx.diff=T, # 数据为正态分布则T,双峰则F
                  kcdf="Gaussian", #CPM, RPKM, TPM数据就用默认值"Gaussian", read count数据则为"Poisson",
                  parallel.sz=4,# 并行线程数目
                  min.sz=2) 

GSEA

快速拿捏KEGG/GO/Reactome/Do/MSigDB的GSEA富集分析! (qq.com)

【精选】RNA 11. SCI 文章中基因表达富集之 GSEA_gsea数据库-CSDN博客

GSEA(Gene Set EnrichmentAnalysis),即基因集富集分析,它的基本思想是使用预定义的基因,将基因按照在两类样本中的差异表达程度排序,然后检验预先设定的基因集合是否在这个排序表的顶端或者底端富集。

1,示例数据集
rm(list = ls()) 
library(DOSE)##包里有测试数据
library(clusterProfiler)
require(enrichplot)
options(stringsAsFactors = F)

data(geneList, package = "DOSE")
head(geneList)

##DOSE提供的一个geneList,name是每一个entrez gene id, value是log2FoldChange值。
df <- as.data.frame(geneList)##查看:还原gene symbol
df$ENTREZID <- rownames(df)
#?bitr 函数查看
df1<-bitr(df$ENTREZID, #转换的列是df数据框中的SYMBOL列
          fromType = "ENTREZID",#需要转换ID类型
          toType = "SYMBOL",#转换成的ID类型
          OrgDb = "org.Hs.eg.db")#物种选择(小鼠的是org.Mm.eg.db)
df2<-merge(df,df1,by="ENTREZID",all=F)##进行合并

测试数据查看

2,运行
GSEA_KEGG富集分析
rm(list = ls()) 
library(DOSE)##包里有测试数据
library(clusterProfiler)
require(enrichplot)
options(stringsAsFactors = F)
##input需要的是entrez ID+log2fc文件(包里的文件即为entrez ID+log2fc)
##如果不是entrez ID+log2fc,需要进行转换

##数据集查看和整理
data(geneList, package = "DOSE")
head(geneList)
#4312     8318    10874    55143    55388      991 
#4.572613 4.514594 4.418218 4.144075 3.876258 3.677857 
df <- as.data.frame(geneList)##查看:还原gene symbol
df$ENTREZID <- rownames(df)
#?bitr 函数查看
df1<-bitr(df$ENTREZID, #转换的列是df数据框中的SYMBOL列
          fromType = "ENTREZID",#需要转换ID类型
          toType = "SYMBOL",#转换成的ID类型
          OrgDb = "org.Hs.eg.db")#物种选择(小鼠的是org.Mm.eg.db)
df2<-merge(df,df1,by="ENTREZID",all=F)##进行合并
df3 <-df2[,-1] 
head(df3)#自己分析常见的格式
#geneList SYMBOL
#1 -0.28492113   NAT2

##以df3 为input进行转换:添加entrez ID列,symbol转entrez ID
##注意还原结果少几十个基因:因为一个entrez ID可能对应多个symbol(一基因多symbol)
dat<-bitr(df3$SYMBOL, 
          fromType = "SYMBOL", #现有的ID类型
          toType = "ENTREZID",#需转换的ID类型
          OrgDb = "org.Hs.eg.db")#物种
head(dat)##转换时部分SYMBOL会转换失败

dat1<-merge(df3,dat,by="SYMBOL",all=F)##进行合并
#按照foldchange排序
sortdf<-dat1[order(dat1$geneList, decreasing = T),]#这里geneList其实是logFC值
head(sortdf)

geneList1 <- sortdf$geneList##先把foldchange按照从大到小提取出来
names(geneList1) <- sortdf$ENTREZID###给上面提取的foldchange加上对应上ENTREZID
head(geneList1 )
#4312     8318    10874    55143    55388      991 
#4.572613 4.514594 4.418218 4.144075 3.876258 3.677857  

#GSEA_KEGG富集分析:
KEGG_ges <- gseKEGG(
  geneList = geneList1,#input
  organism = "hsa")#物种

#按照enrichment score从高到低排序,便于查看富集通路
sortKEGG_ges<-KEGG_ges[order(KEGG_ges$enrichmentScore, decreasing = T),]
#sortKEGG_ges <- KEGG_ges@result

说明:在GSEA中,基因集的富集分数可以为正或负,表示该基因集在对应生物条件下的富集程度。富集分数的绝对值越大,表示富集程度越高。 对于AB两个亚型的差异基因,在GSEA富集分析中,结果按照富集分数排序。通常情况下,富集分数为正最大的前几个表示在A亚型中富集的集中的通路,而富集分数负值最大的几个表示在B亚型中富集的集中的通路。 需要注意的是,富集分数的正负并不代表富集的方向,而是表示富集程度的大小。因此,正值最大的前几个通路表示在A亚型中富集程度最高的通路,负值最大的几个通路表示在B亚型中富集程度最高的通路。 这样的排序方式可以帮助我们理解不同亚型或条件下基因集的富集模式,以及与这些通路相关的生物学过程和功能。

#进行绘图
gseaplot2(KEGG_ges, row.names(sortKEGG_ges)[1:5])##可以自行选择通路

dev.off()
#个性化展示(选取结果中的ID)
p1 <- gseaplot2(KEGG_ges,
                geneSetID = c("hsa03030","hsa03050","hsa04710","hsa00350"),#通路
                color = c("#003399", "#FFFF00", "#FF6600","black"),#颜色
                pvalue_table = TRUE,#显示P值
                ES_geom = "line")#"dot"将线转换为点
p1

GSEA_GO富集分析

主要是函数的不同 gseGO 函数

#GSEA
rm(list = ls()) 
library(DOSE)##包里有测试数据
library(clusterProfiler)
require(enrichplot)
options(stringsAsFactors = F)

##数据集查看和整理
data(geneList, package = "DOSE")
head(geneList)

##GSEA_GO富集分析:
GO_ges <- gseGO(geneList = geneList,
                OrgDb = "org.Hs.eg.db",
                ont = "CC", #one of "BP", "MF", and "CC" subontologies, or "ALL" for all three.
                minGSSize = 10,
                maxGSSize = 500,
                pvalueCutoff = 0.05,
                eps = 0,
                verbose = FALSE)
#res <- GO_ges@result
res1<-GO_ges[order(GO_ges$enrichmentScore, decreasing = T),]
DO数据库GSEA

需要library(DOSE)   DO(Disease Ontology)数据库GSEA

#GSEA
rm(list = ls()) 
library(DOSE)##包里有测试数据
library(clusterProfiler)
require(enrichplot)
options(stringsAsFactors = F)

##数据集查看和整理
data(geneList, package = "DOSE")
head(geneList)

##GSEA_DO(Disease Ontology)富集分析:
DO_ges <- gseDO(geneList,
                minGSSize = 10,
                maxGSSize = 500,
                pvalueCutoff = 0.05,
                pAdjustMethod = "BH",
                verbose = FALSE,
                eps = 0)

#res <- DO_ges@result
res1<-DO_ges[order(DO_ges$enrichmentScore, decreasing = T),]
MSigDB数据库选取GSEA

msigdf + clusterProfiler全方位支持MSigDb (guangchuangyu.github.io)

Q&A | 如何使用clusterProfiler对MSigDB数据库进行富集分析 - 知乎 (zhihu.com)

#GSEA
rm(list = ls()) 
library(DOSE)##包里有测试数据
library(clusterProfiler)
require(enrichplot)
library(msigdbr)
options(stringsAsFactors = F)

##数据集查看和整理
data(geneList, package = "DOSE")
head(geneList)

##msigdbr 提取注释自己所需的注释基因集
H <- msigdbr(species = "Homo sapiens", 
              category = "H") %>% 
  dplyr::select(gs_name, entrez_gene)

#C2all <- msigdbr(species = "Homo sapiens", 
#              category = "H")#完整的注释

##富集分析
H_ges <- GSEA(geneList,
               TERM2GENE = H,##注释基因集
               minGSSize = 10,
               maxGSSize = 500,
               pvalueCutoff = 0.05,
               pAdjustMethod = "BH",
               verbose = FALSE,
               eps = 0)

#res <- H_ges@result
res1<-H_ges[order(H_ges$enrichmentScore, decreasing = T),]

KEGG

KEGG富集分析及可视化,一把子拿捏! (qq.com)

RNA 10. SCI 文章中基因表达富集之 KEGG 注释_kegg中qvalue_桓峰基因的博客-CSDN博客

  在线KEGGDAVID Functional Annotation Bioinformatics Microarray Analysis (ncifcrf.gov)

DAVID 在线数据库进行 GO/ KEGG 富集分析_david数据库go富集分析-CSDN博客

1:运行
##差异基因KEGG富集分析
rm(list = ls())  ## 魔幻操作,一键清空~
options(stringsAsFactors = F)
library(dplyr)#数据清洗
library(org.Hs.eg.db)#ID转换
library(clusterProfiler)#富集分析
library(ggplot2)#绘图
library(RColorBrewer)#配色调整
library(DOSE)##包里有测试数据

data(geneList, package = "DOSE")
head(geneList)
df <- as.data.frame(geneList)##查看:还原gene symbol
df$ENTREZID <- rownames(df)
#?bitr 函数查看
df1<-bitr(df$ENTREZID, #转换的列是df数据框中的SYMBOL列
          fromType = "ENTREZID",#需要转换ID类型
          toType = "SYMBOL",#转换成的ID类型
          OrgDb = "org.Hs.eg.db")#物种选择(小鼠的是org.Mm.eg.db)
df2<-merge(df,df1,by="ENTREZID",all=F)##进行合并

##选择logFC>1.5的基因:我们以这个筛选的差异基因集为input测试
df3 <- df2[abs(df2$geneList)>1.5,]##abs() 表示绝对值
##自己使用时进行自定义

KEGG_diff <- enrichKEGG(gene = df3$ENTREZID,
                        organism = "hsa",#物种,Homo sapiens (human)
                        pvalueCutoff = 0.05,
                        qvalueCutoff = 0.05)

KEGG_result <- KEGG_diff@result

#保存富集结果:
save(KEGG_diff,KEGG_result,file = c("KEGG_diff.Rdata"))
#write.csv(KEGG_result,file = "KEGG_result.csv")

ID:pathway的ID名;GeneRatio:差异基因中富集到该pathway的基因数目/富集到所有pathway的总差异基因数目;BgRatio:所有背景基因中富集到该pathway的基因数目/总背景基因数目;

Count:富集到该pathway的基因数目

2:绘图
bar图
#绘图
library(enrichplot)
library(stringr)
library(cowplot)
library(ggplot2)
barplot(KEGG_diff,
        x = "Count", #or "GeneRatio"
        color = "pvalue", #or "p.adjust" and "qvalue"
        showCategory = 20,#显示前top20
        font.size = 12,
        title = "KEGG enrichment barplot",
        label_format = 30 #超过30个字符串换行
)

气泡图
dotplot(
  KEGG_diff,
  x = "GeneRatio",
  color = "p.adjust",
  title = "Top 20 of Pathway Enrichment",
  showCategory = 20,
  label_format = 30
)

绘图美化
#将pathway按照p值排列
KEGG_top20 <- KEGG_result[1:20,]
KEGG_top20$pathway <- factor(KEGG_top20$Description,levels = rev(KEGG_top20$Description))
p2 <- ggplot(data = KEGG_top20,
             aes(x = Count,y = pathway))+
  geom_point(aes(size = Count,
                 color = -log10(pvalue)))+ # 气泡大小及颜色设置
  theme_bw()+
  scale_color_distiller(palette = "Spectral",direction = 1) +
  labs(x = "Gene Number",
       y = "",
       title = "Dotplot of Enriched KEGG Pathways",
       size = "Count")
p2

GO

GO富集分析及可视化,一把子拿捏! (qq.com)

【精选】RNA 9. SCI 文章中基因表达之 GO 注释_consider increasing max.overlaps_桓峰基因的博客-CSDN博客

就是函数的差别

GO_MF_diff <- enrichGO(gene = diff_entrez$ENTREZID, #用来富集的差异基因
OrgDb = org.Hs.eg.db, #指定包含该物种注释信息的org包
ont = "MF", #可以三选一分别富集,或者"ALL"合并
pAdjustMethod = "BH", #多重假设检验矫正方法
pvalueCutoff = 0.05,
qvalueCutoff = 0.05,
readable = TRUE) #是否将gene ID映射到gene name
#提取结果表格:
GO_MF_result <- GO_MF_diff@result
View(GO_MF_result)

感谢上面的许多教程:更详细的大家可以去学习!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1225538.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

springboot实现在线人数统计

在线人数统计 笔者做了一个网站&#xff0c;需要统计在线人数。 在线有两种&#xff1a; 一、如果是后台系统如果登录算在线&#xff0c;退出的时候或者cookie、token失效的时候就算下线 二、如果是网站前台&#xff0c;访问的时候就算在线 今天我们来讲一下第2种情况&…

【论文解读】FFHQ-UV:用于3D面部重建的归一化面部UV纹理数据集

【论文解读】FFHQ-UV 论文地址&#xff1a;https://arxiv.org/pdf/2211.13874.pdf 0. 摘要 我们提出了一个大规模的面部UV纹理数据集&#xff0c;其中包含超过50,000张高质量的纹理UV贴图&#xff0c;这些贴图具有均匀的照明、中性的表情和清洁的面部区域&#xff0c;这些都是…

损失函数(Loss Function)与代价函数(Cost Function)、目标函数(Objective Function)区别

损失函数定义在单个样本上&#xff0c;算的是一个样本的误差。 代价函数定义在整个训练集上&#xff0c;是所有样本误差的平均&#xff0c;也就是损失函数的平均。 目标函数定义为最终需要优化的函数&#xff0c;等于经验风险 结构风险&#xff08;也就是Cost Function 正则化…

Windows10下Mysql8.0安装教程

文章目录 1.下载Mysql8.02.解压Mysql安装包到指定目录3.初始化Mysql服务4.安装Mysql服务5.启动Mysql服务6.登录Mysql服务7.修改Mysql密码8.重启Mysql服务停止服务启动服务 1.下载Mysql8.0 链接&#xff1a;https://pan.baidu.com/s/1uP2xZj8g05xg-oHX_nfnmA 提取码&#xff1a;…

基于SSM的在线投稿系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;Vue 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#xff1a;是 目录…

PC端使子组件的弹框关闭

子组件 <template><el-dialog title"新增部门" :visible"showDialog" close"close"> </el-dialog> </template> <script> export default {props: {showDialog: {type: Boolean,default: false,},},data() {retu…

计算机毕业设计选题推荐-个人健康微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT研究室✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

C/C++字符判断 2021年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

目录 C/C字符判断 一、题目要求 1、编程实现 2、输入输出 二、算法分析 三、程序编写 四、程序说明 五、运行结果 六、考点分析 C/C字符判断 2021年12月 C/C编程等级考试一级编程题 一、题目要求 1、编程实现 对于给定的字符&#xff0c;如果该字符是大小写字母或…

团结引擎已全面支持 OpenHarmony 操作系统

Unity 中国宣布与开放原子开源基金会达成平台级战略合作。 据称团结引擎已全面支持 OpenHarmony 操作系统&#xff0c;同时将为 OpenHarmony 生态快速带来更多高品质游戏与实时 3D 内容。Unity 称现在用户可以 “在 OpenHarmony 框架中感受到与安卓和 iOS 同样丝滑的游戏体验”…

网络运维与网络安全 学习笔记2023.11.18

网络运维与网络安全 学习笔记 第十九天 今日目标 冲突域和交换机工作原理、广播域和VLAN原理 VLAN配置、TRUNK原理与配置、HYBRID原理与配置 冲突域和交换机工作原理 冲突域概述 定义 网络设备发送的数据&#xff0c;产生冲突的区域&#xff08;范围&#xff09; 对象 “数…

HUAWEI华为MateBook X 2020款i5集显(EUL-W19P)原装出厂Windows10系统

链接&#xff1a;https://pan.baidu.com/s/1eZuLjarWH2PjAWVqMWnzjQ?pwd2374 提取码&#xff1a;2374 原厂系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办公软件、华为电脑管家等预装程序

LeetCode(28)盛最多水的容器【双指针】【中等】

目录 1.题目2.答案3.提交结果截图 链接&#xff1a; 盛最多水的容器 1.题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水…

python——第十天

今日目标&#xff1a; 常见排序和查找 常见排序和查找: 冒泡排序 选择排序 插入排序 选择排序&#xff1a; 假设"第一个值"是最小值&#xff0c;就要每一轮找到真正的最小值&#xff0c;并且和假设的这个值交换 [1, 3, 2, 10, -8, 9, -30, 7] 1、 [-30, 3, 2, 10, -8…

微信小程序开发学习——页面布局、初始导航栏与跳转

1.盒模型 要求实现效果如图所示&#xff1a; 所有WXML元素都可以看作盒子&#xff0c;在WXSS中"box model”这一术语是用来设计和布局时使用盒模型本质上是一个盒子&#xff0c;封装周围的WXML元素它包括: 边距&#xff0c;边框&#xff0c;填充和实际内容&#xff0c;模…

【C++】【Opencv】cv::warpAffine()仿射变换函数详解,实现平移、缩放和旋转等功能

仿射变换是一种二维变换&#xff0c;它可以将一个二维图形映射到另一个二维图形上&#xff0c;保持了图形的“形状”和“大小”不变&#xff0c;但可能会改变图形的方向和位置。仿射变换可以用一个线性变换矩阵来表示&#xff0c;该矩阵包含了六个参数&#xff0c;可以进行平移…

C语言运算符优先级

优先级表 优先级规则说明 符号的优先级是在混合运算中才讨论表中优先级号越小&#xff0c;优先级越高同一优先级中&#xff0c;看结合性 优先级注意事项 逻辑 与 优先级高于逻辑 或而表示同级逗号优先级最低从整体看&#xff0c;可以简单总结为&#xff1a;算术运算符 > …

【我和Python算法的初相遇】——体验递归的可视化篇

&#x1f308;个人主页: Aileen_0v0 &#x1f525;系列专栏:PYTHON数据结构与算法学习系列专栏&#x1f4ab;"没有罗马,那就自己创造罗马~" 目录 递归的起源 什么是递归? 利用递归解决列表求和问题 递归三定律 递归应用-整数转换为任意进制数 递归可视化 画…

python趣味编程-5分钟实现一个益智数独游戏(含源码、步骤讲解)

Puzzle Game In Python是用 Python 编程语言Puzzle Game Code In Python编写的,有一个 4*4 的棋盘,有 15 个数字。然后将数字随机洗牌。 在本教程中,我将教您如何使用Python 创建记忆谜题游戏。 Python Puzzle Game游戏需要遵循以下步骤,首先是将图块数量移动到空的图块空…

联想系列台式机Win11系统改Win7系统BIOS设置步骤

联想最新一代的台式机默认操作系统Win11&#xff0c;采用UEFIGPT启动模式&#xff0c;并且开启了安全启动功能&#xff0c;一般用户不能直接将Win11改成Win7&#xff0c;如果需要更改操作系统&#xff0c;是需要再BIOS菜单中关闭安全启动功能的&#xff0c;并且把启动模式设置成…

9 HDFS架构剖析

问题 100台服务器&#xff0c;存储空间单个200GB 20T 5T文件如何存储&#xff1f; 128MB一块 128MB81GB 1288*10241TB 5T数据分成的128MB的块数 8192 * 5 客户端(client)代表用户通过与namenode和datanode交互来访问整个文件系统。 HDFS集群有两类节点&#xff1a; 一个na…