选择性提取Xena中所需数据
2021-09-10 本文已影响0人
木制品_1125
一、前言
TCGA的数据的研究套路目前已经有很多了,而Xena是一个综合了TCGA、GTEx、TARGET等多个数据库的工具,非常方便使用。其中UCSC Toil RNA-seq Recompute、Pan-Cancer Atlas Hub等亚集中的数据量非常可观,对于没有服务器或性能较好的计算机的学生或研究人员来说,下载后的数据占据空间比较大,读取数据很慢,甚至可能导致计算机崩溃,这篇文章就记录下如何用R语言读取压缩数据,如何按照自己的需求提取所需的列。
二、读取压缩包
我们下载的Xena数据可能像下图这样:
F1.jpg
压缩包比较大,解压后的数据更大,非常占据储存空间,gzfile可以读取由bzip2, xz、lzma等压缩的文件,可以通过"r","w","a"设置读写添加模式等。示例如下:
gz <- gzfile("F://xenaData/TCGA/pancancer/tcga_RSEM_gene_fpkm.gz","rt")
rnaseq <- read.table(gz,sep = "\t",header = T,check.names = F)
close(gz)
使用完后记得使用close()关闭。
二、读取数据特定列
就像刚刚读取的压缩包数据一样,内容包括6万行*1万列,如果有服务器或高性能的计算机,那么您可以直接忽略下面的内容。
如果没有,那么我们可以使用read.table里面的参数来读取特定的列,这个参数是colClasses,这是一个指定每列数据格式的参数,但是如果某一列的格式被设定为"NULL",那么读取数据时则会忽略这一列。示例如下:
gz <- gzfile("F://xenaData/TCGA/pancancer/tcga_RSEM_gene_fpkm.gz", "rt")
rnaseq <- read.table(gz, nrows = 2, sep = "\t", header = T, check.names = F) ##先获取数据的前两行用以查看数据类型
close(gz)
classes <- sapply(rnaseq, class) ##获得rnaseq每一列的数据类型
classes[!(names(classes) %in% c("sample"))] <- "NULL" ##将除sample这一列以外的其他列设置为NULL
gz <- gzfile("F://xenaData/TCGA/pancancer/tcga_RSEM_gene_fpkm.gz", "rt")
rnaseq <- read.table(gz, sep = "\t", header = T, check.names = F, colClasses = classes) ##再次单独读取sample这一列数据
close(gz)
本文所记为防止遗忘,如果错误,敬请指正。