突变位点生存分析

好奇怪,最近大家完成学徒作业的积极性很差,是习题太难了吗?一个简单突变位点做生存分析居然拖了一两个月才有人提交笔记!前面的题目见:学徒作业-两个基因突变联合看生存效应 (2020-04-26出题),下面看其中一个学徒的答案哦,同时也欢迎大家继续提交笔记给我哈,有机会认识我!加油哈,广大粉丝们

1
主要流程

1.本次选用BRCA的maf数据和临床数据,主要使用其中的varscan数据

2.使用R包maftools读取maf文件,并可视化top10突变基因

3.选取两基因对BRCA临床样本进行分组

  • 所选取两基因都未发生突变的样本为一组

  • 剩余样本为一组

4.使用logrank进行生存分析

2
代码及结果图

1.读取maf文件并对数据进行可视化

options(download.file.method='libcurl')
options(url.method='libcurl')
BiocManager::install("maftools")
rm(list = ls())
library(stringr)
options(stringsAsFactors = F)
maf<-"C:\\Users\\12162\\Desktop\\微信公众号\\学徒作业\\test_1\\maf\\gdc_download_20200427_034400.797422.tar\\gdc_download_20200427_034400\\6c93f518-1956-4435-9806-37185266d248\\TCGA.BRCA.varscan.6c93f518-1956-4435-9806-37185266d248.DR-10.0.somatic.maf.gz"
laml<-read.maf(maf=maf)
data<-laml@data
#样本水平
getSampleSummary(laml)
#基因水平
getGeneSummary(laml)
#将summary结果输出
write.mafSummary(maf=laml,basename='laml')
#对summary结果进行可视化
pdf("sum.pdf")
plotmafSummary(maf=laml)
dev.off()

2.挑选top10基因,进行可视化

#oncoplot可视化
pdf("top10.pdf")
oncoplot(maf=laml,top=10)
dev.off()

image-20200511111850203

3.整理临床数据,挑选目的基因

#提取含有TP53和KMT2C的样本
tumor<-rbind(data[data$Hugo_Symbol=="TP53",],data[data$Hugo_Symbol=="KMT2C",])
#load("gdc.Rdata")
#整理临床信息----
library(XML)
result <- xmlParse("./clinical/00049989-fa21-48fb-8dda-710c0dd5932e/nationwidechildrens.org_clinical.TCGA-A2-A0CT.xml")
rootnode <- xmlRoot(result)
rootsize <- xmlSize(rootnode)
print(rootnode[2])
xmldataframe <- xmlToDataFrame(rootnode[2])
head(t(xmlToDataFrame(rootnode[2])))

xmls = dir("clinical/",pattern = "*.xml$",recursive = T)
td = function(x){
  result <- xmlParse(file.path("clinical/",x))
  rootnode <- xmlRoot(result)
  xmldataframe <- xmlToDataFrame(rootnode[2])
  return(t(xmldataframe))
}
cl = lapply(xmls,td)
cl_df <- t(do.call(cbind,cl))
tmp = data.frame(colnames(cl_df))
clinical = cl_df[,c(
  'bcr_patient_barcode',
  'vital_status',
  'days_to_death',
  'days_to_last_followup',
  'race_list',
  'days_to_birth',
  'gender' ,
  'stage_event'
)]
clinical = data.frame(clinical)
rownames(clinical) <- NULL
rownames(clinical) <- stringr::str_to_upper(clinical$bcr_patient_barcode)
dim(clinical)
meta = clinical
#简化列名
colnames(meta)=c('ID','event','death','last_followup','race','age','gender','stage')
#根据选取基因进行分组----
tmp<-tumor$Tumor_Sample_Barcode
tmp<-substr(tmp,1,12)
tmp<-match(tmp,as.character(meta$ID))
group_list<-c(1:nrow(meta))
group_list[sort(as.numeric(na.omit(tmp)))]<-"TP53/KMT2C+"
group_list<-ifelse(group_list=="TP53/KMT2C+","TP53/KMT2C+","TP53/KMT2C-")
table(group_list)

4.针对基因突变与否,进行生存分析

#整理生存分析的输入数据----
#1.由随访时间和死亡时间计算生存时间(月)
is.empty.chr = function(x){
  ifelse(stringr::str_length(x)==0,T,F)
}
is.empty.chr(meta[2,3])
meta[,3][is.empty.chr(meta[,3])]=0
meta[,4][is.empty.chr(meta[,4])]=0
meta$time=(as.numeric(meta[,3])+as.numeric(meta[,4]))/30
#2.根据生死定义event,活着是0,死的是1
meta$event=ifelse(meta$event=='Alive',0,1)
#生存分析----
library(survival)
library(survminer)
sfit <- survfit(Surv(time, event)~group_list, data=meta)
ggsurvplot(sfit, conf.int=F, pval=TRUE,surv.median.line = "hv")
pdf("result.pdf")
ggsurvplot(sfit,palette = c("#E7B800", "#2E9FDF"),
           risk.table =TRUE,pval =TRUE,
           conf.int =TRUE,xlab ="Time in months", 
           ggtheme =theme_light())
dev.off()

(0)

相关推荐