使用REST API批量下載ENCODE數(shù)據(jù)

本篇主要內(nèi)容

本篇主要介紹兩種方法稽煤,搜索并批量下載ENCODE數(shù)據(jù)徘层。

方法一:在頁面中搜索并獲取下載地址

  1. 進(jìn)入ENCODE portal主頁:https://www.encodeproject.org/孵淘。

  2. 點(diǎn)擊matrix吗讶,在搜索框搜索缸剪。比如“ctcf chip-seq k562” 。同時(shí)可以點(diǎn)擊頁面左方導(dǎo)航欄進(jìn)行過濾息楔。


  3. 點(diǎn)擊切換到列表模式。


  1. 點(diǎn)擊頁面中的Download扒披,下載一個(gè)名為files.txt的文件值依。這個(gè)文件的第一行是頁面中所有文件的metadata。從第二行開始就是下載鏈接了碟案。使用wget或者curl可以直接下載愿险。


方法二:寫代碼搜索后批量下載

可以發(fā)現(xiàn)方法一中的files.txt的URL有相同的模式(BASE_URL + QUERY)。
BASE_URL= 'https://www.encodeproject.org'
QUERY = '/files/[accession number]/@@download/[accession number].[format]'

那么對于一個(gè)Experiment价说,我們?nèi)绾潍@取所有原始文件和結(jié)果文件(fastq辆亏,bam,bed等)的下載地址(QUERY)呢鳖目?
舉例來說扮叨,我們點(diǎn)擊方法一中搜索得到第一個(gè)實(shí)驗(yàn)(Experiment),accession number為ENCSR000BNK疑苔,
可以通過在URL后面加上?format=json查看這個(gè)實(shí)驗(yàn)的所有metadata(JSON格式)甫匹,頁面地址為
https://www.encodeproject.org/experiments/ENCSR000BNK/?format=json

我們需要的下載鏈接(QUERY),就是其中的一個(gè)名為href的metadata惦费。


寫代碼搜索下載的實(shí)質(zhì)就是通過RESTful API同ENCODE的metadata數(shù)據(jù)庫交互兵迅,取得我們需要的metadata(以JSON的格式),然后獲取文件下載地址“href”薪贫。

直接上代碼恍箭,使用上述的ENCSR000BNK為例:

import requests, json

# 要求服務(wù)器返回JSON格式數(shù)據(jù)
HEADERS = {'accept': 'application/json'}

# BASE_URL是通用前綴,QUERY是定制的查詢
# type=file 查詢的是file類型的對象
# file_format=bed 指定下載文件內(nèi)容
# dataset=/experiments/ENCSR000BNK/ 指定下載的Experiment accession number
# limit=all 不加這個(gè)參數(shù)只能返回前25個(gè)結(jié)果
# frame=object 獲取object的全部metadata
BASE_URL = 'https://www.encodedcc.org/search/?'
QUERY ='type=file&dataset=/experiments/ENCSR000BNK/
                &file_format=bed&limit=all&frame=object'

# 用GET命令向服務(wù)器請求結(jié)果
response = requests.get(BASE_URL+QUERY, headers=HEADERS)

# 將JSON格式轉(zhuǎn)換成python的字典dict格式瞧省。response_json_dict儲存所有的metadata
response_json_dict = response.json()

# 打印查看結(jié)果
print(json.dumps(response_json_dict, indent=4, separators=(',', ': ')))

# 定義下載函數(shù)
def download_file(url):
    local_filename = url.split('/')[-1]
    r = requests.get(url, stream=True)
    with open(local_filename, 'wb') as f:
        for chunk in r.iter_content(chunk_size=1024):
            if chunk:
                f.write(chunk)
                f.flush()
    return local_filename

# 返回href信息并下載
for file_dict in response_json_dict['@graph']:
    print(file_dict['href'])
    fn = download_file(FILE_URL+file_dict['href'])
# /files/ENCFF002CLT/@@download/ENCFF002CLT.bed.gz
# /files/ENCFF653WEF/@@download/ENCFF653WEF.bed.gz
# /files/ENCFF678TFE/@@download/ENCFF678TFE.bed.gz
# /files/ENCFF001UJN/@@download/ENCFF001UJN.bed.gz
# /files/ENCFF001UJO/@@download/ENCFF001UJO.bed.gz
# /files/ENCFF081QMM/@@download/ENCFF081QMM.bed.gz
# /files/ENCFF036DBK/@@download/ENCFF036DBK.bed.gz
# /files/ENCFF943BRX/@@download/ENCFF943BRX.bed.gz

這樣文件就下載到本地了扯夭。

參考信息:
ENCODE REST API:https://www.encodeproject.org/help/rest-api/
ENCODE DCC github:https://github.com/ENCODE-DCC

注:

這是一個(gè)包含四篇文章的小專欄鳍贾,內(nèi)容分別為:

  1. 介紹ENCODE計(jì)劃的數(shù)據(jù)體系(data model)
  2. 批量下載ENCODE portal的數(shù)據(jù)(附示例代碼)
  3. 學(xué)習(xí)ENCODE的官方數(shù)據(jù)處理流程(pipeline)(附代碼倉庫列表)
  4. ENCODE項(xiàng)目數(shù)據(jù)分析培訓(xùn)課程的資源(附下載鏈接)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市交洗,隨后出現(xiàn)的幾起案子骑科,更是在濱河造成了極大的恐慌,老刑警劉巖构拳,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咆爽,死亡現(xiàn)場離奇詭異,居然都是意外死亡置森,警方通過查閱死者的電腦和手機(jī)斗埂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來凫海,“玉大人呛凶,你說我怎么就攤上這事⌒刑埃” “怎么了漾稀?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長建瘫。 經(jīng)常有香客問我县好,道長,這世上最難降的妖魔是什么暖混? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮翁授,結(jié)果婚禮上拣播,老公的妹妹穿的比我還像新娘。我一直安慰自己收擦,他們只是感情好贮配,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著塞赂,像睡著了一般泪勒。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上宴猾,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天圆存,我揣著相機(jī)與錄音,去河邊找鬼仇哆。 笑死沦辙,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的讹剔。 我是一名探鬼主播油讯,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼详民,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了陌兑?” 一聲冷哼從身側(cè)響起沈跨,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎兔综,沒想到半個(gè)月后饿凛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡邻奠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年笤喳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碌宴。...
    茶點(diǎn)故事閱讀 38,117評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡杀狡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出贰镣,到底是詐尸還是另有隱情呜象,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布碑隆,位于F島的核電站恭陡,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏上煤。R本人自食惡果不足惜休玩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劫狠。 院中可真熱鬧拴疤,春花似錦、人聲如沸独泞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽懦砂。三九已至蜒犯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間荞膘,已是汗流浹背罚随。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留衫画,地道東北人毫炉。 一個(gè)月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像削罩,于是被迫代替她去往敵國和親瞄勾。 傳聞我的和親對象是個(gè)殘疾皇子费奸,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評論 2 345

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

  • # 一度蜜v3.0協(xié)議 --- # 交互協(xié)議 [TOC] ## 協(xié)議說明 ### 請求參數(shù) 下表列出了v3.0版協(xié)...
    c5e350bc5b40閱讀 640評論 0 0
  • 第一次參加志愿者活動,懷揣著一種迷茫而又充滿著希望的心情进陡。 我的第一次志愿活動是去關(guān)愛心智障礙的“兒童”愿阐。呵呵,本...
    背起紅苕達(dá)撲爬_苕倒閱讀 377評論 0 1
  • 放下瑣事趾疚,把心放飛 花兒樹枝缨历,竊竊私語 心中期盼,你在多好 胡思亂想糙麦,庸人自擾 石頭大樹辛孵,互相傾訴 幻想此時(shí),你在...
    金書js閱讀 366評論 2 1
  • 我們經(jīng)常從服務(wù)器后臺拿到時(shí)間戳的時(shí)間赡磅,以下代碼可以實(shí)現(xiàn)將時(shí)間戳轉(zhuǎn)為可讀的時(shí)間格式魄缚。 今天在做一個(gè)接口的時(shí)候,被要求...
    QinChBeSt閱讀 1,970評論 1 4