ssGSEA -- 学习记录

文章目录

  • 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")

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++干货基地】面向对象核心概念 | 访问限定符 | 类域 | 实例化 | 类对象模型

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 引入 哈喽各位铁汁们好啊&#xff0c;我是博主鸽芷咕《C干货基地》是由我的襄阳家乡零食基地有感而发&#xff0c;不知道各位的…

优思学院|拉丁方实验设计是什么?

今天&#xff0c;我要给大家带来一个六西格玛实验设计的小窍门——拉丁方设计。这是一种巧妙的方式&#xff0c;帮助我们探索不同因素&#xff08;输入&#xff09;对结果&#xff08;输出&#xff09;的影响&#xff0c;同时巧妙地处理那些我们不想要的“噪音因素”。 想象一…

GAMMA电源维修高压直流电源ES30P-5W ES系列

美国Gamma高压电源维修型号&#xff1a;D-ES30R-10N-5W/M&#xff0c;LXR30-1N&#xff0c;XRM5N-100W&#xff0c;ES50P-10W/DDPM&#xff0c;ES60P-10W/DDPM&#xff0c;RR20-20P/DDPM&#xff0c;ES30P-10W&#xff0c;ES60P-10W DDPM&#xff0c;RR60-18P/220V&#xff0c;…

Matlab偏微分方程拟合 | 完整源码 | 视频教程

专栏导读 作者简介&#xff1a;工学博士&#xff0c;高级工程师&#xff0c;专注于工业软件算法研究本文已收录于专栏&#xff1a;《复杂函数拟合案例分享》本专栏旨在提供 1.以案例的形式讲解各类复杂函数拟合的程序实现方法&#xff0c;并提供所有案例完整源码&#xff1b;2.…

springboot 加入 日志+ controller 加入全局异常捕获

提下比较好点 包含将捕获的异常堆栈完整的返回给前端。方便 后端人员用 swagger 或 knife 工具验证接口时&#xff0c;直接看到异常。 有啥用呢&#xff1f;在现场环境&#xff0c;或不方便远程服务器机器时&#xff0c;非常有用&#xff01;&#xff01;&#xff01; 同时&…

ChatGPT数据分析应用——漏斗分析

ChatGPT数据分析应用——漏斗分析 ​ 漏斗分析在数据分析中也比较常用&#xff0c;主要是用于发现各个转化流程中哪个环节有问题。接下来我们让ChatGPT解释这个方法的概念并提供相应的案例。发送如下内容给ChatGPT。 ​ ChatGPT收到上述内容后&#xff0c;返回如下结果。 漏斗…

分布式架构下 网络通信的底层实现原理(一)

什么是通信&#xff1f; 当我们通过浏览器访问一个网址时&#xff0c;一段时间后该网址会渲染出访问的内容&#xff0c;这个过程是怎么实现的呢&#xff1f; 这种通信方式是基于http协议实现的&#xff0c;那么什么是协议&#xff1f; 像一个中国人和一个外国人交流时&#xf…

Redis 配置文件详解

Units 单位 配置大小单位&#xff0c;开头定义了一些基本的度量单位&#xff0c;只支持bytes&#xff0c;不支持bit&#xff0c;大小写不敏感。 # Redis configuration file example. # # Note that in order to read the configuration file, Redis must be # started with …

无尘抹布在洁净室环境中的作用与重要性

导言&#xff1a; 洁净室环境&#xff0c;特别是在制药、电子和生物技术等行业中&#xff0c;对清洁和卫生的要求极为严格。无尘抹布在维护这些环境的洁净和卫生方面起着至关重要的作用。本文将探讨无尘抹布的重要性以及在洁净室环境中的各种应用。 了解无尘抹布 定义和组成&a…

TensorBoard——Pytorch版使用(附带案例演示)

TensorBoard是一个用于可视化机器学习实验结果的工具&#xff0c;可以帮助我们更好地理解和调试训练过程中的模型。 在PyTorch中&#xff0c;我们可以使用TensorBoardX库来与TensorBoard进行交互。TensorBoardX是一个PyTorch的扩展&#xff0c;它允许我们将PyTorch的训练中的关…

基于Vue的兴趣活动推荐APP的设计与实现

目 录 摘 要 I Abstract II 引 言 1 1 相关技术简介 3 1.1 框架 3 1.1.1 Spring MVC 3 1.1.2 Spring框架 3 1.1.3 MyBatis框架 3 1.1.4 VUE框架 3 1.2 开发语言 3 1.2.1 JAVA 3 1.2.2 JavaScript 4 1.3 设计模式 4 1.4 数据库 4 2 可行性分析 5 2.1 社会可行性 5 2.2 经济可行…

Extended Feature Pyramid Network for SmallObject Detection

摘要 各种尺度的特征耦合会削弱小对象的性能&#xff0c;本文中&#xff0c;我们提出了具有超高分辨率金字塔的扩展特征金字塔网络&#xff08;EFPN &#xff09;&#xff0c;专门用于小目标检测。具体来说&#xff0c;我们设计了一个新模块&#xff0c;称为特征纹理转移&#…

《Effective Modern C++》- 极精简版 5-14条

本文章属于专栏《业界Cpp进阶建议整理》 继续上篇《Effective Modern C》- 极精简版 1-4条。本文列出《Effective Modern C》的5-14条的个人理解的极精简版本。 Item5、优先考虑auto而非显示类型声明 auto的优势&#xff1a; 强制变量初始化在返回部分场景&#xff0c;会返回一…

释机器学习中的召回率、精确率、准确率

精确率和召回率又被叫做查准率和查全率&#xff0c;可以通过P-R图进行表示 如何理解P-R(精确率-召回率)曲线呢&#xff1f;或者说这些曲线是根据什么变化呢&#xff1f; 以逻辑回归举例&#xff0c;其输出值是0-1之间的数字。因此&#xff0c;如果我们想要判断用户的好坏&…

如何做好【沟通】管理

目录 管理的定义 管理的四大职能&#xff1a; 四共团队&#xff1a; 领导力&#xff1a; 沟通的四种类型听、说、读、写&#xff08;计划、报告&#xff09; 沟通四原则 思维框架&#xff1a;结构树报告 管理的定义 彼得.德鲁克&#xff1a;管理通过他人去完成任务的学…

基于java SSM图书管理系统简单版设计和实现

基于java SSM图书管理系统简单版设计和实现 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源码联系…

c++ 11 新特性 不同数据类型之间转换函数之const_cast

一.不同数据类型之间转换函数const_cast介绍 const_cast是C11中引入的一种类型转换操作符&#xff0c;用于修改类型的const或volatile属性。const_cast的主要用途是移除对象的常量性&#xff0c;它是唯一具有此能力的C风格的转型操作符。在C11中&#xff0c;const_cast可以完成…

Linux安装,配置,启动HBase

Linux安装&#xff0c;配置&#xff0c;启动HBase 一、HBase安装&#xff0c;配置 1、下载HBase安装包 Hbase官方下载地址: http://archive.apache.org/dist/hbase 选择相应的版本点击下载&#xff0c;这里以2.3.5为例 # linux可以通过wget命令下载 wget https://archive…

如何解决Firefox提示“此网站可能不支持TLS1.2协议”的问题 错误代码:SSL_ERROR_UNSUPPORTED_VERSION

1.问题描述 当你在Firefox浏览器中访问一个网站时&#xff0c;可能会遇到这样的提示&#xff1a;   之后&#xff0c;不停地刷新或 重新输入&#xff0c;怎么也访问不进去&#xff1f;&#xff1f; 2.解决步骤 按照以下步骤操作&#xff0c;可以降低Firefox对TLS版本的要求…

HEUFT电源维修x-ray发生器维修HBE211226

HEUFT电源维修x-ray发生器维修HBE211253;海富HEUFT在线液位检测X射线发生器维修&#xff0c;不限型型号系列。 德国海富推出HEUFT在线液位检测装置,满瓶检测系统HEUFT有着强大的功能,它的模块机构能整合很多程序,并依据不同的产品及其包装特性,照相技术,高频技术或X-ray技术。…