[package] name = "rvdna" version = "0.3.0" edition = "2021" description = "rvDNA — AI-native genomic analysis. 20-SNP biomarker risk scoring, streaming anomaly detection, 64-dim profile vectors, 23andMe genotyping, CYP2D6/CYP2C19 pharmacogenomics, variant calling, protein prediction, and HNSW vector search in pure Rust." license = "MIT" repository = "https://github.com/ruvnet/ruvector" homepage = "https://github.com/ruvnet/ruvector/tree/main/examples/dna" documentation = "https://docs.rs/rvdna" readme = "README.md" keywords = ["genomics", "bioinformatics", "dna", "pharmacogenomics", "23andme"] categories = ["science", "algorithms", "wasm"] [dependencies] # RuVector core for HNSW vector storage ruvector-core = { version = "2.0.2", path = "../../crates/ruvector-core" } # Attention for sequence analysis ruvector-attention = { version = "2.0", path = "../../crates/ruvector-attention" } # GNN for protein structure and interaction networks ruvector-gnn = { version = "2.0.2", path = "../../crates/ruvector-gnn" } # Graph operations for biological networks ruvector-graph = { version = "2.0.2", path = "../../crates/ruvector-graph" } # DAG pipeline orchestration ruvector-dag = { version = "2.0", path = "../../crates/ruvector-dag" } # Math primitives ruvector-math = { version = "2.0.2", path = "../../crates/ruvector-math" } # Filter expressions for metadata queries ruvector-filter = { version = "2.0.2", path = "../../crates/ruvector-filter" } # Collections ruvector-collections = { version = "2.0.2", path = "../../crates/ruvector-collections" } # Serialization serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" bincode = { version = "2.0.0-rc.3", features = ["serde"] } # Math and numerics ndarray = { version = "0.16", features = ["serde"] } rand = "0.8" rand_distr = "0.4" # Async runtime tokio = { version = "1.41", features = ["rt-multi-thread", "macros", "time"] } # Sublinear solver for k-mer graph PageRank ruvector-solver = { version = "2.0.3", path = "../../crates/ruvector-solver", default-features = false, features = ["forward-push", "neumann", "cg"] } # Error handling thiserror = "2.0" anyhow = "1.0" # Utilities uuid = { version = "1.11", features = ["v4"] } chrono = "0.4" tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["env-filter"] } [[bin]] name = "rvdna-cli" path = "src/main.rs" [dev-dependencies] criterion = { version = "0.5", features = ["html_reports"] } tempfile = "3.8" [[bench]] name = "dna_bench" harness = false [[bench]] name = "solver_bench" harness = false [[bench]] name = "biomarker_bench" harness = false # Workspace cleanup pass: research-tier crate, doc/style churn deferred. Correctness + suspicious lints stay denied. [lints.rust] unexpected_cfgs = { level = "allow", priority = -1 } unused_imports = "allow" dead_code = "allow" unused_variables = "allow" unused_mut = "allow" unused_unit = "allow" unused_assignments = "allow" unused_must_use = "allow" missing_docs = "allow" unsafe_op_in_unsafe_fn = "allow" unused_parens = "allow" unused_comparisons = "allow" non_local_definitions = "allow" static_mut_refs = "allow" non_camel_case_types = "allow" deprecated = "allow" ambiguous_glob_reexports = "allow" non_upper_case_globals = "allow" unused_doc_comments = "allow" unused_unsafe = "allow" unreachable_patterns = "allow" suspicious_double_ref_op = "allow" [lints.clippy] pedantic = { level = "allow", priority = -2 } correctness = { level = "deny", priority = -1 } suspicious = { level = "deny", priority = -1 } needless_range_loop = "allow" needless_borrow = "allow" needless_borrows_for_generic_args = "allow" needless_update = "allow" needless_bool = "allow" needless_pass_by_value = "allow" manual_div_ceil = "allow" manual_is_multiple_of = "allow" manual_range_contains = "allow" manual_clamp = "allow" manual_checked_ops = "allow" manual_let_else = "allow" manual_memcpy = "allow" manual_repeat_n = "allow" manual_contains = "allow" manual_flatten = "allow" manual_abs_diff = "allow" manual_slice_size_calculation = "allow" redundant_closure = "allow" redundant_closure_for_method_calls = "allow" redundant_field_names = "allow" len_zero = "allow" get_first = "allow" useless_vec = "allow" too_many_arguments = "allow" derivable_impls = "allow" approx_constant = "allow" assertions_on_constants = "allow" field_reassign_with_default = "allow" nonminimal_bool = "allow" collapsible_if = "allow" collapsible_match = "allow" inconsistent_digit_grouping = "allow" unnecessary_sort_by = "allow" unnecessary_map_or = "allow" unnecessary_filter_map = "allow" unnecessary_lazy_evaluations = "allow" unnecessary_cast = "allow" unnecessary_to_owned = "allow" unnecessary_wraps = "allow" unnecessary_literal_unwrap = "allow" unnecessary_struct_initialization = "allow" should_implement_trait = "allow" ptr_arg = "allow" let_unit_value = "allow" let_and_return = "allow" type_complexity = "allow" identity_op = "allow" match_like_matches_macro = "allow" match_same_arms = "allow" match_single_binding = "allow" vec_init_then_push = "allow" absurd_extreme_comparisons = "allow" incompatible_msrv = "allow" unused_enumerate_index = "allow" unused_self = "allow" unused_unit = "allow" map_clone = "allow" map_unwrap_or = "allow" result_map_or_into_option = "allow" unusual_byte_groupings = "allow" if_same_then_else = "allow" unnested_or_patterns = "allow" uninlined_format_args = "allow" single_match_else = "allow" single_char_pattern = "allow" mixed_attributes_style = "allow" arc_with_non_send_sync = "allow" bool_assert_comparison = "allow" bool_comparison = "allow" bind_instead_of_map = "allow" cloned_ref_to_slice_refs = "allow" large_stack_arrays = "allow" implicit_saturating_sub = "allow" ignored_unit_patterns = "allow" explicit_iter_loop = "allow" elidable_lifetime_names = "allow" doc_markdown = "allow" doc_overindented_list_items = "allow" comparison_chain = "allow" clone_on_copy = "allow" items_after_statements = "allow" inline_always = "allow" format_push_string = "allow" format_collect = "allow" for_kv_map = "allow" float_cmp = "allow" if_not_else = "allow" return_self_not_must_use = "allow" missing_fields_in_debug = "allow" upper_case_acronyms = "allow" wildcard_imports = "allow" must_use_candidate = "allow" cast_possible_truncation = "allow" cast_possible_wrap = "allow" cast_precision_loss = "allow" cast_lossless = "allow" cast_sign_loss = "allow" unreadable_literal = "allow" struct_excessive_bools = "allow" trivially_copy_pass_by_ref = "allow" missing_safety_doc = "allow" missing_errors_doc = "allow" missing_panics_doc = "allow" similar_names = "allow" module_name_repetitions = "allow" assign_op_pattern = "allow" iter_cloned_collect = "allow" excessive_precision = "allow" await_holding_refcell_ref = "allow" unnecessary_unwrap = "allow" unit_arg = "allow" redundant_pattern_matching = "allow" question_mark = "allow" partialeq_to_none = "allow" new_without_default = "allow" map_flatten = "allow" manual_unwrap_or = "allow" len_without_is_empty = "allow" format_in_format_args = "allow" single_char_add_str = "allow" useless_conversion = "allow" useless_format = "allow" doc_lazy_continuation = "allow" manual_strip = "allow" double_ended_iterator_last = "allow" unwrap_or_default = "allow" single_component_path_imports = "allow" needless_return = "allow" int_plus_one = "allow" needless_lifetimes = "allow" explicit_counter_loop = "allow" unnecessary_mut_passed = "allow" module_inception = "allow" option_as_ref_deref = "allow" print_literal = "allow" explicit_auto_deref = "allow" manual_swap = "allow" writeln_empty_string = "allow" items_after_test_module = "allow" no_effect = "allow" non_canonical_partial_ord_impl = "allow" wildcard_in_or_patterns = "allow" large_enum_variant = "allow" not_unsafe_ptr_arg_deref = { level = "allow", priority = 1 } erasing_op = { level = "allow", priority = 1 } almost_swapped = { level = "allow", priority = 1 } cast_abs_to_unsigned = { level = "allow", priority = 1 } let_underscore_lock = { level = "allow", priority = 1 } no_effect_replace = { level = "allow", priority = 1 } await_holding_lock = { level = "allow", priority = 1 } needless_character_iteration = { level = "allow", priority = 1 } unnecessary_get_then_check = { level = "allow", priority = 1 } let_underscore_future = { level = "allow", priority = 1 } overly_complex_bool_expr = { level = "allow", priority = 1 } zombie_processes = { level = "allow", priority = 1 } repeat_vec_with_capacity = { level = "allow", priority = 1 } missing_transmute_annotations = { level = "allow", priority = 1 }