下载后的数据,打开是这样的。都放在了一个文件中。
这里分享一下怎么提取数据。
数据的下载和之前的教程一样【14-TCGA数据库下载整理】。只不过这里选择的是STAR-Counts了。加入购物车后下载下面的文件。
我先写2个函数,一个是处理读入json文件的函数,该文件包括文件信息和样本barcode的关系。
processingJsonFiles <- function(jsonFile){
library(rjson)
metadata_json_File <- fromJSON(file=jsonFile)
json_File_Info <- data.frame(filesName = c(),TCGA_Barcode = c())
for(i in 1:length(metadata_json_File)){
TCGA_Barcode <- metadata_json_File[[i]][["associated_entities"]][[1]][["entity_submitter_id"]]
file_name <- metadata_json_File[[i]][["file_name"]]
json_File_Info <- rbind(json_File_Info,data.frame(filesName = file_name,TCGA_Barcode = TCGA_Barcode))
}
rownames(json_File_Info) <- json_File_Info[,1]
json_File_Info <-json_File_Info[-1]
return(json_File_Info)
}
jsonFile是下载的json文件的完整路径。
下面的函数是提取数据的函数。
getTCGA_RNAseq_data = function(filepath,jsonFileInfo,data_type){
datamatrix = data.frame()
for(wd in filepath){
#每一个循环读取一个文件
tempPath <- unlist(strsplit(wd,"/"))
filename <- tempPath[length(unlist(strsplit(wd,"/")))]
message(paste0("微信公众号:MedBioInfoCloud提示:正在读入文件:\n",filename))
oneSampExp <- read.table(wd,comment.char = "#",header = T,sep = "\t")
oneSampExp = oneSampExp[-c(1:4),]
# 根据jsonFileInfo文件中文件名称与barcode对应关系,命名列名
if(wd == filepath[1]){
oneSampExp = oneSampExp[,c("gene_id","gene_name","gene_type",data_type)]
colnames(oneSampExp) <- c("gene_id","gene_name","gene_type",jsonFileInfo[filename,"TCGA_Barcode"])
datamatrix = oneSampExp
}else{
oneSampExp = oneSampExp[,c("gene_id",data_type)]
colnames(oneSampExp) <- c("gene_id",jsonFileInfo[filename,"TCGA_Barcode"])
datamatrix = merge(datamatrix,oneSampExp,by = "gene_id")
}
}
return(datamatrix)
}
filepath 是下载的数据路径。通过dir等类似的函数获取的路径向量。比如,我们下载的数据是一个压缩包,解压后,将文件名重新命名为data。
filepath = dir(path = "./data",
pattern = "counts.tsv$",
full.names = T,
recursive = T)
jsonFileInfo是processingJsonFiles函数获取的结果。
data_type是下面中的一种。
对于文件中的信息
下面就可以获取数据了,想要什么就获取什么。一般就是TPM和FPKM。
jsonFileInfo <- processingJsonFiles(jsonFile = "metadata.cart.2022-04-05.json ")
filepath = dir(path = "./data",
pattern = "counts.tsv$",
full.names = T,
recursive = T)
dat = getTCGA_RNAseq_data(filepath =filepath,
jsonFileInfo = jsonFileInfo,
data_type = "fpkm_unstranded")
head(dat)[,1:5]
原来TCGA数据库的下载,使用TCGAbiolinks包是否还可以处理数据,我还没有试,但下载数据应该是没有问题的。
本文分享自 MedBioInfoCloud 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!