diff --git a/CHANGELOG.md b/CHANGELOG.md index 268b0f4..5ddf7db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,28 +1,40 @@ # Change Log +## v0.12.5 - 2024-10-14 + +### Added + +- Add new joint-call `--report-supporting-reads` option to report read names supporting each variant + +### Changed + +- CR-390 Canonicalize all discover mode input paths + - Also provide new `--disable-path-canonicalization` discover step option to store input paths as-is +- CR-391 Don't create output directory until command line is validated + ## v0.12.4 - 2024-09-13 ### Added --CR-384 Add debug logging option +- CR-384 Add debug logging option - High detail level intended to improve crash reports from external users - Initially populated for breakpoint refinement only, debug log coverage will be expanded as required - Expose clobber option to overwrite existing output directory ### Fixed --CR-385 Improve error message for unexpected alignment patterns from VACmap +- CR-385 Improve error message for unexpected alignment patterns from VACmap - This also adjusts some off-by-one errors in neighbor extension handling, which could cause infrequent changes to inversion output - Note VACmap is still unsupported; working towards clear error messages for problematic alignments from any source ## v0.12.3 - 2024-09-03 ### Fixed --CR-378 Improve error message for hard-clipped split read input --CR-379 Improve error message when discover directory is missing +- CR-378 Improve error message for hard-clipped split read input +- CR-379 Improve error message when discover directory is missing ## v0.12.2 - 2024-08-21 ### Fixed --CR-377 Remove `rq` tag requirement in input alignment records +- CR-377 Remove `rq` tag requirement in input alignment records ## v0.12.1 - 2024-08-08 diff --git a/Cargo.lock b/Cargo.lock index 318fcbe..76b6db1 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3,10 +3,10 @@ version = 3 [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "aho-corasick" @@ -34,57 +34,58 @@ dependencies = [ [[package]] name = "anstream" -version = "0.6.13" +version = "0.6.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +checksum = "64e15c1ab1f89faffbf04a634d5e1962e9074f2741eef6d97f3c4e322426d526" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.6" +version = "1.0.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" +checksum = "1bec1de6f59aedf83baf9ff929c98f2ad654b97c9510f4e70cf6f661d49fd5b1" [[package]] name = "anstyle-parse" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +checksum = "eb47de1e80c2b463c735db5b217a0ddc39d612e7ac9e2e96a5aed1f57616c1cb" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.2" +version = "1.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +checksum = "6d36fc52c7f6c869915e99412912f22093507da8d9e942ceaf66fe4b7c14422a" dependencies = [ - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.2" +version = "3.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +checksum = "5bf74e1b6e971609db8ca7a9ce79fd5768ab6ae46441c572e46cf596f59e57f8" dependencies = [ "anstyle", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] name = "anyhow" -version = "1.0.86" +version = "1.0.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" +checksum = "4e1496f8fb1fbf272686b8d37f523dab3e4a7443300055e74cdaa449f3114356" [[package]] name = "approx" @@ -97,9 +98,9 @@ dependencies = [ [[package]] name = "autocfg" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1fdabc7756949593fe60f30ec81974b613357de856987752631dea1e3394c80" +checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" [[package]] name = "base-x" @@ -119,6 +120,24 @@ dependencies = [ "itertools 0.12.1", "lazy_static", "lazycell", + "proc-macro2", + "quote", + "regex", + "rustc-hash", + "shlex", + "syn 2.0.77", +] + +[[package]] +name = "bindgen" +version = "0.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f49d8fed880d473ea71efb9bf597651e77201bdd4893efe54c9e5d65ae04ce6f" +dependencies = [ + "bitflags", + "cexpr", + "clang-sys", + "itertools 0.13.0", "log", "prettyplease", "proc-macro2", @@ -126,15 +145,14 @@ dependencies = [ "regex", "rustc-hash", "shlex", - "syn 2.0.60", - "which", + "syn 2.0.77", ] [[package]] name = "bio" -version = "2.0.1" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8cbd545253762ecf9ef741f2c49f07c06a0ce4d041d74ee9c3f1ce0e2d5446e" +checksum = "d563b9298d39b3bdb5c45f6e91e0bdcb18d67e6d8fa034a733b7283f2db5ed29" dependencies = [ "anyhow", "approx", @@ -147,7 +165,7 @@ dependencies = [ "editdistancek", "enum-map", "fxhash", - "itertools 0.12.1", + "itertools 0.13.0", "itertools-num", "lazy_static", "multimap", @@ -163,7 +181,7 @@ dependencies = [ "serde_derive", "statrs", "strum", - "strum_macros 0.26.4", + "strum_macros", "thiserror", "triple_accel", "vec_map", @@ -171,14 +189,14 @@ dependencies = [ [[package]] name = "bio-types" -version = "1.0.1" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d45749b87f21808051025e9bf714d14ff4627f9d8ca967eade6946ea769aa4a" +checksum = "f4dcf54f8b7f51450207d54780bab09c05f30b8b0caa991545082842e466ad7e" dependencies = [ - "derive-new", + "derive-new 0.6.0", "lazy_static", "regex", - "strum_macros 0.25.3", + "strum_macros", "thiserror", ] @@ -199,9 +217,9 @@ checksum = "5e764a1d40d510daf35e07be9eb06e75770908c27d411ee6c92109c9840eaaf7" [[package]] name = "bitflags" -version = "2.5.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "bumpalo" @@ -227,9 +245,9 @@ checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "bytemuck" -version = "1.15.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" +checksum = "94bbb0ad554ad961ddc5da507a12a29b14e4ae5bda06b19f575a3e6079d2e2ae" [[package]] name = "byteorder" @@ -239,13 +257,13 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "cc" -version = "1.0.95" +version = "1.1.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d32a725bc159af97c3e629873bb9f88fb8cf8a4867175f76dc987815ea07c83b" +checksum = "b62ac837cdb5cb22e10a256099b4fc502b1dfe560cb282963a974d7abd80e476" dependencies = [ "jobserver", "libc", - "once_cell", + "shlex", ] [[package]] @@ -279,9 +297,9 @@ dependencies = [ [[package]] name = "clang-sys" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" +checksum = "0b023947811758c97c59bf9d1c188fd619ad4718dcaa767947df1cadb14f39f4" dependencies = [ "glob", "libc", @@ -290,9 +308,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.4" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +checksum = "3e5a21b8495e732f1b3c364c9949b201ca7bae518c502c80256c96ad79eaf6ac" dependencies = [ "clap_builder", "clap_derive", @@ -300,9 +318,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.2" +version = "4.5.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +checksum = "8cf2dd12af7a047ad9d6da2b6b249759a22a7abc0f474c1dae1777afa4b21a73" dependencies = [ "anstream", "anstyle", @@ -312,27 +330,27 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.4" +version = "4.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +checksum = "501d359d5f3dcaf6ecdeee48833ae73ec6e42723a1e52419c79abf9507eec0a0" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.77", ] [[package]] name = "clap_lex" -version = "0.7.0" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" +checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" [[package]] name = "cmake" -version = "0.1.50" +version = "0.1.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" +checksum = "fb1e43aa7fd152b1f968787f7dbcdeb306d1867ff373c69955211876c053f91a" dependencies = [ "cc", ] @@ -349,9 +367,9 @@ dependencies = [ [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "d3fd119d74b830634cea2a0f58bbd0d54540518a14397557951e79340abc28c0" [[package]] name = "console" @@ -363,7 +381,7 @@ dependencies = [ "lazy_static", "libc", "unicode-width", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -374,18 +392,18 @@ checksum = "373e9fafaa20882876db20562275ff58d50e0caa2590077fe7ce7bef90211d0d" [[package]] name = "const_format" -version = "0.2.32" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3a214c7af3d04997541b18d432afaff4c455e79e2029079647e72fc2bd27673" +checksum = "50c655d81ff1114fb0dcdea9225ea9f0cc712a6f8d189378e82bdf62a473a64b" dependencies = [ "const_format_proc_macros", ] [[package]] name = "const_format_proc_macros" -version = "0.2.32" +version = "0.2.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7f6ff08fd20f4f299298a28e2dfa8a8ba1036e6cd2460ac1de7b425d76f2500" +checksum = "eff1a44b93f47b1bac19a27932f5c591e43d1ba357ee4f61526c8a25603f0eb1" dependencies = [ "proc-macro2", "quote", @@ -394,9 +412,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.6" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "crc32fast" @@ -428,9 +446,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.19" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "csv" @@ -461,9 +479,9 @@ checksum = "ef8ae57c4978a2acd8b869ce6b9ca1dfe817bff704c220209fdef2c0b75a01b9" [[package]] name = "cxx" -version = "1.0.126" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c4eae4b7fc8dcb0032eb3b1beee46b38d371cdeaf2d0c64b9944f6f69ad7755" +checksum = "54ccead7d199d584d139148b04b4a368d1ec7556a1d9ea2548febb1b9d49f9a4" dependencies = [ "cc", "cxxbridge-flags", @@ -473,9 +491,9 @@ dependencies = [ [[package]] name = "cxx-build" -version = "1.0.126" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c822bf7fb755d97328d6c337120b6f843678178751cba33c9da25cf522272e0" +checksum = "c77953e99f01508f89f55c494bfa867171ef3a6c8cea03d26975368f2121a5c1" dependencies = [ "cc", "codespan-reporting", @@ -483,24 +501,24 @@ dependencies = [ "proc-macro2", "quote", "scratch", - "syn 2.0.60", + "syn 2.0.77", ] [[package]] name = "cxxbridge-flags" -version = "1.0.126" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719d6197dc016c88744aff3c0d0340a01ecce12e8939fc282e7c8f583ee64bc6" +checksum = "65777e06cc48f0cb0152024c77d6cf9e4bdb4408e7b48bea993d42fa0f5b02b6" [[package]] name = "cxxbridge-macro" -version = "1.0.126" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35de3b547387863c8f82013c4f79f1c2162edee956383e4089e1d04c18c4f16c" +checksum = "98532a60dedaebc4848cb2cba5023337cc9ea3af16a5b062633fabfd9f18fb60" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.77", ] [[package]] @@ -524,7 +542,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.60", + "syn 2.0.77", ] [[package]] @@ -535,7 +553,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.60", + "syn 2.0.77", ] [[package]] @@ -558,6 +576,17 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "derive-new" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d150dea618e920167e5973d70ae6ece4385b7164e0d799fe7c122dd0a5d912ad" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] + [[package]] name = "derive_builder" version = "0.20.1" @@ -576,7 +605,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.77", ] [[package]] @@ -586,7 +615,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4abae7035bf79b9877b779505d8cf3749285b80c43941eda66604841889451dc" dependencies = [ "derive_builder_core", - "syn 2.0.60", + "syn 2.0.77", ] [[package]] @@ -603,9 +632,9 @@ checksum = "3e02df23d5b1c6f9e69fa603b890378123b93073df998a21e6e33b9db0a32613" [[package]] name = "either" -version = "1.11.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "encode_unicode" @@ -630,7 +659,7 @@ checksum = "f282cfdfe92516eb26c2af8589c274c7c17681f5ecc03c18255fe741c6aa64eb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.77", ] [[package]] @@ -641,12 +670,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" dependencies = [ "libc", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -657,9 +686,9 @@ checksum = "de853764b47027c2e862a995c34978ffa63c1501f2e15f987ba11bd4f9bba193" [[package]] name = "fastrand" -version = "2.0.2" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "658bd65b1cf4c852a3cc96f18a8ce7b5640f6b703f905c7d74532294c2a63984" +checksum = "e8c02a5121d4ea3eb16a80748c74f5549a5665e4c21333c6098f283870fbdea6" [[package]] name = "feature-probe" @@ -684,9 +713,9 @@ checksum = "0ce7134b9999ecaf8bcd65542e436736ef32ddca1b3e06094cb6ec5755203b80" [[package]] name = "flate2" -version = "1.0.31" +version = "1.0.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f211bbe8e69bbd0cfdea405084f128ae8b4aaa6b0b522fc8f2b009084797920" +checksum = "324a1be68054ef05ad64b861cc9eaf1d623d2d8cb25b4bf2cb9cdd902b4bf253" dependencies = [ "crc32fast", "miniz_oxide", @@ -727,9 +756,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.14" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b22e06ecb0110981051723910cbf0b5f5e09a2062dd7663334ee79a9d1286c" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -738,14 +767,14 @@ dependencies = [ [[package]] name = "getset" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e45727250e75cc04ff2846a66397da8ef2b3db8e40e0cef4df67950a07621eb9" +checksum = "f636605b743120a8d32ed92fc27b6cde1a769f8f936c065151eb66f88ded513c" dependencies = [ - "proc-macro-error", + "proc-macro-error2", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.77", ] [[package]] @@ -756,15 +785,9 @@ checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "hashbrown" -version = "0.14.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "heck" @@ -788,22 +811,13 @@ dependencies = [ "time 0.2.27", ] -[[package]] -name = "home" -version = "0.5.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" -dependencies = [ - "windows-sys", -] - [[package]] name = "hts-sys" version = "2.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9f348d14cb4e50444e39fcd6b00302fe2ed2bc88094142f6278391d349a386d" dependencies = [ - "bindgen", + "bindgen 0.69.4", "cc", "fs-utils", "glob", @@ -857,9 +871,9 @@ checksum = "9007da9cacbd3e6343da136e98b0d2df013f553d35bdec8b518f07bea768e19c" [[package]] name = "indexmap" -version = "2.2.6" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "68b900aa2f7301e21c36462b170ee99994de34dff39a4a6a528e80e7376d07e5" dependencies = [ "equivalent", "hashbrown", @@ -887,6 +901,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "is_terminal_polyfill" +version = "1.70.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" + [[package]] name = "itertools" version = "0.12.1" @@ -922,27 +942,27 @@ checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" [[package]] name = "jobserver" -version = "0.1.31" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.69" +version = "0.3.70" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "1868808506b929d7b0cfa8f75951347aa71bb21144b7791bae35d9bccfcfe37a" dependencies = [ "wasm-bindgen", ] [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "lazycell" @@ -952,15 +972,15 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.153" +version = "0.2.158" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" +checksum = "d8adc4bb1803a324070e64a98ae98f38934d91957a99cfb3a43dcbc01bc56439" [[package]] name = "libloading" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +checksum = "4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4" dependencies = [ "cfg-if", "windows-targets", @@ -974,9 +994,9 @@ checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" [[package]] name = "libz-sys" -version = "1.1.16" +version = "1.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e143b5e666b2695d28f6bca6497720813f699c9602dd7f5cac91008b8ada7f9" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" dependencies = [ "cc", "cmake", @@ -1002,21 +1022,21 @@ dependencies = [ [[package]] name = "linux-raw-sys" -version = "0.4.13" +version = "0.4.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" [[package]] name = "log" -version = "0.4.21" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" [[package]] name = "matrixmultiply" -version = "0.3.8" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7574c1cf36da4798ab73da5b215bbf444f50718207754cb522201d78d1cd0ff2" +checksum = "9380b911e3e96d10c1f415da0876389aaf1b56759054eeb0de7df940c456ba1a" dependencies = [ "autocfg", "rawpointer", @@ -1024,9 +1044,9 @@ dependencies = [ [[package]] name = "memchr" -version = "2.7.2" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "minimal-lexical" @@ -1036,18 +1056,18 @@ checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" [[package]] name = "miniz_oxide" -version = "0.7.4" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8a240ddb74feaf34a79a7add65a741f3167852fba007066dcac1ca548d89c08" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] name = "multimap" -version = "0.9.1" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1a5d38b9b352dbd913288736af36af41c48d61b1a8cd34bcecd727561b7d511" +checksum = "defc4c55412d89136f966bbb339008b474350e5e6e78d2714439c386b3137a03" dependencies = [ "serde", ] @@ -1078,19 +1098,21 @@ checksum = "254a5372af8fc138e36684761d3c0cdb758a4410e938babcff1c860ce14ddbfc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.77", ] [[package]] name = "ndarray" -version = "0.15.6" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adb12d4e967ec485a5f71c6311fe28158e9d6f4bc4a447b474184d0f91a8fa32" +checksum = "882ed72dce9365842bf196bdeedf5055305f11fc8c03dee7bb0194a6cad34841" dependencies = [ "matrixmultiply", "num-complex", "num-integer", "num-traits", + "portable-atomic", + "portable-atomic-util", "rawpointer", ] @@ -1115,9 +1137,9 @@ dependencies = [ [[package]] name = "num" -version = "0.4.2" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3135b08af27d103b0a51f2ae0f8632117b7b185ccf931445affa8df530576a41" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ "num-bigint", "num-complex", @@ -1129,20 +1151,19 @@ dependencies = [ [[package]] name = "num-bigint" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "608e7659b5c3d7cba262d894801b9ec9d00de989e8a82bd4bef91d08da45cdc0" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ - "autocfg", "num-integer", "num-traits", ] [[package]] name = "num-complex" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23c6602fda94a57c990fe0df199a035d83576b496aa29f4e634a8ac6004e68a6" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] @@ -1164,9 +1185,9 @@ dependencies = [ [[package]] name = "num-iter" -version = "0.1.44" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d869c01cc0c455284163fd0092f1f93835385ccab5a98a0dcc497b2f8bf055a9" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -1175,11 +1196,10 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.4.1" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", "num-bigint", "num-integer", "num-traits", @@ -1187,9 +1207,9 @@ dependencies = [ [[package]] name = "num-traits" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0df0e5185db44f69b44f26786fe401b6c293d1907744beaa7fa62b2e5a517a" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", "libm", @@ -1237,9 +1257,9 @@ dependencies = [ [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "percent-encoding" @@ -1249,9 +1269,9 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "petgraph" -version = "0.6.4" +version = "0.6.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1d3afd2628e69da2be385eb6f2fd57c8ac7977ceeff6dc166ff1657b0e386a9" +checksum = "b4c5cc86750666a3ed20bdaf5ca2a0344f9c67674cae0515bec2da16fbaa47db" dependencies = [ "fixedbitset", "indexmap", @@ -1265,9 +1285,18 @@ checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265" + +[[package]] +name = "portable-atomic-util" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "fcdd8420072e66d54a407b3316991fe946ce3ab1083a7f575b2463866624704d" +dependencies = [ + "portable-atomic", +] [[package]] name = "powerfmt" @@ -1277,42 +1306,43 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "prettyplease" -version = "0.2.19" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ac2cf0f2e4f42b49f5ffd07dae8d746508ef7526c13940e5f524012ae6c6550" +checksum = "479cf940fbbb3426c32c5d5176f62ad57549a0bb84773423ba8be9d089f5faba" dependencies = [ "proc-macro2", - "syn 2.0.60", + "syn 2.0.77", ] [[package]] -name = "proc-macro-error" -version = "1.0.4" +name = "proc-macro-error-attr2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +checksum = "96de42df36bb9bba5542fe9f1a054b8cc87e172759a1868aa05c1f3acc89dfc5" dependencies = [ - "proc-macro-error-attr", "proc-macro2", "quote", - "syn 1.0.109", - "version_check", ] [[package]] -name = "proc-macro-error-attr" -version = "1.0.4" +name = "proc-macro-error2" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +checksum = "11ec05c52be0a07b08061f7dd003e7d7092e0472bc731b4af7bb1ef876109802" dependencies = [ + "proc-macro-error-attr2", "proc-macro2", "quote", - "version_check", + "syn 2.0.77", ] [[package]] @@ -1323,9 +1353,9 @@ checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.81" +version = "1.0.86" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77" dependencies = [ "unicode-ident", ] @@ -1338,9 +1368,9 @@ checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" [[package]] name = "quote" -version = "1.0.36" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1413,9 +1443,9 @@ dependencies = [ [[package]] name = "regex" -version = "1.10.4" +version = "1.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "4219d74c6b67a3654a9fbebc4b419e22126d13d2f3c4a07ee0cb61ff79a79619" dependencies = [ "aho-corasick", "memchr", @@ -1425,9 +1455,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df" dependencies = [ "aho-corasick", "memchr", @@ -1436,9 +1466,9 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b" [[package]] name = "rmp" @@ -1453,9 +1483,9 @@ dependencies = [ [[package]] name = "rmp-serde" -version = "1.2.0" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938a142ab806f18b88a97b0dea523d39e0fd730a064b035726adcfc58a8a5188" +checksum = "52e599a477cf9840e92f2cde9a7189e67b42c57532749bf90aea6ec10facd4db" dependencies = [ "byteorder", "rmp", @@ -1471,7 +1501,7 @@ dependencies = [ "bio-types", "byteorder", "custom_derive", - "derive-new", + "derive-new 0.5.9", "hts-sys", "ieee754", "lazy_static", @@ -1545,15 +1575,15 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.34" +version = "0.38.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +checksum = "8acb788b847c24f28525660c4d7758620a7210875711f79e7f663cc152726811" dependencies = [ "bitflags", "errno", "libc", "linux-raw-sys", - "windows-sys", + "windows-sys 0.52.0", ] [[package]] @@ -1564,15 +1594,15 @@ checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" [[package]] name = "ryu" -version = "1.0.17" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e86697c916019a8588c99b5fac3cead74ec0b4b819707a682fd4d23fa0ce1ba1" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "safe_arch" -version = "0.7.1" +version = "0.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f398075ce1e6a179b46f51bd88d0598b92b00d3551f1a2d4ac49e771b56ac354" +checksum = "c3460605018fdc9612bce72735cba0d27efbcd9904780d44c7e3a9948f96148a" dependencies = [ "bytemuck", ] @@ -1588,7 +1618,7 @@ dependencies = [ [[package]] name = "sawfish" -version = "0.12.4" +version = "0.12.5" dependencies = [ "approx", "bio", @@ -1649,31 +1679,32 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.198" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9846a40c979031340571da2545a4e5b7c4163bdae79b301d5f86d03979451fcc" +checksum = "c8e3592472072e6e22e0a54d5904d9febf8508f65fb8552499a1abc7d1078c3a" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.198" +version = "1.0.210" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e88edab869b01783ba905e7d0153f9fc1a6505a96e4ad3018011eedb838566d9" +checksum = "243902eda00fad750862fc144cea25caca5e20d615af0a81bee94ca738f1df1f" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.77", ] [[package]] name = "serde_json" -version = "1.0.116" +version = "1.0.128" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e17db7126d17feb94eb3fad46bf1a96b034e8aacbc2e775fe81505f8b0b2813" +checksum = "6ff5456707a1de34e7e37f2a6fd3d3f808c318259cbd01ab6377795054b483d8" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -1689,9 +1720,9 @@ dependencies = [ [[package]] name = "sha1_smol" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae1a47186c03a32177042e55dbc5fd5aee900b8e0069a8d70fba96a9375cd012" +checksum = "bbfa15b3dddfee50a0fff136974b3e1bde555604ba463834a7eb7deb6417705d" [[package]] name = "shlex" @@ -1714,9 +1745,9 @@ dependencies = [ [[package]] name = "simple-error" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8542b68b8800c3cda649d2c72d688b6907b30f1580043135d61669d4aad1c175" +checksum = "7e2accd2c41a0e920d2abd91b2badcfa1da784662f54fbc47e0e3a51f1e2e1cf" [[package]] name = "spoa" @@ -1820,20 +1851,7 @@ version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" dependencies = [ - "strum_macros 0.26.4", -] - -[[package]] -name = "strum_macros" -version = "0.25.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23dc1fa9ac9c169a78ba62f0b841814b7abae11bdd047b9c58f893439e309ea0" -dependencies = [ - "heck 0.4.1", - "proc-macro2", - "quote", - "rustversion", - "syn 2.0.60", + "strum_macros", ] [[package]] @@ -1842,11 +1860,11 @@ version = "0.26.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" dependencies = [ - "heck 0.5.0", + "heck", "proc-macro2", "quote", "rustversion", - "syn 2.0.60", + "syn 2.0.77", ] [[package]] @@ -1862,9 +1880,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.60" +version = "2.0.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" +checksum = "9f35bcdf61fd8e7be6caf75f429fdca8beb3ed76584befb503b1569faee373ed" dependencies = [ "proc-macro2", "quote", @@ -1873,14 +1891,15 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.10.1" +version = "3.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" +checksum = "04cbcdd0c794ebb0d4cf35e88edd2f7d2c4c3e9a5a6dab322839b321c6a87a64" dependencies = [ "cfg-if", "fastrand", + "once_cell", "rustix", - "windows-sys", + "windows-sys 0.59.0", ] [[package]] @@ -1894,22 +1913,22 @@ dependencies = [ [[package]] name = "thiserror" -version = "1.0.59" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0126ad08bff79f29fc3ae6a55cc72352056dfff61e3ff8bb7129476d44b23aa" +checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.59" +version = "1.0.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1cd413b5d558b4c5bf3680e324a6fa5014e7b7c067a51e69dbdf47eb7148b66" +checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.77", ] [[package]] @@ -1991,9 +2010,9 @@ dependencies = [ [[package]] name = "tinyvec" -version = "1.6.0" +version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938" dependencies = [ "tinyvec_macros", ] @@ -2024,9 +2043,9 @@ checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "e91b56cd4cadaeb79bbf1a5645f6b4f8dc5bde8834ad5894a8db35fda9efa1fe" [[package]] name = "unicode-normalization" @@ -2039,15 +2058,15 @@ dependencies = [ [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "229730647fbc343e3a80e463c1db7f78f3855d3f3739bee0dda773c9a037c90a" [[package]] name = "unwrap" @@ -2057,9 +2076,9 @@ checksum = "7e33648dd74328e622c7be51f3b40a303c63f93e6fa5f08778b6203a4c25c20f" [[package]] name = "url" -version = "2.5.0" +version = "2.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" +checksum = "22784dbdf76fdde8af1aeda5622b546b422b6fc585325248a2bf9f5e41e94d6c" dependencies = [ "form_urlencoded", "idna", @@ -2068,9 +2087,9 @@ dependencies = [ [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "vcpkg" @@ -2127,9 +2146,9 @@ dependencies = [ [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" @@ -2149,34 +2168,35 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a82edfc16a6c469f5f44dc7b571814045d60404b55a0ee849f9bcfa2e63dd9b5" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "9de396da306523044d3302746f1208fa71d7532227f15e347e2d93e4145dd77b" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.77", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "585c4c91a46b072c92e908d99cb1dcdf95c5218eeb6f3bf1efa991ee7a68cccf" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2184,49 +2204,37 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "afc340c74d9005395cf9dd098506f7f44e38f2b4a21c6aaacf9a105ea5e1e836" dependencies = [ "proc-macro2", "quote", - "syn 2.0.60", + "syn 2.0.77", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "c62a0a307cb4a311d3a07867860911ca130c3494e8c2719593806c08bc5d0484" [[package]] name = "wfa2-sys" version = "0.1.0" source = "git+https://github.com/ctsa/rust-wfa2.git#cf636d85fd9797929ef00f2adae96c35441e65c2" dependencies = [ - "bindgen", + "bindgen 0.70.1", "cmake", ] -[[package]] -name = "which" -version = "4.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" -dependencies = [ - "either", - "home", - "once_cell", - "rustix", -] - [[package]] name = "wide" -version = "0.7.16" +version = "0.7.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81a1851a719f11d1d2fea40e15c72f6c00de8c142d7ac47c1441cc7e4d0d5bc6" +checksum = "b828f995bf1e9622031f8009f8481a85406ce1f4d4588ff746d872043e855690" dependencies = [ "bytemuck", "safe_arch", @@ -2250,11 +2258,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.6" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -2281,11 +2289,20 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "windows-sys" +version = "0.59.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-targets" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -2299,48 +2316,69 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] name = "windows_i686_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.52.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.52.5" +version = "0.52.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" + +[[package]] +name = "zerocopy" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +dependencies = [ + "byteorder", + "zerocopy-derive", +] + +[[package]] +name = "zerocopy-derive" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.77", +] diff --git a/Cargo.toml b/Cargo.toml index 0785908..8dbaa60 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "sawfish" -version = "0.12.4" +version = "0.12.5" authors = ["Chris Saunders "] description = "Structural variant analysis for mapped PacBio HiFi reads" edition = "2021" diff --git a/LICENSE-THIRDPARTY.json b/LICENSE-THIRDPARTY.json index c3c688b..062de99 100644 --- a/LICENSE-THIRDPARTY.json +++ b/LICENSE-THIRDPARTY.json @@ -1,9 +1,9 @@ [ { - "name": "adler", - "version": "1.0.2", - "authors": "Jonas Schievink ", - "repository": "https://github.com/jonas-schievink/adler.git", + "name": "adler2", + "version": "2.0.0", + "authors": "Jonas Schievink |oyvindln ", + "repository": "https://github.com/oyvindln/adler2", "license": "0BSD OR Apache-2.0 OR MIT", "license_file": null, "description": "A simple clean-room implementation of the Adler-32 checksum" @@ -37,7 +37,7 @@ }, { "name": "anstream", - "version": "0.6.13", + "version": "0.6.15", "authors": null, "repository": "https://github.com/rust-cli/anstyle.git", "license": "Apache-2.0 OR MIT", @@ -46,7 +46,7 @@ }, { "name": "anstyle", - "version": "1.0.6", + "version": "1.0.8", "authors": null, "repository": "https://github.com/rust-cli/anstyle.git", "license": "Apache-2.0 OR MIT", @@ -55,7 +55,7 @@ }, { "name": "anstyle-parse", - "version": "0.2.3", + "version": "0.2.5", "authors": null, "repository": "https://github.com/rust-cli/anstyle.git", "license": "Apache-2.0 OR MIT", @@ -64,7 +64,7 @@ }, { "name": "anstyle-query", - "version": "1.0.2", + "version": "1.1.1", "authors": null, "repository": "https://github.com/rust-cli/anstyle", "license": "Apache-2.0 OR MIT", @@ -73,7 +73,7 @@ }, { "name": "anstyle-wincon", - "version": "3.0.2", + "version": "3.0.4", "authors": null, "repository": "https://github.com/rust-cli/anstyle.git", "license": "Apache-2.0 OR MIT", @@ -82,7 +82,7 @@ }, { "name": "anyhow", - "version": "1.0.86", + "version": "1.0.88", "authors": "David Tolnay ", "repository": "https://github.com/dtolnay/anyhow", "license": "Apache-2.0 OR MIT", @@ -100,7 +100,7 @@ }, { "name": "autocfg", - "version": "1.2.0", + "version": "1.3.0", "authors": "Josh Stone ", "repository": "https://github.com/cuviper/autocfg", "license": "Apache-2.0 OR MIT", @@ -125,9 +125,18 @@ "license_file": null, "description": "Automatically generates Rust FFI bindings to C and C++ libraries." }, + { + "name": "bindgen", + "version": "0.70.1", + "authors": "Jyun-Yan You |Emilio Cobos Álvarez |Nick Fitzgerald |The Servo project developers", + "repository": "https://github.com/rust-lang/rust-bindgen", + "license": "BSD-3-Clause", + "license_file": null, + "description": "Automatically generates Rust FFI bindings to C and C++ libraries." + }, { "name": "bio", - "version": "2.0.1", + "version": "2.0.3", "authors": "Johannes Köster ", "repository": "https://github.com/rust-bio/rust-bio", "license": "MIT", @@ -136,7 +145,7 @@ }, { "name": "bio-types", - "version": "1.0.1", + "version": "1.0.4", "authors": "Johannes Köster ", "repository": "https://github.com/rust-bio/rust-bio-types", "license": "MIT", @@ -163,7 +172,7 @@ }, { "name": "bitflags", - "version": "2.5.0", + "version": "2.6.0", "authors": "The Rust Project Developers", "repository": "https://github.com/bitflags/bitflags", "license": "Apache-2.0 OR MIT", @@ -199,7 +208,7 @@ }, { "name": "bytemuck", - "version": "1.15.0", + "version": "1.18.0", "authors": "Lokathor ", "repository": "https://github.com/Lokathor/bytemuck", "license": "Apache-2.0 OR MIT OR Zlib", @@ -217,7 +226,7 @@ }, { "name": "cc", - "version": "1.0.95", + "version": "1.1.18", "authors": "Alex Crichton ", "repository": "https://github.com/rust-lang/cc-rs", "license": "Apache-2.0 OR MIT", @@ -253,7 +262,7 @@ }, { "name": "clang-sys", - "version": "1.7.0", + "version": "1.8.1", "authors": "Kyle Mayes ", "repository": "https://github.com/KyleMayes/clang-sys", "license": "Apache-2.0", @@ -262,7 +271,7 @@ }, { "name": "clap", - "version": "4.5.4", + "version": "4.5.17", "authors": null, "repository": "https://github.com/clap-rs/clap", "license": "Apache-2.0 OR MIT", @@ -271,7 +280,7 @@ }, { "name": "clap_builder", - "version": "4.5.2", + "version": "4.5.17", "authors": null, "repository": "https://github.com/clap-rs/clap", "license": "Apache-2.0 OR MIT", @@ -280,25 +289,25 @@ }, { "name": "clap_derive", - "version": "4.5.4", + "version": "4.5.13", "authors": null, - "repository": "https://github.com/clap-rs/clap/tree/master/clap_derive", + "repository": "https://github.com/clap-rs/clap", "license": "Apache-2.0 OR MIT", "license_file": null, "description": "Parse command line argument by defining a struct, derive crate." }, { "name": "clap_lex", - "version": "0.7.0", + "version": "0.7.2", "authors": null, - "repository": "https://github.com/clap-rs/clap/tree/master/clap_lex", + "repository": "https://github.com/clap-rs/clap", "license": "Apache-2.0 OR MIT", "license_file": null, "description": "Minimal, flexible command line parser" }, { "name": "cmake", - "version": "0.1.50", + "version": "0.1.51", "authors": "Alex Crichton ", "repository": "https://github.com/rust-lang/cmake-rs", "license": "Apache-2.0 OR MIT", @@ -316,7 +325,7 @@ }, { "name": "colorchoice", - "version": "1.0.0", + "version": "1.0.2", "authors": null, "repository": "https://github.com/rust-cli/anstyle", "license": "Apache-2.0 OR MIT", @@ -343,7 +352,7 @@ }, { "name": "const_format", - "version": "0.2.32", + "version": "0.2.33", "authors": "rodrimati1992 ", "repository": "https://github.com/rodrimati1992/const_format_crates/", "license": "Zlib", @@ -352,7 +361,7 @@ }, { "name": "const_format_proc_macros", - "version": "0.2.32", + "version": "0.2.33", "authors": "rodrimati1992 ", "repository": "https://github.com/rodrimati1992/const_format_crates/", "license": "Zlib", @@ -361,7 +370,7 @@ }, { "name": "core-foundation-sys", - "version": "0.8.6", + "version": "0.8.7", "authors": "The Servo Project Developers", "repository": "https://github.com/servo/core-foundation-rs", "license": "Apache-2.0 OR MIT", @@ -397,7 +406,7 @@ }, { "name": "crossbeam-utils", - "version": "0.8.19", + "version": "0.8.20", "authors": null, "repository": "https://github.com/crossbeam-rs/crossbeam", "license": "Apache-2.0 OR MIT", @@ -433,7 +442,7 @@ }, { "name": "cxx", - "version": "1.0.126", + "version": "1.0.128", "authors": "David Tolnay ", "repository": "https://github.com/dtolnay/cxx", "license": "Apache-2.0 OR MIT", @@ -442,7 +451,7 @@ }, { "name": "cxx-build", - "version": "1.0.126", + "version": "1.0.128", "authors": "David Tolnay ", "repository": "https://github.com/dtolnay/cxx", "license": "Apache-2.0 OR MIT", @@ -451,7 +460,7 @@ }, { "name": "cxxbridge-flags", - "version": "1.0.126", + "version": "1.0.128", "authors": "David Tolnay ", "repository": "https://github.com/dtolnay/cxx", "license": "Apache-2.0 OR MIT", @@ -460,7 +469,7 @@ }, { "name": "cxxbridge-macro", - "version": "1.0.126", + "version": "1.0.128", "authors": "David Tolnay ", "repository": "https://github.com/dtolnay/cxx", "license": "Apache-2.0 OR MIT", @@ -512,6 +521,15 @@ "license_file": null, "description": "`#[derive(new)]` implements simple constructor functions for structs and enums." }, + { + "name": "derive-new", + "version": "0.6.0", + "authors": "Nick Cameron ", + "repository": "https://github.com/nrc/derive-new", + "license": "MIT", + "license_file": null, + "description": "`#[derive(new)]` implements simple constructor functions for structs and enums." + }, { "name": "derive_builder", "version": "0.20.1", @@ -559,7 +577,7 @@ }, { "name": "either", - "version": "1.11.0", + "version": "1.13.0", "authors": "bluss", "repository": "https://github.com/rayon-rs/either", "license": "Apache-2.0 OR MIT", @@ -604,7 +622,7 @@ }, { "name": "errno", - "version": "0.3.8", + "version": "0.3.9", "authors": "Chris Wong ", "repository": "https://github.com/lambda-fairy/rust-errno", "license": "Apache-2.0 OR MIT", @@ -622,7 +640,7 @@ }, { "name": "fastrand", - "version": "2.0.2", + "version": "2.1.1", "authors": "Stjepan Glavina ", "repository": "https://github.com/smol-rs/fastrand", "license": "Apache-2.0 OR MIT", @@ -658,7 +676,7 @@ }, { "name": "flate2", - "version": "1.0.31", + "version": "1.0.33", "authors": "Alex Crichton |Josh Triplett ", "repository": "https://github.com/rust-lang/flate2-rs", "license": "Apache-2.0 OR MIT", @@ -703,7 +721,7 @@ }, { "name": "getrandom", - "version": "0.2.14", + "version": "0.2.15", "authors": "The Rand Project Developers", "repository": "https://github.com/rust-random/getrandom", "license": "Apache-2.0 OR MIT", @@ -712,9 +730,9 @@ }, { "name": "getset", - "version": "0.1.2", - "authors": "Ana Hobden ", - "repository": "https://github.com/Hoverbear/getset", + "version": "0.1.3", + "authors": "Ana Hobden |John Baublitz ", "repository": "https://github.com/rust-lang/hashbrown", "license": "Apache-2.0 OR MIT", "license_file": null, "description": "A Rust port of Google's SwissTable hash map" }, - { - "name": "heck", - "version": "0.4.1", - "authors": "Without Boats ", - "repository": "https://github.com/withoutboats/heck", - "license": "Apache-2.0 OR MIT", - "license_file": null, - "description": "heck is a case conversion library." - }, { "name": "heck", "version": "0.5.0", @@ -773,15 +782,6 @@ "license_file": null, "description": "Format time and duration in chrono, std::time and time as HH:MM:SS and HH:MM:SS.xxx" }, - { - "name": "home", - "version": "0.5.9", - "authors": "Brian Anderson ", - "repository": "https://github.com/rust-lang/cargo", - "license": "Apache-2.0 OR MIT", - "license_file": null, - "description": "Shared definitions of home directories." - }, { "name": "hts-sys", "version": "2.1.4", @@ -838,7 +838,7 @@ }, { "name": "indexmap", - "version": "2.2.6", + "version": "2.5.0", "authors": null, "repository": "https://github.com/indexmap-rs/indexmap", "license": "Apache-2.0 OR MIT", @@ -863,6 +863,15 @@ "license_file": null, "description": "Unmaintained, consider using web-time instead - A partial replacement for std::time::Instant that works on WASM to." }, + { + "name": "is_terminal_polyfill", + "version": "1.70.1", + "authors": null, + "repository": "https://github.com/polyfill-rs/is_terminal_polyfill", + "license": "Apache-2.0 OR MIT", + "license_file": null, + "description": "Polyfill for `is_terminal` stdlib feature for use with older MSRVs" + }, { "name": "itertools", "version": "0.12.1", @@ -901,7 +910,7 @@ }, { "name": "jobserver", - "version": "0.1.31", + "version": "0.1.32", "authors": "Alex Crichton ", "repository": "https://github.com/rust-lang/jobserver-rs", "license": "Apache-2.0 OR MIT", @@ -910,7 +919,7 @@ }, { "name": "js-sys", - "version": "0.3.69", + "version": "0.3.70", "authors": "The wasm-bindgen Developers", "repository": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/js-sys", "license": "Apache-2.0 OR MIT", @@ -919,7 +928,7 @@ }, { "name": "lazy_static", - "version": "1.4.0", + "version": "1.5.0", "authors": "Marvin Löbel ", "repository": "https://github.com/rust-lang-nursery/lazy-static.rs", "license": "Apache-2.0 OR MIT", @@ -937,7 +946,7 @@ }, { "name": "libc", - "version": "0.2.153", + "version": "0.2.158", "authors": "The Rust Project Developers", "repository": "https://github.com/rust-lang/libc", "license": "Apache-2.0 OR MIT", @@ -946,7 +955,7 @@ }, { "name": "libloading", - "version": "0.8.3", + "version": "0.8.5", "authors": "Simonas Kazlauskas ", "repository": "https://github.com/nagisa/rust_libloading/", "license": "ISC", @@ -964,7 +973,7 @@ }, { "name": "libz-sys", - "version": "1.1.16", + "version": "1.1.20", "authors": "Alex Crichton |Josh Triplett |Sebastian Thiel ", "repository": "https://github.com/rust-lang/libz-sys", "license": "Apache-2.0 OR MIT", @@ -991,7 +1000,7 @@ }, { "name": "linux-raw-sys", - "version": "0.4.13", + "version": "0.4.14", "authors": "Dan Gohman ", "repository": "https://github.com/sunfishcode/linux-raw-sys", "license": "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT", @@ -1000,7 +1009,7 @@ }, { "name": "log", - "version": "0.4.21", + "version": "0.4.22", "authors": "The Rust Project Developers", "repository": "https://github.com/rust-lang/log", "license": "Apache-2.0 OR MIT", @@ -1009,7 +1018,7 @@ }, { "name": "matrixmultiply", - "version": "0.3.8", + "version": "0.3.9", "authors": "bluss|R. Janis Goldschmidt", "repository": "https://github.com/bluss/matrixmultiply/", "license": "Apache-2.0 OR MIT", @@ -1018,7 +1027,7 @@ }, { "name": "memchr", - "version": "2.7.2", + "version": "2.7.4", "authors": "Andrew Gallant |bluss", "repository": "https://github.com/BurntSushi/memchr", "license": "MIT OR Unlicense", @@ -1036,7 +1045,7 @@ }, { "name": "miniz_oxide", - "version": "0.7.4", + "version": "0.8.0", "authors": "Frommi |oyvindln ", "repository": "https://github.com/Frommi/miniz_oxide/tree/master/miniz_oxide", "license": "Apache-2.0 OR MIT OR Zlib", @@ -1045,7 +1054,7 @@ }, { "name": "multimap", - "version": "0.9.1", + "version": "0.10.0", "authors": "Håvar Nøvik ", "repository": "https://github.com/havarnov/multimap", "license": "Apache-2.0 OR MIT", @@ -1072,7 +1081,7 @@ }, { "name": "ndarray", - "version": "0.15.6", + "version": "0.16.1", "authors": "Ulrik Sverdrup \"bluss\"|Jim Turner", "repository": "https://github.com/rust-ndarray/ndarray", "license": "Apache-2.0 OR MIT", @@ -1099,7 +1108,7 @@ }, { "name": "num", - "version": "0.4.2", + "version": "0.4.3", "authors": "The Rust Project Developers", "repository": "https://github.com/rust-num/num", "license": "Apache-2.0 OR MIT", @@ -1108,7 +1117,7 @@ }, { "name": "num-bigint", - "version": "0.4.4", + "version": "0.4.6", "authors": "The Rust Project Developers", "repository": "https://github.com/rust-num/num-bigint", "license": "Apache-2.0 OR MIT", @@ -1117,7 +1126,7 @@ }, { "name": "num-complex", - "version": "0.4.5", + "version": "0.4.6", "authors": "The Rust Project Developers", "repository": "https://github.com/rust-num/num-complex", "license": "Apache-2.0 OR MIT", @@ -1144,7 +1153,7 @@ }, { "name": "num-iter", - "version": "0.1.44", + "version": "0.1.45", "authors": "The Rust Project Developers", "repository": "https://github.com/rust-num/num-iter", "license": "Apache-2.0 OR MIT", @@ -1153,7 +1162,7 @@ }, { "name": "num-rational", - "version": "0.4.1", + "version": "0.4.2", "authors": "The Rust Project Developers", "repository": "https://github.com/rust-num/num-rational", "license": "Apache-2.0 OR MIT", @@ -1162,7 +1171,7 @@ }, { "name": "num-traits", - "version": "0.2.18", + "version": "0.2.19", "authors": "The Rust Project Developers", "repository": "https://github.com/rust-num/num-traits", "license": "Apache-2.0 OR MIT", @@ -1216,7 +1225,7 @@ }, { "name": "paste", - "version": "1.0.14", + "version": "1.0.15", "authors": "David Tolnay ", "repository": "https://github.com/dtolnay/paste", "license": "Apache-2.0 OR MIT", @@ -1234,7 +1243,7 @@ }, { "name": "petgraph", - "version": "0.6.4", + "version": "0.6.5", "authors": "bluss|mitchmindtree", "repository": "https://github.com/petgraph/petgraph", "license": "Apache-2.0 OR MIT", @@ -1252,13 +1261,22 @@ }, { "name": "portable-atomic", - "version": "1.6.0", + "version": "1.7.0", "authors": null, "repository": "https://github.com/taiki-e/portable-atomic", "license": "Apache-2.0 OR MIT", "license_file": null, "description": "Portable atomic types including support for 128-bit atomics, atomic float, etc." }, + { + "name": "portable-atomic-util", + "version": "0.2.2", + "authors": null, + "repository": "https://github.com/taiki-e/portable-atomic", + "license": "Apache-2.0 OR MIT", + "license_file": null, + "description": "Synchronization primitives built with portable-atomic." + }, { "name": "powerfmt", "version": "0.2.0", @@ -1270,7 +1288,7 @@ }, { "name": "ppv-lite86", - "version": "0.2.17", + "version": "0.2.20", "authors": "The CryptoCorrosion Contributors", "repository": "https://github.com/cryptocorrosion/cryptocorrosion", "license": "Apache-2.0 OR MIT", @@ -1279,7 +1297,7 @@ }, { "name": "prettyplease", - "version": "0.2.19", + "version": "0.2.22", "authors": "David Tolnay ", "repository": "https://github.com/dtolnay/prettyplease", "license": "Apache-2.0 OR MIT", @@ -1287,22 +1305,22 @@ "description": "A minimal `syn` syntax tree pretty-printer" }, { - "name": "proc-macro-error", - "version": "1.0.4", - "authors": "CreepySkeleton ", - "repository": "https://gitlab.com/CreepySkeleton/proc-macro-error", + "name": "proc-macro-error-attr2", + "version": "2.0.0", + "authors": "CreepySkeleton |GnomedDev ", + "repository": "https://github.com/GnomedDev/proc-macro-error-2", "license": "Apache-2.0 OR MIT", "license_file": null, - "description": "Almost drop-in replacement to panics in proc-macros" + "description": "Attribute macro for the proc-macro-error2 crate" }, { - "name": "proc-macro-error-attr", - "version": "1.0.4", - "authors": "CreepySkeleton ", - "repository": "https://gitlab.com/CreepySkeleton/proc-macro-error", + "name": "proc-macro-error2", + "version": "2.0.1", + "authors": "CreepySkeleton |GnomedDev ", + "repository": "https://github.com/GnomedDev/proc-macro-error-2", "license": "Apache-2.0 OR MIT", "license_file": null, - "description": "Attribute macro for proc-macro-error crate" + "description": "Almost drop-in replacement to panics in proc-macros" }, { "name": "proc-macro-hack", @@ -1315,7 +1333,7 @@ }, { "name": "proc-macro2", - "version": "1.0.81", + "version": "1.0.86", "authors": "David Tolnay |Alex Crichton ", "repository": "https://github.com/dtolnay/proc-macro2", "license": "Apache-2.0 OR MIT", @@ -1333,7 +1351,7 @@ }, { "name": "quote", - "version": "1.0.36", + "version": "1.0.37", "authors": "David Tolnay ", "repository": "https://github.com/dtolnay/quote", "license": "Apache-2.0 OR MIT", @@ -1405,7 +1423,7 @@ }, { "name": "regex", - "version": "1.10.4", + "version": "1.10.6", "authors": "The Rust Project Developers|Andrew Gallant ", "repository": "https://github.com/rust-lang/regex", "license": "Apache-2.0 OR MIT", @@ -1414,7 +1432,7 @@ }, { "name": "regex-automata", - "version": "0.4.6", + "version": "0.4.7", "authors": "The Rust Project Developers|Andrew Gallant ", "repository": "https://github.com/rust-lang/regex/tree/master/regex-automata", "license": "Apache-2.0 OR MIT", @@ -1423,7 +1441,7 @@ }, { "name": "regex-syntax", - "version": "0.8.3", + "version": "0.8.4", "authors": "The Rust Project Developers|Andrew Gallant ", "repository": "https://github.com/rust-lang/regex/tree/master/regex-syntax", "license": "Apache-2.0 OR MIT", @@ -1441,7 +1459,7 @@ }, { "name": "rmp-serde", - "version": "1.2.0", + "version": "1.3.0", "authors": "Evgeny Safronov ", "repository": "https://github.com/3Hren/msgpack-rust", "license": "MIT", @@ -1513,7 +1531,7 @@ }, { "name": "rustix", - "version": "0.38.34", + "version": "0.38.37", "authors": "Dan Gohman |Jakub Konka ", "repository": "https://github.com/bytecodealliance/rustix", "license": "Apache-2.0 OR Apache-2.0 WITH LLVM-exception OR MIT", @@ -1531,7 +1549,7 @@ }, { "name": "ryu", - "version": "1.0.17", + "version": "1.0.18", "authors": "David Tolnay ", "repository": "https://github.com/dtolnay/ryu", "license": "Apache-2.0 OR BSL-1.0", @@ -1540,7 +1558,7 @@ }, { "name": "safe_arch", - "version": "0.7.1", + "version": "0.7.2", "authors": "Lokathor ", "repository": "https://github.com/Lokathor/safe_arch", "license": "Apache-2.0 OR MIT OR Zlib", @@ -1558,7 +1576,7 @@ }, { "name": "sawfish", - "version": "0.12.4", + "version": "0.12.5", "authors": "Chris Saunders ", "repository": null, "license": null, @@ -1603,7 +1621,7 @@ }, { "name": "serde", - "version": "1.0.198", + "version": "1.0.210", "authors": "Erick Tryzelaar |David Tolnay ", "repository": "https://github.com/serde-rs/serde", "license": "Apache-2.0 OR MIT", @@ -1612,7 +1630,7 @@ }, { "name": "serde_derive", - "version": "1.0.198", + "version": "1.0.210", "authors": "Erick Tryzelaar |David Tolnay ", "repository": "https://github.com/serde-rs/serde", "license": "Apache-2.0 OR MIT", @@ -1621,7 +1639,7 @@ }, { "name": "serde_json", - "version": "1.0.116", + "version": "1.0.128", "authors": "Erick Tryzelaar |David Tolnay ", "repository": "https://github.com/serde-rs/json", "license": "Apache-2.0 OR MIT", @@ -1639,12 +1657,12 @@ }, { "name": "sha1_smol", - "version": "1.0.0", + "version": "1.0.1", "authors": "Armin Ronacher ", "repository": "https://github.com/mitsuhiko/sha1-smol", "license": "BSD-3-Clause", "license_file": null, - "description": "Minimal dependency free implementation of SHA1 for Rust." + "description": "Minimal dependency-free implementation of SHA1 for Rust." }, { "name": "shlex", @@ -1666,7 +1684,7 @@ }, { "name": "simple-error", - "version": "0.3.0", + "version": "0.3.1", "authors": null, "repository": "https://github.com/WiSaGaN/simple-error.git", "license": "Apache-2.0 OR MIT", @@ -1763,15 +1781,6 @@ "license_file": null, "description": "Helpful macros for working with enums and strings" }, - { - "name": "strum_macros", - "version": "0.25.3", - "authors": "Peter Glotfelty ", - "repository": "https://github.com/Peternator7/strum", - "license": "MIT", - "license_file": null, - "description": "Helpful macros for working with enums and strings" - }, { "name": "strum_macros", "version": "0.26.4", @@ -1792,7 +1801,7 @@ }, { "name": "syn", - "version": "2.0.60", + "version": "2.0.77", "authors": "David Tolnay ", "repository": "https://github.com/dtolnay/syn", "license": "Apache-2.0 OR MIT", @@ -1801,7 +1810,7 @@ }, { "name": "tempfile", - "version": "3.10.1", + "version": "3.12.0", "authors": "Steven Allen |The Rust Project Developers|Ashley Mannix |Jason White ", "repository": "https://github.com/Stebalien/tempfile", "license": "Apache-2.0 OR MIT", @@ -1819,7 +1828,7 @@ }, { "name": "thiserror", - "version": "1.0.59", + "version": "1.0.63", "authors": "David Tolnay ", "repository": "https://github.com/dtolnay/thiserror", "license": "Apache-2.0 OR MIT", @@ -1828,7 +1837,7 @@ }, { "name": "thiserror-impl", - "version": "1.0.59", + "version": "1.0.63", "authors": "David Tolnay ", "repository": "https://github.com/dtolnay/thiserror", "license": "Apache-2.0 OR MIT", @@ -1900,7 +1909,7 @@ }, { "name": "tinyvec", - "version": "1.6.0", + "version": "1.8.0", "authors": "Lokathor ", "repository": "https://github.com/Lokathor/tinyvec", "license": "Apache-2.0 OR MIT OR Zlib", @@ -1945,7 +1954,7 @@ }, { "name": "unicode-ident", - "version": "1.0.12", + "version": "1.0.13", "authors": "David Tolnay ", "repository": "https://github.com/dtolnay/unicode-ident", "license": "(MIT OR Apache-2.0) AND Unicode-DFS-2016", @@ -1963,7 +1972,7 @@ }, { "name": "unicode-width", - "version": "0.1.11", + "version": "0.1.13", "authors": "kwantam |Manish Goregaokar ", "repository": "https://github.com/unicode-rs/unicode-width", "license": "Apache-2.0 OR MIT", @@ -1972,7 +1981,7 @@ }, { "name": "unicode-xid", - "version": "0.2.4", + "version": "0.2.5", "authors": "erick.tryzelaar |kwantam |Manish Goregaokar ", "repository": "https://github.com/unicode-rs/unicode-xid", "license": "Apache-2.0 OR MIT", @@ -1990,7 +1999,7 @@ }, { "name": "url", - "version": "2.5.0", + "version": "2.5.2", "authors": "The rust-url developers", "repository": "https://github.com/servo/rust-url", "license": "Apache-2.0 OR MIT", @@ -1999,7 +2008,7 @@ }, { "name": "utf8parse", - "version": "0.2.1", + "version": "0.2.2", "authors": "Joe Wilm |Christian Duerr ", "repository": "https://github.com/alacritty/vte", "license": "Apache-2.0 OR MIT", @@ -2053,7 +2062,7 @@ }, { "name": "version_check", - "version": "0.9.4", + "version": "0.9.5", "authors": "Sergio Benitez ", "repository": "https://github.com/SergioBenitez/version_check", "license": "Apache-2.0 OR MIT", @@ -2080,7 +2089,7 @@ }, { "name": "wasm-bindgen", - "version": "0.2.92", + "version": "0.2.93", "authors": "The wasm-bindgen Developers", "repository": "https://github.com/rustwasm/wasm-bindgen", "license": "Apache-2.0 OR MIT", @@ -2089,7 +2098,7 @@ }, { "name": "wasm-bindgen-backend", - "version": "0.2.92", + "version": "0.2.93", "authors": "The wasm-bindgen Developers", "repository": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/backend", "license": "Apache-2.0 OR MIT", @@ -2098,7 +2107,7 @@ }, { "name": "wasm-bindgen-macro", - "version": "0.2.92", + "version": "0.2.93", "authors": "The wasm-bindgen Developers", "repository": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro", "license": "Apache-2.0 OR MIT", @@ -2107,7 +2116,7 @@ }, { "name": "wasm-bindgen-macro-support", - "version": "0.2.92", + "version": "0.2.93", "authors": "The wasm-bindgen Developers", "repository": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/macro-support", "license": "Apache-2.0 OR MIT", @@ -2116,7 +2125,7 @@ }, { "name": "wasm-bindgen-shared", - "version": "0.2.92", + "version": "0.2.93", "authors": "The wasm-bindgen Developers", "repository": "https://github.com/rustwasm/wasm-bindgen/tree/master/crates/shared", "license": "Apache-2.0 OR MIT", @@ -2132,18 +2141,9 @@ "license_file": null, "description": null }, - { - "name": "which", - "version": "4.4.2", - "authors": "Harry Fei ", - "repository": "https://github.com/harryfei/which-rs.git", - "license": "MIT", - "license_file": null, - "description": "A Rust equivalent of Unix command \"which\". Locate installed executable in cross platforms." - }, { "name": "wide", - "version": "0.7.16", + "version": "0.7.28", "authors": "Lokathor ", "repository": "https://github.com/Lokathor/wide", "license": "Apache-2.0 OR MIT OR Zlib", @@ -2170,12 +2170,12 @@ }, { "name": "winapi-util", - "version": "0.1.6", + "version": "0.1.9", "authors": "Andrew Gallant ", "repository": "https://github.com/BurntSushi/winapi-util", "license": "MIT OR Unlicense", "license_file": null, - "description": "A dumping ground for high level safe wrappers over winapi." + "description": "A dumping ground for high level safe wrappers over windows-sys." }, { "name": "winapi-x86_64-pc-windows-gnu", @@ -2204,9 +2204,18 @@ "license_file": null, "description": "Rust for Windows" }, + { + "name": "windows-sys", + "version": "0.59.0", + "authors": "Microsoft", + "repository": "https://github.com/microsoft/windows-rs", + "license": "Apache-2.0 OR MIT", + "license_file": null, + "description": "Rust for Windows" + }, { "name": "windows-targets", - "version": "0.52.5", + "version": "0.52.6", "authors": "Microsoft", "repository": "https://github.com/microsoft/windows-rs", "license": "Apache-2.0 OR MIT", @@ -2215,7 +2224,7 @@ }, { "name": "windows_aarch64_gnullvm", - "version": "0.52.5", + "version": "0.52.6", "authors": "Microsoft", "repository": "https://github.com/microsoft/windows-rs", "license": "Apache-2.0 OR MIT", @@ -2224,7 +2233,7 @@ }, { "name": "windows_aarch64_msvc", - "version": "0.52.5", + "version": "0.52.6", "authors": "Microsoft", "repository": "https://github.com/microsoft/windows-rs", "license": "Apache-2.0 OR MIT", @@ -2233,7 +2242,7 @@ }, { "name": "windows_i686_gnu", - "version": "0.52.5", + "version": "0.52.6", "authors": "Microsoft", "repository": "https://github.com/microsoft/windows-rs", "license": "Apache-2.0 OR MIT", @@ -2242,7 +2251,7 @@ }, { "name": "windows_i686_gnullvm", - "version": "0.52.5", + "version": "0.52.6", "authors": "Microsoft", "repository": "https://github.com/microsoft/windows-rs", "license": "Apache-2.0 OR MIT", @@ -2251,7 +2260,7 @@ }, { "name": "windows_i686_msvc", - "version": "0.52.5", + "version": "0.52.6", "authors": "Microsoft", "repository": "https://github.com/microsoft/windows-rs", "license": "Apache-2.0 OR MIT", @@ -2260,7 +2269,7 @@ }, { "name": "windows_x86_64_gnu", - "version": "0.52.5", + "version": "0.52.6", "authors": "Microsoft", "repository": "https://github.com/microsoft/windows-rs", "license": "Apache-2.0 OR MIT", @@ -2269,7 +2278,7 @@ }, { "name": "windows_x86_64_gnullvm", - "version": "0.52.5", + "version": "0.52.6", "authors": "Microsoft", "repository": "https://github.com/microsoft/windows-rs", "license": "Apache-2.0 OR MIT", @@ -2278,11 +2287,29 @@ }, { "name": "windows_x86_64_msvc", - "version": "0.52.5", + "version": "0.52.6", "authors": "Microsoft", "repository": "https://github.com/microsoft/windows-rs", "license": "Apache-2.0 OR MIT", "license_file": null, "description": "Import lib for Windows" + }, + { + "name": "zerocopy", + "version": "0.7.35", + "authors": "Joshua Liebow-Feeser ", + "repository": "https://github.com/google/zerocopy", + "license": "Apache-2.0 OR BSD-2-Clause OR MIT", + "license_file": null, + "description": "Utilities for zero-copy parsing and serialization" + }, + { + "name": "zerocopy-derive", + "version": "0.7.35", + "authors": "Joshua Liebow-Feeser ", + "repository": "https://github.com/google/zerocopy", + "license": "Apache-2.0 OR BSD-2-Clause OR MIT", + "license_file": null, + "description": "Custom derive for traits from the zerocopy crate" } ] diff --git a/docs/user_guide.md b/docs/user_guide.md index 475c31d..e8979c1 100644 --- a/docs/user_guide.md +++ b/docs/user_guide.md @@ -155,6 +155,34 @@ All sawfish SVs are output so that only one allele is described in each VCF reco Sawfish adds short-range phasing information to clarify the relationship of heterozygous SVs called from the same or overlapping SV haplotypes. This does not have the range of general read-backed phasing and will only result in phased genotype output for smaller insertions and deletions. Each local cluster of phased genotypes corresponds to a phase set as annotated using the VCF `PS` tag. The phase set ID is the `POS` value of the first SV called from the SV haplotype cluster. +#### Optional variant read support output + +To help show which reads support each SV allele, the optional `--report-supporting-reads` argument can be added to the joint-call command line. When this is used a compressed json output file is provided in `${OUTPUT_DIR}/supporting_reads.json.gz`. + +In this json output file, the top-level objects are variant IDs matching those provided in the ID field of the VCF output. Nested under each variant ID are sample IDs. For each sample ID associated with a variant, the array of supporting read QNAME values are provided. A simplified example output is shown below for two variants: + +``` +{ + "sawfish:0:1041:0:0": { + "HG002": [ + "m84005_220919_232112_s2/22021538/ccs", + "m84005_220919_232112_s2/108659098/ccs", + "m84005_220919_232112_s2/166989308/ccs" + ] + }, + "sawfish:0:1051:0:0": { + "HG002": [ + "m84005_220919_232112_s2/130223022/ccs", + "m84005_220919_232112_s2/9113818/ccs", + "m84005_220919_232112_s2/84214835/ccs", + "m84005_220919_232112_s2/116654499/ccs" + ] + } +} +``` + +Note that the number of read QNAME entries should often match the supporting AD count for the alternate allele from the same variant/sample entry in the VCF, but this is not always an exact match. Also to keep a consistent relationship between supporting reads and variants, no output is provided for VCF records with the inversion (``) allele type, but the supporting reads for the breakends comprising each inversion are provided. + ### Discover step The discover step produces a number of output files in the discover output directory used by sawfish during the subsequent joint calling step. Although these are not intended for direct use, some of the important files are described here: @@ -225,3 +253,15 @@ chrY 56887902 57227415 chrY_PAR_2 0 ...expected sex chromosome copy number files for this and other references can be found in the [expected_cn](../data/expected_cn) directory. All expected copy number files submitted for each sample at the discover phase are saved in the discover directory and used to select per-sample ploidy in the specified regions during the joint-calling step. + +### Discover step input file path storage + +Sawfish accesses several files associated with each sample during joint-genotyping in the `joint-call` step. For instance, this is done to test read support for each allele by accessing the sample alignment file. + +To find these files for each sample, input file paths are stored from the `discover` step in a configuration file written to the output directory here: + + ${OUTPUT_DIR}/discover.settings.json + +These input file paths are normally canonicalized, so that relative paths can be reliably reused after any change to the working directory. In some cases it may be more convenient to store relative file paths. To do so the `discover` step option `--disable-path-canonicalization` can be used to store all input paths as-is. This may be useful if e.g., the `discover` and `joint-call` steps are being run in different directory structures. + +Note that for even more complex situations, the paths in the above discover settings json file can be manually edited before running the `joint-call` step. diff --git a/src/cli/discover.rs b/src/cli/discover.rs index c41bbda..a5219cb 100644 --- a/src/cli/discover.rs +++ b/src/cli/discover.rs @@ -2,7 +2,6 @@ use std::path::{Path, PathBuf}; use clap::Args; use const_format::concatcp; -use log::{error, info, warn}; use rust_vc_utils::ChromList; use serde::{Deserialize, Serialize}; use simple_error::{bail, SimpleResult}; @@ -106,7 +105,7 @@ pub struct DiscoverSettings { #[arg(hide = true, long, default_value_t = 10)] pub min_indel_size_noise_margin: u32, - /// Min mapq value for reads to be used in SV breakend finding. This does not change depth + /// Minimum MAPQ value for reads to be used in SV breakend finding. This does not change depth /// analysis. #[arg(long, default_value_t = MIN_SV_MAPQ)] pub min_sv_mapq: u32, @@ -120,6 +119,17 @@ pub struct DiscoverSettings { #[arg(long)] pub reduce_overlapping_sv_alleles: bool, + /// Don't canonicalize input file paths + /// + /// By default, all file paths input to the discover step are canonicalized and stored in the + /// discover output directory for use in follow-on joint-call steps. This flag disables all + /// canonicalization, which allows all paths to be stored as-is, including as relative paths. This + /// may be useful for situations where the sample discover and joint-call steps are run in + /// different directory structures. + /// + #[arg(long)] + pub disable_path_canonicalization: bool, + /// Disable large insertion assembly to save memory/runtime. /// /// This is currently for debug only. @@ -155,6 +165,8 @@ impl DiscoverSettings { /// Validate settings and update to parameters that can't be processed automatically by clap. /// +/// Assumes that the logger is not setup +/// pub fn validate_and_fix_discovery_settings( settings: DiscoverSettings, ) -> SimpleResult { @@ -190,19 +202,41 @@ pub fn validate_and_fix_discovery_settings( "expected cn filename", )?; - let mut settings = settings; - if settings.gc_level_count == 0 { bail!("--gc-level-count argument must be greater than 0"); } if settings.gc_genome_window_size < settings.depth_bin_size { - warn!( - "--gc-genome-window-size argument is set too low and will be set to the depth bin size of {}", + bail!( + "--gc-genome-window-size is set below the depth bin size of {}", settings.depth_bin_size ); - settings.gc_genome_window_size = settings.depth_bin_size; } + + // Canonicalize file paths: + fn canonicalize_string_path(s: &str) -> String { + PathBuf::from(s) + .canonicalize() + .unwrap() + .to_str() + .unwrap() + .to_string() + } + + let mut settings = settings; + if settings.disable_path_canonicalization { + settings.ref_filename = canonicalize_string_path(&settings.ref_filename); + settings.bam_filename = canonicalize_string_path(&settings.bam_filename); + + settings.exclude_filename = settings + .exclude_filename + .map(|x| canonicalize_string_path(&x)); + settings.expected_copy_number_filename = settings + .expected_copy_number_filename + .map(|x| canonicalize_string_path(&x)); + settings.maf_filename = settings.maf_filename.map(|x| canonicalize_string_path(&x)); + } + Ok(settings) } @@ -216,6 +250,7 @@ enum SettingValidationError { fn validate_discover_settings_data_impl( settings: &DiscoverSettings, ) -> Result<(), SettingValidationError> { + use log::error; use regex::Regex; use rust_htslib::bam::{self, Read}; @@ -263,6 +298,8 @@ fn validate_discover_settings_data_impl( /// Extended input data/settings validation that's too complex/slow to put in the cmdline parser /// +/// Assumes that the logger is setup +/// pub fn validate_discover_settings_data(settings: &DiscoverSettings) { if let Err(err) = validate_discover_settings_data_impl(settings) { match err { @@ -274,6 +311,8 @@ pub fn validate_discover_settings_data(settings: &DiscoverSettings) { /// Write discover settings out in json format pub fn write_discover_settings(output_dir: &Path, settings: &DiscoverSettings) { + use log::info; + let filename = output_dir.join(SETTINGS_FILENAME); info!( diff --git a/src/cli/joint_call.rs b/src/cli/joint_call.rs index 83705cd..f8a9776 100644 --- a/src/cli/joint_call.rs +++ b/src/cli/joint_call.rs @@ -13,18 +13,17 @@ pub struct JointCallSettings { #[arg(long, value_name = "DIR", default_value = concatcp!(env!("CARGO_PKG_NAME"), "_joint-call_output"))] pub output_dir: PathBuf, - /// Sample discover-mode results directory. Can be specified multiple times + /// Sample discover-mode results directory (required). Can be specified multiple times /// to joint call over multiple samples. /// - #[arg(long, value_name = "DIR")] + #[arg(long, value_name = "DIR", required = true)] pub sample: Vec, /// Minimum QUAL score below which the VCF record is marked as filtered #[arg(hide = true, long, default_value_t = 10)] pub min_qual: i32, - /// Min mapq value for reads to be used in SV breakend finding. This does not change depth - /// analysis. + /// Minimum MAPQ value for reads to be used in joint-genotyping. #[arg(long, default_value_t = MIN_SV_MAPQ)] pub min_sv_mapq: u32, @@ -41,16 +40,16 @@ pub struct JointCallSettings { #[arg(hide = true, long)] pub no_vcf_dedup: bool, - /// Create a JSON output listing the reads supporting each variant + /// Create a JSON output file listing the reads supporting each variant /// - /// This is only intended for internal debugging use cases - /// - #[arg(hide = true, long)] + #[arg(long)] pub report_supporting_reads: bool, } /// Validate settings and update to parameters that can't be processed automatically by clap. /// +/// Assumes that the logger is not setup +/// pub fn validate_and_fix_joint_call_settings( mut settings: JointCallSettings, ) -> SimpleResult { diff --git a/src/cli/mod.rs b/src/cli/mod.rs index 991aa74..bd984af 100644 --- a/src/cli/mod.rs +++ b/src/cli/mod.rs @@ -17,21 +17,21 @@ use self::joint_call::validate_and_fix_joint_call_settings; pub use self::joint_call::JointCallSettings; use self::shared::validate_and_fix_shared_settings; pub use self::shared::SharedSettings; -use crate::version::SAWFISH_VERSION; +use crate::globals::PROGRAM_VERSION; #[derive(Subcommand)] pub enum Commands { /// Discover SV candidate alleles in one sample Discover(DiscoverSettings), - /// Call and genotype SVs in one to many samples, given the discover command results from each + /// Merge and genotype SVs from one or more samples, given the discover command results from each JointCall(JointCallSettings), } #[derive(Parser)] #[command( author, - version = SAWFISH_VERSION, + version = PROGRAM_VERSION, about, after_help = format!("Copyright (C) 2004-{} Pacific Biosciences of California, Inc. This program comes with ABSOLUTELY NO WARRANTY; it is intended for @@ -70,30 +70,28 @@ pub fn check_novel_dirname(dirname: &Path, label: &str) -> SimpleResult<()> { Ok(()) } -/// Validate settings and update parameters that can't be processed by clap +/// Validate settings and update settings that can't be processed by clap /// -/// Parts of this process assume logging is already setup -/// -pub fn validate_and_fix_settings_impl(mut settings: Settings) -> SimpleResult { - settings.shared = validate_and_fix_shared_settings(settings.shared)?; - - settings.command = match settings.command { - Commands::Discover(x) => { - let x = validate_and_fix_discovery_settings(x)?; - Commands::Discover(x) - } - Commands::JointCall(x) => { - let x = validate_and_fix_joint_call_settings(x)?; - Commands::JointCall(x) - } - }; - - Ok(settings) -} - -/// Validate settings and update to parameters that can't be processed automatically by clap. +/// Assumes that the logger is not setup /// pub fn validate_and_fix_settings(settings: Settings) -> Settings { + fn validate_and_fix_settings_impl(mut settings: Settings) -> SimpleResult { + settings.shared = validate_and_fix_shared_settings(settings.shared)?; + + settings.command = match settings.command { + Commands::Discover(x) => { + let x = validate_and_fix_discovery_settings(x)?; + Commands::Discover(x) + } + Commands::JointCall(x) => { + let x = validate_and_fix_joint_call_settings(x)?; + Commands::JointCall(x) + } + }; + + Ok(settings) + } + match validate_and_fix_settings_impl(settings) { Ok(x) => x, Err(msg) => { diff --git a/src/cnv_output.rs b/src/cnv_output.rs index d67c2de..597a294 100644 --- a/src/cnv_output.rs +++ b/src/cnv_output.rs @@ -2,83 +2,12 @@ use std::collections::HashMap; use std::path::Path; use log::info; -use rust_vc_utils::ChromList; -use unwrap::unwrap; use crate::cli; use crate::copy_number_segmentation::{CNState, SampleCopyNumberSegments}; use crate::genome_regions::GenomeRegions; use crate::vcf_utils; -/// Write out a bedgraph track for copy number segments -pub fn write_copy_number_segment_file( - output_dir: &Path, - sample_cn_segments: &SampleCopyNumberSegments, -) { - use std::fs::File; - use std::io::{BufWriter, Write}; - - let filename = output_dir.join("copynum.bedgraph"); - - info!( - "Writing bedgraph copy number track to file: '{}'", - filename.display() - ); - - let f = unwrap!( - File::create(&filename), - "Unable to create bedgraph copy number track file: '{}'", - filename.display() - ); - let mut f = BufWriter::new(f); - - let chrom_list = &sample_cn_segments.chrom_list; - let chrom_count = sample_cn_segments.chrom_list.data.len(); - - for chrom_index in 0..chrom_count { - let chrom_label = &chrom_list.data[chrom_index].label; - let chrom_cn_segments = &sample_cn_segments.data[chrom_index]; - for s in chrom_cn_segments.iter() { - if s.state == CNState::Unknown { - continue; - } - writeln!( - f, - "{}\t{}\t{}\t{}", - chrom_label, s.begin, s.end, s.state as u32 - ) - .unwrap(); - } - } -} - -#[allow(dead_code)] -// this is just temporary until we get a system for denoting sex expected CN -fn estimate_sex(sample_cn_segments: &SampleCopyNumberSegments, chrom_list: &ChromList) -> u32 { - let chrom_count = chrom_list.data.len(); - for chrom_index in 0..chrom_count { - let chrom_label = &chrom_list.data[chrom_index].label; - if chrom_label == "chrX" { - let chrom_cn_segments = &sample_cn_segments.data[chrom_index]; - let state_count = CNState::Unknown as usize; - let mut bin_counts = vec![0; state_count]; - for s in chrom_cn_segments.iter() { - if s.state == CNState::Unknown { - continue; - } - bin_counts[s.state as usize] += s.end - s.begin; - } - if bin_counts[2] >= bin_counts[1] { - return 2; - } else { - return 1; - } - } - } - // no chrX detected, so we will just default to 2 - 2 -} - fn get_expected_cn(expected_cn_regions: &GenomeRegions, chrom: &str, begin: i64, end: i64) -> u32 { let default_expected_cn: u32 = 2; match expected_cn_regions.find_overlaps(chrom, begin, end) { diff --git a/src/contig_output.rs b/src/contig_output.rs index 44da277..12e5aeb 100644 --- a/src/contig_output.rs +++ b/src/contig_output.rs @@ -9,8 +9,8 @@ use rust_vc_utils::{bam_reg2bin, get_alignment_end, ChromList}; use crate::bam_utils::has_aligned_segments; use crate::discover; +use crate::globals::PROGRAM_VERSION; use crate::int_range::IntRange; -use crate::version::SAWFISH_VERSION; pub const SA_AUX_TAG: &[u8] = b"SA"; pub const CONTIG_AUX_TAG: &[u8] = b"sf"; @@ -189,8 +189,8 @@ fn write_contig_alignments_bam( let mut pg_record = bam::header::HeaderRecord::new(b"PG"); pg_record.push_tag(b"PN", pkg_name); - pg_record.push_tag(b"ID", format!("{pkg_name}-{SAWFISH_VERSION}")); - pg_record.push_tag(b"VN", SAWFISH_VERSION); + pg_record.push_tag(b"ID", format!("{pkg_name}-{PROGRAM_VERSION}")); + pg_record.push_tag(b"VN", PROGRAM_VERSION); pg_record.push_tag(b"CL", &cmdline); output_bam_header.push_record(&pg_record); diff --git a/src/copy_number_segmentation.rs b/src/copy_number_segmentation.rs index d215791..2b18590 100644 --- a/src/copy_number_segmentation.rs +++ b/src/copy_number_segmentation.rs @@ -1,6 +1,9 @@ +use std::path::Path; + use log::info; use rust_vc_utils::ChromList; use statrs::distribution::Discrete; +use unwrap::unwrap; use crate::bam_scanner::SampleAlignmentScanResult; use crate::cli; @@ -436,6 +439,48 @@ fn get_sample_copy_number_states( (sample_cn_states, gc_corrected_haploid_coverage) } +/// Write out a bedgraph track for copy number segments +pub fn write_copy_number_segment_file( + output_dir: &Path, + sample_cn_segments: &SampleCopyNumberSegments, +) { + use std::fs::File; + use std::io::{BufWriter, Write}; + + let filename = output_dir.join("copynum.bedgraph"); + + info!( + "Writing bedgraph copy number track to file: '{}'", + filename.display() + ); + + let f = unwrap!( + File::create(&filename), + "Unable to create bedgraph copy number track file: '{}'", + filename.display() + ); + let mut f = BufWriter::new(f); + + let chrom_list = &sample_cn_segments.chrom_list; + let chrom_count = sample_cn_segments.chrom_list.data.len(); + + for chrom_index in 0..chrom_count { + let chrom_label = &chrom_list.data[chrom_index].label; + let chrom_cn_segments = &sample_cn_segments.data[chrom_index]; + for s in chrom_cn_segments.iter() { + if s.state == CNState::Unknown { + continue; + } + writeln!( + f, + "{}\t{}\t{}\t{}", + chrom_label, s.begin, s.end, s.state as u32 + ) + .unwrap(); + } + } +} + #[derive(Copy, Clone, PartialEq, Eq, strum::FromRepr)] #[repr(usize)] pub enum CNState { diff --git a/src/discover.rs b/src/discover.rs index 71acc37..f3bed63 100644 --- a/src/discover.rs +++ b/src/discover.rs @@ -5,7 +5,7 @@ use crate::bam_scanner::scan_sample_bam_for_sv_evidence; use crate::cli; use crate::cluster_breakpoints; use crate::cnv_output; -use crate::copy_number_segmentation::*; +use crate::copy_number_segmentation::{segment_sample_copy_number, write_copy_number_segment_file}; use crate::depth_bins; use crate::gc_correction::*; use crate::genome_regions::{write_genome_regions_to_bed, GenomeRegions}; @@ -218,10 +218,7 @@ pub fn run_discover(shared_settings: &cli::SharedSettings, settings: &cli::Disco let copy_number_segment_result = segment_sample_copy_number(settings, &chrom_list, &sample_scan_result, &gc_bias_data); - cnv_output::write_copy_number_segment_file( - &settings.output_dir, - ©_number_segment_result, - ); + write_copy_number_segment_file(&settings.output_dir, ©_number_segment_result); cnv_output::write_indexed_cnv_vcf_file( shared_settings, settings, diff --git a/src/globals.rs b/src/globals.rs new file mode 100644 index 0000000..2621297 --- /dev/null +++ b/src/globals.rs @@ -0,0 +1,8 @@ +/// Global program name +/// +pub const PROGRAM_NAME: &str = env!("CARGO_PKG_NAME"); + +/// Global version number +/// +/// All client code should refer directly to this copy instead of using various possibly conflicting environment variables +pub const PROGRAM_VERSION: &str = env!("VERGEN_GIT_DESCRIBE"); diff --git a/src/large_variant_output.rs b/src/large_variant_output.rs index 85265f7..8653551 100644 --- a/src/large_variant_output.rs +++ b/src/large_variant_output.rs @@ -870,6 +870,99 @@ fn dedup_records(records: Vec) -> (Vec, usize) { (new_records, duplicate_record_count) } +#[allow(clippy::too_many_arguments)] +fn convert_sv_group_to_vcf_records( + settings: &VcfSettings, + genome_ref: &GenomeRef, + chrom_list: &ChromList, + sample_count: usize, + vcf: &bcf::Writer, + candidate_mode: bool, + sv_group: &SVGroup, + records: &mut Vec, +) { + let group_contig_indexes = if candidate_mode { + sv_group.sample_haplotype_list[0].clone() + } else { + Vec::new() + }; + + for refined_sv in sv_group.refined_svs.iter().filter(|x| !x.filter_sv()) { + assert_eq!(refined_sv.score.samples.len(), sample_count); + + // Force the SV type to breakpoint for various cases + let sv_type = { + let x = get_rsv_vcf_sv_type(refined_sv); + let force_breakpoint = if x == VcfSVType::SingleBreakend { + false + } else if refined_sv.ext.force_breakpoint_representation { + true + } else if candidate_mode && x == VcfSVType::Deletion { + let be1 = &refined_sv.bp.breakend1; + let be2 = refined_sv.bp.breakend2.as_ref().unwrap(); + std::cmp::max(be2.segment.range.start - be1.segment.range.start, 0) > 1_000 + } else { + candidate_mode && x == VcfSVType::Duplication + }; + + if force_breakpoint { + VcfSVType::Breakpoint + } else { + x + } + }; + + match sv_type { + VcfSVType::Deletion + | VcfSVType::Insertion + | VcfSVType::Duplication + | VcfSVType::Inversion => { + let record = convert_refined_sv_to_non_bnd_vcf_record( + settings, + genome_ref, + chrom_list, + vcf, + refined_sv, + &group_contig_indexes, + candidate_mode, + ); + if let Some(record) = record { + records.push(VcfRecord(record)); + } + } + VcfSVType::Breakpoint => { + let record0 = convert_refined_sv_to_bnd_vcf_record( + settings, + genome_ref, + chrom_list, + vcf, + refined_sv, + &group_contig_indexes, + true, + candidate_mode, + ); + let record1 = convert_refined_sv_to_bnd_vcf_record( + settings, + genome_ref, + chrom_list, + vcf, + refined_sv, + &group_contig_indexes, + false, + candidate_mode, + ); + if let (Some(record0), Some(record1)) = (record0, record1) { + records.push(VcfRecord(record0)); + records.push(VcfRecord(record1)); + } + } + VcfSVType::SingleBreakend => { + panic!("No support for single-ended breakend output to VCF"); + } + } + } +} + /// Returns the de-duplicated records and the count of filtered duplicate records /// fn get_vcf_records( @@ -884,86 +977,16 @@ fn get_vcf_records( let mut records = Vec::new(); for sv_group in sv_groups { - let group_contig_indexes = if candidate_mode { - sv_group.sample_haplotype_list[0].clone() - } else { - Vec::new() - }; - - for refined_sv in sv_group.refined_svs.iter().filter(|x| !x.filter_sv()) { - assert_eq!(refined_sv.score.samples.len(), sample_count); - - // Force the SV type to breakpoint for various cases - let sv_type = { - let x = get_rsv_vcf_sv_type(refined_sv); - let force_breakpoint = if x == VcfSVType::SingleBreakend { - false - } else if refined_sv.ext.force_breakpoint_representation { - true - } else if candidate_mode && x == VcfSVType::Deletion { - let be1 = &refined_sv.bp.breakend1; - let be2 = refined_sv.bp.breakend2.as_ref().unwrap(); - std::cmp::max(be2.segment.range.start - be1.segment.range.start, 0) > 1_000 - } else { - candidate_mode && x == VcfSVType::Duplication - }; - - if force_breakpoint { - VcfSVType::Breakpoint - } else { - x - } - }; - - match sv_type { - VcfSVType::Deletion - | VcfSVType::Insertion - | VcfSVType::Duplication - | VcfSVType::Inversion => { - let record = convert_refined_sv_to_non_bnd_vcf_record( - settings, - genome_ref, - chrom_list, - vcf, - refined_sv, - &group_contig_indexes, - candidate_mode, - ); - if let Some(record) = record { - records.push(VcfRecord(record)); - } - } - VcfSVType::Breakpoint => { - let record0 = convert_refined_sv_to_bnd_vcf_record( - settings, - genome_ref, - chrom_list, - vcf, - refined_sv, - &group_contig_indexes, - true, - candidate_mode, - ); - let record1 = convert_refined_sv_to_bnd_vcf_record( - settings, - genome_ref, - chrom_list, - vcf, - refined_sv, - &group_contig_indexes, - false, - candidate_mode, - ); - if let (Some(record0), Some(record1)) = (record0, record1) { - records.push(VcfRecord(record0)); - records.push(VcfRecord(record1)); - } - } - VcfSVType::SingleBreakend => { - panic!("No support for single-ended breakend output to VCF"); - } - } - } + convert_sv_group_to_vcf_records( + settings, + genome_ref, + chrom_list, + sample_count, + vcf, + candidate_mode, + sv_group, + &mut records, + ); } records.sort(); diff --git a/src/log_utils.rs b/src/log_utils.rs index ae7b58a..2b57491 100644 --- a/src/log_utils.rs +++ b/src/log_utils.rs @@ -1,3 +1,6 @@ +//! Generic logging utilities +//! + pub use log::debug; /// Print log message for either of two debug scenarios: diff --git a/src/logger.rs b/src/logger.rs new file mode 100644 index 0000000..304810b --- /dev/null +++ b/src/logger.rs @@ -0,0 +1,74 @@ +//! Methods specific to the sawfish logger +//! + +use std::path::Path; + +use crate::cli; +use crate::globals::PROGRAM_NAME; + +/// If debug is true set the default logger to the more verbose debug level +/// +fn setup_logger(output_dir: Option<&Path>, debug: bool) -> Result<(), fern::InitError> { + let level = if debug { + log::LevelFilter::Debug + } else { + log::LevelFilter::Info + }; + let logger = fern::Dispatch::new() + .format(|out, message, record| { + out.finish(format_args!( + "{}[{}][{}] {}", + chrono::Local::now().format("[%Y-%m-%d][%H:%M:%S]"), + PROGRAM_NAME, + record.level(), + message + )) + }) + .level(level) + .chain(std::io::stderr()); + + let logger = if let Some(output_dir) = output_dir { + let log_filename = output_dir.join(PROGRAM_NAME.to_string() + ".log"); + logger.chain(fern::log_file(log_filename)?) + } else { + logger + }; + + logger.apply()?; + Ok(()) +} + +/// Check and create output directory, then setup logger to write there +/// +/// #Arguments +/// * `debug` - If true use debug log level, and info level otherwise +/// +pub fn setup_output_dir_and_logger(output_dir: &Path, clobber: bool, debug: bool) { + // All error messaging in this method needs to account for no logger being setup yet. + // + // We try to match the pre-logging error pattern used in the command-line settings verification methods + // + + let mut output_dir_exists = false; + if let Err(msg) = cli::check_novel_dirname(output_dir, "Output directory") { + if clobber && output_dir.is_dir() { + output_dir_exists = true; + } else { + eprintln!("Invalid command-line setting: {}", msg); + std::process::exit(exitcode::USAGE); + } + }; + if !output_dir_exists { + match std::fs::create_dir_all(output_dir) { + Ok(_) => {} + Err(e) => { + panic!( + "Can't create new output directory at '{}': {}", + output_dir.display(), + e + ); + } + } + } + setup_logger(Some(output_dir), debug).unwrap(); +} diff --git a/src/main.rs b/src/main.rs index b26bc56..103f80d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -15,10 +15,12 @@ mod gc_correction; mod genome_ref_utils; mod genome_regions; mod genome_segment; +mod globals; mod int_range; mod joint_call; mod large_variant_output; mod log_utils; +mod logger; mod maf_utils; mod prob_utils; mod refine_sv; @@ -30,11 +32,9 @@ mod sv_group; mod sv_id; mod utils; mod vcf_utils; -mod version; mod wfa2_utils; mod worker_thread_data; -use std::path::Path; use std::{error, process}; use hhmmss::Hhmmss; @@ -43,72 +43,12 @@ use log::info; use crate::cli::Commands; use crate::copy_number_segmentation::*; use crate::discover::run_discover; +use crate::globals::{PROGRAM_NAME, PROGRAM_VERSION}; use crate::joint_call::run_joint_call; -use crate::version::SAWFISH_VERSION; - -static PROG_NAME: &str = env!("CARGO_PKG_NAME"); - -fn setup_logger(output_dir: Option<&Path>, debug: bool) -> Result<(), fern::InitError> { - let level = if debug { - log::LevelFilter::Debug - } else { - log::LevelFilter::Info - }; - let logger = fern::Dispatch::new() - .format(|out, message, record| { - out.finish(format_args!( - "{}[{}][{}] {}", - chrono::Local::now().format("[%Y-%m-%d][%H:%M:%S]"), - PROG_NAME, - record.level(), - message - )) - }) - .level(level) - .chain(std::io::stderr()); - - let logger = if let Some(output_dir) = output_dir { - let log_filename = output_dir.join(PROG_NAME.to_string() + ".log"); - logger.chain(fern::log_file(log_filename)?) - } else { - logger - }; - - logger.apply()?; - Ok(()) -} - -/// Check and create output directory, then setup logger to write there -/// -/// All error messaging in this method needs to account for no logger being setup yet. -/// -fn setup_output_dir_and_logger(output_dir: &Path, clobber: bool, debug: bool) { - let mut output_dir_exists = false; - if let Err(msg) = cli::check_novel_dirname(output_dir, "Output directory") { - if clobber && output_dir.is_dir() { - output_dir_exists = true; - } else { - eprintln!("Invalid command-line setting: {}", msg); - std::process::exit(exitcode::USAGE); - } - }; - if !output_dir_exists { - match std::fs::create_dir_all(output_dir) { - Ok(_) => {} - Err(e) => { - panic!( - "Can't create new output directory at '{}': {}", - output_dir.display(), - e - ); - } - } - } - setup_logger(Some(output_dir), debug).unwrap(); -} +use crate::logger::setup_output_dir_and_logger; fn run(settings: &cli::Settings) -> Result<(), Box> { - info!("Starting {PROG_NAME} {SAWFISH_VERSION}"); + info!("Starting {PROGRAM_NAME} {PROGRAM_VERSION}"); info!( "cmdline: {}", std::env::args().collect::>().join(" ") @@ -127,25 +67,22 @@ fn run(settings: &cli::Settings) -> Result<(), Box> { } info!( - "{PROG_NAME} completed. Total Runtime: {}", + "{PROGRAM_NAME} completed. Total Runtime: {}", start.elapsed().hhmmssxxx() ); Ok(()) } fn main() { - let settings = cli::parse_settings(); + let settings = cli::validate_and_fix_settings(cli::parse_settings()); - // Validation of output_dir needs to be handled separately so that we don't log error messages - // before logging is setup. + // Setup logger, including creation of the output directory for the log file: setup_output_dir_and_logger( settings.get_output_dir(), settings.shared.clobber, settings.shared.debug, ); - let settings = cli::validate_and_fix_settings(settings); - if let Err(err) = run(&settings) { eprintln!("{}", err); process::exit(2); diff --git a/src/vcf_utils.rs b/src/vcf_utils.rs index f3cfece..face379 100644 --- a/src/vcf_utils.rs +++ b/src/vcf_utils.rs @@ -2,7 +2,7 @@ use rust_htslib::bcf::header::Header; use rust_htslib::{htslib, utils}; use rust_vc_utils::ChromList; -use crate::version::SAWFISH_VERSION; +use crate::globals::PROGRAM_VERSION; // Imported non-public constants from rust-htslib pub const VECTOR_END_INTEGER: i32 = i32::MIN + 1; @@ -26,7 +26,7 @@ pub fn get_basic_vcf_header( header.push_record(format!("##fileDate={date_string}").as_bytes()); header.push_record(format!("##reference=file://{ref_filename}").as_bytes()); let prog_name = env!("CARGO_PKG_NAME"); - header.push_record(format!("##source=\"{prog_name} {}\"", SAWFISH_VERSION).as_bytes()); + header.push_record(format!("##source=\"{prog_name} {}\"", PROGRAM_VERSION).as_bytes()); let cmdline = std::env::args().collect::>().join(" "); header.push_record(format!("##{prog_name}_cmdline=\"{cmdline}\"").as_bytes()); diff --git a/src/version.rs b/src/version.rs deleted file mode 100644 index 3ef23f0..0000000 --- a/src/version.rs +++ /dev/null @@ -1,4 +0,0 @@ -/// Global sawfish version number -/// -/// All client code should refer directly to this copy instead of using various possibly conflicting environment variables -pub const SAWFISH_VERSION: &str = env!("VERGEN_GIT_DESCRIBE");