新版TCGA表达mRNA/miRNA和临床数据下载及R语言整合代码—科研工具箱

请关注公众号【叨客学习资料】 在使用网站的过程中有疑问,请来公众号进行反馈哦

以肺腺癌数据(TCGA-LUAD)为例,为了用TCGA结直肠癌数据做分析,我们首先要先整理出该癌症的基因表达矩阵。(也有一些数据库提供整理好的TCGA癌症数据,如UCSC xena数据库对TCGA数据进行了整理,可直接下载表达矩阵和临床数据用于研究

进入GDC data portal–>Respository栏目,勾选下面选项:(注意,TCGA更新后的Workflow Type一栏只有STAR – Counts,即将原来的HTSeq-Counts、HTSeq-FPKM、HTSeq-FPKM-UQ数据都放入了一个文件中)

C:\Users\JINWAN~1\AppData\Local\Temp\1657963917(1).png
C:\Users\JINWAN~1\AppData\Local\Temp\1657964003(1).png

对筛选到的文件,可一键全部添加到cart或手动添加到cart:

C:\Users\JINWAN~1\AppData\Local\Temp\1657964305(1).png

点击顶部Cart,进入下载界面,需要点击这三个地方下载临床数据(Clinical)、json文件(包括文件信息和样本barcode的关系)、表达文件(Download🡪Cart)。

C:\Users\JINWAN~1\AppData\Local\Temp\1657964371(1).png

手动解压临床数据文件和json文件,最终我们得到以下三个文件:

https://pic4.zhimg.com/80/v2-b8defa0cd3486f87abdb81e6691ea543_720w.jpg

到此为止我们下载好了所需数据然后进行数据整理,

C:\Users\JINWAN~1\AppData\Local\Temp\1657964859(1).png

Tips: 此处不需要将下载的tsv文件合并到一个文件夹中,如果合并了,会出现样本名称全部为NA

如果已合并,需要对应修改count_file_name <- sapply(count_file_name,function(x){x[2]})为count_file_name <- sapply(count_file_name,function(x){x[1]})

完整代码:

setwd(\"你的下载数据路径\")
#install.packages(\"rjson\")
library(\"rjson\")
json <- jsonlite::fromJSON(\"metadata.cart.2022-04-18.json\")
View(json)
#id <- json$associated_entities[[1]][,1]
sample_id <- sapply(json$associated_entities,function(x){x[,1]})
file_sample <- data.frame(sample_id,file_name=json$file_name)  

#获取gdc_download文件夹下的所有TSV表达文件的 路径+文件名
count_file <- list.files(\'gdc_download_20220418_090958.803273\',pattern = \'*.tsv\',recursive = TRUE)
#在count_file中分割出文件名
count_file_name <- strsplit(count_file,split=\'/\')
count_file_name <- sapply(count_file_name,function(x){x[2]})

matrix = data.frame(matrix(nrow=60660,ncol=0))
for (i in 1:length(count_file)){
  path = paste0(\'gdc_download_20220418_090958.803273//\',count_file[i])
  data<- read.delim(path,fill = TRUE,header = FALSE,row.names = 1)
  colnames(data)<-data[2,]
  data <-data[-c(1:6),]
  data <- data[3]   #取出unstranded列(第3列),即count数据,对应其它数据
  colnames(data) <- file_sample$sample_id[which(file_sample$file_name==count_file_name[i])]
  matrix <- cbind(matrix,data)
}

write.csv(matrix,\'COUNT_matrix.csv\',row.names = TRUE)

设置Gene Symbol为列名

#------------------------------增加部分:设置Gene Symbol为列名的矩阵(前面得到的是Ensembl ID)------------------------------------------
path = paste0(\'gdc_download_20220418_090958.803273//\',count_file[1])
data<- as.matrix(read.delim(path,fill = TRUE,header = FALSE,row.names = 1))
gene_name <-data[-c(1:6),1]
matrix0 <- cbind(gene_name,matrix)
#将gene_name列去除重复的基因,保留每个基因最大表达量结果
matrix0 <- aggregate( . ~ gene_name,data=matrix0, max)    
#将gene_name列设为行名
rownames(matrix0) <- matrix0[,1]
matrix0 <- matrix0[,-1]

分为normal和tumor矩阵

#------------------------------增加部分:分为normal和tumor矩阵--------------------------
sample <- colnames(matrix0)

normal <- c()
tumor <- c()

for (i in 1:length(sample)){
  if((substring(colnames(matrix0)[i],14,15)>10)){    #14、15位置大于10的为normal样本
    normal <- append(normal,sample[i])
  } else {
    tumor <- append(tumor,sample[i])
  }
}

tumor_matrix <- matrix0[,tumor]
normal_matrix <- matrix0[,normal]

#写入文件

临床数据整合

setwd(\"你的路径\")
#install.packages(\"rjson\")
library(\"rjson\")
json <- jsonlite::fromJSON(\"metadata.cart.2022-04-18.json\")
View(json)
entity_submitter_id <- sapply(json$associated_entities,function(x){x[,1]})
case_id <- sapply(json$associated_entities,function(x){x[,3]})
sample_case <- t(rbind(entity_submitter_id,case_id))

clinical <- read.delim(\'clinical.cart.2022-04-18\\\\clinical.tsv\',header = T)
clinical <- as.data.frame(clinical[duplicated(clinical$case_id),])

clinical_matrix <- merge(sample_case,clinical,by=\"case_id\",all.x=T)
clinical_matrix <- clinical_matrix[,-1]

miRNA数据整合

图片[7]-新版TCGA表达mRNA/miRNA和临床数据下载及R语言整合代码—科研工具箱-叨客学习资料网
下载数据和metadata
library(\"rjson\")
json <- jsonlite::fromJSON(\"metadata.cart.2022-09-27.json\")
View(json)
#id <- json$associated_entities[[1]][,1]
sample_id <- sapply(json$associated_entities,function(x){x[,1]})
file_sample <- data.frame(sample_id,file_name=json$file_name)  

#获取gdc_download文件夹下的所有miRNA表达文件的 路径+文件名
count_file <- list.files(\'gdc_download_20220927_150057.906231\',pattern = \'*quantification.txt\',recursive = TRUE)
#在count_file中分割出文件名
count_file_name <- strsplit(count_file,split=\'/\')
count_file_name <- sapply(count_file_name,function(x){x[2]})

matrix = data.frame(matrix(nrow=1881,ncol=0))
for (i in 1:length(count_file)){
  path = paste0(\'gdc_download_20220927_150057.906231//\',count_file[i])
  data<- read.delim(path,fill = TRUE,header = T,row.names = 1)
  data <- data[1]   #取出count列(第1列),rpm列(第2列)
  colnames(data) <- file_sample$sample_id[which(file_sample$file_name==count_file_name[i])]
  matrix <- cbind(matrix,data)
}
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发
头像
请输入有效评论哦,肆意灌水或者乱打评论是不会通过的,会影响您评论后获得资源哦~~
提交
头像

昵称

取消
昵称表情

    暂无评论内容