From 5a9d903e515f9f8907b4b0bea1e31af80dcea7b0 Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Wed, 19 Aug 2026 20:18:46 +0200 Subject: [PATCH] chore: update dependencies and adapt to updated crate APIs Bumps core dependencies including ndarray, rand, hashbrown, niffler, ureq, sysinfo, indicatif, lru, and remove_dir_all. Adapts source code to accommodate breaking changes by migrating RNG initialization, adjusting HTTP response handling, and replacing the fs4 crate with standard library file locking. Adds a planning document for query benchmarking and sparse index regression tests. --- .../implementation/benchmark_query_testing.md | 84 ++ mkdocs.yml | 1 + src/Cargo.lock | 726 ++++++------------ src/obicompactvec/Cargo.toml | 2 +- src/obidebruinj/Cargo.toml | 2 +- src/obikindex/Cargo.toml | 4 +- src/obikpartitionner/Cargo.toml | 6 +- src/obikphylo/Cargo.toml | 4 +- src/obikphylo/src/siblings/subsample.rs | 10 +- src/obilayeredmap/Cargo.toml | 2 +- src/obiread/Cargo.toml | 14 +- src/obiread/src/xopen.rs | 2 +- src/obiskio/Cargo.toml | 2 +- src/obisys/Cargo.toml | 5 +- src/obisys/src/lock.rs | 12 +- 15 files changed, 365 insertions(+), 511 deletions(-) create mode 100644 DevDocMD/implementation/benchmark_query_testing.md diff --git a/DevDocMD/implementation/benchmark_query_testing.md b/DevDocMD/implementation/benchmark_query_testing.md new file mode 100644 index 00000000..023bea8a --- /dev/null +++ b/DevDocMD/implementation/benchmark_query_testing.md @@ -0,0 +1,84 @@ +# Benchmark: query-path testing (discussion) + +`benchmark/Makefile` exercises indexing, merge, and phylo distance +reconstruction against simulated bacterial genomes, but has no coverage of +`obikmer query` — the read-matching path — nor of the sparse packed +presence-matrix format (`obikmer pack --sparse`). This note captures the +planned extension. + +## Motivation + +- `query` is untested end-to-end. A regression there would not be caught by + the existing `verify_presence`/`verify_merge_presence` branches, which only + check index *content* against the `.npz` truth, never the query API. +- `pack --sparse` produces a presence-matrix format documented (see + [siblings.md](../architecture/siblings.md)) as faster for single-row + access (query) and slower for column-oriented access (phylo `--metric`). + `global_index_presence/` built by `merge_presence.sh` is currently always + packed dense (packing is a stage inside `merge`, not a separate `pack` + invocation). There is no dense/sparse regression check. + +## Plan + +**New read source, independent of `simulated_data/`.** Reusing +`simulated_data///reads_R1.fastq.gz` for queries would bias +the test: those reads were already folded into the index being queried, with +the same sequencing-error draw. Query reads must come from a *second*, +independent `iss generate` run against the same reference genome(s) — new +random error draw, same underlying sequence — landing in a separate tree: +`query_data///reads_R1.fastq.gz`, built by the existing +`simulate_one.sh` (unseeded, so a second invocation naturally draws different +reads). + +Two specimens chosen as query sources (enough to catch a dense/sparse +regression without duplicating the exhaustive per-specimen coverage +`verify_merge_presence` already provides across all `SPECIMENS`): +`Escherichia_coli--K-12_MG1655` (common, well-represented bacterium) and +`Saccharolobus_islandicus--M.16.4` (the only archaeon in `SPECIES` — distant +lineage, different GC content, stresses the query path differently from a +close-relative match). + +`make_deps.py` needs a `QUERY_SPECIMENS` list (explicit, short) and, for each, +an extra dependency line: +``` +query_data///reads_R1.fastq.gz: genomes/.fna.gz +``` +distinct from the `simulated_data/...` rule for the same specimen. + +Read count fixed at 100,000 read pairs per genome, independent of genome +size — unlike `simulate_one.sh`'s `simulated_data/` runs, which derive +`n_reads` from a fixed 15x coverage target. A query benchmark does not need +coverage-proportional depth; a fixed pair count keeps the two query runs +comparable to each other and keeps wall/RSS numbers meaningful across +genomes of very different sizes (bacterium vs archaeon). This likely needs a +dedicated `simulate_query_one.sh` (or a parameter to `simulate_one.sh`) +rather than reusing it unchanged, since `n_reads` is currently computed +in-script from genome size. + +**Phase 1 — sparse global index.** New target +`global_index_presence_sparse/index.done`, built from `global_index_presence/` +via `obikmer pack --sparse`. Open question, to verify against the `pack` +implementation before writing the rule: does `pack --sparse` accept an +already dense-packed index in place (`cp -r` + repack), or does it require +the pre-pack column layout, forcing a dedicated merge run instead of reusing +`global_index_presence/`? + +**Phase 2 — query runs.** For each of the two `QUERY_SPECIMENS`, run +`obikmer query` against both `global_index_presence` and +`global_index_presence_sparse`, capturing Reporter wall/RSS stats the same +way `merge_presence.sh` does (stderr capture + `parse_reporter`). + +**Phase 3 — dense/sparse regression.** `verify_query.py` diffs the two query +JSON outputs per specimen (same matches, same per-genome presence +annotations) → `.stats` CSV (`run,specimen,mismatches,pct`), aggregated by +`aggregate_stats.sh` under a new `query` case. Any mismatch is a real +regression — dense and sparse must be content-identical, only I/O access +pattern differs. + +**Phase 4 — performance comparison.** No dedicated script: the wall/RSS +columns from Phase 2's `.stats` files, aggregated, are the dense-vs-sparse +performance comparison (the expected win for query on sparse, per the `pack +--sparse` help text). + +`count` track is out of scope for the sparse branch: `pack --sparse` targets +presence matrices only (per CLI help), no count equivalent confirmed. diff --git a/mkdocs.yml b/mkdocs.yml index dc463b49..0731ce69 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -55,6 +55,7 @@ nav: - Kmer filtering: implementation/filtering.md - Select command: implementation/select.md - obitaxonomy crate: implementation/obitaxonomy.md + - "Benchmark: query-path testing (discussion)": implementation/benchmark_query_testing.md - Architecture: - Sequences: architecture/sequences/invariant.md - Kmer index: architecture/index_architecture.md diff --git a/src/Cargo.lock b/src/Cargo.lock index 4da5ee14..02572b44 100644 --- a/src/Cargo.lock +++ b/src/Cargo.lock @@ -178,9 +178,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.22.1" +version = "0.23.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" +checksum = "ac07cdecf99051d9a5238b80f35af32cdeba5b336e55d957b318b50137e18da5" [[package]] name = "bgzip" @@ -287,31 +287,11 @@ checksum = "fc652a48c352aef3ea3aed32080501cf3ef6ed5da78602a020c991775b0aff04" [[package]] name = "bzip2" -version = "0.4.4" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" +checksum = "f3a53fac24f34a81bc9954b5d6cfce0c21e18ec6959f44f56e8e90e4bb7c346c" dependencies = [ - "bzip2-sys", - "libc", -] - -[[package]] -name = "bzip2" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49ecfb22d906f800d4fe833b6282cf4dc1c298f5057ca0b5445e5c209735ca47" -dependencies = [ - "bzip2-sys", -] - -[[package]] -name = "bzip2-sys" -version = "0.1.13+1.0.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "225bff33b2141874fe80d71e07d6eec4f85c5c216453dd96388240f96e1acc14" -dependencies = [ - "cc", - "pkg-config", + "libbz2-rs-sys", ] [[package]] @@ -345,13 +325,13 @@ dependencies = [ [[package]] name = "cfb" -version = "0.7.3" +version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d38f2da7a0a2c4ccf0065be06397cc26a81f4e528be095826eee9d4adbb8c60f" +checksum = "a347dcabdae9c31b0825fd6a8bed285ec9c2acb89c47827126d52fa4f59cece3" dependencies = [ - "byteorder", "fnv", "uuid", + "web-time", ] [[package]] @@ -366,6 +346,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d524456ba66e72eb8b115ff89e01e497f8e6d11d78b70b1aa13c0fbd97540a81" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.1", +] + [[package]] name = "chiapos-chacha8" version = "0.1.0" @@ -463,7 +454,7 @@ version = "3.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "faf9468729b8cbcea668e36183cb69d317348c2e08e994829fb56ebfdfbaac34" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -487,19 +478,6 @@ dependencies = [ "impl-tools", ] -[[package]] -name = "console" -version = "0.15.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "054ccb5b10f9f2cbf51eb355ca1d05c2d279ce1804688d0db74b4733a5aeafd8" -dependencies = [ - "encode_unicode", - "libc", - "once_cell", - "unicode-width", - "windows-sys 0.59.0", -] - [[package]] name = "console" version = "0.16.4" @@ -527,12 +505,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "core-foundation-sys" -version = "0.8.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" - [[package]] name = "cpp_demangle" version = "0.4.5" @@ -764,14 +736,13 @@ dependencies = [ ] [[package]] -name = "displaydoc" -version = "0.2.5" +name = "dispatch2" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +checksum = "1e0e367e4e7da84520dedcac1901e4da967309406d1e51017ae1abfb97adbd38" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", + "bitflags 2.11.1", + "objc2", ] [[package]] @@ -866,7 +837,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -927,28 +898,9 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "foldhash" -version = "0.1.5" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" - -[[package]] -name = "form_urlencoded" -version = "1.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "fs4" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c6b3bd49c37d2aa3f3f2220233b29a7cd23f79d1fe70e5337d25fb390793de" -dependencies = [ - "rustix 0.38.44", - "windows-sys 0.52.0", -] +checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" [[package]] name = "fs_at" @@ -1008,10 +960,22 @@ checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" dependencies = [ "cfg-if", "libc", - "r-efi", + "r-efi 5.3.0", "wasip2", ] +[[package]] +name = "getrandom" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "300e883d756b2e4ec94e02791f39b04b522276138852cfc41d9fb7e904106099" +dependencies = [ + "cfg-if", + "libc", + "r-efi 6.0.0", + "rand_core 0.10.1", +] + [[package]] name = "gimli" version = "0.32.3" @@ -1031,32 +995,16 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.14.5" +version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" -dependencies = [ - "ahash", - "allocator-api2", - "rayon", -] - -[[package]] -name = "hashbrown" -version = "0.15.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +checksum = "ed5909b6e89a2db4456e54cd5f673791d7eca6732202bbf2a9cc504fe2f9b84a" dependencies = [ "allocator-api2", "equivalent", "foldhash", + "rayon", ] -[[package]] -name = "hashbrown" -version = "0.17.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f467dd6dccf739c208452f8014c75c18bb8301b050ad1cfb27153803edb0f51" - [[package]] name = "heck" version = "0.5.0" @@ -1115,7 +1063,7 @@ dependencies = [ "pkg-config", "sha3", "tar", - "ureq 3.3.0", + "ureq", "windows-sys 0.61.2", ] @@ -1128,109 +1076,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "icu_collections" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2984d1cd16c883d7935b9e07e44071dca8d917fd52ecc02c04d5fa0b5a3f191c" -dependencies = [ - "displaydoc", - "potential_utf", - "utf8_iter", - "yoke", - "zerofrom", - "zerovec", -] - -[[package]] -name = "icu_locale_core" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92219b62b3e2b4d88ac5119f8904c10f8f61bf7e95b640d25ba3075e6cac2c29" -dependencies = [ - "displaydoc", - "litemap", - "tinystr", - "writeable", - "zerovec", -] - -[[package]] -name = "icu_normalizer" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c56e5ee99d6e3d33bd91c5d85458b6005a22140021cc324cea84dd0e72cff3b4" -dependencies = [ - "icu_collections", - "icu_normalizer_data", - "icu_properties", - "icu_provider", - "smallvec", - "zerovec", -] - -[[package]] -name = "icu_normalizer_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da3be0ae77ea334f4da67c12f149704f19f81d1adf7c51cf482943e84a2bad38" - -[[package]] -name = "icu_properties" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bee3b67d0ea5c2cca5003417989af8996f8604e34fb9ddf96208a033901e70de" -dependencies = [ - "icu_collections", - "icu_locale_core", - "icu_properties_data", - "icu_provider", - "zerotrie", - "zerovec", -] - -[[package]] -name = "icu_properties_data" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e2bbb201e0c04f7b4b3e14382af113e17ba4f63e2c9d2ee626b720cbce54a14" - -[[package]] -name = "icu_provider" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "139c4cf31c8b5f33d7e199446eff9c1e02decfc2f0eec2c8d71f65befa45b421" -dependencies = [ - "displaydoc", - "icu_locale_core", - "writeable", - "yoke", - "zerofrom", - "zerotrie", - "zerovec", -] - -[[package]] -name = "idna" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" -dependencies = [ - "idna_adapter", - "smallvec", - "utf8_iter", -] - -[[package]] -name = "idna_adapter" -version = "1.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" -dependencies = [ - "icu_normalizer", - "icu_properties", -] - [[package]] name = "impl-tools" version = "0.10.3" @@ -1262,20 +1107,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d466e9454f08e4a911e14806c24e16fba1b4c121d1ea474396f396069cf949d9" dependencies = [ "equivalent", - "hashbrown 0.17.0", -] - -[[package]] -name = "indicatif" -version = "0.17.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "183b3088984b400f4cfac3620d5e076c84da5364016b4f49473de574b2586235" -dependencies = [ - "console 0.15.11", - "number_prefix", - "portable-atomic", - "unicode-width", - "web-time", + "hashbrown", ] [[package]] @@ -1284,7 +1116,7 @@ version = "0.18.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9433806cd6b4ec1aba79c021c7e4c58fb4c3b9977c085062e611ac929998fb0c" dependencies = [ - "console 0.16.4", + "console", "portable-atomic", "unicode-width", "unit-prefix", @@ -1293,9 +1125,9 @@ dependencies = [ [[package]] name = "infer" -version = "0.19.0" +version = "0.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a588916bfdfd92e71cacef98a63d9b1f0d74d6599980d11894290e7ddefffcf7" +checksum = "f4200d433cbd5178df7797c9c2e75b348b728e39631cf14520d1e2fc424201f4" dependencies = [ "cfb", ] @@ -1308,7 +1140,7 @@ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1392,6 +1224,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "libbz2-rs-sys" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34b357333733e8260735ba5894eb928c02ecc69c78715f01a8019e7fa7f2db4c" + [[package]] name = "libc" version = "0.2.189" @@ -1400,42 +1238,30 @@ checksum = "3eaf3ede3fee6db1a4c2ee091bf8a8b4dccdc6d17f656fb07896ee72867612f2" [[package]] name = "liblzma" -version = "0.3.6" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a631d2b24be269775ba8f7789a6afa1ac228346a20c9e87dbbbe4975a79fd764" +checksum = "2fe0a34ca854fd4f20c07f696fc8675aec78f87d88d29f5e10257a7490a1b2e1" dependencies = [ "liblzma-sys", ] [[package]] name = "liblzma-sys" -version = "0.3.13" +version = "0.4.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efdadf1a99aceff34553de1461674ab6ac7e7f0843ae9875e339f4a14eb43475" +checksum = "a0dad045e4b1b7b170be4b60b54b780cafb4490165461bac7d1cf7b703f61d5f" dependencies = [ "cc", "libc", "pkg-config", ] -[[package]] -name = "linux-raw-sys" -version = "0.4.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" - [[package]] name = "linux-raw-sys" version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" -[[package]] -name = "litemap" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92daf443525c4cce67b150400bc2316076100ce0b3686209eb8cf3c31612e6f0" - [[package]] name = "lock_api" version = "0.4.14" @@ -1453,11 +1279,11 @@ checksum = "5e5032e24019045c762d3c0f28f5b6b8bbf38563a65908389bf7978758920897" [[package]] name = "lru" -version = "0.12.5" +version = "0.18.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "234cf4f4a04dc1f57e24b96cc0cd600cf2af460d4161ac5ecdd0af8e1f3b2a38" +checksum = "5d2f2f9b4ba7e6b24d95e7e899329d35be83bcded72c8540cdd5368932d1d90a" dependencies = [ - "hashbrown 0.15.5", + "hashbrown", ] [[package]] @@ -1582,9 +1408,9 @@ checksum = "729eb334247daa1803e0a094d0a5c55711b85571179f5ec6e53eccfdf7008958" [[package]] name = "ndarray" -version = "0.16.1" +version = "0.17.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" +checksum = "520080814a7a6b4a6e9070823bb24b4531daac8c4627e08ba5de8c5ef2f2752d" dependencies = [ "matrixmultiply", "num-complex", @@ -1597,26 +1423,12 @@ dependencies = [ [[package]] name = "niffler" -version = "2.7.0" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e84f25af5326bacf3cbc3b9d2586d096426b10c889050cab891f89c9cb65932" -dependencies = [ - "bzip2 0.4.4", - "cfg-if", - "flate2", - "liblzma", - "thiserror 2.0.18", - "zstd", -] - -[[package]] -name = "niffler" -version = "3.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62d3115cc93dac9fabdfd25f7d4fda51ad4a959fb4667d39af20f70bddfb3574" +checksum = "01baa3696744e580712b28344fe25ed4ac1e8c4b76cc5189a34e713924c25208" dependencies = [ "bgzip", - "bzip2 0.5.2", + "bzip2", "cfg-if", "flate2", "liblzma", @@ -1673,7 +1485,7 @@ version = "0.50.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -1703,12 +1515,6 @@ dependencies = [ "autocfg", ] -[[package]] -name = "number_prefix" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b246a0e5f20af87141b25c173cd1b609bd7779a4617d6ec582abaf90870f3" - [[package]] name = "obicompactvec" version = "0.1.0" @@ -1726,7 +1532,7 @@ version = "0.1.0" dependencies = [ "ahash", "crossbeam-channel", - "hashbrown 0.14.5", + "hashbrown", "obifastwrite", "obikseq", "rayon", @@ -1756,7 +1562,7 @@ dependencies = [ "anyhow", "crossbeam-channel", "hwlocality", - "indicatif 0.17.11", + "indicatif", "ndarray", "obicompactvec", "obikpartitionner", @@ -1780,7 +1586,7 @@ version = "1.2.2" dependencies = [ "clap", "csv", - "indicatif 0.18.6", + "indicatif", "kodama", "obidebruinj", "obifastwrite", @@ -1812,9 +1618,9 @@ version = "0.1.0" dependencies = [ "cacheline-ef", "epserde", - "indicatif 0.17.11", + "indicatif", "memmap2", - "niffler 3.0.0", + "niffler", "obicompactvec", "obidebruinj", "obikentropy", @@ -1852,7 +1658,7 @@ dependencies = [ "obiskbuilder", "obiskio", "obisys", - "rand 0.8.6", + "rand 0.10.2", "rayon", "tempfile", "tracing", @@ -1908,15 +1714,15 @@ dependencies = [ name = "obiread" version = "0.1.0" dependencies = [ - "bzip2-sys", + "bzip2", "infer", - "liblzma-sys", - "niffler 2.7.0", + "liblzma", + "niffler", "obikrope", "regex", "tracing", "tracing-subscriber", - "ureq 2.12.1", + "ureq", ] [[package]] @@ -1937,9 +1743,9 @@ version = "0.1.0" dependencies = [ "lru", "memmap2", - "niffler 3.0.0", + "niffler", "obikseq", - "rustix 1.1.4", + "rustix", "serde", "serde_json", "tempfile", @@ -1949,8 +1755,7 @@ dependencies = [ name = "obisys" version = "0.1.0" dependencies = [ - "fs4", - "indicatif 0.17.11", + "indicatif", "libc", "sysinfo", "tracing", @@ -1960,6 +1765,63 @@ dependencies = [ name = "obitaxonomy" version = "0.1.0" +[[package]] +name = "objc2" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a12a8ed07aefc768292f076dc3ac8c48f3781c8f2d5851dd3d98950e8c5a89f" +dependencies = [ + "objc2-encode", +] + +[[package]] +name = "objc2-core-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a180dd8642fa45cdb7dd721cd4c11b1cadd4929ce112ebd8b9f5803cc79d536" +dependencies = [ + "bitflags 2.11.1", + "dispatch2", + "objc2", +] + +[[package]] +name = "objc2-encode" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef25abbcd74fb2609453eb695bd2f860d389e457f67dc17cafc8b8cbc89d0c33" + +[[package]] +name = "objc2-foundation" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e0adef53c21f888deb4fa59fc59f7eb17404926ee8a6f59f5df0fd7f9f3272" +dependencies = [ + "bitflags 2.11.1", + "objc2", +] + +[[package]] +name = "objc2-io-kit" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33fafba39597d6dc1fb709123dfa8289d39406734be322956a69f0931c73bb15" +dependencies = [ + "libc", + "objc2-core-foundation", +] + +[[package]] +name = "objc2-open-directory" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb82bed227edf5201dfedf072bba4015a33d3d4a98519837295a90f0a23f676d" +dependencies = [ + "objc2", + "objc2-core-foundation", + "objc2-foundation", +] + [[package]] name = "object" version = "0.37.3" @@ -2093,15 +1955,6 @@ dependencies = [ "portable-atomic", ] -[[package]] -name = "potential_utf" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0103b1cef7ec0cf76490e969665504990193874ea05c85ff9bab8b911d0a0564" -dependencies = [ - "zerovec", -] - [[package]] name = "pprof" version = "0.15.0" @@ -2275,6 +2128,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "r-efi" +version = "6.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8dcc9c7d52a811697d2151c701e0d08956f92b0e24136cf4cf27b57a6a0d9bf" + [[package]] name = "radium" version = "0.7.0" @@ -2302,6 +2161,17 @@ dependencies = [ "rand_core 0.9.5", ] +[[package]] +name = "rand" +version = "0.10.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7f5fa3a058cd35567ef9bfa5e75732bee0f9e4c55fa90477bef2dfcdbc4be80" +dependencies = [ + "chacha20", + "getrandom 0.4.3", + "rand_core 0.10.1", +] + [[package]] name = "rand_chacha" version = "0.3.1" @@ -2340,6 +2210,12 @@ dependencies = [ "getrandom 0.3.4", ] +[[package]] +name = "rand_core" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63b8176103e19a2643978565ca18b50549f6101881c443590420e4dc998a3c69" + [[package]] name = "rawpointer" version = "0.2.1" @@ -2427,9 +2303,9 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "remove_dir_all" -version = "0.8.4" +version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a694f9e0eb3104451127f6cc1e5de55f59d3b1fc8c5ddfaeb6f1e716479ceb4a" +checksum = "808cc0b475acf76adf36f08ca49429b12aad9f678cb56143d5b3cb49b9a1dd08" dependencies = [ "cfg-if", "cvt", @@ -2474,19 +2350,6 @@ dependencies = [ "semver", ] -[[package]] -name = "rustix" -version = "0.38.44" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" -dependencies = [ - "bitflags 2.11.1", - "errno", - "libc", - "linux-raw-sys 0.4.15", - "windows-sys 0.59.0", -] - [[package]] name = "rustix" version = "1.1.4" @@ -2496,8 +2359,8 @@ dependencies = [ "bitflags 2.11.1", "errno", "libc", - "linux-raw-sys 0.12.1", - "windows-sys 0.59.0", + "linux-raw-sys", + "windows-sys 0.61.2", ] [[package]] @@ -2805,17 +2668,6 @@ dependencies = [ "unicode-ident", ] -[[package]] -name = "synstructure" -version = "0.13.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "sysctl" version = "0.5.5" @@ -2832,16 +2684,17 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.33.1" +version = "0.39.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fc858248ea01b66f19d8e8a6d55f41deaf91e9d495246fd01368d99935c6c01" +checksum = "d2071df9448915b71c4fe6d25deaf1c22f12bd234f01540b77312bb8e41361e6" dependencies = [ - "core-foundation-sys", "libc", "memchr", "ntapi", - "rayon", - "windows 0.57.0", + "objc2-core-foundation", + "objc2-io-kit", + "objc2-open-directory", + "windows 0.62.2", ] [[package]] @@ -2868,10 +2721,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32497e9a4c7b38532efcdebeef879707aa9f794296a4f0244f6f69e9bc8574bd" dependencies = [ "fastrand", - "getrandom 0.3.4", + "getrandom 0.4.3", "once_cell", - "rustix 1.1.4", - "windows-sys 0.59.0", + "rustix", + "windows-sys 0.61.2", ] [[package]] @@ -2943,16 +2796,6 @@ dependencies = [ "tikv-jemalloc-sys", ] -[[package]] -name = "tinystr" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8323304221c2a851516f22236c5722a72eaa19749016521d6dff0824447d96d" -dependencies = [ - "displaydoc", - "zerovec", -] - [[package]] name = "tinytemplate" version = "1.2.1" @@ -3074,25 +2917,9 @@ checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "ureq" -version = "2.12.1" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d1a66277ed75f640d608235660df48c8e3c19f3b4edb6a263315626cc3c01d" -dependencies = [ - "base64", - "flate2", - "log", - "once_cell", - "rustls", - "rustls-pki-types", - "url", - "webpki-roots 0.26.11", -] - -[[package]] -name = "ureq" -version = "3.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dea7109cdcd5864d4eeb1b58a1648dc9bf520360d7af16ec26d0a9354bafcfc0" +checksum = "972d7902c8735f2695410b8aed7df6ed12a47394aa1c8d7af49f0497b731a94d" dependencies = [ "base64", "flate2", @@ -3102,14 +2929,14 @@ dependencies = [ "rustls-pki-types", "ureq-proto", "utf8-zero", - "webpki-roots 1.0.7", + "webpki-roots", ] [[package]] name = "ureq-proto" -version = "0.6.0" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e994ba84b0bd1b1b0cf92878b7ef898a5c1760108fe7b6010327e274917a808c" +checksum = "da5f78b09e6941e1a0f2e30e695e4b120377b54d5e0aec11b594bb57b3971613" dependencies = [ "base64", "http", @@ -3117,30 +2944,12 @@ dependencies = [ "log", ] -[[package]] -name = "url" -version = "2.5.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff67a8a4397373c3ef660812acab3268222035010ab8680ec4215f38ba3d0eed" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", - "serde", -] - [[package]] name = "utf8-zero" version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b8c0a043c9540bae7c578c88f91dda8bd82e59ae27c21baca69c8b191aaf5a6e" -[[package]] -name = "utf8_iter" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" - [[package]] name = "utf8parse" version = "0.2.2" @@ -3268,15 +3077,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "webpki-roots" -version = "0.26.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" -dependencies = [ - "webpki-roots 1.0.7", -] - [[package]] name = "webpki-roots" version = "1.0.7" @@ -3314,7 +3114,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.59.0", + "windows-sys 0.61.2", ] [[package]] @@ -3334,31 +3134,54 @@ dependencies = [ [[package]] name = "windows" -version = "0.57.0" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" +checksum = "527fadee13e0c05939a6a05d5bd6eec6cd2e3dbd648b9f8e447c6518133d8580" +dependencies = [ + "windows-collections", + "windows-core", + "windows-future", + "windows-numerics", +] + +[[package]] +name = "windows-collections" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b2d95af1a8a14a3c7367e1ed4fc9c20e0a26e79551b1454d72583c97cc6610" dependencies = [ "windows-core", - "windows-targets 0.52.6", ] [[package]] name = "windows-core" -version = "0.57.0" +version = "0.62.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" dependencies = [ "windows-implement", "windows-interface", + "windows-link", "windows-result", - "windows-targets 0.52.6", + "windows-strings", +] + +[[package]] +name = "windows-future" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1d6f90251fe18a279739e78025bd6ddc52a7e22f921070ccdc67dde84c605cb" +dependencies = [ + "windows-core", + "windows-link", + "windows-threading", ] [[package]] name = "windows-implement" -version = "0.57.0" +version = "0.60.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", @@ -3367,9 +3190,9 @@ dependencies = [ [[package]] name = "windows-interface" -version = "0.57.0" +version = "0.59.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", @@ -3383,12 +3206,31 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" [[package]] -name = "windows-result" -version = "0.1.2" +name = "windows-numerics" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +checksum = "6e2e40844ac143cdb44aead537bbf727de9b044e107a0f1220392177d15b0f26" dependencies = [ - "windows-targets 0.52.6", + "windows-core", + "windows-link", +] + +[[package]] +name = "windows-result" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" +dependencies = [ + "windows-link", ] [[package]] @@ -3449,6 +3291,15 @@ dependencies = [ "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-threading" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3949bd5b99cafdf1c7ca86b43ca564028dfe27d66958f2470940f73d86d75b37" +dependencies = [ + "windows-link", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -3545,12 +3396,6 @@ version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" -[[package]] -name = "writeable" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ffae5123b2d3fc086436f8834ae3ab053a283cfac8fe0a0b8eaae044768a4c4" - [[package]] name = "wyz" version = "0.5.1" @@ -3567,7 +3412,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" dependencies = [ "libc", - "rustix 1.1.4", + "rustix", ] [[package]] @@ -3576,29 +3421,6 @@ version = "0.8.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aee1b19627c7c60102ab80d3a9cbe18de90bfe03bfa6c3715447681f0e8c8af6" -[[package]] -name = "yoke" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abe8c5fda708d9ca3df187cae8bfb9ceda00dd96231bed36e445a1a48e66f9ca" -dependencies = [ - "stable_deref_trait", - "yoke-derive", - "zerofrom", -] - -[[package]] -name = "yoke-derive" -version = "0.8.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de844c262c8848816172cef550288e7dc6c7b7814b4ee56b3e1553f275f1858e" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", - "synstructure", -] - [[package]] name = "zerocopy" version = "0.8.48" @@ -3619,66 +3441,12 @@ dependencies = [ "syn 2.0.117", ] -[[package]] -name = "zerofrom" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "69faa1f2a1ea75661980b013019ed6687ed0e83d069bc1114e2cc74c6c04c4df" -dependencies = [ - "zerofrom-derive", -] - -[[package]] -name = "zerofrom-derive" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11532158c46691caf0f2593ea8358fed6bbf68a0315e80aae9bd41fbade684a1" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", - "synstructure", -] - [[package]] name = "zeroize" version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" -[[package]] -name = "zerotrie" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f9152d31db0792fa83f70fb2f83148effb5c1f5b8c7686c3459e361d9bc20bf" -dependencies = [ - "displaydoc", - "yoke", - "zerofrom", -] - -[[package]] -name = "zerovec" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90f911cbc359ab6af17377d242225f4d75119aec87ea711a880987b18cd7b239" -dependencies = [ - "yoke", - "zerofrom", - "zerovec-derive", -] - -[[package]] -name = "zerovec-derive" -version = "0.11.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "625dc425cab0dca6dc3c3319506e6593dcb08a9f387ea3b284dbd52a92c40555" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.117", -] - [[package]] name = "zmij" version = "1.0.21" diff --git a/src/obicompactvec/Cargo.toml b/src/obicompactvec/Cargo.toml index 7e5f1bd7..8ccc2195 100644 --- a/src/obicompactvec/Cargo.toml +++ b/src/obicompactvec/Cargo.toml @@ -6,7 +6,7 @@ edition = "2024" [dependencies] common_traits = "0.11" memmap2 = "0.9" -ndarray = "0.16" +ndarray = "0.17" rayon = "1" tempfile = "3" diff --git a/src/obidebruinj/Cargo.toml b/src/obidebruinj/Cargo.toml index feb58487..301999a8 100644 --- a/src/obidebruinj/Cargo.toml +++ b/src/obidebruinj/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" obikseq = { path = "../obikseq" } obifastwrite = { path = "../obifastwrite" } ahash = "0.8" -hashbrown = { version = "0.14", features = ["rayon"] } +hashbrown = { version = "0.17", features = ["rayon"] } rayon = "1" crossbeam-channel = "0.5" xxhash-rust = { version = "0.8.15", features = ["xxh3", "const_xxh3"] } diff --git a/src/obikindex/Cargo.toml b/src/obikindex/Cargo.toml index 753706bb..e0707278 100644 --- a/src/obikindex/Cargo.toml +++ b/src/obikindex/Cargo.toml @@ -11,12 +11,12 @@ obiskio = { path = "../obiskio" } obisys = { path = "../obisys" } obicompactvec = { path = "../obicompactvec" } obilayeredmap = { path = "../obilayeredmap" } -ndarray = "0.16" +ndarray = "0.17" rayon = "1" crossbeam-channel = "0.5" serde = { version = "1", features = ["derive"] } serde_json = "1" -indicatif = "0.17" +indicatif = "0.18" tracing = "0.1.44" hwlocality = { version = "1.0.0-alpha.11", features = ["vendored"], optional = true } diff --git a/src/obikpartitionner/Cargo.toml b/src/obikpartitionner/Cargo.toml index 918606f8..310b746d 100644 --- a/src/obikpartitionner/Cargo.toml +++ b/src/obikpartitionner/Cargo.toml @@ -11,7 +11,7 @@ obikrope = { path = "../obikrope" } [dependencies] niffler = "3.0.0" -remove_dir_all = "0.8" +remove_dir_all = "1.0" obikseq = { path = "../obikseq" } obikentropy = { path = "../obikentropy" } obiskbuilder = { path = "../obiskbuilder" } @@ -19,7 +19,7 @@ obiskio = { path = "../obiskio" } obidebruinj = { path = "../obidebruinj" } obilayeredmap = { path = "../obilayeredmap" } rayon = "1" -sysinfo = "0.33" +sysinfo = "0.39" serde = { version = "1", features = ["derive"] } serde_json = "1" tracing = "0.1.44" @@ -28,6 +28,6 @@ epserde = "0.8" memmap2 = "0.9.10" obicompactvec = { path = "../obicompactvec" } ptr_hash = "1.1" -indicatif = "0.17" +indicatif = "0.18" obisys = { path = "../obisys" } obipipeline = { path = "../obipipeline" } diff --git a/src/obikphylo/Cargo.toml b/src/obikphylo/Cargo.toml index ab043056..35b1f7f0 100644 --- a/src/obikphylo/Cargo.toml +++ b/src/obikphylo/Cargo.toml @@ -14,8 +14,8 @@ obilayeredmap = { path = "../obilayeredmap" } obiskbuilder = { path = "../obiskbuilder" } obipipeline = { path = "../obipipeline" } memmap2 = "0.9" -ndarray = "0.16" -rand = "0.8" +ndarray = "0.17" +rand = "0.10" rayon = "1" tracing = "0.1.44" diff --git a/src/obikphylo/src/siblings/subsample.rs b/src/obikphylo/src/siblings/subsample.rs index 05653053..fc6b0a32 100644 --- a/src/obikphylo/src/siblings/subsample.rs +++ b/src/obikphylo/src/siblings/subsample.rs @@ -22,7 +22,7 @@ use std::collections::HashSet; use std::path::{Path, PathBuf}; -use rand::Rng; +use rand::RngExt; use rayon::prelude::*; use obikindex::{KmerIndex, OKIError, OKIResult}; @@ -97,7 +97,7 @@ fn reservoir_sample_layer(layer_dir: &Path, n_layer: usize) -> OKIResult = Vec::with_capacity(n_layer); let mut seen: u64 = 0; let mut family_idx: usize = 0; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); for slot in 0..annex.len() { let Some(mask) = annex.get(slot) else { continue }; if !mask.is_minorant() { @@ -111,7 +111,7 @@ fn reservoir_sample_layer(layer_dir: &Path, n_layer: usize) -> OKIResult let entropy_annex = EntropyAnnex::open(&layer_dir.join(ENTROPY_ANNEX_FILE_NAME)).map_err(OKIError::Io)?; let mut selected = HashSet::new(); let mut family_idx: usize = 0; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); for slot in 0..annex.len() { let Some(mask) = annex.get(slot) else { continue }; if !mask.is_minorant() { @@ -207,7 +207,7 @@ fn entropy_biased_sample_layer(layer_dir: &Path, p0: f64, bias: EntropyBias) -> let Some(entropy) = entropy_annex.get(this_family_idx) else { continue }; let d = (entropy as f64 - bias.mu) / bias.sigma; let w = (-0.5 * d * d).exp(); - if rng.r#gen::() < p0 * w { + if rng.random::() < p0 * w { selected.insert(this_family_idx); } } diff --git a/src/obilayeredmap/Cargo.toml b/src/obilayeredmap/Cargo.toml index 2f94494c..ef573ef9 100644 --- a/src/obilayeredmap/Cargo.toml +++ b/src/obilayeredmap/Cargo.toml @@ -11,7 +11,7 @@ ptr_hash = "1.1" cacheline-ef = "1.1" epserde = "0.8" rayon = "1" -ndarray = "0.16" +ndarray = "0.17" bitvec = "1" memmap2 = "0.9" serde = { version = "1", features = ["derive"] } diff --git a/src/obiread/Cargo.toml b/src/obiread/Cargo.toml index dd91e39b..10b20c97 100644 --- a/src/obiread/Cargo.toml +++ b/src/obiread/Cargo.toml @@ -5,11 +5,15 @@ edition = "2024" [dependencies] obikrope = { path = "../obikrope" } -niffler = { version = "2", default-features = false, features = ["gz", "bz2", "lzma", "zstd"] } -bzip2-sys = { version = "0.1", features = ["static"] } -liblzma-sys = { version = "0.3", features = ["static"] } -ureq = "2" +niffler = { version = "3", default-features = false, features = ["gz", "bz2", "lzma", "zstd"] } +# `niffler`'s plain "bz2" feature only pulls the `bzip2` crate, without +# picking a backend — its own "default" feature is what forwards +# "bzip2/default" (the pure-Rust libbz2-rs-sys backend). Depend on it +# directly, default features on, purely to select that backend. +bzip2 = "0.6" +liblzma = { version = "0.4", features = ["static"] } +ureq = "3" tracing = "0.1.44" tracing-subscriber = { version = "0.3.23", features = ["fmt", "env-filter"] } -infer = "0.19.0" +infer = "0.22.0" regex = "1" diff --git a/src/obiread/src/xopen.rs b/src/obiread/src/xopen.rs index f86585c4..78da48f2 100644 --- a/src/obiread/src/xopen.rs +++ b/src/obiread/src/xopen.rs @@ -52,7 +52,7 @@ fn http_reader(url: &str) -> io::Result> { ureq::get(url) .call() .map_err(|e| io::Error::new(io::ErrorKind::Other, e.to_string())) - .map(|resp| -> Box { Box::new(resp.into_reader()) }) + .map(|resp| -> Box { Box::new(resp.into_body().into_reader()) }) } fn decompress(raw: Box) -> io::Result> { diff --git a/src/obiskio/Cargo.toml b/src/obiskio/Cargo.toml index 5a04f40a..b0d093dc 100644 --- a/src/obiskio/Cargo.toml +++ b/src/obiskio/Cargo.toml @@ -6,7 +6,7 @@ edition = "2024" [dependencies] niffler = "3.0.0" rustix = { version = "1.1.4", features = ["process"] } -lru = "0.12" +lru = "0.18" serde = { version = "1", features = ["derive"] } serde_json = "1" diff --git a/src/obisys/Cargo.toml b/src/obisys/Cargo.toml index 966e22ed..8c41ad77 100644 --- a/src/obisys/Cargo.toml +++ b/src/obisys/Cargo.toml @@ -5,7 +5,6 @@ edition = "2024" [dependencies] libc = "0.2" -sysinfo = "0.33" -indicatif = "0.17" +sysinfo = "0.39" +indicatif = "0.18" tracing = "0.1" -fs4 = "0.9" diff --git a/src/obisys/src/lock.rs b/src/obisys/src/lock.rs index c5e771d8..9b88bb31 100644 --- a/src/obisys/src/lock.rs +++ b/src/obisys/src/lock.rs @@ -11,9 +11,9 @@ use tracing::info; /// only needs to lock the destination. /// /// Uses the OS's advisory file lock (`flock` on Unix, `LockFileEx` on -/// Windows) via `fs4`, not a hand-rolled PID file: the OS releases it -/// automatically on process exit, including a crash — no stale-lock cleanup -/// logic needed. +/// Windows) via `std::fs::File::lock`/`try_lock`, not a hand-rolled PID +/// file: the OS releases it automatically on process exit, including a +/// crash — no stale-lock cleanup logic needed. pub struct DirLock { _file: std::fs::File, } @@ -23,8 +23,6 @@ impl DirLock { /// and the lock file within it if needed). Logs once if the wait is /// non-trivial, so a blocked command doesn't look silently hung. pub fn acquire(dir: &std::path::Path) -> std::io::Result { - use fs4::fs_std::FileExt; - std::fs::create_dir_all(dir)?; let lock_path = dir.join(".obikmer.lock"); let file = std::fs::OpenOptions::new() @@ -33,9 +31,9 @@ impl DirLock { .write(true) .open(&lock_path)?; - if file.try_lock_exclusive().is_err() { + if file.try_lock().is_err() { info!(dir = %dir.display(), "waiting for another obikmer process to release this index"); - file.lock_exclusive()?; + file.lock()?; } Ok(Self { _file: file }) }