Pyxu#

Pyxu

Modular & Scalable Computational Imaging

Pyxu (pronounced [piksu], formerly known as Pycsou) is an open-source Python framework allowing scientists at any level to quickly prototype/deploy hardware accelerated and out-of-core computational imaging pipelines at scale. Thanks to its hardware-agnostic microservice architecture and its tight integration with the PyData ecosystem, Pyxu supports a wide range of imaging applications, scales, and computation architectures.

_images/microservice_hero.png

Key Features & Capabilities#

_images/microservice.png

Microservice architecture
Loosely coupled software components that are composable via an advanced operator algebra.

_images/pnp.png

Plug-and-play API
Simple interface for beginners with theory-informed automatic hyperparameter selection. Experts may still fine-tune parameters via a guru interface.

_images/scope.png

Application agnostic
Generic software components with wide applicability across imaging modalities.

_images/hybrid.png

Flexible computation backends
The same code executes for multiple array backends, including CPU and GPU, with a unified, easily maintainable codebase.

_images/hpc.png

High-performance computing
Just-in-time compilation, batch processing, automatic parallelization, out-of-core computing, and controllable computation precision.

_images/interop.png

Interoperability
Pyxu is highly interoperable with the PyData stack, including full-fledged zero-copy wrappers for JAX and PyTorch operators.

_images/test.png

Quality controlled
Extensive logical and functional unit testing of software components. Templated test classes for custom operators.

_images/git.png

Community driven
Pyxu is open source, version controlled, and is available to all on PyPI and GitHub.

_images/fair.png

Extensible
Powerful plugin mechanism and community marketplace (Pyxu FAIR) for discovering and sharing custom operators.

Ecosystem#

Pyxu is highly interoperable with the wider scientific Python ecosystem. It is built on a minimal set of foundational and robust scientific computing librairies from the PyData stack. Pyxu notably supports multiple array backends –NumPy, Dask, and optionally CuPy–, allowing users to choose array backends that work best for their application/computation. Aside from SciPy and Numba – which we use for scientific computing and JIT-compilation respectively– these are Pyxu’s only dependencies, making the software very easy to ship, install, deploy in production, and sustain in the long term.

Pyxu is also interoperable with (but does not depend on) major deep learning frameworks such as JAX and PyTorch, allowing users to benefit from the latest incursions of deep learning in the field of computational imaging (e.g., PnP methods, unrolled neural networks, deep generative priors). Our wrappers can moreover leverage the autograd engine to auto-infer gradients or adjoint operations.

NumPy's logo

Foundational package for array computing in Python.

Dask's logo

NumPy-compatible distributed arrays and advanced parallelism for both in and out-of-core computing, enabling performance at scale.

CuPy's logo

NumPy-compatible array library for GPU-accelerated computing.

SciPy's logo

Fundamental algorithms for scientific computing.

Numba's logo

NumPy-aware dynamic compiler using LLVM.

PyTorch's logo

Tensors and dynamic neural networks with strong GPU acceleration.

JAX's logo

Composable transformations of Python+NumPy programs: differentiate, vectorize, JIT to GPU/TPU, and more.

_images/stack.png

Governance and Team#

Pyxu is an open-source project developed and maintained primarily by members of the EPFL Center for Imaging, but the repository itself is public and external contributions are welcome. We are committed to keeping the project public and owned by the community through a meritocratic and consensus-based governance. Anyone with an interest in the project can join the community, contribute to the project design, and participate in the decision-making process.

Steering Council#

The role of Pyxu’s Steering Council is to ensure the long-term sustainability of the project, both technically and as a community. Pyxu’s Steering Council meets regularly (every two weeks or so) and currently consists of the following members:

_images/kashani.png

Sepand Kashani
Core architect, maintainer

_images/rue_queralt.png

Joan Rué-Queralt
Core architect, maintainer

_images/simeoni.png

Matthieu Simeoni
Core architect, creator

Contributors#

In addition to the steering council, you can also check the full list of contributors.

Partners & Sponsors#

EPFL Slider
Imaging Slider
LCAV Slider
Meta Slider
ZEISS Slider
SKACH Slider
ETH Slider
SNF Slider
SPC Slider