Bio.SeqIO
提供了几个工具函数用于从一个或者多个多个序列文件中随机读取。
SeqIO.to_dict()
仅需一个参数,即能够得到 SeqRecord
对象的列表或生成器。
将序列全部读进内存,返回一个普通的 Python 字典。
该函数将明确检查重复键,如果发现任何重复键将引发异常并退出。
字典的键默认为序列标题的第一个单词,规范的 FASTA 序列标题如下:
>SEQ_ID DESC
通过 key_function
参数可以自定义字典的键,该参数接受一个函数作为参数:
def getk(record: SeqRecord) -> str: ...
SeqIO.index()
对于更大的文件,应该考虑使用 Bio.SeqIO.index()
,工作原理上略有不同。尽管仍然是返回一个类似于字典的对象,它并不将所有的信息存储在内存中。相反,它仅仅记录每条序列条目在文件中的位置 - 当你需要读取某条特定序列条目时,它才进行解析。
from Bio import SeqIO
data: dict = SeqIO.index("xxxx.fasta", "fasta")
- 只能传入文件名,不能传入句柄
- 可以用
key_function
自定义键
SeqIO.index_db()
将序列信息以文件方式存储在硬盘上(使用SQLite3数据库)而不是内存中,因此它可以处理超大文件。同时,你可以同时对多个文件建立索引(前提是所有序列条目的ID是唯一的)。
from Bio import SeqIO
data: dict = SeqIO.index_db(IDX, FILES, FMT)
必要的三个参数:
- 索引文件名,文件扩展名为
.idx
,本质上是一个 SQLite3 数据库 - 要索引的文件列表
- 文件格式
评论区