在我前面寫過的如何批量下載TCGA里的數(shù)據(jù)(gdc-client方法)文章里,只涉及了如何批量下載TCGA數(shù)據(jù)膜廊,但是對于下載下來的那些文件沒有整理乏沸。為什么呢?因為我懶爪瓜。蹬跃。。凡是用gdc-client下載過文件的小伙伴們一定注意到铆铆,你下載的幾百個count文件蝶缀,或者是FPKM文件,都是一個文件在一個文件夾里薄货,而且還是壓縮文件翁都,就會很頭疼,那么如何把這幾百個文件整合到一個文件里呢谅猾?
下載完的數(shù)據(jù)長什么樣柄慰?
批量下載后的數(shù)據(jù),你會看到一長溜的税娜,并且每一個文件夾里是個壓縮的文件(這里我下載了546個文件):
怎么把這些文件夾里的壓縮文件都提取到一個文件夾里坐搔?并且整合到同一個txt文件里?
這里參考了手把手學(xué)會TCGA數(shù)據(jù)分析這篇文章的代碼敬矩,當(dāng)然你要根據(jù)自己的實際情況更改代碼概行,不要無腦的全盤copy。
#在你這些存儲的幾百個文件的文件夾里谤绳,新建一個文件夾
> dir.create('00000000000000000merge')
#計算當(dāng)前路徑里文件夾的數(shù)目占锯,這里理論上應(yīng)該是我546個文件夾+新建的1個
> i <- list.dirs()
#打印所有文件夾的名稱
> i
然而這里有個問題,打印出來的文件夾多出一個缩筛,這是你的當(dāng)前文件夾消略,這里的編號也涉及到后面的代碼需要修改(這一步你也需要注意,因為我參考的那篇文章里沒有出現(xiàn)這種情況瞎抛,所以這就是我說的艺演,為什么要具體情況具體分析):
[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"
..........
所以現(xiàn)在是546+1+1個文件夾。下面的代碼你需要注意修改了:
# 把下載的所有文件夾copy到你新建的那個里面,這里注意順序胎撤,上面那個"."文件夾編號是1晓殊,我新建的是2,其他下載的都是編號3以后的伤提,所以這里應(yīng)該是:
> m = i[3:548]
> for(n in m){
x.path=paste(n,list.files(n),sep='/')
file.copy(x.path,'./00000000000000000merge',recursive = T)}
復(fù)制后巫俺,進入你新建的文件夾里:
> setwd("/media/yanfang/FYWD/TCGA_data_analysis/TCGA_HNSCC/00000000000000000merge")
#再次查看有多少個文件在里面
> i <- list.files()
> i
現(xiàn)在所有的壓縮文件就都在你新建的文件夾里了:
然后要合并這些壓縮文件:
# 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
有人可能會疑惑,這不是還沒解壓縮么肿男?沒關(guān)系介汹,R可以直接讀取壓縮文件。運行后舶沛,View一下你的x_merge這個矩陣嘹承,這個矩陣就是合并了500多個壓縮文件的文件:
這里注意!H缤ァ叹卷!在參考的文章里,她的代碼是前5行是測序信息坪它,而我的矩陣是前2行和后3行是測序信息骤竹!所以我需要刪除的是第1,2行哟楷,和最后3行:
> x_reduce =x_merge[-(1:2),]
> x_reduce_2 =x_reduce[-(60483:60485),]
#上面我們看到第一列和行名重復(fù)了瘤载,刪掉
> x_reduce_3 =x_reduce_2[,-1]#刪除第一列
拿到了count矩陣,覺得哪里不對頭卖擅。鸣奔。。發(fā)現(xiàn)列名很奇怪嗎惩阶?樣品名都很奇怪挎狸,現(xiàn)在讓我們復(fù)習(xí)一下TCGA數(shù)據(jù)庫的樣品名是什么樣的:
(參考:TCGA數(shù)據(jù)庫中臨床樣品編號詳解(Barcode))
TCGA下載的數(shù)據(jù)編號怎么看?
一張網(wǎng)上很火的圖片:
TCGA:Project 項目名稱
02:組織來源代碼断楷。完整的組織來源代碼查詢可看這里:here
0001:科研參與者
01C:樣本類型锨匆,前面的數(shù)字1-9為腫瘤,10-29為正扯玻或癌旁樣本恐锣。字母代表質(zhì)量,A為佳舞痰,B次之(比如福爾馬林固定石蠟包埋組織)土榴,C更次之。一般用A响牛。
01D:組織部位玷禽,同屬于一個患者組織的不同部分的順序編號赫段,同一組織會分割為100-120mg的部分,分別使用矢赁。D為分析的分子類型糯笙。D是DNA的意思。還有其他對應(yīng)關(guān)系撩银,可看這里:here
0182:制板的順序给涕,值大表示制板越晚。即為去除batch effect時的batch依據(jù)蜒蕾。
01:測序或鑒定中心編碼.
怎么把我的樣品名也改成TCGA標(biāo)準(zhǔn)的命名法呢稠炬?
這里你還需要下載一個東西焕阿,在你最開始下載的頁面里咪啡,你的count是點擊Download下載的,這時你還需要點擊它左邊的“Metadata”暮屡,那里面儲存了和你的count對應(yīng)的各種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標(biāo)準(zhǔn)的樣品名稱賦給count矩陣?yán)锏牧忻?> 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")