R语言GSVA包实现ssGSEA分析,带你探索肿瘤细胞免疫浸润的多样性!






R语言GSVA包实现ssGSEA分析,带你探索肿瘤细胞免疫浸润的多样性!

小果  生信果  2023-05-20 19:01:11

生信人R语言学习必备

立刻拥有一个Rstudio账号

开启升级模式吧

(56线程,256G内存,个人存储1T)

  • hi!今天,小果要再给大家介绍一个好用的免疫浸润工具包。
  • 在这个教程中,我将介绍如何使用 GSVA 包实现对基因数据集的免疫浸润分析,并根据结果绘制 Boxplot 图,以比较不同样本分类之间的细胞浸润水平差异。感兴趣的话就和小果一起来看吧!



GSVA包的安装与导入
if (!requireNamespace("BiocManager", quietly = TRUE))    install.packages("BiocManager")BiocManager::install("GSVA")library(GSVA)

准备数据

首先,我们需要准备两个数据文件:

一个包含基因表达信息的数据文件 :tumor_all_gene_exp.txt。该文件的每一列表示一个基因,在不同样本中的表达情况以数字表示。

一个包含基因集信息的符合 MMC3 数据库格式的文件:mmc3.csv。该文件包含多个基因集(pathway),每个基因集有一个唯一的编号和名称,每一条记录代表该基因集中的一个基因。

小果温馨提示,对于这两个文件,其行名和列名需与代码相应位置要求一致,否则后续操作可能会出错哦!

#读入基因表达数据和基因集信息:

uni_matrix=read.delim("tumor_all_gene_exp.txt",header=T,stringsAsFactors = FALSE,row.names=1,check.names = FALSE)gene_set<-read.csv("mmc3.csv",header=T,stringsAsFactors = FALSE)

数据预处理

将 gene_set 中的基因按照基因名称分组,以便后续直接输入 GSVA 函数中使用。

list<- split(as.matrix(gene_set)[,1], gene_set[,2])


接下来,我们使用 gsva 函数计算基因集变化分析指标(GSVA),gsva()函数是一种基于非参数方法的通路富集分析(Pathway Enrichment Analysis)工具,而通路富集分析也是免疫浸润分析中常见的一个应用哦!它用于计算基因表达谱中每个样本与指定基因集的关联程度,将其转化为一个连续值得分。

最后,我们并结果存储到 cellInfiltration_matrix_score.csv 文件中。

gsva_matrix<- gsva(as.matrix(uni_matrix), list,method='ssgsea',kcdf='Gaussian',abs.ranking=TRUE)write.csv(gsva_matrix,"cellInfiltration_matrix_score.csv")

运行上述代码后,会在工作目录中生成一个名为 cellInfiltration_matrix_score.csv 的文件,其中包含了每个样本在不同基因集中的 GSVA 得分哦。

至此,我们已经完成了GSVA对基因表达数据的计算分析,我们先来看一下计算之后的部分结果是什么样吧!



绘制箱线图实现结果可视化

计算完成后,我们如何将结果可视化展示出来呢?和小果一起来看一下吧!

接下来,我们将使用 ggplot2、ggpubr 和 ggsignif 包进行绘图。

首先读入数据文件和样本信息文件:

data=read.csv("cellInfiltration_matrix_score.csv",header=T,row.names=1,stringsAsFactors=FALSE,check.names=FALSE)group=read.delim("group.txt",header=T,stringsAsFactors=FALSE)row.names(group)=group$samplegroup=group[colnames(data),]data=as.data.frame(t(data))

将 data 中的 cluster 列替换为样本分组信息并调整列的顺序:

data$cluster=group$Group

data=data[,c(29,1:28)]

将调整后的数据存储到表格文件 中。

write.csv(data,”28cell_boxplot_data.csv”)

读入上述表格文件:

data=read.csv("28cell_boxplot_data.csv",header=T,row.names=1,stringsAsFactors=FALSE,check.names=FALSE)test=as.list(data[,-1])height<-stack(test)Group=rep(data$cluster,ncol(data)-1)data1=as.data.frame(cbind(Group,height))

使用 ggplot2、ggpubr、ggsignif 包生成 Boxplot 图,并设置 Boxplot 的相关参数与格式,最终输出 28cell_3cluster_boxplot.pdf 文件,具体的代码流程我们一起来看一下:

#导入所需R包

library(ggplot2)library(ggpubr)library(ggsignif)colnames(data1)=c("group","Cell_infiltration_level","cell")df=data1pdf("28cell_3cluster_boxplot.pdf",height=6,width=15) #设置文件存储名称与格式#绘制箱线图p=ggplot(data=df,aes(x=cell,y=Cell_infiltration_level,fill=group))+  geom_boxplot(width=0.3,               position = position_dodge(0.5),outlier.colour =NA)+  theme_bw()+  theme(panel.grid = element_blank())+  scale_fill_manual(values = c("#4DBBD5FF","#E64B35FF","#E18727FF"))+  stat_compare_means(aes(group=group),                     label="p.signif",                     hide.ns = TRUE,                     label.y = c(0.6))+  theme(axis.text.x = element_text(size=12,colour="black",angle=60,hjust = 0.9),axis.text.y = element_text(size=12, angle=0),        axis.title.x = element_text(size=15),axis.title.y = element_text(size=15))print(p)dev.off()

运行上述代码后,会在工作目录中生成一个名为 28cell_3cluster_boxplot.pdf 的文件,其中包含了绘制好的 Boxplot 图哦!


小果再次提醒:以上代码仅为示例,实际使用时需要根据自己的数据、分析需求和环境对参数进行相应调整哦!

好啦,现在我们一起来看一下最后绘制的结果长什么样吧!

怎么样,今天的R包你学会怎么用了嘛?

微信号 | 18502195490

知乎 | 生信果

点击“阅读原文”立刻拥有

↓↓↓