我在使用python脚本下载文本文件中多个登录号的Fasta序列时遇到一些困难。我可以为单个登录号执行此操作,例如:

import sys
from Bio import Entrez
Entrez.email = "[email protected]"
handle = Entrez.efetch(db="protein", id="EAS03220", rettype="fasta")
print(handle.read())


但是,当我尝试将其作为列表文件(请参见下文)时,就会出现错误。

import sys
from Bio import Entrez
Entrez.email = "[email protected]"

accessions = []
for line in open(sys.argv[1],"r"):
    line = line.strip()
    accessions.append(line)

for num in accessions:
    handle = Entrez.efetch(db="protein", id="num", rettype="fasta")
    print(handle.read())


这是我的输入文件外观的示例:

EAS06781
EAS07087
EAS07113
EAS07200
EAS07226
EAS07230


我敢肯定解决方案很简单,但是我已经阅读了数小时的论坛,ncbi帮助页面和python初学者书籍,却一无所获!提前致谢。

最佳答案

您将num作为string而不是作为变量传递。
尝试删除引号,它应该可以工作。

handle = Entrez.efetch(db="protein", id=num, rettype="fasta")

关于python - 如何从python中的多个登录号的ncbi中返回相应的fasta蛋白序列?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37302177/

10-12 19:06