最近在做KEGG富集时遇到一个问题:phytozome上的数据采用的注释为Locus tag,但是kobas3.0并不支持这一类型,如此需要进行转换。如果是常见的模式物种还好,在bioconductor中很多包和一些网站上都提供了转化,这里不赘述,需要的自行查找,或者直接看下文代码。
于是,就想到编写一个爬虫对数据进行转换,需要环境为python,并安装requests库,没有该库的用pip进行安装。首先需要将Locus tag转换为对应的NCBI地址,格式为https://www.ncbi.nlm.nih.gov/gene/?term=Locus tag,如赤桉的ICE1的Locus tag为EUGRSUZ_G01938,那么对应的地址就是https://www.ncbi.nlm.nih.gov/gene/?term=EUGRSUZ_G01938。这个用Excel就可以实现,公式为=“https://www.ncbi.nlm.nih.gov/gene/?term=”&A2,其中A2为存储Locus tag栏。
在爬虫运行目录提供用于存储地址的gene_url.txt,运行如下Python爬虫代码:
import requests
from requests.adapters import HTTPAdapter
s = requests.Session()
s.mount('http://', HTTPAdapter(max_retries=3))
s.mount('https://', HTTPAdapter(max_retries=3))
f = open("./gene_url.txt")
t = open("./gene_id.txt", 'w')
ids = ""
line = f.readline()
while line:
temp1 = line.strip('\n')
try:
response = requests.get(url=temp1)
start = response.text.find("Gene ID: ")#替换此处查找的文本可以实现Gene symbol、Gene type等转换
end = response.text.find(", updated on")
if start != -1 & end != -1:
gid = response.text[start + 9:end]
print(gid)
ids += gid + '\n'
except requests.exceptions.RequestException as e:
print(e)
line = f.readline()
t.write(ids)
f.close()
t.close()
最后转换好的gene id就会在当前目录下的gene_id.txt找到。
xizzy版权所有,转载请注明出处!
最后:如果想了解更多和生信或者精品咖啡有关的内容欢迎关注我的微信公众号:**生信咖啡**,更多精彩等你发现!
网友评论