【生物信息】ESTIMATE 分析免疫评分和肿瘤纯度
ESTIMATE 分析免疫评分和肿瘤纯度
背景:
通过从病人体内提取肿瘤组织样本的方式所获得的样本不仅包含了肿瘤细胞这一类别的生物单元体而且也包含了与其形成的 tumor microenvironment 相关的各种辅助信息单元体这些辅助信息单元体具体包括正常状态下的正常细胞免疫反应参与的免疫活性态细胞具有自我修复功能的血管内皮样结构以及存在于血液流中的流动状态下的血液成分

其中最具重要性的是免疫细胞。由于免疫细胞的种类繁多,在抗肿瘤以及肿瘤免疫逃逸过程中发挥着各自的作用。其生长、侵袭及转移过程均与免疫细胞密切相关。此外,在研究中发现基质成分在肿瘤生长、疾病进展以及耐药性等方面扮演着关键角色
所以有人因此而产生了一个想法 如果能够测定肿瘤组织中与肿瘤微环境相关联的免疫细胞 基质细胞以及肿瘤细胞的数量或比例 这是否具有重要意义呢?
随后由MD Anderson cancer center 的开发者所研发的新算法提出。该算法基于癌症样本转录谱数据,并结合肿瘤组织中浸润的免疫细胞以及基质中的其他细胞类型信息来进行推测。该方法被命名为Estimation of STromal and Immune cells in Malignant Tumour tissues using Expression data,并简称 ESTIMATE

提出 ESTIMATE 算法的文章
Yoshihara et al. presented a study titled "Estimating tumor purity along with stromal and immune cell admixture based on expression profiles," which was published in Nature Communications, Volume 4, Issue (2013), page 2612. The research utilized expression data to achieve these findings.
在Pubmed简单搜索,就有 3000+ 的记录,可见该方法很值得学习

截止2022年5月Pubmed中关于ESTIMATE immune score 的检索信息,共计3042个结果
与现有的CIBERSORT方法和其他如ssGSEA相比的主要区别在于:(1)除了免疫细胞外,该方法还能进一步分析肿瘤细胞纯度以及基质细胞的比例;(2)对于免疫细胞群体而言,在计算上仅能得到一个总评分指标,并不能提供各类别免疫细胞性别或数量的具体数据。其基本分析思路与ssGSEA存在相似之处,并且具体的步骤大致如下所述。

研究者从TCGA等公共数据库中收集了多种实验平台的数据,并从中筛选出两个关键基因组特征(Signature)。其中一个涉及基质细胞特征基因(Stromal signature),另一个涉及免疫细胞特征基因(Immune signature)。这两个关键点各自涉及141个基因。通过串并行基因集分析法(ssGSEA)分别计算出基质相关分值和免疫相关分值。最后将这两个分值整合成一个综合评估分数(ESTIMATE score),并用于评估肿瘤的纯度水平。该研究发表于《Nature Communications》期刊上,在2013年首次报道。
ESTIMATE官网上提供丰富的软件介绍资料;其中一项研究聚焦于TCGA数据库中常见癌症类型下的免疫反应特征分析;对于感兴趣的研究者而言,可访问官方网站进一步研究这一分析结果:
-官网链接: [ESTIMATE: Home

点击这里前往生物信息学估计器网站
案例:
计算肿瘤样本的免疫评分,这里用的是TCGA下载的FPKM格式的表达矩阵
该软件包不仅在免疫评分方面具有重要性,并且还包含基质评分、估计评分以及肿瘤纯度等多个评估指标
第一步:准备R包
###计算肿瘤样本免疫评分###
#清空环境变量
rm(list=ls())
options(stringsAsFactors = F)
#安装estimate包
install.packages("estimate", repos="http://r-forge.r-project.org", dependencies=TRUE)
#加载需要用的包
library(utils)
library(estimate)
第二步:准备表达矩阵,根据数据需要考虑是否进行Log转换
##读取表达文件
load("CESC_FPKM_tumor.Rda")#加载表达矩阵文件
expr <- log2(CESC_FPKM_tumor_final + 1) #将表达量进行log转换
write.table(expr, "FPKM_tumor_log2.txt",sep = "\t",
row.names = T,col.names = NA,quote = F)
第三步:将表达值矩阵先转换为gct格式
##转换GCT表达谱格式
filterCommonGenes(input.f = "FPKM_tumor_log2.txt", #输入文件名
output.f = "FPKM_tumor_log2.gct", #输出文件名
id = "GeneSymbol") #行名为gene symbol
这一步会过滤掉没有信息的基因,如下:230个基因未匹配
[1] "Merged dataset includes 10182 genes (230 mismatched)."
第四步:进行estimate分析
estimateScore("FPKM_tumor_log2.gct",
"FPKM_tumor_estimate_score.txt",
platform="affymetrix") #默认平台
这里可以通过下方代码查看点图,但没有很大必要
plotPurity(scores="FPKM_tumor_estimate_score.txt")

第五步:进行格式转换,整理成适合分析的格式
est <- read.table("FPKM_tumor_estimate_score.txt",
sep = "\t",row.names = 1,check.names = F,stringsAsFactors = F,header = T)
est <- est[,-1] #移除第一列
colnames(est) <- est[1,] #设置列名
est <- as.data.frame(t(est[-1,]))
rownames(est) <- colnames(expr)
write.table(est, file = "FPKM_tumor_estimate_score.txt",
sep = "\t",row.names = T,col.names = NA,quote = F)
最终得到如下表所示结果

