快速獲取功能相關(guān)基因

一個(gè)Python爬蟲,快捷批量爬取與感興趣功能有關(guān)的基因

轉(zhuǎn)錄組數(shù)據(jù)分析中,老師會(huì)碰到這樣的問題:

(1)這么多差異表達(dá)基因中,哪些基因參與了特定的功能,我如何尋找與預(yù)期功能有關(guān)的基因逊谋?

(2)我的測(cè)序物種比較新,數(shù)據(jù)庫中信息比較缺乏土铺,難以通過已知數(shù)據(jù)尋找目標(biāo)功能基因涣狗。

這個(gè)時(shí)候,如果一個(gè)個(gè)去設(shè)法查詢每個(gè)基因的功能舒憾,工作量可能是非常大的镀钓。那么,有沒有快捷的方法呢镀迂?答案是肯定有丁溅,比如可以轉(zhuǎn)換下思路,首先根據(jù)預(yù)期的功能探遵,在GO窟赏、KEGG等數(shù)據(jù)庫中檢索基因功能分類,并進(jìn)而在搜索到的功能條目中細(xì)化基因箱季。這樣涯穷,就可以獲得了與預(yù)期功能有關(guān)的一個(gè)基因集。隨后藏雏,再根據(jù)感興趣的差異基因名稱拷况,在該基因集中查找,如果匹配到相似的,就能夠明確差異基因的功能了赚瘦。

當(dāng)然粟誓,在數(shù)據(jù)庫中手動(dòng)檢索功能分類并匹配基因的過程,可能仍然略微繁瑣起意。如果能夠?qū)⑦@個(gè)過程交給計(jì)算機(jī)自動(dòng)實(shí)現(xiàn)鹰服,那該多么節(jié)省時(shí)間。為此揽咕,我們提供了一個(gè)Python爬蟲悲酷,幫助您在GO數(shù)據(jù)庫中自動(dòng)搜索并下載與其功能的相關(guān)基因。

就從這個(gè)思想出發(fā)亲善,本文以探討“氧化應(yīng)激”相關(guān)功能的基因?yàn)槔枰祝檀蠹胰绾慰焖賹?shí)現(xiàn)。

1 搜索關(guān)鍵GO功能條目

首先進(jìn)入GO網(wǎng)站(http://geneontology.org/)逗爹,輸入想知道的功能名稱。

例如我想關(guān)注和“氧化應(yīng)激”相關(guān)的功能嚎于,輸入“Oxidative stress”查詢掘而。

結(jié)果中都是以“Oxidative stress”為關(guān)鍵詞找到的GO條目,它們都是涉及“氧化應(yīng)激”相關(guān)的功能于购。接下來將這些GO條目下載下來袍睡,點(diǎn)擊右上方“Custom”可獲取GO條目列表。下載時(shí)肋僧,可以視情況過濾一些不重要的斑胜,選擇要下載的打勾,如果不手動(dòng)選擇將默認(rèn)下載全部搜索結(jié)果嫌吠。

該列表中的GO名稱可手動(dòng)粘貼到一個(gè)文本文檔中止潘,例如命名為“Oxidative_stress.txt”

2 爬取GO條目涉及的基因辫诅、物種等

接下來我們用Python編寫了一個(gè)爬蟲凭戴,將根據(jù)上述的GO條目名稱列表爬取一系列關(guān)鍵信息,例如這些GO條目中涉及的基因炕矮、物種等么夫。

使用時(shí),只需修改最開始的“data”和“name”中的項(xiàng)即可肤视〉祷荆“data”中為搜索并下載的GO條目名稱列表,可以一次提供多個(gè)文件邢滑,中間以逗號(hào)分隔腐螟。“name”則對(duì)應(yīng)了“data”中各文件代表的功能名稱,用作輸出文件名稱遭垛。

如下示例尼桶,對(duì)于上述GO條目名稱列表文件,修改“data = ['Oxidative_stress.txt']”和“name = ['Oxidative_stress']”后锯仪,在Python中執(zhí)行即可泵督。

#!/usr/bin/Python3.6
# -*- coding: utf-8 -*-
?
import os
import urllib
import urllib.request
?
#GO列表文件名稱,可以一次提供多個(gè)文件庶喜,依次在列表中添加
#data = ['Reactive Oxygen.txt', 'Gene Expression.txt']
#GO搜索關(guān)鍵詞名稱小腊,依次在列表中添加,和上述順序?qū)?yīng)
#name = ['Reactive Oxygen', 'Gene Expression']
?
data = ['Oxidative_stress.txt']
name = ['Oxidative_stress']
?
for i in data:
  i1 = name[data.index(i)]
  i2 = '_'.join(i1.split())
  os.system(f'mkdir -p {i2}_go')
  dat_input = open(i, 'r')
  dat_output = open(f'{i2}.go.txt', 'w')
  for line in dat_input:
    line = line.strip().split('\t')
    url = f"http://golr-aux.geneontology.io/solr/select?defType=edismax&qt=standard&indent=on&wt=csv&rows=100000&start=0&fl=bioentity_label,bioentity,bioentity_name,qualifier,annotation_class,annotation_extension_json,assigned_by,taxon,evidence_type,evidence_with,panther_family,type,bioentity_isoform,reference,date&facet=true&facet.mincount=1&facet.sort=count&json.nl=arrarr&facet.limit=25&hl=true&hl.simple.pre=%3Cem%20class=%22hilite%22%3E&hl.snippets=1000&csv.encapsulator=&csv.separator=%09&csv.header=false&csv.mv.separator=%7C&fq=document_category:%22annotation%22&fq=regulates_closure:%22{line[0]}%22&facet.field=aspect&facet.field=taxon_subset_closure_label&facet.field=type&facet.field=evidence_subset_closure_label&facet.field=regulates_closure_label&facet.field=annotation_class_label&facet.field=qualifier&facet.field=annotation_extension_class_closure_label&facet.field=assigned_by&facet.field=panther_family_label&q=*:*"
    html = urllib.request.urlopen(url).read().decode('utf-8').strip()
?
    os.system(f'mkdir -p {i2}_go/{line[0]}')
    tmp_file = open(f'{i2}_go/{line[0]}/go.txt', 'w')
    print(html, file = tmp_file)
    tmp_file.close()
?
    tmp_file = open(f'{i2}_go/{line[0]}/go.txt', 'r')
    for line1 in tmp_file:
      print(f'{i1}\t{line[0]}\t{line[1]}\t{line1.strip()}', file = dat_output)
    tmp_file.close()
?
  dat_input.close()
  dat_output.close()

Python腳本執(zhí)行后久窟,將自動(dòng)根據(jù)“Oxidative_stress.txt”中提到的GO條目的id秩冈,在GO數(shù)據(jù)庫中爬取相關(guān)的基因名稱等信息。對(duì)于上述示例斥扛,結(jié)果最后默認(rèn)生成在當(dāng)前路徑下入问,獲得文件“Oxidative_stress_go”和“Oxidative_stress.go.txt”

文件“Oxidative_stress.go.txt”中稀颁,包含了搜索GO條目時(shí)用的關(guān)鍵詞芬失、檢索到的GO條目名稱、這些GO條目中的基因匾灶、物種棱烂、以及子GO項(xiàng)等信息。這個(gè)文件是整合后的阶女,包含了一開始搜索下載的“Oxidative_stress.txt”中提到的所有GO條目颊糜。如果期望分開查看,可點(diǎn)開另一結(jié)果文件夾“Oxidative_stress_go”秃踩,按不同的GO條目分開整理的基因衬鱼、物種、以及子GO項(xiàng)等信息憔杨。

3 查詢基因

這樣馁启,我們一開始期望的,尋找與“氧化應(yīng)激”相關(guān)的功能基因的目的就實(shí)現(xiàn)了芍秆。

繼續(xù)分析惯疙,只需要根據(jù)已知的物種分類,挑選出對(duì)應(yīng)的物種出來就可以了妖啥。例如霉颠,人類物種在NCBI中的分類登記號(hào)為“9606”,因此如果想關(guān)注人類物種中與“氧化應(yīng)激”相關(guān)的基因荆虱,只需要匹配“NCBITaxon:9606”就可以了蒿偎。

以及如果做了RNA-seq朽们,找到了一些重要的差異表達(dá)基因,也可根據(jù)基因名稱在該文件中進(jìn)行匹配诉位,查看哪些重要的差異基因參與了“氧化應(yīng)激”有關(guān)的功能骑脱。例如繼續(xù),文獻(xiàn)中已經(jīng)報(bào)道了蛋白“SOD”與氧化應(yīng)激有關(guān)苍糠,RNA-seq的差異基因中也包含它叁丧,因此我們?cè)谶@里查詢驗(yàn)證一下“SOD”相關(guān)的基因。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末岳瞭,一起剝皮案震驚了整個(gè)濱河市拥娄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌瞳筏,老刑警劉巖稚瘾,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異姚炕,居然都是意外死亡摊欠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門柱宦,熙熙樓的掌柜王于貴愁眉苦臉地迎上來些椒,“玉大人,你說我怎么就攤上這事捷沸√粒” “怎么了狐史?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵痒给,是天一觀的道長。 經(jīng)常有香客問我骏全,道長苍柏,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任姜贡,我火速辦了婚禮试吁,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘楼咳。我一直安慰自己熄捍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布母怜。 她就那樣靜靜地躺著余耽,像睡著了一般。 火紅的嫁衣襯著肌膚如雪苹熏。 梳的紋絲不亂的頭發(fā)上碟贾,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天币喧,我揣著相機(jī)與錄音,去河邊找鬼袱耽。 笑死杀餐,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的朱巨。 我是一名探鬼主播史翘,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼蔬崩!你這毒婦竟也來了恶座?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤沥阳,失蹤者是張志新(化名)和其女友劉穎跨琳,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體桐罕,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡脉让,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了功炮。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溅潜。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖薪伏,靈堂內(nèi)的尸體忽然破棺而出滚澜,到底是詐尸還是另有隱情,我是刑警寧澤嫁怀,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布设捐,位于F島的核電站,受9級(jí)特大地震影響塘淑,放射性物質(zhì)發(fā)生泄漏萝招。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一存捺、第九天 我趴在偏房一處隱蔽的房頂上張望槐沼。 院中可真熱鬧,春花似錦捌治、人聲如沸岗钩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽兼吓。三九已至,卻和暖如春构韵,著一層夾襖步出監(jiān)牢的瞬間周蹭,已是汗流浹背趋艘。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留凶朗,地道東北人瓷胧。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像棚愤,于是被迫代替她去往敵國和親搓萧。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

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