如何从包含多个基于ID的基因组序列的Genbank文件中删除无效序列

时间:2019-06-26 14:28:04

标签: biopython dna-sequence genbank

我有一个约3 GB的Genbank文件,其中包含约20,000个细菌基因组序列的完整Genbank注释。我的目标是使用BioPython解析这些序列,并为非重复序列编写单独的fasta文件,如下所示:

from Bio import SeqIO
records = SeqIO.parse(r'C:\Users\aaa\aaa\file.gb', 'genbank')
for record in records:
    if seq_name not in organism_dict:
        with open(output_folder + seq_name, 'w') as handle:
            SeqIO.write(record, handle, 'fasta')

这对于前约2,000个序列非常有效,但随后到达页脚无效的条目,并产生错误消息ValueError:序列行格式错误的“标题> NCBI / ffsrv11-WWW错误500诊断”。

我设法找到了导致错误的序列,所以我想做的是从我的Genbank文件中删除它,然后手动将其下载为fasta文件。但是,由于大小原因,我无法在文本编辑器中打开文件,而且由于错误,我也无法解析文件,所以我想知道是否有人对如何删除基于Genbank ID的序列。我愿意接受非python选项。

先谢谢您

丹尼尔

1 个答案:

答案 0 :(得分:0)

尝试添加“尝试/例外”,其中“例外”将Record.ID写入单独的文件。如果尝试失败,它将不会写入,并且Except将收集Record.ID供以后下载。