查看原文
其他

TCGA的28篇教程- 使用R语言的RTCGAToolbox包获取TCGA数据

生信技能树 生信技能树 2022-06-06

前些天被TCGA的终结新闻刷屏,但是一直比较忙,还没来得及仔细研读,但是笔记本躺着的一些TCGA教程快发霉了,借此契机好好整理一下吧,预计28篇教程!

——jimmy

往期目录如下:

使用R语言的cgdsr包获取TCGA数据

TCGA的28篇教程- 使用R语言的RTCGA包获取TCGA数据

第二篇目录
  • TCGA数据源

  • 背景知识

  • 了解并获取FireBrowse的数据

  • 了解从FireBrowse下载到的S4对象

  • 5大分析方法

  • 优缺点分析

众所周知,TCGA数据库是目前最综合全面的癌症病人相关组学数据库,包括的测序数据有:

  • DNA Sequencing

  • miRNA Sequencing

  • Protein Expression

  • mRNA Sequencing

  • Total RNA Sequencing

  • Array-based Expression

  • DNA Methylation

  • Copy Number

知名的肿瘤研究机构都有着自己的TCGA数据库探索工具,比如:

  • Broad Institute FireBrowse portal, The Broad Institute

  • cBioPortal for Cancer Genomics, Memorial Sloan-Kettering Cancer Center

  • TCGA Batch Effects, MD Anderson Cancer Center

  • Regulome Explorer, Institute for Systems Biology

  • Next-Generation Clustered Heat Maps, MD Anderson Cancer Center

其中FireBrowse被包装到R包RTCGAToolbox里面: http://bioconductor.org/packages/release/bioc/manuals/RTCGAToolbox/man/RTCGAToolbox.pdf

这里就介绍如何使用R语言的 RTCGAToolbox 包来获取任意TCGA数据吧。该包与2014年发表在plos one杂志;RTCGAToolbox: A New Tool for Exporting TCGA Firehose Data - PLOS

其实Firehose官方就提供过非常方便的命令行工具来根据他们的数据存放规则非常方便的获取数据,外网速度一般是10M/S,非常好用。

背景知识

TCGA上的数据量庞大,数据种类丰富,分析方法复杂,并不是所有人都能轻松下载、管理和分析这些数据。对于大部分研究人员来说,从如此海量的原始测序数据开始分析是不可行也是不必要的。实际上,我们可以下载经过预处理后的数据(pre-processed data),不仅数据量会小很多,分析起来也更快、更可靠。Broad institute开发的Firehose就能够提供这样的数据。

虽然Firehose为我们做好前期的处理工作,但在R里面还缺一个“搜索引擎”,所以RTCGAToolbox就应运而生。

RTCGAToolbox是Bioconductor上的一个软件包,它的作用就是查询、下载和组织TCGA Firehose的数据,还提供一些简单的数据分析和可视化工具。除此之外,下载好的数据也可以很方便的导入到Bioconductor的其他分析流程中。对于R用户来说,所有的TCGA数据分析工作(从数据下载一直到可视化图表)都可在一个pipeline中完成,能够极大地提高工作效率。

了解并获取FireBrowse的数据

#包下载
#source("https://bioconductor.org/biocLite.R")
#biocLite("RTCGAToolbox")
#加载包
library(RTCGAToolbox)
#哪些癌症数据可以下载
getFirehoseDatasets()
##  [1] "ACC"      "BLCA"     "BRCA"     "CESC"     "CHOL"     "COADREAD"
##  [7] "COAD"     "DLBC"     "ESCA"     "FPPP"     "GBMLGG"   "GBM"    
## [13] "HNSC"     "KICH"     "KIPAN"    "KIRC"     "KIRP"     "LAML"    
## [19] "LGG"      "LIHC"     "LUAD"     "LUSC"     "MESO"     "OV"      
## [25] "PAAD"     "PCPG"     "PRAD"     "READ"     "SARC"     "SKCM"    
## [31] "STAD"     "STES"     "TGCT"     "THCA"     "THYM"     "UCEC"    
## [37] "UCS"      "UVM"
#数据库中更新时间
getFirehoseRunningDates()
##  [1] "20160128" "20151101" "20150821" "20150601" "20150402" "20150204"
##  [7] "20141206" "20141017" "20140902" "20140715" "20140614" "20140518"
## [13] "20140416" "20140316" "20140215" "20140115" "20131210" "20131114"
## [19] "20131010" "20130923" "20130809" "20130715" "20130623" "20130606"
## [25] "20130523" "20130508" "20130421" "20130406" "20130326" "20130309"
## [31] "20130222" "20130203" "20130116" "20121221" "20121206" "20121114"
## [37] "20121102" "20121024" "20121020" "20121018" "20121004" "20120913"
## [43] "20120825" "20120804" "20120725" "20120707" "20120623" "20120606"
## [49] "20120525" "20120515" "20120425" "20120412" "20120321" "20120306"
## [55] "20120217" "20120124" "20120110" "20111230" "20111206" "20111128"
## [61] "20111115" "20111026"
getFirehoseAnalyzeDates()
##  [1] "20160128" "20150821" "20150402" "20141017" "20140715" "20140416"
##  [7] "20140115" "20130923" "20130523" "20130421" "20130326" "20130222"
## [13] "20130116" "20121221" "20121024" "20120913" "20120825" "20120725"
## [19] "20120623" "20120525" "20120425" "20120321" "20120217" "20120124"
## [25] "20111230" "20111128" "20111026" "20110921" "20110728" "20110525"
## [31] "20110421" "20110327" "20110217" "20110114" "20101223"

可以看到TCGA的各种癌症都在列表中了,这里用的是简称,比如BRCA就是乳腺癌。

而第二个不同的时间,指的是TCGA数据库在发展过程中样本量的增加, 而FireBrowse是按照时间来定期运行程序处理数据的,所以一般来说用最新版的结果,就会涵盖TCGA里面的所有的样本了。

接下来下载所需要的数据,这里以乳腺癌为例,数据下载完后会直接放在你的工作目录,不同地方下载的速度不一样。

## 下载数据,需要选择癌症种类,数据分析时间,还有数据的种类
brcaData = getFirehoseData (dataset="BRCA", runDate="20160128",
                           forceDownload = TRUE,
                           clinical=TRUE, Mutation=TRUE)
save(brcaData,file='brcaData.RTCGAToolbox.Rdata')

这里测试了临床信息和突变信息的数据下载,因为它们比较小,所以下载速度会很快,这里下载的数据包括:

trying URL 'http://gdac.broadinstitute.org/runs/stddata__2016_01_28/data/BRCA/20160128/gdac.broadinstitute.org_BRCA.Clinical_Pick_Tier1.Level_4.2016012800.0.0.tar.gz'
Content type 'application/x-gzip' length 164047 bytes (160 KB)
trying URL 'http://gdac.broadinstitute.org/runs/stddata__2016_01_28/data/BRCA/20160128/gdac.broadinstitute.org_BRCA.Mutation_Packager_Calls.Level_3.2016012800.0.0.tar.gz'
Content type 'application/x-gzip' length 10454503 bytes (10.0 MB)
trying URL 'http://gdac.broadinstitute.org/runs/analyses__2016_01_28/data/BRCA/20160128/gdac.broadinstitute.org_BRCA-TP.CopyNumber_Gistic2.Level_4.2016012800.0.0.tar.gz'
Content type 'application/x-gzip' length 53856803 bytes (51.4 MB)

可以看到同时把CopyNumber_Gistic2数据下载给我了,而我想要的somatic mutation信息在 Mutation_Packager_Calls 里面,临床信息当然是必须的咯。

其实就是根据参数拼接了两个URL而已,原理非常简单,但是它有个好处就是,不仅仅是下载了数据,而且返回了包含这些数据的S4对象。

还有很多其它参数可以控制下载的数据类型,包括:

  • clinical - Get the clinical data slot

  • RNASeqGene - RNASeqGene

  • RNASeq2GeneNorm - Normalized

  • miRNASeqGene - micro RNA SeqGene

  • CNASNP - Copy Number Alteration

  • CNVSNP - Copy Number Variation

  • CNASeq - Copy Number Alteration

  • CNACGH - Copy Number Alteration

  • Methylation - Methylation

  • mRNAArray - Messenger RNA

  • miRNAArray - micro RNA

  • RPPAArray - Reverse Phase Protein Array

  • Mutation - Mutations

  • GISTICA - GISTIC v2 (’AllByGene’ only)

  • GISTICT - GISTIC v2 (’ThresholdedByGene’ only)

  • GISTIC - GISTIC v2 scores and probabilities (both)

了解从FireBrowse下载到的S4对象

load(file='brcaData.RTCGAToolbox.Rdata')
brcaData
## BRCA FirehoseData objectStandard run date: 20160128
## Analysis running date: 20160128
## Available data types:
##   clinical: A data frame of phenotype data, dim:  1097 x 18
##   GISTIC: A FirehoseGISTIC for copy number data
##   Mutation: A data.frame, dim:  90490 x 67
## To export data, use the 'getData' function.

可以看到包含了3种数据,分别是临床信息,somatic的mutation,以及拷贝数变异信息。这里需要用包定义好的函数来从S4对象里面获取数据,就是biocExtract函数:

biocExtract(object, type = c("clinical", "RNASeqGene", "miRNASeqGene",
"RNASeq2GeneNorm", "CNASNP", "CNVSNP", "CNASeq", "CNACGH", "Methylation",
"Mutation", "mRNAArray", "miRNAArray", "RPPAArray", "GISTIC", "GISTICA",
"GISTICT"))

首先提取临床信息:

clinicData=biocExtract(brcaData,'clinical')
## working on: clinical
colnames(clinicData)
##  [1] "Composite Element REF"              
##  [2] "years_to_birth"                      
##  [3] "vital_status"                        
##  [4] "days_to_death"                      
##  [5] "days_to_last_followup"              
##  [6] "tumor_tissue_site"                  
##  [7] "pathologic_stage"                    
##  [8] "pathology_T_stage"                  
##  [9] "pathology_N_stage"                  
## [10] "pathology_M_stage"                  
## [11] "gender"                              
## [12] "date_of_initial_pathologic_diagnosis"
## [13] "days_to_last_known_alive"            
## [14] "radiation_therapy"                  
## [15] "histological_type"                  
## [16] "number_of_lymph_nodes"              
## [17] "race"                                
## [18] "ethnicity"
DT::datatable(clinicData,
                 extensions = 'FixedColumns',
                 options = list(
                   #dom = 't',
                   scrollX = TRUE,
                   fixedColumns = TRUE
                 ))
mutationData  = biocExtract(brcaData,'Mutation')
## working on: Mutation
length(mutationData@assays)
## [1] 993
class(mutationData@assays[[1]])
## [1] "GRanges"
## attr(,"package")
## [1] "GenomicRanges"

对于 GRanges 对象,就按照 GRanges的操作手册来即可

5大分析方法

RTCGAToolbox 提供了5个基本的数据分析工具:

  • 1. 差异表达分析(比较肿瘤和正常组织的基因表达量),根据不同的平台(RNA-Seq或Microarray),自动选择适合的工具

  • 2. 拷贝数和基因表达量的相关性分析

  • 3. 基因突变率分析

  • 4. 生存分析

  • 5. 可视化报告

没有下载表达矩阵,所以基因表达量的差异分析和相关性分析,针对表达信息的生存分析没办法做,以及针对差异分析结果的可视化报告都是无法运行的

getDiffExpressedGenes(brcaData)
corRes <- getCNGECorrelation(brcaData)
corRes
showResults(corRes[[1]])

可以运行的就是看看突变率,还有针对临床资料的生存分析了。

mt=getMutationRate(brcaData)
head(mt)
##           Genes MutationRatio
## ACPP       ACPP   0.006042296
## ALG13     ALG13   0.007049345
## AMY2A     AMY2A   0.006042296
## B4GALT1 B4GALT1   0.004028197
## CARD6     CARD6   0.009063444
## CCDC114 CCDC114   0.005035247
tail(mt[order(mt$MutationRatio),])
##         Genes MutationRatio
## GATA3   GATA3    0.09969789
## MUC16   MUC16    0.10070493
## CDH1     CDH1    0.11581067
## TTN       TTN    0.19436052
## TP53     TP53    0.31117825
## PIK3CA PIK3CA    0.32628399

看看生存情况

head(clinicData[,1:4])
##              Composite Element REF years_to_birth vital_status
## tcga.5l.aat0                 value             42            0
## tcga.5l.aat1                 value             63            0
## tcga.a1.a0sp                 value             40            0
## tcga.a2.a04v                 value             39            1
## tcga.a2.a04y                 value             53            0
## tcga.a2.a0cq                 value             62            0
##              days_to_death
## tcga.5l.aat0          <NA>
## tcga.5l.aat1          <NA>
## tcga.a1.a0sp          <NA>
## tcga.a2.a04v          1920
## tcga.a2.a04y          <NA>
## tcga.a2.a0cq          <NA>
survData <- data.frame(Samples=rownames(clinicData),
                      Time=as.numeric(clinicData[,4]),
                      Censor=as.numeric(clinicData[,3])
)
library(survival)
table(survData$Censor)
##
##   0   1
## 945 152
attach(survData)
my.surv <- Surv(Time,Censor)
kmfit1 <- survfit(my.surv~1)
plot(kmfit1)
很丑的图哦!!
detach(survData)

接下来可以根据各个基因的突变信息,拷贝数变异信息,以及其它临床信息把病人进行分组,进行上次分析检验,cox回归分析等等。

优缺点分析

两个优点:

  • 1. 通过一个函数自动完成所有数据下载的工作(包括下载,解压,读入文件,删除压缩文件),极为方便

  • 1. 读入的TCGA数据被自动封装在一个S4的对象中,我们可以通过各种接口来轻松的访问它内部的数据,一个有条理的数据组织结构可以大大提高程序的可读性和可维护性

最大的缺点就是只能下载全部的基因信息,这样下载速度肯定不能很快,而很多时候,我们只是对感兴趣的基因想探索一下而已。

后面的2~5期我们就会讲一下如何探索感兴趣的基因哈!

既然是broad的FireBrowse包装盒

那么你当然可以直接使用broad的FireBrowse工具咯,命令行版本哈!

点击下面的阅读原文可以直达我以前在生信技能树发布的命令行工具教程,就不占用正文篇幅了哈!

送上一首诗(源自网络)   

纽约 时间 比加 州时间早三个小时,
New York is 3 hours ahead of California

但加州时间并没有变慢。
but it does not make California slow.

有人22岁就毕业了,
Someone graduated at the age of 22,

但等了五年才找到稳定的工作!
but waited 5 years before securing a good job!

有人25岁就当上CEO,
Someone became a CEO at 25,

却在50岁去世。
and died at 50.

也有人直到50岁才当上CEO,
While another became a CEO at 50,

然后活到90岁。
and lived to 90 years.

有人单身,
Someone is still single,

同时也有人已婚,
while someone else got married,

也有人又恢复单身了。
someone is single again.

欧 巴马 55岁就退休,
Obama retires at 55,

川普70岁才开始当总统 。
but Trump starts at 70.

世上每个人本来就有自己的发展时区。
Absolutely everyone in this world works based on their Time Zone.

身边有些人看似走在你前面,
People around you might seem to go ahead of you,

也有人看似走在你后面。
some might seem to be behind you.

但其实每个人在自己的时区有自己的步程。
But everyone is running their own RACE, in their own TIME.

不用嫉妒或嘲笑他们。
Don’t envy them or mock them.

他们都在自己的时区里,你也是!
They are in their TIME ZONE, and you are in yours!

生命就是等待正确的行动时机。
Life is about waiting for the right moment to act.


所以,放轻松。
So, RELAX.

你没有落后。
You’re not LATE.

你没有领先。
You’re not EARLY.

在命运为你安排的属于自己的时区里,一切都准时。
You are very much ON TIME, and in your TIME ZONE Destiny set up for you.


您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存