gpt4 book ai didi

python - 在 Biopython 中捕获 Genbank 文件解析错误

转载 作者:太空宇宙 更新时间:2023-11-04 10:51:10 24 4
gpt4 key购买 nike

我已经使用 BioPython Entrez 模块按照 this post 的行下载了 genbank 文件列表。 .在随后解析这些文件时,我遇到了一个错误,因为我从 Entrez 下载的 genbank 文件是提供给基因组不完整的生物体的临时 RefSeq 的一部分(NZ_CM000913.1)。当我尝试读取此文件时,出现记录错误并且我的脚本停止。我正在尝试编写一个可以避免这些记录的函数。最简单的方法是按大小过滤记录,但我想知道如何更“bio-pythonically”地做到这一点——测试文件是否包含记录,如果不包含则排除。引发当前 ValueError 消息,但会停止脚本。

#the error message is something like this    
from Bio import SeqIO
gbkfile = 'NZ_CM000913.1'
SeqIO.read(open(gbkfile), 'gb')

File "/usr/lib64/python2.6/site-packages/Bio/SeqIO/__init__.py", line 605, in read
raise ValueError("No records found in handle")

对于我的循环,我可以使用这样的东西:

#filter by length
for gbk in gbklist:
if len(open(gbk).readlines()) < 50:
print 'short file: exclude'
else:
process_gbk(gbk)

但我想知道我是否可以从 BioPython 中捕获错误消息:

#generate GBK-file exception    
for gbk in gbklist:
try:
SeqIO.read(open(gbk),'gb')
process_gbk(gbk)
except BiopythonIO:
'this file is not a genbank file'
pass

最佳答案

您的建议快到位了!这是完成它 + 一些方便的津贴(阅读评论)

errorList = []                               # to store your erroneous files for later handling ;)

#generate GBK-file exception
for gbk in gbklist:
try:
SeqIO.read(open(gbk),'gb')
process_gbk(gbk)
except ValueError: # handles your ValueError
print(gbk+' is not a genbank file') # lets you know the file causing the error "live"
errorList.append(gbk) # logs the name of erroneous files in "errorList"
continue # skips straight to the next loop

关于python - 在 Biopython 中捕获 Genbank 文件解析错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13770335/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com