R:GSVA

作者: 一只小脑斧 | 来源:发表于2022-04-27 21:12 被阅读0次

    参考小丫画图:61

    BiocManager::install("GSVA")

    library(clusterProfiler)

    library(limma)

    library(ggplot2)

    library(data.table)

    library(ggpubr)

    library(GSVA)

    Sys.setenv(LANGUAGE = "en") #显示英文报错信息

    options(stringsAsFactors = FALSE) #禁止chr转成factor

    setwd("/data/ff/ref/GSVA")

    #查看msigdbr包里自带的物种

    msigdbr_show_species()

    #H: hallmark gene sets;C1: positional gene sets; C2: curated gene sets.KEGG ;C3: motif gene sets;

    #C4: computational gene sets

    #C5: GO gene sets;C6: oncogenic signatures;C7: immunologic signatures

    #"Homo sapiens"  "Mus musculus"

    ###############制作参考基因集----

    #########################H

    h <- msigdbr(species = "Homo sapiens", # 物种拉丁名

                category = "H") #此处以hallmark为例,你也可以选择MSigDB的其他注释

    # 示例数据表达矩阵的基因名是gene symbol,这里就选gene_symbol。

    # 如果你的表达矩阵以ENTREZ ID作为基因名,就把下面这段的gene_symbol换成entrez_gene

    h <- dplyr::select(h, gs_name, gene_symbol) %>% #或entrez_gene

      as.data.frame %>%

      split(., .$gs_name) %>%

      lapply(., function(x)(x$gene_symbol)) #或entrez_gene

    # 在每个geneset里面去掉重复的基因

    gs <- lapply(h, unique)

    # 预览过滤后的结果

    head(gs)

    # 保存到文件,方便以后重复使用

    save(gs, file = "hallmark.gs.RData")

    #########################C1

    C1 <- msigdbr(species = "Homo sapiens", # 物种拉丁名

                  category = "C1") #此处以C1allmark为例,你也可以选择MSigDB的其他注释

    # 示例数据表达矩阵的基因名是gene symbol,这里就选gene_symbol。

    # 如果你的表达矩阵以ENTREZ ID作为基因名,就把下面这段的gene_symbol换成entrez_gene

    C1 <- dplyr::select(C1, gs_name, gene_symbol) %>% #或entrez_gene

      as.data.frame %>%

      split(., .$gs_name) %>%

      lapply(., function(x)(x$gene_symbol)) #或entrez_gene

    # 在每个geneset里面去掉重复的基因

    gs <- lapply(C1, unique)

    # 预览过滤后的结果

    head(gs)

    # 保存到文件,方便以后重复使用

    save(gs, file = "C1.positional.gene.sets.gs.RData")

    #########################C2

    C2 <- msigdbr(species = "Homo sapiens", # 物种拉丁名

                  category = "C2") #此处以C2allmark为例,你也可以选择MSigDB的其他注释

    # 示例数据表达矩阵的基因名是gene symbol,这里就选gene_symbol。

    # 如果你的表达矩阵以ENTREZ ID作为基因名,就把下面这段的gene_symbol换成entrez_gene

    C2 <- dplyr::select(C2, gs_name, gene_symbol) %>% #或entrez_gene

      as.data.frame %>%

      split(., .$gs_name) %>%

      lapply(., function(x)(x$gene_symbol)) #或entrez_gene

    # 在每个geneset里面去掉重复的基因

    gs <- lapply(C2, unique)

    # 预览过滤后的结果

    head(gs)

    # 保存到文件,方便以后重复使用

    save(gs, file = "C2.KEGG.gs.RData")

    #########################C3

    C3 <- msigdbr(species = "Homo sapiens", # 物种拉丁名

                  category = "C3") #此处以C3allmark为例,你也可以选择MSigDB的其他注释

    # 示例数据表达矩阵的基因名是gene symbol,这里就选gene_symbol。

    # 如果你的表达矩阵以ENTREZ ID作为基因名,就把下面这段的gene_symbol换成entrez_gene

    C3 <- dplyr::select(C3, gs_name, gene_symbol) %>% #或entrez_gene

      as.data.frame %>%

      split(., .$gs_name) %>%

      lapply(., function(x)(x$gene_symbol)) #或entrez_gene

    # 在每个geneset里面去掉重复的基因

    gs <- lapply(C3, unique)

    # 预览过滤后的结果

    head(gs)

    # 保存到文件,方便以后重复使用

    save(gs, file = "C3.motif.gene.sets.gs.RData")

    #########################C4

    C4 <- msigdbr(species = "Homo sapiens", # 物种拉丁名

                  category = "C4") #此处以C4allmark为例,你也可以选择MSigDB的其他注释

    # 示例数据表达矩阵的基因名是gene symbol,这里就选gene_symbol。

    # 如果你的表达矩阵以ENTREZ ID作为基因名,就把下面这段的gene_symbol换成entrez_gene

    C4 <- dplyr::select(C4, gs_name, gene_symbol) %>% #或entrez_gene

      as.data.frame %>%

      split(., .$gs_name) %>%

      lapply(., function(x)(x$gene_symbol)) #或entrez_gene

    # 在每个geneset里面去掉重复的基因

    gs <- lapply(C4, unique)

    # 预览过滤后的结果

    head(gs)

    # 保存到文件,方便以后重复使用

    save(gs, file = "C4.computational gene sets.gs.RData")

    #########################C5

    C5 <- msigdbr(species = "Homo sapiens", # 物种拉丁名

                  category = "C5") #此处以C5allmark为例,你也可以选择MSigDB的其他注释

    # 示例数据表达矩阵的基因名是gene symbol,这里就选gene_symbol。

    # 如果你的表达矩阵以ENTREZ ID作为基因名,就把下面这段的gene_symbol换成entrez_gene

    C5 <- dplyr::select(C5, gs_name, gene_symbol) %>% #或entrez_gene

      as.data.frame %>%

      split(., .$gs_name) %>%

      lapply(., function(x)(x$gene_symbol)) #或entrez_gene

    # 在每个geneset里面去掉重复的基因

    gs <- lapply(C5, unique)

    # 预览过滤后的结果

    head(gs)

    # 保存到文件,方便以后重复使用

    save(gs, file = "C5.GO.gs.RData")

    #########################C6

    C6 <- msigdbr(species = "Homo sapiens", # 物种拉丁名

                  category = "C6") #此处以C6allmark为例,你也可以选择MSigDB的其他注释

    # 示例数据表达矩阵的基因名是gene symbol,这里就选gene_symbol。

    # 如果你的表达矩阵以ENTREZ ID作为基因名,就把下面这段的gene_symbol换成entrez_gene

    C6 <- dplyr::select(C6, gs_name, gene_symbol) %>% #或entrez_gene

      as.data.frame %>%

      split(., .$gs_name) %>%

      lapply(., function(x)(x$gene_symbol)) #或entrez_gene

    # 在每个geneset里面去掉重复的基因

    gs <- lapply(C6, unique)

    # 预览过滤后的结果

    head(gs)

    # 保存到文件,方便以后重复使用

    save(gs, file = "C6.oncogenic.gs.RData")

    #########################C7

    C7 <- msigdbr(species = "Homo sapiens", # 物种拉丁名

                  category = "C7") #此处以C7allmark为例,你也可以选择MSigDB的其他注释

    # 示例数据表达矩阵的基因名是gene symbol,这里就选gene_symbol。

    # 如果你的表达矩阵以ENTREZ ID作为基因名,就把下面这段的gene_symbol换成entrez_gene

    C7 <- dplyr::select(C7, gs_name, gene_symbol) %>% #或entrez_gene

      as.data.frame %>%

      split(., .$gs_name) %>%

      lapply(., function(x)(x$gene_symbol)) #或entrez_gene

    # 在每个geneset里面去掉重复的基因

    gs <- lapply(C7, unique)

    # 预览过滤后的结果

    head(gs)

    # 保存到文件,方便以后重复使用

    save(gs, file = "C7.immunologic.gs.RData")

    ###################酌情考虑

    为了减少冗余信息的干扰,

    在每个geneset中,不应该出现重复的基因;↑

    在两个或更多个pathway中出现的基因应该被彻底剔除。↓

    # 在每个geneset里面去掉重复的基因

    gs <- lapply(h, unique)

    # 接下来去掉那些在两个或更多个pathways里出现过的genes

    count <- table(unlist(gs))

    keep <- names(which(table(unlist(gs)) < 2))

    gs <- lapply(gs, function(x) intersect(keep, x))

    # 过滤之后,很多pathway一个gene都不剩了,去掉这些

    gs <- gs[lapply(gs, length) > 0]

    # 预览过滤后的结果

    head(gs)

    #######################开始GSVA

    ################C2.KEGG----

    (load("/data/ff/ref/GSVA/C2.KEGG.gs.RData")) #保存在当前文件夹

    # 这一句就完成了GSVA分析

    gsva_KEGG <- gsva(as.matrix(gsym.expr), gs)

    head(gsva_KEGG)

    # 把通路的表达量保存到文件

    write.csv(gsva_KEGG, "gsva.C2.KEGG.csv", quote = F)

    ################C5.GO----

    (load("/data/ff/ref/GSVA/C5.GO.gs.RData")) #保存在当前文件夹

    # 这一句就完成了GSVA分析

    gsva_GO <- gsva(as.matrix(gsym.expr), gs)

    head(gsva_GO)

    # 把通路的表达量保存到文件

    write.csv(gsva_GO, "gsva.C5.GO.csv", quote = F)

    ################C7.IMMUNOLOGIC----

    (load("/data/ff/ref/GSVA/C7.immunologic.gs.RData")) #保存在当前文件夹

    # 这一句就完成了GSVA分析

    gsva_C7 <- gsva(as.matrix(gsym.expr), gs)

    head(gsva_C7)

    # 把通路的表达量保存到文件

    write.csv(gsva_C7, "gsva.C7.immunologic.csv", quote = F)

    ################HALLMARK----

    (load("/data/ff/ref/GSVA/hallmark.gs.RData")) #保存在当前文件夹

    # 这一句就完成了GSVA分析

    gsva_hallmark <- gsva(as.matrix(gsym.expr), gs)

    head(gsva_hallmark)

    # 把通路的表达量保存到文件

    write.csv(gsva_hallmark, "gsva.HALLMARK.csv", quote = F)

    ###########################合并总文件

    gsva.all <- rbind(gsva_KEGG,gsva_GO,gsva_C7,gsva_hallmark)

    # 把通路的表达量保存到文件

    write.csv(gsva.all, "gsva.all.csv", quote = F)

    相关文章

      网友评论

          本文标题:R:GSVA

          本文链接:https://www.haomeiwen.com/subject/mhglyrtx.html