OS、DSS、DFI、PFI:TCGA的这些生存期在哪里找?
我,结束半个月的旅游,从成都回来了,累惨了真是。游记还没写,先来点专业知识给大家吃一吃。
一点背景知识
其实生存分析不只有总生存期,TCGA可以很方便的分析的有:
- OS (Overall Survival) 总生存期:
- 0 = 患者存活
- 1 = 患者死亡(任何原因导致的死亡)
- DSS (Disease-Specific Survival) 疾病特异性生存期:
- 0 = 患者存活或死于其他原因
- 1 = 患者死于特定疾病(如癌症)
- DFI (Disease-Free Interval) 无病间期:
- 0 = 患者无复发
- 1 = 患者出现疾病复发
- PFI (Progression-Free Interval) 无进展间期:
- 0 = 患者疾病未进展
- 1 = 患者疾病进展或死亡
- 这些生存指标反映了不同的临床终点事件
- OS是最终的评估指标,但需要较长的随访时间
- PFI和DFI常用于临床试验中作为早期疗效评估指标
- DSS专注于疾病相关死亡,排除其他原因导致的死亡
在官网下载并整理的临床信息中,可以方便的获取OS,但没有其他的生存期,但我们遇到了善良的xena,下面的数据出自xena整理的泛癌资料:
下载链接:
这里面虽然也有一些临床信息,性别分期啥的,但我们还是更习惯用原来的(每一个单独的癌种给出的clinical),不然还得改整理数据的代码。
可以看到该表格的第26~33列就是各种生存期咯。
代码语言:javascript代码运行次数:0运行复制rm(list = ls())
clinical = read.delim("Survival_SupplementalTable_S1_20171025_xena_sp")
colnames(clinical)[26:33]
代码语言:javascript代码运行次数:0运行复制## [1] "OS" "OS.time" "DSS" "DSS.time" "DFI" "DFI.time" "PFI"
## [8] "PFI.time"
代码语言:javascript代码运行次数:0运行复制clinical = clinical[,c(1,26:33)]
然后和单独某个癌种的表达矩阵、临床信息放到一起,就可以用于做生存分析咯。
TCGA-KIRC_sur_model.Rdata是整理好的 cpm矩阵exprSet和对应的临床信息表格meta。
代码语言:javascript代码运行次数:0运行复制load("TCGA-KIRC_sur_model.Rdata")
#这里的id只有15位,我们的数据有16位,需要统一起来才能连接到一起。
meta$short_id = stringr::str_sub(meta$ID,1,15)
library(dplyr)
meta = left_join(meta,clinical,by = c("short_id"="sample"))
library(survival)
library(survminer)
sfit=survfit(Surv(PFI.time, PFI)~stage, data=meta)
ggsurvplot(sfit,pval =TRUE, data = meta,palette = "jco")
基因的KMplot也可以画。
代码语言:javascript代码运行次数:0运行复制g = rownames(exprSet)[1];g
代码语言:javascript代码运行次数:0运行复制## [1] "WASH7P"
代码语言:javascript代码运行次数:0运行复制meta$gene = ifelse(exprSet[g,]> median(exprSet[g,]),'high','low')
table(meta$gene)
代码语言:javascript代码运行次数:0运行复制##
## high low
## 257 258
代码语言:javascript代码运行次数:0运行复制sfit=survfit(Surv(PFI.time, PFI)~gene, data=meta)
ggsurvplot(sfit,pval =TRUE, data = meta)