更正-复杂的TCGA临床信息,简约的先锋宇助教老师

生信分析第五步:TCGA临床数据的下载与清洗

各位解螺旋的小伙伴大家好,欢迎大家来到每周日的先锋宇专栏,每周进步一点点,日积月累将是无可限量的知识库。前几次推文推出之后,有好多小伙伴都给我说要我讲讲TCGA临床数据的下载与清洗,已解决大家迫切想要分析TCGA临床数据的燃眉之急,当然先锋宇助教听到这样的回馈肯定想尽可能帮助我们解螺旋的小伙伴,不让大家被技术这个东西所困住,那么接下来我们就来讲解一下TCGA临床数据下载与整理。

写在前面

TCGA临床数据如果直接从TCGA官网下载之后再去整理会比较繁琐,因为这里涉及多个文件夹的整合,先锋宇助教提倡科研效率,所以我们今天使用TCGAbiolinks包来进行TCGA临床数据的下载,这样能够大大简化操作,进而提升我们做科研的效率。

代码演示

首先我们要使用TCGAbiolinks包,我们就需要首先安装和解压这个包,由于这个包在bioconductor上,所以我们要使用bioconductor的安装方式。这里还是要郑重提示一下:如果我们使用了TCGAbiolinks包,我们一定要记得引用以下文献
BiocManager::install("TCGAbiolinks")library(TCGAbiolinks)
接下来我们使用包中的GDCquery函数对临床信息进行查询,看是否存在相应癌肿的临床信息,这里我们以STAD胃癌为例,这里需要等待一段时间,毕竟是国外的网站。

stad.clin <- GDCquery(project = "TCGA-STAD",                      data.category = "Clinical",                     file.type = "xml")
得到如下图的文件就说明运行成功了,成功在官网查询到了相应肿瘤的临床信息。

接下来使用包中的GDCdownload函数对上一步查询到的临床信息文件进行下载。
GDCdownload(stad.clin)

下载成功之后,接下来我们使用包中的GDCprepare_clinic函数对病人的临床信息进行整理,这一步就相当于把下载的数据解压缩之后然后合并。

clin.patient <- GDCprepare_clinic(stad.clin,                                  clinical.info = "patient")

我们就得到了TCGA样本的临床信息数据,而且还是整理成数据框形式的,很多时候我们如果直接从官网对TCGA临床信息数据进行下载,会得到几百个文件,这样整理起来是非常麻烦的,所以我们还是尽量使用TCGAbiolinks包来下载,这对于防治鼠标手有奇妙,说不定设计一个临床实验还具有统计学差异呢(先锋宇助教突发奇想的临床实验脑洞)
接下来我们提取临床信息中的年龄,性别和TNM分期进行整理。

special_clinical <- clin.patient %>% dplyr::select(1,6,24,59)

可以看到我们只需要对分期数据进行整理,将它们分为TNM分期即可,年龄和性别是可以直接使用的。

接下来我们使用strsplit函数对TNM分期那一列进行切割,从N和M处切割开,这里使用strsplit函数会返回一个List对象。

接下来我们使用plyr包的ldply函数将列表变为一个3列的矩阵,并且对列名进行重命名,这样方便我们后续进行进一步的操作。

TNM_stage <- plyr::ldply(TNM, matrix,ncol = 3,byrow=T)colnames(TNM_stage) <- c("T stage","N stage","M stage")
接下来我们对T分期进行操作,我们先来看看现在的TNM分期的数据是什么样的。

我们这里不需要a或者b,只保留T1,T2,T3,T4,所以我们用sub这个取代函数把它取代掉。

TNM_stage$`T stage` <- as.factor(sub("a|b", "",TNM_stage$`T stage`))

清洗之后,我们就可以看到T分期已经没有a,b这些后缀,这样就方便我们后面进行做图了。

接下来我们对N分期进行清洗,不一样的是我们这里不仅仅要把a,b,c这些后缀去除掉,同时我们还要在前面加上N,与此同时,我们要把里面的NNA替换为NA。

TNM_stage$`N stage` <- as.factor(sub("NNA","NA",paste0("N", sub("a|b|c", "",TNM_stage$`N stage`))))
清洗之后,我们也可以看到N分期也没有a,b这些后缀,同时在前面加上了N
接下来同样的思路,我们也对M分期进行数据清洗。

TNM_stage$`M stage` <- as.factor(sub("MT1|MT2|MT3|MT4|MNA","NA",paste0("M", sub("a|b", "",TNM_stage$`M stage`))))
清洗之后,我们也可以看到M分期也没有a,b这些后缀,同时在前面加上了M
接下来我们就要我们整理好的TNM分期和与我们原来的年龄和性别的临床信息进行重新整合。

所以首先我们先把原来需要保存的三列信息提取出来。

special_clinical1 <- special_clinical %>% dplyr::select(1,2,3)
接下来使用cbind函数将两个数据框粘贴起来。

special_clinical2 <- cbind(special_clinical, TNM_stage)
可以看到一张完整的临床信息数据框就构建好啦。
可能到这里很多小伙伴还不知道临床信息有什么用途,这里先锋宇助教先卖个关子,先不告诉各位小伙伴,等到下一期的时候我们将基因表达数据和临床信息整合起来,这样才能体现生物信息学在临床上的价值。

写在最后

今天小编有个小小的感悟,感觉生信只是一个工具,生信嘛,到最后可能就是把它当作像graphpad prism一样的工具就好了,所以感觉生信更关键的还是在于你想解决什么问题,要去围绕问题进行分析,也就是逻辑的环环相扣,而不是一味的堆叠阳性数据。


好啦,今天的先锋宇专栏就到这里啦,希望大家继续关注挑圈联靠公众号和先锋宇专栏,下周日我我们不见不散。

往期传送门:

让生信工作者失业的神器——DrBioRight,真舍不得告诉你!

高效数据清洗!这个R包太强大了!你一定要试试!(文末附赠小彩蛋)

一站式分析R包来了,承包了生信各种分析!太全能了!

搞定这一步,说明你学R有天赋!TCGA数据从下载到差异分析(附代码)

别走,baby,COX森林需要你

生存曲线居然能够批量绘制了

ROC居然能够批量筛选

欢迎大家关注解螺旋生信频道-挑圈联靠公号~


END
撰文丨先锋宇
排版丨四金兄
值班 | 火   火
主编丨小雪球



生物医学科研方法

eLife:这种神奇的激素,被证实能够让人不再觉得饿,从而减少饮食,减轻体重

2020-12-30 6:15:10

生物医学科研方法

我国著名高血压病学家、瑞金医院终身教授赵光胜逝世

2020-12-30 6:34:39