TCGA数据下载——TCGAbiolinks

TCGAbiolinks 是一个用于TCGA数据综合分析的R/BioConductor软件包,能够通过GDC Application Programming Interface (API)访问 National Cancer Institute (NCI) Genomic Data Commons (GDC) ,来搜索、下载和准备TCGA相关数据,以便在R中进行分析。

0、镜像和R包安装和加载

#设置镜像
rm(list=ls())
options("repos"="https://mirrors.ustc.edu.cn/CRAN/")
#意思是,如果没有安装BiocManager包,那就安装BiocManager
if(!require("BiocManager")) install.packages("BiocManager",update = F,ask = F)
options(BioC_mirror="https://mirrors.ustc.edu.cn/bioc/")
BiocManager::install("SummarizedExperiment")
BiocManager::install("TCGAbiolinks")
library(TCGAbiolinks)
library(SummarizedExperiment)

1、TCGA数据下载

library(TCGAbiolinks)#加载包
query <- GDCquery(project = "TCGA-STAD", #肿瘤类型,##TCGAbiolinks:::getGDCprojects()$project_id#可查看
                  data.category = "Transcriptome Profiling",#数据范畴#转录组数据
                  data.type = "Gene Expression Quantification",#选定要下载的数据类型#gene表达数据
                  workflow.type = "HTSeq - Counts")#选定要下载RNAseq的Counts文件
#######################################################################################################
#下载rna-seq的counts数据                          
#data.type = "Gene Expression Quantification"
#下载miRNA数据                                              
#data.type = "miRNA Expression Quantification"
#下载Copy Number Variation数据                    
#data.type = "Copy Number Segment"               
#######################################################################################################
samplesDown <- getResults(query,cols=c("cases"))  
#getResults(query, rows, cols)根据指定行名或列名从query中获取结果,此处用来获得样本的barcode,即,样本名
# 此处共检索出407个barcodes
head(samplesDown)#407样本名
[1] "TCGA-F1-A448-01A-11R-A24K-31" "TCGA-D7-6522-01A-11R-1802-13"
[3] "TCGA-VQ-A94R-01A-11R-A414-31" "TCGA-RD-A8MV-01A-11R-A36D-31"
[5] "TCGA-BR-4191-01A-02R-1131-13" "TCGA-BR-8291-01A-11R-2343-13"
#######################################################################################################
# TCGAquery_SampleTypes(barcode, typesample) #筛选肿瘤和正常组织的barcode,方便后面分组做差异分析
# TP代表PRIMARY SOLID TUMOR;NT-代表Solid Tissue Normal(其他组织样本可参考学习文档)
dataSmTP <- TCGAquery_SampleTypes(barcode = samplesDown,
                                  typesample = "TP")
#View(dataSmTP )# 从samplesDown中筛选出375个TP样本barcodes

dataSmNT <- TCGAquery_SampleTypes(barcode = samplesDown,
                                  typesample = "NT")
#View(dataSmNT)# 从samplesDown中筛选出32个正常样本barcodes
#######################################################################################################
###设置barcodes参数,筛选符合要求的375个肿瘤样本数据和32正常组织数据
#barcode参数:根据传入barcode进行数据过滤
queryDown <- GDCquery(project = "TCGA-SATD", 
                      data.category = "Transcriptome Profiling",
                      data.type = "Gene Expression Quantification", 
                      workflow.type = "HTSeq - Counts", 
                      barcode = c(dataSmTP, dataSmNT))
#######################################################################################################
GDCdownload(queryDown, #上面queryDown的结果
            method = "api",#两种方法,api或者gdc-client
            files.per.chunk = 6)#分为多个片段下载,可以解决下载容易中断的问题。
##下载完成,前面如果已经下载了,这里不会再次下载

2、数据整理

########################################################################################
library(SummarizedExperiment)
#GDCprepare()将前面GDCquery()的结果准备成R语言可处理的SE(SummarizedExperiment)文件
dataPrep1 <- GDCprepare(query = queryDown, save = TRUE, save.filename =
                          "STAD_case.Rda")
count_matrix=assay(dataPrep1)#数组
write.csv(count_matrix,file = paste("TCGA-STAD","Counts.csv",sep = "-"))#文件保存
###########################################################################################
# 去除dataPrep1中的异常值,dataPrep1数据中含有肿瘤组织和正常组织的数据
##TCGAanalyze_Preprocessing()对数据进行预处理:
#使用spearman相关系数去除数据中的异常值
#TCGAanalyze_Preprocessing(object, cor.cut = 0, filename = NULL,width = 1000,                        height = 1000, datatype = names(assays(object))[1])
# 函数功能描述:
#Array Array Intensity correlation (AAIC) and correlation boxplot to define outlier 
dataPrep2 <- TCGAanalyze_Preprocessing(object = dataPrep1,
                                      cor.cut = 0.6,
                                      datatype = "HTSeq - Counts")
#将预处理后的数据dataPrep2,写入新文件“LIHC_dataPrep.csv”
write.csv(dataPrep2,file = "STAD_dataPrep.csv",quote = FALSE)
###########################################################################################
# TCGAtumor_purity(barcodes, estimate, absolute, lump, ihc, cpe);
#使用来自5种方法的5个估计值作为阈值对TCGA样本进行过滤,这5个值是estimate, absolute, lump, ihc, cpe;
#这里设置cpe=0.6(cpe是派生的共识度量,是将所有方法的标准含量归一化后的均值纯度水平,以使它们具有相等的均值和标准差)

#筛选肿瘤纯度大于等于60%的样本数据
purityDATA <- TCGAtumor_purity(colnames(dataPrep1), 0, 0, 0, 0, 0.6)
# filtered 为被过滤的数据, pure_barcodes是我们要的肿瘤数据
Purity.STAD<-purityDATA$pure_barcodes
normal.STAD<-purityDATA$filtered
#获取肿瘤纯度大于60%的375个肿瘤组织样本+32个正常组织样本,共计407个样本
puried_data <-dataPrep2[,c(Purity.STAD,normal.STAD)]
###########################################################################################
#基因注释,需要加载“SummarizedExperiment”包,“SummarizedExperiment container”每个由数字或其他模式的类似矩阵的对象表示。行通常表示感兴趣的基因组范围和列代表样品。
library("SummarizedExperiment")
rowData(dataPrep1)  #传入数据dataPrep1必须为 
#                SummarizedExpensembl_gene_id      external_gene_name    original_ensembl_gene_id
#                   <character>        <character>
#ENSG00000000003 ENSG00000000003             TSPAN6 ENSG00000000003.13
#ENSG00000000005 ENSG00000000005               TNMD ENSG00000000005.5
#ENSG00000000419 ENSG00000000419               DPM1 ENSG00000000419.11
#ENSG00000000457 ENSG00000000457              SCYL3 ENSG00000000457.12
#ENSG00000000460 ENSG00000000460           C1orf112 ENSG00000000460.15
#将结果写入文件“puried.STAD.cancer.csv”
rownames(puried_data)<-rowData(dataPrep1)$external_gene_name
write.csv(puried_data,file = "puried.STAD.csv",quote = FALSE)
###########################################################################################
#进行表达矩阵标准化和过滤,得到用于差异分析的表达矩阵
#TCGAanalyze_Normalization()# 使用EDASeq软件包标准化mRNA转录本和miRNA。
#TCGAanalyze_Normalization()执行EDASeq包中的如下功能:
#1. EDASeq::newSeqExpressionSet
#2. EDASeq::withinLaneNormalization
#3. EDASeq::betweenLaneNormalization
#4. EDASeq::counts
dataNorm <- TCGAanalyze_Normalization(tabDF = puried_data,#RNAseq表达矩阵,行代表基因,列代表样本|
                                      geneInfo = geneInfo,
                                      method = "gcContent")
#|geneInfo|关于geneLength和gcContent的20531个基因的矩阵,“geneInfoHT”和“geneInfo”可选。
#method |选择标准化的方法,基于’gcContent’ 或 ’geneLength’的标准化方法可选

#将标准化后的数据再过滤,去除掉表达量较低(count较低)的基因,得到最终的数据
dataFilt <- TCGAanalyze_Filtering(tabDF = dataNorm,
                                  method = "quantile", #用于过滤较低count数的基因的方法,有’quantile’, ’varFilter’, ’filter1’, ’filter2’
                                  qnt.cut =  0.25)#过滤的阈值
str(dataFilt)
write.csv(dataFilt,file = "TCGA_STAD_final.csv",quote = FALSE) 

3、基因差异表达分析

#首先读入表达矩阵文件
dataFilt_LIHC_final <- read.csv("TCGA_STAD_final.csv", header = T,check.names = FALSE)
# 定义行名
rownames(dataFilt_LIHC_final) <- dataFilt_LIHC_final[,1]
dataFilt_LIHC_final <- dataFilt_LIHC_final[,-1]
View(dataFilt_STAD_final)
#定义样本的分组,肿瘤组和正常组
#目前只知道根据barcode14和15位数字0—9为肿瘤,大于就为正常样本
metadata <- data.frame(colnames(dataFilt_STAD_final))#View(metadata)
for (i in 1:length(metadata[,1])) {
  num <- as.numeric(substring(metadata[i,1],14,15))
  if (num %in% seq(1,9)) {metadata[i,2] <- "Tum"}
  if (num %in% seq(10,29)) {metadata[i,2] <- "Nor"}
}
colnames(metadata)[2] <- c("fenzu")
ifelse(metadata$fenzu%in%c("Tum")==TRUE,"Tum","Nor")#发现从376行开始是正常的
# 定义肿瘤样本分组
mat1 <- dataFilt_STAD_final[,1-375]
mat1 <- log(mat1+1)
# 定义正常组织样本分组
mat2 <- dataFilt_STAD_final[,376-407]
mat2 <- log(mat2+1)
#数据准备好了,开始差异表达分析
Data_DEGs <- TCGAanalyze_DEA(mat1 = mat1,#肿瘤组织的表达矩阵
                             mat2 = mat2,#正常样本的表达矩阵
                             Cond1type = "Tumor",#mat1中的样品分组信息
                             Cond2type = "Normal",#mat2中的样品分组信息
                             pipeline="limma",#用limma包还是edgeR
                             batch.factors = c("TSS"),#批处理纠正选项
                             voom = TRUE,
                             contrast.formula = "Mycontrast=Tumor-Normal")
View(Data_DEGs)#结果展示
######################################################################################
#设置logFC,挑选表达有差异的基因进行富集分析
Data_DEGs_high_expr <- Data_DEGs[Data_DEGs$logFC >=1,]
Genelist <- rownames(Data_DEGs_high_expr)
ansEA <- TCGAanalyze_EAcomplete(TFname="DEA genes Normal Vs Tumor", Genelist)
#富集分析结果可视化##
TCGAvisualize_EAbarplot(tf  = rownames(ansEA$ResBP),
                        GOBPTab = ansEA$ResBP,
                        GOCCTab = ansEA$ResCC,
                        GOMFTab = ansEA$ResMF,
                        PathTab = ansEA$ResPat,
                        nRGTab = Genelist,
                        nBar = 10, #显示条形图的数量
                        filename = "TCGAvisualize_EAbarplot_Output.pdf")
#结果没富集出来提示
#Error in mtext(mainLab, side = 3, line = -1, outer = TRUE, font = 2) :  plot.new has not been called yet
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,099评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,828评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,540评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,848评论 1 285
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,971评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,132评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,193评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,934评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,376评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,687评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,846评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,537评论 4 335
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,175评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,887评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,134评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,674评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,741评论 2 351

推荐阅读更多精彩内容