2022-09-29 新版TCGA數(shù)據(jù)下載

參考:公眾號(hào) 果子學(xué)生信 https://mp.weixin.qq.com/s/rdFnq6jCMIjmrWI8A8fS5g

GDC網(wǎng)站

https://portal.gdc.cancer.gov/

點(diǎn)擊repository
點(diǎn)擊case
確定數(shù)據(jù)下載的組織
點(diǎn)擊file選擇下載數(shù)據(jù)的類型

接下來把數(shù)據(jù)選擇的數(shù)據(jù)加入到購物車,購物車?yán)锩鏀?shù)量會(huì)變成文件數(shù)目逗噩,當(dāng)前是1226

下載數(shù)據(jù)

此時(shí)點(diǎn)擊購物車出吹,就會(huì)進(jìn)入下載頁面,因?yàn)楫?dāng)前數(shù)據(jù)挺大的励负,不建議直接下載而是采用他推薦的GDC Data Transfer Tool來進(jìn)行而使用這個(gè)工具温亲,需要兩個(gè)文件棚壁,一個(gè)是Manifest,一個(gè)是metadata

這兩個(gè)文件栈虚,會(huì)根據(jù)下載時(shí)間的不同袖外,生成對(duì)應(yīng)日期的名稱
下載GDC Data Transfer Tool工具
解壓,放在同一個(gè)文件夾中

R下載數(shù)據(jù)

### 1.創(chuàng)建數(shù)據(jù)下載文件夾
if(!file.exists("rawdata")) dir.create("rawdata")

### 2.生成下載代碼
### 這個(gè)就是之前下載的manifest文件魂务,每個(gè)人的不一樣在刺,注意修改
manifest <- "gdc_manifest_20220929_023209.txt"
### 這個(gè)是下載的文件夾
rawdata <- "rawdata"
command <- sprintf("./gdc-client download -m %s -d %s",
                   manifest,
                   rawdata)
### 3.執(zhí)行下載操作
system(command = command)

這里我下載了3個(gè)小時(shí)逆害。。蚣驼。

整理數(shù)據(jù)

這時(shí)候所有數(shù)據(jù)都在rawdata這個(gè)文件夾中,總共有1226個(gè)文件夾相艇,每一個(gè)里面點(diǎn)開后有一個(gè)文件

看看這個(gè)文件(44beea06-28a7-490a-b6bb-4e023230e51c.rna_seq.augmented_star_gene_counts.tsv)的樣子

其中第一列 gene_id我們是需要的颖杏,第四列unstranded 就是傳統(tǒng)的counts 數(shù)據(jù),以前的TCGA數(shù)據(jù)只提供兩列坛芽。
其中第二列是轉(zhuǎn)換過后的基因名稱留储,第三列是基因類型,包括編碼和非編碼信息咙轩,這個(gè)可以保留一份用來做基因注釋
我們只需要第1列和第4列

1.把所有的tsv文件获讳,拷貝到新的文件夾data_in_one

#合并文件
if(!file.exists("data_in_one")) dir.create("data_in_one")
### 使用for循環(huán)來批量做,回顧for循環(huán)的要點(diǎn)
for (dirname in dir("rawdata/")){  
  ## 要查看的單個(gè)文件夾的絕對(duì)路徑
  mydir <- paste0(getwd(),"/rawdata/",dirname)
  ##找到對(duì)應(yīng)文件夾中的文件并提取名稱活喊,pattern表示模式丐膝,可以是正則表達(dá)式
  file <- list.files(mydir,pattern = "_counts")
  ## 當(dāng)前文件的絕對(duì)路徑是
  myfile <- paste0(mydir,"/",file)
  #復(fù)制這個(gè)文件到目的文件夾
  file.copy(myfile,"data_in_one")  
}

合并以后的文件都放在同一個(gè)文件夾

2.提取文件名稱和TCGAID 的對(duì)應(yīng)關(guān)系【metadta文件中】

#提取文件名稱和TCGAID 的對(duì)應(yīng)關(guān)系
metadata <- jsonlite::fromJSON("metadata.cart.2022-09-29.json")
library(dplyr)
metadata_id <- metadata %>% 
  dplyr::select(c(file_name,associated_entities)) 
metadata
metadataid
## 提取對(duì)應(yīng)的文件
naid_df <- data.frame()
for (i in 1:nrow(metadata)){
  naid_df[i,1] <- metadata_id$file_name[i]
  naid_df[i,2] <- metadata_id$associated_entities[i][[1]]$entity_submitter_id
}

colnames(naid_df) <- c("filename","TCGA_id")

得到的對(duì)應(yīng)關(guān)系如下,以后每一個(gè)文件都知道TCGA id了

3.批量讀取數(shù)據(jù)

##第三步钾菊,批量讀取數(shù)據(jù)
myfread <- function(files){
  data = data.table::fread(paste0("data_in_one/",files))
  data = data[-seq(1,4),]
  data = data$unstranded
}

files <- dir("data_in_one")
system.time(test <- myfread(files[1]))測試讀取一個(gè)文件的所需時(shí)間

system.time(f <- lapply(files,myfread))  #lapply批量讀取
expr_df <- as.data.frame(do.call(cbind,f)) #完成后是個(gè)列表帅矗,需要轉(zhuǎn)換為數(shù)據(jù)框

最終得到60660行,1226列的數(shù)據(jù)框煞烫,其中60660這個(gè)數(shù)字很重要浑此,代表的是當(dāng)前的基因是60660個(gè),而1226就是樣本數(shù)

當(dāng)前的數(shù)據(jù)是裸的滞详,沒有行凛俱,行應(yīng)該是基因,但是沒有料饥,列應(yīng)該是TCGA ID也沒有蒲犬,接下來添加一下。
先添加列名, 對(duì)應(yīng)關(guān)系之前已經(jīng)提取到了稀火,只是要限定以下行的順序暖哨,需要跟讀入的樣本順序一致

rownames(naid_df) <- naid_df[,1]
naid_df <- naid_df[files,]
colnames(expr_df) <- naid_df$TCGA_id
test=expr_df[1:20,1:20]

最后添加基因名稱,因?yàn)檫@些基因名稱和類型凰狞,在每一個(gè)樣本中都有篇裁,所以我們隨便讀取一個(gè)數(shù)據(jù),然后添加即可赡若。

gene_id <- data.table::fread(paste0("data_in_one/",files[1]))$gene_id
gene_id <- gene_id[-seq(1,4)]
expr_df <- cbind(gene_id=gene_id,expr_df)

順利完成达布,該數(shù)據(jù)格式,第一列是基因逾冬,后面都是樣本黍聂,轉(zhuǎn)錄組下游分析躺苦,無論是公共數(shù)據(jù),還是自測數(shù)據(jù)产还,都應(yīng)該獲取這樣的數(shù)據(jù)
總代碼·

### 1.從GDC下載counts數(shù)據(jù)
## https://portal.gdc.cancer.gov/repository
### 1.創(chuàng)建數(shù)據(jù)下載文件夾
if(!file.exists("rawdata")) dir.create("rawdata")

### 2.生成下載代碼
### 這個(gè)就是之前下載的manifest文件匹厘,每個(gè)人的不一樣,注意修改
manifest <- "gdc_manifest_20220929_023209.txt"
### 這個(gè)是下載的文件夾
rawdata <- "rawdata"
command <- sprintf("./gdc-client download -m %s -d %s",
                   manifest,
                   rawdata)
### 3.執(zhí)行下載操作
system(command = command)



#合并文件
if(!file.exists("data_in_one")) dir.create("data_in_one")
### 使用for循環(huán)來批量做脐区,回顧for循環(huán)的要點(diǎn)
for (dirname in dir("rawdata/")){  
  ## 要查看的單個(gè)文件夾的絕對(duì)路徑
  mydir <- paste0(getwd(),"/rawdata/",dirname)
  ##找到對(duì)應(yīng)文件夾中的文件并提取名稱愈诚,pattern表示模式,可以是正則表達(dá)式
  file <- list.files(mydir,pattern = "_counts")
  ## 當(dāng)前文件的絕對(duì)路徑是
  myfile <- paste0(mydir,"/",file)
  #復(fù)制這個(gè)文件到目的文件夾
  file.copy(myfile,"data_in_one")  
}


#提取文件名稱和TCGAID 的對(duì)應(yīng)關(guān)系
metadata <- jsonlite::fromJSON("metadata.cart.2022-09-29.json")
library(dplyr)
metadata_id <- metadata %>% 
  dplyr::select(c(file_name,associated_entities)) 


## 提取對(duì)應(yīng)的文件
naid_df <- data.frame()
for (i in 1:nrow(metadata)){
  naid_df[i,1] <- metadata_id$file_name[i]
  naid_df[i,2] <- metadata_id$associated_entities[i][[1]]$entity_submitter_id
}

colnames(naid_df) <- c("filename","TCGA_id")

##第三步牛隅,批量讀取數(shù)據(jù)
myfread <- function(files){
  data = data.table::fread(paste0("data_in_one/",files))
  data = data[-seq(1,4),]
  data = data$unstranded
}

files <- dir("data_in_one")
system.time(test <- myfread(files[1]))

system.time(f <- lapply(files,myfread))

expr_df <- as.data.frame(do.call(cbind,f))
test=expr_df[1:20,1:20]


rownames(naid_df) <- naid_df[,1]
naid_df <- naid_df[files,]
colnames(expr_df) <- naid_df$TCGA_id
test=expr_df[1:20,1:20]


gene_id <- data.table::fread(paste0("data_in_one/",files[1]))$gene_id
gene_id <- gene_id[-seq(1,4)]
expr_df <- cbind(gene_id=gene_id,expr_df)

save(expr_df,naid_df,file="exp.Rdata")
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末炕柔,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子媒佣,更是在濱河造成了極大的恐慌匕累,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件默伍,死亡現(xiàn)場離奇詭異欢嘿,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)巡验,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門际插,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人显设,你說我怎么就攤上這事框弛。” “怎么了捕捂?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵瑟枫,是天一觀的道長。 經(jīng)常有香客問我指攒,道長慷妙,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任允悦,我火速辦了婚禮膝擂,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘隙弛。我一直安慰自己架馋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布全闷。 她就那樣靜靜地躺著叉寂,像睡著了一般。 火紅的嫁衣襯著肌膚如雪总珠。 梳的紋絲不亂的頭發(fā)上屏鳍,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天勘纯,我揣著相機(jī)與錄音,去河邊找鬼钓瞭。 笑死驳遵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的降淮。 我是一名探鬼主播超埋,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼佳鳖!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起媒惕,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤系吩,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后妒蔚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體穿挨,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年肴盏,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了科盛。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡菜皂,死狀恐怖贞绵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情恍飘,我是刑警寧澤榨崩,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站章母,受9級(jí)特大地震影響母蛛,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜乳怎,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一彩郊、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蚪缀,春花似錦秫逝、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至哩盲,卻和暖如春前方,著一層夾襖步出監(jiān)牢的瞬間狈醉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國打工惠险, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留苗傅,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓班巩,卻偏偏與公主長得像渣慕,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子抱慌,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容