Troubleshooting¶
A Rust reducer is None¶
Check squeeze.__file__, then rebuild the release extension using the
installation commands. squeeze.__init__ exposes unavailable
Rust classes as None; an older extension may provide PCA but lack NeighborMap.
Restart an existing Python process after rebuilding a loaded extension.
NumPy dtype or dimensionality errors¶
Pass a two-dimensional float64 NumPy array to the Rust methods. Ensure all rows
have the same number of features. Convert sparse inputs only after estimating
memory needs. Check for NaN and infinity and keep neighbor counts below sample count.
BLAS linking or build failure¶
Install OpenBLAS development libraries, a Fortran compiler, pkg-config, and OpenSSL
headers. Use the documented ndarray-linalg/openblas-system feature. A Python-only
sync does not rebuild the compiled extension. Avoid mixing extensions from another
Python ABI or machine.
The first fit is slow¶
UMAP invokes Numba compilation. Compare release builds after warmup, with identical thread settings and input rows. Metric scoring can itself be quadratic and should be timed separately. Check performance notes.
A picture changes between runs¶
Set a supported random_state, retain input order, and record versions and thread
counts. Rotation and reflection can change without changing local relationships.
Compare metrics and aligned coordinates, not screen positions alone.
A wrapper has transform but a reducer does not¶
Some composition wrappers refit fit-only components on new data. That is a new coordinate system. Use a native transform or explicit interpolation as described in Transforming new data.
Fashion-MNIST checksum mismatch¶
The loader rejects corrupt cached files instead of benchmarking them. Remove the identified corrupt download from the configured cache and retry with network access. Do not disable the checksum to get a run through.
Report a reproducible issue¶
Open an issue in GeorgePearse/squeeze. Include code revision, Python/uv versions, platform, constructor arguments, input shape/dtype, thread settings, and the traceback. Prefer a small Digits example that reproduces the problem without private data.