跳转到主要内容

使用NumPy和Zarr进行分布式处理。

项目描述

Zappy - 使用NumPy和Zarr进行分布式处理

Zappy适用于在Pywren、Apache Spark和Apache Beam等引擎上对分块NumPy数组进行分布式处理。

Build Status License Coverage Status PyPI version shields.io

zappy.base模块定义了一个ZappyArray类,该类暴露与numpy.ndarray相同的接口,并支持分布式存储和处理。数组被分成块,通常从Zarr加载,每个块独立处理。

提供了一些引擎

  • direct - 用于内存处理
  • spark - 使用Spark进行处理
  • beam - 使用Beam或Google Dataflow进行处理
  • executor - 使用Python的concurrent.futures.Executor进行处理,其中Pywren是一个值得注意的实现

Beam目前仅在Python 2上运行。

没有完全实现numpy.ndarray接口。仅实现了足够的接口以支持运行Scanpy的部分,如Single Cell Experiments存储库中所示。

安装

pip install zappy

另外,可以使用Conda(最简单的通过Miniconda Python发行版获得)安装zappy

conda install -c conda-forge zappy

演示

请查看已渲染的演示 Jupyter 笔记本,或者按照以下步骤尝试自己使用。

创建并激活一个 Python 3 虚拟环境,并安装所需依赖。

python3 -m venv venv
. venv/bin/activate
pip install -r requirements.txt
pip install -e .
pip install s3fs jupyter

然后运行笔记本:

jupyter notebook demo.ipynb

测试

所有引擎都有测试套件,涵盖 Python 2 和 3。

使用 tox 一键运行所有测试。

pip install tox
tox

格式化

pip install black
black zappy tests/* *.py

覆盖率

pip install pytest-cov
pytest --cov-report html --cov=zappy
open htmlcov/index.html

发布

pip install twine
python setup.py sdist
twine upload -r pypi dist/zappy-0.1.0.tar.gz

如果成功,该包将可在PyPI上找到。

由以下支持