首页 > 其他分享 >ssGSEA中GSVA调用报错的解决方法

ssGSEA中GSVA调用报错的解决方法

时间:2024-12-23 18:26:41浏览次数:8  
标签:ssGSEA GSVA gsva object list 报错 expr method

ssGSEA中GSVA调用报错

问题

expr是表达谱,表达数据矩阵,行是基因,列是样本。
cellMarker是一个包含基因集的列表。

在R中使用GSVA的2.0.2版本

gsva_data <- gsva(expr,cellMarker, method = "ssgsea")

会报错:Calling gsva(expr=., gset.idx.list=., method=., …) is defunct; use a method-specific parameter object (see ‘?gsva’).

答案

老版本一步,新版本要两步,第一步要给出方法特定的参数对象。

gsvaPar <- ssgseaParam(exprData = expr, 
                       geneSets = cellMarker,
                       normalize = TRUE)
gsva_data <- gsva(gsvaPar, verbose = FALSE)

解决过程

1. 先百度,发现是版本更新之后不可用的问题。

2. 试图下载老版本,无果,且该方法感觉不如改代码一劳永逸,故另寻他法。

3. 自己什么代码都不会,先找免费的AI,b站都是广告,一般只能免费用三次左右。找到一个浏览器插件版免费ChatGPT,开始问AI。

#假设expr是表达数据,cellMarker是标记基因的列表
#创建参数对象
gsva_params <- GSVA::gsvaControl()

# 调用gsva函数,使用参数对象
gsva_data <- gsva(expr, gset.idx.list = cellMarker, gset.name.type = "entrez", method = "gsva", control = gsva_params)

‘gsvaControl’ is not an exported object from ‘namespace:GSVA’

# 假设 expr 是您的表达矩阵,cellMarker 是一个 list,包含标记基因的集
# 你需要传递的参数可能包括:
#   expr:表达数据矩阵,行是基因,列是样本
#   gset.idx.list:一个包含基因集的列表(在此是cellMarker)
#   method:选择 GSVA 方法

# 使用gsva函数
gsva_data <- gsva(
  expr,                          # 表达数据矩阵
  gset.idx.list = cellMarker,    # 包含基因集的列表
  method = "gsva"                # 使用GSVA方法
)

# 查看结果
head(gsva_data)

错误于gsva(expr, gset.idx.list = cellMarker, method = “gsva”):
Calling gsva(expr=., gset.idx.list=., method=., …) is defunct; use a method-specific parameter object (see ‘?gsva’).

# 转换基因集为基因索引
gene_ids <- rownames(expr)
gset.idx.list <- lapply(cellMarker, function(genes) which(gene_ids %in% genes))

# 创建 gsva 参数对象
gsva_params <- gsvaParamFactory()

# 运行 gsva
gsva_result <- gsva(expr, gset.idx.list = gset.idx.list, param = gsva_params)

# 查看结果
head(gsva_result)

错误于gsvaParamFactory(): 没有"gsvaParamFactory"这个函数

result <- gsva(exprs, gene_set, method = "gsva", min.sz = 1, max.sz = 1000,   
                mx.diff = TRUE, verbose = TRUE)  

错误于gsva(expr, cellMarker, method = “ssgsea”, min.sz = 1, max.sz = 1000, :
Calling gsva(expr=., gset.idx.list=., method=., …) is defunct; use a method-specific parameter object (see ‘?gsva’).

# 创建一个方法特定的参数对象  
gsva_params <- gsvaParameter(method = "ssgsea", min.sz = 1, max.sz = 1000)  

# 在分析前创建 gset.idx.list,这里作为示例,仅展示变量名  
# cellMarker 需为列表格式,可以根据你的数据设置  
# cellMarker <- list("Sample1" = c("GeneA", "GeneB"), "Sample2" = c("GeneC"))  

# 运行 gsva 函数  
result <- gsva(expr, gset.idx.list = cellMarker, params = gsva_params)  

错误于gsvaParameter(method = “ssgsea”, min.sz = 1, max.sz = 1000):
没有"gsvaParameter"这个函数

result <- gsva(expr, gset.idx.list = cellMarker, method = "ssgsea", min.sz = 1, max.sz = 1000)

错误于gsva(expr, gset.idx.list = cellMarker, method = “ssgsea”, min.sz = 1, :
Calling gsva(expr=., gset.idx.list=., method=., …) is defunct; use a method-specific parameter object (see ‘?gsva’).

# 创建方法特定的参数对象  
params <- GSVA::GSVAParameter(method = "ssgsea", min.sz = 1, max.sz = 1000)  
# 运行 gsva 函数  
result <- gsva(expr, gset.idx.list = cellMarker, params = params)  

params <- GSVA::GSVAParameter(method = “ssgsea”, min.sz = 1, max.sz = 1000)
错误: ‘GSVAParameter’ is not an exported object from ‘namespace:GSVA’

4.AI太愚蠢了,绕圈子。继续百度

感谢知乎博主:被炸熟的虾
(20 封私信 / 22 条消息) 新版本GSVA中使用ssgsea最新代码是啥啊? - 知乎
更新前的分析方法只要一步:

##We can calculate GSVA enrichment scores as follows:
library(GSVA)
gsva.es <- gsva(expr = X, 
                gset.idx.list = gs,
                method = 'gsva',
                kcdf = 'Gaussian',
                verbose = FALSE)
dim(gsva.es)#[1] 100  30
gsva.es[1:5, 1:5]
#              s1          s2          s3           s4           s5
#gs1 -0.163169867 -0.18230994  0.36746012 -0.010434415 -0.026349618
#gs2  0.007954471 -0.05686215 -0.20594532 -0.009643796 -0.057696047
#gs3 -0.161205687  0.24624689  0.09306792 -0.033363937 -0.002946779
#gs4  0.126560368 -0.08559508 -0.26097093 -0.181676230 -0.307544679
#gs5  0.076199136 -0.01887931 -0.02707651 -0.069945789 -0.086908249
##First we should build a parameter object for the desired methodology.R
gsvaPar <- gsvaParam(exprData = X, 
                     geneSets = gs,
                     kcdf = "Gaussian")
gsvaPar
##Second, we call the gsva() function with the parameter object as first argument. 
gsva.es <- gsva(gsvaPar, verbose = FALSE)
dim(gsva.es)#[1] 100  30
gsva.es[1:5, 1:5]
#              s1          s2          s3           s4           s5
#gs1 -0.163169867 -0.18230994  0.36746012 -0.010434415 -0.026349618
#gs2  0.007954471 -0.05686215 -0.20594532 -0.009643796 -0.057696047
#gs3 -0.161205687  0.24624689  0.09306792 -0.033363937 -0.002946779
#gs4  0.126560368 -0.08559508 -0.26097093 -0.181676230 -0.307544679
#gs5  0.076199136 -0.01887931 -0.02707651 -0.069945789 -0.086908249

照着修改即可解决

gsvaPar <- gsvaParam(exprData = expr, 
                     geneSets = cellMarker,
                     kcdf = "Gaussian")
gsva_data <- gsva(gsvaPar, verbose = FALSE)

数据不对

gsvaPar <- gsvaParam(exprData = expr, 
                     geneSets = cellMarker,
                     kcdf = "Gaussian")
gsva_data <- gsva(gsvaPar, verbose = TRUE)

还是不对

到这里我发现自己其实没看全,继续看博主网页

library(GSVA)
##First we should build a parameter object for the desired methodology.R
gsvaPar <- ssgseaParam(exprData = as.matrix(uni_matrix), 
                       geneSets = geneset,
                       normalize = TRUE)
##Second, we call the gsva() function with the parameter object as first argument. 
ssGSEA_matrix <- gsva(gsvaPar, verbose = FALSE)
dim(ssGSEA_matrix)#[1] 100  30
ssGSEA_matrix[1:5, 1:5]
###normalize参数用最大值与最小值间的绝对差对ssGSEA分数进行标准化,默认为TRUE

修改后:

gsvaPar <- ssgseaParam(exprData = expr, 
                       geneSets = cellMarker,
                       normalize = TRUE)
gsva_data <- gsva(gsvaPar, verbose = FALSE)

终于数据完全一致

标签:ssGSEA,GSVA,gsva,object,list,报错,expr,method
From: https://blog.csdn.net/dolanjiang/article/details/144673628

相关文章

  • 【YashanDB知识库】YMP迁移过程中报错YAS-02143或YAS-02193
    本文内容来自YashanDB官网,原文内容请见https://www.yashandb.com/newsinfo/7802944.html?templateId=1718516【标题】YMP迁移过程中报错accountlock【关键字】YMP迁移accountlockopenssl【问题描述】YMP所在机器的openssl版本低于1.1.1,在安装YMP及内置库时使用了--deps将......
  • FTP协议报错解决
    遇见FTP报状态码错误的解决办法之前文章中有大概提到过FTP状态码的各种情况,但是不详细,现在根据本博主工作中遇见过的FTP报错状态码重新写一篇以及解决办法11xx-信息性状态码2110-重新启动标记回复。34120-服务将在nnn分钟后准备就绪。56125-数据连接......
  • 【随手记录】Apache POI 报错:Zip bomb detected! The file would exceed the max. rat
    1、背景:使用POI解析Excel报错:Zipbombdetected!Thefilewouldexceedthemax.ratioofcompressedfilesizetothesizeoftheexpandeddata。Thismayindicatethatthefileisusedtoinflatememoryusageandthiscouldposeasecurityrisk.Youcanadj......
  • SAP 报错:指定参考表和参考字段
    起因是我在新建数据库表字段的时候,遇到了这样一个问题:原因是数量类型需要指定一个单位点击“货币/数量字段”加上参考字段就好了SAP里只有两个这样的特殊字段:QUAN和CURRDataType是QUAN(数量类型)的字段,要引用单位字段UNIT(即DataType为UNIT的字段);DataType是CURR......
  • push代码报错fatal: Authentication failed的问题解决
    在不使用pat之前,我的centos系统不能向github提交代码,然后我在github上申请了pat并且配置,可以成功提交代码了,而且还免除了输入用户名和密码的麻烦。如何申请pat(咨询文心快码就可以得到答案):如何在git上配置pat(继续咨询文心快码):配置完成之后,问题得到解决,现在可以正常的push代码......
  • 向github仓库上传代码报错的处理
    remote:PermissiontoBROtao233/socket_study.gitdeniedtoMasterTao2233.fatal:unabletoaccess'https://github.com/BROtao233/socket_study.git/':TherequestedURLreturnederror:403在通过push命令向github仓库上传代码时,遇到了上面的报错仔细读,意思是,对于用户......
  • 解决 PbootCMS 附件上传报错
    根据你提供的信息,PbootCMS附件上传时报错:  上传失败:UNKNOW:Code:8192;Desc:stripos():Non-stringneedleswillbeinterpretedasstringsinthefuture.Useanexplicitchr()calltopreservethecurrentbehavior;File:/www/wwwroot/aaa.xxxx.com/core/fu......
  • 导入程序中的sql文件报错正常怎么办
    导入SQL文件时遇到错误是比较常见的问题。以下是一些常见的错误及其解决方法:常见错误及解决方法语法错误错误信息:YouhaveanerrorinyourSQLsyntax;checkthemanualthatcorrespondstoyourMySQLserverversionfortherightsyntaxtousenear...解决方法:......
  • 用pandas读取MRPC数据库时报错:pandas.errors.ParserError: Error tokenizing data. C
    读取的代码很简单,如下:data_path='MRPC/msr_paraphrase_test.txt'df=pd.read_csv(data_path,sep='\t',encoding='utf-8')困扰了一下午,最后本来不打算解决了。想着直接跳过错误,即:df=pd.read_csv(data_path,sep='\t',encoding='utf-8',on_......
  • 【项目实战】SQL报错注入之updatexml的实现
    SQL报错注入之updatexml的实现updatexml函数通过输入不符合XPATH格式的数据来触发报错,并利用这一点进行SQL注入,通过分析报错信息,可以判断是否存在注入点,并逐步爆出数据库名、表名、字段名以及敏感数据,感兴趣的可以了解一下1.updatexml报错原理updatexml(xml_doument,X......