首页 > 解决方案 > 如何从包含基于 ID 的多个基因组序列的 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: Sequence line mal-formed 'title>NCBI/ffsrv11 - WWW Error 500 Diagnostic'。

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

先感谢您,

丹尼尔

标签: biopythondna-sequencegenbank

解决方案


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


推荐阅读