一、代码目的
对免疫细胞的差异分析,我们使用两种方法。
一种是差异的方法,就是根据我们目标基因的表达量,将病人分成高低表达两组,然后比较哪些免疫细胞,它在高低表达组里面是具有差异的,这就是差异的方法。
另外一种就是相关性检验的方法,就是看我们免疫细胞的含量跟我们基因的表达是否具有相关性,我们做一个相关性的检验,如果相关性检验的P值小于0.05。就说明我们这个免疫细胞跟我们的目标基因,它是具有相关性的。
①第一种方法的话就是根据我们目标基因的表达量将我们的病人分成高低表达两组。然后低表达组用绿色表示,高表达组用红色表示,然后我们比较一下,哪些免疫细胞在这个高低表达组里面是具有差异的,我们就可以得到小提琴图。在这个图形里面,它的横坐标就是免疫细胞的名称,纵坐标就是免疫细胞的含量,然后每个免疫细胞都会出现两个小提琴图,绿色是基因的低表达组,红色是基因的高表达组,然后我们就可以看一下我们的免疫细胞在高低表达组里面它是否具有差异。如果P值小于0.05,就说明这个免疫细胞在高低表达组里面是具有差异的。也就是说,这个免疫细胞的含量跟这个基因的表达是具有相关性的。
免疫浸润:
据报道,免疫细胞具有双重作用,一方面,免疫细胞在采取抗肿瘤表型时,可以起到免疫监视作用,阻止肿瘤进展;另一方面,免疫细胞在TME的影响下,可以采取促肿瘤表型,允许肿瘤逃逸,甚至支持TME,从而促进肿瘤进展。
肿瘤浸润淋巴细胞(英语:Tumor-infiltrating lymphocytes,缩写TILs)是指已离开血液向肿瘤组织迁移的淋巴细胞,是肿瘤浸润免疫细胞(英语:tumor-infiltrating immune cells)这个更大的概念的一部分,后者还包括单核细胞和分叶核的免疫细胞。肿瘤中浸润的免疫细胞与临床结果密切相关,可作为治疗癌症的药物靶标。
二、具体代码
remove(list = ls()) ##清空当前环境
setwd("D:/生信代码复现/10.免疫差异/10.免疫差异") ##💚💚💚💚💚设置路径
#引用包
library(limma)
library(reshape2)
library(ggpubr)
library(vioplot)
library(ggExtra)
expFile="geneExp.txt" #💚💚💚表达数据文件,这个就是你要的目的基因的表达量的提取
immFile="CIBERSORT-Results.txt" #💚💚💚免疫细胞浸润的结果文件,这个就是各种免疫细胞的提取量
pFilter=0.05 #💚💚💚免疫细胞浸润结果的过滤条件,需要设置筛选条件,一般都是以p为0.05为一个筛选分界线
#读取表达数据文件
rt=read.table(expFile, header=T, sep="\t", check.names=F, row.names=1)
gene=colnames(rt)[1]
#删掉正常样品
tumorData=rt[rt$Type=="Tumor",1,drop=F]
tumorData=as.matrix(tumorData)
rownames(tumorData)=gsub("(.*?)\\-(.*?)\\-(.*?)\\-.*", "\\1\\-\\2\\-\\3", rownames(tumorData))
data=avereps(tumorData)
#根据目标基因表达量对样品进行分组
data=as.data.frame(data)
data$gene=ifelse(data[,gene]>median(data[,gene]), "High", "Low")
#读取免疫细胞结果文件,并对数据进行整理
immune=read.table(immFile, header=T, sep="\t", check.names=F, row.names=1)
immune=immune[immune[,"P-value"]<pFilter,]
immune=as.matrix(immune[,1:(ncol(immune)-3)])
#删除正常样品
group=sapply(strsplit(row.names(immune),"\\-"), "[", 4)
group=sapply(strsplit(group,""), "[", 1)
group=gsub("2", "1", group)
immune=immune[group==0,]
row.names(immune)=gsub("(.*?)\\-(.*?)\\-(.*?)\\-.*", "\\1\\-\\2\\-\\3", row.names(immune))
immune=avereps(immune)
#数据合并
sameSample=intersect(row.names(immune), row.names(data))
rt=cbind(immune[sameSample,,drop=F], data[sameSample,,drop=F])
##################绘制箱线图##################
#把数据转换成ggplot2输入文件
data=rt[,-(ncol(rt)-1)]
data=melt(data,id.vars=c("gene"))
colnames(data)=c("gene", "Immune", "Expression")
#绘制箱线图
group=levels(factor(data$gene))
data$gene=factor(data$gene, levels=c("Low","High"))
bioCol=c("#0066FF","#FF0000","#6E568C","#7CC767","#223D6C","#D20A13","#FFD121","#088247","#11AA4D")
bioCol=bioCol[1:length(group)]
boxplot=ggboxplot(data, x="Immune", y="Expression", fill="gene",
xlab="",
ylab="Fraction",
legend.title=gene,
width=0.8,
palette=bioCol)+
rotate_x_text(50)+
stat_compare_means(aes(group=gene),symnum.args=list(cutpoints=c(0, 0.001, 0.01, 0.05, 1), symbols=c("***", "**", "*", "")), label="p.signif")
#输出图片
pdf(file="immune.diff.pdf", width=7, height=6)
print(boxplot)
dev.off()
三、最终效果
R语言绘制出来的图:

文件夹效果:

四、遇到的问题
暂无
五、本文参考
①代码意义理解——网站:生信技能树:免疫细胞可视化与差异分析-生信自学网 (biowolf.cn)
②原始代码来源——公众号:《叉叉滴同学的生信笔记》