侧边栏壁纸
  • 累计撰写 218 篇文章
  • 累计创建 59 个标签
  • 累计收到 5 条评论

随机读取多序列文件

barwe
2021-06-21 / 0 评论 / 0 点赞 / 874 阅读 / 724 字
温馨提示:
本文最后更新于 2022-07-14,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

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)

必要的三个参数:

  1. 索引文件名,文件扩展名为 .idx,本质上是一个 SQLite3 数据库
  2. 要索引的文件列表
  3. 文件格式
0

评论区