干貨批量處理泛癌相關(guān)生存KM分析繪圖

生存分析中的Kaplan-Meier曲線(也稱為KM曲線)是一種常用的統(tǒng)計(jì)方法,用于估計(jì)不同組別之間的生存函數(shù)差異。KM曲線顯示了在給定時(shí)間范圍內(nèi)生存下來(lái)的患者比例隨時(shí)間的變化情況。
KM曲線通常用于以下情況: 比較不同治療組或治療方案的生存差異:例如,對(duì)于某種癌癥,可以將患者分為接受不同治療方案的組,并比較各組的生存情況。 評(píng)估預(yù)后因素對(duì)生存的影響:例如,研究特定基因變異與患者生存之間的關(guān)系,或者評(píng)估其他臨床特征(如年齡、性別、腫瘤分期等)對(duì)生存的影響。
繪制KM曲線的步驟如下: 收集生存數(shù)據(jù):包括每個(gè)個(gè)體的生存時(shí)間和事件狀態(tài)(如生存或死亡)。根據(jù)研究目的和變量特征,將個(gè)體分為不同的組別(例如治療組和對(duì)照組)。使用Kaplan-Meier方法計(jì)算每個(gè)組別中在給定時(shí)間點(diǎn)生存下來(lái)的患者比例。繪制KM曲線:將不同組別在給定時(shí)間點(diǎn)的生存比例繪制在同一張圖上。進(jìn)行統(tǒng)計(jì)檢驗(yàn):使用log-rank檢驗(yàn)或其他合適的方法比較不同組別之間的生存差異。
library(limma)
library(survival)
library(survminer)
library(data.table)
library(tidyverse)
library(ggsignif)
library(RColorBrewer)
?
#首先,加載了一系列所需的R包
files=dir("./DFI/")
通過(guò)dir("./DFI/")獲取"./DFI/"目錄下的文件列表,這些文件包含了每種癌癥類(lèi)型的生存數(shù)據(jù)。
pFilter=1 ??????????#pvalue ??ALL DATA,NO filter
#if(pValue<pFilter){
?# ??if(pValue<0.001){
??# ?????pValue="p<0.001"
???# }else{
????# ???pValue=paste0("p=",sprintf("%.03f",pValue))
????#}
#for tumour types
#通過(guò)一個(gè)循環(huán)遍歷每個(gè)文件進(jìn)行處理。在循環(huán)中,首先讀取文件內(nèi)容并轉(zhuǎn)換為
#數(shù)據(jù)框。然后對(duì)數(shù)據(jù)框進(jìn)行處理,調(diào)整列名和數(shù)據(jù)格式。將存活時(shí)間(futime)#從天轉(zhuǎn)換為年,將tpm轉(zhuǎn)換為數(shù)值型數(shù)據(jù)。
for ( i in 1:length(files) ){
???dirname=files[i]
????rt=fread(paste0("./DFI/",dirname),header=T,check.names=F)
????
rt=as.data.frame.matrix(rt)

#rownames(rt)=rt[,1]
????rt=rt[,-1]
rt=na.omit(rt)
????colnames(rt)[1:2]=c("fustat","futime")
????b=rt[,2]
????rt=cbind(b,rt)
????rt=rt[,-3]
colnames(rt)[1]="futime"

?t$futime=rt$futime/365 ??????????#Survival time in years
rt$tpm=as.numeric(rt$tpm)
#rt$tissue=as.factor(rt$tissue)

#######files names
tmp<- strsplit(dirname,split=".",fixed=TRUE)
dirnam<-unlist(lapply(tmp,head,1))
?
tissue=c("ACC", "BLCA", "BRCA", "CESC", "CHOL", "COAD", "DLBC", "ESCA", "GBM", "HNSC", "KICH", "KIRC", "KIRP", "LGG", "LIHC", "LUAD", "LUSC", "MESO", "OV", "PAAD", "PCPG", "PRAD", "READ", "SARC", "SKCM", "STAD", "TGCT", "THCA", "THYM", "UCEC", "UCS", "UVM")
for ( j in 1:length(tissue) ){
#for(i in levels(rt[,"tissue"] )){
????id=rt[1,6]
cancer=tissue[j]
????rt1=rt[(rt$tissue %in% cancer),] ????# by tumour type
group=ifelse(rt1[,"tpm"]>median(rt1[,"tpm"]),"high","low")
#根據(jù)癌癥類(lèi)型進(jìn)行子集選擇,得到特定癌癥類(lèi)型的數(shù)據(jù)框(rt1)。然后根據(jù)tpm的中位數(shù)將樣本分為高表達(dá)組和低表達(dá)組,創(chuàng)建一個(gè)新的列g(shù)roup。通過(guò)判斷是否同時(shí)包含TRUE和FALSE來(lái)排除表達(dá)水平相同的樣本組。

a=rt1[,"tpm"]>median(rt1[,"tpm"])
#如果滿足條件,接下來(lái)進(jìn)行生存分析。首先使用survdiff函數(shù)進(jìn)行組間生存差異的統(tǒng)計(jì)檢驗(yàn),并計(jì)算p值。然后使用survfit函數(shù)擬合生存曲線。
if(length(table(group))==1) {next}
if(TRUE & FALSE %in% a){
??
diff=survdiff(Surv(futime,fustat)~ group,data = rt1) ?#Survival of rt1 data by groups
pValue=1-pchisq(diff$chisq,df=1) ???????#test
??
fit <- survfit(Surv(futime,fustat) ~ group, data = rt1)
#KM survival curves
#接下來(lái),使用ggsurvplot函數(shù)生成生存曲線圖。這里設(shè)置了圖形的標(biāo)題、p值顯示、圖例、坐標(biāo)軸標(biāo)簽等參數(shù),并使用不同的顏色表示高表達(dá)組和低表達(dá)組。
#最后,將生成的生存曲線圖保存為PDF文件,命名方式為"文件名_癌癥類(lèi)型_p值_sur_DFI.pdf"。
?
surPlot=ggsurvplot(fit,
???????????????????????data=rt1,
???????????????????????title=paste0("Cancer: ",cancer=tissue[j]),
???????????????????????pval=pValue,
???????????????????????pval.size=6,
???????????????????????legend.labs=c("high","low"),
???????????????????????legend.title=paste0(id," levels"),
???????????????????????font.legend=12,
???????????????????????xlab="Time(years)",
???????????????????????ylab="Overall survival",
???????????????????????break.time.by = 1,
???????????????????????palette=c("red","blue"),
???????????????????????conf.int=F,
???????????????????????fontsize=4,
???????????????????????risk.table=TRUE,
???????????????????????risk.table.title="",
???????????????????????risk.table.height=.25)
pdf(paste0("./picture_DFI/",dirnam,"_",cancer=tissue[j],"_",pValue, "_sur_DFI.pdf"),width = 10, height = 7.5)
#ggsave(paste0("./picture_expTime_TG_GTEX/",dirnam,"_",cancer=tissue[j],"_",pValue, "_sur_os.svg"), width = 14, height = 15)
print(surPlot)
dev.off()
}
}
?
}
#####
KM曲線圖通常包括以下信息: 時(shí)間軸:表示觀察時(shí)間的橫軸,通常以年、月、周等為單位。 生存率軸:表示生存患者的比例,縱軸范圍從0到1。曲線:每個(gè)組別的生存曲線,以實(shí)線或虛線表示。 標(biāo)題和圖例:用于標(biāo)識(shí)曲線對(duì)應(yīng)的組別和其他重要信息。
通過(guò)繪制KM曲線,可以直觀地比較不同組別之間的生存差異,幫助研究人員和臨床醫(yī)生了解某種因素對(duì)生存的影響,以指導(dǎo)治療決策和預(yù)后評(píng)估。有問(wèn)題可以聯(lián)系小云。
來(lái)給大家展示展示結(jié)果圖吧,使用firefox命令。


