整合gdc-client批量下载的文件

在我前面写过的如何批量下载TCGA里的数据(gdc-client方法)文章里,只涉及了如何批量下载TCGA数据,但是对于下载下来的那些文件没有整理。为什么呢?因为我懒。。。凡是用gdc-client下载过文件的小伙伴们一定注意到,你下载的几百个count文件,或者是FPKM文件,都是一个文件在一个文件夹里,而且还是压缩文件,就会很头疼,那么如何把这几百个文件整合到一个文件里呢?

下载完的数据长什么样?

批量下载后的数据,你会看到一长溜的,并且每一个文件夹里是个压缩的文件(这里我下载了546个文件):

怎么把这些文件夹里的压缩文件都提取到一个文件夹里?并且整合到同一个txt文件里?

这里参考了手把手学会TCGA数据分析这篇文章的代码,当然你要根据自己的实际情况更改代码,不要无脑的全盘copy。

#在你这些存储的几百个文件的文件夹里,新建一个文件夹
> dir.create('00000000000000000merge')
#计算当前路径里文件夹的数目,这里理论上应该是我546个文件夹+新建的1个
> i <- list.dirs()
#打印所有文件夹的名称
> i

然而这里有个问题,打印出来的文件夹多出一个,这是你的当前文件夹,这里的编号也涉及到后面的代码需要修改(这一步你也需要注意,因为我参考的那篇文章里没有出现这种情况,所以这就是我说的,为什么要具体情况具体分析):

  [1] "."                                           "./00000000000000000merge"                   
  [3] "./003a33f3-3658-4e60-967c-dc97b83c105c"      "./0097e580-5a77-4cc2-b43e-99df1eb9fad0"     
  [5] "./0133b9e4-884c-45f8-8bd0-e796d7058012"      "./031eaab8-67fc-484c-ac4c-2678758ced23"     
  [7] "./03f33c10-915f-4523-8871-1482aaff3549"      "./04303348-e957-474f-9667-0f36ee8cbbf6"     
  [9] "./04527ea0-e6b1-4bbc-8b30-983bb193779a"      "./0494838d-60cc-4bb8-8edd-f53f11238e51"     
 [11] "./069ded62-6c9d-462c-8ae7-dde7437e5d7d"      "./06a08433-a734-4fb6-b300-e4bb50209bca"     
 [13] "./06f89bc6-2e97-4bfa-989c-4934e7f28f05"      "./07458e60-4784-4ba5-963c-a9acb12444e0"     
..........

所以现在是546+1+1个文件夹。下面的代码你需要注意修改了:

# 把下载的所有文件夹copy到你新建的那个里面,这里注意顺序,上面那个"."文件夹编号是1,我新建的是2,其他下载的都是编号3以后的,所以这里应该是:
> m = i[3:548]
> for(n in m){
  x.path=paste(n,list.files(n),sep='/')
  file.copy(x.path,'./00000000000000000merge',recursive = T)}

复制后,进入你新建的文件夹里:

> setwd("/media/yanfang/FYWD/TCGA_data_analysis/TCGA_HNSCC/00000000000000000merge")
#再次查看有多少个文件在里面
> i <- list.files()
> i

现在所有的压缩文件就都在你新建的文件夹里了:

然后要合并这些压缩文件:

# merge 
> x_merge=NULL
> for(n in i){
  x=read.delim(n,col.names = c('ID',substr(n,1,9)))
  if(is.null(x_merge)){ x_merge=x  }  else{  x_merge=merge(x_merge,x,by='ID')  }
}
> rownames(x_merge) <- x_merge$ID

有人可能会疑惑,这不是还没解压缩么?没关系,R可以直接读取压缩文件。运行后,View一下你的x_merge这个矩阵,这个矩阵就是合并了500多个压缩文件的文件:

这是开头几行
这是最后几行

这里注意!!!在参考的文章里,她的代码是前5行是测序信息,而我的矩阵是前2行和后3行是测序信息!所以我需要删除的是第1,2行,和最后3行:

> x_reduce =x_merge[-(1:2),]
> x_reduce_2 =x_reduce[-(60483:60485),]
#上面我们看到第一列和行名重复了,删掉
> x_reduce_3 =x_reduce_2[,-1]#删除第一列

拿到了count矩阵,觉得哪里不对头。。。发现列名很奇怪吗?样品名都很奇怪,现在让我们复习一下TCGA数据库的样品名是什么样的:

(参考:TCGA数据库中临床样品编号详解(Barcode)

TCGA下载的数据编号怎么看?

一张网上很火的图片:


TCGA:Project 项目名称
02:组织来源代码。完整的组织来源代码查询可看这里:here
0001:科研参与者
01C:样本类型,前面的数字1-9为肿瘤,10-29为正常或癌旁样本。字母代表质量,A为佳,B次之(比如福尔马林固定石蜡包埋组织),C更次之。一般用A。
01D:组织部位,同属于一个患者组织的不同部分的顺序编号,同一组织会分割为100-120mg的部分,分别使用。D为分析的分子类型。D是DNA的意思。还有其他对应关系,可看这里:here
0182:制板的顺序,值大表示制板越晚。即为去除batch effect时的batch依据。
01:测序或鉴定中心编码.

怎么把我的样品名也改成TCGA标准的命名法呢?

这里你还需要下载一个东西,在你最开始下载的页面里,你的count是点击Download下载的,这时你还需要点击它左边的“Metadata”,那里面储存了和你的count对应的各种id,各种测序信息:

#读取metadata的信息
> library(rjson)
> x = fromJSON(file='metadata.cart.2020-04-17.json')
> n = ncol(x_reduce_3)
> id=rep(0,n)
> sample_id = rep(0,n)
> for(i in 1:n){
  id[i]=x[[i]]$submitter_id
  sample_id[i]=x[[i]]$associated_entities[[1]]$entity_submitter_id
}
> sample_matrix = data.frame(id=id,sample_id=sample_id)
> sample_info = data.frame(id=substr(id,1,9),sample_id)
#把metadata里的TCGA标准的样品名称赋给count矩阵里的列名
> colnames(x_reduce_3)=sample_info$sample_id
> xb=rownames(x_reduce_3)
> xc <- gsub("\\.(\\.?\\d*)","",xb)
> rownames(x_reduce_3)= xc
#看一下count矩阵的行名是不是基因,列名是不是样品名
> rownames(x_reduce_3)
> colnames(x_reduce_3)
#保存矩阵
> write.csv(x_reduce_3,file="TCGA_original_counts.csv")
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
禁止转载,如需转载请通过简信或评论联系作者。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,670评论 5 460
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,928评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,926评论 0 320
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,238评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,112评论 4 356
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,138评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,545评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,232评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,496评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,596评论 2 310
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,369评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,226评论 3 313
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,600评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,906评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,185评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,516评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,721评论 2 335

推荐阅读更多精彩内容