GSEA -- 学习记录

文章目录

  • brief
  • 统计学原理部分
  • 其他注意事项
  • 转录组部分
  • 单细胞部分

brief

上一篇学习记录写了ORA,其中ORA方法只关心差异表达基因而不关心其上调、下调的方向,也许同一条通路里既有显著高表达的基因,也有显著低表达的基因,因此最后得到的通路结果对表型的解释力度也不大。还有一些基因表达量的变化程度很小,但是其生物学功能可能很重要,那么该如何体现?

GSEA方法让通路的上下调分析成为可能,简单来说,先计算基因在不同组间表达量的log2FC,并以此从大到小进行排序,这样就得到了一个基因从上调到不变到下调的基因列表。然后,对于我们感兴趣的基因集,我们只需考察它们的成员是否富集在这个基因列表的上方(上调部分)或者下方(下调部分)即可判断这些基因集的上下调情况。
在这里插入图片描述
or like this:
在这里插入图片描述

优点:1.相比起GSA,GSEA 可以实现不再仅关注于差异基因,可以不受p-value以及log2FC阈值的影响,可以获得更多生物学功能变化的信息。
2.富集分数ES,实际上是k-s like test的统计量,所以ES主要表示基因集S的基因的log2FC的分布与不在基因集S的其他基因的log2FC的分布是否一致,当ES大于0并且具有统计学意义时,那我们可以说基因集S内基因相比其他基因表达上调。

统计学原理部分

需要补充的基础知识:
https://blog.csdn.net/jiangshandaiyou/article/details/136545010

其他注意事项

  • GSEA中为了强调表型的变化,也就是表型间基因表达量的log2FC,算法调整了eCDF每个阶梯的上升高度。
    在标准k-s的eCDF中,阶梯上升高度是1/n,而在GSEA中,考虑到log2FC的权重,基因集S的eCDF的上升高
    度随着S内不同基因的log2FC变化

    在这里插入图片描述
    在这里插入图片描述

因此,在eCDF中,基因集S中的基因越是有着较大|log2FC|,其上升的阶梯就越大。

  • 上面描述了在基因集S中的基因的上升阶梯高度,而不在基因集S中的其他基因的上升阶梯并不受log2FC的权重影响,并且与标准k-s检验的eCDF一致:
    在这里插入图片描述
    N表示所有基因的数量,NH表示感兴趣的基因集(基因集S)中包含的基因个数。所以,简单表示其上升阶梯高度即为:
    在这里插入图片描述
  • 随着x轴(ranked gene list)的位置不断变化,enrichment scores也在发生变化。ES的数学表达方式为,对基因集S的每个gene的eCDF求和。当ES为正时表示基因集S的基因富集在ranked gene list 的顶部,ES为负时表示基因集S的基因富集在ranked gene list 的底部。

转录组部分

library(clusterProfiler)
library(org.Hs.eg.db)
library(AnnotationDbi)# step1
# get ranked gene list 
df <- read.table("../out.tpm.csv",header = T,sep = ",",row.names = 1)
names <- rownames(df)[order(df$PBMC,decreasing = T)]
DEG_ranked <- sort(df$PBMC,decreasing = T)
names(DEG_ranked) <-  names
head(DEG_ranked)# MT-CO1   MT-ND4   MT-CO3   MT-CO2   MT-ND1   MT-ND2 
# 35393.65 23674.00 22698.25 18457.70 17377.82 15141.74# 所以最重要的输入ranked gene list 是一个整数型的向量,而且以gene symbol 作为 name # step2
# get KEGG pathway informations
library(msigdbr)
hs_msigdb_df <- msigdbr(species = "Homo sapiens")
# Filter the human data frame to the KEGG pathways that are included in the curated gene sets
hs_kegg_df <- hs_msigdb_df %>%dplyr::filter(gs_cat == "C2", # This is to filter only to the C2 curated gene setsgs_subcat == "CP:KEGG" # This is because we only want KEGG pathways
)# step3
# Run gsva
gsea_results <- GSEA(geneList = DEG_ranked, # Ordered ranked gene listminGSSize = 10, # Minimum gene set sizemaxGSSize = 500, # Maximum gene set setpvalueCutoff = 0.05, # p-value cutoffeps = 0, # Boundary for calculating the p valuepAdjustMethod = "BH", # Benjamini-Hochberg correctionTERM2GENE = dplyr::select(hs_msigdb_df,gs_name,gene_symbol)
)head(gsea_results@result)# gsea_result_df <- data.frame(gsea_results@result)# Visualizing results
most_positive_nes_plot <- enrichplot::gseaplot(gsea_results,geneSetID = "HALLMARK_MYC_TARGETS_V2",title = "HALLMARK_MYC_TARGETS_V2",color.line = "#0d76ff"
)
most_positive_nes_plot

在这里插入图片描述

单细胞部分

#BiocManager::install("clusterProfiler",force = TRUE)
library(clusterProfiler)
library(Seurat) # 这里面有一个小的数据集 pbmc_small ,一会儿用它试手
library(tidyverse)
library(reshape2)# getwd()
setwd("D:/")
data("pbmc_small")Idents(pbmc_small)
Idents(pbmc_small) <- pbmc_small@meta.data$groupsdeg <- FindMarkers(pbmc_small,ident.1 = "g1",ident.2 = "g2",min.pct = 0.01, logfc.threshold = 0.01,thresh.use = 0.99, assay="RNA")# 排序:根据log2FC rank高表达和地表达的基因
geneList <- deg$avg_log2FC 
names(geneList) <- toupper(rownames(deg))
geneList <- sort(geneList,decreasing = T)
head(geneList)# 获取gene set 
# gmt 文件在MsigDB下载的
geneset <- read.gmt("h.all.v2023.2.Hs.symbols.gmt") 
# head(geneset)
length(unique(geneset$term))egmt <- GSEA(geneList, TERM2GENE=geneset, minGSSize = 1,pvalueCutoff = 0.99,verbose=FALSE)# head(egmt)
egmt@result 
gsea_results_df <- egmt@result 
rownames(gsea_results_df)
write.csv(gsea_results_df,file = 'gsea_results_df.csv')# BiocManager::install("enrichplot",force = TRUE)     <- 这里可视化
library(enrichplot)
gseaplot2(egmt,geneSetID = 'HALLMARK_EPITHELIAL_MESENCHYMAL_TRANSITION',pvalue_table=T)
gseaplot2(egmt,geneSetID = 'HALLMARK_MTORC1_SIGNALING',pvalue_table=T) 

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

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

相关文章

基于LSTM实现春联上联对下联

按照阿光的项目做出了学习笔记&#xff0c;pytorch深度学习实战项目100例 基于LSTM实现春联上联对下联 基于LSTM&#xff08;长短期记忆网络&#xff09;实现春联上联对下联是一种有趣且具有挑战性的任务&#xff0c;它涉及到自然语言处理&#xff08;NLP&#xff09;中的序列…

Stable diffusion(一)

Stable diffusion 原理解读 名词解释 正向扩散&#xff08;Fixed Forward Diffusion Process&#xff09;&#xff1a;反向扩散&#xff08;Generative Reverse Denoising Process&#xff09; VAE&#xff08;Variational AutoEncoder&#xff09;&#xff1a;一个用于压缩图…

Mysql/Redis缓存一致性

如何保证MySQL和Redis的缓存一致。从理论到实战。总结6种来感受一下。 理论知识 不好的方案 1.先写MySQL&#xff0c;再写Redis 图解说明: 这是一幅时序图&#xff0c;描述请求的先后调用顺序&#xff1b; 黄色的线是请求A&#xff0c;黑色的线是请求B&#xff1b; 黄色的…

智慧城市与绿色出行:共同迈向低碳未来

随着城市化进程的加速&#xff0c;交通拥堵、空气污染、能源消耗等问题日益凸显&#xff0c;智慧城市与绿色出行成为了解决这些问题的关键途径。智慧城市利用信息技术手段&#xff0c;实现城市各领域的智能化管理和服务&#xff0c;而绿色出行则强调低碳、环保的出行方式&#…

LInux系统架构----Nginx模块rewrite的规则与应用场景

LInux系统架构----Nginx模块rewrite的规则与应用场景 一.rewrite跳转实现 Nginx实现跳转通过ngx_http_rewrite_module模块支持URL重写、支持if条件判断&#xff0c;但是不支持else跳转时&#xff0c;循环最多可以执行10次&#xff0c;超过后nginx将返回500错误注&#xff1a;…

STM32 | STM32F407ZE中断、按键、灯(续第三天)

上节回顾 STM32 | 库函数与寄存器开发区别及LED等和按键源码(第三天)一、 中断 中断概念 中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行(面试题)。 STM32外部中断…

【设计模式】设计原则和常见的23种经典设计模式

设计模式 1. 设计原则&#xff08;记忆口诀&#xff1a;SOLID&#xff09;【记忆口诀&#xff1a;单开里依接迪合&#xff08;单开礼仪接地和&#xff09;】 &#xff08;1&#xff09;单一职责原则&#xff08;Single Responsibility Principle, SRP&#xff09; &#xff…

基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的常见手势识别系统(深度学习模型+UI界面代码+训练数据集)

摘要&#xff1a;开发手势识别系统对于增强人机交互和智能家居控制领域的体验非常关键。本博客详尽阐述了通过深度学习技术构建手势识别系统的过程&#xff0c;并附上了全套实施代码。系统采用了先进的YOLOv8算法&#xff0c;并通过与YOLOv7、YOLOv6、YOLOv5的性能对比&#xf…

Kafka 面试题及答案整理,最新面试题

Kafka中的Producer API是如何工作的&#xff1f; Kafka中的Producer API允许应用程序发布一流的数据到一个或多个Kafka主题。它的工作原理包括&#xff1a; 1、创建Producer实例&#xff1a; 通过配置Producer的各种属性&#xff08;如服务器地址、序列化方式等&#xff09;来…

个人博客系统(测试报告)

一、项目背景 一个Web网站程序&#xff0c;你可以观看到其他用户博客也可以登录自己的账号发布博客&#xff0c;通过使用Selenium定位web元素、操作测试对象等方法来对个人博客系统的进行测试&#xff0c;测试的核心内容有用户登录、博客列表及博客数量的展示、查看全文、写博客…

liteIDE 解决go root报错 go: cannot find GOROOT directory: c:\go

liteIDE环境配置 我使用的liteIDE为 x36 5.9.5版本 。在查看–>选项 中可以看到 LiteEnv&#xff0c;双击LiteEnv &#xff0c;在右侧选择对应系统的env文件&#xff0c;我的是win64系统&#xff0c;所以文件名为win64.env 再双击 win64.env &#xff0c;关闭当前窗口&…

Linux内核编译(版本6.0以及版本v0.01)并用qemu驱动

系统环境&#xff1a; ubuntu-22.04.1-desktop-amd64 目标平台: x86 i386 内核版本: linux-6.0.1 linux-0.0.1 环境配置 修改root密码 sudo passwd 修改软件源&#xff08;非必要&#xff09; vmtools安装&#xff08;实现win-linux软件互传&#xff09; 安装一些必须的软件&…

DevOps本地搭建笔记(个人开发适用)

需求和背景 win11 wsl2 armbian(玩客云矿渣&#xff09;&#xff0c;构建个人cicd流水线&#xff0c;提高迭代效率。 具体步骤 基础设施准备 硬件准备&#xff1a;一台笔记本&#xff0c;用于开发和构建部署&#xff0c;一台服务器&#xff0c;用于日常服务运行。 笔记本…

Celery知识

celery介绍 # celery 的概念&#xff1a; * 翻译过来是芹菜 * 官网&#xff1a;https://docs.celeryq.dev/en/stable/ # 是分布式的异步任务框架&#xff1a; 分布式&#xff1a;一个任务&#xff0c;拆成多个任务在不同机器上做 异步任务&#xff1a;后台执行…

【Greenhills】MULTIIDE集成第三方的编辑器进行源文件编辑工作

【更多软件使用问题请点击亿道电子官方网站查询】 1、 文档目标 在使用GHS进行工作的时候&#xff0c;可以集成第三方的编辑器进行源文件编辑工作 2、 问题场景 用于解决在GHS中进行项目开发时&#xff0c;对于GHS的编辑器使用不习惯&#xff0c;想要切换到其他第三方的编辑…

漏洞发现-漏扫项目篇武装BURP浏览器插件信息收集分析辅助

知识点 1、插件类-武装BurpSuite-漏洞检测&分析辅助 2、插件类-武装谷歌浏览器-信息收集&情报辅助 章节点&#xff1a; 漏洞发现-Web&框架组件&中间件&APP&小程序&系统 扫描项目-综合漏扫&特征漏扫&被动漏扫&联动漏扫 Poc开发-Ymal语…

Qt QDateTime类使用

一.Qt datetime 介绍 Qt中的QDateTime类是用于处理日期和时间的组合的类&#xff0c;它提供了丰富的功能来操作和格式化日期时间数据。以下是其主要特点和用法&#xff1a; 构造函数&#xff1a;QDateTime可以通过组合QDate&#xff08;日期&#xff09;和QTime&#xff08;时…

TypeScript编译选项

编译单个文件&#xff1a;终端 tsc 文件名 自动编译单个文件&#xff1a;终端 tsc 文件名 -w 编译整个项目&#xff1a;tsc 前提是得有ts的配置文件tsconfig.json 自动编译整个项目&#xff1a;tsc --w tsconfig.json默认文件内容&#xff1a; tsconfig.json是ts编译器的配…

阿里云服务器Ngnix配置SSL证书开启HTTPS访问

文章目录 前言一、SSL证书是什么&#xff1f;二、如何获取免费SSL证书三、Ngnix配置SSL证书总结 前言 很多童鞋的网站默认访问都是通过80端口的Http服务进行访问&#xff0c;往往都会提示不安全&#xff0c;很多人以为Https有多么高大上&#xff0c;实际不然&#xff0c;他只是…

C库函数-getopt函数总结学习

1、简介 getopt函数是命令行参数解析函数 1、1命令行组成 Command name 程序文件名 operands 操作对象 option 选项 option argument 选项参数 getopt()函数将传递给mian()函数的argc,argv作为参数&#xff0c;同时接受字符串参数optstring – optstring是由选项Option字母组…