我一直在 Genbank 上看到警告说他们正在逐步淘汰 GI 编号,并保存了许多 fasta 文件,我以以下格式编辑了标题:
>SomeText_ginumber
我什至不知道从哪里开始,但有没有一种方法,最好是使用 python,我可以从 NCBI 获取每个 gi 的相应登录号,并输出一个带有如下标题的文件:
>SomeText_accessionnumber
这是文件格式的另一个示例:
>Desulfovibrio_fructosivorans_ferredoxin_492837709
MTKSVAPTVTIDGKVVPIEGERNLLELIRKVRIDLPTFCYHSELSVYGACRLCLVEVKNRGIMGAC
>Oxalobacteraceae_bacterium_AB_14_hypothetical_protein_522195384
MIKLTVNGIPVEVDEGATYLDAANKAGVHIPTLCYHPRFRSHAVCRMCLVHVAGSSRPQAACIGKA
编辑/更新:
from Bio import Entrez
from time import sleep
import sys
import re
Entrez.email = ''
seqs = open(sys.argv[1],"r")
for line in seqs:
if line.startswith('>'):
gi = re.findall("\d{5,}",line)
matches = len(gi)
#print(matches)
if matches < 2:
if gi:
handle = Entrez.efetch(db="nucleotide", id=gi, retmode="xml")
records = Entrez.read(handle)
print(line[0:line.rfind('_') + 1] + records[0]['GBSeq_primary-accession'])
sleep(1)
elif matches >= 2:
print("Error - More than one ginumber in header!")
break
else:
seq=line.rstrip()
print(seq)
else:
seq1=line.rstrip()
print(seq1)