当前位置:   article > 正文

根据class获取值_根据关键字爬取GO注释

go号对应的class怎么找

为了查找某个研究领域的相关信息,生物学家往往要花费大量的时间。与此同时由于不同数据库之间的信息可能不同步或者术语不一样,这使得信息的检索更加的麻烦。如果让人来做还勉强能查,但是让机器来查询的话一切就会变的无章可循。Gene Ontology(GO)就是为了解决这种问题而发起的一个项目;每一个GO Term都是由7个数字标识这个Term编号,同时还有一个lable标识具体的生物学功能。每个Tern属于一个本体,在GO中有三个ontology它们分别是:

  • molecular function,
  • cellular component
  • biological process

今天要做的就是大批量的根据某个功能的关键字,搜索已经报导的基因对应的序列信息;从而进行Blast找到你所研究的物种中的同源基因。这里以爬取Ethylene关键字为例,分以下三个步骤搞:

  1. 根据关键字爬取GO编号信息
  2. 根据GO编号爬取对应的基因注释信息
  3. 根据基因注释信息爬取基因的序列信息

1.爬取GO编号信息

网页地址: http:// geneontology.org/

602a89311a35ddaad1267331eb65fb5d.png

在开发者模式下可用发现浏览器请求的API地址为

http:// golr.geneontology.org/s olr/select?defType=edismax&qt=standard&indent=on&wt=json&rows=10&start=0&fl=annotation_class,description,source,idspace,synonym,alternate_id,annotation_class_label,score,id&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&fq=document_category:%22ontology_class%22&fq=idspace:%22GO%22&fq=is_obsolete:%22false%22&facet.field=source&facet.field=idspace&facet.field=subset&facet.field=is_obsolete&q=Ethylene *&qf=annotation_class%5E3&qf=annotation_class_label_searchable%5E5.5&qf=description_searchable%5E1&qf=synonym_searchable%5E1&qf=alternate_id%5E1&packet=1&callback_type=search&json.wrf=jQuery214044957252147235494_1596787199447&_=1596787199448

1335a11dba86fcbdf7186df6c0c25884.png

接下来使用python中的urllib包向目标API地址发起GET请求,并且使用Json包将响应的数据解析成Dict对象;

这里对同一个URL进行了两次请求,主要是为了获取所有的响应数据;因为每次请求时,默认只响应10条数据

  1. response = urllib.request.urlopen(getGoItemUrl) # 发起get请求
  2. jsonData = json.loads(response.read().decode('utf-8')) # 解析成json数据
  3. # time.sleep(1) # 缓一缓
  4. # print(jsonData['response']['docs'])
  5. return jsonData['response']['docs'] # 得到GO item信息

2.爬取对应基因编号

有的GO term可能没有对应的基因注释信息,有的GO term可能存在注释信息不完整的情况,统一使用NA进行填充

  1. for item in GoItem:
  2. print("爬取GO编号:t"+item['id'])
  3. info = getGeneIdByGoItem(item['id'])
  4. GoInfo = "t".join([str(item[i]) for i in GoKeys]) # 获取Go item 描述信息
  5. if(len(info) == 0):
  6. geneMessage = "t".join(
  7. ['NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA', 'NA'])
  8. out.append(GoInfo+"t"+geneMessage+"n")
  9. else:
  10. for geneItem in info:
  11. geneMessage = []
  12. # 有不存在值的列,就输出NA信息
  13. for key in geneInfoKeys:
  14. try:
  15. geneMessage.append(geneItem[key])
  16. except KeyError:
  17. geneMessage.append("NA")

最终生成一个Txt文档;文档内包含GO Term的注释信息和对应的基因的注释信息

ab6ea86ad1002c1a0d49c5a3b6514c83.png

3.爬取基因序列信息

有了上一步的GO Term的注释信息后,我想得到植物中所有与乙烯相关的基因的序列信息用于Blast;来获得我所研究的物种中对应的同源基因的功能。

使用得到的基因编号和物种编号在NCBI中获得对应的gene序列信息,这里获得的序列都是正链上的序列,而不是有义链上的。

最终得到一个fasta序列文件

b255fc871adb02d950de722dea2705fe.png

4.脚本运行

当想要获取某一些感兴趣的基因序列信息时,只需要从第一个脚本生成的文件GOAnnotion.txt,截取对应的行到另一个文件,用作第二个脚本的输入文件

  1. ##获得感兴趣的GO 注释信息
  2. python GoItem2gene.py 关键字 GOAnnotion.txt
  3. ## 获得感兴趣物种、感兴趣GO的基因序列信息
  4. head 100 GOAnnotion.txt >interest_Annotion.txt
  5. python getSeqByID.py interest_Annotion.txt interest_Annotion.fasta

65b868b63d5365253d73dd1fd8a456f4.png
脚本地址: https:// github.com/BiocottonHub /zpliuCode/tree/8666815dfe1f14698596f160e236d9a6c5a042b7/GOTerm GoItem2gene.py: 根据关键字获取基因编号 getSeqByID.py:根据基因编号提取基因序列

参考

  1. 基因本体概念
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/720390
推荐阅读
相关标签
  

闽ICP备14008679号