我编写了一个脚本,它使用GenBank文件和Biopython从GBK文件的序列部分获取给定基因的序列,我的同事在他们的工作中使用该序列。
我们现在在一个新的数据集上遇到了一些问题,结果是下载的GBK文件没有包含序列(从NCBI的GenBank网站下载时很容易发生这种情况)。Biopython没有抛出错误,而是在使用record.seq[start:end]时返回很长的Ns序列。从一开始就抓住这个问题的最简单的方法是用错误消息停止脚本吗?
发布于 2014-09-01 11:13:29
对,我找到了办法。如果我计算序列中的Ns,并检查是否有长序列那么多,我知道序列丢失了:
import sys
from Bio import SeqIO
for seq_record in SeqIO.parse("sequence.gb", "genbank"):
sequence = seq_record.seq
if len(sequence) == sequence.count("N"):
sys.exit("There seems to be no sequence in your GenBank file!")我更喜欢检查序列类型的解决方案,因为空序列是Bio.Seq.UnknownSeq,而不是真实序列的Bio.Seq.Seq,如果有人能在这个方向上提出建议,我会很感激。
更新
@xbello让我再次尝试检查序列类型,现在也起作用了:
import sys, Bio
from Bio import SeqIO
for seq_record in SeqIO.parse("sequence.gb", "genbank"):
sequence = seq_record.seq
if isinstance(sequence, Bio.Seq.UnknownSeq):
sys.exit("There seems to be no sequence in your GenBank file!")https://stackoverflow.com/questions/25551480
复制相似问题