前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >突变位点生存分析

突变位点生存分析

作者头像
生信技能树
发布2020-06-19 17:09:43
1.7K0
发布2020-06-19 17:09:43
举报
文章被收录于专栏:生信技能树生信技能树

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

1

主要流程

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

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

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

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

4.使用logrank进行生存分析

2

代码及结果图

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

代码语言:javascript
复制
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基因,进行可视化

代码语言:javascript
复制
#oncoplot可视化
pdf("top10.pdf")
oncoplot(maf=laml,top=10)
dev.off()

image-20200511111850203

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

代码语言:javascript
复制
#提取含有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.针对基因突变与否,进行生存分析

代码语言:javascript
复制
#整理生存分析的输入数据----
#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()
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信技能树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档