biopython - 如何从包含基于 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 选项持开放态度。
先感谢您,
丹尼尔
解决方案
尝试添加一个 Try/Except,其中 except 将 Record.ID 写入单独的文件。如果 Try 失败,它将不会写入,并且 except 将收集 Record.ID 以供以后下载。
推荐阅读
- c++ - 如何在使用 ItemType 的模板类时将新节点插入二叉树 C++。(我是 C++ 新手)
- vue.js - 如何在 Vue main.js 中导入 jspdf-autotable?
- python - 如何在元组上完成 fit_transform,或者能够通过将元组更改为...来完成数据上的 fit_transform?
- ios - 使用 UICollectionView 创建类似卡片布局的火种
- java - 我正在尝试在 java 中实现凯撒密码,但没有任何想法,因为我必须需要一个 char[] 键作为参数而不是 int 移位
- amazon-web-services - 主动存储和 S3
- c++ - 如何查看有关 async_accept 失败的原始 tcp 数据?
- javascript - 使用 removeChild 后如何解决错误的滚动
- python - 对象在 numpy 中不可调用
- javascript - JS:未保存类属性