[package]
name = "flow-pacmap"
version = "0.1.2"
edition.workspace = true
authors.workspace = true
license = "MIT"
repository = "https://github.com/jrmoynihan/flow/flow-pacmap"
readme = "README.md"
description = "PaCMAP dimensionality reduction (Wang et al. 2021) for large-n flow cytometry — faer PCA, optional HNSW and k-d tree KNN"
keywords = ["pacmap", "dim-reduction", "embedding", "flow-cytometry"]
categories = ["science", "algorithms", "mathematics"]
[features]
default = ["hnsw", "kdtree"]
hnsw = ["flow-knn/hnsw"]
kdtree = ["flow-knn/kdtree"]
ann-search = ["flow-knn/ann-search"]
cubecl = ["dep:cubecl", "dep:burn", "dep:bytemuck"]
gpu-knn = ["flow-knn/gpu", "ann-search"]
[dependencies]
faer = { workspace = true }
rayon = { workspace = true }
thiserror = { workspace = true }
rand = { workspace = true }
flow-knn = { path = "../flow-knn", version = "^0.1.1", default-features = false }
flow-dimensional-reduction = { path = "../flow-dimensional-reduction", version = "^0.1.0" }
cubecl = { workspace = true, optional = true }
burn = { workspace = true, optional = true }
bytemuck = { workspace = true, optional = true }
[dev-dependencies]
approx = { workspace = true }
criterion = { workspace = true }
manifolds-rs = "0.3.9"
oxicuda-manifold = "0.5.1"
rand = { workspace = true }
faer23 = { package = "faer", version = "=0.23.2" }
[[bench]]
name = "pacmap_compare"
harness = false
required-features = ["ann-search"]
[[bench]]
name = "pacmap_optimize_gpu"
harness = false
required-features = ["cubecl", "ann-search"]
[[bench]]
name = "gradient_micro"
harness = false
[package.metadata.scripts]
dry-release = "cargo smart-release flow-pacmap --update-crates-index"
publish = "cargo smart-release flow-pacmap --update-crates-index --execute"
changelog = "cargo changelog flow-pacmap --write"