利用tcga数据做生存分析

####teach code####
library(survival)
#read expression data and modify its class and colnames/rownames

#PAAD_gene_expression.csv数据已经经过Z_转换的数据。

z_rna <- read.csv(file="PAAD_gene_expression.csv",header = T,row.names = 1)

#clincal是所有样本的临床信息
clinical <- t(read.table("PAAD.merged_only_clinical_clin_format.txt",header=T, row.names=1, sep="\t",stringsAsFactors = F))

clinical <- as.data.frame(clinical)
#transform rna data's colnames and rownames
z_rna <- as.matrix(z_rna)
colnames(z_rna) <- gsub("\\.","-",colnames(z_rna))
rownames(z_rna) <- sapply(rownames(z_rna), function(x) unlist(strsplit(x,"\\|"))[[1]])


#check the type of cancer data
#table(substr(colnames(z_rna),14,15))
#grep patient ID in clinical data
clinical$IDs <- toupper(clinical$patient.bcr_patient_barcode)
sum(clinical$IDs %in% colnames(z_rna))# we have 178 patients that we could use
#grep information for survival

ind_keep <- grep("days_to_death",colnames(clinical))
death <- as.matrix(clinical[,ind_keep])
death_collapsed <- apply(death,1,FUN = function(x)max(x,na.rm = T)) #提取最大值
death_collapsed<- as.numeric(death_collapsed)

#last follow_up information
ind_keep <- grep("days_to_last_followup",colnames(clinical))
fl <- as.matrix(clinical[,ind_keep])
fl_collapsed <- apply(fl,1,FUN = function(x)max(x,na.rm = T))
fl_collapsed <- as.numeric(fl_collapsed)


#construct a new dataframe containing all information
all_clin <- data.frame(death_collapsed,fl_collapsed)
colnames(all_clin) <- c("death_days", "followUp_days")
all_clin$death_event <- ifelse(clinical$patient.vital_status == "alive", 0,1)
all_clin$new_death <- apply(all_clin,1,function(x)ifelse(x[3]==0,x[2],x[1]))
table(clinical$patient.vital_status)
rownames(all_clin) <- clinical$IDs
##connect to RNA-seq
# create event vector for RNASeq data
event_rna <- t(apply(z_rna, 1, function(x) ifelse(abs(x) > 1.96,1,0)))
in_clin_tum <- match(colnames(z_rna),rownames(all_clin))
tumor_clinical <- all_clin[in_clin_tum,]
#example gene
ind_gene <- which(rownames(z_rna) == "TP53")
table(event_rna[ind_gene,])


###survival analysis###


#over_all survival
su_OS <- Surv(as.numeric(tumor_clinical$new_death),as.numeric(tumor_clinical$death_event))
fit_OS <- survfit(su_OS~event_rna[ind_gene,])
p <- survdiff(su_OS~event_rna[ind_gene,])
pv <- ifelse(is.na(p),next,(round(1 - pchisq(p$chisq, length(p$n) - 1),3)))[[1]]
x1 <- ifelse(is.na(as.numeric(summary(fit_OS)$table[,'median'][1])),"NA",as.numeric(summary(fit_OS)$table[,'median'][1]))
x2 <- as.numeric(summary(fit_OS)$table[,'median'][2])

#get necessary information
summary(fit_OS)
summary(fit_OS)$table[,'median']
summary(fit_OS,times = 365)
#plot survival curve

plot(fit_OS,conf.int=FALSE,col=c("black","red"),xlab="Days",ylab = "Proportion Survival")
legend(1800,0.995,legend=paste("p.value = ",pv[[1]],sep=""),bty="n",cex=1.4)
legend(max(as.numeric(as.character(all_clin$death_days)[in_clin_tum]),na.rm = T)*0.7,0.94,
legend=c(paste("NotAltered=",x1),paste("Altered=",x2)),bty="n",cex=1.3,lwd=3,col=c("black","red"))

转载于:https://www.cnblogs.com/qiniqnyang/p/6277085.html

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值