了解下载的TCGA数据的临床情况

TCGA数据库不仅仅存储了测序数据,更为珍贵的是TCGA数据库也存储了相关的临床信息,有了这些临床信息,后续可以进行多种分析,可以进行某个基因和临床预后的相关性分析,根据临床数据进行建模预测。总之,这一部分数据的深入挖掘一定是重头戏,通过这一部分数据和临床结合,能更好的贴近临床,贴近实际。

好了,依然是实践促进认知,直接以实例进行解读。

1. 使用TCGA官网数据进行整理

之前的数据下载中TCGA数据官网网页下载及gdc-client下载,从TCGA官网下载了这些文件


其中clinical文件下有有这两种文件

一种是TSV文件格式,另一种是json文件格式,所以后续可以有两种方法进行文件的整理。
tsv文件即Tab-separated values,指的是制表符分隔文件,与之类似的csv文件Comma-separated values,指的是逗号分隔符文件,后者更常见一些,所以使用R读取时,csv文件有自带的读取函数,tsv自行加载package再读取就会更方便一些。

1.1 读取json文件获得临床数据

1.1.1 从TCGA官网下载的json文件可以直接使用R读取,利用jsonlite 这个package中的fromJSON函数还是很便捷。

cli_kirc <- jsonlite::fromJSON("clinical.cart.2020-05-22.json")

1.1.2 读入之后,了解一下文件的特征

  • 了解整个数据有什么
> class(cli_kirc)
[1] "data.frame"
> dim(cli_kirc)
[1] 530   4
> colnames(cli_kirc)
[1] "exposures"   "demographic" "diagnoses"   "case_id"    

看似只有4列,其实这其中包含了很多的数据,从这当中也能深刻理解R数据存放的特点,数据框中可以放list,list里面可以接着存放data.frame。确实是很有趣的方面。
继续看看这四列还有什么信息。

  • exposures中存放了什么
> class(cli_kirc$exposures)
[1] "list"
> length(cli_kirc$exposures)
[1] 530
> class(cli_kirc$exposures[[1]])
[1] "data.frame"
> dim(cli_kirc$exposures[[1]])
[1]  1 12
> colnames(cli_kirc$exposures[[1]])
 [1] "created_datetime"   "cigarettes_per_day" "exposure_id"        "state"              "updated_datetime"  
 [6] "weight"             "alcohol_history"    "years_smoked"       "alcohol_intensity"  "height"            
[11] "bmi"                "submitter_id"  

在暴露因素中可以看到存储了12中信息,其中 "submitter_id" 是连结其他数据的节点。

  • demographic 中存放的数据
> class(cli_kirc$demographic)
[1] "data.frame"
> dim(cli_kirc$demographic)
[1] 530  14
> colnames(cli_kirc$demographic)
 [1] "ethnicity"        "year_of_death"    "year_of_birth"    "age_at_index"     "gender"          
 [6] "state"            "updated_datetime" "demographic_id"   "days_to_birth"    "race"            
[11] "vital_status"     "submitter_id"     "created_datetime" "days_to_death"   

人口统计数据中,存放了14种信息,同样,"submitter_id" 是连结其他数据的节点。

  • diagnoses 中存放的数据
> class(cli_kirc$diagnoses)
[1] "list"
> length(cli_kirc$diagnoses)
[1] 530
> class(cli_kirc$diagnoses[[1]])
[1] "data.frame"
> dim(cli_kirc$diagnoses[[1]])
[1]  1 29
> colnames(cli_kirc$diagnoses[[1]])
 [1] "primary_diagnosis"                 "last_known_disease_status"         "ajcc_pathologic_stage"            
 [4] "tissue_or_organ_of_origin"         "state"                             "classification_of_tumor"          
 [7] "updated_datetime"                  "prior_malignancy"                  "days_to_last_known_disease_status"
[10] "progression_or_recurrence"         "year_of_diagnosis"                 "prior_treatment"                  
[13] "morphology"                        "created_datetime"                  "ajcc_pathologic_m"                
[16] "tumor_stage"                       "synchronous_malignancy"            "ajcc_pathologic_n"                
[19] "tumor_grade"                       "diagnosis_id"                      "age_at_diagnosis"                 
[22] "treatments"                        "days_to_diagnosis"                 "days_to_last_follow_up"           
[25] "icd_10_code"                       "days_to_recurrence"                "site_of_resection_or_biopsy"      
[28] "submitter_id"                      "ajcc_pathologic_t"        

诊断相关信息里面包含了29项信息,包含了我们非常关心的生存相关数据的收集,以及患者病理诊断的分级,TNM分期,病理诊断,治疗这些临床数据。那么有这些数据,下一步要怎么研究,那就要看自己的方向和兴趣了,这就体现了数据挖掘的魅力了,矿藏就在那里,就看用的人怎么用了,有些粗犷开发,有些细致提炼,这就是体现差距的地方了。

  • case id主要还是所下载文件夹的名称

1.1.3 以上数据的整理

上面数据的处理可以分别将三个数据集建立单独的数据,然后根据需要进行合并,提取需要的数据。

demographic <- cli_kirc$demographic
exposure <- cli_kirc$exposures
diagnoses <- cli_kirc$diagnoses
> class(demographic);class(exposure);class(diagnoses)
[1] "data.frame"
[1] "list"
[1] "list"

1.1 利用tsv文件进行数据的整理

利用从TCGA官网下载的tsv文件,就显得很简单了,限速步骤只是对tsv文件的读入R即可。经过对比,readr 这个package比较好用。

library(readr)
cli_k <- read_tsv(file = 'clinical.tsv')

看看这个数据的大小和特征

> class(cli_k)
[1] "spec_tbl_df" "tbl_df"      "tbl"         "data.frame" 
> dim(cli_k)
[1] 1060  149

要比json中读取的多很多,从列名看,因为当中有很多list中的内容没有展开,从观察项目,也就是行名来看,因为有些患者的治疗中有两种或几种治疗,在tsv文件中把这些都放在同等位置,所以相比于json文件中会多出这些。

实际上直接读入的tsv数据依然是比较复杂的类型,因为从数据类型中可以看出,本身就有四种类型,虽然这4种类型只是基于不同的数据读入模式,本质是有所类同的,可以说在具体分析中,具体对待。

接下来就是把相应的数据进行筛选,和测序数据进行合并,得到更多的挖掘信息。

2. 利用R package进行下载

针对于TCGA这样的宝库,肯定少不了有人做成R package,来解决TCGAS数据下载这些问题。虽然对于TCGA数据下载有好几种,但是仍然需要注意的是,这些R 包下载的数据的时效性是不能保证的,下载后最好还是能够看一看是否是最新的数据。TCGA官网对于临床数据的更新要比

2.1 利用RTCGA.clinical package进行下载

例子采用RTCGA.clinical package下载TCGA-BLCA数据的代码

library(RTCGA.clinical)
??RTCGA.clinical ##多多查看说明文档
BLCA_clinical <- BLCA.clinical
write.csv(BLCA_clinical,quote = F,"BLCA_clinical_Data.csv")

其实按照提取临床信息,上面的已经将临床数据下载到了,探索一下里面的数据有什么。

> class(BLCA_clinical)
[1] "data.frame"
> dim(BLCA_clinical)
[1]  412 2129

这个数据集列名确实很多,只需要将我们需要的列名挑选出来做先骨干的分析就可以,下面的是BLCA数据中,要做生存分析的数据。

BLCA_clinicaldata<-BLCA_clinical[c('patient.bcr_patient_barcode',
                                   'patient.vital_status',
                                   'patient.days_to_death',
                                   'patient.days_to_last_followup',
                                   'patient.race',
                                   'patient.age_at_initial_pathologic_diagnosis',
                                   'patient.gender',
                                   'patient.stage_event.pathologic_stage'
)]

str(BLCA_clinicaldata)
BLCA_clinicaldata[1:4,1:4]
rownames(BLCA_clinicaldata) <- NULL
BLCA_clinicaldata <- tibble::column_to_rownames(BLCA_clinicaldata, var = 'patient.bcr_patient_barcode')
##使用barcode,只是方便后续与测序数据衔接

看一看筛选后的数据

> str(BLCA_clinicaldata)
'data.frame':   412 obs. of  8 variables:
 $ patient.bcr_patient_barcode                : chr  "tcga-2f-a9ko" "tcga-2f-a9kp" "tcga-2f-a9kq" "tcga-2f-a9kr" ...
 $ patient.vital_status                       : chr  "alive" "dead" "alive" "alive" ...
 $ patient.days_to_death                      : chr  NA "364" NA NA ...
 $ patient.days_to_last_followup              : chr  "678" NA "2555" "3148" ...
 $ patient.race                               : chr  "white" "white" "white" NA ...
 $ patient.age_at_initial_pathologic_diagnosis: chr  "63" "66" "69" "59" ...
 $ patient.gender                             : chr  "male" "male" "male" "female" ...
 $ patient.stage_event.pathologic_stage       : chr  "stage iv" "stage iv" "stage iii" "stage iii" ...

其实以上的信息包括了barcode,status:即就是生存状态,days_to_death,days_to_last_followup ,age_at_initial_pathologic_diagnosisrace:诊断时间,我觉得也可以理解成发病时间,可以用这个时间做一些分析,gender 性别

2.2 利用TCGAbiolinks package进行下载

TCGAbiolinks是一个分析处理TCGA数据的R包,通过GDC API来查询和下载TCGA的数据,同时提供了差异分析,生存分析,富集分析等常见的分析功能

bioconductor有这个包的整个说明和代码,可以对照进行。还有关于这个包的使用的讲解文章生信修炼手册的使用TCGAbiolinks下载TCGA的数据,生信技能树的TCGA数据下载—TCGAbiolinks包参数详解

有文章对TCGA-biolinks的数据,Xene上面下载的数据和TCGA官网数据进行了比较,同样,结论依然是很多二次数据库更新不一定能跟得上TCGA的官网数据。文章见UCSC Xena和TCGAbiolinks的HNSC临床数据不一致

所以总体而言,还是直接从TCGA官网进行下载数据会更新,当然更权威。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342