3. TCGA讀取數(shù)據(jù)就是第一個大困難

前期文章:
1. 在TCGA中找到并下載意向數(shù)據(jù)
2. TCGA: 如果不了解數(shù)據(jù),何以讀取數(shù)據(jù)?

前言

說起來前面真的有點犯傻,在讀取metaData和clinical之后,個人非常想要快點把表達量數(shù)據(jù)也讀取出來,于是在這兩個data里面找了半天也沒找到表達量counts,然后就放。。。放棄了。今天重新打開之后注意到一個叫做raw data的文件夾,等下?這不就是我之前下載的1222個數(shù)據(jù)嗎!前面還信誓旦旦的寫了2. TCGA: 如果不了解數(shù)據(jù),何以讀取數(shù)據(jù)?,現(xiàn)在就是活生生的例子,我果然不懂數(shù)據(jù),于是讀了個寂寞。

1. 數(shù)據(jù)到底在哪兒

數(shù)據(jù)存在raw data文件夾下,可以看到每個樣本都有獨立的文件夾,而文件夾內(nèi)只有一個.gz文件。

raw data

2. 數(shù)據(jù)長什么樣

那么我們該檢查一下.gz文件內(nèi)的data長什么樣,在windows中我們無法使用已有的軟件打開.gz文件,于是我們在該文件下右鍵調(diào)用Git Bash Here

image.png

調(diào)用Git Bash Here之后,使用代碼打開文件泳衣查閱,這里我的代碼是

zcat e30e547e-eeff-4a1f-829b-b6ec9e79f02a.htseq.counts.gz | less
## 使用less發(fā)現(xiàn)內(nèi)容太多,所以更改為head和tail檢查數(shù)據(jù)表頭和結(jié)尾。
zcat e30e547e-eeff-4a1f-829b-b6ec9e79f02a.htseq.counts.gz | head
zcat e30e547e-eeff-4a1f-829b-b6ec9e79f02a.htseq.counts.gz | tail

數(shù)據(jù)查閱結(jié)果如下,我們發(fā)現(xiàn)數(shù)據(jù)沒有表頭,第一列是ensemble ID,且已經(jīng)按照ensemble ID依次遞增排序的,對應的第二列則為表達量counts,表格結(jié)束后有幾句描述的話語,這應該不是我們想要讀到數(shù)據(jù)框內(nèi)的內(nèi)容。

image.png

3. 收集文件名用以作為數(shù)據(jù)框的表頭

檢查目前我們擁有的所有文件,使用代碼dir()列出當前文件夾下所有文件的名字。結(jié)合我們前面了解到的情況,每個樣本有單獨的文件夾,因此我們通過代碼dir()只能看到文件夾的名字,而真正文件的名字還是沒法看到,為此我們最好把所有的.gz文件移動到同一個文件夾下面,這里我是在Git Bash Here中使用代碼cp */*.gz ./

image.png

在各種翻閱數(shù)據(jù)后得知,文件名是file_name (例如:00a47e69-ef6a-4be9-827d-d48609859a7e.htseq.counts.gz),而TCGA樣本名叫做associated_entities(例如:aliquot, TCGA-AR-A1AS-01A-11R-A12P-07, e7b64cc3-9b2b-4938-9896-84b640d1586f, 7d681cc6-689d-41c8-9e84-e13733089ec9)。因此我們需要整理出一個file_name和TCGA樣本名的表格。

metadata<- fromJSON( file = "metadata.cart.2020-10-08.json", 
                     method = "C", 
                     unexpected.escape = "error", 
                     simplify = TRUE ) 
# 使用dplyr的select()函數(shù)
# select() picks variables based on their names.
library(dplyr)
metadata_id <- metadata %>% 
  dplyr::select(c(file_name,associated_entities)) 
# 使用了管道符%>%
metadata_id

可以看到這個表格仍然較為初步,因為第二列并不是最終的TCGA ID。通過搜索我們可知TCGA ID一般長這樣:
TCGA_ID

所以我們檢查metadata_id中哪一部分可以提取出TCGA ID

class(metadata_id[,2])
class(metadata_id[,2][1])
## 檢查第二列數(shù)據(jù)類型,發(fā)現(xiàn)為list中還包含著list
metadata_id[,2][[1]]$entity_submitter_id
## 通過各種檢查后發(fā)現(xiàn)entity_submitter_id是我們所要查找的TCGA ID
id_df <- data.frame() # 創(chuàng)建一個空的數(shù)據(jù)框
# 使用for循環(huán),將metadata_id中第一列作為數(shù)據(jù)框id_df的第一列;# metadata_id第二列的entity_submitter_id作為數(shù)據(jù)框id_df的第二列。
image.png

4. 讀取數(shù)據(jù)

自己寫代碼很復雜,推薦使用TCGAbiolinks完成。困了,下次接著寫。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容