生信笔记 | 自定义GSEA分析中的gmt格式文件

28a05a492e5be075caa75cfbcef6d1e1.gif

在GSEA分析中,在MSigDB(Molecular Signatures Database)数据库中定义了很多基因集,下载的基因集是gmt格式文件。下载的gmt格式文件,打开后可以看见是下面这个样子的:

f2898697e33c8c3846d13923960f82a4.png

gmt(Gene Matrix Transposed,基因矩阵转置)是多列注释文件,列与列之间都是Tab制表符分割。

第1列:是基因所属基因集的名字,可以是通路名字,也可以是自己定义的任何名字。

第2列 :一般是描述信息,说明这套基因列表从哪里收集的,也可以为空或者用NA表示。官方提供的格式是URL,也可以是任意字符串。

第3列-第n列:是基因集内所有基因的名字,有几个写几列。

每一行的列数可以不一样,主要是基因集内的基因数量不一样。

gmt文件可用 read.gmt()函数读入,读入的数据是一个数据框。

gmt <- read.gmt("./c5.go.cc.v7.2.symbols.gmt")
class(gmt)

如何制作自定义的gmt文件?下面是来自生信技能树的案例代码:

library(clusterProfiler)
data(gcSample)
names(gcSample)
file="sink-examp.txt"
gs=gcSample
write.gmt <- function(gs,file){
  sink(file)
  lapply(names(gs), function(i){
    cat( paste(c(i,'tmp',gs[[i]]),collapse='\t') )
    cat('\n')
  })
  sink()
}
write.gmt(gs,file)

gcSample数据是来自clusterProfiler包,只是用来练习,自己自定义的可能并不是这样的list,可以处理成类似gcSample数据的list,用上面代码写出gmt文件。

下面是我处理的一个基因集

geneset <- read.table("data/AAsMet.txt",header = T,sep = "\t")
head(geneset)
> head(geneset)
  MoleculeType Identifier MoleculeName   catabolism.Type            ID Essential
1     Proteins     A2RU49         HYKK Lysine catabolism R-HSA-71064.2       Yes
2     Proteins     Q9BQT8     SLC25A21 Lysine catabolism R-HSA-71064.2       Yes
3     Proteins     Q92947         GCDH Lysine catabolism R-HSA-71064.2       Yes
4     Proteins     Q8N5Z0        AADAT Lysine catabolism R-HSA-71064.2       Yes
5     Proteins     Q8IUZ5       PHYKPL Lysine catabolism R-HSA-71064.2       Yes
6     Proteins     Q9P0Z9        PIPOX Lysine catabolism R-HSA-71064.2       Yes

MoleculeName和 catabolism.Type这2列是我们要的。

可以自己构建类似上面gcSample的list,然后自己写一个函数输入就行。

name <- unique(geneset$catabolism.Type)
description <- rep(NA,length(name))
names(description) <- name
genes <- lapply(name, function(name){
   as.vector(geneset[geneset$catabolism.Type == name,"MoleculeName"])
})
names(genes) <- name
gmtinput <- list(name=name,description=description,genes=genes)
get_gmt <- function(gmtinput,filename){
  output <- file(filename, open="wt")
  lapply(gmtinput[["name"]],function(name){
    outlines = paste0(c(name, gmtinput[["description"]][[name]],
                        gmtinput[["genes"]][[name]]),collapse='\t')
    writeLines(outlines, con=output)
  })
  close(output)
}
get_gmt(gmtinput=gmtinput,filename="data/catabolism.gmt")

我自己定义了一个输入对象gmtInfo

setClass("gmtInfo",slots=list(name="vector",description="vector",genes ="list"))
gmtInfo <- new("gmtInfo",name=name,description=description,genes = genes)

定义用来处理gmtInfo对象的函数:

write.gmt1 <- function(filename,gmtInfo){
  if(class(gmtInfo) == "gmtInfo"){
    output <- file(filename, open="wt")
    lapply(gmtInfo@name,function(name){
      writeLines(paste(c(name, gmtInfo@description[[name]],gmtInfo@genes[[name]]),collapse='\t'),
                 con=output)
    })
    close(output)
  }
}
write.gmt1(filename="data/catabolism1.gmt",gmtInfo = gmtInfo)


write.gmt2 <- function(filename,gmtInfo){
  if(class(gmtInfo) == "gmtInfo"){
    sink(filename)
    lapply(gmtInfo@name, function(name){
      cat(paste(c(name, gmtInfo@description[[name]],gmtInfo@genes[[name]]),collapse='\t'))
      cat('\n')
    })
    sink()
  }
}
write.gmt2(filename="data/catabolism2.gmt",gmtInfo = gmtInfo)

参考:

上次说的gmt函数(学徒作业)

https://blog.csdn.net/coding_Joash/article/details/120422166

ad3df8b9c1973000e9c38961451bc877.png

72c9b6266847f2a34bdede64fb77eb91.png

ccd8d7ff1d4e0433756d695436af8d1f.png

fe6aa3e2ecf956f2c4541bdb28a2a621.png

293bab34382db6170bb5a054a43a165c.png

929b72284073a82ddaa1b60170f5e08b.png

9123bdb1d0541cca7716d8d08ad4f8a8.png

a0001ffc3b797a5aed03d87c9ec27fa0.png

8a870544a5331720894f6b0eaa6fd7e5.png

  • 8
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: GSEA(基因集富集分析)是一种常用的生物信息学分析方法,用于研究基因集在基因表达谱的富集情况。下面是使用R语言进行GSEA生信分析的代码示例: 1. 首先,需要安装和加载必要的R包,例如GSEA包和其他必要的依赖包。 ```R install.packages("GSEA") library(GSEA) ``` 2. 加载基因表达数据集,通常是一个包含基因表达矩阵的数据文件。假设文件名为"expression_data.txt",其包含基因表达矩阵和对应的样本信息。 ```R expression_matrix <- read.table("expression_data.txt", header = TRUE) ``` 3. 定义基因集,可以是预定义的基因集数据库(例如MSigDB)的基因集,也可以是自定义的基因集。 ```R gene_sets <- c("GO_Biological_Process", "KEGG_Pathways", "Custom_Gene_Set") ``` 4. 进行GSEA分析,使用`gsea()`函数。其,`gene_expr_matrix`参数为基因表达矩阵,`gene_sets`参数为基因集,`class_vector`参数为样本类别信息向量。 ```R gsea_results <- gsea(gene_expr_matrix = expression_matrix, gene_sets = gene_sets, class_vector = sample_classes) ``` 5. 分析结果包括富集分数(Enrichment Score)、正负富集基因集和富集图谱等。可以通过可视化方法进一步探索和解释这些结果。 ```R enrichment_score <- gsea_results$es positive_sets <- gsea_results$pos_sets negative_sets <- gsea_results$neg_sets gene_set_plot <- plot(gsea_results) ``` 以上是使用R语言进行GSEA生信分析的基本代码示例。根据具体的研究问题和分析目标,还可以进行更多的数据预处理和可视化分析。 ### 回答2: GSEA(Gene Set Enrichment Analysis)是一种生物信息学分析工具,可用于确定基因集在给定基因表达数据的富集程度。下面是R语言实现GSEA分析的示例代码。 首先,需要安装并加载GSEABase、clusterProfiler和enrichplot等相关的R包。 ```R install.packages("GSEABase") install.packages("clusterProfiler") install.packages("enrichplot") library(GSEABase) library(clusterProfiler) library(enrichplot) ``` 接下来,准备基因表达数据和基因集数据。假设基因表达数据保存在一个矩阵,行表示基因,列表示样本;基因集数据保存在GMT格式文件,每行包含一个基因集的名称、描述和基因列表。 ```R expression_data <- read.table("expression_data.txt", header = TRUE, row.names = 1) gmt_file <- system.file("extdata", "c2.cp.kegg.v7.4.symbols.gmt", package = "DOSE") gene_sets <- readGMT(gmt_file) ``` 然后,进行GSEA分析。可以选择使用差异表达基因列表作为输入,或者将基因表达数据与基因集数据一起传递。以下是基于基因表达数据进行GSEA分析的示例。 ```R gene_rank <- computeGeneRank(expression_data, method = "t.test") result <- enrichGSEA(gene_sets, gene_rank) ``` 最后,可以使用enrichplot包的函数绘制GSEA结果的可视化,例如绘制富集图和基因集热图。 ```R dotplot(result, showCategory = 20) gene_heatmap(result, top = 10) ``` 通过这些代码,我们可以使用R语言实现GSEA生信分析,从而确定基因集在给定基因表达数据的富集程度,并可视化展示分析结果。 ### 回答3: GSEA (基因集富集分析) 是一种用于分析生物学实验数据的生物信息学工具,它可以确定在给定条件下,特定基因集的基因与实验结果相关性的显著性。下面是一个用R语言进行GSEA生信分析的代码示例: 1. 导入所需的R包。 ```R library(clusterProfiler) ``` 2. 导入基因表达数据。 ```R expression_data <- read.table("expression_data.txt", header = TRUE, sep = "\t") ``` 3. 根据实验分组信息创建一个分组向量。 ```R group <- c(rep("Group A", 3), rep("Group B", 3)) ``` 4. 根据基因的符号名称创建一个基因符号向量。 ```R gene_symbols <- c("Gene1", "Gene2", "Gene3", "Gene4", "Gene5", "Gene6") ``` 5. 创建一个基因集对象。 ```R gene_set <- list( GroupA_genes = c("Gene1", "Gene2", "Gene3"), GroupB_genes = c("Gene4", "Gene5", "Gene6") ) ``` 6. 运行GSEA分析。 ```R gsea_result <- gseGO(expression_data, geneSet = gene_set, nPerm = 1000, minGSSize = 3, maxGSSize = 500, pvalueCutoff = 0.05) ``` 7. 查看GSEA结果。 ```R print(gsea_result) ``` 这段代码,首先导入了clusterProfiler包,它包含了进行GSEA分析所需的函数。然后,基因表达数据被读入到一个名为expression_data的数据框。接下来创建了一个分组向量,它指定了每个样品所属的实验组。然后,基因符号向量被创建,其包含了基因的符号名称。根据实验组信息和基因符号,一个基因集对象被创建。最后,调用gseGO函数运行GSEA分析,其包括参数,如基因集、置换次数、最小/最大基因集大小和显著性阈值。最后,打印GSEA分析的结果。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【云森】

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值