TCGA数据库是科研中最常用的数据库之一,其中储存着多种疾病的各组学的数据。那么,我们从数据库中下载下来单个样本的数据后,如何将它们整合在一起呢?今天,我们以乳腺癌为例,讲解下如何将多个样本的DNA甲基化、表达、生存数据进行合并。
我们从TCGA数据库(https://cancergenome.nih.gov)中下载乳腺癌样本(本文以三个样本为例),将需要下载的样本的DNA甲基化数据、表达数据、生存数据加入cart中,然后进行下载。
我们下载下来的DNA甲基化数据(450K)是下图这样的(大家应该已经很熟悉了):
下面,我们使用R语言将这三个样本的DNA甲基化数据合并成一个矩阵(DNA甲基化谱)。以下简单的代码就可以实现merge的过程。
setwd("F:/")
#甲基化数据合并
file_path <- "F:\\Methylation\\"
mydir = list.files(file_path)
dir = paste(file_path,mydir,sep="")
n = length(dir)
merge.data = read.table(file = dir[1],header=T,sep="\t",row.names=1)[1]
for (i in 2:n){
new.data = read.table(file = dir[i],header=T,sep="\t",row.names=1)[1]
merge.data = cbind(merge.data,new.data)
}
colnames(merge.data) <- substr(mydir,47,62)
write.table(merge.data,"MergeData.txt",sep='\t',quote=F,col.names=T,row.names=T)
看上去不是很好看,那我们给简单优化一下(把merge封装成一个函数),这样下次调用的时候就方便了一些。
#甲基化数据封装为一个函数
mergeFile <- function(x)
{
file_path <- x
mydir = list.files(file_path)
dir = paste(file_path,mydir,sep="\\")
n = length(dir)
merge.data = read.table(file = dir[1],header=T,sep="\t",row.names=1)[1]
for (i in 2:n){
new.data = read.table(file = dir[i],header=T,sep="\t",row.names=1)[1]
merge.data = cbind(merge.data,new.data)
}
colnames(merge.data) <- substr(mydir,47,62)
return(merge.data)
}
myfile <- mergeFile("F:\\Methylation")
write.table(myfile,"MethylationMerge.txt",quote=F,col.names=T,row.names=T,sep='\t')
最终,我们就得到了三个样本的DNA甲基化谱,如下图所示:
接下来,我们就可以对甲基化谱进行分析了。
然后,我们进行表达数据的合并,可以使用如下代码:
#表达数据合并
mergeExpFile <- function(x)
{
file_path <- x
mydir = list.files(file_path)
dir = paste(file_path,mydir,sep="\\")
n = length(dir)
merge.data = read.table(file = dir[1],header=T,sep="\t",row.names=1)[1]
for (i in 2:n){
new.data = read.table(file = dir[i],header=T,sep="\t",row.names=1)[1]
merge.data = cbind(merge.data,new.data)
}
colnames(merge.data) <- unlist(strsplit(mydir, "[.]"))[c(1,4,7)]
return(merge.data)
}
myfile <- mergeExpFile("F:\\expression")
write.table(myfile,"ExpressionMerge.txt",quote=F,col.names=T,row.names=T,sep='\t')
三个样本的表达数据合并后结果如下图所示:
最后,我们进行生存数据的整合,从TCGA数据库中可以直接下载到乳腺癌全部样本的生存数据,我们只需将需要样本的生存数据提取出来就行了。下载的生存数据如下图所示:
使用如下代码,就可以将要提取的样本临床数据取出来:
#获取临床数据
mydir = list.files("F:\\Methylation")
Clinical_file <- read.table("F:\\nationwidechildrens.org_clinical_patient_brca.txt",header=F,fill=TRUE,sep='\t')
ClinicalData <- Clinical_file[which(Clinical_file[,2] %in% substr(mydir,47,58)),] #建立在读取文件名字的基础之上
ClinicalData <- rbind(Clinical_file[c(1,2,3),],ClinicalData)
write.table(ClinicalData,"ClinicalMerge.txt",quote=F,col.names=F,row.names=F,sep='\t')
结果如下图所示(具体需要哪一列,可以自己选择):
目前,已经有很多工具和网站可以得到整合好的TCGA数据了,因此,通过这个方法处理其它样本的数据也是可以的。
更多生信分析技术和套路,请联系13120220117(微信同号)