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.mzph.cn/news/731884.shtml

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

相关文章

解决问题的九大步骤

1.明确问题&#xff1a;确保准确理解问题的本质和范围&#xff0c;明确问题的背景和相关信息。 2.收集信息&#xff1a;搜集相关数据、资料和信息&#xff0c;了解问题的各个方面&#xff0c;为解决问题做准备。 3.分析问题&#xff1a;对问题进行深入分析&#xff0c;找出问…

3.7号freeRtoS

1. 串口通信 配置串口为异步通信 设置波特率&#xff0c;数据位&#xff0c;校验位&#xff0c;停止位&#xff0c;数据的方向 同步通信 在同步通信中&#xff0c;数据的传输是在发送端和接收端之间通过一个共享的时钟信号进行同步的。这意味着发送端和接收端的时钟需要保持…

990-44产品经理:Different types of Ethical Theories 不同类型的伦理理论

SLIDE 1 – INTRODUCTORY SLIDE 幻灯片1-介绍性幻灯片 Ethical theories provide part of the decision-making foundation for Decision Making When Ethics Are In Play because these theories represent the viewpoints from which individuals seek guidance as they mak…

「Vue3系列」Vue3 组合式 API 生命周期钩子

文章目录 一、Vue3 组合式 API 生命周期钩子1. onMounted2. onUnmounted3. onBeforeMount4. onUpdated5. onBeforeUpdate6. onErrorCaptured7. onActivated8. onDeactivated 二、Options API 和 Composition API 之间的映射三、组合式 API四、相关链接 一、Vue3 组合式 API 生命…

2024.2.3 校招 实习 内推 面经

绿*泡*泡VX&#xff1a; neituijunsir 交流*裙 &#xff0c;内推/实习/校招汇总表格 1、校招 | 禾赛科技2024届春招全面开启&#xff01; 校招 | 禾赛科技2024届春招全面开启&#xff01; 2、校招 | 格力电器2024届春招简历可投递 校招 | 格力电器2024届春招简历可投递 3、…

视频编解码技术介绍 - 基本概念篇

第一章 视频编解码技术介绍 - 基本概念篇 文章目录 前言1. 我的疑问1.1 什么是视频编解码技术1.2 为什么会有视频编解码技术1.3 视频编解码中有哪些核心技术1.4 作为开发者需要重点了解视频编解码中的哪些技术 2. 视频编解码的历史3. 基本概念3.1 像素3.2 分辨率3.3 ppi(像素密…

前端 类数组对象 学习

首先&#xff0c;我们先预习一下对象数组和数组对象的概念&#xff1a; 对象数组&#xff1a;指的是一个数组&#xff0c;其中的每个元素都是一个对象。这些对象可以包含多个属性&#xff0c;形成一个包含多个对象的数组结构。比如下面这个&#xff1a; // 创建一个对象数组存…

CorelDRAW下载2024最新版专业的平面设计软件,专注于矢量图形编辑与排版

CorelDRAW是一款功能强大的矢量图形设计软件&#xff0c;广泛应用于标志设计、插画绘制、排版印刷、VI设计、包装设计、网页制作等众多领域。它提供了丰富的绘图工具和特效&#xff0c;使用户能够轻松地创建和编辑复杂的矢量图形。CorelDRAW还支持导入和导出多种文件格式&#…

RabbitMQ 安装使用

文章目录 RabbitMQ 安装使用安装下载 Erlang下载 RabbitMQ 的服务安装好后看是否有 RabbitMQ 的服务开启管理 UIRabbitMQ 端口使用一览图 使用输出最简单的 Hello World&#xff01;生产者定义消费者消费消息小拓展 RabbitMQ 安装使用 安装 下载 Erlang RabbitMQ 是用这个语…

【机器学习300问】30、准确率的局限性在哪里?

一、什么是准确率&#xff1f; 在解答这个问题之前&#xff0c;我们首先得先回顾一下准确率的定义&#xff0c;准确率是机器学习分类问题中一个很直观的指标&#xff0c;它告诉我们模型正确预测的比例&#xff0c;即 还是用我最喜欢的方式&#xff0c;举例子来解释一下&#xf…

倒计时35天

dp预备(来源&#xff1a;b站acm刘春英老师) 1. 2. 3. 4. 5. 6. 7.

13:大数据与Hadoop|分布式文件系统|分布式Hadoop集群

大数据与Hadoop&#xff5c;分布式文件系统&#xff5c;分布式Hadoop集群 Hadoop部署Hadoop HDFS分布式文件系统HDFS部署步骤一&#xff1a;环境准备HDFS配置文件 查官方手册配置Hadoop集群 日志与排错 mapreduce 分布式离线计算框架YARN集群资源管理系统步骤一&#xff1a;安装…

spring boot 集成 mysql ,mybatisplus多数据源

1、需要的依赖&#xff0c;版本自行控制 <dependency><groupId>com.alibaba</groupId><artifactId>druid</artifactId> </dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java<…

初阶数据结构之---二叉树的顺序结构-堆

引言 今天要讲的堆&#xff0c;不是操作系统虚拟进程地址空间中&#xff08;malloc&#xff0c;realloc等开空间的位置&#xff09;的那个堆&#xff0c;而是数据结构中的堆&#xff0c;它们虽然名字相同&#xff0c;却是截然不同的两个概念。堆的底层其实是完全二叉树&#x…

【spark operator】spark operator动态分配executor

背景&#xff1a; 之前在使用spark operator的时候必须指定executor的个数&#xff0c;在将任务发布到spark operator后&#xff0c;k8s会根据指定的个数启动executor&#xff0c;但是对于某些spark sql可能并不需要用到那么多executor&#xff0c;在此时executor的数量就不好…

Python快速入门系列-1

Python快速入门系列 第一章: Python简介1.1 Python的历史与发展1.2 Python的优势与特点1.2.1 易学易用1.2.2 动态类型1.2.3 丰富的标准库与第三方库1.2.4 面向对象与函数式编程1.2.5 广泛应用领域 1.3 Python的应用领域 第一章: Python简介 1.1 Python的历史与发展 Python是一…

sizeof和strlen的详细万字解读

sizeof和strlen的对比 sizeof不是函数 侧面证明sizeof不是函数 如果是函数 应该需要有括号 不能落下来 strlen 只针对字符串 包含头文件 string.h 并且这个是个函数 随机数值 sizeof里面有表达式的话 表达式里面是不参与计算的 下面的s求出的是4 就是因为是不参与计算的 不…

AI绘画StableDiffusion实操教程:冰霜旗袍美女

前几天分享了StableDiffusion的入门到精通教程&#xff1a;AI绘画&#xff1a;Stable Diffusion 终极炼丹宝典&#xff1a;从入门到精通 但是还有人就问&#xff1a;安装是安装好了&#xff0c;可是为什么生成的图片和你生成的图片差距那么远呢&#xff1f; 怎么真实感和质感…

拥塞控制 计算机网络

因为出现过量的分组&#xff0c;而引起的网络性能下降的现象称为拥塞。 判断网络是否进入拥塞状态的方法是&#xff0c;观察网络的吞吐量和网络负载的关系&#xff0c;如果网络负载的增加&#xff0c;网络的吞吐量明显小于正常的吞吐量&#xff0c;则网络就可能进入轻度的拥塞…

webservice soap协议

SOAP协议种类 详细说明JAX、Axis和HTTPSOAP的相关信息&#xff1a; JAX&#xff08;Java API for XML Web Services&#xff09;&#xff1a;JAX是Java提供的一组API&#xff0c;用于开发基于XML的Web服务。JAX包括JAX-WS&#xff08;Java API for XML Web Services&#xff0…