下載TCGA 表達數據并對照表型數據拿到表達矩陣

下載TCGA 表達數據并對照表型數據拿到表達矩陣

文章看得多的小伙伴都知道TCGA數據庫,大多研究者在文章里都利用過TCGA的數據來驗證他們的數據分析結果,所以TCGA數據的下載和分析,作為一名生信人員也必會,雖然我也下過,但是每次都忘記自己之前怎么下,都得重新研究,所以這次記下來和有需要的小伙伴一起分享~

TCGA (The cancer genome atlas, 癌癥基因組圖譜)(https://portal.gdc.cancer.gov), 由美國National Cancer Institute(NCI) 和 National Human Genome Research Institute(NHGRI) 于2006年聯合啟動的項目,目前TCGA已經收錄了各種人類癌癥包括每個癌癥亞型在內的臨床數據,基因組,轉錄組,甲基化等數據,是癌癥研究者驗證數據的重要數據來源。

官網會由于國內網問題,需要耐心等加載,主頁如圖1所示

圖 1
  1. 主要按project 來尋找數據

  2. 主要按樣本的實驗信息和臨床信息來找尋數據

  3. 網頁分析功能

  4. 整合樣本臨床信息和樣本數據信息來篩選數據

  5. 按樣本的組織類型查詢數據點擊后與2的頁面一致

下載manifest 文件

示例帶大家一起下載下腎癌的表達矩陣選擇標準化后的FPKM表達矩陣,其它類似的數據下載類似,點擊‘Repository’ 進入圖2

圖 2
  1. Files 選擇 樣本得數據類型

  2. 選擇樣本的臨床特征

  3. 下載選擇好的manifast,利用此mnifast 為后續數據下載做準備,此案例演示下載kidney 的表達矩陣,數據為標準化的FPKM 值,樣本包括Kidney cancer 的 KIRC 和KIRP

下載manifest 選中樣本的元數據

下載manifest 選中樣本的原數據,一般包括樣本信息和實驗測序樣本編號的信息,在剛才的選擇頁面上點擊如圖3

圖 3

先把選好的樣本添加到 Cart,然后下載metadata,如圖4

圖 4

讀入json 在R中可以看到,元數據中有它的文件名,如圖5

圖 5

數據下載工具——gdc-client的下載

數據的下載要利用gdc-client,

下載地址 https://gdc.cancer.gov/access-data/gdc-data-transfer-tool

下載過程看圖6

圖 6

給大家演示的是在Windows 上的,下載后解壓,配置環境變量后就可以使用了,如圖7,8

圖 7
圖 8

現在指定剛才從TCGA 下載的 manifest 文件開始下載文件,下載在當前路徑下,提前進入數據下載目錄:

gdc-client download -m gdc_manifest.2021-03-16_kidney.txt

同樣也是有時網不好會Connection error,需要多試幾次,等數據下載好就可以了

合并所有樣本數據

下載好的文件是長這樣的,如圖9,10,也就是一個樣本在一個文件夾,一個文件夾有一個txt文件,二列數據,整理起來要是不用代碼,得發瘋,下面利用代碼R,就可以自動合并樣本得到所有樣本的表達矩陣

圖 9
圖 10

圖 10

利用代碼實現自動讀取每個文件夾下的下載數據

setwd('D:/bioTree/800-emt-m6a/')
# count_files = dir("kidney_fpkm/",pattern = "*.htseq.counts.gz$",recursive = T)
# 1. kidney cancer 表達數據的整理
fpkm_files = dir("kidney_KIRC_KIRP/",pattern = "*.FPKM.txt.gz$",recursive = T)
ex = function(x){
  result <- read.table(file.path("kidney_KIRC_KIRP/",x),row.names = 1,sep = "\t")
  return(result)
}
exp = lapply(fpkm_files,ex)
exp <- do.call(cbind,exp)
dim(exp)

把樣本數據對應到元數據中的樣本名

上一步得到的 exp 是沒有樣本列名,需要讀入meta 信息,利用樣本合并的文件順序來到元數據中匹配樣本名,把樣本ID 重新作為列名

meta <- jsonlite::fromJSON("metadata.cart.2021-03-18_KIRP_FPKM.json")
colnames(meta)
ids <- meta$associated_entities;class(ids)
ids[[1]]
class(ids[[1]][,1])
ID = sapply(ids,function(x){x[,1]}) ## 文件id
file2id = data.frame(file_name = meta$file_name,
 ID = ID)
head(file2id$file_name)
head(fpkm_files)
fpkm_files2 = stringr::str_split(fpkm_files,"/",simplify = T)[,2]
fpkm_files2[1] %in% file2id$file_name
file2id = file2id[match(fpkm_files2,file2id$file_name),]
colnames(exp) = file2id$ID
exp[1:4,1:4]
dim(exp)

得到的矩陣如下

根據樣本ID 區分樣本是癌癥還是對照

Barcode 含義介紹

看樣本類型主要看Sample 類的編碼:


詳細介紹參見官網

https://gdc.cancer.gov/resources-tcga-users/tcga-code-tables/

接下來對表達矩陣進行樣本組的區分就可以進行下游分析了,不花錢的驗證數據就到手了~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容