irGSEA

作者: 重拾生活信心 | 来源:发表于2024-02-20 14:04 被阅读0次

    Installation

    
    # install packages from CRAN
    cran.packages <- c("aplot", "BiocManager", "circlize", "cowplot","data.table", 
                       "devtools", "doParallel", "doRNG", "dplyr", "ggfun", "gghalves", 
                       "ggplot2", "ggplotify", "ggridges", "ggsci", "irlba",
                       "magrittr", "Matrix", "msigdbr", "pagoda2", "plyr", "pointr", 
                       "purrr", "RcppML", "readr", "reshape2", "reticulate", 
                       "rlang", "RMTstat", "RobustRankAggreg", "roxygen2", 
                       "Seurat", "SeuratObject", "stringr", "tibble", "tidyr", 
                       "tidyselect", "tidytree", "VAM")
    
    for (i in cran.packages) {
      if (!requireNamespace(i, quietly = TRUE)) {
        install.packages(i, ask = F, update = F)
      }
    }
    
    # install packages from Bioconductor
    bioconductor.packages <- c("AUCell", "BiocParallel", "ComplexHeatmap", 
                               "decoupleR", "fgsea", "ggtree", "GSEABase", 
                               "GSVA", "Nebulosa", "scde", "singscore",
                               "SummarizedExperiment", "UCell",
                               "viper","sparseMatrixStats")
    
    for (i in bioconductor.packages) {
      if (!requireNamespace(i, quietly = TRUE)) {
        BiocManager::install(i, ask = F, update = F)
      }
    }
    
    # install packages from Github
    if (!requireNamespace("irGSEA", quietly = TRUE)) { 
        devtools::install_github("chuiqin/irGSEA", force =T)
    }
    

    Functional Class Scoring

    在这里,我们审视了17种常见的FCS方法:


    • GSEA
      检测排序基因列表顶部或底部的基因集富集程度,该列表是分组后计算排序基因信噪比或排序基因倍数变化得到的;
    • GSVA
      估计所有细胞之间每个基因的累积密度函数的核。 这个过程中需要考虑所有样本,容易受到样本背景信息的影响;
    • PLAGE
      对跨细胞的基因表达矩阵进行标准化,并提取奇异值分解作为基因集富集分数;
    • Zscore
      聚合了基因集中所有基因的表达,通过细胞间的平均值和标准差缩放表达;
    • AddModuleScore
      需要先计算基因集中所有基因的平均值,再根据平均值把表达矩阵切割成若干份,然后从切割后的每一份中随机抽取对照基因(基因集外的基因)作为背景值。因此,在整合不同样本的情况下,即使使用相同基因集为相同细胞打分,也会产生不同的富集评分;
    • SCSE
      使用基因集所有基因的归一化的总和来量化基因集富集分数;
    • Vision
      使用随机签名的预期均值和方差对基因集富集分数进行 z 归一化从而校正基因集富集分数;
    • VAM
      根据经典Mahalanobis多元距离从单细胞 RNA 测序数据生成基因集富集分数;
    • Gficf
      利用通过非负矩阵分解获得的基因表达值的潜在因子的信息生物信号;
    • Pagoda2
      拟合每个细胞的误差模型,并使用其第一个加权主成分量化基因集富集分数;
    • AUCell
      基于单个样本中的基因表达排名,使用曲线下面积来评估输入基因集是否在单个样本的前5%表达基因内富集;
    • UCell
      基于单个样本的基因表达排名,使用Mann-Whitney U统计量计算单个样本的基因集富集分数;
    • Singscore
      根据基因表达等级评估距单个细胞中心的距离。 基因集中的基因根据单个细胞中的转录本丰度进行排序。 平均等级相对于理论最小值和最大值单独标准化,以零为中心,然后聚合,所得分数代表基因集的富集分数;
    • ssGSEA
      根据每个细胞的基因表达等级计算内部和外部基因集之间的经验累积分布的差异分数。 使用全局表达谱对差异分数进行标准化。 标准化这一步容易受样本构成的影响。
    • JASMINE
      根据在单个细胞中表达基因中的基因排名和表达基因中基因集的富集度计算近似平均值。 这两个值均标准化为 0-1 范围,并通过平均进行组合,得出基因集的最终富集分数。
    • Viper
      通过根据细胞间基因表达的排名执行three-tailed计算来估计基因集的富集分数。
    • Sargent
      将给定细胞的非零表达基因从高表达到低表达进行排序,并将输入的基因逐细胞表达矩阵转换为相应的gene-set-by-cell assignment score matrix。 但
    • Sargent
      需要计算细胞间的gini-index后,将按gene-set-by-cell assignment score matrix转换为distribution of indexes。
    image.png image.png image.png
    library(irGSEA)
    library(Seurat)
    library(SeuratData)
    
    # loading dataset
    data("pbmc3k.final")
    pbmc3k.final <- UpdateSeuratObject(pbmc3k.final)
    # plot
    DimPlot(pbmc3k.final, reduction = "umap",
            group.by = "seurat_annotations",label = T) + NoLegend()
    
    Idents(pbmc3k.final) <- pbmc3k.final$seurat_annotations
    
    pbmc3k.final <- irGSEA.score(object = pbmc3k.final, assay = "RNA", 
                                 slot = "data", seeds = 123, ncores = 4,
                                 min.cells = 3, min.feature = 0,
                                 custom = F, geneset = NULL, msigdb = T, 
                                 species = "Homo sapiens", category = "H",  
                                 subcategory = NULL, geneid = "symbol",
                                 method = c("AUCell", "UCell", "singscore", 
                                            "ssgsea", "JASMINE", "viper"),
                                 aucell.MaxRank = NULL, ucell.MaxRank = NULL, 
                                 kcdf = 'Gaussian')
    
    Seurat::Assays(pbmc3k.final)
    #> [1] "RNA"       "AUCell"    "UCell"     "singscore" "ssgsea"    "JASMINE"  
    #> [7] "viper"
    
    result.dge <- irGSEA.integrate(object = pbmc3k.final, 
                                   group.by = "seurat_annotations",
                                   metadata = NULL, col.name = NULL,
                                   method = c("AUCell","UCell","singscore",
                                              "ssgsea", "JASMINE", "viper"))
    
    irGSEA.heatmap.plot <- irGSEA.heatmap(object = result.dge, 
                                          method = "RRA",
                                          top = 50, 
                                          show.geneset = NULL)
    irGSEA.heatmap.plot
    
    irGSEA.heatmap.plot <- irGSEA.heatmap(object = result.dge, 
                                          method = "RRA",
                                          top = 50, 
                                          show.geneset = NULL)
    irGSEA.heatmap.plot
    
    irGSEA.upset.plot <- irGSEA.upset(object = result.dge, 
                                      method = "RRA")
    irGSEA.upset.plot
    

    相关文章

      网友评论

          本文标题:irGSEA

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