N-dimensional image processing kernels, in POST Python.
ppndimage reimplements scipy.ndimage in
POST Python — every kernel is
fully-typed Python that runs under the standard CPython interpreter and
compiles ahead-of-time to native code (a plain C shared library and a NumPy
ufunc extension module) with the POST Python reference compiler.
Status: Planning — this repository is scaffolding, ready for an agent or contributor to claim. It is part of the PostSciPy effort to rebuild SciPy one subpackage at a time as the compiler's proving ground.
Primary compiler pressure this package generates: stencil kernels; dynamic-rank iteration later.
- Read the POST Python spec and the PostSciPy roadmap (package map, working rules, capability matrix).
- Copy the layout of ppspecial,
the exemplar package:
ppndimage/sources,tests/,scripts/build_native.py,scripts/build_ext.py, a pixi workspace withtest/build-native/build-exttasks, a git dependency on postpython, and aROADMAP.mdtracking targets and upstream requests. - Start with a slice from "Compiles today" below; land it as a small PR with tests in both execution modes.
- Fixed-footprint 2-D stencils
(m,n)->(m,n)with explicit edge handling:uniform_filter, fixed-radiusgaussian_filter,sobel,laplace - Nearest-neighbour
shift/zoomfor 2-D
File these as postpython issues with minimal reproducers when you start on them — the filing is part of the work and drives the compiler roadmap.
- Rank-generic N-D filtering — needs dynamic-rank (
AnyShape) iteration in kernels; file the reproducer when starting generic_filter— callable parameters
- Pure POST Python: no compiler-specific escape hatches; every kernel runs interpreted and compiled.
scipyis the reference, never a runtime dependency. Tests may use it optionally; prefer deterministic hardcoded reference values.- Compiler gaps go upstream as postpython issues with reproducers, not silent workarounds.
- Verify against a postpython checkout on
main. - Document accuracy targets and reference sources per function.
The full rules and the definition of done live in the PostSciPy roadmap.