跳转到主要内容

Python的ms文件读取器(最终可能成为写入器)

项目描述

msssPy

Python的ms/ms文件读取器。

发音为“密西西比”

该读取器比基本的ms文件读取器更加强大,因为它为它读取的每个文件保留索引缓存,这显著加快了对多个复制ms文件中单个样本的随机访问。

这对于机器学习任务特别有用,在这些任务中,ms文件需要被多次随机访问。已经由相同进程看到的文件比第一次在该进程中访问时读取得更快。未来版本还将添加缓存持久性。

此外,mssspy添加了插入不同“读取器”实现的能力,这些实现使用不同的解析算法。目前包括两个内置读取器,一个是“慢速”读取器,它具有更好的容错性和错误报告,另一个是“快速”读取器,它假设ms文件格式正确,而牺牲了更仔细的验证。

基本用法

要读取ms文件,主要的高级接口是MSFile类。简单地打开一个文件,如

>>> import mssspy
>>> msf = MSFile('path/to/simulations.ms')

然后您可以使用索引符号访问文件中的单个重复样本或“样本”

>>> msf[0]
Sample(haplotypes=array([[0, 1, 1, 0, 0],
       [1, 0, 0, 1, 1]], dtype=uint8), positions=array([0.283, 0.55 , 0.589, 0.715, 0.988]))

即使文件中只有一个样本,也是如此,即msf[0]

如果您打算在文件打开时从同一文件中读取多个样本,那么在with语句中使用MSFile也更为高效,例如

>>> with MSFile('path/to/simulations.ms') as msf:
...     all_samples = list(msf)

注意: 目前尚无获取文件长度的样本数的方法。例如,len(msf) 不起作用。这是因为需要扫描整个文件来计数样本数,这将非常低效。然而,这项功能将在未来的版本中添加。

在此期间,您仍然可以遍历 MSFile,它将尝试从 0 开始的所有可能的索引,直到引发 IndexError。换句话说,这就是为什么 list(msf) 可以工作的原因。

基本上就是这些了!

高级用法

待办事项

未来版本待办事项列表

  • 添加用 C(ython) 编写的 "快速" 读取器,并将其性能与现有的 "更快" 读取器进行比较。

  • 更彻底的解析(例如,支持 time: 和树形数据解析)。

  • 支持写入。

  • 更全面的文档,包括 API 文档。

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解更多关于 安装包 的信息。

源代码分布

此版本没有提供源代码分布文件。请参阅 生成分布存档的教程

构建的分布

mssspy-0.1.0b2-py3-none-any.whl (14.7 kB 查看哈希值)

上传时间 Python 3

支持者: