[package] name = "pacmap" version = "0.2.5" edition = "2021" authors = ["Joshua Griffith "] description = "Pairwise Controlled Manifold Approximation (PaCMAP) for dimensionality reduction" documentation = "https://docs.rs/pacmap" repository = "https://github.com/beamform/pacmap-rs" license = "Apache-2.0" keywords = ["embedding", "dimension-reduction", "pacmap", "algorithms"] categories = ["science", "algorithms", "mathematics"] readme = "README.md" [features] default = [] simsimd = ["usearch/simsimd"] intel-mkl-static = ["petal-decomposition/intel-mkl-static", "ndarray/blas"] intel-mkl-system = ["petal-decomposition/intel-mkl-system", "ndarray/blas"] openblas-static = ["petal-decomposition/openblas-static", "ndarray/blas"] openblas-system = ["petal-decomposition/openblas-system", "ndarray/blas"] netlib-static = ["petal-decomposition/netlib-static", "ndarray/blas"] netlib-system = ["petal-decomposition/netlib-system", "ndarray/blas"] [dependencies] bon = "3.0" ndarray = { version = "0.16", features = ["rayon"] } ndarray-rand = "0.15" petal-decomposition = "0.8" rand = { version = "0.8", features = ["small_rng"] } rand_pcg = "0.3" rayon = "1.10" thiserror = "2.0" tracing = "0.1" usearch = { version = "2.16", default-features = false, features = ["fp16lib"] } wide = "0.7" [dev-dependencies] approx = "0.5" criterion = "0.5" mimalloc = "0.1" quickcheck = "1.0" quickcheck_macros = "1.0" [lints.rust] missing_docs = "warn" unsafe_code = "deny" [lints.clippy] blocks_in_conditions = "allow" cargo = { level = "warn", priority = -1 } cast_possible_truncation = "allow" cast_possible_wrap = "allow" cast_sign_loss = "allow" create_dir = "warn" dbg_macro = "warn" default_numeric_fallback = "warn" empty_structs_with_brackets = "warn" error_impl_error = "warn" exit = "warn" expect_used = "deny" format_push_string = "warn" if_then_some_else_none = "warn" impl_trait_in_params = "warn" many-single-char-names = "allow" missing_assert_message = "warn" module_name_repetitions = "allow" multiple_inherent_impl = "warn" mutex_atomic = "warn" needless_raw_strings = "warn" panic = "deny" pedantic = { level = "warn", priority = -1 } print_stderr = "warn" print_stdout = "warn" rc_mutex = "warn" redundant_type_annotations = "warn" rest_pat_in_fully_bound_structs = "warn" same_name_method = "warn" self_named_module_files = "warn" semicolon_outside_block = "warn" str_to_string = "warn" string_lit_chars_any = "warn" string_to_string = "warn" struct_field_names = "allow" todo = "warn" try_err = "warn" unimplemented = "warn" unnecessary_self_imports = "warn" unneeded_field_pattern = "warn" unreachable = "warn" unwrap_used = "deny" verbose_file_reads = "warn" [profile.release] lto = "fat" codegen-units = 1 panic = "abort" debug = "full" opt-level = 3 [profile.bench] lto = "fat" codegen-units = 1 opt-level = 3 [[bench]] name = "knn_bench" path = "benches/knn_bench.rs" harness = false