1 Commits

Author SHA1 Message Date
vvs ed5ca0cafc v1.1.0: extend binary matrix to CPython 3.10/3.11/3.13 on Linux and Windows
- Linux x86_64: add cp310, cp311, cp313 (.so), built in conda-forge envs.
- Windows AMD64: add cp310, cp311, cp313 (.pyd), built with MSVC v14.50.
- All eight binaries verified to produce identical numerical output.
- README compatibility table + build provenance updated.
- macOS still deferred.
2026-05-10 11:15:11 +01:00
+43 -7
View File
@@ -6,14 +6,41 @@ install time.
## What is this for? ## What is this for?
For an introduction to SEM (Similarity Energy Model) and how `sem_cython12` is a small, focused toolbox of fast C-level routines
`sem_cython12` fits in, see: exposed through a thin numpy wrapper. It is not a general-purpose
numerical library; it accelerates three specific jobs that are
awkward or slow to do in pure numpy once `N` reaches the thousands:
- [`docs/SEM_Overview.md`](./docs/SEM_Overview.md) — non-internal 1. **Similarity / distance over batches of vectors.** Full
introduction to SEM, what it does, and how this library fits in. pairwise distance matrices, nearest-neighbour distances, and
- [`docs/SEM_Mathematical_Apparatus.md`](./docs/SEM_Mathematical_Apparatus.md) kernel-based `[0, 1]` similarity scores of a query set against
— capabilities-level description of the operators and engines one or many reference sets. Useful for nearest-neighbour
exposed by the library. search, kernel-density-style scoring, and "how close is each
query to this concept?" lookups.
2. **Multi-objective ("best-tradeoff") filtering of score matrices.**
Given a matrix of `N` candidates × `k` criteria, select the
rows on the Pareto frontier, isolate rows that only spike on a
single criterion, and recover the rows that contribute
meaningfully across several criteria - candidates a naive
sum-of-scores ranker would miss.
3. **An incremental aggregation primitive** for streaming
clustering / frontier-expansion algorithms: a fused bulk update
that, given `F` running summaries (centre + radius) and `A`
new contributions, produces all `F·A` updated summaries in one
parallel pass.
The kernels release the GIL, scale near-linearly to ~8 OpenMP
threads on commodity x86, and operate on shared-memory numpy
arrays with no inter-process serialisation. The Python wrapper
handles contiguous-float64 casting and degrades loudly (via
`available()` / `backend()` plus `RuntimeError`) when the compiled
extension cannot load on the host - there is no slow pure-Python
fallback path.
The [`demos/`](./demos/) directory contains three runnable
end-to-end examples (Iris boundary discovery, parameter-free
anomaly detection, multi-criteria candidate selection) that
exercise these three jobs against well-known baselines.
## Contents ## Contents
@@ -130,6 +157,15 @@ internally cast to contiguous `float64`. Outputs are numpy arrays.
See the wrapper docstrings for exact semantics of each function. See the wrapper docstrings for exact semantics of each function.
## Documentation
- [`docs/SEM_Overview.md`](./docs/SEM_Overview.md) — non-internal
introduction to SEM (Similarity Energy Model), what it does, and
how the `sem_cython12` library fits in.
- [`docs/SEM_Mathematical_Apparatus.md`](./docs/SEM_Mathematical_Apparatus.md)
— capabilities-level description of the operators and engines
exposed by the library.
## Demos ## Demos
Three runnable demos live in [`demos/`](./demos/): Three runnable demos live in [`demos/`](./demos/):