RNAseq|免疫浸润也杀疯了,cibersoert?xCELL?ESTIMATE?你常用哪一个

简介: RNAseq|免疫浸润也杀疯了,cibersoert?xCELL?ESTIMATE?你常用哪一个

本文首发于“生信补给站”公众号  https://mp.weixin.qq.com/s/Seo6MZicBgBOfhz7equ80g


肿瘤免疫浸润分析是一个文献中的网红分析内容,分析软件有很多,本次先介绍一下cibersort ,xCELL 和 ESTIMATE ,这几款软件在文章中的出镜率都很高 。

那都是做免疫浸润的,我们需要了解这么多软件吗?下面简单介绍下使用场景 ,可以根据自己的场景适配分析软件和内容。

(1)Cibersort:基于反卷积算法,可以得到22种免疫细胞的丰度结果

(2)xCELL:基于标记基因集合的ssGSEA算法,可以得到5个大类的64种细胞类型的丰度结果含有非免疫的。

(3)ESTIMATE:可以得到整体的基质细胞和免疫细胞评分


零 准备数据


通过XENA(UCSC Xena)下载TCGA-SKCM的表达量矩阵 ,记得同时下载对应的probeMap文件,方便将Ensembl_ID转为常见的基因symbol。

详细可见 TCGA数据挖掘 | Xena - TCGA数据下载


数据处理

建议使用Rstudio建立project,每个项目一个project 。TCGA | 以项目方式管理代码数据  以及 数据读取存储

在project下新建一个data文件夹,存放XENA下载的数据。读取data文件夹中的数据


library(tidyverse)
library(openxlsx)
library(estimate)
#1)读取表达量数据,,或者给绝对路径
data <- read.table("../data/TCGA-SKCM.htseq_fpkm.tsv",sep = "\t" , header = T,
#row.names = "Ensembl_ID",
                   stringsAsFactors = FALSE ,
                   check.names = FALSE)
#2)读取probeMap文件,转换Ensembl_ID
probeMap <- read.table("../data/gencode.v22.annotation.gene.probeMap",sep = "\t" , header = T,
                       stringsAsFactors = FALSE ,
                       check.names = FALSE)
# 3)转为基因symbol
exp <- data %>%
  inner_join(probeMap, by = c("Ensembl_ID" = "id")) %>%
  select(gene , starts_with("TCGA") ) 
#4)相同探针/基因,取表达量最大
expr <- exp %>%
  mutate(rowMean =rowMeans(.[grep("TCGA", names(.))])) %>%
  arrange(desc(rowMean)) %>%
  distinct(gene,.keep_all = T) %>%
  select(-rowMean) %>%
  column_to_rownames(var = "gene")
expr[1:4,1:4]
#       TCGA-EE-A2GJ-06A TCGA-EE-A2GI-06A TCGA-WE-A8ZM-06A TCGA-DA-A1IA-06A
#MT-CO2         13.45460         12.86170         13.42982         12.99413
#MT-CO3         12.67183         11.81769         13.10443         12.62491
#MT-ND4         13.21440         12.37920         13.10761         12.44728
#MT-CO1         13.14420         12.23376         12.93742         12.69075


一 CIBERSORT 方法


CIBERSORT 是基于支持向量回归(SVR:support vector regression)的原理对人类免疫细胞亚型的表达矩阵进行去卷积的工具。

提供了含有22种免疫细胞亚型的基因表达特征集文件-LM22.txt

CIBERSORT的整体原理图如下所示

1, 输入数据要求

在原文"Profiling tumor infiltrating immune cells with CIBERSORT "中提到了对于数据的要求

(1)表达量矩阵不能有负值,不能有缺失值 ,不要log转化 ;

(2)RNA-Seq表达量的话,FPKM和TPM都可以;

2,数据转化

CIBERSORT需要2个输入文件,一个是表达矩阵文件,一个是前面提到的LM22.txt(22种免疫细胞的基因表达特征数据)。

因为下载的是log2(FPKM+1)后的FPKM,这里根据CIBERSORT的要求转为FPKM。另外就是需要将行名变成一列 。

#########转为fpkm##########
fpkm <- 2^expr - 1
#对应列名
fpkm <- fpkm %>% 
  rownames_to_column("gene")
#保存成输入文件
write.table(fpkm,"SKCM.fpkm.txt",sep = "\t" ,quote = F, row.names=F)

3,CIBERSORT运行

CIBERSORT主要是由doPerm ,CoreAlg 和 CIBERSORT 三个函数构成,可以source的方式直接加载函数。https://rdrr.io/bioc/tidybulk/src/R/cibersort.R



## 加载函数
source("cibersort.R")
## 指定基因特征集
sig_matrix <- "LM22.txt"
## 指定表达矩阵
mixture_file = 'SKCM.fpkm.txt'
#运行cibersort 此步骤比较慢
cibersort_res <- CIBERSORT(sig_matrix, mixture_file, perm=10, QN=TRUE)
# output CIBERSORT results
cibersort_res[1:4,1:4]
#                B cells naive B cells memory Plasma cells T cells CD8
#TCGA-EE-A2GJ-06A   0.006688073     0.00000000  0.000000000   0.3108573
#TCGA-EE-A2GI-06A   0.057898624     0.00000000  0.065030989   0.2741003
#TCGA-WE-A8ZM-06A   0.002775345     0.00000000  0.000000000   0.0000000
#TCGA-DA-A1IA-06A   0.000000000     0.04971243  0.003565012   0.0000000

这样就得到了每个样本的22种免疫亚型的浸润结果,后续可以进行箱线图,小提琴图,柱形图等的可视化,以及各种分组(分子分型,riskscore高低,临床分期等)的比较。

4,ERROR:出现如下报错,按照提示 不存在哪个包就安装哪个包即可。

二 xCELL 方法


xCELL是基于标记基因集合的ssGSEA算法,可以得到如下图所示的5个大类的64种细胞类型的丰度结果,包括适应性和先天免疫细胞,造血祖细胞,上皮细胞和细胞外基质细胞(含有非免疫的细胞类型)。


1, 输入数据要求

根据xCELL包的github官网https://github.com/dviraran/xCell中提到,注意rowname需要是 gene ,而不是像cibersort中gene需要是首列。

2,运行xCELL

可以按照github使用 rawEnrichmentAnalysis ,transformScores 和 spillOver分步骤运算。

这里可以使用作者包装好的pipeline的方式运行(推荐)



#devtools::install_github('dviraran/xCell')
library(xCell)
fpkm2 <- fpkm %>% 
  column_to_rownames("gene")
fpkm2[1:4,1:4]
xCell  = xCellAnalysis(fpkm2, 
                       rnaseq = TRUE, # RNA-seq
                       parallel.sz = 1, #线程数 ,window建议改为1
                       parallel.type = "SOCK") 
dim(xCell)
xCell[1:4,1:4]
#           TCGA-EE-A2GJ-06A TCGA-EE-A2GI-06A TCGA-WE-A8ZM-06A TCGA-DA-A1IA-06A
#aDC            2.673902e-01     2.845002e-01     1.058243e-02     8.379095e-02
#Adipocytes     1.363339e-18     3.572483e-18     2.347432e-02     0.000000e+00
#Astrocytes     0.000000e+00     0.000000e+00     7.729962e-02     2.331681e-18
#B-cells        1.118969e-01     2.076587e-01     3.362450e-19     8.289009e-03

三步运行的方式参照https://github.com/dviraran/xCell

这样就得到了每个样本的64种细胞亚型的结果(含有非免疫),以及ImmuneScore,StromaScore 和 MicroenvironmentScore

后续同样可以进行箱线图,小提琴图,柱形图等的可视化,以及各种分组(分子分型,riskscore高低,临床分期等)的比较。

三 ESTIMATE 方法


ESTIMATE可以利用表达谱数据来估计肿瘤样本的基质分数(stromal score )和免疫分数(immune score),算法使用的是ssGSEA


1, 载入R包 数据

library(utils)
rforge <- "http://r-forge.r-project.org"
#install.packages("estimate", repos=rforge, dependencies=TRUE)
library(estimate)

2,运行ESTIMATE

filterCommonGenes(input.f="SKCM.fpkm.txt", 
                   output.f="SKCM.gct", 
                   id="GeneSymbol")
#[1] "Merged dataset includes 10221 genes (191 mismatched)." 
estimateScore(input.ds = "SKCM.gct",
               output.ds="SKCM_estimate_score.gct", 
               platform="illumina") #转录组数据与芯片数据计算过程不同的地方是platform是illumina
#[1] "1 gene set: StromalSignature  overlap= 139"
#[1] "2 gene set: ImmuneSignature  overlap= 141"
estimate=read.table("SKCM_estimate_score.gct",skip = 2,header = T,stringsAsFactors = F,
                  check.names = F)
rownames(estimate)=estimate[,1]
estimate=t(estimate[,3:ncol(estimate)])
head(estimate)
#                 StromalScore ImmuneScore ESTIMATEScore
#TCGA.EE.A2GJ.06A   -290.24425  1712.12627      1421.882
#TCGA.EE.A2GI.06A   -429.93780  1635.89999      1205.962
#TCGA.WE.A8ZM.06A   -320.94643  -804.57717     -1125.524
#TCGA.DA.A1IA.06A  -1332.98050   -66.10589     -1399.086
#TCGA.D3.A51H.06A     72.56161  3397.46556      3470.027
#TCGA.XV.A9VZ.01A   -540.02737  -690.88707     -1230.914

注意:如果是芯片数据, plotform = 'affymetrix';如果是二代测序数据, platform = 'illumina'

3,保存数据

保存所有数据,以备后面使用


save(expr,fpkm,cibersort_res,xCell,estimate,file = "RNAseq.SKCM.RData")


相关文章
|
监控 测试技术 iOS开发
大侦探福老师——幽灵Crash谜踪案
作者:闲鱼技术-福居 闲鱼Flutter技术的基础设施已基本趋于稳定,就在我们准备松口气的时候,一个Crash却异军突起冲击着我们的稳定性防线!闲鱼技术火速成立侦探小组执行嫌犯侦查行动,经理重重磨难终于在一个隐蔽的角落将其绳之以法! 幽灵Crash 问题要从闲鱼Flutter基础设施上一次大规模升级说起。
2283 0
|
安全 区块链
|
云安全 机器学习/深度学习 人工智能
专访killer:计算机病毒大多没有技术含量
本文讲的是专访killer:计算机病毒大多没有技术含量,“十步杀一人,千里不留行;事了拂衣去,深藏功与名。”诗人李白笔下的侠客,武术超强,淡泊名利。想必,面对这些侠客的人,会不由自主的两股战战,心生寒气,但这些侠客,却也不是只顾私利,冷血残忍的杀手。
2139 0
|
安全 Windows 域名解析
“双枪”狙击:首例连环感染MBR和VBR的顽固木马分析
本文讲的是“双枪”狙击:首例连环感染MBR和VBR的顽固木马分析,顽固性木马病毒有感染MBR(磁盘主引导记录)的,有感染VBR(卷引导记录)的,还有用驱动对抗安全软件的,最近则出现了一种连环感染MBR和VBR的新型木马,我们将其命名为“双枪”木马。
2031 0