GSVA,GSEA,KEGG,GO学习

目录

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,双峰则Fkcdf="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,#inputorganism = "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,#显示前top20font.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.mzph.cn/news/148994.shtml

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

相关文章

TikTok与媒体素养:如何辨别虚假信息?

在当今数字时代&#xff0c;社交媒体平台如TikTok已经成为信息传播和社交互动的主要渠道之一。然而&#xff0c;随之而来的是虚假信息的泛滥&#xff0c;这对用户的媒体素养提出了严峻的挑战。本文将探讨TikTok平台上虚假信息的现象&#xff0c;以及如何提高媒体素养&#xff0…

EfficientPhys

研究背景 基于相机的生理测量是一种非接触式方法&#xff0c;用于通过从身体反射的光捕获心脏信号。最常见的此类信号是通过光电体积描记图 (PPG) 测量的血容量脉搏 (BVP)。由此&#xff0c;可以推导出心率、呼吸率和脉搏传导时间。神经网络模型是当前最先进的 rPPG 测量方式。…

Zeet构建多云战略充分发挥云的优势

大型企业通常拥有基础设施和应用团队&#xff0c;有能力围绕自己的业务需求构建所需平台。但对于技术团队精简、预算紧张的小企业来说&#xff0c;定制平台往往不现实而且难以扩展&#xff0c;是负担不起的“奢侈品”。 这一情况催生了平台即服务&#xff08;PaaS&#xff09;…

高效案例检索工具,Alpha案例库智慧检索成为律师检索工具首选

“工欲善其事&#xff0c;必先利其器。”当今&#xff0c;律界同仁需要权衡的问题早已不是“要不要”使用法律科技&#xff0c;而是如何高质量、高效率地使用法律科技工具。在业内人士看来&#xff0c;随着人工智能技术的不断发展&#xff0c;法律行业科技化将成为不可逆转的趋…

PyCharm中常用插件推荐

❤️觉得内容不错的话&#xff0c;欢迎点赞收藏加关注&#x1f60a;&#x1f60a;&#x1f60a;&#xff0c;后续会继续输入更多优质内容❤️ &#x1f449;有问题欢迎大家加关注私戳或者评论&#xff08;包括但不限于NLP算法相关&#xff0c;linux学习相关&#xff0c;读研读博…

大厂秋招真题【单调栈】Bilibili2021秋招-大鱼吃小鱼

文章目录 题目描述与示例题目描述输入描述输出描述示例一输入输出说明 示例二输入输出说明 解题思路代码PythonJavaC时空复杂度 华为OD算法/大厂面试高频题算法练习冲刺训练 题目描述与示例 题目描述 小明最近喜欢上了俄罗斯套娃、大鱼吃小鱼这些大的包住小的类型的游戏。 于…

c语言:矩阵交换

题目&#xff1a; 代码和思路&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<stdio.h>int main() {int n 0;int m 0;int arr[10][10] { 0 }; // 输入行和列scanf("%d%d", &n, &m);int i 0;int j 0;//读取数组for (i 0; i < n; i)…

ASUS华硕ROG幻13笔记本电脑GV301QE原厂Windows10系统

链接&#xff1a;https://pan.baidu.com/s/1aPW0ctRXRNAhE75mzVPdTg?pwdds78 提取码&#xff1a;ds78 华硕玩家国度幻13笔记本电脑锐龙版Ryzen 7 5800HS,显卡3050 3050Ti,3060,3060Ti,3070,3070Ti 原厂W10系统自带所有驱动、出厂主题壁纸、系统属性专属LOGO标志、Office办…

MATLAB中plotmatrix函数用法

目录 语法 说明 示例 使用两个矩阵输入创建散点图矩阵 使用一个矩阵输入创建散点图矩阵 指定标记类型和颜色 创建并修改散点图矩阵 plotmatrix函数的功能是创建散点图矩阵。 语法 plotmatrix(X,Y) plotmatrix(X) plotmatrix(___,LineSpec) plotmatrix(ax,___) [S,AX,B…

让别人访问电脑本地

查看本地IP地址&#xff1a; 使用ipconfig&#xff08;Windows&#xff09;或ifconfig&#xff08;Linux/macOS&#xff09;命令来查看你的计算机本地网络的IP地址。确保*****是你的本地IP地址。 防火墙设置&#xff1a; 确保你的防火墙允许从外部访问*****。你可能需要在防火…

服务注册发现 springcloud netflix eureka

文章目录 前言角色&#xff08;三个&#xff09; 工程说明基础运行环境工程目录说明启动顺序&#xff08;建议&#xff09;&#xff1a;运行效果注册与发现中心服务消费者&#xff1a; 代码说明服务注册中心&#xff08;Register Service&#xff09;服务提供者&#xff08;Pro…

Since Maven 3.8.1 http repositories are blocked

原因 高版本的maven不支持http的存储库。 解决方案 其实方法有好几种&#xff0c;比如降级maven版本至3.6.3(之前一直用的都是这个版本)&#xff0c;我选择了一种比较快(但不一定安全)的方式&#xff0c;因为3.6.3版本被我卸载了&#xff0c;这里直接修改idea的setting配置&…

[CUDA]去除Eigen库中的warning

一、问题提出 假如使用nvcc对cuda代码进行编译时&#xff0c;如果代码中使用了Eigen库&#xff08;头文件&#xff09;&#xff0c;编译时可能会显示很多warning information&#xff0c;如下图红框中所示&#xff1a; 这些warning信息虽然不会影响代码的实际运行&#xff0c;…

使用html2canvas转换table为图片时合并单元格rowspan失效,无边框显示问题解决(React实现)

最近使用 html2canvas导出Table表单为图片&#xff0c;但是转换出的图片被合并的单元格没有显示边框 查了原因是因为我为tr设置了背景色&#xff0c;然后td设置了rowspan&#xff0c;设置了rowspan的单元格就会出现边框不显示的问题。 解决方法就是取消tr的背景色&#xff0c;然…

图片地址GPS经纬度查询

先打开exif图片查询的网站&#xff1a; 改图宝的&#xff1a;https://www.gaitubao.com/exif图虫de的:EXIF信息查看器 (tuchong.com) 将这个地点&#xff1a;51 deg 30 51.90" N, 0 deg 5 38.73" W 修改为&#xff1a;5130 51.90" N, 05 38.73" W 到谷…

OSI参考模型

目录 一. OSI参考模型的各层功能二. 网络排错三. 网络安全四. 实体、协议、服务和服务访问点SAP五. TCP IP体系结构 一. OSI参考模型的各层功能 \quad \quad \quad \quad 我们首先来看应用层实现的功能 每个字段的各种取值所代表的意思 \quad \quad 比如要保存的文件内容是ab…

「Verilog学习笔记」用3-8译码器实现全减器

专栏前言 本专栏的内容主要是记录本人学习Verilog过程中的一些知识点&#xff0c;刷题网站用的是牛客网 分析 首先列出3-8译码器和全减器的真值表 全减器真值表如下 3-8译码器真值表如下 timescale 1ns/1nsmodule decoder_38(input E ,input A0 …

KylinOSv10修改ulimit值

问题 ulimit 值过小&#xff0c;可能导致压力测试遇到瓶颈&#xff0c;比如通过nginx建立tcp长链接时&#xff0c;链接数量受限。需要修改ulimit值&#xff0c;Linux默认为1024。 解决 使用root或sudo权限&#xff0c;编辑文件/etc/security/limits.conf&#xff0c;新增以下…

数据资产入表,给企业带来的机遇和挑战

作为推动数字经济发展的核心要素&#xff0c;近年来&#xff0c;数据资源对于企业特别是相关数据企业的价值和作用正日益凸显。 数据资产入表之后&#xff0c;能够为企业经营带来实质性的收益。“随着数据资产的纳入&#xff0c;企业的资产也出现了新标的。在资产负债表中&…

letcode::最小栈

最小栈 设计一个支持 push &#xff0c;pop &#xff0c;top 操作&#xff0c;并能在常数时间内检索到最小元素的栈。 实现 MinStack 类: MinStack() 初始化堆栈对象。void push(int val) 将元素val推入堆栈。void pop() 删除堆栈顶部的元素。int top() 获取堆栈顶部的元素。…