diff --git a/Cargo.lock b/Cargo.lock index 176041a3..3f356491 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -29,7 +29,7 @@ dependencies = [ "actix-rt", "actix-service", "actix-utils", - "ahash 0.8.9", + "ahash 0.8.11", "base64", "bitflags 2.4.2", "brotli", @@ -40,7 +40,7 @@ dependencies = [ "flate2", "futures-core", "h2", - "http", + "http 0.2.11", "httparse", "httpdate", "itoa", @@ -75,7 +75,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d22475596539443685426b6bdadb926ad0ecaefdfc5fb05e5e3441f15463c511" dependencies = [ "bytestring", - "http", + "http 0.2.11", "regex", "serde", "tracing", @@ -144,7 +144,7 @@ dependencies = [ "actix-service", "actix-utils", "actix-web-codegen", - "ahash 0.8.9", + "ahash 0.8.11", "bytes", "bytestring", "cfg-if", @@ -209,9 +209,9 @@ dependencies = [ [[package]] name = "ahash" -version = "0.8.9" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d713b3834d76b85304d4d525563c1276e2e30dc97cc67bfb4585a4a29fc2c89f" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom", @@ -576,132 +576,137 @@ checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" [[package]] name = "aws-config" -version = "0.56.1" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc6b3804dca60326e07205179847f17a4fce45af3a1106939177ad41ac08a6de" +checksum = "2ac9889352d632214df943e26740c46a0f3da6e329fbd28164fe7ae1b061da7b" dependencies = [ "aws-credential-types", - "aws-http", + "aws-runtime", "aws-sdk-sso", + "aws-sdk-ssooidc", "aws-sdk-sts", "aws-smithy-async", - "aws-smithy-client", "aws-smithy-http", - "aws-smithy-http-tower", "aws-smithy-json", + "aws-smithy-runtime", + "aws-smithy-runtime-api", "aws-smithy-types", "aws-types", "bytes", "fastrand 2.0.1", "hex", - "http", + "http 0.2.11", "hyper", - "ring 0.16.20", + "ring", "time", "tokio", - "tower", "tracing", + "url", "zeroize", ] [[package]] name = "aws-credential-types" -version = "0.56.1" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70a66ac8ef5fa9cf01c2d999f39d16812e90ec1467bd382cbbb74ba23ea86201" +checksum = "e16838e6c9e12125face1c1eff1343c75e3ff540de98ff7ebd61874a89bcfeb9" dependencies = [ "aws-smithy-async", + "aws-smithy-runtime-api", "aws-smithy-types", - "fastrand 2.0.1", - "tokio", - "tracing", "zeroize", ] [[package]] -name = "aws-http" -version = "0.56.1" +name = "aws-runtime" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e626370f9ba806ae4c439e49675fd871f5767b093075cdf4fef16cac42ba900" +checksum = "75588e7ee5e8496eed939adac2035a6dbab9f7eb2acdd9ab2d31856dab6f3955" dependencies = [ "aws-credential-types", + "aws-sigv4", + "aws-smithy-async", + "aws-smithy-eventstream", "aws-smithy-http", + "aws-smithy-runtime-api", "aws-smithy-types", "aws-types", "bytes", - "http", - "http-body", - "lazy_static", + "fastrand 2.0.1", + "http 0.2.11", + "http-body 0.4.6", "percent-encoding", "pin-project-lite", "tracing", + "uuid", ] [[package]] -name = "aws-runtime" -version = "0.56.1" +name = "aws-sdk-s3" +version = "1.33.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07ac5cf0ff19c1bca0cea7932e11b239d1025a45696a4f44f72ea86e2b8bdd07" +checksum = "4d4f6dd394c29b6727b298dd966cba14b7f50edcb269d2172eaea691466530a0" dependencies = [ + "ahash 0.8.11", "aws-credential-types", - "aws-http", + "aws-runtime", "aws-sigv4", "aws-smithy-async", + "aws-smithy-checksums", "aws-smithy-eventstream", "aws-smithy-http", + "aws-smithy-json", + "aws-smithy-runtime", "aws-smithy-runtime-api", "aws-smithy-types", + "aws-smithy-xml", "aws-types", + "bytes", "fastrand 2.0.1", - "http", + "hex", + "hmac", + "http 0.2.11", + "http-body 0.4.6", + "lru", + "once_cell", "percent-encoding", + "regex-lite", + "sha2", "tracing", - "uuid", + "url", ] [[package]] -name = "aws-sdk-s3" -version = "0.34.0" +name = "aws-sdk-sso" +version = "1.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42f7a233b27af6e70094eafd43d9ee11da6e78eb2c1a31e5a7de737b782c627d" +checksum = "da75cf91cbb46686a27436d639a720a3a198b148efa76dc2467b7e5374a67fc0" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", - "aws-sigv4", "aws-smithy-async", - "aws-smithy-checksums", - "aws-smithy-client", - "aws-smithy-eventstream", "aws-smithy-http", "aws-smithy-json", "aws-smithy-runtime", "aws-smithy-runtime-api", "aws-smithy-types", - "aws-smithy-xml", "aws-types", "bytes", - "http", - "http-body", + "http 0.2.11", "once_cell", - "percent-encoding", - "regex", - "tokio-stream", + "regex-lite", "tracing", - "url", ] [[package]] -name = "aws-sdk-sso" -version = "0.30.0" +name = "aws-sdk-ssooidc" +version = "1.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "903f888ff190e64f6f5c83fb0f8d54f9c20481f1dc26359bb8896f5d99908949" +checksum = "cf2ec8a6687299685ed0a4a3137c129cdb132b5235bc3aa3443f6cffe468b9ff" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-smithy-async", - "aws-smithy-client", "aws-smithy-http", "aws-smithy-json", "aws-smithy-runtime", @@ -709,23 +714,21 @@ dependencies = [ "aws-smithy-types", "aws-types", "bytes", - "http", - "regex", - "tokio-stream", + "http 0.2.11", + "once_cell", + "regex-lite", "tracing", ] [[package]] name = "aws-sdk-sts" -version = "0.30.0" +version = "1.29.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a47ad6bf01afc00423d781d464220bf69fb6a674ad6629cbbcb06d88cdc2be82" +checksum = "458f1031e094b1411b59b49b19e4118f069e1fe13a9c5b8888e933daaf7ffdd6" dependencies = [ "aws-credential-types", - "aws-http", "aws-runtime", "aws-smithy-async", - "aws-smithy-client", "aws-smithy-http", "aws-smithy-json", "aws-smithy-query", @@ -734,49 +737,57 @@ dependencies = [ "aws-smithy-types", "aws-smithy-xml", "aws-types", - "http", - "regex", + "http 0.2.11", + "once_cell", + "regex-lite", "tracing", ] [[package]] name = "aws-sigv4" -version = "0.56.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7b28f4910bb956b7ab320b62e98096402354eca976c587d1eeccd523d9bac03" +checksum = "58b56f1cbe6fd4d0c2573df72868f20ab1c125ca9c9dbce17927a463433a2e57" dependencies = [ + "aws-credential-types", "aws-smithy-eventstream", "aws-smithy-http", + "aws-smithy-runtime-api", + "aws-smithy-types", "bytes", + "crypto-bigint 0.5.5", "form_urlencoded", "hex", "hmac", - "http", + "http 0.2.11", + "http 1.1.0", "once_cell", + "p256", "percent-encoding", - "regex", + "ring", "sha2", + "subtle", "time", "tracing", + "zeroize", ] [[package]] name = "aws-smithy-async" -version = "0.56.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2cdb73f85528b9d19c23a496034ac53703955a59323d581c06aa27b4e4e247af" +checksum = "62220bc6e97f946ddd51b5f1361f78996e704677afc518a4ff66b7a72ea1378c" dependencies = [ "futures-util", "pin-project-lite", "tokio", - "tokio-stream", ] [[package]] name = "aws-smithy-checksums" -version = "0.56.1" +version = "0.60.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afb15946af1b8d3beeff53ad991d9bff68ac22426b6d40372b958a75fa61eaed" +checksum = "6242d6a54d3b4b83458f4abd7057ba93c4419dc71e8217e9acd3a748d656d99e" dependencies = [ "aws-smithy-http", "aws-smithy-types", @@ -784,8 +795,8 @@ dependencies = [ "crc32c", "crc32fast", "hex", - "http", - "http-body", + "http 0.2.11", + "http-body 0.4.6", "md-5", "pin-project-lite", "sha1", @@ -793,35 +804,11 @@ dependencies = [ "tracing", ] -[[package]] -name = "aws-smithy-client" -version = "0.56.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c27b2756264c82f830a91cb4d2d485b2d19ad5bea476d9a966e03d27f27ba59a" -dependencies = [ - "aws-smithy-async", - "aws-smithy-http", - "aws-smithy-http-tower", - "aws-smithy-types", - "bytes", - "fastrand 2.0.1", - "http", - "http-body", - "hyper", - "hyper-rustls", - "lazy_static", - "pin-project-lite", - "rustls", - "tokio", - "tower", - "tracing", -] - [[package]] name = "aws-smithy-eventstream" -version = "0.56.1" +version = "0.60.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "850233feab37b591b7377fd52063aa37af615687f5896807abe7f49bd4e1d25b" +checksum = "e6363078f927f612b970edf9d1903ef5cef9a64d1e8423525ebb1f0a1633c858" dependencies = [ "aws-smithy-types", "bytes", @@ -830,57 +817,39 @@ dependencies = [ [[package]] name = "aws-smithy-http" -version = "0.56.1" +version = "0.60.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54cdcf365d8eee60686885f750a34c190e513677db58bbc466c44c588abf4199" +checksum = "4a7de001a1b9a25601016d8057ea16e31a45fdca3751304c8edf4ad72e706c08" dependencies = [ "aws-smithy-eventstream", + "aws-smithy-runtime-api", "aws-smithy-types", "bytes", "bytes-utils", "futures-core", - "http", - "http-body", - "hyper", + "http 0.2.11", + "http-body 0.4.6", "once_cell", "percent-encoding", "pin-project-lite", "pin-utils", - "tokio", - "tokio-util", - "tracing", -] - -[[package]] -name = "aws-smithy-http-tower" -version = "0.56.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "822de399d0ce62829a69dfa8c5cd08efdbe61a7426b953e2268f8b8b52a607bd" -dependencies = [ - "aws-smithy-http", - "aws-smithy-types", - "bytes", - "http", - "http-body", - "pin-project-lite", - "tower", "tracing", ] [[package]] name = "aws-smithy-json" -version = "0.56.1" +version = "0.60.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fb1e7ab8fa7ad10c193af7ae56d2420989e9f4758bf03601a342573333ea34f" +checksum = "4683df9469ef09468dad3473d129960119a0d3593617542b7d52086c8486f2d6" dependencies = [ "aws-smithy-types", ] [[package]] name = "aws-smithy-query" -version = "0.56.1" +version = "0.60.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28556a3902091c1f768a34f6c998028921bdab8d47d92586f363f14a4a32d047" +checksum = "f2fbd61ceb3fe8a1cb7352e42689cec5335833cd9f94103a61e98f9bb61c64bb" dependencies = [ "aws-smithy-types", "urlencoding", @@ -888,76 +857,93 @@ dependencies = [ [[package]] name = "aws-smithy-runtime" -version = "0.56.1" +version = "1.5.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "745e096b3553e7e0f40622aa04971ce52765af82bebdeeac53aa6fc82fe801e6" +checksum = "d0d3965f6417a92a6d1009c5958a67042f57e46342afb37ca58f9ad26744ec73" dependencies = [ "aws-smithy-async", - "aws-smithy-client", "aws-smithy-http", "aws-smithy-runtime-api", "aws-smithy-types", "bytes", "fastrand 2.0.1", - "http", - "http-body", + "h2", + "http 0.2.11", + "http-body 0.4.6", + "http-body 1.0.0", + "hyper", + "hyper-rustls", "once_cell", "pin-project-lite", "pin-utils", + "rustls", "tokio", "tracing", ] [[package]] name = "aws-smithy-runtime-api" -version = "0.56.1" +version = "1.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d0ae0c9cfd57944e9711ea610b48a963fb174a53aabacc08c5794a594b1d02" +checksum = "4179bd8a1c943e1aceb46c5b9fc014a561bd6c35a2153e816ba29076ee49d245" dependencies = [ "aws-smithy-async", - "aws-smithy-http", "aws-smithy-types", "bytes", - "http", + "http 0.2.11", + "http 1.1.0", + "pin-project-lite", "tokio", "tracing", + "zeroize", ] [[package]] name = "aws-smithy-types" -version = "0.56.1" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d90dbc8da2f6be461fa3c1906b20af8f79d14968fe47f2b7d29d086f62a51728" +checksum = "5b6764ba7e1c5ede1c9f9e4046645534f06c2581402461c559b481a420330a83" dependencies = [ "base64-simd", + "bytes", + "bytes-utils", + "futures-core", + "http 0.2.11", + "http 1.1.0", + "http-body 0.4.6", + "http-body 1.0.0", + "http-body-util", "itoa", "num-integer", + "pin-project-lite", + "pin-utils", "ryu", "serde", "time", + "tokio", + "tokio-util", ] [[package]] name = "aws-smithy-xml" -version = "0.56.1" +version = "0.60.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e01d2dedcdd8023043716cfeeb3c6c59f2d447fce365d8e194838891794b23b6" +checksum = "d123fbc2a4adc3c301652ba8e149bf4bc1d1725affb9784eb20c953ace06bf55" dependencies = [ "xmlparser", ] [[package]] name = "aws-types" -version = "0.56.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85aa0451bf8af1bf22a4f028d5d28054507a14be43cb8ac0597a8471fba9edfe" +checksum = "6f734808d43702a67e57d478a12e227d4d038d0b90c9005a78c87890d3805922" dependencies = [ "aws-credential-types", "aws-smithy-async", - "aws-smithy-client", - "aws-smithy-http", + "aws-smithy-runtime-api", "aws-smithy-types", - "http", + "http 0.2.11", "rustc_version 0.4.0", "tracing", ] @@ -977,6 +963,12 @@ dependencies = [ "rustc-demangle", ] +[[package]] +name = "base16ct" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "349a06037c7bf932dd7e7d1f653678b2038b9ad46a74102f1fc7bd7872678cce" + [[package]] name = "base16ct" version = "0.2.0" @@ -999,6 +991,12 @@ dependencies = [ "vsimd", ] +[[package]] +name = "base64ct" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" + [[package]] name = "bgzip" version = "0.3.1" @@ -1457,6 +1455,12 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "const-oid" +version = "0.9.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2459377285ad874054d797f3ccebf984978aa39129f6eafde5cdc8315b612f8" + [[package]] name = "convert_case" version = "0.4.0" @@ -1551,6 +1555,28 @@ version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" +[[package]] +name = "crypto-bigint" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef2b4b23cddf68b89b8f8069890e8c270d54e2d5fe1b143820234805e4cb17ef" +dependencies = [ + "generic-array", + "rand_core", + "subtle", + "zeroize", +] + +[[package]] +name = "crypto-bigint" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dc92fb57ca44df6db8059111ab3af99a63d5d0f8375d9972e319a379c6bab76" +dependencies = [ + "rand_core", + "subtle", +] + [[package]] name = "crypto-common" version = "0.1.6" @@ -1678,6 +1704,16 @@ dependencies = [ "syn 1.0.109", ] +[[package]] +name = "der" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f1a467a65c5e759bce6e65eaf91cc29f466cdc57cb65777bd646872a8a1fd4de" +dependencies = [ + "const-oid", + "zeroize", +] + [[package]] name = "deranged" version = "0.3.11" @@ -1834,6 +1870,18 @@ dependencies = [ "windows-sys 0.48.0", ] +[[package]] +name = "ecdsa" +version = "0.14.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413301934810f597c1d19ca71c8710e99a3f1ba28a0d2ebc01551a2daeea3c5c" +dependencies = [ + "der", + "elliptic-curve", + "rfc6979", + "signature", +] + [[package]] name = "editdistancek" version = "1.0.2" @@ -1846,6 +1894,26 @@ version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "11157ac094ffbdde99aa67b23417ebdd801842852b500e395a45a9c0aac03e4a" +[[package]] +name = "elliptic-curve" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7bb888ab5300a19b8e5bceef25ac745ad065f3c9f7efc6de1b91958110891d3" +dependencies = [ + "base16ct 0.1.1", + "crypto-bigint 0.4.9", + "der", + "digest", + "ff", + "generic-array", + "group", + "pkcs8", + "rand_core", + "sec1", + "subtle", + "zeroize", +] + [[package]] name = "encode_unicode" version = "0.3.6" @@ -2032,6 +2100,16 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" +[[package]] +name = "ff" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d013fc25338cc558c5c2cfbad646908fb23591e2404481826742b651c9af7160" +dependencies = [ + "rand_core", + "subtle", +] + [[package]] name = "file_diff" version = "1.0.0" @@ -2279,6 +2357,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "group" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5dfbfb3a6cfbd390d5c9564ab283a0349b9b9fcd46a706c1eb10e0db70bfbac7" +dependencies = [ + "ff", + "rand_core", + "subtle", +] + [[package]] name = "h2" version = "0.3.24" @@ -2290,7 +2379,7 @@ dependencies = [ "futures-core", "futures-sink", "futures-util", - "http", + "http 0.2.11", "indexmap 2.2.6", "slab", "tokio", @@ -2313,7 +2402,7 @@ version = "0.14.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" dependencies = [ - "ahash 0.8.9", + "ahash 0.8.11", "allocator-api2", ] @@ -2356,7 +2445,7 @@ version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2dbe0946a5ab6cec23e35e8b485f64b239beb93cf4d098e5d76ebc3fcc2b8a54" dependencies = [ - "base16ct", + "base16ct 0.2.0", "bio", "biocommons-bioutils", "chrono", @@ -2406,6 +2495,17 @@ dependencies = [ "itoa", ] +[[package]] +name = "http" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21b9ddb458710bc376481b842f5da65cdf31522de232c1ca8146abce2a358258" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + [[package]] name = "http-body" version = "0.4.6" @@ -2413,7 +2513,30 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http", + "http 0.2.11", + "pin-project-lite", +] + +[[package]] +name = "http-body" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" +dependencies = [ + "bytes", + "http 1.1.0", +] + +[[package]] +name = "http-body-util" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0475f8b2ac86659c21b64320d5d653f9efe42acd2a4e560073ec61a155a34f1d" +dependencies = [ + "bytes", + "futures-core", + "http 1.1.0", + "http-body 1.0.0", "pin-project-lite", ] @@ -2452,8 +2575,8 @@ dependencies = [ "futures-core", "futures-util", "h2", - "http", - "http-body", + "http 0.2.11", + "http-body 0.4.6", "httparse", "httpdate", "itoa", @@ -2472,7 +2595,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec3efd23720e2049821a693cbc7e65ea87c72f1c58ff2f9522ff332b1491e590" dependencies = [ "futures-util", - "http", + "http 0.2.11", "hyper", "log", "rustls", @@ -2794,6 +2917,15 @@ dependencies = [ "value-bag", ] +[[package]] +name = "lru" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" +dependencies = [ + "hashbrown 0.14.3", +] + [[package]] name = "lz4-sys" version = "1.9.4" @@ -3254,6 +3386,17 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" +[[package]] +name = "p256" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51f44edd08f51e2ade572f141051021c5af22677e42b7dd28a88155151c33594" +dependencies = [ + "ecdsa", + "elliptic-curve", + "sha2", +] + [[package]] name = "parking" version = "2.2.0" @@ -3391,26 +3534,6 @@ dependencies = [ "siphasher", ] -[[package]] -name = "pin-project" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" -dependencies = [ - "pin-project-internal", -] - -[[package]] -name = "pin-project-internal" -version = "1.1.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.51", -] - [[package]] name = "pin-project-lite" version = "0.2.13" @@ -3434,6 +3557,16 @@ dependencies = [ "futures-io", ] +[[package]] +name = "pkcs8" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9eca2c590a5f85da82668fa685c09ce2888b9430e83299debf1f34b65fd4a4ba" +dependencies = [ + "der", + "spki", +] + [[package]] name = "pkg-config" version = "0.3.30" @@ -3700,7 +3833,7 @@ version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58c20af3800cee5134b79a3bd4a3d4b583c16ccfa5f53338f46400851a5b3819" dependencies = [ - "ahash 0.8.9", + "ahash 0.8.11", "equivalent", "hashbrown 0.14.3", "parking_lot", @@ -3839,6 +3972,12 @@ dependencies = [ "regex-syntax 0.8.2", ] +[[package]] +name = "regex-lite" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30b661b2f27137bdbc16f00eda72866a92bb28af1753ffbd56744fb6e2e9cd8e" + [[package]] name = "regex-syntax" version = "0.6.29" @@ -3867,18 +4006,14 @@ dependencies = [ ] [[package]] -name = "ring" -version = "0.16.20" +name = "rfc6979" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "7743f17af12fa0b03b803ba12cd6a8d9483a587e89c69445e3909655c0b9fabb" dependencies = [ - "cc", - "libc", - "once_cell", - "spin 0.5.2", - "untrusted 0.7.1", - "web-sys", - "winapi", + "crypto-bigint 0.4.9", + "hmac", + "zeroize", ] [[package]] @@ -3891,8 +4026,8 @@ dependencies = [ "cfg-if", "getrandom", "libc", - "spin 0.9.8", - "untrusted 0.9.0", + "spin", + "untrusted", "windows-sys 0.52.0", ] @@ -4091,7 +4226,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f9d5a6813c0759e4609cd494e8e725babae6a2ca7b62a5536a13daaec6fcb7ba" dependencies = [ "log", - "ring 0.17.8", + "ring", "rustls-webpki", "sct", ] @@ -4123,8 +4258,8 @@ version = "0.101.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b6275d1ee7a1cd780b64aca7726599a1dbc893b1e64144529e55c3c2f745765" dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] @@ -4169,8 +4304,8 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da046153aa2352493d6cb7da4b6e5c0c057d8a1d0a9aa8560baffdd945acd414" dependencies = [ - "ring 0.17.8", - "untrusted 0.9.0", + "ring", + "untrusted", ] [[package]] @@ -4179,6 +4314,20 @@ version = "4.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" +[[package]] +name = "sec1" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3be24c1842290c45df0a7bf069e0c268a747ad05a192f2fd7dcfdbc1cba40928" +dependencies = [ + "base16ct 0.1.1", + "der", + "generic-array", + "pkcs8", + "subtle", + "zeroize", +] + [[package]] name = "security-framework" version = "2.9.2" @@ -4380,6 +4529,16 @@ dependencies = [ "libc", ] +[[package]] +name = "signature" +version = "1.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "74233d3b3b2f6d4b006dc19dee745e73e2a6bfb6f93607cd3b02bd5b00797d7c" +dependencies = [ + "digest", + "rand_core", +] + [[package]] name = "simba" version = "0.6.0" @@ -4448,15 +4607,19 @@ dependencies = [ [[package]] name = "spin" -version = "0.5.2" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] -name = "spin" -version = "0.9.8" +name = "spki" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +checksum = "67cf02bbac7a337dc36e4f5a693db6c21e7863f45070f7064577eb4367a3212b" +dependencies = [ + "base64ct", + "der", +] [[package]] name = "statrs" @@ -4770,17 +4933,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-stream" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "397c988d37662c7dda6d2208364a706264bf3d6138b11d436cbac0ad38832842" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-util" version = "0.7.10" @@ -4812,28 +4964,6 @@ dependencies = [ "winnow", ] -[[package]] -name = "tower" -version = "0.4.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" -dependencies = [ - "futures-core", - "futures-util", - "pin-project", - "pin-project-lite", - "tokio", - "tower-layer", - "tower-service", - "tracing", -] - -[[package]] -name = "tower-layer" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" - [[package]] name = "tower-service" version = "0.3.2" @@ -4976,12 +5106,6 @@ version = "0.2.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab4c90930b95a82d00dc9e9ac071b4991924390d46cbd0dfe566148667605e4b" -[[package]] -name = "untrusted" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" - [[package]] name = "untrusted" version = "0.9.0" @@ -5050,7 +5174,7 @@ dependencies = [ "async-std", "aws-config", "aws-sdk-s3", - "base16ct", + "base16ct 0.2.0", "bio", "biocommons-bioutils", "byte-unit", diff --git a/Cargo.toml b/Cargo.toml index 71f69760..7f09daff 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,10 +4,10 @@ version = "0.11.0" authors = ["Manuel Holtgrewe "] description = "Rust-based worker for varfish-server" license = "MIT" -homepage = "https://github.com/bihealth/varfish-server-worker" +repository = "https://github.com/bihealth/varfish-server-worker" edition = "2021" readme = "README.md" -rust-version = "1.64.0" +rust-version = "1.70.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html @@ -15,8 +15,8 @@ rust-version = "1.64.0" annonars = "0.36" anyhow = "1.0" async-compression = { version = "0.4", features = ["tokio", "gzip"] } -aws-sdk-s3 = "0.34" -aws-config = "0.56" +aws-sdk-s3 = { version = "1.33", features = ["behavior-version-latest"] } +aws-config = { version = "1.5", features = ["behavior-version-latest"] } base16ct = "0.2" bio = "1.4" biocommons-bioutils = "0.1" diff --git a/src/common/noodles.rs b/src/common/noodles.rs index 5adcf039..5fbf00b5 100644 --- a/src/common/noodles.rs +++ b/src/common/noodles.rs @@ -101,6 +101,38 @@ pub async fn s3_open_read_maybe_gz

(path: P) -> Result, { + // Get configuration from environment variables. + let access_key = if let Ok(access_key) = std::env::var("AWS_ACCESS_KEY_ID") { + access_key + } else { + anyhow::bail!("could not access key from env AWS_ACCESS_KEY_ID") + }; + let secret_key = if let Ok(secret_key) = std::env::var("AWS_SECRET_ACCESS_KEY") { + secret_key + } else { + anyhow::bail!("could not get secret key from env AWS_SECRET_ACCESS_KEY") + }; + let endpoint_url = if let Ok(endpoint_url) = std::env::var("AWS_ENDPOINT_URL") { + endpoint_url + } else { + anyhow::bail!("could not get endpoint url from env AWS_ENDPOINT_URL") + }; + let region = if let Ok(region) = std::env::var("AWS_REGION") { + region + } else { + anyhow::bail!("could not AWS region from env AWS_REGION") + }; + + let cred = + aws_sdk_s3::config::Credentials::new(access_key, secret_key, None, None, "loaded-from-env"); + let s3_config = aws_sdk_s3::config::Builder::new() + .endpoint_url(&endpoint_url) + .credentials_provider(cred) + .region(aws_config::Region::new(region)) + .force_path_style(true) // apply bucketname as path param instead of pre-domain + .build(); + + // Split bucket and path from input path. let path_string = format!("{}", path.as_ref().display()); let (bucket, key) = if let Some((bucket, key)) = path_string.split_once('/') { (bucket.to_string(), key.to_string()) @@ -108,12 +140,12 @@ where anyhow::bail!("invalid S3 path: {}", path.as_ref().display()); }; - let config = aws_config::load_from_env().await; - let client = aws_sdk_s3::Client::new(&config); + // Setup S3 client and access object. + let client = aws_sdk_s3::Client::from_conf(s3_config); let object = client.get_object().bucket(&bucket).key(&key).send().await?; let path_is_gzip = is_gz(path.as_ref()); - tracing::trace!( + tracing::debug!( "Opening S3 object {} as {} for reading (async)", path.as_ref().display(), if path_is_gzip { @@ -155,21 +187,19 @@ pub async fn open_vcf_readers(paths: &[String]) -> Result, a /// The behaviour is as follows: /// /// - If `path_in` is "-" then open stdin and read as plain text. -/// - If environment variable `AWS_PROFILE` is set to "varfish-s3" then enable S3 mode. +/// - If environment variable `AWS_ACCESS_KEY_ID` is set then enable S3 mode. /// - If `path_in` is absolute or S3 mode is disabled then open `path_in` as local file /// - Otherwise, attempt to open `path_in` as S3 object. pub async fn open_vcf_reader(path_in: &str) -> Result { - let s3_mode = match std::env::var("AWS_PROFILE") { - Ok(s) => s == "varfish-s3", - _ => false, - }; - if s3_mode && !path_in.starts_with('/') { + if super::s3::s3_mode() && path_in != "-" && !path_in.starts_with('/') { + tracing::debug!("Opening S3 object {} for reading (async)", path_in); Ok(vcf::AsyncReader::new( s3_open_read_maybe_gz(path_in) .await .map_err(|e| anyhow::anyhow!("could not build VCF reader from S3 file: {}", e))?, )) } else { + tracing::debug!("Opening local file {} for reading (async)", path_in); Ok(vcf::AsyncReader::new( open_read_maybe_gz(path_in).await.map_err(|e| { anyhow::anyhow!("could not build VCF reader from local file: {}", e) diff --git a/src/common/s3.rs b/src/common/s3.rs index e9f07e65..e2584353 100644 --- a/src/common/s3.rs +++ b/src/common/s3.rs @@ -4,7 +4,9 @@ use mehari::common::io::std::is_gz; /// Helper that returns whether S3 mode has been enabled via `AWS_ACCESS_KEY_ID`. pub fn s3_mode() -> bool { - std::env::var("AWS_ACCESS_KEY_ID").is_ok() + let result = std::env::var("AWS_ACCESS_KEY_ID").is_ok(); + tracing::trace!("S3 mode is {}", if result { "enabled" } else { "disabled" }); + result } /// Return the S3 configuration from environment variables. diff --git a/src/seqvars/ingest/mod.rs b/src/seqvars/ingest/mod.rs index 57761a7a..8f6c6dfc 100644 --- a/src/seqvars/ingest/mod.rs +++ b/src/seqvars/ingest/mod.rs @@ -2,6 +2,7 @@ use std::sync::{Arc, OnceLock}; +use crate::common::noodles::open_vcf_reader; use crate::{ common::{self, worker_version, GenomeRelease}, flush_and_shutdown, @@ -9,7 +10,7 @@ use crate::{ use futures::TryStreamExt; use mehari::{ annotate::seqvars::provider::Provider as MehariProvider, - common::noodles::{open_vcf_reader, open_vcf_writer, AsyncVcfReader, AsyncVcfWriter}, + common::noodles::{open_vcf_writer, AsyncVcfReader, AsyncVcfWriter}, }; use noodles_vcf as vcf; use thousands::Separable; @@ -427,7 +428,7 @@ async fn process_variants( &mut output_record, )?; } else { - tracing::trace!( + tracing::debug!( "Record @{:?} on non-canonical chromosome, skipping.", &vcf_var ); diff --git a/src/seqvars/prefilter/mod.rs b/src/seqvars/prefilter/mod.rs index 4031c72e..e9745f7d 100644 --- a/src/seqvars/prefilter/mod.rs +++ b/src/seqvars/prefilter/mod.rs @@ -2,13 +2,11 @@ use std::io::BufRead; +use crate::common::noodles::open_vcf_reader; use futures::TryStreamExt; use mehari::{ annotate::seqvars::ann::AnnField, - common::{ - io::std::is_gz, - noodles::{open_vcf_reader, open_vcf_writer, AsyncVcfReader, AsyncVcfWriter}, - }, + common::noodles::{open_vcf_writer, AsyncVcfReader, AsyncVcfWriter}, }; use noodles_vcf as vcf; use thousands::Separable; @@ -20,7 +18,7 @@ use crate::{common, flush_and_shutdown}; #[derive(Debug, Clone, serde::Deserialize, serde::Serialize)] struct PrefilterParams { /// Path to output file. - pub path_out: String, + pub prefilter_path: String, /// Maximal allele population frequency. pub max_freq: f64, /// Maximal distance to exon. @@ -216,9 +214,10 @@ pub async fn run(args_common: &crate::common::Args, args: &Args) -> Result<(), a { tracing::info!("opening output files..."); let mut output_writers = Vec::new(); + let mut out_path_helpers = Vec::new(); for params in params_list.iter() { let header_params = PrefilterParams { - path_out: "".into(), + prefilter_path: "".into(), ..params.clone() }; let mut header = header.clone(); @@ -232,9 +231,17 @@ pub async fn run(args_common: &crate::common::Args, args: &Args) -> Result<(), a ), )?; - let mut writer = open_vcf_writer(¶ms.path_out).await?; + out_path_helpers.push(crate::common::s3::OutputPathHelper::new( + ¶ms.prefilter_path, + )?); + let mut writer = + open_vcf_writer(&out_path_helpers.last().expect("just pushed").path_out()).await?; writer.write_header(&header).await.map_err(|e| { - anyhow::anyhow!("could not write header to {}: {}", ¶ms.path_out, e) + anyhow::anyhow!( + "could not write header to {}: {}", + ¶ms.prefilter_path, + e + ) })?; output_writers.push(writer); } @@ -248,28 +255,14 @@ pub async fn run(args_common: &crate::common::Args, args: &Args) -> Result<(), a for output_writer in output_writers.drain(..) { flush_and_shutdown!(output_writer); } - } - - for params in params_list.iter() { - if is_gz(¶ms.path_out) { - tracing::info!("writing TBI index for {}...", ¶ms.path_out); - crate::common::noodles::build_tbi( - ¶ms.path_out, - &format!("{}.tbi", ¶ms.path_out), - ) - .await - .map_err(|e| anyhow::anyhow!("problem building TBI: {}", e))?; - tracing::info!("... done writing TBI index"); - } else { - tracing::info!( - "(not building TBI index for plain text VCF file {}", - ¶ms.path_out - ); + for out_path_helper in out_path_helpers.drain(..) { + out_path_helper.create_tbi_for_bgzf().await?; + out_path_helper.upload_for_s3().await?; } } tracing::info!( - "All of `seqvars ingest` completed in {:?}", + "All of `seqvars prefilter` completed in {:?}", before_anything.elapsed() ); Ok(()) @@ -285,7 +278,7 @@ mod test { path_in: "tests/seqvars/prefilter/ingest.vcf".into(), params: vec![format!( r#"{{ - "path_out": "{}/out-1.vcf", + "prefilter_path": "{}/out-1.vcf", "max_freq": 0.01, "max_exon_dist": 200 }}"#, @@ -301,7 +294,7 @@ mod test { )) .exists()); - insta::assert_snapshot!(std::fs::read_to_string(&format!( + insta::assert_snapshot!(std::fs::read_to_string(format!( "{}/out-1.vcf", tmpdir.to_path_buf().to_str().unwrap() ))?); @@ -314,7 +307,7 @@ mod test { let tmpdir = temp_testdir::TempDir::default(); let params_json = format!( - r#"{{"path_out": "{}/out-1.vcf", "max_freq": 0.01, "max_exon_dist": 200}}"#, + r#"{{"prefilter_path": "{}/out-1.vcf", "max_freq": 0.01, "max_exon_dist": 200}}"#, tmpdir.to_path_buf().to_str().unwrap() ); @@ -334,7 +327,7 @@ mod test { )) .exists()); - insta::assert_snapshot!(std::fs::read_to_string(&format!( + insta::assert_snapshot!(std::fs::read_to_string(format!( "{}/out-1.vcf", tmpdir.to_path_buf().to_str().unwrap() ))?); @@ -351,7 +344,7 @@ mod test { params: vec![ format!( r#"{{ - "path_out": "{}/out-1.vcf", + "prefilter_path": "{}/out-1.vcf", "max_freq": 0.01, "max_exon_dist": 200 }}"#, @@ -359,7 +352,7 @@ mod test { ), format!( r#"{{ - "path_out": "{}/out-2.vcf", + "prefilter_path": "{}/out-2.vcf", "max_freq": 0, "max_exon_dist": 20 }}"#, @@ -381,11 +374,11 @@ mod test { )) .exists()); - insta::assert_snapshot!(std::fs::read_to_string(&format!( + insta::assert_snapshot!(std::fs::read_to_string(format!( "{}/out-1.vcf", tmpdir.to_path_buf().to_str().unwrap() ))?); - insta::assert_snapshot!(std::fs::read_to_string(&format!( + insta::assert_snapshot!(std::fs::read_to_string(format!( "{}/out-2.vcf", tmpdir.to_path_buf().to_str().unwrap() ))?); diff --git a/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__single_output_arg.snap b/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__single_output_arg.snap index 4d8dd0f5..836d1e5b 100644 --- a/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__single_output_arg.snap +++ b/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__single_output_arg.snap @@ -1,6 +1,6 @@ --- source: src/seqvars/prefilter/mod.rs -expression: "std::fs::read_to_string(&format!(\"{}/out-1.vcf\",\n tmpdir.to_path_buf().to_str().unwrap()))?" +expression: "std::fs::read_to_string(format!(\"{}/out-1.vcf\",\n tmpdir.to_path_buf().to_str().unwrap()))?" --- ##fileformat=VCFv4.4 ##INFO= @@ -54,8 +54,7 @@ expression: "std::fs::read_to_string(&format!(\"{}/out-1.vcf\",\n ##PEDIGREE= ##x-varfish-version= ##x-varfish-version= -##x-varfish-prefilter-params={"path_out":"","max_freq":0.01,"max_exon_dist":200} +##x-varfish-prefilter-params={"prefilter_path":"","max_freq":0.01,"max_exon_dist":200} #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT Case_1_father-N1-DNA1-WGS1 Case_1_index-N1-DNA1-WGS1 Case_1_mother-N1-DNA1-WGS1 17 41210126 . C CTAGCACTT . . gnomad_exomes_an=31272;gnomad_exomes_hom=0;gnomad_exomes_het=85;gnomad_genomes_an=0;gnomad_genomes_hom=0;gnomad_genomes_het=0;ANN=CTAGCACTT|intron_variant|MODIFIER|BRCA1|HGNC:1100|transcript|NM_007294.4|Coding|18/22|c.5194-975_5194-974insAAGTGCTA|p.?|5307/7088|5194/5592||-974|,CTAGCACTT|intron_variant|MODIFIER|BRCA1|HGNC:1100|transcript|NM_007297.4|Coding|17/21|c.5053-975_5053-974insAAGTGCTA|p.?|5247/7028|5053/5451||-974|,CTAGCACTT|intron_variant|MODIFIER|BRCA1|HGNC:1100|transcript|NM_007299.4|Coding|18/21|c.1882-975_1882-974insAAGTGCTA|p.?|1989/3696|1882/2100||-974|,CTAGCACTT|intron_variant|MODIFIER|BRCA1|HGNC:1100|transcript|NM_007300.4|Coding|19/23|c.5257-975_5257-974insAAGTGCTA|p.?|5370/7151|5257/5655||-974| GT:AD:DP:GQ 0/0:29:29:87 0/1:23:36:99 0/1:15:32:99 MT 750 . A G . . . GT:AD:DP:GQ 1/1:0:2757:99 1/1:0:2392:99 1/1:0:1621:99 - diff --git a/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__single_output_file.snap b/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__single_output_file.snap index 4d8dd0f5..836d1e5b 100644 --- a/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__single_output_file.snap +++ b/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__single_output_file.snap @@ -1,6 +1,6 @@ --- source: src/seqvars/prefilter/mod.rs -expression: "std::fs::read_to_string(&format!(\"{}/out-1.vcf\",\n tmpdir.to_path_buf().to_str().unwrap()))?" +expression: "std::fs::read_to_string(format!(\"{}/out-1.vcf\",\n tmpdir.to_path_buf().to_str().unwrap()))?" --- ##fileformat=VCFv4.4 ##INFO= @@ -54,8 +54,7 @@ expression: "std::fs::read_to_string(&format!(\"{}/out-1.vcf\",\n ##PEDIGREE= ##x-varfish-version= ##x-varfish-version= -##x-varfish-prefilter-params={"path_out":"","max_freq":0.01,"max_exon_dist":200} +##x-varfish-prefilter-params={"prefilter_path":"","max_freq":0.01,"max_exon_dist":200} #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT Case_1_father-N1-DNA1-WGS1 Case_1_index-N1-DNA1-WGS1 Case_1_mother-N1-DNA1-WGS1 17 41210126 . C CTAGCACTT . . gnomad_exomes_an=31272;gnomad_exomes_hom=0;gnomad_exomes_het=85;gnomad_genomes_an=0;gnomad_genomes_hom=0;gnomad_genomes_het=0;ANN=CTAGCACTT|intron_variant|MODIFIER|BRCA1|HGNC:1100|transcript|NM_007294.4|Coding|18/22|c.5194-975_5194-974insAAGTGCTA|p.?|5307/7088|5194/5592||-974|,CTAGCACTT|intron_variant|MODIFIER|BRCA1|HGNC:1100|transcript|NM_007297.4|Coding|17/21|c.5053-975_5053-974insAAGTGCTA|p.?|5247/7028|5053/5451||-974|,CTAGCACTT|intron_variant|MODIFIER|BRCA1|HGNC:1100|transcript|NM_007299.4|Coding|18/21|c.1882-975_1882-974insAAGTGCTA|p.?|1989/3696|1882/2100||-974|,CTAGCACTT|intron_variant|MODIFIER|BRCA1|HGNC:1100|transcript|NM_007300.4|Coding|19/23|c.5257-975_5257-974insAAGTGCTA|p.?|5370/7151|5257/5655||-974| GT:AD:DP:GQ 0/0:29:29:87 0/1:23:36:99 0/1:15:32:99 MT 750 . A G . . . GT:AD:DP:GQ 1/1:0:2757:99 1/1:0:2392:99 1/1:0:1621:99 - diff --git a/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__two_output_arg-2.snap b/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__two_output_arg-2.snap index 23980351..2bfa2706 100644 --- a/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__two_output_arg-2.snap +++ b/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__two_output_arg-2.snap @@ -1,6 +1,6 @@ --- source: src/seqvars/prefilter/mod.rs -expression: "std::fs::read_to_string(&format!(\"{}/out-2.vcf\",\n tmpdir.to_path_buf().to_str().unwrap()))?" +expression: "std::fs::read_to_string(format!(\"{}/out-2.vcf\",\n tmpdir.to_path_buf().to_str().unwrap()))?" --- ##fileformat=VCFv4.4 ##INFO= @@ -54,7 +54,6 @@ expression: "std::fs::read_to_string(&format!(\"{}/out-2.vcf\",\n ##PEDIGREE= ##x-varfish-version= ##x-varfish-version= -##x-varfish-prefilter-params={"path_out":"","max_freq":0.0,"max_exon_dist":20} +##x-varfish-prefilter-params={"prefilter_path":"","max_freq":0.0,"max_exon_dist":20} #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT Case_1_father-N1-DNA1-WGS1 Case_1_index-N1-DNA1-WGS1 Case_1_mother-N1-DNA1-WGS1 MT 750 . A G . . . GT:AD:DP:GQ 1/1:0:2757:99 1/1:0:2392:99 1/1:0:1621:99 - diff --git a/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__two_output_arg.snap b/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__two_output_arg.snap index 4d8dd0f5..836d1e5b 100644 --- a/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__two_output_arg.snap +++ b/src/seqvars/prefilter/snapshots/varfish_server_worker__seqvars__prefilter__test__two_output_arg.snap @@ -1,6 +1,6 @@ --- source: src/seqvars/prefilter/mod.rs -expression: "std::fs::read_to_string(&format!(\"{}/out-1.vcf\",\n tmpdir.to_path_buf().to_str().unwrap()))?" +expression: "std::fs::read_to_string(format!(\"{}/out-1.vcf\",\n tmpdir.to_path_buf().to_str().unwrap()))?" --- ##fileformat=VCFv4.4 ##INFO= @@ -54,8 +54,7 @@ expression: "std::fs::read_to_string(&format!(\"{}/out-1.vcf\",\n ##PEDIGREE= ##x-varfish-version= ##x-varfish-version= -##x-varfish-prefilter-params={"path_out":"","max_freq":0.01,"max_exon_dist":200} +##x-varfish-prefilter-params={"prefilter_path":"","max_freq":0.01,"max_exon_dist":200} #CHROM POS ID REF ALT QUAL FILTER INFO FORMAT Case_1_father-N1-DNA1-WGS1 Case_1_index-N1-DNA1-WGS1 Case_1_mother-N1-DNA1-WGS1 17 41210126 . C CTAGCACTT . . gnomad_exomes_an=31272;gnomad_exomes_hom=0;gnomad_exomes_het=85;gnomad_genomes_an=0;gnomad_genomes_hom=0;gnomad_genomes_het=0;ANN=CTAGCACTT|intron_variant|MODIFIER|BRCA1|HGNC:1100|transcript|NM_007294.4|Coding|18/22|c.5194-975_5194-974insAAGTGCTA|p.?|5307/7088|5194/5592||-974|,CTAGCACTT|intron_variant|MODIFIER|BRCA1|HGNC:1100|transcript|NM_007297.4|Coding|17/21|c.5053-975_5053-974insAAGTGCTA|p.?|5247/7028|5053/5451||-974|,CTAGCACTT|intron_variant|MODIFIER|BRCA1|HGNC:1100|transcript|NM_007299.4|Coding|18/21|c.1882-975_1882-974insAAGTGCTA|p.?|1989/3696|1882/2100||-974|,CTAGCACTT|intron_variant|MODIFIER|BRCA1|HGNC:1100|transcript|NM_007300.4|Coding|19/23|c.5257-975_5257-974insAAGTGCTA|p.?|5370/7151|5257/5655||-974| GT:AD:DP:GQ 0/0:29:29:87 0/1:23:36:99 0/1:15:32:99 MT 750 . A G . . . GT:AD:DP:GQ 1/1:0:2757:99 1/1:0:2392:99 1/1:0:1621:99 - diff --git a/src/seqvars/query/mod.rs b/src/seqvars/query/mod.rs index a61dd5d1..264d5f45 100644 --- a/src/seqvars/query/mod.rs +++ b/src/seqvars/query/mod.rs @@ -97,11 +97,11 @@ fn passes_for_gene( .iter() .for_each(|(sample_name, genotype_choice)| match genotype_choice { Some(GenotypeChoice::ComphetIndex) => { - index_name = sample_name.clone(); + index_name.clone_from(sample_name); mode = Mode::ComphetRecessive; } Some(GenotypeChoice::RecessiveIndex) => { - index_name = sample_name.clone(); + index_name.clone_from(sample_name); mode = Mode::Recessive; } Some(GenotypeChoice::RecessiveParent) => { diff --git a/src/strucvars/ingest/mod.rs b/src/strucvars/ingest/mod.rs index 8aaddeea..b70d29ba 100644 --- a/src/strucvars/ingest/mod.rs +++ b/src/strucvars/ingest/mod.rs @@ -1,11 +1,12 @@ //! Implementation of `strucvars ingest` subcommand. +use crate::common::noodles::open_vcf_readers; use crate::common::{self, worker_version, GenomeRelease}; use crate::flush_and_shutdown; use futures::future::join_all; use mehari::annotate::strucvars::guess_sv_caller; use mehari::common::io::std::is_gz; -use mehari::common::noodles::{open_vcf_readers, open_vcf_writer, AsyncVcfReader, AsyncVcfWriter}; +use mehari::common::noodles::{open_vcf_writer, AsyncVcfReader, AsyncVcfWriter}; use noodles_vcf as vcf; use rand_core::SeedableRng; use tokio::io::AsyncWriteExt;