ESTIMATE免疫评分和肿瘤纯度

背景:

在肿瘤微环境中,除了免疫浸润细胞,还存在大量的肿瘤细胞和基质细胞。
不同类型的免疫细胞在抗肿瘤和肿瘤免疫逃逸过程中又发挥了不同的作用,肿瘤的生长、侵袭和转移与肿瘤的生长、侵袭和转移,无不与免疫细胞相关。其次就是基质细胞,基质细胞也被认为在肿瘤生长、疾病进展和耐药性中起重要作用。
ESTIMATE(Estimation of STromal and Immune cells in MAlignant Tumour tissues using Expression data)利用癌症样本转录谱的来推断肿瘤细胞的含量,以及浸润的免疫细胞和基质细胞。能够把肿瘤组织中与肿瘤微环境相关的免疫细胞、基质细胞和肿瘤细胞的比例或者丰度计算出来。
与上述CIBERSORT和ssGSEA不同的是:
(1)除了免疫细胞,还能分析肿瘤细胞纯度和基质细胞的丰度;(2)ESTIMATE,对于免疫细胞,仅能计算一个总的免疫细胞评分,而无法给出每种免疫细胞的具体比例。

ESTIMATE分析流程如下:

image.png

简单总结一下,作者从TCGA等公共数据库中筛选了不同平台的数据,包括Agilent, Affymetirx, Illumina RNASeq等平台,从中筛选出两个 signature,一个是Stromal signature(基质细胞特征基因),另一个是Immune signature(免疫细胞特征基因)。两个标签分别有141个基因。然后通过ssGSEA分别计算基质得分和免疫得分。最后联合这两个得分生成一个ESTIMATE score,并用于分析肿瘤纯度。

ESTIMATE官网(https://bioinformatics.mdanderson.org/estimate/index.html)

代码实战

使用的数据,是前期整理的数据,即数据分析标准的格式

加载R包
library(ggsci)
library(tidyr)
library(ggpubr)
library(utils) #这个包应该不用下载,自带的
#rforge <- "http://r-forge.r-project.org"
#install.packages("estimate", repos=rforge, dependencies=TRUE)
library(estimate)
library(tidyverse)

#读取肿瘤患者01A表达谱
expr <- read.table("LIHC_fpkm_mRNA_01A.txt",sep = "\t",row.names = 1,check.names = F,stringsAsFactors = F,header = T)

#计算免疫评分
filterCommonGenes(input.f = "LIHC_fpkm_mRNA_01A.txt",#输入文件名   
                  output.f = "LIHC_fpkm_mRNA_01A.gct",#输出文件名   
     id = "GeneSymbol") #行名为gene symbol
estimateScore("LIHC_fpkm_mRNA_01A.gct",   #刚才的输出文件名
              "LIHC_fpkm_mRNA_01A_estimate_score.txt",   #新的输出文件名(即估计的结果文件)
              platform="affymetrix")   #默认平台
#3. 输出每个样品的打分
result <- read.table("LIHC_fpkm_mRNA_01A_estimate_score.txt",sep = "\t",row.names = 1,check.names = F,stringsAsFactors = F,header = T)
result <- result[,-1]   
colnames(result) <- result[1,]   
result <- as.data.frame(t(result[-1,]))

write.table(result, file = "LIHC_fpkm_mRNA_01A_estimate_score.txt",sep = "\t",row.names = T,col.names = NA,quote = F) # 保存并覆盖score

可视化

a <- result  #由于后面代码都是a,所以将result赋值给a.

identical(rownames(a),rownames(group)) # 样品组别信息提前处理好
a$group <- group$group
a <- a %>% rownames_to_column("sample")
b <- gather(a,key=category,value = score,-c(group,sample))
#将得分由字符型变量转变成数值型变量。
b1=as.data.frame(lapply(b$score,as.numeric)) %>% t() %>% as.data.frame()
b$score <- b1$V1
#画图
ggboxplot(b, x = "category", y = "score",
          fill = "group", palette = "lancet")+
  stat_compare_means(aes(group = group),
                     method = "wilcox.test",
                     label = "p.signif",
                     symnum.args=list(cutpoints = c(0, 0.001, 0.01, 0.05, 1),
                                      symbols = c("***", "**", "*", "ns")))+
  theme(text = element_text(size=10),
        axis.text.x = element_text(angle=45, hjust=1)) 

结果输出

各类型细胞的得分

致谢:

  1. 小陈医生想躺平
  2. 再探“免疫浸润”:ESTIMATE分析免疫评分和肿瘤纯度-微信文章-仪器谱 (antpedia.com)

你可能感兴趣的:(ESTIMATE免疫评分和肿瘤纯度)