使用GDC API查看和下載TCGA的數據
- 2019 年 12 月 19 日
- 筆記
API是應用程式編程介面,很多的網站都有對應的API,方便程式抓取數據,比如NCBI, EBI, KEGG等等,GDC也有對應的API, 可以方便的查詢和下載TCGA的數據,API的網址如下
https://gdc.cancer.gov/developers/gdc-application-programming-interface-api
API都有一個base url, 通過base url加上內置的指令,可以實現特定數據集的訪問和下載,GDC API的base url如下
https://api.gdc.cancer.gov/<endpoint> https://api.gdc.cancer.gov/legacy/<endpoint>
第一種訪問和操作GDC harmonized database, 第二種訪問和操作GDC legacy archive。endpoint是內置的指令,支援的指令如下所示

從功能上可以劃分為查詢,下載,提交數據三大塊,常用的的功能包括查詢和下載
1. 查詢
通過JSON這種格式進行數據交換,以files為例,以其對應的uuid為例進行查詢的用法如下
curl https://api.gdc.cancer.gov/files/5891556e-0b86-42bd-aa0e-a319471dc574
返回的數據如下

這種格式就是JSON, 可以和網站上的查詢結果比較一下,鏈接如下
https://portal.gdc.cancer.gov/files/5891556e-0b86-42bd-aa0e-a319471dc574

可以看到API返回的資訊中包含了網頁上提供的基本資訊。在實際使用中,更多的是按照某種條件進行檢索,相關的參數很多,這裡就不展開了。
2. 下載
通過download指定,可以根據文件的uuid進行下載,有GET和POST兩種方式。GET適用於同時下載幾個文件,POST適用於大批量下載。
以GET方式下載的用法如下
curl --remote-name --remote-header-name 'https://api.gdc.cancer.gov/data/5891556e-0b86-42bd-aa0e-a319471dc574'
如果有多個文件的uuid,用逗號連接,示意如下
curl --remote-name --remote-header-name 'https://api.gdc.cancer.gov/data/e3228020-1c54-4521-9182-1ea14c5dc0f7,18e1e38e-0f0a-4a0e-918f-08e6201ea140'
以POST方式下載需要主要準備一個文件,記錄要下載文件的uuid編號,該文件可以有兩種格式,第一種示意如下
ids=556e5e3f-0ab9-4b6c-aa62-c42f6a6cf20c&ids=e0de63e2-02f3-4309-9b24-69f4c24e85fc
假設該文件名稱為uuids, 下載的命令為
curl --remote-name --remote-header-name --request POST 'https://api.gdc.cancer.gov/data' --data @uuids
第二種示意如下

採用該文件進行下載的命令如下
curl --remote-name --remote-header-name --request POST --header 'Content-Type: application/json' --data @uuids 'https://api.gdc.cancer.gov/data'
以上只是GDC API的基本用法,更多用法請參考官方文檔,鏈接如下
https://docs.gdc.cancer.gov/API/Users_Guide/Getting_Started/
通過熟練使用API,可以實現程式自動化的下載TCGA數據,有很多TCGA數據下載的R包,就是通過調用API來實現對應的功能。

