17  免疫浸润细胞

免疫浸润分析在癌症研究中扮演着至关重要的角色,它有助于理解癌症微环境中免疫细胞的组成及其作用。bulk转录组基因表达数据的反卷积技术,如CIBERSORT算法,是实现这一分析的重要工具。

免疫浸润分析在癌症研究中的应用场景非常广泛,主要有以下几个方面:

  1. 评估肿瘤免疫微环境状态:免疫浸润分析有助于评估肿瘤免疫微环境的状态,从而了解肿瘤内免疫细胞的组成和活性,这对于指导免疫治疗策略的选择至关重要。

  2. 了解病原体与宿主免疫细胞的相互作用:在感染性疾病中,免疫浸润分析有助于了解病原体与宿主免疫细胞的相互作用,为疫苗研发和免疫调节治疗提供依据。

  3. 揭示异常免疫细胞的浸润和激活:在自身免疫性疾病中,免疫浸润分析有助于揭示异常免疫细胞的浸润和激活,为诊断和疾病机制研究提供线索。 至于免疫浸润分析的优缺点,主要包括:

免疫浸润分析的算法
表 17.1: 免疫浸润算法比较
method organism license citation
quanTIseq human free (BSD) https://doi.org/10.1186/s13073-019-0638-6
TIMER human free (GPL 2.0) https://doi.org/10.1186/s13059-016-1028-7
CIBERSORT human free for non-commerical use only https://doi.org/10.1038/nmeth.3337
MCPCounter human free (GPL 3.0) https://doi.org/10.1186/s13059-016-1070-5
xCell human free (GPL 3.0) https://doi.org/10.1186/s13059-017-1349-1
EPIC human free for non-commercial use only (Academic License) https://doi.org/10.7554/eLife.26476
ESTIMATE human free (GPL 2.0) https://doi.org/10.1038/ncomms3612
ABIS human free (GPL 2.0) https://doi.org/10.1016/j.celrep.2019.01.041
ConsensusTME human free (GPL 3.0) https://doi.org/10.1158/0008-5472.CAN-18-3560
mMCPCounter mouse free (GPL 3.0) https://doi.org/10.1186/s13073-020-00783-w
seqImmuCC mouse free for non-commerical use only https://doi.org/10.3389/fimmu.2018.01286
DCQ mouse free (GPL 2.0) https://doi.org/10.1002/msb.134947
BASE mouse free https://doi.org/10.1038/ncomms10248
ImmuCellAI human free https://doi.org/10.1002/advs.201902880

17.1 加载R包

使用rm(list = ls())来清空环境中的所有变量。

library(tidyverse)
library(Biobase)
library(immunedeconv)
library(ImmuCellAI)

rm(list = ls())
options(stringsAsFactors = F)
options(future.globals.maxSize = 10000 * 1024^2)

grp_names <- c("Early Stage", "Late Stage")
grp_colors <- c("#8AC786", "#B897CA")
grp_shapes <- c(15, 16)

17.2 导入数据


ExprSet <- readRDS("./data/result/ExpSetObject/MergeExpSet_VoomSNM_VoomSNM_LIRI-JP_TCGA-LIHC.RDS")

17.3 所需函数


get_ImmuneCell <- function(
  exprset,
  method = c("mcp_counter", "epic", "quantiseq", 
             "xcell", "cibersort", "cibersort_abs",
             "timer", "consensus_tme", "abis", 
             "estimate", "ImmuCellAI")) {
  
  profile <- Biobase::exprs(exprset)
  metadata <- Biobase::pData(exprset)
  
  if (any(method == "cibersort", method == "cibersort_abs")) {
    immunedeconv::set_cibersort_binary("./data/result/ImmuneCell/CIBERSORT.R")
    immunedeconv::set_cibersort_mat("./data/result/ImmuneCell/LM22.txt")
  }

  colnames(fit)[1] <- "CellType"
  
  print(fit$CellType)
  
  res <- metadata %>%
    dplyr::inner_join(fit %>%
                        tibble::column_to_rownames("CellType") %>%
                        t() %>% as.data.frame() %>%
                        tibble::rownames_to_column("SampleID"),
                      by = "SampleID")
    
  return(res)
}

17.4 运行ImmuCellAI

ImmuCellAI(Immune Cell Abundance Identifier)(Miao 等 2020)是一个免疫浸润计算工具,用于从基因表达数据集(包括RNA-Seq和芯片数据)中估计24种免疫细胞的丰度。这24种免疫细胞由18种T细胞亚型和6种其他免疫细胞组成,包括B细胞、NK细胞、单核细胞、巨噬细胞、中性粒细胞和DC细胞。

ImmuCellAI可用于估计不同人群免疫细胞浸润的差异,以及预测患者对免疫检查点阻断疗法的反应。此外,ImmuCellAI还可用于建立免疫治疗反应预测模型,并且已经过测试,发现其模型精度在0.80到0.91之间。这表明ImmuCellAI在肿瘤免疫浸润评估和免疫治疗反应预测中具有强大而独特的功能。

在使用ImmuCellAI时,用户需要准备全编码蛋白的表达谱基因数据,并选择数据类型和是否预测免疫治疗响应。运行后,用户可以直接下载结果。此外,ImmuCellAI支持RNA-seq和芯片两种数据的上传,并且可以通过每一个免疫细胞特征基因的表达来进行免疫浸润评分。

注意:直接使用remotes::install_github("lydiaMyr/ImmuCellAI@main")安装是有问题的,建议下载仓库提供的ImmuCellAI_0.1.0.tar.gz本地安装


Icell_ImmuCellAI <- get_ImmuneCell(
  exprset = ExprSet,
  method = "ImmuCellAI") 
  
head(Icell_ImmuCellAI)
Icell_ImmuCellAI <- get_ImmuneCell(
  exprset = ExprSet,
  method = "ImmuCellAI") 
  
head(Icell_ImmuCellAI)

结果:获得24种免疫细胞的丰度表达谱。

17.5 其他免疫浸润方法

  • CIBERSORT算法的原理基于一个核心假设:在复杂组织中,细胞类型特异的基因表达模式可以被用来区分不同的细胞类型。具体而言,CIBERSORT通过比较待测样本的基因表达模式与已知细胞类型的基因表达模式,来推断待测样本中各种细胞类型的相对比例。

  • quanTIseq免疫浸润方法的原理主要基于反卷积算法。这种方法利用bulk samples的RNA-seq数据(即包含多种细胞类型的混合样本的基因表达数据),通过计算每个免疫细胞类型的特异性基因表达特征,来预测肿瘤样本中不同种类免疫细胞的相对丰度或组成。

  • ESTIMATE免疫浸润方法是一种基于基因表达数据预测恶性肿瘤组织中间质细胞和免疫细胞含量的方法。其原理主要基于单个样本基因集合的富集分析(ssGSEA)。在ESTIMATE方法中,基因集合的富集分析是关键步骤。它基于预先定义的基因集合(如与基质或免疫细胞相关的基因集合),通过计算样本中这些基因的表达水平,来评估特定细胞类型在样本中的富集程度。

实现的R代码
# cibersort
Icell_cibersort <- get_ImmuneCell(
  exprset = ExprSet,
  method = "cibersort") 
  
# quantiseq
Icell_quantiseq <- get_ImmuneCell(
  exprset = ExprSet,
  method = "quantiseq") 
  
# estimate
Icell_estimate <- get_ImmuneCell(
  exprset = ExprSet,
  method = "estimate") 

17.6 输出结果


if (!dir.exists("./data/result/ImmuneCell/")) {
  dir.create("./data/result/ImmuneCell/", recursive = TRUE)
}

write.csv(Icell_ImmuCellAI, "./data/result/ImmuneCell/HCC_ImmuneCell_ImmuCellAI.csv", row.names = F)

17.7 总结

免疫浸润分析在肿瘤学研究中占据重要位置,其目的在于探究肿瘤微环境中不同免疫细胞类型的分布和状态,以及它们与肿瘤细胞之间的相互作用。这种分析有助于更深入地理解肿瘤免疫微环境的复杂性,并为肿瘤免疫治疗提供重要的参考信息。

为了实现免疫浸润分析,科学家们开发了多种算法,这些算法基于不同的原理来预测肿瘤样本中各种免疫细胞的相对丰度。其中,反卷积算法是一种重要的方法,它通过利用bulk samples的RNA-seq数据,结合已知的免疫细胞特异性基因表达特征,来估计不同免疫细胞类型在肿瘤样本中的含量。

在本研究中,采用了ImmuCellAI(Miao 等 2020)算法对转录组数据进行了反卷积分析。通过运行该算法,成功得到了每个肿瘤样本中24种免疫细胞的相对丰度结果。这些结果为进一步探究肿瘤免疫微环境的复杂性、理解免疫细胞与肿瘤细胞之间的相互作用提供了宝贵的数据支持。

系统信息
sessionInfo()
R version 4.3.3 (2024-02-29)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Sonoma 14.2

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib 
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0

locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

time zone: Asia/Shanghai
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices datasets  utils     methods   base     

other attached packages:
 [1] ImmuCellAI_0.1.0    quadprog_1.5-8      pracma_2.4.4       
 [4] e1071_1.7-14        gridExtra_2.3       GSVA_1.50.5        
 [7] immunedeconv_2.1.0  EPIC_1.1.7          Biobase_2.62.0     
[10] BiocGenerics_0.48.1 lubridate_1.9.3     forcats_1.0.0      
[13] stringr_1.5.1       dplyr_1.1.4         purrr_1.0.2        
[16] readr_2.1.5         tidyr_1.3.1         tibble_3.2.1       
[19] ggplot2_3.5.1       tidyverse_2.0.0    

loaded via a namespace (and not attached):
  [1] rstudioapi_0.16.0           jsonlite_1.8.8             
  [3] magrittr_2.0.3              rmarkdown_2.26             
  [5] zlibbioc_1.48.2             vctrs_0.6.5                
  [7] memoise_2.0.1               DelayedMatrixStats_1.24.0  
  [9] RCurl_1.98-1.14             htmltools_0.5.8.1          
 [11] S4Arrays_1.2.1              progress_1.2.3             
 [13] curl_5.2.1                  cellranger_1.1.0           
 [15] Rhdf5lib_1.24.2             SparseArray_1.2.4          
 [17] rhdf5_2.46.1                htmlwidgets_1.6.4          
 [19] cachem_1.0.8                lifecycle_1.0.4            
 [21] ComICS_1.0.4                pkgconfig_2.0.3            
 [23] rsvd_1.0.5                  Matrix_1.6-5               
 [25] R6_2.5.1                    fastmap_1.1.1              
 [27] GenomeInfoDbData_1.2.11     MatrixGenerics_1.14.0      
 [29] digest_0.6.35               colorspace_2.1-0           
 [31] AnnotationDbi_1.66.0        S4Vectors_0.40.2           
 [33] irlba_2.3.5.1               GenomicRanges_1.54.1       
 [35] RSQLite_2.3.6               beachmat_2.18.1            
 [37] filelock_1.0.3              mMCPcounter_1.1.0          
 [39] testit_0.13                 fansi_1.0.6                
 [41] timechange_0.3.0            httr_1.4.7                 
 [43] abind_1.4-5                 mgcv_1.9-1                 
 [45] compiler_4.3.3              proxy_0.4-27               
 [47] bit64_4.0.5                 withr_3.0.0                
 [49] BiocParallel_1.36.0         DBI_1.2.2                  
 [51] HDF5Array_1.30.1            biomaRt_2.58.2             
 [53] MASS_7.3-60.0.1             rappdirs_0.3.3             
 [55] DelayedArray_0.28.0         tools_4.3.3                
 [57] glue_1.7.0                  nlme_3.1-164               
 [59] rhdf5filters_1.14.1         grid_4.3.3                 
 [61] generics_0.1.3              sva_3.50.0                 
 [63] gtable_0.3.5                tzdb_0.4.0                 
 [65] class_7.3-22                preprocessCore_1.64.0      
 [67] hms_1.1.3                   BiocSingular_1.18.0        
 [69] ScaledMatrix_1.10.0         xml2_1.3.6                 
 [71] utf8_1.2.4                  XVector_0.42.0             
 [73] pillar_1.9.0                limma_3.58.1               
 [75] genefilter_1.84.0           splines_4.3.3              
 [77] BiocFileCache_2.10.2        lattice_0.22-6             
 [79] renv_1.0.0                  survival_3.7-0             
 [81] bit_4.0.5                   annotate_1.80.0            
 [83] tidyselect_1.2.1            SingleCellExperiment_1.24.0
 [85] locfit_1.5-9.9              Biostrings_2.70.3          
 [87] knitr_1.46                  IRanges_2.36.0             
 [89] edgeR_4.0.16                SummarizedExperiment_1.32.0
 [91] stats4_4.3.3                xfun_0.43                  
 [93] statmod_1.5.0               matrixStats_1.3.0          
 [95] stringi_1.8.4               yaml_2.3.8                 
 [97] evaluate_0.23               codetools_0.2-19           
 [99] data.tree_1.1.0             BiocManager_1.30.23        
[101] graph_1.80.0                cli_3.6.2                  
[103] xtable_1.8-4                munsell_0.5.1              
[105] Rcpp_1.0.12                 GenomeInfoDb_1.38.8        
[107] readxl_1.4.3                dbplyr_2.5.0               
[109] png_0.1-8                   XML_3.99-0.16.1            
[111] parallel_4.3.3              blob_1.2.4                 
[113] prettyunits_1.2.0           sparseMatrixStats_1.14.0   
[115] bitops_1.0-7                GSEABase_1.64.0            
[117] scales_1.3.0                crayon_1.5.2               
[119] rlang_1.1.3                 KEGGREST_1.42.0