純代碼實(shí)操,小云帶你計(jì)算基因與免疫細(xì)胞在TMB中的相關(guān)性
我們大家知道基因與多種免疫細(xì)胞類型之間有著相關(guān)性,那么了解指定基因與免疫細(xì)胞類型之間的相互作用,以及是否存在相關(guān)性,以及基因在調(diào)節(jié)免疫反應(yīng)中的潛在功能是很重要的。那么下面我們先了解一下r包的概念。 ?
CIBERSORT
是一種常用于解析腫瘤組織中不同免疫細(xì)胞類型分布的算法。通過將CIBERSORT結(jié)果與特定基因的表達(dá)數(shù)據(jù)進(jìn)行相關(guān)性分析,可以揭示這些免疫細(xì)胞類型在基因調(diào)控過程中的潛在重要性。
本期主要給大家介紹單基因與多種免疫細(xì)胞的相關(guān)性分析的實(shí)操保姆級代碼。
代碼中對示例基因的
CXCR4
的表達(dá)量進(jìn)行免疫相關(guān)分析。下面是下載整理的樣本表達(dá)量信息和樣本免疫細(xì)胞信息。
#if (!requireNamespace("BiocManager", quietly = TRUE)) # install.packages("BiocManager") #BiocManager::install("limma") #檢查是否安裝了“BiocManager”包。如果沒有安裝,它會進(jìn)行安裝。BiocManager用于在R中管理Bioconductor包。 #install.packages("ggplot2") #install.packages("ggpubr") #install.packages("ggExtra") ? library(limma) library(ggplot2) library(ggpubr) library(ggExtra) #安裝和加載所需的R包,例如“l(fā)imma”、“ggplot2”、“ggpubr”和“ggExtra”。這些包用于各種數(shù)據(jù)分析和可視化任務(wù)。
immuneFile="CIBERSORT-Results.txt"
????????#免疫結(jié)果文件
expFile="symbol.txt"?
?????????????????????#表達(dá)輸入文件 gene="CXCR4"??????????????????????????????#基因名稱 pFilter=0.05??????????????????????????????#CIBERSORT結(jié)果過濾條件 #如“immuneFile”(包含CIBERSORT結(jié)果的文件)、 #“expFile”(表達(dá)式輸入文件)、“gene”(感興趣的特定基因)和“pFilter”(CIBERSORT結(jié)果過濾閾值)。 ? #讀取免疫結(jié)果文件,并對數(shù)據(jù)進(jìn)行整理
immune=read.table(immuneFile,sep="\t",header=T,row.names=1,check.names=F)
immune=immune[immune[,"P-value"] #讀取表達(dá)文件,并對輸入文件整理
rt=read.table(expFile,sep="\t",header=T,check.names=F)
rt=as.matrix(rt)
rownames(rt)=rt[,1]
exp=rt[,2:ncol(rt)]
dimnames=list(rownames(exp),colnames(exp))
data=matrix(as.numeric(as.matrix(exp)),nrow=nrow(exp),dimnames=dimnames)
data=avereps(data)
#從“expFile”中讀取基因表達(dá)數(shù)據(jù),提取指定“gene”的相關(guān)數(shù)據(jù),
#并處理數(shù)據(jù)以去除正常樣本并選擇與免疫數(shù)據(jù)交集的樣本。
#然后,選擇除第一列外的所有列作為表達(dá)數(shù)據(jù),并重新定義維度名稱。最后,數(shù)據(jù)進(jìn)行了平均處理。
?
group=sapply(strsplit(colnames(data),"\\-"),"[",4)
group=sapply(strsplit(group,""),"[",1)
group=gsub("2","1",group)
data=data[,group==0]
#去除正常樣品,根據(jù)樣本名中的信息判斷是否為正常樣本,并去除了正常樣本,保留僅包含腫瘤樣本的數(shù)據(jù)。
?
#樣品取交集將基因的表達(dá)值添加到免疫數(shù)據(jù)中,然后取免疫數(shù)據(jù)和基因表達(dá)數(shù)據(jù)的交集,
#以確保兩者具有相同的樣本。這樣可以保證免疫數(shù)據(jù)和基因表達(dá)數(shù)據(jù)之間有相同的樣本,便于后續(xù)相關(guān)性分析。
data=rbind(data,gene=data[gene,])
exp=t(data[c("gene",gene),])
sameSample=intersect(row.names(immune),row.names(exp))
immune1=immune[sameSample,]
exp1=exp[sameSample,]
?
?
outTab=data.frame()
x=as.numeric(exp1[,1])
#按免疫細(xì)胞循環(huán)
for(j in colnames(immune1)[1:22]){
y=as.numeric(immune1[,j])
if(sd(y)>0.001){
df1=as.data.frame(cbind(x,y))
corT=cor.test(x,y,method="spearman")
cor=corT$estimate
pValue=corT$p.value
p1=ggplot(df1, aes(x, y)) +
ylab(j)+xlab(gene)+
geom_point()+ geom_smooth(method="lm",formula=y~x) + theme_bw()+
stat_cor(method = 'spearman', aes(x =x, y =y))
if(pValue write.table(outTab,file="immuneCor.result.txt",sep="\t",row.names=F,quote=F)
總之,在免疫與基因表達(dá)之間尋找關(guān)聯(lián)性、了解腫瘤免疫微環(huán)境并發(fā)現(xiàn)新的生物學(xué)信息具有重要意義。下期將為你帶來更多R語言的騷操作技巧