[package]
edition = "2024"
name = "flow-knn"
version = "0.1.1"
authors = ["James Moynihan"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Algorithm-agnostic k-NN graphs for flow cytometry — exact, usearch HNSW, optional ann-search-rs"
readme = "README.md"
keywords = [
"knn",
"hnsw",
"nearest-neighbor",
"flow-cytometry",
"ann",
]
categories = [
"science",
"algorithms",
"mathematics",
]
license = "MIT"
repository = "https://github.com/jrmoynihan/flow/flow-knn"
[package.metadata.scripts]
dry-release = "cargo smart-release flow-knn --update-crates-index"
publish = "cargo smart-release flow-knn --update-crates-index --execute"
changelog = "cargo changelog flow-knn --write"
[features]
ann-search = [
"dep:ann-search-rs",
"dep:faer",
]
default = ["hnsw"]
gpu = [
"ann-search",
"ann-search-rs/gpu",
"dep:cubecl",
]
hnsw = ["dep:usearch"]
kdtree = ["dep:kiddo"]
[lib]
name = "flow_knn"
path = "src/lib.rs"
[[example]]
name = "collect_matrix"
path = "examples/collect_matrix.rs"
[[bench]]
name = "exact_knn_micro"
path = "benches/exact_knn_micro.rs"
harness = false
[[bench]]
name = "knn_cpu_vs_gpu"
path = "benches/knn_cpu_vs_gpu.rs"
harness = false
required-features = [
"hnsw",
"ann-search",
"gpu",
]
[[bench]]
name = "knn_graph_io"
path = "benches/knn_graph_io.rs"
harness = false
[dependencies.ann-search-rs]
version = "0.4.4"
optional = true
default-features = false
[dependencies.bytemuck]
version = "1.24"
features = ["derive"]
[dependencies.cubecl]
version = "0.10"
features = [
"std",
"wgpu",
]
optional = true
default-features = false
[dependencies.faer]
version = "=0.23.2"
optional = true
[dependencies.kiddo]
version = "5"
optional = true
[dependencies.rayon]
version = "1.11"
[dependencies.serde]
version = "1.0.228"
features = [
"derive",
"rc",
]
[dependencies.serde_json]
version = "1.0.149"
[dependencies.thiserror]
version = "2.0.19"
[dependencies.usearch]
version = "2.25"
features = ["simsimd"]
optional = true
default-features = false
[dev-dependencies.approx]
version = "0.5.1"
[dev-dependencies.criterion]
version = "0.8.1"
features = ["html_reports"]
[dev-dependencies.rand]
version = "0.10.2"