ssGSEA -- 学习记录

news2024/11/19 16:32:50

文章目录

  • biref
  • 统计学原理
  • 其他注意事项
  • 代码实现部分

biref

前情提要链接:
https://blog.csdn.net/jiangshandaiyou/article/details/136536349
https://blog.csdn.net/jiangshandaiyou/article/details/134457515


相比起GSA,GSEA不再关注于差异基因,因此不受p-value以及log2FC的指标的过滤影响,可以获得更多生物学功能变化的信息。但是呢需要多个样本的测序数据才能得到与表型相关的排序数据,如果我只有一个样本呢?或者我的样本没有先验的表型区分呢(也就是没法分组)?

ssGSEA说我可以。ssGSEA是单样本的GSEA,对于一个基因集S,每一个样本都可以计算得到一个enrichment score。
也就是说其实我们可以从一个多样本的表达矩阵得到另一个矩阵,行是多个不同的基因集S,列仍然是样本,值则是ES。

Barbie DA, Tamayo P, Boehm JS, et al. Systematic RNA interference reveals that oncogenic KRAS-driven cancers require TBK1. Nature. 2009;462(7269):108-112. doi:10.1038/nature08460

统计学原理

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

其他注意事项

  • GSEA与ssGSEA几乎一模一样,它们都需要对所有基因进行排序得到一个ranked gene list ;
    都运用了k-s like test评估基因集S中的基因与S外的基因的分布是否不同,
    虽然是思想是一模一样的,但是统计量的计算不同。
  • 在GSEA中,基因的是按照log2FC从大到小排列,而在ssGSEA中,对于单个样本,将基因按照其表达量从大到小排序。也就是每个样本都是一个独特他的ranked gene list。
  • K-s like test中的eCDF阶梯上升高度所依赖的值不同。
    在GSEA中,最后基因集S中基因的阶梯上升高度依赖于log2FC的加权值
    而在ssGSEA中,为了消除异常值对结果的影响,在第一步排序基因后,会将表达量用秩次(rank)替换
    比如说一个样本有100个基因的信息,先按照基因表达量排好序后,这个genelist对应的值是基因的表达量,然后经过秩次标准化转换后,这个genelist已经由表达量的降序排列变成了100,99,98,…,3,2,1。
    也就是原文L中的r1,r2 ,r3 ,…,rN。所以最后基因集S中的基因的阶梯上升高度依赖于秩次的加权值。
    在这里插入图片描述

代码实现部分

# 借助GSVA工具实现
# .libPaths("C:/Users/lenovo/Documents/R/win-library/4.0")
library(tidyverse)
library(reshape2)
library(cowplot)
library(RColorBrewer)
library(GSVA)

options(warn = -1)
options(digits = 5)


# 准备表达矩阵
list.files("G:/20240223-project-HY0007-GSVA-analysis-result/")

expr <- read.table("../TPM_DE.filter.txt",sep = "\t",header = T,row.names = 1)
head(expr)
expr <- as.matrix(expr) # 需要转换成matrix或者 ExpressionSet object

# 准备预设的gene sets
# install.packages("msigdbr")
library(msigdbr)
## msigdbr包提取下载 先试试KEGG和GO做GSVA分析
##KEGG
KEGG_df_all <-  msigdbr(species = "Homo sapiens", # Homo sapiens or Mus musculus
                        category = "C2",
                        subcategory = "CP:KEGG") 
KEGG_df <- dplyr::select(KEGG_df_all,gs_name,gs_exact_source,gene_symbol)
kegg_list <- split(KEGG_df$gene_symbol, KEGG_df$gs_name) ##按照gs_name给gene_symbol分组

##GO
GO_df_all <- msigdbr(species = "Homo sapiens",
                     category = "C5")
GO_df <- dplyr::select(GO_df_all, gs_name, gene_symbol, gs_exact_source, gs_subcat)
GO_df <- GO_df[GO_df$gs_subcat!="HPO",]
go_list <- split(GO_df$gene_symbol, GO_df$gs_name) ##按照gs_name给gene_symbol分组

####  GSVA  ####
# geneset 1
geneset <- go_list
gsva_mat <- gsva(expr=expr, 
                 gset.idx.list=geneset, 
                 kcdf="Gaussian" ,#"Gaussian" for logCPM,logRPKM,logTPM, "Poisson" for counts
                 verbose=T, 
                 mx.diff =TRUE,# 下游做limma得到差异通路
                 min.sz = 10, # gene sets 少于10个gene的过滤掉
                 method = "ssgsea"# method=c("gsva", "ssgsea", "zscore", "plage")
                 )

write.csv(gsva_mat,"gsva_go_matrix.csv")

# geneset 2
geneset <- kegg_list
gsva_mat <- gsva(expr=expr, 
                 gset.idx.list=geneset, 
                 kcdf="Gaussian" ,#"Gaussian" for logCPM,logRPKM,logTPM, "Poisson" for counts
                 verbose=T, 
                 mx.diff =TRUE,# 下游做limma得到差异通路
                 min.sz = 10, # gene sets 少于10个gene的过滤掉
                 method = "ssgsea"# method=c("gsva", "ssgsea", "zscore", "plage")
)

write.csv(gsva_mat,"gsva_kegg_matrix.csv")

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

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

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

相关文章

蓝色经典免费wordpress模板主题

蓝色经典配色的免费wordpress建站主题&#xff0c;万能的wordpress建站主题。 https://www.wpniu.com/themes/24.html

Java注解介绍

Java注解 注解介绍元注解RetentionTargetDocumentedInherited接口类测试结果 注解介绍 Java注解&#xff08;Annotation&#xff09;是一种元数据&#xff08;Metadata&#xff09;的形式&#xff0c;它可以被添加到Java代码中的类、方法、变量、参数等元素上&#xff0c;以提…

GSA、GSEA、ssGSEA、GSVA用到的统计学知识点

文章目录 概率密度函数&#xff08;probability density function&#xff0c;PDF&#xff09;分布函数&#xff08;Cumulative Distribution Function&#xff0c;CDF&#xff09;核密度估计&#xff08;KDE&#xff09;经验累计分布函数&#xff08;Empirical Cumulative Dis…

C++ Qt开发:QFileSystemWatcher文件监视组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍如何运用QFileSystemWatcher组件实现对文件或…

JsonCreator注解InvalidDefinitionException报错解决

"stack_trace": "c.f.j.d.e.InvalidDefinitionException: More than one argument (#0 and left as delegating for Creator [constructor for (

【性能测试】Jmeter+InfluxDB+Grafana 搭建性能监控平台

一、背景 为什么要搭建性能监控平台&#xff1f; 在用 Jmeter 获取性能测试结果的时候&#xff0c;Jmeter自带的测试报告如下&#xff1a; 这个报告有几个很明显的缺点&#xff1a; 只能自己看&#xff0c;无法实时共享&#xff1b;报告信息的展示比较简陋单一&#xff0c;不…

Nacos2.2.3之MySQL8.X持久化详细配置过程

Nacos2.2.3之MySQL8.X持久化详细配置过程 文章目录 Nacos2.2.3之MySQL8.X持久化详细配置过程1. 官网与下载1. 官网2. Naocs是什么&#xff1f;3. 下载 2. 安装与持久化配置1. 解压安装2. 创建数据库1. 连接数据库2. 创建nacos数据库3. 导入脚本4. 查看表 3. 持久化配置1. appli…

Jmeter事务控制器实战

在性能测试工作中&#xff0c;我们往往只测试业务功能相关主要接口的数据请求和返回。然而实际上用户在使用web应用时&#xff0c;可能会加载诸多资源&#xff1a;htmldom、cssdom、javaScript、ajax请求、图片等。 从打开一个页面到界面渲染完成需要一定的加载时间&#xff0…

Linux学习之线程

目录 线程概念 1.什么是线程&#xff1f; 2.线程的优缺点 3.线程异常 4.线程用途 线程操作 1.如何给线程传参 2.线程终止 3.获取返回值 4.分离状态 5.退出线程 线程的用户级地址空间&#xff1a; 线程的局部存储 线程的同步与互斥 互斥量mutex 数据不一致的主要过…

2024 AI 辅助研发的新纪年

随着人工智能技术的持续发展与突破&#xff0c;2024年AI辅助研发正成为科技界和工业界瞩目的焦点。从医药研发到汽车设计&#xff0c;从软件开发到材料科学&#xff0c;AI正逐渐渗透到研发的各个环节&#xff0c;变革着传统的研发模式。在这一背景下&#xff0c;AI辅助研发不仅…

操作系统内存管理-组织方式

目录 前言 数据单位 位&#xff08;bit&#xff09; 字节&#xff08;byte&#xff09; 组织方式 连续分配方式 非连续分配方式 段页式存储管理 虚拟内存管理 NUMA&#xff08;Non-Uniform Memory Access&#xff09;架构下的内存管理 逻辑地址与物理地址的映射关系 逻辑…

云计算 3月8号 (WEB服务及Apache 服务的搭建与配置——基于域名 端口 Ip多方式访问)

1、WEB服务简介 # 目前最主流的三个Web服务器是Apache、Nginx、 IIS。 - WEB服务器一般指网站服务器&#xff0c;可以向浏览器等Web客户端提供网站的访问&#xff0c;让全世界浏览。 - WEB服务器也称为WWW(WORLD WIDE WEB)服务器&#xff0c;主要功能是提供网上信息浏览服务。 …

【Logback】Logback 中的 Appenders

目录 1、什么是 Appenders&#xff1f; 2、解说 AppenderBase.doAppend() 方法 3、logback-core 模块中的 Appenders &#xff08;1&#xff09;OutputStreamAppender &#xff08;2&#xff09;ConsoleAppender &#xff08;3&#xff09;FileAppender &#xff08;4&a…

Linux服务器安装jdk

背景: 安装JDK是我们java程序在服务器运行的必要条件,下面描述几个简单的命令就可再服务器上成功安装jdk 命令总览: yum update -y yum list | grep jdk yum -y install java-1.8.0-openjdk java -version 1.查看可安装版本 yum list | grep jdk 2.如果查不到可先进行 yum upd…

积鼎科技两款国产流体仿真软件入选《上海市工业软件推广目录》!

为落实《上海市促进工业软件高质量发展行动计划(2021-2023年)》&#xff0c;聚焦重点行业和领域痛点问题&#xff0c;提升关键软件技术创新和供给能力&#xff0c;推动工业软件产品应用和产业生态建设更好支撑全市制造业数字化转型&#xff0c;《2023年上海市工业软件推荐目录》…

react + antdesign table组件合并行,展开子表格

假如你有这样的一个数据&#xff1a; [{"bigClass":"吃的","smallClass":"水果","item":"苹果"},{"bigClass":"吃的","smallClass":"水果","item":"香蕉…

knife4j生产环境禁止打开页面

Knife4j是一个集Swagger2 和 OpenAPI3为一体的增强解决方案&#xff0c;官网地址&#xff1a;Knife4j 集Swagger2及OpenAPI3为一体的增强解决方案. | Knife4j 考虑到安全性问题&#xff0c;在实际服务部署到生产环境后就需要禁用到swagger页面的展示&#xff0c;这个时候只需…

js【详解】event loop(事件循环/事件轮询)

event loop 是异步回调的实现原理 js 代码的执行过程 从前到后&#xff0c;一行一行执行如果某一行执行报错&#xff0c;则停止下面代码的执行先把同步代码执行完&#xff0c;再执行异步 event loop 图解 以下方代码为例&#xff1a; 第1步 将第 1 行代码放入调用栈 将要执行第…

RabbitMQ的Windows版安装教程

文章目录 前言一、Windows安装RabbitMQ总结 前言 曾经写过一篇关于RabbitMQ的Ubuntu安装教程&#xff08;http://t.csdnimg.cn/5CYfC&#xff09;&#xff0c;当时使用的是Docker将RabbitMQ安装到虚拟机上&#xff0c;但是有很多小伙伴问Windows上如何进行安装RabbitMQ&#x…

【lua】lua内存优化记录

这边有一个Unity项目用的tolua&#xff0c; 游戏运行后手机上lua内存占用 基本要到 189M&#xff0c; 之前峰值有200多。 优化点1 加快gc频度&#xff1a; 用uwa抓取的lua内存&#xff0c; 和unity的mono很像&#xff0c;内存会先涨 然后突然gc一下&#xff0c;降下来。 这样…