From dc8fd176971e79b058e910393ebb6ef0c54028ed Mon Sep 17 00:00:00 2001 From: Joseph Guhlin Date: Tue, 7 Jan 2025 15:19:49 +1300 Subject: [PATCH 1/8] Prepare for release --- minimappers2/.gitattributes | 2 + minimappers2/.gitignore | 3 + minimappers2/Cargo.lock | 1151 +++++-- minimappers2/Cargo.toml | 11 +- minimappers2/Exampe.ipynb | 1634 +++++++++ minimappers2/example/.gitattributes | 2 + minimappers2/example/.gitignore | 3 + minimappers2/example/Exampe.ipynb | 4763 +++++++++++---------------- minimappers2/example/pixi.lock | 4144 +++++++++++++++++++++++ minimappers2/example/pixi.toml | 20 + minimappers2/pixi.lock | 454 +++ minimappers2/pixi.toml | 13 + minimappers2/pyproject.toml | 7 +- minimappers2/src/lib.rs | 525 ++- 14 files changed, 9292 insertions(+), 3440 deletions(-) create mode 100644 minimappers2/.gitattributes create mode 100644 minimappers2/.gitignore create mode 100644 minimappers2/Exampe.ipynb create mode 100644 minimappers2/example/.gitattributes create mode 100644 minimappers2/example/.gitignore create mode 100644 minimappers2/example/pixi.lock create mode 100644 minimappers2/example/pixi.toml create mode 100644 minimappers2/pixi.lock create mode 100644 minimappers2/pixi.toml diff --git a/minimappers2/.gitattributes b/minimappers2/.gitattributes new file mode 100644 index 0000000..07fe41c --- /dev/null +++ b/minimappers2/.gitattributes @@ -0,0 +1,2 @@ +# GitHub syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/minimappers2/.gitignore b/minimappers2/.gitignore new file mode 100644 index 0000000..096b5eb --- /dev/null +++ b/minimappers2/.gitignore @@ -0,0 +1,3 @@ +# pixi environments +.pixi +*.egg-info diff --git a/minimappers2/Cargo.lock b/minimappers2/Cargo.lock index 83de17e..40d59c2 100644 --- a/minimappers2/Cargo.lock +++ b/minimappers2/Cargo.lock @@ -1,6 +1,21 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 + +[[package]] +name = "addr2line" +version = "0.24.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler2" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" @@ -26,9 +41,9 @@ dependencies = [ [[package]] name = "allocator-api2" -version = "0.2.18" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" +checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] name = "android-tzdata" @@ -60,6 +75,39 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bf7d0a018de4f6aa429b9d33d69edf69072b1c5b1cb8d3e4a5f7ef898fc3eb76" +[[package]] +name = "async-stream" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b5a71a6f37880a80d1d7f19efd781e4b5de42c88f0722cc13bcb6cc2cfe8476" +dependencies = [ + "async-stream-impl", + "futures-core", + "pin-project-lite", +] + +[[package]] +name = "async-stream-impl" +version = "0.3.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", +] + +[[package]] +name = "async-trait" +version = "0.1.85" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", +] + [[package]] name = "atoi" version = "2.0.0" @@ -71,15 +119,36 @@ dependencies = [ [[package]] name = "atoi_simd" -version = "0.15.6" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ae037714f313c1353189ead58ef9eec30a8e8dc101b2622d461418fd59e28a9" +checksum = "4790f9e8961209112beb783d85449b508673cf4a6a419c8449b210743ac4dbe9" + +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.3.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" + +[[package]] +name = "backtrace" +version = "0.3.74" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-targets", +] [[package]] name = "base64" @@ -89,15 +158,15 @@ checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" [[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 = "buffer-redux" -version = "1.0.1" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c9f8ddd22e0a12391d1e7ada69ec3b0da1914f1cec39c5cf977143c5b2854f5" +checksum = "4e8acf87c5b9f5897cd3ebb9a327f420e0cae9dd4e5c1d2e36f2c84c571a58f1" dependencies = [ "memchr", ] @@ -116,39 +185,54 @@ checksum = "5ce89b21cab1437276d2650d57e971f9d548a2d9037cc231abdc0562b97498ce" [[package]] name = "bytemuck" -version = "1.16.0" +version = "1.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78834c15cb5d5efe3452d58b1e8ba890dd62d21907f867f383358198e56ebca5" +checksum = "ef657dfab802224e671f5818e9a4935f9b1957ed18e58292690cc39e7a4092a3" dependencies = [ "bytemuck_derive", ] [[package]] name = "bytemuck_derive" -version = "1.7.0" +version = "1.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ee891b04274a59bd38b412188e24b849617b2e45a0fd8d057deb63e7403761b" +checksum = "3fa76293b4f7bb636ab88fd78228235b5248b4d05cc589aed610f954af5d7c7a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.95", ] +[[package]] +name = "byteorder" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" + [[package]] name = "bytes" -version = "1.6.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" + +[[package]] +name = "castaway" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0abae9be0aaf9ea96a3b1b8b1b55c602ca751eba1b1500220cea4ecbafe7c0d5" +dependencies = [ + "rustversion", +] [[package]] name = "cc" -version = "1.0.98" +version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41c270e7540d725e65ac7f1b212ac8ce349719624d7bcff99f8e2e488e8cf03f" +checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" dependencies = [ "jobserver", "libc", - "once_cell", + "shlex", ] [[package]] @@ -159,9 +243,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "chrono" -version = "0.4.38" +version = "0.4.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" +checksum = "7e36cc9d416881d2e24f9a963be5fb1cd90966419ac844274161d10488b3e825" dependencies = [ "android-tzdata", "iana-time-zone", @@ -171,9 +255,9 @@ dependencies = [ [[package]] name = "chrono-tz" -version = "0.8.6" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59ae0466b83e838b81a54256c39d5d7c20b9d7daa10510a242d9b75abd5936e" +checksum = "cd6dd8046d00723a59a2f8c5f295c515b9bb9a331ee4f8f3d4dd49e428acd3b6" dependencies = [ "chrono", "chrono-tz-build", @@ -182,20 +266,19 @@ dependencies = [ [[package]] name = "chrono-tz-build" -version = "0.2.1" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "433e39f13c9a060046954e0592a8d0a4bcb1040125cbf91cb8ee58964cfb350f" +checksum = "e94fea34d77a245229e7746bd2beb786cd2a896f306ff491fb8cecb3074b10a7" dependencies = [ "parse-zoneinfo", - "phf", "phf_codegen", ] [[package]] name = "comfy-table" -version = "7.1.1" +version = "7.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b34115915337defe99b2aff5c2ce6771e5fbc4079f4b506301f5cf394c8452f7" +checksum = "24f165e7b643266ea80cb858aed492ad9280e3e05ce24d4a99d7d7b889b6a4d9" dependencies = [ "crossterm", "strum", @@ -203,11 +286,26 @@ dependencies = [ "unicode-width", ] +[[package]] +name = "compact_str" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b79c4069c6cad78e2e0cdfcbd26275770669fb39fd308a752dc110e83b9af32" +dependencies = [ + "castaway", + "cfg-if", + "itoa", + "rustversion", + "ryu", + "serde", + "static_assertions", +] + [[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 = "crossbeam" @@ -224,18 +322,18 @@ dependencies = [ [[package]] name = "crossbeam-channel" -version = "0.5.13" +version = "0.5.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33480d6946193aa8033910124896ca395333cae7e2d1113d1fef6c3272217df2" +checksum = "06ba6d68e24814cb8de6bb986db8222d3a027d15872cabc0d18817bc3c0e4471" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-deque" -version = "0.8.5" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" +checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" dependencies = [ "crossbeam-epoch", "crossbeam-utils", @@ -252,29 +350,29 @@ dependencies = [ [[package]] name = "crossbeam-queue" -version = "0.3.11" +version = "0.3.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df0346b5d5e76ac2fe4e327c5fd1118d6be7c51dfb18f9b7922923f287471e35" +checksum = "0f58bbc28f91df819d0aa2a2c00cd19754769c2fad90579b3592b1c9ba7a3115" dependencies = [ "crossbeam-utils", ] [[package]] name = "crossbeam-utils" -version = "0.8.20" +version = "0.8.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" +checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" [[package]] name = "crossterm" -version = "0.27.0" +version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f476fe445d41c9e991fd07515a6f463074b782242ccf4a5b7b1d1012e70824df" +checksum = "829d955a0bb380ef178a640b91779e3987da38c9aea133b20614cfed8cdea9c6" dependencies = [ "bitflags", "crossterm_winapi", - "libc", "parking_lot", + "rustix", "winapi", ] @@ -295,9 +393,9 @@ checksum = "0d6ef0072f8a535281e4876be788938b528e9a1d43900b82c2569af7da799125" [[package]] name = "either" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dca9240753cf90908d7e4aac30f630662b02aebaa1b58a3cadabdb23385b58b" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" [[package]] name = "enum_dispatch" @@ -308,7 +406,7 @@ dependencies = [ "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.95", ] [[package]] @@ -317,6 +415,16 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" +[[package]] +name = "errno" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" +dependencies = [ + "libc", + "windows-sys 0.59.0", +] + [[package]] name = "ethnum" version = "1.5.0" @@ -330,16 +438,105 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" [[package]] -name = "fast-float" -version = "0.2.0" +name = "fast-float2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95765f67b4b18863968b4a1bd5bb576f732b29a4a28c7cd84c09fa3e2875f33c" +checksum = "f8eb564c5c7423d25c886fb561d1e4ee69f72354d16918afa32c08811f6b6a55" [[package]] -name = "foreign_vec" -version = "0.1.0" +name = "foldhash" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0d2fde1f7b3d48b8395d5f2de76c18a528bd6a9cdde438df747bfcba3e05d6f" + +[[package]] +name = "futures" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" +dependencies = [ + "futures-channel", + "futures-core", + "futures-executor", + "futures-io", + "futures-sink", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-channel" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" +dependencies = [ + "futures-core", + "futures-sink", +] + +[[package]] +name = "futures-core" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee1b05cbd864bcaecbd3455d6d967862d446e4ebfc3c2e5e5b9841e53cba6673" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" + +[[package]] +name = "futures-executor" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" + +[[package]] +name = "futures-macro" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", +] + +[[package]] +name = "futures-sink" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" + +[[package]] +name = "futures-task" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" + +[[package]] +name = "futures-util" +version = "0.3.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" +dependencies = [ + "futures-channel", + "futures-core", + "futures-io", + "futures-macro", + "futures-sink", + "futures-task", + "memchr", + "pin-project-lite", + "pin-utils", + "slab", +] [[package]] name = "getrandom" @@ -354,11 +551,17 @@ dependencies = [ "wasm-bindgen", ] +[[package]] +name = "gimli" +version = "0.31.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" + [[package]] name = "glob" -version = "0.3.1" +version = "0.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" +checksum = "a8d1add55171497b4705a648c6b583acafb01d58050a51727785f0b2c8e0a2b2" [[package]] name = "hashbrown" @@ -373,10 +576,17 @@ dependencies = [ ] [[package]] -name = "heck" -version = "0.4.1" +name = "hashbrown" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" +dependencies = [ + "allocator-api2", + "equivalent", + "foldhash", + "rayon", + "serde", +] [[package]] name = "heck" @@ -392,25 +602,25 @@ checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" [[package]] name = "home" -version = "0.5.9" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" +checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" dependencies = [ - "windows-sys", + "windows-sys 0.59.0", ] [[package]] name = "iana-time-zone" -version = "0.1.60" +version = "0.1.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" dependencies = [ "android_system_properties", "core-foundation-sys", "iana-time-zone-haiku", "js-sys", "wasm-bindgen", - "windows-core", + "windows-core 0.52.0", ] [[package]] @@ -424,12 +634,13 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.2.6" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", - "hashbrown", + "hashbrown 0.15.2", + "serde", ] [[package]] @@ -440,9 +651,9 @@ checksum = "b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5" [[package]] name = "itoa" -version = "1.0.11" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "itoap" @@ -452,39 +663,40 @@ checksum = "9028f49264629065d057f340a86acb84867925865f73bbf8d47b4d149a7e88b8" [[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.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ + "once_cell", "wasm-bindgen", ] [[package]] name = "libc" -version = "0.2.155" +version = "0.2.169" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" +checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" [[package]] name = "libm" -version = "0.2.8" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] name = "libmimalloc-sys" -version = "0.1.38" +version = "0.1.39" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e7bb23d733dfcc8af652a78b7bf232f0e967710d044732185e561e47c0336b6" +checksum = "23aa6811d3bd4deb8a84dde645f943476d13b248d818edcf8ce0b2f37f036b44" dependencies = [ "cc", "libc", @@ -492,9 +704,9 @@ dependencies = [ [[package]] name = "libz-sys" -version = "1.1.18" +version = "1.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" +checksum = "d2d16453e800a8cf6dd2fc3eb4bc99b786a9b90c663b8559a5b1a041bf89e472" dependencies = [ "cc", "libc", @@ -502,6 +714,12 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + [[package]] name = "lock_api" version = "0.4.12" @@ -514,25 +732,24 @@ dependencies = [ [[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 = "lz4" -version = "1.24.0" +version = "1.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e9e2dd86df36ce760a60f6ff6ad526f7ba1f14ba0356f8254fb6905e6494df1" +checksum = "4d1febb2b4a79ddd1980eede06a8f7902197960aa0383ffcfdd62fe723036725" dependencies = [ - "libc", "lz4-sys", ] [[package]] name = "lz4-sys" -version = "1.9.4" +version = "1.11.1+lz4-1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57d27b317e207b10f69f5e75494119e391a96f48861ae870d1da6edac98ca900" +checksum = "6bd8c0d6c6ed0cd30b3652886bb8711dc4bb01d637a68105a3d5158039b418e6" dependencies = [ "cc", "libc", @@ -540,15 +757,15 @@ 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 = "memmap2" -version = "0.7.1" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6" +checksum = "fd3f7eed9d3848f8b98834af67102b720745c4ec028fcd0aa0239277e7de374f" dependencies = [ "libc", ] @@ -564,49 +781,64 @@ dependencies = [ [[package]] name = "mimalloc" -version = "0.1.42" +version = "0.1.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e9186d86b79b52f4a77af65604b51225e8db1d6ee7e3f41aec1e40829c71a176" +checksum = "68914350ae34959d83f732418d51e2427a794055d0b9529f48259ac07af65633" dependencies = [ "libmimalloc-sys", ] [[package]] name = "minimap2" -version = "0.1.18+minimap2.2.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d366b8d6fc980d86ab32a76fc454908362b0d28798fd489d0dba83e9a0d9ee6" +version = "0.1.23+minimap2.2.28" dependencies = [ "libc", "minimap2-sys", "needletail", - "simdutf8", ] [[package]] name = "minimap2-sys" -version = "0.1.19+minimap2.2.28" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b27cbfa7368abd87de720ae844d9aad28452fa5b415d8df629497b23c030ad6" +version = "0.1.21+minimap2.2.28" dependencies = [ "cc", "libz-sys", + "paste", "pkg-config", ] [[package]] name = "minimappers2" -version = "0.1.6" +version = "0.1.7" dependencies = [ "crossbeam", "mimalloc", "minimap2", - "minimap2-sys", "polars", "pyo3", "pyo3-polars", ] +[[package]] +name = "miniz_oxide" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" +dependencies = [ + "adler2", +] + +[[package]] +name = "mio" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" +dependencies = [ + "libc", + "wasi", + "windows-sys 0.52.0", +] + [[package]] name = "multiversion" version = "0.7.4" @@ -631,9 +863,9 @@ dependencies = [ [[package]] name = "needletail" -version = "0.5.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db05a5ab397f64070d8c998fa0fbb84e484b81f95752af317dac183a82d9295d" +checksum = "de3de09e373770238e3d30eb1a9f09f4754134d0ef354d0570bc1203d2517257" dependencies = [ "buffer-redux", "bytecount", @@ -668,11 +900,20 @@ dependencies = [ "libm", ] +[[package]] +name = "object" +version = "0.36.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62948e14d923ea95ea2c7c86c71013138b66525b86bdc08d2dcc262bdb497b87" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" -version = "1.19.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "parking_lot" @@ -697,12 +938,6 @@ dependencies = [ "windows-targets", ] -[[package]] -name = "parquet-format-safe" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1131c54b167dd4e4799ce762e1ab01549ebb94d5bdd13e6ec1b467491c378e1f" - [[package]] name = "parse-zoneinfo" version = "0.3.1" @@ -712,6 +947,12 @@ dependencies = [ "regex", ] +[[package]] +name = "paste" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" + [[package]] name = "percent-encoding" version = "2.3.1" @@ -720,18 +961,18 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "phf" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_shared", ] [[package]] name = "phf_codegen" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8d39688d359e6b34654d328e262234662d16cc0f60ec8dcbe5e718709342a5a" +checksum = "aef8048c789fa5e851558d709946d6d79a8ff88c0440c587967f8e94bfb1216a" dependencies = [ "phf_generator", "phf_shared", @@ -739,9 +980,9 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ "phf_shared", "rand", @@ -749,18 +990,30 @@ dependencies = [ [[package]] name = "phf_shared" -version = "0.11.2" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ "siphasher", ] +[[package]] +name = "pin-project-lite" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + [[package]] name = "pkg-config" -version = "0.3.30" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "planus" @@ -773,9 +1026,9 @@ dependencies = [ [[package]] name = "polars" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e148396dca5496566880fa19374f3f789a29db94e3eb458afac1497b4bac5442" +checksum = "0c0af18ae021b0396c42f39396146332957ebc4d4d25d931b4fe73509948f348" dependencies = [ "getrandom", "polars-arrow", @@ -793,35 +1046,33 @@ dependencies = [ [[package]] name = "polars-arrow" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cb5e11cd0752ae022fa6ca3afa50a14b0301b7ce53c0135828fbb0f4fa8303e" +checksum = "d1fd3c64d50b7f5f328e1566cab9979d4bc1ba2ff22114b301ed2ee0e518dbca" dependencies = [ "ahash", "atoi", - "atoi_simd", "bytemuck", "chrono", "chrono-tz", "dyn-clone", "either", "ethnum", - "fast-float", - "foreign_vec", "getrandom", - "hashbrown", - "itoa", + "hashbrown 0.15.2", "itoap", "lz4", "multiversion", "num-traits", + "parking_lot", "polars-arrow-format", "polars-error", + "polars-schema", "polars-utils", - "ryu", "simdutf8", "streaming-iterator", "strength_reduce", + "strum_macros", "version_check", "zstd", ] @@ -838,25 +1089,31 @@ dependencies = [ [[package]] name = "polars-compute" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "89fc4578f826234cdecb782952aa9c479dc49373f81694a7b439c70b6f609ba0" +checksum = "e60822c245a870113df5a88fb184039501eda0a56bcd0c3f866406ff659df340" dependencies = [ + "atoi_simd", "bytemuck", + "chrono", "either", + "fast-float2", + "itoa", + "itoap", "num-traits", "polars-arrow", "polars-error", "polars-utils", + "ryu", "strength_reduce", "version_check", ] [[package]] name = "polars-core" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e490c6bace1366a558feea33d1846f749a8ca90bd72a6748752bc65bb4710b2a" +checksum = "4794a9e38ef2faf7e47a6f736c7f156c6fbb66cd529f82593b2d48348e422c8d" dependencies = [ "ahash", "bitflags", @@ -865,68 +1122,79 @@ dependencies = [ "chrono-tz", "comfy-table", "either", - "hashbrown", + "hashbrown 0.14.5", + "hashbrown 0.15.2", "indexmap", + "itoa", "num-traits", "once_cell", "polars-arrow", "polars-compute", "polars-error", "polars-row", + "polars-schema", "polars-utils", "rand", "rand_distr", "rayon", "regex", - "smartstring", - "thiserror", + "strum_macros", + "thiserror 2.0.9", "version_check", "xxhash-rust", ] [[package]] name = "polars-error" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08888f58e61599b00f5ea0c2ccdc796b54b9859559cc0d4582733509451fa01a" +checksum = "100093a164bf6c001487ea528b7504f4be1a6881bcffe279bd6133e8f4b4e4f7" dependencies = [ "polars-arrow-format", "regex", "simdutf8", - "thiserror", + "thiserror 2.0.9", ] [[package]] name = "polars-expr" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4173591920fe56ad55af025f92eb0d08421ca85705c326a640c43856094e3484" +checksum = "ad56c5ea4d6e0546fbc3fa35918a537b76587600a5118770ed331136249d50d8" dependencies = [ "ahash", "bitflags", + "hashbrown 0.15.2", + "num-traits", "once_cell", "polars-arrow", + "polars-compute", "polars-core", "polars-io", "polars-ops", "polars-plan", + "polars-row", "polars-time", "polars-utils", + "rand", "rayon", - "smartstring", ] [[package]] name = "polars-io" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5842896aea46d975b425d63f156f412aed3cfde4c257b64fb1f43ceea288074e" +checksum = "95d774d5971d2092f0588e89d2f0be524dff35ea368272c0810ba54a860e4411" dependencies = [ "ahash", + "async-trait", "atoi_simd", "bytes", "chrono", - "fast-float", + "fast-float2", + "futures", + "glob", + "hashbrown 0.15.2", "home", "itoa", "memchr", @@ -937,44 +1205,67 @@ dependencies = [ "polars-arrow", "polars-core", "polars-error", + "polars-parquet", + "polars-schema", "polars-time", "polars-utils", "rayon", "regex", "ryu", "simdutf8", - "smartstring", + "tokio", + "tokio-util", ] [[package]] name = "polars-lazy" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e805ea2ebbc6b7749b0afb31b7fc5d32b42b57ba29b984549d43d3a16114c4a5" +checksum = "fa457bfa96f45cf14c33507eaa3ebcec6a8d52e7f7fc60cd23f338631369d417" dependencies = [ "ahash", "bitflags", - "glob", + "memchr", "once_cell", "polars-arrow", "polars-core", "polars-expr", "polars-io", + "polars-mem-engine", "polars-ops", "polars-pipe", "polars-plan", + "polars-stream", "polars-time", "polars-utils", "rayon", - "smartstring", "version_check", ] +[[package]] +name = "polars-mem-engine" +version = "0.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f73aa56fc0a4c1e9d56b4a4485800f4780ca214030d32d0150eccc44f71d6dab" +dependencies = [ + "memmap2", + "polars-arrow", + "polars-core", + "polars-error", + "polars-expr", + "polars-io", + "polars-ops", + "polars-plan", + "polars-time", + "polars-utils", + "rayon", +] + [[package]] name = "polars-ops" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b0aed7e169c81b98457641cf82b251f52239a668916c2e683abd1f38df00d58" +checksum = "b267480495ffe382dab63318e3c6bf4073bb82971c8b80294d079293fece458b" dependencies = [ "ahash", "argminmax", @@ -983,7 +1274,7 @@ dependencies = [ "chrono", "chrono-tz", "either", - "hashbrown", + "hashbrown 0.15.2", "hex", "indexmap", "memchr", @@ -992,43 +1283,59 @@ dependencies = [ "polars-compute", "polars-core", "polars-error", + "polars-schema", "polars-utils", "rayon", "regex", - "smartstring", + "regex-syntax", + "strum_macros", "unicode-reverse", "version_check", ] [[package]] name = "polars-parquet" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c70670a9e51cac66d0e77fd20b5cc957dbcf9f2660d410633862bb72f846d5b8" +checksum = "20237f232b1a74b1fae6b5c9bea8c440f2e5d3b5506601b038f0a7a34b84b710" dependencies = [ "ahash", + "async-stream", "base64", + "bytemuck", "ethnum", + "futures", + "hashbrown 0.15.2", "num-traits", - "parquet-format-safe", "polars-arrow", + "polars-compute", "polars-error", + "polars-parquet-format", "polars-utils", - "seq-macro", "simdutf8", "streaming-decompression", ] +[[package]] +name = "polars-parquet-format" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c025243dcfe8dbc57e94d9f82eb3bef10b565ab180d5b99bed87fd8aea319ce1" +dependencies = [ + "async-trait", + "futures", +] + [[package]] name = "polars-pipe" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a40ae1b3c74ee07e2d1f7cbf56c5d6e15969e45d9b6f0903bd2acaf783ba436" +checksum = "82e3066f4fea8e55e72eba54ffe20ebdf08f63b9691aba8ea1135c3aeb9c2c7e" dependencies = [ "crossbeam-channel", "crossbeam-queue", "enum_dispatch", - "hashbrown", + "hashbrown 0.15.2", "num-traits", "polars-arrow", "polars-compute", @@ -1040,25 +1347,30 @@ dependencies = [ "polars-row", "polars-utils", "rayon", - "smartstring", "uuid", "version_check", ] [[package]] name = "polars-plan" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8daa3541ae7e9af311a4389bc2b21f83349c34c723cc67fa524cdefdaa172d90" +checksum = "99a3832887671df1eb326df52cbfcc47789d3d58454c1084a154b48b240175e2" dependencies = [ "ahash", + "bitflags", "bytemuck", + "bytes", + "chrono", "chrono-tz", "either", - "hashbrown", + "hashbrown 0.15.2", + "memmap2", + "num-traits", "once_cell", "percent-encoding", "polars-arrow", + "polars-compute", "polars-core", "polars-io", "polars-ops", @@ -1067,28 +1379,41 @@ dependencies = [ "rayon", "recursive", "regex", - "smartstring", "strum_macros", "version_check", ] [[package]] name = "polars-row" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "deb285f2f3a65b00dd06bef16bb9f712dbb5478f941dab5cf74f9f016d382e40" +checksum = "8e36350fb8a90238e02c8ece0f0c4c24f3374197e9c08c1c22cc8b9c526e6c25" dependencies = [ + "bitflags", "bytemuck", "polars-arrow", + "polars-compute", + "polars-error", + "polars-utils", +] + +[[package]] +name = "polars-schema" +version = "0.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8c6aa4913cffc522cea3ccbc0cafb350bec18fed0a1ef8d417ac88ea320d7749" +dependencies = [ + "indexmap", "polars-error", "polars-utils", + "version_check", ] [[package]] name = "polars-sql" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a724f699d194cb02c25124d3832f7d4d77f387f1a89ee42f6b9e88ec561d4ad9" +checksum = "c62a2247028629b1db384437a9f2792488f0ddb539ec16fb46a5e2bceeba6dbc" dependencies = [ "hex", "once_cell", @@ -1096,18 +1421,51 @@ dependencies = [ "polars-core", "polars-error", "polars-lazy", + "polars-ops", "polars-plan", + "polars-time", + "polars-utils", "rand", "serde", "serde_json", "sqlparser", ] +[[package]] +name = "polars-stream" +version = "0.45.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8cd9da4b063146c3ab7c08678a52eb9d466ade4f4c8617605a5a3ea063002c6" +dependencies = [ + "atomic-waker", + "crossbeam-deque", + "crossbeam-utils", + "futures", + "memmap2", + "parking_lot", + "pin-project-lite", + "polars-core", + "polars-error", + "polars-expr", + "polars-io", + "polars-mem-engine", + "polars-ops", + "polars-parquet", + "polars-plan", + "polars-utils", + "rand", + "rayon", + "recursive", + "slotmap", + "tokio", + "version_check", +] + [[package]] name = "polars-time" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ebec238d8b6200d9f0c3ce411c8441e950bd5a7df7806b8172d06c1d5a4b97" +checksum = "12f005c3441eed1a96464305f73e197813cbae7894ff6712726a1182e31f52b4" dependencies = [ "atoi", "bytemuck", @@ -1116,30 +1474,35 @@ dependencies = [ "now", "once_cell", "polars-arrow", + "polars-compute", "polars-core", "polars-error", "polars-ops", "polars-utils", "regex", - "smartstring", + "strum_macros", ] [[package]] name = "polars-utils" -version = "0.40.0" +version = "0.45.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34e1a907c63abf71e5f21467e2e4ff748896c28196746f631c6c25512ec6102c" +checksum = "e0fc010eea42ad113b641aa53106e4d6e474650c73573d959a546eed0ce6d479" dependencies = [ "ahash", "bytemuck", - "hashbrown", + "bytes", + "compact_str", + "hashbrown 0.15.2", "indexmap", + "libc", + "memmap2", "num-traits", "once_cell", "polars-error", + "rand", "raw-cpuid", "rayon", - "smartstring", "stacker", "sysinfo", "version_check", @@ -1147,45 +1510,48 @@ dependencies = [ [[package]] name = "portable-atomic" -version = "1.6.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7170ef9988bc169ba16dd36a7fa041e5c4cbeb6a35b76d4c03daded371eae7c0" +checksum = "280dc24453071f1b63954171985a0b0d30058d287960968b9b2aca264c8d4ee6" [[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 = "proc-macro2" -version = "1.0.85" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22244ce15aa966053a896d1accb3a6e68469b97c7f33f284b99f0d576879fc23" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] [[package]] name = "psm" -version = "0.1.21" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" dependencies = [ "cc", ] [[package]] name = "pyo3" -version = "0.21.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a5e00b96a521718e08e03b1a622f01c8a8deb50719335de3f60b3b3950f069d8" +checksum = "f402062616ab18202ae8319da13fa4279883a2b8a9d9f83f20dbade813ce1884" dependencies = [ "cfg-if", "indoc", "libc", "memoffset", - "parking_lot", + "once_cell", "portable-atomic", "pyo3-build-config", "pyo3-ffi", @@ -1195,9 +1561,9 @@ dependencies = [ [[package]] name = "pyo3-build-config" -version = "0.21.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7883df5835fafdad87c0d888b266c8ec0f4c9ca48a5bed6bbb592e8dedee1b50" +checksum = "b14b5775b5ff446dd1056212d778012cbe8a0fbffd368029fd9e25b514479c38" dependencies = [ "once_cell", "target-lexicon", @@ -1205,9 +1571,9 @@ dependencies = [ [[package]] name = "pyo3-ffi" -version = "0.21.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01be5843dc60b916ab4dad1dca6d20b9b4e6ddc8e15f50c47fe6d85f1fb97403" +checksum = "9ab5bcf04a2cdcbb50c7d6105de943f543f9ed92af55818fd17b660390fc8636" dependencies = [ "libc", "pyo3-build-config", @@ -1215,46 +1581,48 @@ dependencies = [ [[package]] name = "pyo3-macros" -version = "0.21.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77b34069fc0682e11b31dbd10321cbf94808394c56fd996796ce45217dfac53c" +checksum = "0fd24d897903a9e6d80b968368a34e1525aeb719d568dba8b3d4bfa5dc67d453" dependencies = [ "proc-macro2", "pyo3-macros-backend", "quote", - "syn 2.0.66", + "syn 2.0.95", ] [[package]] name = "pyo3-macros-backend" -version = "0.21.2" +version = "0.22.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08260721f32db5e1a5beae69a55553f56b99bd0e1c3e6e0a5e8851a9d0f5a85c" +checksum = "36c011a03ba1e50152b4b394b479826cad97e7a21eb52df179cd91ac411cbfbe" dependencies = [ - "heck 0.4.1", + "heck", "proc-macro2", "pyo3-build-config", "quote", - "syn 2.0.66", + "syn 2.0.95", ] [[package]] name = "pyo3-polars" -version = "0.14.0" +version = "0.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e726fef8618531b0ec1777f430a9225a909f9ffeacaad7bca7b43877fc3cd42" +checksum = "285f023bcf481a2d5a86084e274e27b07d7bd71ee831ec9a9d4cf26c54dc0b9e" dependencies = [ + "libc", + "once_cell", "polars", "polars-core", "pyo3", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "quote" -version = "1.0.36" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -1301,9 +1669,9 @@ dependencies = [ [[package]] name = "raw-cpuid" -version = "11.0.2" +version = "11.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e29830cbb1290e404f24c73af91c5d8d631ce7e128691e9477556b540cd01ecd" +checksum = "1ab240315c661615f2ee9f0f2cd32d5a7343a84d5ebcccb99d46e6637565e7b0" dependencies = [ "bitflags", ] @@ -1345,23 +1713,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "76009fbe0614077fc1a2ce255e3a1881a2e3a3527097d5dc6d8212c585e7e38b" dependencies = [ "quote", - "syn 2.0.66", + "syn 2.0.95", ] [[package]] name = "redox_syscall" -version = "0.5.1" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" +checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ "bitflags", ] [[package]] name = "regex" -version = "1.10.4" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", @@ -1371,9 +1739,9 @@ dependencies = [ [[package]] name = "regex-automata" -version = "0.4.6" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" dependencies = [ "aho-corasick", "memchr", @@ -1382,15 +1750,34 @@ dependencies = [ [[package]] name = "regex-syntax" -version = "0.8.3" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" + +[[package]] +name = "rustc-demangle" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + +[[package]] +name = "rustix" +version = "0.38.42" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93dc38ecbab2eb790ff964bb77fa94faf256fd3e73285fd7ba0903b76bedb85" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] [[package]] name = "rustversion" -version = "1.0.17" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "955d28af4278de8121b7ebeb796b6a45735dc01436d898801014aced2773a3d6" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "ryu" @@ -1404,54 +1791,73 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" -[[package]] -name = "seq-macro" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f0bf26fd526d2a95683cd0f87bf103b8539e2ca1ef48ce002d67aad59aa0b4" - [[package]] name = "serde" -version = "1.0.203" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7253ab4de971e72fb7be983802300c30b5a7f0c2e56fab8abfc6a214307c0094" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.203" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "500cbc0ebeb6f46627f50f3f5811ccf6bf00643be300b4c3eabc0ef55dc5b5ba" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.95", ] [[package]] name = "serde_json" -version = "1.0.117" +version = "1.0.134" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "455182ea6142b14f93f4bc5320a2b31c1f266b66a4a5c858b013302a5d8cbfc3" +checksum = "d00f4175c42ee48b15416f6193a959ba3a0d67fc699a0db9ad12df9f83991c7d" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "simdutf8" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f27f6278552951f1f2b8cf9da965d10969b2efdea95a6ec47987ab46edfe263a" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" [[package]] name = "siphasher" -version = "0.3.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" +checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" + +[[package]] +name = "slab" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" +dependencies = [ + "autocfg", +] + +[[package]] +name = "slotmap" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" +dependencies = [ + "version_check", +] [[package]] name = "smallvec" @@ -1460,36 +1866,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" [[package]] -name = "smartstring" -version = "1.0.1" +name = "socket2" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ - "autocfg", - "static_assertions", - "version_check", + "libc", + "windows-sys 0.52.0", ] [[package]] name = "sqlparser" -version = "0.39.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "743b4dc2cbde11890ccb254a8fc9d537fa41b36da00de2a1c5e9848c9bc42bd7" +checksum = "9a875d8cd437cc8a97e9aeaeea352ec9a19aea99c23e9effb17757291de80b08" dependencies = [ "log", ] [[package]] name = "stacker" -version = "0.1.15" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c886bd4480155fd3ef527d45e9ac8dd7118a898a46530b7b94c3e21866259fce" +checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" dependencies = [ "cc", "cfg-if", "libc", "psm", - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -1521,9 +1926,9 @@ checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" [[package]] name = "strum" -version = "0.26.2" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d8cec3501a5194c432b2b7976db6b7d10ec95c253208b45f83f7136aa985e29" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" [[package]] name = "strum_macros" @@ -1531,11 +1936,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.66", + "syn 2.0.95", ] [[package]] @@ -1551,9 +1956,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.66" +version = "2.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c42f3f41a2de00b01c0aaad383c5a45241efc8b2d1eda5661812fda5f3cdcff5" +checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a" dependencies = [ "proc-macro2", "quote", @@ -1562,15 +1967,14 @@ dependencies = [ [[package]] name = "sysinfo" -version = "0.30.12" +version = "0.32.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "732ffa00f53e6b2af46208fba5718d9662a421049204e156328b66791ffa15ae" +checksum = "4c33cd241af0f2e9e3b5c32163b873b29956890b5342e6745b917ce9d490f4af" dependencies = [ - "cfg-if", "core-foundation-sys", "libc", + "memchr", "ntapi", - "once_cell", "windows", ] @@ -1582,35 +1986,83 @@ checksum = "c1bbb9f3c5c463a01705937a24fdabc5047929ac764b2d5b9cf681c1f5041ed5" [[package]] name = "target-lexicon" -version = "0.12.14" +version = "0.12.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "thiserror" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" +dependencies = [ + "thiserror-impl 1.0.69", +] [[package]] name = "thiserror" -version = "1.0.61" +version = "2.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" +dependencies = [ + "thiserror-impl 2.0.9", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c546c80d6be4bc6a00c0f01730c08df82eaa7a7a61f11d656526506112cc1709" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ - "thiserror-impl", + "proc-macro2", + "quote", + "syn 2.0.95", ] [[package]] name = "thiserror-impl" -version = "1.0.61" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46c3384250002a6d5af4d114f2845d37b57521033f30d5c3f46c4d70e1197533" +checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.95", +] + +[[package]] +name = "tokio" +version = "1.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" +dependencies = [ + "backtrace", + "bytes", + "libc", + "mio", + "pin-project-lite", + "socket2", + "windows-sys 0.52.0", +] + +[[package]] +name = "tokio-util" +version = "0.7.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7fcaa8d55a2bdd6b83ace262b016eca0d79ee02818c5c1bcdf0305114081078" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", ] [[package]] name = "unicode-ident" -version = "1.0.12" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-reverse" @@ -1623,15 +2075,15 @@ dependencies = [ [[package]] name = "unicode-segmentation" -version = "1.11.0" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" +checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" [[package]] name = "unicode-width" -version = "0.1.13" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unindent" @@ -1641,9 +2093,9 @@ checksum = "c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce" [[package]] name = "uuid" -version = "1.8.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a183cf7feeba97b4dd1c0d46788634f6221d87fa961b305bed08c851829efcc0" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ "getrandom", ] @@ -1656,9 +2108,9 @@ checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" [[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 = "wasi" @@ -1668,34 +2120,34 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", - "once_cell", "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.95", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1703,22 +2155,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.95", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.92" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "winapi" @@ -1744,11 +2196,11 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "windows" -version = "0.52.0" +version = "0.57.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" +checksum = "12342cb4d8e3b046f3d80effd474a7a02447231330ef77d71daa6fbc40681143" dependencies = [ - "windows-core", + "windows-core 0.57.0", "windows-targets", ] @@ -1761,6 +2213,49 @@ dependencies = [ "windows-targets", ] +[[package]] +name = "windows-core" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ed2439a290666cd67ecce2b0ffaad89c2a56b976b736e6ece670297897832d" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-result", + "windows-targets", +] + +[[package]] +name = "windows-implement" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9107ddc059d5b6fbfbffdfa7a7fe3e22a226def0b2608f72e9d552763d3e1ad7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", +] + +[[package]] +name = "windows-interface" +version = "0.57.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "29bee4b38ea3cde66011baa44dba677c432a78593e202392d1e9070cf2a7fca7" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.95", +] + +[[package]] +name = "windows-result" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e383302e8ec8515204254685643de10811af0ed97ea37210dc26fb0032647f8" +dependencies = [ + "windows-targets", +] + [[package]] name = "windows-sys" version = "0.52.0" @@ -1770,11 +2265,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", @@ -1788,101 +2292,102 @@ 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 = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "xxhash-rust" -version = "0.8.10" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03" +checksum = "fdd20c5420375476fbd4394763288da7eb0cc0b8c11deed431a91562af7335d3" [[package]] name = "zerocopy" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.34" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.66", + "syn 2.0.95", ] [[package]] name = "zstd" -version = "0.13.1" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d789b1514203a1120ad2429eae43a7bd32b90976a7bb8a05f7ec02fa88cc23a" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "7.1.0" +version = "7.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cd99b45c6bc03a018c8b8a86025678c87e55526064e38f9df301989dce7ec0a" +checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" dependencies = [ "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.10+zstd.1.5.6" +version = "2.0.13+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" dependencies = [ "cc", "pkg-config", diff --git a/minimappers2/Cargo.toml b/minimappers2/Cargo.toml index 481af8f..5c9c6bc 100644 --- a/minimappers2/Cargo.toml +++ b/minimappers2/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "minimappers2" -version = "0.1.6" +version = "0.1.7" edition = "2021" [lib] @@ -8,14 +8,13 @@ name = "minimappers2" crate-type = ["cdylib", "rlib"] [dependencies] -minimap2 = { version = "0.1.18", features = ["simde"] } -minimap2-sys = { version = "0.1.19", features = ["simde"] } +minimap2 = { version = "0.1.23", features = ["simde"], path = ".." } crossbeam = "0.8.4" mimalloc = {version = "0.1", default-features = false } -pyo3 = { version = "0.21" } -polars = "0.40" -pyo3-polars = "0.14" +pyo3 = { version = "0.22" } +polars = "0.45" +pyo3-polars = "0.19" [profile.release] opt-level = 3 diff --git a/minimappers2/Exampe.ipynb b/minimappers2/Exampe.ipynb new file mode 100644 index 0000000..a6eecdd --- /dev/null +++ b/minimappers2/Exampe.ipynb @@ -0,0 +1,1634 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "99806aff-799c-4785-9185-e60f3962220b", + "metadata": {}, + "outputs": [ + { + "ename": "ModuleNotFoundError", + "evalue": "No module named 'minimappers2'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mModuleNotFoundError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[1], line 1\u001b[0m\n\u001b[0;32m----> 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mminimappers2\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m AlignerBuilder, Aligner, Sequence\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mneedletail\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m parse_fastx_file, NeedletailError, reverse_complement, normalize_seq\n", + "\u001b[0;31mModuleNotFoundError\u001b[0m: No module named 'minimappers2'" + ] + } + ], + "source": [ + "from minimappers2 import AlignerBuilder, Aligner, Sequence\n", + "from needletail import parse_fastx_file, NeedletailError, reverse_complement, normalize_seq" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "948d8308-86c8-4da1-9372-800eac174162", + "metadata": {}, + "outputs": [], + "source": [ + "aligner_builder = AlignerBuilder.short();\n", + "aligner_builder.cigar()\n", + "aligner = aligner_builder.index(\"../../fakeminimap2/hg38_chr_M.mmi\")\n", + "aligner.set_threads(4);" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "d6716fcd-8758-49b1-ac65-25035bf6f33b", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "shape: (0, 17)
query_namequery_lenquery_startquery_endstrandtarget_nametarget_lentarget_starttarget_endmatch_lenblock_lenmapqis_primarynmcigar_strmdcs
stru32i32i32strstri32i32i32i32i32u32booli32strstrstr
" + ], + "text/plain": [ + "shape: (0, 17)\n", + "┌────────────┬───────────┬─────────────┬───────────┬───┬─────┬───────────┬─────┬─────┐\n", + "│ query_name ┆ query_len ┆ query_start ┆ query_end ┆ … ┆ nm ┆ cigar_str ┆ md ┆ cs │\n", + "│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n", + "│ str ┆ u32 ┆ i32 ┆ i32 ┆ ┆ i32 ┆ str ┆ str ┆ str │\n", + "╞════════════╪═══════════╪═════════════╪═══════════╪═══╪═════╪═══════════╪═════╪═════╡\n", + "└────────────┴───────────┴─────────────┴───────────┴───┴─────┴───────────┴─────┴─────┘" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "seq = \"CCAGAACGTACAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATGAGAGCCTTTAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"\n", + "result = aligner.map1(Sequence(\"MySeq\", seq))\n", + "result" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "fc6dfea8-9f32-4c22-aa0f-15e9f095eab2", + "metadata": {}, + "outputs": [], + "source": [ + "seqs = [Sequence(\"1\", \"CCAGAACGTACAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"), \n", + " Sequence(\"2\", \"CCAGAACGTACAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATGAGAGCCAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"),\n", + " Sequence(\"3\", \"CCAGAACGTACAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCGAGCCTTTAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"),\n", + " Sequence(\"4\", \"CCAGAACGTACAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATCCTTTAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"),\n", + " Sequence(\"5\", \"CCAGAACCAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATTTTAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"),\n", + " Sequence(\"6\", \"CCAGAACGTACAAGGAAATATCCTCAAATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATGAGAGCCTTTAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"),\n", + " Sequence(\"7\", \"CAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATGAGAGCCTTTAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"),\n", + " Sequence(\"8\", \"CGAACGTACAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATGAGAGCCTTTAGAAAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"),\n", + " Sequence(\"9\", \"CCAGAACGTACACAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATGAGAGCCTTTAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\")]\n", + "result = aligner.map(seqs)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "d5a7378c-e878-4894-8840-4fcbc73cf72e", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "shape: (189, 17)\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
\n", + "query_name\n", + "\n", + "query_len\n", + "\n", + "query_start\n", + "\n", + "query_end\n", + "\n", + "strand\n", + "\n", + "target_name\n", + "\n", + "target_len\n", + "\n", + "target_start\n", + "\n", + "target_end\n", + "\n", + "match_len\n", + "\n", + "block_len\n", + "\n", + "mapq\n", + "\n", + "is_primary\n", + "\n", + "nm\n", + "\n", + "cigar_str\n", + "\n", + "md\n", + "\n", + "cs\n", + "
\n", + "str\n", + "\n", + "u32\n", + "\n", + "i32\n", + "\n", + "i32\n", + "\n", + "str\n", + "\n", + "str\n", + "\n", + "i32\n", + "\n", + "i32\n", + "\n", + "i32\n", + "\n", + "i32\n", + "\n", + "i32\n", + "\n", + "u32\n", + "\n", + "bool\n", + "\n", + "i32\n", + "\n", + "str\n", + "\n", + "str\n", + "\n", + "str\n", + "
\n", + ""9"\n", + "\n", + "113\n", + "\n", + "12\n", + "\n", + "113\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.47...\n", + "\n", + "125\n", + "\n", + "14\n", + "\n", + "115\n", + "\n", + "101\n", + "\n", + "101\n", + "\n", + "0\n", + "\n", + "true\n", + "\n", + "0\n", + "\n", + ""101M"\n", + "\n", + ""101"\n", + "\n", + "":101"\n", + "
\n", + ""9"\n", + "\n", + "113\n", + "\n", + "12\n", + "\n", + "113\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.64...\n", + "\n", + "125\n", + "\n", + "7\n", + "\n", + "108\n", + "\n", + "101\n", + "\n", + "101\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "0\n", + "\n", + ""101M"\n", + "\n", + ""101"\n", + "\n", + "":101"\n", + "
\n", + ""9"\n", + "\n", + "113\n", + "\n", + "12\n", + "\n", + "113\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.26...\n", + "\n", + "125\n", + "\n", + "8\n", + "\n", + "109\n", + "\n", + "101\n", + "\n", + "101\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "0\n", + "\n", + ""101M"\n", + "\n", + ""101"\n", + "\n", + "":101"\n", + "
\n", + ""9"\n", + "\n", + "113\n", + "\n", + "12\n", + "\n", + "113\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.30...\n", + "\n", + "125\n", + "\n", + "17\n", + "\n", + "118\n", + "\n", + "101\n", + "\n", + "101\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "0\n", + "\n", + ""101M"\n", + "\n", + ""101"\n", + "\n", + "":101"\n", + "
\n", + ""9"\n", + "\n", + "113\n", + "\n", + "12\n", + "\n", + "113\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.25...\n", + "\n", + "125\n", + "\n", + "14\n", + "\n", + "115\n", + "\n", + "101\n", + "\n", + "101\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "0\n", + "\n", + ""101M"\n", + "\n", + ""101"\n", + "\n", + "":101"\n", + "
\n", + ""9"\n", + "\n", + "113\n", + "\n", + "12\n", + "\n", + "113\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.25...\n", + "\n", + "125\n", + "\n", + "12\n", + "\n", + "113\n", + "\n", + "101\n", + "\n", + "101\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "0\n", + "\n", + ""101M"\n", + "\n", + ""101"\n", + "\n", + "":101"\n", + "
\n", + ""9"\n", + "\n", + "113\n", + "\n", + "12\n", + "\n", + "113\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.16...\n", + "\n", + "125\n", + "\n", + "8\n", + "\n", + "109\n", + "\n", + "101\n", + "\n", + "101\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "0\n", + "\n", + ""101M"\n", + "\n", + ""101"\n", + "\n", + "":101"\n", + "
\n", + ""9"\n", + "\n", + "113\n", + "\n", + "12\n", + "\n", + "113\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.13...\n", + "\n", + "125\n", + "\n", + "7\n", + "\n", + "108\n", + "\n", + "101\n", + "\n", + "101\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "0\n", + "\n", + ""101M"\n", + "\n", + ""101"\n", + "\n", + "":101"\n", + "
\n", + ""9"\n", + "\n", + "113\n", + "\n", + "12\n", + "\n", + "113\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.35...\n", + "\n", + "125\n", + "\n", + "10\n", + "\n", + "111\n", + "\n", + "101\n", + "\n", + "101\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "0\n", + "\n", + ""101M"\n", + "\n", + ""101"\n", + "\n", + "":101"\n", + "
\n", + ""9"\n", + "\n", + "113\n", + "\n", + "12\n", + "\n", + "113\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.39...\n", + "\n", + "125\n", + "\n", + "11\n", + "\n", + "112\n", + "\n", + "101\n", + "\n", + "101\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "0\n", + "\n", + ""101M"\n", + "\n", + ""101"\n", + "\n", + "":101"\n", + "
\n", + ""9"\n", + "\n", + "113\n", + "\n", + "12\n", + "\n", + "113\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.15...\n", + "\n", + "125\n", + "\n", + "8\n", + "\n", + "109\n", + "\n", + "101\n", + "\n", + "101\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "0\n", + "\n", + ""101M"\n", + "\n", + ""101"\n", + "\n", + "":101"\n", + "
\n", + ""9"\n", + "\n", + "113\n", + "\n", + "12\n", + "\n", + "111\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.37...\n", + "\n", + "125\n", + "\n", + "26\n", + "\n", + "125\n", + "\n", + "99\n", + "\n", + "99\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "0\n", + "\n", + ""99M"\n", + "\n", + ""99"\n", + "\n", + "":99"\n", + "
\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "\n", + "...\n", + "
\n", + ""1"\n", + "\n", + "115\n", + "\n", + "0\n", + "\n", + "110\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.47...\n", + "\n", + "125\n", + "\n", + "5\n", + "\n", + "125\n", + "\n", + "110\n", + "\n", + "120\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "10\n", + "\n", + ""72M10D38M"\n", + "\n", + ""72^TGAGAGCCTT3...\n", + "\n", + "":72-tgagagcctt...\n", + "
\n", + ""1"\n", + "\n", + "115\n", + "\n", + "7\n", + "\n", + "115\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.47...\n", + "\n", + "125\n", + "\n", + "7\n", + "\n", + "125\n", + "\n", + "108\n", + "\n", + "118\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "10\n", + "\n", + ""42M10D66M"\n", + "\n", + ""42^AAAGGCTCTC6...\n", + "\n", + "":42-aaaggctctc...\n", + "
\n", + ""1"\n", + "\n", + "115\n", + "\n", + "7\n", + "\n", + "115\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.64...\n", + "\n", + "125\n", + "\n", + "7\n", + "\n", + "125\n", + "\n", + "108\n", + "\n", + "118\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "10\n", + "\n", + ""42M10D66M"\n", + "\n", + ""42^AAAGGCTCTC6...\n", + "\n", + "":42-aaaggctctc...\n", + "
\n", + ""1"\n", + "\n", + "115\n", + "\n", + "7\n", + "\n", + "115\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.13...\n", + "\n", + "125\n", + "\n", + "7\n", + "\n", + "125\n", + "\n", + "108\n", + "\n", + "118\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "10\n", + "\n", + ""42M10D66M"\n", + "\n", + ""42^AAAGGCTCTC6...\n", + "\n", + "":42-aaaggctctc...\n", + "
\n", + ""1"\n", + "\n", + "115\n", + "\n", + "0\n", + "\n", + "107\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.34...\n", + "\n", + "125\n", + "\n", + "8\n", + "\n", + "125\n", + "\n", + "107\n", + "\n", + "117\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "10\n", + "\n", + ""72M10D35M"\n", + "\n", + ""72^TGAGAGCCTT3...\n", + "\n", + "":72-tgagagcctt...\n", + "
\n", + ""1"\n", + "\n", + "115\n", + "\n", + "10\n", + "\n", + "115\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.25...\n", + "\n", + "125\n", + "\n", + "0\n", + "\n", + "115\n", + "\n", + "105\n", + "\n", + "115\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "10\n", + "\n", + ""62M10D43M"\n", + "\n", + ""62^TGAGAGCCTT4...\n", + "\n", + "":62-tgagagcctt...\n", + "
\n", + ""1"\n", + "\n", + "115\n", + "\n", + "0\n", + "\n", + "105\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.45...\n", + "\n", + "125\n", + "\n", + "10\n", + "\n", + "125\n", + "\n", + "105\n", + "\n", + "115\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "10\n", + "\n", + ""72M10D33M"\n", + "\n", + ""72^TGAGAGCCTT3...\n", + "\n", + "":72-tgagagcctt...\n", + "
\n", + ""1"\n", + "\n", + "115\n", + "\n", + "0\n", + "\n", + "102\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.44...\n", + "\n", + "125\n", + "\n", + "13\n", + "\n", + "125\n", + "\n", + "102\n", + "\n", + "112\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "10\n", + "\n", + ""72M10D30M"\n", + "\n", + ""72^TGAGAGCCTT3...\n", + "\n", + "":72-tgagagcctt...\n", + "
\n", + ""1"\n", + "\n", + "115\n", + "\n", + "0\n", + "\n", + "102\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.16...\n", + "\n", + "125\n", + "\n", + "13\n", + "\n", + "125\n", + "\n", + "102\n", + "\n", + "112\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "10\n", + "\n", + ""72M10D30M"\n", + "\n", + ""72^TGAGAGCCTT3...\n", + "\n", + "":72-tgagagcctt...\n", + "
\n", + ""1"\n", + "\n", + "115\n", + "\n", + "0\n", + "\n", + "102\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.30...\n", + "\n", + "125\n", + "\n", + "13\n", + "\n", + "125\n", + "\n", + "102\n", + "\n", + "112\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "10\n", + "\n", + ""72M10D30M"\n", + "\n", + ""72^TGAGAGCCTT3...\n", + "\n", + "":72-tgagagcctt...\n", + "
\n", + ""1"\n", + "\n", + "115\n", + "\n", + "14\n", + "\n", + "115\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.35...\n", + "\n", + "125\n", + "\n", + "0\n", + "\n", + "111\n", + "\n", + "101\n", + "\n", + "111\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "10\n", + "\n", + ""58M10D43M"\n", + "\n", + ""58^TGAGAGCCTT4...\n", + "\n", + "":58-tgagagcctt...\n", + "
\n", + ""1"\n", + "\n", + "115\n", + "\n", + "0\n", + "\n", + "101\n", + "\n", + ""+"\n", + "\n", + ""SRR21295036.45...\n", + "\n", + "125\n", + "\n", + "13\n", + "\n", + "124\n", + "\n", + "101\n", + "\n", + "111\n", + "\n", + "0\n", + "\n", + "false\n", + "\n", + "10\n", + "\n", + ""72M10D29M"\n", + "\n", + ""72^TGAGAGCCTT2...\n", + "\n", + "":72-tgagagcctt...\n", + "
\n", + "
" + ], + "text/plain": [ + "shape: (189, 17)\n", + "┌────────────┬───────────┬─────────────┬───────────┬─────┬─────┬───────────┬─────────────────┬───────────────────┐\n", + "│ query_name ┆ query_len ┆ query_start ┆ query_end ┆ ... ┆ nm ┆ cigar_str ┆ md ┆ cs │\n", + "│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n", + "│ str ┆ u32 ┆ i32 ┆ i32 ┆ ┆ i32 ┆ str ┆ str ┆ str │\n", + "╞════════════╪═══════════╪═════════════╪═══════════╪═════╪═════╪═══════════╪═════════════════╪═══════════════════╡\n", + "│ 9 ┆ 113 ┆ 12 ┆ 113 ┆ ... ┆ 0 ┆ 101M ┆ 101 ┆ :101 │\n", + "│ 9 ┆ 113 ┆ 12 ┆ 113 ┆ ... ┆ 0 ┆ 101M ┆ 101 ┆ :101 │\n", + "│ 9 ┆ 113 ┆ 12 ┆ 113 ┆ ... ┆ 0 ┆ 101M ┆ 101 ┆ :101 │\n", + "│ 9 ┆ 113 ┆ 12 ┆ 113 ┆ ... ┆ 0 ┆ 101M ┆ 101 ┆ :101 │\n", + "│ ... ┆ ... ┆ ... ┆ ... ┆ ... ┆ ... ┆ ... ┆ ... ┆ ... │\n", + "│ 1 ┆ 115 ┆ 0 ┆ 102 ┆ ... ┆ 10 ┆ 72M10D30M ┆ 72^TGAGAGCCTT30 ┆ :72-tgagagcctt:30 │\n", + "│ 1 ┆ 115 ┆ 0 ┆ 102 ┆ ... ┆ 10 ┆ 72M10D30M ┆ 72^TGAGAGCCTT30 ┆ :72-tgagagcctt:30 │\n", + "│ 1 ┆ 115 ┆ 14 ┆ 115 ┆ ... ┆ 10 ┆ 58M10D43M ┆ 58^TGAGAGCCTT43 ┆ :58-tgagagcctt:43 │\n", + "│ 1 ┆ 115 ┆ 0 ┆ 101 ┆ ... ┆ 10 ┆ 72M10D29M ┆ 72^TGAGAGCCTT29 ┆ :72-tgagagcctt:29 │\n", + "└────────────┴───────────┴─────────────┴───────────┴─────┴─────┴───────────┴─────────────────┴───────────────────┘" + ] + }, + "execution_count": 5, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "92ccdf81-c3bc-4525-8354-42f299c30e7a", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.8" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/minimappers2/example/.gitattributes b/minimappers2/example/.gitattributes new file mode 100644 index 0000000..07fe41c --- /dev/null +++ b/minimappers2/example/.gitattributes @@ -0,0 +1,2 @@ +# GitHub syntax highlighting +pixi.lock linguist-language=YAML linguist-generated=true diff --git a/minimappers2/example/.gitignore b/minimappers2/example/.gitignore new file mode 100644 index 0000000..096b5eb --- /dev/null +++ b/minimappers2/example/.gitignore @@ -0,0 +1,3 @@ +# pixi environments +.pixi +*.egg-info diff --git a/minimappers2/example/Exampe.ipynb b/minimappers2/example/Exampe.ipynb index e80f14d..3b1200d 100644 --- a/minimappers2/example/Exampe.ipynb +++ b/minimappers2/example/Exampe.ipynb @@ -7,7 +7,8 @@ "metadata": {}, "outputs": [], "source": [ - "from minimappers2 import map_ont, Aligner, short, Sequence" + "from minimappers2 import AlignerBuilder, Aligner, Sequence\n", + "from needletail import parse_fastx_file, NeedletailError, reverse_complement, normalize_seq" ] }, { @@ -17,2840 +18,2038 @@ "metadata": {}, "outputs": [], "source": [ - "aligner = short();\n", - "aligner.threads(4);\n", - "aligner.cigar()\n", - "aligner.index(\"/mnt/data/mock/SRR21295036.fasta.gz\")" + "aligner_builder = AlignerBuilder.short();\n", + "aligner_builder.cigar()\n", + "aligner = aligner_builder.index(\"../../fakeminimap2/hg38_chr_M.mmi\")\n", + "aligner.set_threads(4);" ] }, { "cell_type": "code", - "execution_count": 3, + "execution_count": 6, "id": "d6716fcd-8758-49b1-ac65-25035bf6f33b", "metadata": {}, + "outputs": [], + "source": [ + "sequences = []\n", + "\n", + "try:\n", + " for record in parse_fastx_file(\"../../fakeminimap2/testing_fake_minimap2_chrM.fasta\"):\n", + " sequences.append(Sequence(record.id, record.seq))\n", + "except NeedletailError:\n", + " print(\"Ivalid Fasta file\")" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "48e43905-b24a-411c-9ae6-d149d8fe85f7", + "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
\n", - "\n", - "\n", - "shape: (21, 17)\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "\n", - "
\n", - "query_name\n", - "\n", - "query_len\n", - "\n", - "query_start\n", - "\n", - "query_end\n", - "\n", - "strand\n", - "\n", - "target_name\n", - "\n", - "target_len\n", - "\n", - "target_start\n", - "\n", - "target_end\n", - "\n", - "match_len\n", - "\n", - "block_len\n", - "\n", - "mapq\n", - "\n", - "is_primary\n", - "\n", - "nm\n", - "\n", - "cigar_str\n", - "\n", - "md\n", - "\n", - "cs\n", - "
\n", - "str\n", - "\n", - "u32\n", - "\n", - "i32\n", - "\n", - "i32\n", - "\n", - "str\n", - "\n", - "str\n", - "\n", - "i32\n", - "\n", - "i32\n", - "\n", - "i32\n", - "\n", - "i32\n", - "\n", - "i32\n", - "\n", - "u32\n", - "\n", - "bool\n", - "\n", - "i32\n", - "\n", - "str\n", - "\n", - "str\n", - "\n", - "str\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "125\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.93...\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "125\n", - "\n", - "125\n", - "\n", - "125\n", - "\n", - "1\n", - "\n", - "true\n", - "\n", - "0\n", - "\n", - ""125M"\n", - "\n", - ""125"\n", - "\n", - "":125"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "123\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.35...\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "123\n", - "\n", - "123\n", - "\n", - "123\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""123M"\n", - "\n", - ""123"\n", - "\n", - "":123"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "123\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.37...\n", - "\n", - "125\n", - "\n", - "2\n", - "\n", - "125\n", - "\n", - "123\n", - "\n", - "123\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""123M"\n", - "\n", - ""123"\n", - "\n", - "":123"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "122\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.22...\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "122\n", - "\n", - "122\n", - "\n", - "122\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""122M"\n", - "\n", - ""122"\n", - "\n", - "":122"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "122\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.44...\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "122\n", - "\n", - "122\n", - "\n", - "122\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""122M"\n", - "\n", - ""122"\n", - "\n", - "":122"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "122\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.45...\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "122\n", - "\n", - "122\n", - "\n", - "122\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""122M"\n", - "\n", - ""122"\n", - "\n", - "":122"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "122\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.41...\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "122\n", - "\n", - "122\n", - "\n", - "122\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""122M"\n", - "\n", - ""122"\n", - "\n", - "":122"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "122\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.24...\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "122\n", - "\n", - "122\n", - "\n", - "122\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""122M"\n", - "\n", - ""122"\n", - "\n", - "":122"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "122\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.10...\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "122\n", - "\n", - "122\n", - "\n", - "122\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""122M"\n", - "\n", - ""122"\n", - "\n", - "":122"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "120\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.47...\n", - "\n", - "125\n", - "\n", - "5\n", - "\n", - "125\n", - "\n", - "120\n", - "\n", - "120\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""120M"\n", - "\n", - ""120"\n", - "\n", - "":120"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "7\n", - "\n", - "125\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.47...\n", - "\n", - "125\n", - "\n", - "7\n", - "\n", - "125\n", - "\n", - "118\n", - "\n", - "118\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""118M"\n", - "\n", - ""118"\n", - "\n", - "":118"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "7\n", - "\n", - "125\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.64...\n", - "\n", - "125\n", - "\n", - "7\n", - "\n", - "125\n", - "\n", - "118\n", - "\n", - "118\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""118M"\n", - "\n", - ""118"\n", - "\n", - "":118"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "7\n", - "\n", - "125\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.30...\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "118\n", - "\n", - "118\n", - "\n", - "118\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""118M"\n", - "\n", - ""118"\n", - "\n", - "":118"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "7\n", - "\n", - "125\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.26...\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "118\n", - "\n", - "118\n", - "\n", - "118\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""118M"\n", - "\n", - ""118"\n", - "\n", - "":118"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "8\n", - "\n", - "125\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.16...\n", - "\n", - "125\n", - "\n", - "8\n", - "\n", - "125\n", - "\n", - "117\n", - "\n", - "117\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""117M"\n", - "\n", - ""117"\n", - "\n", - "":117"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "117\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.34...\n", - "\n", - "125\n", - "\n", - "8\n", - "\n", - "125\n", - "\n", - "117\n", - "\n", - "117\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""117M"\n", - "\n", - ""117"\n", - "\n", - "":117"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "115\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.45...\n", - "\n", - "125\n", - "\n", - "10\n", - "\n", - "125\n", - "\n", - "115\n", - "\n", - "115\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""115M"\n", - "\n", - ""115"\n", - "\n", - "":115"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "112\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.30...\n", - "\n", - "125\n", - "\n", - "13\n", - "\n", - "125\n", - "\n", - "112\n", - "\n", - "112\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""112M"\n", - "\n", - ""112"\n", - "\n", - "":112"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "112\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.16...\n", - "\n", - "125\n", - "\n", - "13\n", - "\n", - "125\n", - "\n", - "112\n", - "\n", - "112\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""112M"\n", - "\n", - ""112"\n", - "\n", - "":112"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "112\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.44...\n", - "\n", - "125\n", - "\n", - "13\n", - "\n", - "125\n", - "\n", - "112\n", - "\n", - "112\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""112M"\n", - "\n", - ""112"\n", - "\n", - "":112"\n", - "
\n", - ""MySeq"\n", - "\n", - "125\n", - "\n", - "0\n", - "\n", - "111\n", - "\n", - ""+"\n", - "\n", - ""SRR21295036.45...\n", - "\n", - "125\n", - "\n", - "13\n", - "\n", - "124\n", - "\n", - "111\n", - "\n", - "111\n", - "\n", - "0\n", - "\n", - "false\n", - "\n", - "0\n", - "\n", - ""111M"\n", - "\n", - ""111"\n", - "\n", - "":111"\n", - "
\n", - "
" + "shape: (1, 17)
query_namequery_lenquery_startquery_endstrandtarget_nametarget_lentarget_starttarget_endmatch_lenblock_lenmapqis_primarynmcigar_strmdcs
stru32i32i32strstri32i32i32i32i32u32booli32strstrstr
"test_read_1_2201_2451"2500250"+""NC_012920.1"165692201245125025060true0"250M""250"":250"
" ], "text/plain": [ - "shape: (21, 17)\n", - "┌────────────┬───────────┬─────────────┬───────────┬─────┬─────┬───────────┬─────┬──────┐\n", - "│ query_name ┆ query_len ┆ query_start ┆ query_end ┆ ... ┆ nm ┆ cigar_str ┆ md ┆ cs │\n", - "│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n", - "│ str ┆ u32 ┆ i32 ┆ i32 ┆ ┆ i32 ┆ str ┆ str ┆ str │\n", - "╞════════════╪═══════════╪═════════════╪═══════════╪═════╪═════╪═══════════╪═════╪══════╡\n", - "│ MySeq ┆ 125 ┆ 0 ┆ 125 ┆ ... ┆ 0 ┆ 125M ┆ 125 ┆ :125 │\n", - "│ MySeq ┆ 125 ┆ 0 ┆ 123 ┆ ... ┆ 0 ┆ 123M ┆ 123 ┆ :123 │\n", - "│ MySeq ┆ 125 ┆ 0 ┆ 123 ┆ ... ┆ 0 ┆ 123M ┆ 123 ┆ :123 │\n", - "│ MySeq ┆ 125 ┆ 0 ┆ 122 ┆ ... ┆ 0 ┆ 122M ┆ 122 ┆ :122 │\n", - "│ ... ┆ ... ┆ ... ┆ ... ┆ ... ┆ ... ┆ ... ┆ ... ┆ ... │\n", - "│ MySeq ┆ 125 ┆ 0 ┆ 112 ┆ ... ┆ 0 ┆ 112M ┆ 112 ┆ :112 │\n", - "│ MySeq ┆ 125 ┆ 0 ┆ 112 ┆ ... ┆ 0 ┆ 112M ┆ 112 ┆ :112 │\n", - "│ MySeq ┆ 125 ┆ 0 ┆ 112 ┆ ... ┆ 0 ┆ 112M ┆ 112 ┆ :112 │\n", - "│ MySeq ┆ 125 ┆ 0 ┆ 111 ┆ ... ┆ 0 ┆ 111M ┆ 111 ┆ :111 │\n", - "└────────────┴───────────┴─────────────┴───────────┴─────┴─────┴───────────┴─────┴──────┘" + "shape: (1, 17)\n", + "┌───────────────────────┬───────────┬─────────────┬───────────┬───┬─────┬───────────┬─────┬──────┐\n", + "│ query_name ┆ query_len ┆ query_start ┆ query_end ┆ … ┆ nm ┆ cigar_str ┆ md ┆ cs │\n", + "│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n", + "│ str ┆ u32 ┆ i32 ┆ i32 ┆ ┆ i32 ┆ str ┆ str ┆ str │\n", + "╞═══════════════════════╪═══════════╪═════════════╪═══════════╪═══╪═════╪═══════════╪═════╪══════╡\n", + "│ test_read_1_2201_2451 ┆ 250 ┆ 0 ┆ 250 ┆ … ┆ 0 ┆ 250M ┆ 250 ┆ :250 │\n", + "└───────────────────────┴───────────┴─────────────┴───────────┴───┴─────┴───────────┴─────┴──────┘" ] }, - "execution_count": 3, + "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "aligner.cigar()\n", - "seq = \"CCAGAACGTACAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATGAGAGCCTTTAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"\n", - "result = aligner.map1(Sequence(\"MySeq\", seq))\n", - "result" + "aligner.map1(sequences[0])" ] }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 10, "id": "fc6dfea8-9f32-4c22-aa0f-15e9f095eab2", "metadata": {}, "outputs": [], "source": [ - "seqs = [Sequence(\"1\", \"CCAGAACGTACAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"), \n", - " Sequence(\"2\", \"CCAGAACGTACAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATGAGAGCCAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"),\n", - " Sequence(\"3\", \"CCAGAACGTACAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCGAGCCTTTAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"),\n", - " Sequence(\"4\", \"CCAGAACGTACAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATCCTTTAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"),\n", - " Sequence(\"5\", \"CCAGAACCAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATTTTAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"),\n", - " Sequence(\"6\", \"CCAGAACGTACAAGGAAATATCCTCAAATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATGAGAGCCTTTAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"),\n", - " Sequence(\"7\", \"CAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATGAGAGCCTTTAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"),\n", - " Sequence(\"8\", \"CGAACGTACAAGGAAATATCCTCAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATGAGAGCCTTTAGAAAAAAATTGAAATTTTGAGCATTTTTTAACCGA\"),\n", - " Sequence(\"9\", \"CCAGAACGTACACAAATTATCCCAAGAATTGTCCGCAGGAAATGGGGATAATTTCAGAAATGAGAGCCTTTAGAAATCAGGAAAAATTGAAATTTTGAGCATTTTTTAACCGA\")]\n", - "result = aligner.map(seqs)\n" + "result = aligner.map(sequences)" ] }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 11, "id": "d5a7378c-e878-4894-8840-4fcbc73cf72e", "metadata": {}, "outputs": [ { "data": { "text/html": [ - "
\n", - "\n", + "shape: (20, 17)
query_namequery_lenquery_startquery_endstrandtarget_nametarget_lentarget_starttarget_endmatch_lenblock_lenmapqis_primarynmcigar_strmdcs
stru32i32i32strstri32i32i32i32i32u32booli32strstrstr
"test_read_18_464_4964"450004500"+""NC_012920.1"1656946449644499449960true1"4500M""4500"":4500"
"test_read_20_7090_12090"500005000"+""NC_012920.1"165697090120905000500060true0"5000M""5000"":5000"
"test_read_19_6386_11136"475004750"+""NC_012920.1"165696386111364750475060true0"4750M""4750"":4750"
"test_read_15_3439_7189"375003750"+""NC_012920.1"16569343971893750375060true0"3750M""3750"":3750"
"test_read_17_7993_12243"425004250"+""NC_012920.1"165697993122434250425060true0"4250M""4250"":4250"
"test_read_6_1033_2533"150001500"+""NC_012920.1"16569103325331500150060true0"1500M""1500"":1500"
"test_read_5_12513_13763"125001250"+""NC_012920.1"1656912513137631250125060true0"1250M""1250"":1250"
"test_read_1_2201_2451"2500250"+""NC_012920.1"165692201245125025060true0"250M""250"":250"
"test_read_3_13884_14634"7500750"+""NC_012920.1"16569138841463475075060true0"750M""750"":750"
"test_read_2_9325_9825"5000500"+""NC_012920.1"165699325982550050060true0"500M""500"":500"
" + ], + "text/plain": [ + "shape: (20, 17)\n", + "┌───────────────────────┬───────────┬─────────────┬───────────┬───┬─────┬───────────┬──────┬───────┐\n", + "│ query_name ┆ query_len ┆ query_start ┆ query_end ┆ … ┆ nm ┆ cigar_str ┆ md ┆ cs │\n", + "│ --- ┆ --- ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n", + "│ str ┆ u32 ┆ i32 ┆ i32 ┆ ┆ i32 ┆ str ┆ str ┆ str │\n", + "╞═══════════════════════╪═══════════╪═════════════╪═══════════╪═══╪═════╪═══════════╪══════╪═══════╡\n", + "│ test_read_18_464_4964 ┆ 4500 ┆ 0 ┆ 4500 ┆ … ┆ 1 ┆ 4500M ┆ 4500 ┆ :4500 │\n", + "│ test_read_20_7090_120 ┆ 5000 ┆ 0 ┆ 5000 ┆ … ┆ 0 ┆ 5000M ┆ 5000 ┆ :5000 │\n", + "│ 90 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ test_read_19_6386_111 ┆ 4750 ┆ 0 ┆ 4750 ┆ … ┆ 0 ┆ 4750M ┆ 4750 ┆ :4750 │\n", + "│ 36 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ test_read_15_3439_718 ┆ 3750 ┆ 0 ┆ 3750 ┆ … ┆ 0 ┆ 3750M ┆ 3750 ┆ :3750 │\n", + "│ 9 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ test_read_17_7993_122 ┆ 4250 ┆ 0 ┆ 4250 ┆ … ┆ 0 ┆ 4250M ┆ 4250 ┆ :4250 │\n", + "│ 43 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n", + "│ test_read_6_1033_2533 ┆ 1500 ┆ 0 ┆ 1500 ┆ … ┆ 0 ┆ 1500M ┆ 1500 ┆ :1500 │\n", + "│ test_read_5_12513_137 ┆ 1250 ┆ 0 ┆ 1250 ┆ … ┆ 0 ┆ 1250M ┆ 1250 ┆ :1250 │\n", + "│ 63 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ test_read_1_2201_2451 ┆ 250 ┆ 0 ┆ 250 ┆ … ┆ 0 ┆ 250M ┆ 250 ┆ :250 │\n", + "│ test_read_3_13884_146 ┆ 750 ┆ 0 ┆ 750 ┆ … ┆ 0 ┆ 750M ┆ 750 ┆ :750 │\n", + "│ 34 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ test_read_2_9325_9825 ┆ 500 ┆ 0 ┆ 500 ┆ … ┆ 0 ┆ 500M ┆ 500 ┆ :500 │\n", + "└───────────────────────┴───────────┴─────────────┴───────────┴───┴─────┴───────────┴──────┴───────┘" + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "result" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "92ccdf81-c3bc-4525-8354-42f299c30e7a", + "metadata": {}, + "outputs": [], + "source": [ + "import plotly.express as px" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "579d685a-629a-48b8-9d2b-72b26849dc65", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "alignmentgroup": "True", + "bingroup": "x", + "hovertemplate": "block_len=%{x}
count=%{y}", + "legendgroup": "", + "marker": { + "color": "#636efa", + "pattern": { + "shape": "" + } + }, + "name": "", + "nbinsx": 10, + "offsetgroup": "", + "orientation": "v", + "showlegend": false, + "type": "histogram", + "x": [ + 4499, + 5000, + 4750, + 3750, + 4250, + 3999, + 3500, + 2750, + 3000, + 3250, + 2500, + 1999, + 2250, + 1750, + 1000, + 1500, + 1250, + 250, + 750, + 500 + ], + "xaxis": "x", + "yaxis": "y" + } + ], + "layout": { + "barmode": "relative", + "legend": { + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "block_len" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "count" + } + } + } + }, + "image/png": "iVBORw0KGgoAAAANSUhEUgAABQYAAAFoCAYAAAAFEiaUAAAgAElEQVR4Xu3dC9zlU70/8O/MGPdbEyKXkxNRck+o3EKSWyZ3kfvdjNu4jTEMxrgNg3IP0REd6TgK5V8hOUpU45RLJGJCQuSSGfPfe8+Y4xnzzOzfXs/vN2vv/X7O67xeneP3XXut9/e3W8/6+O399Jtc+wk/BAgQIECAAAECBAgQIECAAAECBAh0lUA/wWBX9dtiCRAgQIAAAQIECBAgQIAAAQIECDQEBINuBAIECBAgQIAAAQIECBAgQIAAAQJdKCAY7MKmWzIBAgQIECBAgAABAgQIECBAgAABwaB7gAABAgQIECBAgAABAgQIECBAgEAXCggGu7DplkyAAAECBAgQIECAAAECBAgQIEBAMOgeIECAAAECBAgQIECAAAECBAgQINCFAoLBLmy6JRMgQIAAAQIECBAgQIAAAQIECBAQDLoHCBAgQIAAAQIECBAgQIAAAQIECHShgGCwC5tuyQQIECBAgAABAgQIECBAgAABAgQEg+4BAgQIECBAgAABAgQIECBAgAABAl0oIBjswqZbMgECBAgQIECAAAECBAgQIECAAAHBoHuAAAECBAgQIECAAAECBAgQIECAQBcKCAa7sOmWTIAAAQIECBAgQIAAAQIECBAgQEAw6B4gQIAAAQIECBAgQIAAAQIECBAg0IUCgsEubLolEyBAgAABAgQIECBAgAABAgQIEBAMugcIECBAgAABAgQIECBAgAABAgQIdKGAYLALm27JBAgQIECAAAECBAgQIECAAAECBASD7gECBAgQIECAAAECBAgQIECAAAECXSggGOzCplsyAQIECBAgQIAAAQIECBAgQIAAAcGge4AAAQIECBAgQIAAAQIECBAgQIBAFwoIBruw6ZZMgAABAgQIECBAgAABAgQIECBAQDDoHiBAgAABAgQIECBAgAABAgQIECDQhQKCwS5suiUTIECAAAECBAgQIECAAAECBAgQEAy6BwgQIECAAAECBAgQIECAAAECBAh0oYBgsAubbskECBAgQIAAAQIECBAgQIAAAQIEBIPuAQIECBAgQIAAAQIECBAgQIAAAQJdKCAY7MKmWzIBAgQIECBAgAABAgQIECBAgAABwaB7gAABAgQIECBAgAABAgQIECBAgEAXCggGu7DplkyAAAECBAgQIECAAAECBAgQIEBAMOgeIECAAAECBAgQIECAAAECBAgQINCFAoLBLmy6JRMgQIAAAQIECBAgQIAAAQIECBAQDLoHCBAgQIAAAQIECBAgQIAAAQIECHShgGCwC5tuyQQIECBAgAABAgQIECBAgAABAgQEg+4BAgQIECBAgAABAgQIECBAgAABAl0oIBjswqZbMgECBAgQIECAAAECBAgQIECAAAHBoHuAAAECBAgQIECAAAECBAgQIECAQBcKCAa7sOmWTIAAAQIECBAgQIAAAQIECBAgQEAw6B4gQIAAAQIECBAgQIAAAQIECBAg0IUCgsEubLolEyBAgAABAgQIECBAgAABAgQIEBAMugcIECBAgAABAgQIECBAgAABAgQIdKGAYLALm27JBAgQIECAAAECBAgQIECAAAECBASD7gECBAgQIECAAAECBAgQIECAAAECXSggGOzCplsyAQIECBAgQIAAAQIECBAgQIAAAcGge4AAAQIECBAgQIAAAQIECBAgQIBAFwoIBruw6ZZMgAABAgQIECBAgAABAgQIECBAQDDoHiBAgAABAgQIECBAgAABAgQIECDQhQKCwS5suiUTIECAAAECBAgQIECAAAECBAgQEAy6BwgQIECAAAECBAgQIECAAAECBAh0oYBgsAubbskECBAgQIAAAQIECBAgQIAAAQIEBIPuAQIECBAgQIAAAQIECBAgQIAAAQJdKCAY7MKmWzIBAgQIECBAgAABAgQIECBAgAABwaB7gAABAgQIECBAgAABAgQIECBAgEAXCggGu7DplkyAAAECBAgQIECAAAECBAgQIEBAMOgeIECAAAECBAgQIECAAAECBAgQINCFAoLBLmy6JRMgQIAAAQIECBAgQIAAAQIECBAQDLoHCBAgQIAAAQIECBAgQIAAAQIECHShgGCwC5tuyQQIECBAgAABAgQIECBAgAABAgQEg+4BAgQIECBAgAABAgQIECBAgAABAl0oIBjswqZbMgECBAgQIECAAAECBAgQIECAAAHBYOI98OyLbySOoJwAAQIECBAgQIAAAQIECBAgQKAVgQ9/cJ5WytRMFRAMJt4KgsFEQOUECBAgQIAAAQIECBAgQIAAgRYFBIMtwgkG0+DerRYM9o2jUQgQIECAAAECBAgQIECAAAECRQUEg0XFel7vicE0vxAMJgIqJ0CA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BAgQIECgaQHBYNNULiRAgAABAgQIECBAgAABAgQIECDQOQKCwc7ppZUQIECAAAECBAgQIECAAAECBAgQaFpAMNg0lQsJECBAgAABAgQIECBAgAABAgQIdI6AYLBzemklBAgQIECAAAECBAgQIECAAAECBJoWEAw2TeVCAgQIECBAgAABAgQIECBAgAABAp0jIBjsnF5aCQECBAgQIECAAAECBAgQIECAAIGmBQSDTVO5kAABAgQIECBAgAABAgQIECBAgEDnCAgGO6eXVkKAAAECBAgQIECAAAECBAgQIECgaQHBYNNULiRAgAABAgQIECBAgAABAgQIECDQOQKCwc7ppZUQIECAAAECBAgQIECAAAECBAgQaFpAMNg0lQsJECBAgAABAgQIECBAgAABAgQIdI6AYLBzemklBAgQIECAAAECBAgQIECAAAECBJoWEAw2TeVCAgQIECBAgAABAgQIECBAgAABAp0jIBjsnF5aCQECBAgQIECAAAECBAgQIECAAIGmBQSDTVO5kAABAgQIECBAgAABAgQIECBAgEDnCAgGO6eXVkKAAAECBAgQIECAAAECBAgQIECgaQHBYNNULiRAgAABAgQIECBAgAABAgQIECDQOQKCwc7ppZUQIECAAAECBAgQIECAAAECBAgQaFpAMNg0lQsJECBAgAABAgQIECBAgAABAgQIdI6AYLBzemklBAgQIECAAAECBAgQIECAAAECBJoWEAw2TeVCAgQIECBAgAABAgQIECBAgAABAp0jIBjsnF5aCQECBAgQIECAAAECBAgQIECAAIGmBQSDTVO5kAABAgQIECBAgAABAgQIECBAgEDnCAgGO6eXVkKAAAECBAgQIECAAAECBAgQIECgaQHBYNNULiRAgAABAgQIECBAgAABAgQIECDQOQL/HxXS4CLtOjSBAAAAAElFTkSuQmCC", + "text/html": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "px.histogram(result.to_pandas(), x=\"block_len\", nbins=10)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "6b5065e4-7466-419b-a199-de70386955b7", + "metadata": {}, + "outputs": [ + { + "data": { + "application/vnd.plotly.v1+json": { + "config": { + "plotlyServerURL": "https://plot.ly" + }, + "data": [ + { + "hovertemplate": "target_start=%{x}
target_end=%{y}", + "legendgroup": "", + "marker": { + "color": "#636efa", + "symbol": "circle" + }, + "mode": "markers", + "name": "", + "orientation": "v", + "showlegend": false, + "type": "scatter", + "x": [ + 464, + 7090, + 6386, + 3439, + 7993, + 1537, + 6219, + 7364, + 7737, + 10675, + 12467, + 1931, + 8117, + 4179, + 13144, + 1033, + 12513, + 2201, + 13884, + 9325 + ], + "xaxis": "x", + "y": [ + 4964, + 12090, + 11136, + 7189, + 12243, + 5537, + 9719, + 10114, + 10737, + 13925, + 14967, + 3931, + 10367, + 5929, + 14144, + 2533, + 13763, + 2451, + 14634, + 9825 + ], + "yaxis": "y" + } + ], + "layout": { + "legend": { + "tracegroupgap": 0 + }, + "margin": { + "t": 60 + }, + "template": { + "data": { + "bar": [ + { + "error_x": { + "color": "#2a3f5f" + }, + "error_y": { + "color": "#2a3f5f" + }, + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "bar" + } + ], + "barpolar": [ + { + "marker": { + "line": { + "color": "#E5ECF6", + "width": 0.5 + }, + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "barpolar" + } + ], + "carpet": [ + { + "aaxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "baxis": { + "endlinecolor": "#2a3f5f", + "gridcolor": "white", + "linecolor": "white", + "minorgridcolor": "white", + "startlinecolor": "#2a3f5f" + }, + "type": "carpet" + } + ], + "choropleth": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "choropleth" + } + ], + "contour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "contour" + } + ], + "contourcarpet": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "contourcarpet" + } + ], + "heatmap": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmap" + } + ], + "heatmapgl": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "heatmapgl" + } + ], + "histogram": [ + { + "marker": { + "pattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + } + }, + "type": "histogram" + } + ], + "histogram2d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2d" + } + ], + "histogram2dcontour": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "histogram2dcontour" + } + ], + "mesh3d": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "type": "mesh3d" + } + ], + "parcoords": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "parcoords" + } + ], + "pie": [ + { + "automargin": true, + "type": "pie" + } + ], + "scatter": [ + { + "fillpattern": { + "fillmode": "overlay", + "size": 10, + "solidity": 0.2 + }, + "type": "scatter" + } + ], + "scatter3d": [ + { + "line": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatter3d" + } + ], + "scattercarpet": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattercarpet" + } + ], + "scattergeo": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergeo" + } + ], + "scattergl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattergl" + } + ], + "scattermapbox": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scattermapbox" + } + ], + "scatterpolar": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolar" + } + ], + "scatterpolargl": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterpolargl" + } + ], + "scatterternary": [ + { + "marker": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "type": "scatterternary" + } + ], + "surface": [ + { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + }, + "colorscale": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "type": "surface" + } + ], + "table": [ + { + "cells": { + "fill": { + "color": "#EBF0F8" + }, + "line": { + "color": "white" + } + }, + "header": { + "fill": { + "color": "#C8D4E3" + }, + "line": { + "color": "white" + } + }, + "type": "table" + } + ] + }, + "layout": { + "annotationdefaults": { + "arrowcolor": "#2a3f5f", + "arrowhead": 0, + "arrowwidth": 1 + }, + "autotypenumbers": "strict", + "coloraxis": { + "colorbar": { + "outlinewidth": 0, + "ticks": "" + } + }, + "colorscale": { + "diverging": [ + [ + 0, + "#8e0152" + ], + [ + 0.1, + "#c51b7d" + ], + [ + 0.2, + "#de77ae" + ], + [ + 0.3, + "#f1b6da" + ], + [ + 0.4, + "#fde0ef" + ], + [ + 0.5, + "#f7f7f7" + ], + [ + 0.6, + "#e6f5d0" + ], + [ + 0.7, + "#b8e186" + ], + [ + 0.8, + "#7fbc41" + ], + [ + 0.9, + "#4d9221" + ], + [ + 1, + "#276419" + ] + ], + "sequential": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ], + "sequentialminus": [ + [ + 0, + "#0d0887" + ], + [ + 0.1111111111111111, + "#46039f" + ], + [ + 0.2222222222222222, + "#7201a8" + ], + [ + 0.3333333333333333, + "#9c179e" + ], + [ + 0.4444444444444444, + "#bd3786" + ], + [ + 0.5555555555555556, + "#d8576b" + ], + [ + 0.6666666666666666, + "#ed7953" + ], + [ + 0.7777777777777778, + "#fb9f3a" + ], + [ + 0.8888888888888888, + "#fdca26" + ], + [ + 1, + "#f0f921" + ] + ] + }, + "colorway": [ + "#636efa", + "#EF553B", + "#00cc96", + "#ab63fa", + "#FFA15A", + "#19d3f3", + "#FF6692", + "#B6E880", + "#FF97FF", + "#FECB52" + ], + "font": { + "color": "#2a3f5f" + }, + "geo": { + "bgcolor": "white", + "lakecolor": "white", + "landcolor": "#E5ECF6", + "showlakes": true, + "showland": true, + "subunitcolor": "white" + }, + "hoverlabel": { + "align": "left" + }, + "hovermode": "closest", + "mapbox": { + "style": "light" + }, + "paper_bgcolor": "white", + "plot_bgcolor": "#E5ECF6", + "polar": { + "angularaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "radialaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "scene": { + "xaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "yaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + }, + "zaxis": { + "backgroundcolor": "#E5ECF6", + "gridcolor": "white", + "gridwidth": 2, + "linecolor": "white", + "showbackground": true, + "ticks": "", + "zerolinecolor": "white" + } + }, + "shapedefaults": { + "line": { + "color": "#2a3f5f" + } + }, + "ternary": { + "aaxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "baxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + }, + "bgcolor": "#E5ECF6", + "caxis": { + "gridcolor": "white", + "linecolor": "white", + "ticks": "" + } + }, + "title": { + "x": 0.05 + }, + "xaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + }, + "yaxis": { + "automargin": true, + "gridcolor": "white", + "linecolor": "white", + "ticks": "", + "title": { + "standoff": 15 + }, + "zerolinecolor": "white", + "zerolinewidth": 2 + } + } + }, + "xaxis": { + "anchor": "y", + "domain": [ + 0, + 1 + ], + "title": { + "text": "target_start" + } + }, + "yaxis": { + "anchor": "x", + "domain": [ + 0, + 1 + ], + "title": { + "text": "target_end" + } + } + } + }, + "image/png": "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", + "text/html": [ + "
" ] }, - "execution_count": 5, "metadata": {}, - "output_type": "execute_result" + "output_type": "display_data" } ], "source": [ - "result" + "px.scatter(result.to_pandas(), x=\"target_start\", y=\"target_end\")" ] }, { "cell_type": "code", "execution_count": null, - "id": "92ccdf81-c3bc-4525-8354-42f299c30e7a", + "id": "50373b02-5da0-417b-8ca4-f480bb7f39db", "metadata": {}, "outputs": [], "source": [] @@ -2858,7 +2057,7 @@ ], "metadata": { "kernelspec": { - "display_name": "Python 3", + "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, @@ -2872,7 +2071,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.9.15" + "version": "3.12.8" } }, "nbformat": 4, diff --git a/minimappers2/example/pixi.lock b/minimappers2/example/pixi.lock new file mode 100644 index 0000000..026f2c1 --- /dev/null +++ b/minimappers2/example/pixi.lock @@ -0,0 +1,4144 @@ +version: 5 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.anaconda.org/bioconda/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.11-py312h2ec8cdc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/maturin-1.8.1-py312h6ab59e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + - conda: https://conda.anaconda.org/bioconda/linux-64/needletail-0.6.1-py312h6c9e832_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-7.3.2-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.1-py312h7e784f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/polars-1.17.1-py312hda0fa55_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.48-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.1-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.3-py312h12e396e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.5.14-h0f3a69f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda +packages: +- kind: conda + name: _libgcc_mutex + version: '0.1' + build: conda_forge + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + license: None + size: 2562 + timestamp: 1578324546067 +- kind: conda + name: _openmp_mutex + version: '4.5' + build: 2_gnu + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- kind: conda + name: anyio + version: 4.8.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/anyio-4.8.0-pyhd8ed1ab_0.conda + sha256: f1455d2953e3eb6d71bc49881c8558d8e01888469dfd21061dd48afb6183e836 + md5: 848d25bfbadf020ee4d4ba90e5668252 + depends: + - exceptiongroup >=1.0.2 + - idna >=2.8 + - python >=3.9 + - sniffio >=1.1 + - typing_extensions >=4.5 + constrains: + - trio >=0.26.1 + - uvloop >=0.21 + license: MIT + license_family: MIT + size: 115305 + timestamp: 1736174485476 +- kind: conda + name: argon2-cffi + version: 23.1.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/argon2-cffi-23.1.0-pyhd8ed1ab_1.conda + sha256: 7af62339394986bc470a7a231c7f37ad0173ffb41f6bc0e8e31b0be9e3b9d20f + md5: a7ee488b71c30ada51c48468337b85ba + depends: + - argon2-cffi-bindings + - python >=3.9 + - typing-extensions + constrains: + - argon2_cffi ==999 + license: MIT + license_family: MIT + size: 18594 + timestamp: 1733311166338 +- kind: conda + name: argon2-cffi-bindings + version: 21.2.0 + build: py312h66e93f0_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/argon2-cffi-bindings-21.2.0-py312h66e93f0_5.conda + sha256: 3cbc3b026f5c3f26de696ead10607db8d80cbb003d87669ac3b02e884f711978 + md5: 1505fc57c305c0a3174ea7aae0a0db25 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.0.1 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 34847 + timestamp: 1725356749774 +- kind: conda + name: arrow + version: 1.3.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/arrow-1.3.0-pyhd8ed1ab_1.conda + sha256: c4b0bdb3d5dee50b60db92f99da3e4c524d5240aafc0a5fcc15e45ae2d1a3cd1 + md5: 46b53236fdd990271b03c3978d4218a9 + depends: + - python >=3.9 + - python-dateutil >=2.7.0 + - types-python-dateutil >=2.8.10 + license: Apache-2.0 + license_family: Apache + size: 99951 + timestamp: 1733584345583 +- kind: conda + name: asttokens + version: 3.0.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/asttokens-3.0.0-pyhd8ed1ab_1.conda + sha256: 93b14414b3b3ed91e286e1cbe4e7a60c4e1b1c730b0814d1e452a8ac4b9af593 + md5: 8f587de4bcf981e26228f268df374a9b + depends: + - python >=3.9 + constrains: + - astroid >=2,<4 + license: Apache-2.0 + license_family: Apache + size: 28206 + timestamp: 1733250564754 +- kind: conda + name: async-lru + version: 2.0.4 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/async-lru-2.0.4-pyhd8ed1ab_1.conda + sha256: 344157f396dfdc929d1dff8fe010abe173cd168d22a56648583e616495f2929e + md5: 40c673c7d585623b8f1ee650c8734eb6 + depends: + - python >=3.9 + - typing_extensions >=4.0.0 + license: MIT + license_family: MIT + size: 15318 + timestamp: 1733584388228 +- kind: conda + name: attrs + version: 24.3.0 + build: pyh71513ae_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a + md5: 356927ace43302bf6f5926e2a58dae6a + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 56354 + timestamp: 1734348889193 +- kind: conda + name: aws-c-auth + version: 0.8.0 + build: hb921021_15 + build_number: 15 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-auth-0.8.0-hb921021_15.conda + sha256: 537006ad6d5097c134494166a6a1dc1451d5d050878d7b82cef498bfda40ba8a + md5: c79d50f64cffa5ad51ecc1a81057962f + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 107614 + timestamp: 1734021692519 +- kind: conda + name: aws-c-cal + version: 0.8.1 + build: h1a47875_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-cal-0.8.1-h1a47875_3.conda + sha256: 095ac824ea9303eff67e04090ae531d9eb33d2bf8f82eaade39b839c421e16e8 + md5: 55a8561fdbbbd34f50f57d9be12ed084 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - openssl >=3.3.1,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 47601 + timestamp: 1733991564405 +- kind: conda + name: aws-c-common + version: 0.10.6 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-common-0.10.6-hb9d3cd8_0.conda + sha256: 496e92f2150fdc351eacf6e236015deedb3d0d3114f8e5954341cbf9f3dda257 + md5: d7d4680337a14001b0e043e96529409b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 236574 + timestamp: 1733975453350 +- kind: conda + name: aws-c-compression + version: 0.3.0 + build: h4e1184b_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-compression-0.3.0-h4e1184b_5.conda + sha256: 62ca84da83585e7814a40240a1e750b1563b2680b032a471464eccc001c3309b + md5: 3f4c1197462a6df2be6dc8241828fe93 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 19086 + timestamp: 1733991637424 +- kind: conda + name: aws-c-event-stream + version: 0.5.0 + build: h7959bf6_11 + build_number: 11 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-event-stream-0.5.0-h7959bf6_11.conda + sha256: 10d7240c7db0c941fb1a59c4f8ea6689a434b03309ee7b766fa15a809c553c02 + md5: 9b3fb60fe57925a92f399bc3fc42eccf + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: Apache + size: 54003 + timestamp: 1734024480949 +- kind: conda + name: aws-c-http + version: 0.9.2 + build: hefd7a92_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-http-0.9.2-hefd7a92_4.conda + sha256: 4a330206bd51148f6c13ca0b7a4db40f29a46f090642ebacdeb88b8a4abd7f99 + md5: 5ce4df662d32d3123ea8da15571b6f51 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-compression >=0.3.0,<0.3.1.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 197731 + timestamp: 1734008380764 +- kind: conda + name: aws-c-io + version: 0.15.3 + build: h831e299_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-io-0.15.3-h831e299_5.conda + sha256: 5920009b1c6f9a2bc131a36725251894e4b4773fce29c4b1065d4213ae337abe + md5: 80dd9f0ddf935290d1dc00ec75ff3023 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + - s2n >=1.5.10,<1.5.11.0a0 + license: Apache-2.0 + license_family: Apache + size: 157864 + timestamp: 1734433578570 +- kind: conda + name: aws-c-mqtt + version: 0.11.0 + build: h11f4f37_12 + build_number: 12 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-mqtt-0.11.0-h11f4f37_12.conda + sha256: 512d3969426152d9d5fd886e27b13706122dc3fa90eb08c37b0d51a33d7bb14a + md5: 96c3e0221fa2da97619ee82faa341a73 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 194672 + timestamp: 1734025626798 +- kind: conda + name: aws-c-s3 + version: 0.7.7 + build: hf454442_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-s3-0.7.7-hf454442_0.conda + sha256: c2f205a7bf64c5f40eea373b3a0a7c363c9aa9246a13dd7f3d9c6a4434c4fe2d + md5: 947c82025693bebd557f782bb5d6b469 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 114156 + timestamp: 1734146123386 +- kind: conda + name: aws-c-sdkutils + version: 0.2.1 + build: h4e1184b_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-c-sdkutils-0.2.1-h4e1184b_4.conda + sha256: df586f42210af1134b1c88ff4c278c3cb6d6c807c84eac48860062464b28554d + md5: a5126a90e74ac739b00564a4c7ddcc36 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 56094 + timestamp: 1733994449690 +- kind: conda + name: aws-checksums + version: 0.2.2 + build: h4e1184b_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-checksums-0.2.2-h4e1184b_4.conda + sha256: 1ed9a332d06ad595694907fad2d6d801082916c27cd5076096fda4061e6d24a8 + md5: 74e8c3e4df4ceae34aa2959df4b28101 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 72762 + timestamp: 1733994347547 +- kind: conda + name: aws-crt-cpp + version: 0.29.7 + build: hd92328a_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-crt-cpp-0.29.7-hd92328a_7.conda + sha256: 094cd81f1e5ba713e9e7a272ee52b5dde3ccc4842ea90f19c0354a00bbdac3d9 + md5: 02b95564257d5c3db9c06beccf711f95 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-auth >=0.8.0,<0.8.1.0a0 + - aws-c-cal >=0.8.1,<0.8.2.0a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-c-http >=0.9.2,<0.9.3.0a0 + - aws-c-io >=0.15.3,<0.15.4.0a0 + - aws-c-mqtt >=0.11.0,<0.11.1.0a0 + - aws-c-s3 >=0.7.7,<0.7.8.0a0 + - aws-c-sdkutils >=0.2.1,<0.2.2.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: Apache + size: 354703 + timestamp: 1734177883319 +- kind: conda + name: aws-sdk-cpp + version: 1.11.458 + build: hc430e4a_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/aws-sdk-cpp-1.11.458-hc430e4a_4.conda + sha256: 2dc09f6f9c49127b5f96e7535b64a9c521b944d76d8b7d03d48ae80257ac1cea + md5: aeefac461bea1f126653c1285cf5af08 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-c-common >=0.10.6,<0.10.7.0a0 + - aws-c-event-stream >=0.5.0,<0.5.1.0a0 + - aws-checksums >=0.2.2,<0.2.3.0a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 3060561 + timestamp: 1734093737431 +- kind: conda + name: azure-core-cpp + version: 1.14.0 + build: h5cfcd09_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-core-cpp-1.14.0-h5cfcd09_0.conda + sha256: fe07debdb089a3db17f40a7f20d283d75284bb4fc269ef727b8ba6fc93f7cb5a + md5: 0a8838771cc2e985cd295e01ae83baf1 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 345117 + timestamp: 1728053909574 +- kind: conda + name: azure-identity-cpp + version: 1.10.0 + build: h113e628_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-identity-cpp-1.10.0-h113e628_0.conda + sha256: 286b31616c191486626cb49e9ceb5920d29394b9e913c23adb7eb637629ba4de + md5: 73f73f60854f325a55f1d31459f2ab73 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 232351 + timestamp: 1728486729511 +- kind: conda + name: azure-storage-blobs-cpp + version: 12.13.0 + build: h3cf044e_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-blobs-cpp-12.13.0-h3cf044e_1.conda + sha256: 2606260e5379eed255bcdc6adc39b93fb31477337bcd911c121fc43cd29bf394 + md5: 7eb66060455c7a47d9dcdbfa9f46579b + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + size: 549342 + timestamp: 1728578123088 +- kind: conda + name: azure-storage-common-cpp + version: 12.8.0 + build: h736e048_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-common-cpp-12.8.0-h736e048_1.conda + sha256: 273475f002b091b66ce7366da04bf164c3732c03f8692ab2ee2d23335b6a82ba + md5: 13de36be8de3ae3f05ba127631599213 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.12.7,<3.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 149312 + timestamp: 1728563338704 +- kind: conda + name: azure-storage-files-datalake-cpp + version: 12.12.0 + build: ha633028_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/azure-storage-files-datalake-cpp-12.12.0-ha633028_1.conda + sha256: 5371e4f3f920933bb89b926a85a67f24388227419abd6e99f6086481e5e8d5f2 + md5: 7c1980f89dd41b097549782121a73490 + depends: + - __glibc >=2.17,<3.0.a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-common-cpp >=12.8.0,<12.8.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + license: MIT + license_family: MIT + size: 287366 + timestamp: 1728729530295 +- kind: conda + name: babel + version: 2.16.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/babel-2.16.0-pyhd8ed1ab_1.conda + sha256: f6205d3a62e87447e06e98d911559be0208d824976d77ab092796c9176611fcb + md5: 3e23f7db93ec14c80525257d8affac28 + depends: + - python >=3.9 + - pytz >=2015.7 + license: BSD-3-Clause + license_family: BSD + size: 6551057 + timestamp: 1733236466015 +- kind: conda + name: beautifulsoup4 + version: 4.12.3 + build: pyha770c72_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/beautifulsoup4-4.12.3-pyha770c72_1.conda + sha256: fca842ab7be052eea1037ebee17ac25cc79c626382dd2187b5c6e007b9d9f65f + md5: d48f7e9fdec44baf6d1da416fe402b04 + depends: + - python >=3.9 + - soupsieve >=1.2 + license: MIT + license_family: MIT + size: 118042 + timestamp: 1733230951790 +- kind: conda + name: bleach + version: 6.2.0 + build: pyhd8ed1ab_3 + build_number: 3 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/bleach-6.2.0-pyhd8ed1ab_3.conda + sha256: 9278622f54b6b4bce5d73663b282a8ab35d1b331d6ff92f4112906a526039827 + md5: b33551d9bac06d754762e8ccb3c4df03 + depends: + - python >=3.9 + - webencodings + constrains: + - tinycss2 >=1.1.0,<1.5 + license: Apache-2.0 AND MIT + license_family: Apache + size: 132550 + timestamp: 1736148590971 +- kind: conda + name: brotli-python + version: 1.1.0 + build: py312h2ec8cdc_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda + sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f + md5: b0b867af6fc74b2a0aa206da29c0f3cf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - libbrotlicommon 1.1.0 hb9d3cd8_2 + license: MIT + license_family: MIT + size: 349867 + timestamp: 1725267732089 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h4bc722e_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- kind: conda + name: c-ares + version: 1.34.4 + build: hb9d3cd8_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 206085 + timestamp: 1734208189009 +- kind: conda + name: ca-certificates + version: 2024.12.14 + build: hbcca054_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd + md5: 720523eb0d6a9b0f6120c16b2aa4e7de + license: ISC + size: 157088 + timestamp: 1734208393264 +- kind: conda + name: cached-property + version: 1.5.2 + build: hd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/cached-property-1.5.2-hd8ed1ab_1.tar.bz2 + sha256: 561e6660f26c35d137ee150187d89767c988413c978e1b712d53f27ddf70ea17 + md5: 9b347a7ec10940d3f7941ff6c460b551 + depends: + - cached_property >=1.5.2,<1.5.3.0a0 + license: BSD-3-Clause + license_family: BSD + size: 4134 + timestamp: 1615209571450 +- kind: conda + name: cached_property + version: 1.5.2 + build: pyha770c72_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/cached_property-1.5.2-pyha770c72_1.tar.bz2 + sha256: 6dbf7a5070cc43d90a1e4c2ec0c541c69d8e30a0e25f50ce9f6e4a432e42c5d7 + md5: 576d629e47797577ab0f1b351297ef4a + depends: + - python >=3.6 + license: BSD-3-Clause + license_family: BSD + size: 11065 + timestamp: 1615209567874 +- kind: conda + name: certifi + version: 2024.12.14 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.12.14-pyhd8ed1ab_0.conda + sha256: 048c16a9cbcb1fbad02083414d3bc7c1d0eea4b39aee6aa6bf8d1d5089ca8bad + md5: 6feb87357ecd66733be3279f16a8c400 + depends: + - python >=3.9 + license: ISC + size: 161642 + timestamp: 1734380604767 +- kind: conda + name: cffi + version: 1.17.1 + build: py312h06ac9bb_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda + sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 + md5: a861504bbea4161a9170b85d4d2be840 + depends: + - __glibc >=2.17,<3.0.a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 294403 + timestamp: 1725560714366 +- kind: conda + name: charset-normalizer + version: 3.4.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.1-pyhd8ed1ab_0.conda + sha256: 4e0ee91b97e5de3e74567bdacea27f0139709fceca4db8adffbe24deffccb09b + md5: e83a31202d1c0a000fce3e9cf3825875 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 47438 + timestamp: 1735929811779 +- kind: conda + name: comm + version: 0.2.2 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/comm-0.2.2-pyhd8ed1ab_1.conda + sha256: 7e87ef7c91574d9fac19faedaaee328a70f718c9b4ddadfdc0ba9ac021bd64af + md5: 74673132601ec2b7fc592755605f4c1b + depends: + - python >=3.9 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 12103 + timestamp: 1733503053903 +- kind: conda + name: debugpy + version: 1.8.11 + build: py312h2ec8cdc_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.11-py312h2ec8cdc_0.conda + sha256: 3d800be438a76d8a636219afd63a617737729867af5800d50fc72e71ac4f27f1 + md5: 0235a6da7d128c7e068973c4de62fc7b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: MIT + license_family: MIT + size: 2668691 + timestamp: 1734159098550 +- kind: conda + name: decorator + version: 5.1.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/decorator-5.1.1-pyhd8ed1ab_1.conda + sha256: 84e5120c97502a3785e8c3241c3bf51f64b4d445f13b4d2445db00d9816fe479 + md5: d622d8d7ee8868870f9cbe259f381181 + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + size: 14068 + timestamp: 1733236549190 +- kind: conda + name: defusedxml + version: 0.7.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/defusedxml-0.7.1-pyhd8ed1ab_0.tar.bz2 + sha256: 9717a059677553562a8f38ff07f3b9f61727bd614f505658b0a5ecbcf8df89be + md5: 961b3a227b437d82ad7054484cfa71b2 + depends: + - python >=3.6 + license: PSF-2.0 + license_family: PSF + size: 24062 + timestamp: 1615232388757 +- kind: conda + name: entrypoints + version: '0.4' + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/entrypoints-0.4-pyhd8ed1ab_1.conda + sha256: 80f579bfc71b3dab5bef74114b89e26c85cb0df8caf4c27ab5ffc16363d57ee7 + md5: 3366592d3c219f2731721f11bc93755c + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 11259 + timestamp: 1733327239578 +- kind: conda + name: exceptiongroup + version: 1.2.2 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/exceptiongroup-1.2.2-pyhd8ed1ab_1.conda + sha256: cbde2c64ec317118fc06b223c5fd87c8a680255e7348dd60e7b292d2e103e701 + md5: a16662747cdeb9abbac74d0057cc976e + depends: + - python >=3.9 + license: MIT and PSF-2.0 + size: 20486 + timestamp: 1733208916977 +- kind: conda + name: executing + version: 2.1.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/executing-2.1.0-pyhd8ed1ab_1.conda + sha256: 28d25ea375ebab4bf7479228f8430db20986187b04999136ff5c722ebd32eb60 + md5: ef8b5fca76806159fc25b4f48d8737eb + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 28348 + timestamp: 1733569440265 +- kind: conda + name: fqdn + version: 1.5.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/fqdn-1.5.1-pyhd8ed1ab_1.conda + sha256: 2509992ec2fd38ab27c7cdb42cf6cadc566a1cc0d1021a2673475d9fa87c6276 + md5: d3549fd50d450b6d9e7dddff25dd2110 + depends: + - cached-property >=1.3.0 + - python >=3.9,<4 + license: MPL-2.0 + license_family: MOZILLA + size: 16705 + timestamp: 1733327494780 +- kind: conda + name: gflags + version: 2.2.2 + build: h5888daf_1005 + build_number: 1005 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/gflags-2.2.2-h5888daf_1005.conda + sha256: 6c33bf0c4d8f418546ba9c250db4e4221040936aef8956353bc764d4877bc39a + md5: d411fc29e338efb48c5fd4576d71d881 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + size: 119654 + timestamp: 1726600001928 +- kind: conda + name: glog + version: 0.7.1 + build: hbabe93e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/glog-0.7.1-hbabe93e_0.conda + sha256: dc824dc1d0aa358e28da2ecbbb9f03d932d976c8dca11214aa1dcdfcbd054ba2 + md5: ff862eebdfeb2fd048ae9dc92510baca + depends: + - gflags >=2.2.2,<2.3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 143452 + timestamp: 1718284177264 +- kind: conda + name: h11 + version: 0.14.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/h11-0.14.0-pyhd8ed1ab_1.conda + sha256: 622516185a7c740d5c7f27016d0c15b45782c1501e5611deec63fd70344ce7c8 + md5: 7ee49e89531c0dcbba9466f6d115d585 + depends: + - python >=3.9 + - typing_extensions + license: MIT + license_family: MIT + size: 51846 + timestamp: 1733327599467 +- kind: conda + name: h2 + version: 4.1.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_1.conda + sha256: 843ddad410c370672a8250470697027618f104153612439076d4d7b91eeb7b5c + md5: 825927dc7b0f287ef8d4d0011bb113b1 + depends: + - hpack >=4.0,<5 + - hyperframe >=6.0,<7 + - python >=3.9 + license: MIT + license_family: MIT + size: 52000 + timestamp: 1733298867359 +- kind: conda + name: hpack + version: 4.0.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyhd8ed1ab_1.conda + sha256: ec89b7e5b8aa2f0219f666084446e1fb7b54545861e9caa892acb24d125761b5 + md5: 2aa5ff7fa34a81b9196532c84c10d865 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 29412 + timestamp: 1733299296857 +- kind: conda + name: httpcore + version: 1.0.7 + build: pyh29332c3_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/httpcore-1.0.7-pyh29332c3_1.conda + sha256: c84d012a245171f3ed666a8bf9319580c269b7843ffa79f26468842da3abd5df + md5: 2ca8e6dbc86525c8b95e3c0ffa26442e + depends: + - python >=3.8 + - h11 >=0.13,<0.15 + - h2 >=3,<5 + - sniffio 1.* + - anyio >=3.0,<5.0 + - certifi + license: BSD-3-Clause + license_family: BSD + size: 48959 + timestamp: 1731707562362 +- kind: conda + name: httpx + version: 0.28.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/httpx-0.28.1-pyhd8ed1ab_0.conda + sha256: cd0f1de3697b252df95f98383e9edb1d00386bfdd03fdf607fa42fe5fcb09950 + md5: d6989ead454181f4f9bc987d3dc4e285 + depends: + - anyio + - certifi + - httpcore 1.* + - idna + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 63082 + timestamp: 1733663449209 +- kind: conda + name: hyperframe + version: 6.0.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_1.conda + sha256: e91c6ef09d076e1d9a02819cd00fa7ee18ecf30cdd667605c853980216584d1b + md5: 566e75c90c1d0c8c459eb0ad9833dc7a + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 17239 + timestamp: 1733298862681 +- kind: conda + name: idna + version: '3.10' + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 49765 + timestamp: 1733211921194 +- kind: conda + name: importlib-metadata + version: 8.5.0 + build: pyha770c72_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/importlib-metadata-8.5.0-pyha770c72_1.conda + sha256: 13766b88fc5b23581530d3a0287c0c58ad82f60401afefab283bf158d2be55a9 + md5: 315607a3030ad5d5227e76e0733798ff + depends: + - python >=3.9 + - zipp >=0.5 + license: Apache-2.0 + license_family: APACHE + size: 28623 + timestamp: 1733223207185 +- kind: conda + name: importlib_resources + version: 6.4.5 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/importlib_resources-6.4.5-pyhd8ed1ab_1.conda + sha256: 461199e429a3db01f0a673f8beaac5e0be75b88895952fb9183f2ab01c5c3c24 + md5: 15798fa69312d433af690c8c42b3fb36 + depends: + - python >=3.9 + - zipp >=3.1.0 + constrains: + - importlib-resources >=6.4.5,<6.4.6.0a0 + license: Apache-2.0 + license_family: APACHE + size: 32701 + timestamp: 1733231441973 +- kind: conda + name: ipykernel + version: 6.29.5 + build: pyh3099207_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ipykernel-6.29.5-pyh3099207_0.conda + sha256: 33cfd339bb4efac56edf93474b37ddc049e08b1b4930cf036c893cc1f5a1f32a + md5: b40131ab6a36ac2c09b7c57d4d3fbf99 + depends: + - __linux + - comm >=0.1.1 + - debugpy >=1.6.5 + - ipython >=7.23.1 + - jupyter_client >=6.1.12 + - jupyter_core >=4.12,!=5.0.* + - matplotlib-inline >=0.1 + - nest-asyncio + - packaging + - psutil + - python >=3.8 + - pyzmq >=24 + - tornado >=6.1 + - traitlets >=5.4.0 + license: BSD-3-Clause + license_family: BSD + size: 119084 + timestamp: 1719845605084 +- kind: conda + name: ipython + version: 8.31.0 + build: pyh707e725_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ipython-8.31.0-pyh707e725_0.conda + sha256: e10d1172ebf950f8f087f0d9310d215f5ddb8f3ad247bfa58ab5a909b3cabbdc + md5: 1d7fcd803dfa936a6c3bd051b293241c + depends: + - __unix + - decorator + - exceptiongroup + - jedi >=0.16 + - matplotlib-inline + - pexpect >4.3 + - pickleshare + - prompt-toolkit >=3.0.41,<3.1.0 + - pygments >=2.4.0 + - python >=3.10 + - stack_data + - traitlets >=5.13.0 + - typing_extensions >=4.6 + license: BSD-3-Clause + license_family: BSD + size: 600761 + timestamp: 1734788248334 +- kind: conda + name: ipywidgets + version: 8.1.5 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ipywidgets-8.1.5-pyhd8ed1ab_1.conda + sha256: f419657566e3d9bea85b288a0ce3a8e42d76cd82ac1697c6917891df3ae149ab + md5: bb19ad65196475ab6d0bb3532d7f8d96 + depends: + - comm >=0.1.3 + - ipython >=6.1.0 + - jupyterlab_widgets >=3.0.13,<3.1.0 + - python >=3.9 + - traitlets >=4.3.1 + - widgetsnbextension >=4.0.13,<4.1.0 + license: BSD-3-Clause + license_family: BSD + size: 113982 + timestamp: 1733493669268 +- kind: conda + name: isoduration + version: 20.11.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/isoduration-20.11.0-pyhd8ed1ab_1.conda + sha256: 08e838d29c134a7684bca0468401d26840f41c92267c4126d7b43a6b533b0aed + md5: 0b0154421989637d424ccf0f104be51a + depends: + - arrow >=0.15.0 + - python >=3.9 + license: MIT + license_family: MIT + size: 19832 + timestamp: 1733493720346 +- kind: conda + name: jedi + version: 0.19.2 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jedi-0.19.2-pyhd8ed1ab_1.conda + sha256: 92c4d217e2dc68983f724aa983cca5464dcb929c566627b26a2511159667dba8 + md5: a4f4c5dc9b80bc50e0d3dc4e6e8f1bd9 + depends: + - parso >=0.8.3,<0.9.0 + - python >=3.9 + license: Apache-2.0 AND MIT + size: 843646 + timestamp: 1733300981994 +- kind: conda + name: jinja2 + version: 3.1.5 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd + depends: + - markupsafe >=2.0 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 112561 + timestamp: 1734824044952 +- kind: conda + name: json5 + version: 0.10.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/json5-0.10.0-pyhd8ed1ab_1.conda + sha256: 61bca2dac194c44603446944745566d7b4e55407280f6f6cea8bbe4de26b558f + md5: cd170f82d8e5b355dfdea6adab23e4af + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 31573 + timestamp: 1733272196759 +- kind: conda + name: jsonpointer + version: 3.0.0 + build: py312h7900ff3_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda + sha256: 76ccb7bffc7761d1d3133ffbe1f7f1710a0f0d9aaa9f7ea522652e799f3601f4 + md5: 6b51f7459ea4073eeb5057207e2e1e3d + depends: + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 17277 + timestamp: 1725303032027 +- kind: conda + name: jsonschema + version: 4.23.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-4.23.0-pyhd8ed1ab_1.conda + sha256: be992a99e589146f229c58fe5083e0b60551d774511c494f91fe011931bd7893 + md5: a3cead9264b331b32fe8f0aabc967522 + depends: + - attrs >=22.2.0 + - importlib_resources >=1.4.0 + - jsonschema-specifications >=2023.03.6 + - pkgutil-resolve-name >=1.3.10 + - python >=3.9 + - referencing >=0.28.4 + - rpds-py >=0.7.1 + license: MIT + license_family: MIT + size: 74256 + timestamp: 1733472818764 +- kind: conda + name: jsonschema-specifications + version: 2024.10.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-specifications-2024.10.1-pyhd8ed1ab_1.conda + sha256: 37127133837444cf0e6d1a95ff5a505f8214ed4e89e8e9343284840e674c6891 + md5: 3b519bc21bc80e60b456f1e62962a766 + depends: + - python >=3.9 + - referencing >=0.31.0 + license: MIT + license_family: MIT + size: 16170 + timestamp: 1733493624968 +- kind: conda + name: jsonschema-with-format-nongpl + version: 4.23.0 + build: hd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/jsonschema-with-format-nongpl-4.23.0-hd8ed1ab_1.conda + sha256: 6e0184530011961a0802fda100ecdfd4b0eca634ed94c37e553b72e21c26627d + md5: a5b1a8065857cc4bd8b7a38d063bb728 + depends: + - fqdn + - idna + - isoduration + - jsonpointer >1.13 + - jsonschema >=4.23.0,<4.23.1.0a0 + - rfc3339-validator + - rfc3986-validator >0.1.0 + - uri-template + - webcolors >=24.6.0 + license: MIT + license_family: MIT + size: 7135 + timestamp: 1733472820035 +- kind: conda + name: jupyter + version: 1.1.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-1.1.1-pyhd8ed1ab_1.conda + sha256: b538e15067d05768d1c0532a6d9b0625922a1cce751dd6a2af04f7233a1a70e9 + md5: 9453512288d20847de4356327d0e1282 + depends: + - ipykernel + - ipywidgets + - jupyter_console + - jupyterlab + - nbconvert-core + - notebook + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 8891 + timestamp: 1733818677113 +- kind: conda + name: jupyter-lsp + version: 2.2.5 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter-lsp-2.2.5-pyhd8ed1ab_1.conda + sha256: 1565c8b1423a37fca00fe0ab2a17cd8992c2ecf23e7867a1c9f6f86a9831c196 + md5: 0b4c3908e5a38ea22ebb98ee5888c768 + depends: + - importlib-metadata >=4.8.3 + - jupyter_server >=1.1.2 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 55221 + timestamp: 1733493006611 +- kind: conda + name: jupyter_client + version: 8.6.3 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_client-8.6.3-pyhd8ed1ab_1.conda + sha256: 19d8bd5bb2fde910ec59e081eeb59529491995ce0d653a5209366611023a0b3a + md5: 4ebae00eae9705b0c3d6d1018a81d047 + depends: + - importlib-metadata >=4.8.3 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-dateutil >=2.8.2 + - pyzmq >=23.0 + - tornado >=6.2 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 106342 + timestamp: 1733441040958 +- kind: conda + name: jupyter_console + version: 6.6.3 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_console-6.6.3-pyhd8ed1ab_1.conda + sha256: aee0cdd0cb2b9321d28450aec4e0fd43566efcd79e862d70ce49a68bf0539bcd + md5: 801dbf535ec26508fac6d4b24adfb76e + depends: + - ipykernel >=6.14 + - ipython + - jupyter_client >=7.0.0 + - jupyter_core >=4.12,!=5.0.* + - prompt_toolkit >=3.0.30 + - pygments + - python >=3.9 + - pyzmq >=17 + - traitlets >=5.4 + license: BSD-3-Clause + license_family: BSD + size: 26874 + timestamp: 1733818130068 +- kind: conda + name: jupyter_core + version: 5.7.2 + build: pyh31011fe_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_core-5.7.2-pyh31011fe_1.conda + sha256: 732b1e8536bc22a5a174baa79842d79db2f4956d90293dd82dc1b3f6099bcccd + md5: 0a2980dada0dd7fd0998f0342308b1b1 + depends: + - __unix + - platformdirs >=2.5 + - python >=3.8 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 57671 + timestamp: 1727163547058 +- kind: conda + name: jupyter_events + version: 0.11.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_events-0.11.0-pyhd8ed1ab_0.conda + sha256: eeb32aa58d37b130387628d5c151092f6d3fcf0a6964294bef06d6bac117f3c4 + md5: 2d8876ca6bda213622dfbc3d1da56ecb + depends: + - jsonschema-with-format-nongpl >=4.18.0 + - packaging + - python >=3.9 + - python-json-logger >=2.0.4 + - pyyaml >=5.3 + - referencing + - rfc3339-validator + - rfc3986-validator >=0.1.1 + - traitlets >=5.3 + license: BSD-3-Clause + license_family: BSD + size: 22160 + timestamp: 1734531779868 +- kind: conda + name: jupyter_server + version: 2.15.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server-2.15.0-pyhd8ed1ab_0.conda + sha256: be5f9774065d94c4a988f53812b83b67618bec33fcaaa005a98067d506613f8a + md5: 6ba8c206b5c6f52b82435056cf74ee46 + depends: + - anyio >=3.1.0 + - argon2-cffi >=21.1 + - jinja2 >=3.0.3 + - jupyter_client >=7.4.4 + - jupyter_core >=4.12,!=5.0.* + - jupyter_events >=0.11.0 + - jupyter_server_terminals >=0.4.4 + - nbconvert-core >=6.4.4 + - nbformat >=5.3.0 + - overrides >=5.0 + - packaging >=22.0 + - prometheus_client >=0.9 + - python >=3.9 + - pyzmq >=24 + - send2trash >=1.8.2 + - terminado >=0.8.3 + - tornado >=6.2.0 + - traitlets >=5.6.0 + - websocket-client >=1.7 + license: BSD-3-Clause + license_family: BSD + size: 327747 + timestamp: 1734702771032 +- kind: conda + name: jupyter_server_terminals + version: 0.5.3 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyter_server_terminals-0.5.3-pyhd8ed1ab_1.conda + sha256: 0890fc79422191bc29edf17d7b42cff44ba254aa225d31eb30819f8772b775b8 + md5: 2d983ff1b82a1ccb6f2e9d8784bdd6bd + depends: + - python >=3.9 + - terminado >=0.8.3 + license: BSD-3-Clause + license_family: BSD + size: 19711 + timestamp: 1733428049134 +- kind: conda + name: jupyterlab + version: 4.3.4 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab-4.3.4-pyhd8ed1ab_0.conda + sha256: bcf9fc0ea4bd6cf06a7a23b7f8b7bb7d8520eea8d0cdd6d3b975ede7793ed69b + md5: edc13687180382b4444d9f143a2e1ef7 + depends: + - async-lru >=1.0.0 + - httpx >=0.25.0 + - importlib-metadata >=4.8.3 + - ipykernel >=6.5.0 + - jinja2 >=3.0.3 + - jupyter-lsp >=2.0.0 + - jupyter_core + - jupyter_server >=2.4.0,<3 + - jupyterlab_server >=2.27.1,<3 + - notebook-shim >=0.2 + - packaging + - python >=3.9 + - setuptools >=40.8.0 + - tomli >=1.2.2 + - tornado >=6.2.0 + - traitlets + license: BSD-3-Clause + license_family: BSD + size: 7257751 + timestamp: 1734539283837 +- kind: conda + name: jupyterlab_pygments + version: 0.3.0 + build: pyhd8ed1ab_2 + build_number: 2 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_pygments-0.3.0-pyhd8ed1ab_2.conda + sha256: dc24b900742fdaf1e077d9a3458fd865711de80bca95fe3c6d46610c532c6ef0 + md5: fd312693df06da3578383232528c468d + depends: + - pygments >=2.4.1,<3 + - python >=3.9 + constrains: + - jupyterlab >=4.0.8,<5.0.0 + license: BSD-3-Clause + license_family: BSD + size: 18711 + timestamp: 1733328194037 +- kind: conda + name: jupyterlab_server + version: 2.27.3 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_server-2.27.3-pyhd8ed1ab_1.conda + sha256: d03d0b7e23fa56d322993bc9786b3a43b88ccc26e58b77c756619a921ab30e86 + md5: 9dc4b2b0f41f0de41d27f3293e319357 + depends: + - babel >=2.10 + - importlib-metadata >=4.8.3 + - jinja2 >=3.0.3 + - json5 >=0.9.0 + - jsonschema >=4.18 + - jupyter_server >=1.21,<3 + - packaging >=21.3 + - python >=3.9 + - requests >=2.31 + constrains: + - openapi-core >=0.18.0,<0.19.0 + license: BSD-3-Clause + license_family: BSD + size: 49449 + timestamp: 1733599666357 +- kind: conda + name: jupyterlab_widgets + version: 3.0.13 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/jupyterlab_widgets-3.0.13-pyhd8ed1ab_1.conda + sha256: 206489e417408d2ffc2a7b245008b4735a8beb59df6c9109d4f77e7bc5969d5d + md5: b26e487434032d7f486277beb0cead3a + depends: + - python >=3.9 + constrains: + - jupyterlab >=3,<5 + license: BSD-3-Clause + license_family: BSD + size: 186358 + timestamp: 1733428156991 +- kind: conda + name: keyutils + version: 1.6.1 + build: h166bdaf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 + sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb + md5: 30186d27e2c9fa62b45fb1476b7200e3 + depends: + - libgcc-ng >=10.3.0 + license: LGPL-2.1-or-later + size: 117831 + timestamp: 1646151697040 +- kind: conda + name: krb5 + version: 1.21.3 + build: h659f571_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + depends: + - keyutils >=1.6.1,<2.0a0 + - libedit >=3.1.20191231,<3.2.0a0 + - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - openssl >=3.3.1,<4.0a0 + license: MIT + license_family: MIT + size: 1370023 + timestamp: 1719463201255 +- kind: conda + name: ld_impl_linux-64 + version: '2.43' + build: h712a8e2_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe + md5: 048b02e3962f066da18efe3a21b77672 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + license: GPL-3.0-only + license_family: GPL + size: 669211 + timestamp: 1729655358674 +- kind: conda + name: libabseil + version: '20240722.0' + build: cxx17_hbbce691_4 + build_number: 4 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_4.conda + sha256: 143a586aa67d50622ef703de57b9d43f44945836d6568e0e7aa174bd8c45e0d4 + md5: 488f260ccda0afaf08acb286db439c2f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + license: Apache-2.0 + license_family: Apache + size: 1311599 + timestamp: 1736008414161 +- kind: conda + name: libarrow + version: 18.1.0 + build: hd595efa_7_cpu + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-18.1.0-hd595efa_7_cpu.conda + sha256: 554ffa338264c1dc34d95adb7eb856d50a2f25e7fa303a1a51e4372301b7c96f + md5: 08d4aff5ee6dee9a1b9ab13fca927697 + depends: + - __glibc >=2.17,<3.0.a0 + - aws-crt-cpp >=0.29.7,<0.29.8.0a0 + - aws-sdk-cpp >=1.11.458,<1.11.459.0a0 + - azure-core-cpp >=1.14.0,<1.14.1.0a0 + - azure-identity-cpp >=1.10.0,<1.10.1.0a0 + - azure-storage-blobs-cpp >=12.13.0,<12.13.1.0a0 + - azure-storage-files-datalake-cpp >=12.12.0,<12.12.1.0a0 + - bzip2 >=1.0.8,<2.0a0 + - gflags >=2.2.2,<2.3.0a0 + - glog >=0.7.1,<0.8.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libbrotlidec >=1.1.0,<1.2.0a0 + - libbrotlienc >=1.1.0,<1.2.0a0 + - libgcc >=13 + - libgoogle-cloud >=2.33.0,<2.34.0a0 + - libgoogle-cloud-storage >=2.33.0,<2.34.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libutf8proc >=2.9.0,<2.10.0a0 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - orc >=2.0.3,<2.0.4.0a0 + - re2 + - snappy >=1.2.1,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - arrow-cpp <0.0a0 + - parquet-cpp <0.0a0 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + size: 8770256 + timestamp: 1735684696564 +- kind: conda + name: libarrow-acero + version: 18.1.0 + build: hcb10f89_7_cpu + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-acero-18.1.0-hcb10f89_7_cpu.conda + sha256: 87ea5d6a84d922d73975dce8661fccf257e72e755175b12c30e1181a34e37987 + md5: 12d84228204c56fec6ed113288014d11 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 hd595efa_7_cpu + - libgcc >=13 + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 612463 + timestamp: 1735684749868 +- kind: conda + name: libarrow-dataset + version: 18.1.0 + build: hcb10f89_7_cpu + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-dataset-18.1.0-hcb10f89_7_cpu.conda + sha256: 99c12511fba79c7947f78d676eae5857659084f687f375f68bc20bd4cddb0a0e + md5: 0a81eb63d7cd150f598c752e86388d57 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 hd595efa_7_cpu + - libarrow-acero 18.1.0 hcb10f89_7_cpu + - libgcc >=13 + - libparquet 18.1.0 h081d1f1_7_cpu + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 587497 + timestamp: 1735684880531 +- kind: conda + name: libarrow-substrait + version: 18.1.0 + build: h08228c5_7_cpu + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libarrow-substrait-18.1.0-h08228c5_7_cpu.conda + sha256: 53ea53a06e137c2f81ebfdff3f978babb8b59e31f705a19b57056ec8754c1abf + md5: e128def53c133e8a23ac00cd4a479335 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libarrow 18.1.0 hd595efa_7_cpu + - libarrow-acero 18.1.0 hcb10f89_7_cpu + - libarrow-dataset 18.1.0 hcb10f89_7_cpu + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + license: Apache-2.0 + license_family: APACHE + size: 521861 + timestamp: 1735684940668 +- kind: conda + name: libblas + version: 3.9.0 + build: 26_linux64_openblas + build_number: 26 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c + md5: ac52800af2e0c0e7dac770b435ce768a + depends: + - libopenblas >=0.3.28,<0.3.29.0a0 + - libopenblas >=0.3.28,<1.0a0 + constrains: + - libcblas 3.9.0 26_linux64_openblas + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas + - blas * openblas + license: BSD-3-Clause + license_family: BSD + size: 16393 + timestamp: 1734432564346 +- kind: conda + name: libbrotlicommon + version: 1.1.0 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 68851 + timestamp: 1725267660471 +- kind: conda + name: libbrotlidec + version: 1.1.0 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + license: MIT + license_family: MIT + size: 32696 + timestamp: 1725267669305 +- kind: conda + name: libbrotlienc + version: 1.1.0 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + license: MIT + license_family: MIT + size: 281750 + timestamp: 1725267679782 +- kind: conda + name: libcblas + version: 3.9.0 + build: 26_linux64_openblas + build_number: 26 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee + md5: ebcc5f37a435aa3c19640533c82f8d76 + depends: + - libblas 3.9.0 26_linux64_openblas + constrains: + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas + - blas * openblas + license: BSD-3-Clause + license_family: BSD + size: 16336 + timestamp: 1734432570482 +- kind: conda + name: libcrc32c + version: 1.1.2 + build: h9c3ff4c_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcrc32c-1.1.2-h9c3ff4c_0.tar.bz2 + sha256: fd1d153962764433fe6233f34a72cdeed5dcf8a883a85769e8295ce940b5b0c5 + md5: c965a5aa0d5c1c37ffc62dff36e28400 + depends: + - libgcc-ng >=9.4.0 + - libstdcxx-ng >=9.4.0 + license: BSD-3-Clause + license_family: BSD + size: 20440 + timestamp: 1633683576494 +- kind: conda + name: libcurl + version: 8.11.1 + build: h332b0f4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 + md5: 2b3e0081006dc21e8bf53a91c83a055c + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: curl + license_family: MIT + size: 423011 + timestamp: 1733999897624 +- kind: conda + name: libedit + version: 3.1.20240808 + build: pl5321h7949ede_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20240808-pl5321h7949ede_0.conda + sha256: 4d0d69ddf9cc7d724a1ccf3a9852e44c8aea9825692582bac2c4e8d21ec95ccd + md5: 8247f80f3dc464d9322e85007e307fe8 + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + size: 134657 + timestamp: 1736191912705 +- kind: conda + name: libev + version: '4.33' + build: hd590300_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 112766 + timestamp: 1702146165126 +- kind: conda + name: libevent + version: 2.1.12 + build: hf998b51_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libevent-2.1.12-hf998b51_1.conda + sha256: 2e14399d81fb348e9d231a82ca4d816bf855206923759b69ad006ba482764131 + md5: a1cfcc585f0c42bf8d5546bb1dfb668d + depends: + - libgcc-ng >=12 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 427426 + timestamp: 1685725977222 +- kind: conda + name: libexpat + version: 2.6.4 + build: h5888daf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- kind: conda + name: libffi + version: 3.4.2 + build: h7f98852_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- kind: conda + name: libgcc + version: 14.2.0 + build: h77fa898_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 + md5: 3cb76c3f10d3bc7f1105b2fc9db984df + depends: + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h77fa898_1 + - libgcc-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 848745 + timestamp: 1729027721139 +- kind: conda + name: libgcc-ng + version: 14.2.0 + build: h69a702a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 + md5: e39480b9ca41323497b05492a63bc35b + depends: + - libgcc 14.2.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54142 + timestamp: 1729027726517 +- kind: conda + name: libgfortran + version: 14.2.0 + build: h69a702a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 + md5: f1fd30127802683586f768875127a987 + depends: + - libgfortran5 14.2.0 hd5240d6_1 + constrains: + - libgfortran-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 53997 + timestamp: 1729027752995 +- kind: conda + name: libgfortran5 + version: 14.2.0 + build: hd5240d6_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1462645 + timestamp: 1729027735353 +- kind: conda + name: libgomp + version: 14.2.0 + build: h77fa898_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 + depends: + - _libgcc_mutex 0.1 conda_forge + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 460992 + timestamp: 1729027639220 +- kind: conda + name: libgoogle-cloud + version: 2.33.0 + build: h2b5623c_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-2.33.0-h2b5623c_1.conda + sha256: ae48ee93e2c226bf682f1e389c2fd51ae7bf77c2ce4b3aee069764f4be1c63f2 + md5: 61829a8dd5f4e2327e707572065bae41 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcurl >=8.11.1,<9.0a0 + - libgcc >=13 + - libgrpc >=1.67.1,<1.68.0a0 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + constrains: + - libgoogle-cloud 2.33.0 *_1 + license: Apache-2.0 + license_family: Apache + size: 1254656 + timestamp: 1735648569457 +- kind: conda + name: libgoogle-cloud-storage + version: 2.33.0 + build: h0121fbd_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgoogle-cloud-storage-2.33.0-h0121fbd_1.conda + sha256: 41022523320ca8633a6c615710823e596efadb50f06d724e1a0c81e27994f257 + md5: b0cfb5044685a7a9fa43ae669124f0a0 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil + - libcrc32c >=1.1.2,<1.2.0a0 + - libcurl + - libgcc >=13 + - libgoogle-cloud 2.33.0 h2b5623c_1 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl + license: Apache-2.0 + license_family: Apache + size: 784357 + timestamp: 1735648759177 +- kind: conda + name: libgrpc + version: 1.67.1 + build: h25350d4_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgrpc-1.67.1-h25350d4_1.conda + sha256: 014627485b3cf0ea18e04c0bab07be7fb98722a3aeeb58477acc7e1c3d2f911e + md5: 0c6497a760b99a926c7c12b74951a39c + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.34.4,<2.0a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libre2-11 >=2024.7.2 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - re2 + constrains: + - grpc-cpp =1.67.1 + license: Apache-2.0 + license_family: APACHE + size: 7792251 + timestamp: 1735584856826 +- kind: conda + name: libiconv + version: '1.17' + build: hd590300_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 + md5: d66573916ffcf376178462f1b61c941e + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + size: 705775 + timestamp: 1702682170569 +- kind: conda + name: liblapack + version: 3.9.0 + build: 26_linux64_openblas + build_number: 26 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 + md5: 3792604c43695d6a273bc5faaac47d48 + depends: + - libblas 3.9.0 26_linux64_openblas + constrains: + - libcblas 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas + - blas * openblas + license: BSD-3-Clause + license_family: BSD + size: 16338 + timestamp: 1734432576650 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111132 + timestamp: 1733407410083 +- kind: conda + name: libnghttp2 + version: 1.64.0 + build: h161d5f1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 + md5: 19e57602824042dfd0446292ef90488b + depends: + - __glibc >=2.17,<3.0.a0 + - c-ares >=1.32.3,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: MIT + license_family: MIT + size: 647599 + timestamp: 1729571887612 +- kind: conda + name: libnsl + version: 2.0.1 + build: hd590300_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 + md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 + depends: + - libgcc-ng >=12 + license: LGPL-2.1-only + license_family: GPL + size: 33408 + timestamp: 1697359010159 +- kind: conda + name: libopenblas + version: 0.3.28 + build: pthreads_h94d23a6_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe + md5: 62857b389e42b36b686331bec0922050 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - libgfortran + - libgfortran5 >=14.2.0 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + license: BSD-3-Clause + license_family: BSD + size: 5578513 + timestamp: 1730772671118 +- kind: conda + name: libparquet + version: 18.1.0 + build: h081d1f1_7_cpu + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libparquet-18.1.0-h081d1f1_7_cpu.conda + sha256: 55945b761130f60abdecf1551907ecfd05cb4a5958cf74d855b30c005ecb3592 + md5: b97013ef4e1dd2cf11594f06d5b5e83a + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0 hd595efa_7_cpu + - libgcc >=13 + - libstdcxx >=13 + - libthrift >=0.21.0,<0.21.1.0a0 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 1205598 + timestamp: 1735684849150 +- kind: conda + name: libprotobuf + version: 5.28.3 + build: h6128344_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.3-h6128344_1.conda + sha256: 51125ebb8b7152e4a4e69fd2398489c4ec8473195c27cde3cbdf1cb6d18c5493 + md5: d8703f1ffe5a06356f06467f1d0b9464 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + size: 2960815 + timestamp: 1735577210663 +- kind: conda + name: libre2-11 + version: 2024.07.02 + build: hbbce691_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libre2-11-2024.07.02-hbbce691_2.conda + sha256: 4420f8362c71251892ba1eeb957c5e445e4e1596c0c651c28d0d8b415fe120c7 + md5: b2fede24428726dd867611664fb372e8 + depends: + - __glibc >=2.17,<3.0.a0 + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - re2 2024.07.02.* + license: BSD-3-Clause + license_family: BSD + size: 209793 + timestamp: 1735541054068 +- kind: conda + name: libsodium + version: 1.0.20 + build: h4ab18f5_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsodium-1.0.20-h4ab18f5_0.conda + sha256: 0105bd108f19ea8e6a78d2d994a6d4a8db16d19a41212070d2d1d48a63c34161 + md5: a587892d3c13b6621a6091be690dbca2 + depends: + - libgcc-ng >=12 + license: ISC + size: 205978 + timestamp: 1716828628198 +- kind: conda + name: libsqlite + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 873551 + timestamp: 1733761824646 +- kind: conda + name: libssh2 + version: 1.11.1 + build: hf672d98_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 304278 + timestamp: 1732349402869 +- kind: conda + name: libstdcxx + version: 14.2.0 + build: hc0a3c3a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 + md5: 234a5554c53625688d51062645337328 + depends: + - libgcc 14.2.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3893695 + timestamp: 1729027746910 +- kind: conda + name: libstdcxx-ng + version: 14.2.0 + build: h4852527_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda + sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 + md5: 8371ac6457591af2cf6159439c1fd051 + depends: + - libstdcxx 14.2.0 hc0a3c3a_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54105 + timestamp: 1729027780628 +- kind: conda + name: libthrift + version: 0.21.0 + build: h0e7cc3e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libthrift-0.21.0-h0e7cc3e_0.conda + sha256: ebb395232973c18745b86c9a399a4725b2c39293c9a91b8e59251be013db42f0 + md5: dcb95c0a98ba9ff737f7ae482aef7833 + depends: + - __glibc >=2.17,<3.0.a0 + - libevent >=2.1.12,<2.1.13.0a0 + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.3.2,<4.0a0 + license: Apache-2.0 + license_family: APACHE + size: 425773 + timestamp: 1727205853307 +- kind: conda + name: libutf8proc + version: 2.9.0 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libutf8proc-2.9.0-hb9d3cd8_1.conda + sha256: 9794e6388e780c3310d46f773bbc924d4053375c3fcdb07a704b57f4616db928 + md5: 1e936bd23d737aac62a18e9a1e7f8b18 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: MIT + license_family: MIT + size: 81500 + timestamp: 1732868419835 +- kind: conda + name: libuuid + version: 2.38.1 + build: h0b41bf4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- kind: conda + name: libxcrypt + version: 4.4.36 + build: hd590300_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda + sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c + md5: 5aa797f8787fe7a17d1b0821485b5adc + depends: + - libgcc-ng >=12 + license: LGPL-2.1-or-later + size: 100393 + timestamp: 1702724383534 +- kind: conda + name: libxml2 + version: 2.13.5 + build: h0d44e9d_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h0d44e9d_1.conda + sha256: 306e18aa647d8208ad2cd0e62d84933222b2fbe93d2d53cd5283d2256b1d54de + md5: f5b05674697ae7d2c5932766695945e1 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + constrains: + - icu <0.0a0 + license: MIT + license_family: MIT + size: 689993 + timestamp: 1733443678322 +- kind: conda + name: libzlib + version: 1.3.1 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- kind: conda + name: lz4-c + version: 1.10.0 + build: h5888daf_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.10.0-h5888daf_1.conda + sha256: 47326f811392a5fd3055f0f773036c392d26fdb32e4d8e7a8197eed951489346 + md5: 9de5350a85c4a20c685259b889aa6393 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-2-Clause + license_family: BSD + size: 167055 + timestamp: 1733741040117 +- kind: conda + name: markupsafe + version: 3.0.2 + build: py312h178313f_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_1.conda + sha256: 4a6bf68d2a2b669fecc9a4a009abd1cf8e72c2289522ff00d81b5a6e51ae78f5 + md5: eb227c3e0bf58f5bd69c0532b157975b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - jinja2 >=3.0.0 + license: BSD-3-Clause + license_family: BSD + size: 24604 + timestamp: 1733219911494 +- kind: conda + name: matplotlib-inline + version: 0.1.7 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/matplotlib-inline-0.1.7-pyhd8ed1ab_1.conda + sha256: 69b7dc7131703d3d60da9b0faa6dd8acbf6f6c396224cf6aef3e855b8c0c41c6 + md5: af6ab708897df59bd6e7283ceab1b56b + depends: + - python >=3.9 + - traitlets + license: BSD-3-Clause + license_family: BSD + size: 14467 + timestamp: 1733417051523 +- kind: conda + name: maturin + version: 1.8.1 + build: py312h6ab59e4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/maturin-1.8.1-py312h6ab59e4_0.conda + sha256: 85df54adc02c4ea5c356a1452fb5ce59a628c62f3e12c97c67d3f70f5a91db77 + md5: 3eb4396a4a7664d20a3e6c0eacb74e54 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - tomli >=1.1.0 + license: MIT + license_family: MIT + size: 6439557 + timestamp: 1735612586086 +- kind: conda + name: mistune + version: 3.1.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/mistune-3.1.0-pyhd8ed1ab_0.conda + sha256: d932404dc610464130db5f36f59cd29947a687d9708daaad369d0020707de41a + md5: d10024c163a52eeecbb166fdeaef8b12 + depends: + - python >=3.9 + - typing_extensions + license: BSD-3-Clause + license_family: BSD + size: 68803 + timestamp: 1735686983426 +- kind: conda + name: nbclient + version: 0.10.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/nbclient-0.10.2-pyhd8ed1ab_0.conda + sha256: a20cff739d66c2f89f413e4ba4c6f6b59c50d5c30b5f0d840c13e8c9c2df9135 + md5: 6bb0d77277061742744176ab555b723c + depends: + - jupyter_client >=6.1.12 + - jupyter_core >=4.12,!=5.0.* + - nbformat >=5.1 + - python >=3.8 + - traitlets >=5.4 + license: BSD-3-Clause + license_family: BSD + size: 28045 + timestamp: 1734628936013 +- kind: conda + name: nbconvert-core + version: 7.16.5 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/nbconvert-core-7.16.5-pyhd8ed1ab_0.conda + sha256: b68320693e2864d3d246ce6e92c3e7313397ee26d21fcd3c21ebcaccb741aed5 + md5: 4b55bdb10ff17f070b31b2ab52b189d0 + depends: + - beautifulsoup4 + - bleach !=5.0.0 + - defusedxml + - entrypoints >=0.2.2 + - importlib-metadata >=3.6 + - jinja2 >=3.0 + - jupyter_core >=4.7 + - jupyterlab_pygments + - markupsafe >=2.0 + - mistune >=2.0.3,<4 + - nbclient >=0.5.0 + - nbformat >=5.7 + - packaging + - pandocfilters >=1.4.1 + - pygments >=2.4.1 + - python >=3.9 + - tinycss2 >=1.1.0,<1.5 + - traitlets >=5.1 + constrains: + - nbconvert =7.16.5=*_0 + - pandoc >=2.9.2,<4.0.0 + license: BSD-3-Clause + license_family: BSD + size: 189317 + timestamp: 1735858344122 +- kind: conda + name: nbformat + version: 5.10.4 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/nbformat-5.10.4-pyhd8ed1ab_1.conda + sha256: 7a5bd30a2e7ddd7b85031a5e2e14f290898098dc85bea5b3a5bf147c25122838 + md5: bbe1963f1e47f594070ffe87cdf612ea + depends: + - jsonschema >=2.6 + - jupyter_core >=4.12,!=5.0.* + - python >=3.9 + - python-fastjsonschema >=2.15 + - traitlets >=5.1 + license: BSD-3-Clause + license_family: BSD + size: 100945 + timestamp: 1733402844974 +- kind: conda + name: ncurses + version: '6.5' + build: he02047a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a + md5: 70caf8bb6cf39a0b6b7efc885f51c0fe + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + size: 889086 + timestamp: 1724658547447 +- kind: conda + name: needletail + version: 0.6.1 + build: py312h6c9e832_0 + subdir: linux-64 + url: https://conda.anaconda.org/bioconda/linux-64/needletail-0.6.1-py312h6c9e832_0.tar.bz2 + sha256: 61c1c2c8642e43b56902d03634aeb33fa235ea1d90dd9512d15c6f35f1efb512 + md5: 6bd8a9caf70515a25f12c940a59b9d69 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 552324 + timestamp: 1734582817380 +- kind: conda + name: nest-asyncio + version: 1.6.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/nest-asyncio-1.6.0-pyhd8ed1ab_1.conda + sha256: bb7b21d7fd0445ddc0631f64e66d91a179de4ba920b8381f29b9d006a42788c0 + md5: 598fd7d4d0de2455fb74f56063969a97 + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + size: 11543 + timestamp: 1733325673691 +- kind: conda + name: notebook + version: 7.3.2 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/notebook-7.3.2-pyhd8ed1ab_0.conda + sha256: 07138543549d6672376115a000c5fd26c3711f0b2b5c9464889bccfe711d8e59 + md5: 48b0461a947a0537427fc836b9bd2d33 + depends: + - importlib_resources >=5.0 + - jupyter_server >=2.4.0,<3 + - jupyterlab >=4.3.4,<4.4 + - jupyterlab_server >=2.27.1,<3 + - notebook-shim >=0.2,<0.3 + - python >=3.9 + - tornado >=6.2.0 + license: BSD-3-Clause + license_family: BSD + size: 9063022 + timestamp: 1734789551840 +- kind: conda + name: notebook-shim + version: 0.2.4 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/notebook-shim-0.2.4-pyhd8ed1ab_1.conda + sha256: 7b920e46b9f7a2d2aa6434222e5c8d739021dbc5cc75f32d124a8191d86f9056 + md5: e7f89ea5f7ea9401642758ff50a2d9c1 + depends: + - jupyter_server >=1.8,<3 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 16817 + timestamp: 1733408419340 +- kind: conda + name: numpy + version: 2.2.1 + build: py312h7e784f5_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.1-py312h7e784f5_0.conda + sha256: d8ccc46c3d2149a1479b660f5c04acad45766ed04ef961ef022d71122ec2bb91 + md5: 6159cab400b61f38579a7692be5e630a + depends: + - __glibc >=2.17,<3.0.a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - liblapack >=3.9.0,<4.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy-base <0a0 + license: BSD-3-Clause + license_family: BSD + size: 8483009 + timestamp: 1734904730019 +- kind: conda + name: openssl + version: 3.4.0 + build: h7b32b05_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f + md5: 4ce6875f75469b2757a65e10a5d05e31 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 2937158 + timestamp: 1736086387286 +- kind: conda + name: orc + version: 2.0.3 + build: h12ee42a_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/orc-2.0.3-h12ee42a_2.conda + sha256: dff5cc8023905782c86b3459055f26d4b97890e403b0698477c9fed15d8669cc + md5: 4f6f9f3f80354ad185e276c120eac3f0 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libprotobuf >=5.28.3,<5.28.4.0a0 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.10.0,<1.11.0a0 + - snappy >=1.2.1,<1.3.0a0 + - tzdata + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 + license_family: Apache + size: 1188881 + timestamp: 1735630209320 +- kind: conda + name: overrides + version: 7.7.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/overrides-7.7.0-pyhd8ed1ab_1.conda + sha256: 1840bd90d25d4930d60f57b4f38d4e0ae3f5b8db2819638709c36098c6ba770c + md5: e51f1e4089cad105b6cac64bd8166587 + depends: + - python >=3.9 + - typing_utils + license: Apache-2.0 + license_family: APACHE + size: 30139 + timestamp: 1734587755455 +- kind: conda + name: packaging + version: '24.2' + build: pyhd8ed1ab_2 + build_number: 2 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda + sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 + md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa + depends: + - python >=3.8 + license: Apache-2.0 + license_family: APACHE + size: 60164 + timestamp: 1733203368787 +- kind: conda + name: pandas + version: 2.2.3 + build: py312hf9745cd_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pandas-2.2.3-py312hf9745cd_1.conda + sha256: ad275a83bfebfa8a8fee9b0569aaf6f513ada6a246b2f5d5b85903d8ca61887e + md5: 8bce4f6caaf8c5448c7ac86d87e26b4b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.19,<3 + - numpy >=1.22.4 + - python >=3.12,<3.13.0a0 + - python-dateutil >=2.8.1 + - python-tzdata >=2022a + - python_abi 3.12.* *_cp312 + - pytz >=2020.1,<2024.2 + license: BSD-3-Clause + license_family: BSD + size: 15436913 + timestamp: 1726879054912 +- kind: conda + name: pandocfilters + version: 1.5.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pandocfilters-1.5.0-pyhd8ed1ab_0.tar.bz2 + sha256: 2bb9ba9857f4774b85900c2562f7e711d08dd48e2add9bee4e1612fbee27e16f + md5: 457c2c8c08e54905d6954e79cb5b5db9 + depends: + - python !=3.0,!=3.1,!=3.2,!=3.3 + license: BSD-3-Clause + license_family: BSD + size: 11627 + timestamp: 1631603397334 +- kind: conda + name: parso + version: 0.8.4 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/parso-0.8.4-pyhd8ed1ab_1.conda + sha256: 17131120c10401a99205fc6fe436e7903c0fa092f1b3e80452927ab377239bcc + md5: 5c092057b6badd30f75b06244ecd01c9 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 75295 + timestamp: 1733271352153 +- kind: conda + name: pexpect + version: 4.9.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pexpect-4.9.0-pyhd8ed1ab_1.conda + sha256: 202af1de83b585d36445dc1fda94266697341994d1a3328fabde4989e1b3d07a + md5: d0d408b1f18883a944376da5cf8101ea + depends: + - ptyprocess >=0.5 + - python >=3.9 + license: ISC + size: 53561 + timestamp: 1733302019362 +- kind: conda + name: pickleshare + version: 0.7.5 + build: pyhd8ed1ab_1004 + build_number: 1004 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pickleshare-0.7.5-pyhd8ed1ab_1004.conda + sha256: e2ac3d66c367dada209fc6da43e645672364b9fd5f9d28b9f016e24b81af475b + md5: 11a9d1d09a3615fc07c3faf79bc0b943 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 11748 + timestamp: 1733327448200 +- kind: conda + name: pkgutil-resolve-name + version: 1.3.10 + build: pyhd8ed1ab_2 + build_number: 2 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pkgutil-resolve-name-1.3.10-pyhd8ed1ab_2.conda + sha256: adb2dde5b4f7da70ae81309cce6188ed3286ff280355cf1931b45d91164d2ad8 + md5: 5a5870a74432aa332f7d32180633ad05 + depends: + - python >=3.9 + license: MIT AND PSF-2.0 + size: 10693 + timestamp: 1733344619659 +- kind: conda + name: platformdirs + version: 4.3.6 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 20448 + timestamp: 1733232756001 +- kind: conda + name: plotly + version: 5.24.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/plotly-5.24.1-pyhd8ed1ab_1.conda + sha256: d1bbf2d80105bfc8a7ed9817888f4a1686ed393d6435572921add09cc9347c1c + md5: 71ac632876630091c81c50a05ec5e030 + depends: + - packaging + - python >=3.9 + - tenacity >=6.2.0 + constrains: + - ipywidgets >=7.6 + license: MIT + license_family: MIT + size: 8022748 + timestamp: 1733733328161 +- kind: conda + name: polars + version: 1.17.1 + build: py312hda0fa55_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/polars-1.17.1-py312hda0fa55_0.conda + sha256: 0ffd14a4f73ee1b24b2342a84295f8fb5f1848711865d55676515a1aac66f554 + md5: 7ac74b8f85b43224508108f850617dad + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - numpy >=1.16.0 + - packaging + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 25634166 + timestamp: 1733806684601 +- kind: conda + name: prometheus_client + version: 0.21.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/prometheus_client-0.21.1-pyhd8ed1ab_0.conda + sha256: bc8f00d5155deb7b47702cb8370f233935704100dbc23e30747c161d1b6cf3ab + md5: 3e01e386307acc60b2f89af0b2e161aa + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 49002 + timestamp: 1733327434163 +- kind: conda + name: prompt-toolkit + version: 3.0.48 + build: pyha770c72_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/prompt-toolkit-3.0.48-pyha770c72_1.conda + sha256: 79fb7d1eeb490d4cc1b79f781bb59fe302ae38cf0a30907ecde75a7d399796cc + md5: 368d4aa48358439e07a97ae237491785 + depends: + - python >=3.9 + - wcwidth + constrains: + - prompt_toolkit 3.0.48 + license: BSD-3-Clause + license_family: BSD + size: 269848 + timestamp: 1733302634979 +- kind: conda + name: prompt_toolkit + version: 3.0.48 + build: hd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/prompt_toolkit-3.0.48-hd8ed1ab_1.conda + sha256: e4dd1b4eb467589edd51981c341d8ae0b3a71814541bd5fdcf0e55b5be22c4c0 + md5: bf730bb1f201e3f5a961c1fb2ffc4f05 + depends: + - prompt-toolkit >=3.0.48,<3.0.49.0a0 + license: BSD-3-Clause + license_family: BSD + size: 6634 + timestamp: 1733302636477 +- kind: conda + name: psutil + version: 6.1.1 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/psutil-6.1.1-py312h66e93f0_0.conda + sha256: 55d4fd0b294aeada0d7810fcc25503b59ec34c4390630789bd61c085b9ce649f + md5: add2c79595fa8a9b6d653d7e4e2cf05f + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: BSD-3-Clause + license_family: BSD + size: 487053 + timestamp: 1735327468212 +- kind: conda + name: ptyprocess + version: 0.7.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/ptyprocess-0.7.0-pyhd8ed1ab_1.conda + sha256: a7713dfe30faf17508ec359e0bc7e0983f5d94682492469bd462cdaae9c64d83 + md5: 7d9daffbb8d8e0af0f769dbbcd173a54 + depends: + - python >=3.9 + license: ISC + size: 19457 + timestamp: 1733302371990 +- kind: conda + name: pure_eval + version: 0.2.3 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pure_eval-0.2.3-pyhd8ed1ab_1.conda + sha256: 71bd24600d14bb171a6321d523486f6a06f855e75e547fa0cb2a0953b02047f0 + md5: 3bfdfb8dbcdc4af1ae3f9a8eb3948f04 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16668 + timestamp: 1733569518868 +- kind: conda + name: pyarrow + version: 18.1.0 + build: py312h7900ff3_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-18.1.0-py312h7900ff3_0.conda + sha256: 46a61c29375d3bf1933eae61c7861394c168898915d59fc99bf05e46de2ff5ad + md5: ac65b70df28687c6af4270923c020bdd + depends: + - libarrow-acero 18.1.0.* + - libarrow-dataset 18.1.0.* + - libarrow-substrait 18.1.0.* + - libparquet 18.1.0.* + - pyarrow-core 18.1.0 *_0_* + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: APACHE + size: 25213 + timestamp: 1732610785600 +- kind: conda + name: pyarrow-core + version: 18.1.0 + build: py312h01725c0_0_cpu + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyarrow-core-18.1.0-py312h01725c0_0_cpu.conda + sha256: 948a4161c56f846d374a3721a657e58ddbc992a29b3b3e7a6411975c30361d94 + md5: ee80934a6c280ff8635f8db5dec11e04 + depends: + - __glibc >=2.17,<3.0.a0 + - libarrow 18.1.0.* *cpu + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - numpy >=1.21,<3 + - apache-arrow-proc =*=cpu + license: Apache-2.0 + license_family: APACHE + size: 4612916 + timestamp: 1732610377259 +- kind: conda + name: pycparser + version: '2.22' + build: pyh29332c3_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda + sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 + md5: 12c566707c80111f9799308d9e265aef + depends: + - python >=3.9 + - python + license: BSD-3-Clause + license_family: BSD + size: 110100 + timestamp: 1733195786147 +- kind: conda + name: pygments + version: 2.18.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pygments-2.18.0-pyhd8ed1ab_1.conda + sha256: 0d6133545f268b2b89c2617c196fc791f365b538d4057ecd636d658c3b1e885d + md5: b38dc0206e2a530e5c2cf11dc086b31a + depends: + - python >=3.9 + license: BSD-2-Clause + license_family: BSD + size: 876700 + timestamp: 1733221731178 +- kind: conda + name: pysocks + version: 1.7.1 + build: pyha55dd90_7 + build_number: 7 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha55dd90_7.conda + sha256: ba3b032fa52709ce0d9fd388f63d330a026754587a2f461117cac9ab73d8d0d8 + md5: 461219d1a5bd61342293efa2c0c90eac + depends: + - __unix + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 21085 + timestamp: 1733217331982 +- kind: conda + name: python + version: 3.12.8 + build: h9e4cc4f_1_cpython + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.8-h9e4cc4f_1_cpython.conda + sha256: 3f0e0518c992d8ccfe62b189125721309836fe48a010dc424240583e157f9ff0 + md5: 7fd2fd79436d9b473812f14e86746844 + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + size: 31565686 + timestamp: 1733410597922 +- kind: conda + name: python-dateutil + version: 2.9.0.post0 + build: pyhff2d567_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e + depends: + - python >=3.9 + - six >=1.5 + license: Apache-2.0 + license_family: APACHE + size: 222505 + timestamp: 1733215763718 +- kind: conda + name: python-fastjsonschema + version: 2.21.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-fastjsonschema-2.21.1-pyhd8ed1ab_0.conda + sha256: 1b09a28093071c1874862422696429d0d35bd0b8420698003ac004746c5e82a2 + md5: 38e34d2d1d9dca4fb2b9a0a04f604e2c + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 226259 + timestamp: 1733236073335 +- kind: conda + name: python-json-logger + version: 2.0.7 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-json-logger-2.0.7-pyhd8ed1ab_0.conda + sha256: 4790787fe1f4e8da616edca4acf6a4f8ed4e7c6967aa31b920208fc8f95efcca + md5: a61bf9ec79426938ff785eb69dbb1960 + depends: + - python >=3.6 + license: BSD-2-Clause + license_family: BSD + size: 13383 + timestamp: 1677079727691 +- kind: conda + name: python-tzdata + version: '2024.2' + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/python-tzdata-2024.2-pyhd8ed1ab_1.conda + sha256: 57c9a02ec25926fb48edca59b9ede107823e5d5c473b94a0e05cc0b9a193a642 + md5: c0def296b2f6d2dd7b030c2a7f66bb1f + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 142235 + timestamp: 1733235414217 +- kind: conda + name: python_abi + version: '3.12' + build: 5_cp312 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda + sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 + md5: 0424ae29b104430108f5218a66db7260 + constrains: + - python 3.12.* *_cpython + license: BSD-3-Clause + license_family: BSD + size: 6238 + timestamp: 1723823388266 +- kind: conda + name: pytz + version: '2024.1' + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/pytz-2024.1-pyhd8ed1ab_0.conda + sha256: 1a7d6b233f7e6e3bbcbad054c8fd51e690a67b129a899a056a5e45dd9f00cb41 + md5: 3eeeeb9e4827ace8c0c1419c85d590ad + depends: + - python >=3.7 + license: MIT + license_family: MIT + size: 188538 + timestamp: 1706886944988 +- kind: conda + name: pyyaml + version: 6.0.2 + build: py312h66e93f0_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa + md5: 549e5930e768548a89c23f595dac5a95 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - yaml >=0.2.5,<0.3.0a0 + license: MIT + license_family: MIT + size: 206553 + timestamp: 1725456256213 +- kind: conda + name: pyzmq + version: 26.2.0 + build: py312hbf22597_3 + build_number: 3 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/pyzmq-26.2.0-py312hbf22597_3.conda + sha256: bc303f9b11e04a515f79cd5ad3bfa0e84b9dfec76552626d6263b38789fe6678 + md5: 746ce19f0829ec3e19c93007b1a224d3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zeromq >=4.3.5,<4.4.0a0 + license: BSD-3-Clause + license_family: BSD + size: 378126 + timestamp: 1728642454632 +- kind: conda + name: re2 + version: 2024.07.02 + build: h9925aae_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/re2-2024.07.02-h9925aae_2.conda + sha256: d213c44958d49ce7e0d4d5b81afec23640cce5016685dbb2d23571a99caa4474 + md5: e84ddf12bde691e8ec894b00ea829ddf + depends: + - libre2-11 2024.07.02 hbbce691_2 + license: BSD-3-Clause + license_family: BSD + size: 26786 + timestamp: 1735541074034 +- kind: conda + name: readline + version: '8.2' + build: h8228510_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 281456 + timestamp: 1679532220005 +- kind: conda + name: referencing + version: 0.35.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/referencing-0.35.1-pyhd8ed1ab_1.conda + sha256: f972eecb4dc8e06257af37642f92b0f2df04a7fe4c950f2e1045505e5e93985f + md5: 8c9083612c1bfe6878715ed5732605f8 + depends: + - attrs >=22.2.0 + - python >=3.9 + - rpds-py >=0.7.0 + license: MIT + license_family: MIT + size: 42201 + timestamp: 1733366868091 +- kind: conda + name: requests + version: 2.32.3 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_1.conda + sha256: d701ca1136197aa121bbbe0e8c18db6b5c94acbd041c2b43c70e5ae104e1d8ad + md5: a9b9368f3701a417eac9edbcae7cb737 + depends: + - certifi >=2017.4.17 + - charset-normalizer >=2,<4 + - idna >=2.5,<4 + - python >=3.9 + - urllib3 >=1.21.1,<3 + constrains: + - chardet >=3.0.2,<6 + license: Apache-2.0 + license_family: APACHE + size: 58723 + timestamp: 1733217126197 +- kind: conda + name: rfc3339-validator + version: 0.1.4 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rfc3339-validator-0.1.4-pyhd8ed1ab_1.conda + sha256: 2e4372f600490a6e0b3bac60717278448e323cab1c0fecd5f43f7c56535a99c5 + md5: 36de09a8d3e5d5e6f4ee63af49e59706 + depends: + - python >=3.9 + - six + license: MIT + license_family: MIT + size: 10209 + timestamp: 1733600040800 +- kind: conda + name: rfc3986-validator + version: 0.1.1 + build: pyh9f0ad1d_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/rfc3986-validator-0.1.1-pyh9f0ad1d_0.tar.bz2 + sha256: 2a5b495a1de0f60f24d8a74578ebc23b24aa53279b1ad583755f223097c41c37 + md5: 912a71cc01012ee38e6b90ddd561e36f + depends: + - python + license: MIT + license_family: MIT + size: 7818 + timestamp: 1598024297745 +- kind: conda + name: rpds-py + version: 0.22.3 + build: py312h12e396e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/rpds-py-0.22.3-py312h12e396e_0.conda + sha256: e8662d21ca3c912ac8941725392b838a29458b106ef22d9489cdf0f8de145fad + md5: bfb49da0cc9098597d527def04d66f8b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + constrains: + - __glibc >=2.17 + license: MIT + license_family: MIT + size: 354410 + timestamp: 1733366814237 +- kind: conda + name: s2n + version: 1.5.10 + build: hb5b8611_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/s2n-1.5.10-hb5b8611_0.conda + sha256: f6d451821fddc26b93f45e9313e1ea15e09e5ef049d4e137413a5225d2a5dfba + md5: 999f3673f2a011f59287f2969e3749e4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + license: Apache-2.0 + license_family: Apache + size: 355142 + timestamp: 1734415467047 +- kind: conda + name: send2trash + version: 1.8.3 + build: pyh0d859eb_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/send2trash-1.8.3-pyh0d859eb_1.conda + sha256: 00926652bbb8924e265caefdb1db100f86a479e8f1066efe395d5552dde54d02 + md5: 938c8de6b9de091997145b3bf25cdbf9 + depends: + - __linux + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 22736 + timestamp: 1733322148326 +- kind: conda + name: setuptools + version: 75.6.0 + build: pyhff2d567_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda + sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 + md5: fc80f7995e396cbaeabd23cf46c413dc + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 774252 + timestamp: 1732632769210 +- kind: conda + name: six + version: 1.17.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 16385 + timestamp: 1733381032766 +- kind: conda + name: snappy + version: 1.2.1 + build: h8bd8927_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + license: BSD-3-Clause + license_family: BSD + size: 42739 + timestamp: 1733501881851 +- kind: conda + name: sniffio + version: 1.3.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/sniffio-1.3.1-pyhd8ed1ab_1.conda + sha256: c2248418c310bdd1719b186796ae50a8a77ce555228b6acd32768e2543a15012 + md5: bf7a226e58dfb8346c70df36065d86c9 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: Apache + size: 15019 + timestamp: 1733244175724 +- kind: conda + name: soupsieve + version: '2.5' + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/soupsieve-2.5-pyhd8ed1ab_1.conda + sha256: 54ae221033db8fbcd4998ccb07f3c3828b4d77e73b0c72b18c1d6a507059059c + md5: 3f144b2c34f8cb5a9abd9ed23a39c561 + depends: + - python >=3.8 + license: MIT + license_family: MIT + size: 36754 + timestamp: 1693929424267 +- kind: conda + name: stack_data + version: 0.6.3 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/stack_data-0.6.3-pyhd8ed1ab_1.conda + sha256: 570da295d421661af487f1595045760526964f41471021056e993e73089e9c41 + md5: b1b505328da7a6b246787df4b5a49fbc + depends: + - asttokens + - executing + - pure_eval + - python >=3.9 + license: MIT + license_family: MIT + size: 26988 + timestamp: 1733569565672 +- kind: conda + name: tenacity + version: 9.0.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tenacity-9.0.0-pyhd8ed1ab_1.conda + sha256: dcf2155fb959773fb102066bfab8e7d79aff67054d142716979274a43fc85735 + md5: a09f66fe95a54a92172e56a4a97ba271 + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 24808 + timestamp: 1733649153624 +- kind: conda + name: terminado + version: 0.18.1 + build: pyh0d859eb_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/terminado-0.18.1-pyh0d859eb_0.conda + sha256: b300557c0382478cf661ddb520263508e4b3b5871b471410450ef2846e8c352c + md5: efba281bbdae5f6b0a1d53c6d4a97c93 + depends: + - __linux + - ptyprocess + - python >=3.8 + - tornado >=6.1.0 + license: BSD-2-Clause + license_family: BSD + size: 22452 + timestamp: 1710262728753 +- kind: conda + name: tinycss2 + version: 1.4.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tinycss2-1.4.0-pyhd8ed1ab_0.conda + sha256: cad582d6f978276522f84bd209a5ddac824742fe2d452af6acf900f8650a73a2 + md5: f1acf5fdefa8300de697982bcb1761c9 + depends: + - python >=3.5 + - webencodings >=0.4 + license: BSD-3-Clause + license_family: BSD + size: 28285 + timestamp: 1729802975370 +- kind: conda + name: tk + version: 8.6.13 + build: noxft_h4845f30_101 + build_number: 101 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- kind: conda + name: tomli + version: 2.2.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e + md5: ac944244f1fed2eb49bae07193ae8215 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 19167 + timestamp: 1733256819729 +- kind: conda + name: tornado + version: 6.4.2 + build: py312h66e93f0_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda + sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 + md5: e417822cb989e80a0d2b1b576fdd1657 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + license: Apache-2.0 + license_family: Apache + size: 840414 + timestamp: 1732616043734 +- kind: conda + name: traitlets + version: 5.14.3 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/traitlets-5.14.3-pyhd8ed1ab_1.conda + sha256: f39a5620c6e8e9e98357507262a7869de2ae8cc07da8b7f84e517c9fd6c2b959 + md5: 019a7385be9af33791c989871317e1ed + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 110051 + timestamp: 1733367480074 +- kind: conda + name: types-python-dateutil + version: 2.9.0.20241206 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/types-python-dateutil-2.9.0.20241206-pyhd8ed1ab_0.conda + sha256: 8b98cd9464837174ab58aaa912fc95d5831879864676650a383994033533b8d1 + md5: 1dbc4a115e2ad9fb7f9d5b68397f66f9 + depends: + - python >=3.9 + license: Apache-2.0 AND MIT + size: 22104 + timestamp: 1733612458611 +- kind: conda + name: typing-extensions + version: 4.12.2 + build: hd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing-extensions-4.12.2-hd8ed1ab_1.conda + sha256: c8e9c1c467b5f960b627d7adc1c65fece8e929a3de89967e91ef0f726422fd32 + md5: b6a408c64b78ec7b779a3e5c7a902433 + depends: + - typing_extensions 4.12.2 pyha770c72_1 + license: PSF-2.0 + license_family: PSF + size: 10075 + timestamp: 1733188758872 +- kind: conda + name: typing_extensions + version: 4.12.2 + build: pyha770c72_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 + md5: d17f13df8b65464ca316cbc000a3cb64 + depends: + - python >=3.9 + license: PSF-2.0 + license_family: PSF + size: 39637 + timestamp: 1733188758212 +- kind: conda + name: typing_utils + version: 0.1.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/typing_utils-0.1.0-pyhd8ed1ab_1.conda + sha256: 3088d5d873411a56bf988eee774559335749aed6f6c28e07bf933256afb9eb6c + md5: f6d7aa696c67756a650e91e15e88223c + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 15183 + timestamp: 1733331395943 +- kind: conda + name: tzdata + version: 2024b + build: hc8b5060_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf + md5: 8ac3367aafb1cc0a068483c580af8015 + license: LicenseRef-Public-Domain + size: 122354 + timestamp: 1728047496079 +- kind: conda + name: uri-template + version: 1.3.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/uri-template-1.3.0-pyhd8ed1ab_1.conda + sha256: e0eb6c8daf892b3056f08416a96d68b0a358b7c46b99c8a50481b22631a4dfc0 + md5: e7cb0f5745e4c5035a460248334af7eb + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 23990 + timestamp: 1733323714454 +- kind: conda + name: urllib3 + version: 2.3.0 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.3.0-pyhd8ed1ab_0.conda + sha256: 114919ffa80c328127dab9c8e7a38f9d563c617691fb81fccb11c1e86763727e + md5: 32674f8dbfb7b26410ed580dd3c10a29 + depends: + - brotli-python >=1.0.9 + - h2 >=4,<5 + - pysocks >=1.5.6,<2.0,!=1.5.7 + - python >=3.9 + - zstandard >=0.18.0 + license: MIT + license_family: MIT + size: 100102 + timestamp: 1734859520452 +- kind: conda + name: uv + version: 0.5.14 + build: h0f3a69f_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/uv-0.5.14-h0f3a69f_0.conda + sha256: fb9e6a0b92e2d694afd3f5926de1c631a6f86897494527c0792374d8d96859b3 + md5: 37aa0d278aeb3a71a2016c7684fc5a6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - __glibc >=2.17 + license: Apache-2.0 OR MIT + size: 10851448 + timestamp: 1735852602867 +- kind: conda + name: wcwidth + version: 0.2.13 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/wcwidth-0.2.13-pyhd8ed1ab_1.conda + sha256: f21e63e8f7346f9074fd00ca3b079bd3d2fa4d71f1f89d5b6934bf31446dc2a5 + md5: b68980f2495d096e71c7fd9d7ccf63e6 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 32581 + timestamp: 1733231433877 +- kind: conda + name: webcolors + version: 24.11.1 + build: pyhd8ed1ab_0 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/webcolors-24.11.1-pyhd8ed1ab_0.conda + sha256: 08315dc2e61766a39219b2d82685fc25a56b2817acf84d5b390176080eaacf99 + md5: b49f7b291e15494aafb0a7d74806f337 + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 18431 + timestamp: 1733359823938 +- kind: conda + name: webencodings + version: 0.5.1 + build: pyhd8ed1ab_3 + build_number: 3 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/webencodings-0.5.1-pyhd8ed1ab_3.conda + sha256: 19ff205e138bb056a46f9e3839935a2e60bd1cf01c8241a5e172a422fed4f9c6 + md5: 2841eb5bfc75ce15e9a0054b98dcd64d + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 15496 + timestamp: 1733236131358 +- kind: conda + name: websocket-client + version: 1.8.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/websocket-client-1.8.0-pyhd8ed1ab_1.conda + sha256: 1dd84764424ffc82030c19ad70607e6f9e3b9cb8e633970766d697185652053e + md5: 84f8f77f0a9c6ef401ee96611745da8f + depends: + - python >=3.9 + license: Apache-2.0 + license_family: APACHE + size: 46718 + timestamp: 1733157432924 +- kind: conda + name: widgetsnbextension + version: 4.0.13 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/widgetsnbextension-4.0.13-pyhd8ed1ab_1.conda + sha256: a750202ae2a31d8e5ee5a5c127fcc7fa783cd0fbedbc0bf1ab549a109881fa9f + md5: 237db148cc37a466e4222d589029b53e + depends: + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 898402 + timestamp: 1733128654300 +- kind: conda + name: yaml + version: 0.2.5 + build: h7f98852_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + size: 89141 + timestamp: 1641346969816 +- kind: conda + name: zeromq + version: 4.3.5 + build: h3b0a872_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zeromq-4.3.5-h3b0a872_7.conda + sha256: a4dc72c96848f764bb5a5176aa93dd1e9b9e52804137b99daeebba277b31ea10 + md5: 3947a35e916fcc6b9825449affbf4214 + depends: + - __glibc >=2.17,<3.0.a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libsodium >=1.0.20,<1.0.21.0a0 + - libstdcxx >=13 + license: MPL-2.0 + license_family: MOZILLA + size: 335400 + timestamp: 1731585026517 +- kind: conda + name: zipp + version: 3.21.0 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/zipp-3.21.0-pyhd8ed1ab_1.conda + sha256: 567c04f124525c97a096b65769834b7acb047db24b15a56888a322bf3966c3e1 + md5: 0c3cc595284c5e8f0f9900a9b228a332 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 21809 + timestamp: 1732827613585 +- kind: conda + name: zstandard + version: 0.23.0 + build: py312hef9b889_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda + sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b + md5: 8b7069e9792ee4e5b4919a7a306d2e67 + depends: + - __glibc >=2.17,<3.0.a0 + - cffi >=1.11 + - libgcc >=13 + - python >=3.12,<3.13.0a0 + - python_abi 3.12.* *_cp312 + - zstd >=1.5.6,<1.5.7.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: BSD-3-Clause + license_family: BSD + size: 419552 + timestamp: 1725305670210 +- kind: conda + name: zstd + version: 1.5.6 + build: ha6fb4c9_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: BSD-3-Clause + license_family: BSD + size: 554846 + timestamp: 1714722996770 diff --git a/minimappers2/example/pixi.toml b/minimappers2/example/pixi.toml new file mode 100644 index 0000000..cefd702 --- /dev/null +++ b/minimappers2/example/pixi.toml @@ -0,0 +1,20 @@ +[project] +authors = ["Joseph Guhlin "] +channels = ["conda-forge", "bioconda"] +description = "Add a short description here" +name = "example" +platforms = ["linux-64"] +version = "0.1.0" + +[tasks] + +[dependencies] +maturin = ">=1.8.1,<2" +uv = ">=0.5.14,<0.6" +jupyter = ">=1.1.1,<2" +jupyterlab = ">=4.3.4,<5" +polars = ">=1.17.1,<2" +pandas = ">=2.2.3,<3" +pyarrow = ">=18.1.0,<19" +plotly = ">=5.24.1,<6" +needletail = ">=0.6.1,<0.7" diff --git a/minimappers2/pixi.lock b/minimappers2/pixi.lock new file mode 100644 index 0000000..0f77ae7 --- /dev/null +++ b/minimappers2/pixi.lock @@ -0,0 +1,454 @@ +version: 5 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.anaconda.org/bioconda/ + packages: + linux-64: + - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/maturin-1.8.1-py313he81eb93_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.1-ha99a958_102_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/uv-0.5.14-h0f3a69f_0.conda +packages: +- kind: conda + name: _libgcc_mutex + version: '0.1' + build: conda_forge + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 + sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 + md5: d7c89558ba9fa0495403155b64376d81 + license: None + size: 2562 + timestamp: 1578324546067 +- kind: conda + name: _openmp_mutex + version: '4.5' + build: 2_gnu + build_number: 16 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 + sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 + md5: 73aaf86a425cc6e73fcf236a5a46396d + depends: + - _libgcc_mutex 0.1 conda_forge + - libgomp >=7.5.0 + constrains: + - openmp_impl 9999 + license: BSD-3-Clause + license_family: BSD + size: 23621 + timestamp: 1650670423406 +- kind: conda + name: bzip2 + version: 1.0.8 + build: h4bc722e_7 + build_number: 7 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d + md5: 62ee74e96c5ebb0af99386de58cf9553 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: bzip2-1.0.6 + license_family: BSD + size: 252783 + timestamp: 1720974456583 +- kind: conda + name: ca-certificates + version: 2024.12.14 + build: hbcca054_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd + md5: 720523eb0d6a9b0f6120c16b2aa4e7de + license: ISC + size: 157088 + timestamp: 1734208393264 +- kind: conda + name: ld_impl_linux-64 + version: '2.43' + build: h712a8e2_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda + sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe + md5: 048b02e3962f066da18efe3a21b77672 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.43 + license: GPL-3.0-only + license_family: GPL + size: 669211 + timestamp: 1729655358674 +- kind: conda + name: libexpat + version: 2.6.4 + build: h5888daf_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda + sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 + md5: db833e03127376d461e1e13e76f09b6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - expat 2.6.4.* + license: MIT + license_family: MIT + size: 73304 + timestamp: 1730967041968 +- kind: conda + name: libffi + version: 3.4.2 + build: h7f98852_5 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + license: MIT + license_family: MIT + size: 58292 + timestamp: 1636488182923 +- kind: conda + name: libgcc + version: 14.2.0 + build: h77fa898_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 + md5: 3cb76c3f10d3bc7f1105b2fc9db984df + depends: + - _libgcc_mutex 0.1 conda_forge + - _openmp_mutex >=4.5 + constrains: + - libgomp 14.2.0 h77fa898_1 + - libgcc-ng ==14.2.0=*_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 848745 + timestamp: 1729027721139 +- kind: conda + name: libgcc-ng + version: 14.2.0 + build: h69a702a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda + sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 + md5: e39480b9ca41323497b05492a63bc35b + depends: + - libgcc 14.2.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 54142 + timestamp: 1729027726517 +- kind: conda + name: libgomp + version: 14.2.0 + build: h77fa898_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda + sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 + md5: cc3573974587f12dda90d96e3e55a702 + depends: + - _libgcc_mutex 0.1 conda_forge + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 460992 + timestamp: 1729027639220 +- kind: conda + name: liblzma + version: 5.6.3 + build: hb9d3cd8_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: 0BSD + size: 111132 + timestamp: 1733407410083 +- kind: conda + name: libmpdec + version: 4.0.0 + build: h4bc722e_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda + sha256: d02d1d3304ecaf5c728e515eb7416517a0b118200cd5eacbe829c432d1664070 + md5: aeb98fdeb2e8f25d43ef71fbacbeec80 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: BSD-2-Clause + license_family: BSD + size: 89991 + timestamp: 1723817448345 +- kind: conda + name: libsqlite + version: 3.47.2 + build: hee588c1_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + license: Unlicense + size: 873551 + timestamp: 1733761824646 +- kind: conda + name: libstdcxx + version: 14.2.0 + build: hc0a3c3a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 + md5: 234a5554c53625688d51062645337328 + depends: + - libgcc 14.2.0 h77fa898_1 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3893695 + timestamp: 1729027746910 +- kind: conda + name: libuuid + version: 2.38.1 + build: h0b41bf4_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 + md5: 40b61aab5c7ba9ff276c41cfffe6b80b + depends: + - libgcc-ng >=12 + license: BSD-3-Clause + license_family: BSD + size: 33601 + timestamp: 1680112270483 +- kind: conda + name: libzlib + version: 1.3.1 + build: hb9d3cd8_2 + build_number: 2 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - zlib 1.3.1 *_2 + license: Zlib + license_family: Other + size: 60963 + timestamp: 1727963148474 +- kind: conda + name: maturin + version: 1.8.1 + build: py313he81eb93_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/maturin-1.8.1-py313he81eb93_0.conda + sha256: 5a11d25fd598f431854af21e37ad6e6c8c1b7839b031bb996ea9c515791c4c3d + md5: df8a17901af80c9d6eafabaeefdbdbd4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - openssl >=3.4.0,<4.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - tomli >=1.1.0 + license: MIT + license_family: MIT + size: 6439979 + timestamp: 1735612570780 +- kind: conda + name: ncurses + version: '6.5' + build: he02047a_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a + md5: 70caf8bb6cf39a0b6b7efc885f51c0fe + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + license: X11 AND BSD-3-Clause + size: 889086 + timestamp: 1724658547447 +- kind: conda + name: openssl + version: 3.4.0 + build: h7b32b05_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-h7b32b05_1.conda + sha256: f62f6bca4a33ca5109b6d571b052a394d836956d21b25b7ffd03376abf7a481f + md5: 4ce6875f75469b2757a65e10a5d05e31 + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=13 + license: Apache-2.0 + license_family: Apache + size: 2937158 + timestamp: 1736086387286 +- kind: conda + name: python + version: 3.13.1 + build: ha99a958_102_cp313 + build_number: 102 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.1-ha99a958_102_cp313.conda + sha256: b10f25c5edc203d15b3f54861bec4868b8200ebc16c8cbc82202e4c8da2b183e + md5: 6e7535f1d1faf524e9210d2689b3149b + depends: + - __glibc >=2.17,<3.0.a0 + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + license: Python-2.0 + size: 33263183 + timestamp: 1733436074842 +- kind: conda + name: python_abi + version: '3.13' + build: 5_cp313 + build_number: 5 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda + sha256: 438225b241c5f9bddae6f0178a97f5870a89ecf927dfca54753e689907331442 + md5: 381bbd2a92c863f640a55b6ff3c35161 + constrains: + - python 3.13.* *_cp313 + license: BSD-3-Clause + license_family: BSD + size: 6217 + timestamp: 1723823393322 +- kind: conda + name: readline + version: '8.2' + build: h8228510_1 + build_number: 1 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda + sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 + md5: 47d31b792659ce70f470b5c82fdfb7a4 + depends: + - libgcc-ng >=12 + - ncurses >=6.3,<7.0a0 + license: GPL-3.0-only + license_family: GPL + size: 281456 + timestamp: 1679532220005 +- kind: conda + name: tk + version: 8.6.13 + build: noxft_h4845f30_101 + build_number: 101 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- kind: conda + name: tomli + version: 2.2.1 + build: pyhd8ed1ab_1 + build_number: 1 + subdir: noarch + noarch: python + url: https://conda.anaconda.org/conda-forge/noarch/tomli-2.2.1-pyhd8ed1ab_1.conda + sha256: 18636339a79656962723077df9a56c0ac7b8a864329eb8f847ee3d38495b863e + md5: ac944244f1fed2eb49bae07193ae8215 + depends: + - python >=3.9 + license: MIT + license_family: MIT + size: 19167 + timestamp: 1733256819729 +- kind: conda + name: tzdata + version: 2024b + build: hc8b5060_0 + subdir: noarch + noarch: generic + url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf + md5: 8ac3367aafb1cc0a068483c580af8015 + license: LicenseRef-Public-Domain + size: 122354 + timestamp: 1728047496079 +- kind: conda + name: uv + version: 0.5.14 + build: h0f3a69f_0 + subdir: linux-64 + url: https://conda.anaconda.org/conda-forge/linux-64/uv-0.5.14-h0f3a69f_0.conda + sha256: fb9e6a0b92e2d694afd3f5926de1c631a6f86897494527c0792374d8d96859b3 + md5: 37aa0d278aeb3a71a2016c7684fc5a6c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + constrains: + - __glibc >=2.17 + license: Apache-2.0 OR MIT + size: 10851448 + timestamp: 1735852602867 diff --git a/minimappers2/pixi.toml b/minimappers2/pixi.toml new file mode 100644 index 0000000..a1152e6 --- /dev/null +++ b/minimappers2/pixi.toml @@ -0,0 +1,13 @@ +[project] +authors = ["Joseph Guhlin "] +channels = ["conda-forge", "bioconda"] +description = "Add a short description here" +name = "minimappers2" +platforms = ["linux-64"] +version = "0.1.0" + +[tasks] + +[dependencies] +uv = ">=0.5.14,<0.6" +maturin = ">=1.8.1,<2" diff --git a/minimappers2/pyproject.toml b/minimappers2/pyproject.toml index 85a10e7..9219a3d 100644 --- a/minimappers2/pyproject.toml +++ b/minimappers2/pyproject.toml @@ -13,16 +13,17 @@ license = { file = "LICENSE" } description = "A Python wrapper for minimap2-rs" keywords = ["minimap2", "bioinformatics", "alignment", "mapping"] dependencies = [ - "polars>=0.15.15", - "pyarrow>=10.0.1", + "polars>=1.19.0", + "pyarrow>=18.1.0", ] +version = "0.1.7" [project.urls] homepage = "https://github.com/jguhlin/minimap2-rs" repository = "https://github.com/jguhlin/minimap2-rs" [build-system] -requires = ["maturin>=0.14,<0.15"] +requires = ["maturin>=1.8"] build-backend = "maturin" [tool.maturin] diff --git a/minimappers2/src/lib.rs b/minimappers2/src/lib.rs index 1be00c3..b4a3f8a 100644 --- a/minimappers2/src/lib.rs +++ b/minimappers2/src/lib.rs @@ -36,10 +36,152 @@ impl Sequence { } } +#[derive(Clone)] +#[pyclass] +pub struct AlignerBuilder { + pub builder: minimap2::Aligner, +} + +impl AlignerBuilder { + fn preset(preset: Preset) -> Self { + let builder = minimap2::Aligner::builder(); + let builder = builder.preset(preset); + AlignerBuilder { builder } + } +} + +#[pymethods] +impl AlignerBuilder { + #[staticmethod] + fn lrhq() -> Self { + AlignerBuilder::preset(Preset::LrHq) + } + + #[staticmethod] + fn lrhqae() -> Self { + AlignerBuilder::preset(Preset::LrHqae) + } + + /// Configure Aligner for Splice + #[staticmethod] + fn splice() -> Self { + AlignerBuilder::preset(Preset::Splice) + } + + #[staticmethod] + fn splicehq() -> Self { + AlignerBuilder::preset(Preset::SpliceHq) + } + + /// Configure aligner for Asm + #[staticmethod] + fn asm() -> Self { + AlignerBuilder::preset(Preset::Asm) + } + + /// Configure Aligner for Asm5 + #[staticmethod] + fn asm5() -> Self { + AlignerBuilder::preset(Preset::Asm5) + } + + /// Configure Aligner for Asm10 + #[staticmethod] + fn asm10() -> Self { + AlignerBuilder::preset(Preset::Asm10) + } + + /// Configure Aligner for Asm20 + #[staticmethod] + fn asm20() -> Self { + AlignerBuilder::preset(Preset::Asm20) + } + + // Convenience Functions, at the bottom, because it pollutes the namespace + /// Configure Aligner for ONT reads + #[staticmethod] + fn map_ont() -> Self { + AlignerBuilder::preset(Preset::MapOnt) + } + + /// Configure Aligner for PacBio HIFI reads + #[staticmethod] + fn map_hifi() -> Self { + AlignerBuilder::preset(Preset::MapHifi) + } + + /// Configure aligner for AvaOnt + #[staticmethod] + fn ava_ont() -> Self { + AlignerBuilder::preset(Preset::AvaOnt) + } + + /// Configure aligner for Map10k + #[staticmethod] + fn map_10k() -> Self { + AlignerBuilder::preset(Preset::Map10k) + } + + /// Configure aligner for AvaPb + #[staticmethod] + fn ava_pb() -> Self { + AlignerBuilder::preset(Preset::AvaPb) + } + + /// Configure Aligner for Short + #[staticmethod] + fn short() -> Self { + AlignerBuilder::preset(Preset::Short) + } + + /// Configure Aligner for Sr + #[staticmethod] + fn sr() -> Self { + AlignerBuilder::preset(Preset::Sr) + } + + /// Configure Aligner for Cdna + #[staticmethod] + fn cdna() -> Self { + AlignerBuilder::preset(Preset::Cdna) + } + + // Configuration options + /// Set the number of threads for minimap2 to use to build index and perform mapping + fn index_threads(&mut self, threads: usize) { + self.builder.threads = threads; + } + + /// Build the minimap2 index + fn index(&self, index: &str) -> PyResult { + let aligner = self.clone(); + let aligner = aligner.builder.set_index(index, None).expect("Unable to build or load index"); + + Ok(Aligner { aligner }) + } + + /// Index and save index for later reuse (pass in as index) + /// Minimap2 indices are typically stored with the extension .mmi + fn index_and_save(&self, index: &str, output: &str) -> Aligner { + let aligner = self.clone(); + let aligner = aligner.builder.set_index(index, Some(output)).expect("Unable to build or save index"); + Aligner { + aligner + } + } + + /// Enable CIGAR strings + fn cigar(&mut self) { + // Builder pattern doesn't work great with Python, so do it manually here... + assert!((self.builder.mapopt.flag & ffi::MM_F_CIGAR as i64) == 0); + self.builder.mapopt.flag |= ffi::MM_F_CIGAR as i64 | ffi::MM_F_OUT_CS as i64; + } +} + /// Wrapper around minimap2::Aligner #[pyclass] pub struct Aligner { - pub aligner: minimap2::Aligner, + pub aligner: minimap2::Aligner, } unsafe impl Send for Aligner {} @@ -53,10 +195,9 @@ impl Aligner { let results = self .aligner - .map(&seq.sequence, true, true, None, None) + .map(&seq.sequence, true, true, None, None, Some(&seq.id.as_bytes())) .unwrap(); - results.into_iter().for_each(|mut r| { - r.query_name = Some(seq.id.clone()); + results.into_iter().for_each(|r| { mappings.push(r) }); @@ -72,10 +213,9 @@ impl Aligner { for seq in seqs { let results = self .aligner - .map(&seq.sequence, true, true, None, None) + .map(&seq.sequence, true, true, None, None, Some(&seq.id.as_bytes())) .unwrap(); - results.into_iter().for_each(|mut r| { - r.query_name = Some(seq.id.clone()); + results.into_iter().for_each(|r| { mappings.push(r) }); } @@ -88,22 +228,17 @@ impl Aligner { let work_queue = Arc::clone(&work_queue); let results_queue = Arc::clone(&results_queue); - let mut aligner = self.aligner.clone(); + let aligner = self.aligner.clone(); let handle = std::thread::spawn(move || loop { - let backoff = crossbeam::utils::Backoff::new(); let work = work_queue.lock().unwrap().pop(); match work { Some(sequence) => { let mut result = aligner - .map(&sequence.sequence, true, true, None, None) + .map(&sequence.sequence, true, true, None, None, Some(&sequence.id.as_bytes())) .expect("Unable to align"); - result.iter_mut().for_each(|mut r| { - r.query_name = Some(sequence.id.clone()); - }); - results_queue.push(WorkQueue::Work(result)); } None => { @@ -147,273 +282,18 @@ impl Aligner { } } - // Builder functions - /// Returns an unconfigured Aligner - #[new] - fn new() -> Self { - Aligner { - aligner: minimap2::Aligner::builder(), - } - } - - /// Set the number of threads for minimap2 to use to build index and perform mapping - fn index_threads(&mut self, threads: usize) { + fn set_threads(&mut self, threads: usize) { self.aligner.threads = threads; } - - /// Build the minimap2 index - fn index(&mut self, index: &str) { - self.aligner.set_index(index, None); - } - - /// Index and save index to output - fn index_and_save(&mut self, index: &str, output: &str) { - self.aligner.set_index(index, Some(output)); - } - - /// Enable CIGAR strings - fn cigar(&mut self) { - // todo inefficient - let aligner = self.aligner.clone(); - self.aligner = aligner.with_cigar(); - } - - fn lrhq(&mut self) { - self.preset(Preset::LrHq); - } - - fn lrhqae(&mut self) { - self.preset(Preset::LrHqae); - } - - /// Configure Aligner for Splice - fn splice(&mut self) { - self.preset(Preset::Splice); - } - - /// Configure Aligner for Splice - fn splicehq(&mut self) { - self.preset(Preset::SpliceHq); - } - /// Configure aligner for Asm - fn asm(&mut self) { - self.preset(Preset::Asm); - } - - /// Configure Aligner for Asm5 - fn asm5(&mut self) { - self.preset(Preset::Asm5); - } - - /// Configure Aligner for Asm10 - fn asm10(&mut self) { - self.preset(Preset::Asm10); - } - - /// Configure Aligner for Asm20 - fn asm20(&mut self) { - self.preset(Preset::Asm20); - } - - // Convenience Functions, at the bottom, because it pollutes the namespace - /// Configure Aligner for ONT reads - fn map_ont(&mut self) { - self.preset(Preset::MapOnt); - } - - /// Configure Aligner for PacBio HIFI reads - fn map_hifi(&mut self) { - self.preset(Preset::MapHifi); - } - - /// Configure aligner for AvaOnt - fn ava_ont(&mut self) { - self.preset(Preset::AvaOnt); - } - - /// Configure aligner for Map10k - fn map_10k(&mut self) { - self.preset(Preset::Map10k); - } - - /// Configure aligner for AvaPb - fn ava_pb(&mut self) { - self.preset(Preset::AvaPb); - } - - /// Configure Aligner for Short - fn short(&mut self) { - self.preset(Preset::Short); - } - - /// Configure Aligner for Sr - fn sr(&mut self) { - self.preset(Preset::Sr); - } - - /// Configure Aligner for Cdna - fn cdna(&mut self) { - self.preset(Preset::Cdna); - } -} - -impl Aligner { - /// Create an aligner using a preset. - fn preset(&mut self, preset: Preset) { - // Set preset - let aligner = self.aligner.clone(); - self.aligner = aligner.preset(preset); - } -} - -/* -TODO - Destroy index when aligner is dropped or when new index is created -impl Drop for Aligner { - fn drop(&mut self) { - - } -} */ - -/// Return an LrHq aligner -#[pyfunction] -fn lrhq() -> PyResult { - let mut aligner = Aligner::new(); - aligner.lrhq(); - Ok(aligner) -} - -/// Return an LrHqae aligner -#[pyfunction] -fn lrhqae() -> PyResult { - let mut aligner = Aligner::new(); - aligner.lrhqae(); - Ok(aligner) -} - -/// Return a MapOnt aligner -#[pyfunction] -fn map_ont() -> PyResult { - let mut aligner = Aligner::new(); - aligner.map_ont(); - Ok(aligner) -} - -/// Return a MapHifi aligner -#[pyfunction] -fn map_hifi() -> PyResult { - let mut aligner = Aligner::new(); - aligner.map_hifi(); - Ok(aligner) -} - -/// Return a AvaOnt aligner -#[pyfunction] -fn ava_ont() -> PyResult { - let mut aligner = Aligner::new(); - aligner.ava_ont(); - Ok(aligner) -} - -/// Return a Map10k aligner -#[pyfunction] -fn map_10k() -> PyResult { - let mut aligner = Aligner::new(); - aligner.map_10k(); - Ok(aligner) -} - -/// Return a AvaPb aligner -#[pyfunction] -fn ava_pb() -> PyResult { - let mut aligner = Aligner::new(); - aligner.ava_pb(); - Ok(aligner) -} - -/// Return a Asm aligner -#[pyfunction] -fn asm() -> PyResult { - let mut aligner = Aligner::new(); - aligner.asm(); - Ok(aligner) -} - -/// Return a Asm5 aligner -#[pyfunction] -fn asm5() -> PyResult { - let mut aligner = Aligner::new(); - aligner.asm5(); - Ok(aligner) -} - -/// Return a Asm10 aligner -#[pyfunction] -fn asm10() -> PyResult { - let mut aligner = Aligner::new(); - aligner.asm10(); - Ok(aligner) -} - -/// Return a Asm20 aligner -#[pyfunction] -fn asm20() -> PyResult { - let mut aligner = Aligner::new(); - aligner.asm20(); - Ok(aligner) -} - -/// Return a Short aligner -#[pyfunction] -fn short() -> PyResult { - let mut aligner = Aligner::new(); - aligner.short(); - Ok(aligner) -} - -/// Return a Sr aligner -#[pyfunction] -fn sr() -> PyResult { - let mut aligner = Aligner::new(); - aligner.sr(); - Ok(aligner) -} - -/// Return a Splice aligner -#[pyfunction] -fn splice() -> PyResult { - let mut aligner = Aligner::new(); - aligner.splice(); - Ok(aligner) -} - -/// Return a Cdna aligner -#[pyfunction] -fn cdna() -> PyResult { - let mut aligner = Aligner::new(); - aligner.cdna(); - Ok(aligner) + } /// This module is implemented in Rust. #[pymodule] -fn minimappers2(py: Python<'_>, m: &PyModule) -> PyResult<()> { +fn minimappers2(m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_class::()?; m.add_class::()?; - m.add_function(wrap_pyfunction!(lrhq, m)?)?; - m.add_function(wrap_pyfunction!(lrhqae, m)?)?; - m.add_function(wrap_pyfunction!(map_ont, m)?)?; - m.add_function(wrap_pyfunction!(map_hifi, m)?)?; - m.add_function(wrap_pyfunction!(ava_ont, m)?)?; - m.add_function(wrap_pyfunction!(map_10k, m)?)?; - m.add_function(wrap_pyfunction!(ava_pb, m)?)?; - m.add_function(wrap_pyfunction!(asm, m)?)?; - m.add_function(wrap_pyfunction!(asm5, m)?)?; - m.add_function(wrap_pyfunction!(asm10, m)?)?; - m.add_function(wrap_pyfunction!(asm20, m)?)?; - m.add_function(wrap_pyfunction!(short, m)?)?; - m.add_function(wrap_pyfunction!(sr, m)?)?; - m.add_function(wrap_pyfunction!(splice, m)?)?; - m.add_function(wrap_pyfunction!(cdna, m)?)?; + m.add_class::()?; Ok(()) } @@ -438,12 +318,22 @@ struct Mappings { impl Mappings { pub fn push(&mut self, other: minimap2::Mapping) { - self.query_name.push(other.query_name); + let query_name = match other.query_name { + Some(x) => Some(x.to_string()), + None => None, + }; + + let target_name = match other.target_name { + Some(x) => Some(x.to_string()), + None => None, + }; + + self.query_name.push(query_name); self.query_len.push(other.query_len); self.query_start.push(other.query_start); self.query_end.push(other.query_end); self.strand.push(other.strand); - self.target_name.push(other.target_name); + self.target_name.push(target_name); self.target_len.push(other.target_len); self.target_start.push(other.target_start); self.target_end.push(other.target_end); @@ -527,44 +417,44 @@ impl Mappings { }) .collect(); - let query_name = Series::new("query_name", self.query_name); - let query_len = Series::new("query_len", query_len); - let query_start = Series::new("query_start", self.query_start); - let query_end = Series::new("query_end", self.query_end); - let strand = Series::new("strand", strand); - let target_name = Series::new("target_name", self.target_name); - let target_len = Series::new("target_len", self.target_len); - let target_start = Series::new("target_start", self.target_start); - let target_end = Series::new("target_end", self.target_end); - let match_len = Series::new("match_len", self.match_len); - let block_len = Series::new("block_len", self.block_len); - let mapq = Series::new("mapq", self.mapq); - let is_primary = Series::new("is_primary", self.is_primary); - let nm = Series::new("nm", nm); + let query_name = Series::new("query_name".into(), self.query_name); + let query_len = Series::new("query_len".into(), query_len); + let query_start = Series::new("query_start".into(), self.query_start); + let query_end = Series::new("query_end".into(), self.query_end); + let strand = Series::new("strand".into(), strand); + let target_name = Series::new("target_name".into(), self.target_name); + let target_len = Series::new("target_len".into(), self.target_len); + let target_start = Series::new("target_start".into(), self.target_start); + let target_end = Series::new("target_end".into(), self.target_end); + let match_len = Series::new("match_len".into(), self.match_len); + let block_len = Series::new("block_len".into(), self.block_len); + let mapq = Series::new("mapq".into(), self.mapq); + let is_primary = Series::new("is_primary".into(), self.is_primary); + let nm = Series::new("nm".into(), nm); // let cigar = Series::new("cigar", cigar); - let cigar_str = Series::new("cigar_str", cigar_str); - let md = Series::new("md", md); - let cs = Series::new("cs", cs); + let cigar_str = Series::new("cigar_str".into(), cigar_str); + let md = Series::new("md".into(), md); + let cs = Series::new("cs".into(), cs); DataFrame::new(vec![ - query_name, - query_len, - query_start, - query_end, - strand, - target_name, - target_len, - target_start, - target_end, - match_len, - block_len, - mapq, - is_primary, - nm, + query_name.into(), + query_len.into(), + query_start.into(), + query_end.into(), + strand.into(), + target_name.into(), + target_len.into(), + target_start.into(), + target_end.into(), + match_len.into(), + block_len.into(), + mapq.into(), + is_primary.into(), + nm.into(), // cigar, - cigar_str, - md, - cs, + cigar_str.into(), + md.into(), + cs.into(), ]) } } @@ -573,23 +463,6 @@ impl Mappings { mod tests { use crate::*; - #[test] - fn test_build_aligners() { - map_ont().expect("Failed to build minimap2 aligner"); - map_hifi().expect("Failed to build minimap2 aligner"); - ava_ont().expect("Failed to build minimap2 aligner"); - map_10k().expect("Failed to build minimap2 aligner"); - ava_pb().expect("Failed to build minimap2 aligner"); - asm().expect("Failed to build minimap2 aligner"); - asm5().expect("Failed to build minimap2 aligner"); - asm10().expect("Failed to build minimap2 aligner"); - asm20().expect("Failed to build minimap2 aligner"); - short().expect("Failed to build minimap2 aligner"); - sr().expect("Failed to build minimap2 aligner"); - splice().expect("Failed to build minimap2 aligner"); - cdna().expect("Failed to build minimap2 aligner"); - } - #[test] fn test_structs() { // Test seq building - disabled for now From a2eced6804d77d9cdc0294e425869803e35a3026 Mon Sep 17 00:00:00 2001 From: Joseph Guhlin Date: Wed, 8 Jan 2025 08:40:43 +1300 Subject: [PATCH 2/8] Add more examples --- minimappers2/example/Exampe.ipynb | 228 ++++++++++++++++++++++++++---- 1 file changed, 202 insertions(+), 26 deletions(-) diff --git a/minimappers2/example/Exampe.ipynb b/minimappers2/example/Exampe.ipynb index 3b1200d..4c09cb2 100644 --- a/minimappers2/example/Exampe.ipynb +++ b/minimappers2/example/Exampe.ipynb @@ -26,7 +26,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 3, "id": "d6716fcd-8758-49b1-ac65-25035bf6f33b", "metadata": {}, "outputs": [], @@ -42,7 +42,7 @@ }, { "cell_type": "code", - "execution_count": 9, + "execution_count": 4, "id": "48e43905-b24a-411c-9ae6-d149d8fe85f7", "metadata": {}, "outputs": [ @@ -69,7 +69,7 @@ "└───────────────────────┴───────────┴─────────────┴───────────┴───┴─────┴───────────┴─────┴──────┘" ] }, - "execution_count": 9, + "execution_count": 4, "metadata": {}, "output_type": "execute_result" } @@ -80,7 +80,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 5, "id": "fc6dfea8-9f32-4c22-aa0f-15e9f095eab2", "metadata": {}, "outputs": [], @@ -90,7 +90,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 6, "id": "d5a7378c-e878-4894-8840-4fcbc73cf72e", "metadata": {}, "outputs": [ @@ -104,7 +104,7 @@ " white-space: pre-wrap;\n", "}\n", "\n", - "shape: (20, 17)
query_namequery_lenquery_startquery_endstrandtarget_nametarget_lentarget_starttarget_endmatch_lenblock_lenmapqis_primarynmcigar_strmdcs
stru32i32i32strstri32i32i32i32i32u32booli32strstrstr
"test_read_18_464_4964"450004500"+""NC_012920.1"1656946449644499449960true1"4500M""4500"":4500"
"test_read_20_7090_12090"500005000"+""NC_012920.1"165697090120905000500060true0"5000M""5000"":5000"
"test_read_19_6386_11136"475004750"+""NC_012920.1"165696386111364750475060true0"4750M""4750"":4750"
"test_read_15_3439_7189"375003750"+""NC_012920.1"16569343971893750375060true0"3750M""3750"":3750"
"test_read_17_7993_12243"425004250"+""NC_012920.1"165697993122434250425060true0"4250M""4250"":4250"
"test_read_6_1033_2533"150001500"+""NC_012920.1"16569103325331500150060true0"1500M""1500"":1500"
"test_read_5_12513_13763"125001250"+""NC_012920.1"1656912513137631250125060true0"1250M""1250"":1250"
"test_read_1_2201_2451"2500250"+""NC_012920.1"165692201245125025060true0"250M""250"":250"
"test_read_3_13884_14634"7500750"+""NC_012920.1"16569138841463475075060true0"750M""750"":750"
"test_read_2_9325_9825"5000500"+""NC_012920.1"165699325982550050060true0"500M""500"":500"
" + "shape: (20, 17)
query_namequery_lenquery_startquery_endstrandtarget_nametarget_lentarget_starttarget_endmatch_lenblock_lenmapqis_primarynmcigar_strmdcs
stru32i32i32strstri32i32i32i32i32u32booli32strstrstr
"test_read_18_464_4964"450004500"+""NC_012920.1"1656946449644499449960true1"4500M""4500"":4500"
"test_read_20_7090_12090"500005000"+""NC_012920.1"165697090120905000500060true0"5000M""5000"":5000"
"test_read_19_6386_11136"475004750"+""NC_012920.1"165696386111364750475060true0"4750M""4750"":4750"
"test_read_17_7993_12243"425004250"+""NC_012920.1"165697993122434250425060true0"4250M""4250"":4250"
"test_read_16_1537_5537"400004000"+""NC_012920.1"16569153755373999399960true1"4000M""4000"":4000"
"test_read_3_13884_14634"7500750"+""NC_012920.1"16569138841463475075060true0"750M""750"":750"
"test_read_5_12513_13763"125001250"+""NC_012920.1"1656912513137631250125060true0"1250M""1250"":1250"
"test_read_4_13144_14144"100001000"+""NC_012920.1"1656913144141441000100060true0"1000M""1000"":1000"
"test_read_1_2201_2451"2500250"+""NC_012920.1"165692201245125025060true0"250M""250"":250"
"test_read_2_9325_9825"5000500"+""NC_012920.1"165699325982550050060true0"500M""500"":500"
" ], "text/plain": [ "shape: (20, 17)\n", @@ -118,22 +118,23 @@ "│ 90 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ test_read_19_6386_111 ┆ 4750 ┆ 0 ┆ 4750 ┆ … ┆ 0 ┆ 4750M ┆ 4750 ┆ :4750 │\n", "│ 36 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", - "│ test_read_15_3439_718 ┆ 3750 ┆ 0 ┆ 3750 ┆ … ┆ 0 ┆ 3750M ┆ 3750 ┆ :3750 │\n", - "│ 9 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ test_read_17_7993_122 ┆ 4250 ┆ 0 ┆ 4250 ┆ … ┆ 0 ┆ 4250M ┆ 4250 ┆ :4250 │\n", "│ 43 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ test_read_16_1537_553 ┆ 4000 ┆ 0 ┆ 4000 ┆ … ┆ 1 ┆ 4000M ┆ 4000 ┆ :4000 │\n", + "│ 7 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n", - "│ test_read_6_1033_2533 ┆ 1500 ┆ 0 ┆ 1500 ┆ … ┆ 0 ┆ 1500M ┆ 1500 ┆ :1500 │\n", + "│ test_read_3_13884_146 ┆ 750 ┆ 0 ┆ 750 ┆ … ┆ 0 ┆ 750M ┆ 750 ┆ :750 │\n", + "│ 34 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ test_read_5_12513_137 ┆ 1250 ┆ 0 ┆ 1250 ┆ … ┆ 0 ┆ 1250M ┆ 1250 ┆ :1250 │\n", "│ 63 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", + "│ test_read_4_13144_141 ┆ 1000 ┆ 0 ┆ 1000 ┆ … ┆ 0 ┆ 1000M ┆ 1000 ┆ :1000 │\n", + "│ 44 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ test_read_1_2201_2451 ┆ 250 ┆ 0 ┆ 250 ┆ … ┆ 0 ┆ 250M ┆ 250 ┆ :250 │\n", - "│ test_read_3_13884_146 ┆ 750 ┆ 0 ┆ 750 ┆ … ┆ 0 ┆ 750M ┆ 750 ┆ :750 │\n", - "│ 34 ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ test_read_2_9325_9825 ┆ 500 ┆ 0 ┆ 500 ┆ … ┆ 0 ┆ 500M ┆ 500 ┆ :500 │\n", "└───────────────────────┴───────────┴─────────────┴───────────┴───┴─────┴───────────┴──────┴───────┘" ] }, - "execution_count": 11, + "execution_count": 6, "metadata": {}, "output_type": "execute_result" } @@ -144,7 +145,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 7, "id": "92ccdf81-c3bc-4525-8354-42f299c30e7a", "metadata": {}, "outputs": [], @@ -154,10 +155,39 @@ }, { "cell_type": "code", - "execution_count": 20, + "execution_count": 8, "id": "579d685a-629a-48b8-9d2b-72b26849dc65", "metadata": {}, "outputs": [ + { + "data": { + "text/html": [ + " \n", + " " + ] + }, + "metadata": {}, + "output_type": "display_data" + }, { "data": { "application/vnd.plotly.v1+json": { @@ -186,22 +216,22 @@ 4499, 5000, 4750, - 3750, 4250, 3999, + 3750, + 3250, + 3000, 3500, 2750, - 3000, - 3250, - 2500, - 1999, 2250, + 2500, 1750, - 1000, + 1999, 1500, + 750, 1250, + 1000, 250, - 750, 500 ], "xaxis": "x", @@ -1054,11 +1084,11 @@ } } }, - "image/png": "iVBORw0KGgoAAAANSUhEUgAABQYAAAFoCAYAAAAFEiaUAAAgAElEQVR4Xu3dC9zlU70/8O/MGPdbEyKXkxNRck+o3EKSWyZ3kfvdjNu4jTEMxrgNg3IP0REd6TgK5V8hOUpU45RLJGJCQuSSGfPfe8+Y4xnzzOzfXs/vN2vv/X7O67xeneP3XXut9/e3W8/6+O399Jtc+wk/BAgQIECAAAECBAgQIECAAAECBAh0lUA/wWBX9dtiCRAgQIAAAQIECBAgQIAAAQIECDQEBINuBAIECBAgQIAAAQIECBAgQIAAAQJdKCAY7MKmWzIBAgQIECBAgAABAgQIECBAgAABwaB7gAABAgQIECBAgAABAgQIECBAgEAXCggGu7DplkyAAAECBAgQIECAAAECBAgQIEBAMOgeIECAAAECBAgQIECAAAECBAgQINCFAoLBLmy6JRMgQIAAAQIECBAgQIAAAQIECBAQDLoHCBAgQIAAAQIECBAgQIAAAQIECHShgGCwC5tuyQQIECBAgAABAgQIECBAgAABAgQEg+4BAgQIECBAgAABAgQIECBAgAABAl0oIBjswqZbMgECBAgQIECAAAECBAgQIECAAAHBoHuAAAECBAgQIECAAAECBAgQIECAQBcKCAa7sOmWTIAAAQIECBAgQIAAAQIECBAgQEAw6B4gQIAAAQIECBAgQIAAAQIECBAg0IUCgsEubLolEyBAgAABAgQIECBAgAABAgQIEBAMugcIECBAgAABAgQIECBAgAABAgQIdKGAYLALm27JBAgQIECAAAECBAgQIECAAAECBASD7gECBAgQIECAAAECBAgQIECAAAECXSggGOzCplsyAQIECBAgQIAAAQIECBAgQIAAAcGge4AAAQIECBAgQIAAAQIECBAgQIBAFwoIBruw6ZZMgAABAgQIECBAgAABAgQIECBAQDDoHiBAgAABAgQIECBAgAABAgQIECDQhQKCwS5suiUTIECAAAECBAgQIECAAAECBAgQEAy6BwgQIECAAAECBAgQIECAAAECBAh0oYBgsAubbskECBAgQIAAAQIECBAgQIAAAQIEBIPuAQIECBAgQIAAAQIECBAgQIAAAQJdKCAY7MKmWzIBAgQIECBAgAABAgQIECBAgAABwaB7gAABAgQIECBAgAABAgQIECBAgEAXCggGu7DplkyAAAECBAgQIECAAAECBAgQIEBAMOgeIECAAAECBAgQIECAAAECBAgQINCFAoLBLmy6JRMgQIAAAQIECBAgQIAAAQIECBAQDLoHCBAgQIAAAQIECBAgQIAAAQIECHShgGCwC5tuyQQIECBAgAABAgQIECBAgAABAgQEg+4BAgQIECBAgAABAgQIECBAgAABAl0oIBjswqZbMgECBAgQIECAAAECBAgQIECAAAHBoHuAAAECBAgQIECAAAECBAgQIECAQBcKCAa7sOmWTIAAAQIECBAgQIAAAQIECBAgQEAw6B4gQIAAAQIECBAgQIAAAQIECBAg0IUCgsEubLolEyBAgAABAgQIECBAgAABAgQIEBAMugcIECBAgAABAgQIECBAgAABAgQIdKGAYLALm27JBAgQIECAAAECBAgQIECAAAECBASD7gECBAgQIECAAAECBAgQIECAAAECXSggGOzCplsyAQIECBAgQIAAAQIECBAgQIAAAcGge4AAAQIECBAgQIAAAQIECBAgQIBAFwoIBruw6ZZMgAABAgQIECBAgAABAgQIECBAQDDoHiBAgAABAgQIECBAgAABAgQIECDQhQKCwS5suiUTIECAAAECBAgQIECAAAECBAgQEAy6BwgQIECAAAECBAgQIECAAAECBAh0oYBgsAubbskECBAgQIAAAQIECBAgQIAAAQIEBIPuAQIECBAgQIAAAQIECBAgQIAAAQJdKCAY7MKmWzIBAgQIECBAgAABAgQIECBAgAABwaB7gAABAgQIECBAgAABAgQIECBAgEAXCggGu7DplkyAAAECBAgQIECAAAECBAgQIEBAMOgeIECAAAECBAgQIECAAAECBAgQINCFAoLBLmy6JRMgQIAAAQIECBAgQIAAAQIECBAQDLoHCBAgQIAAAQIECBAgQIAAAQIECHShgGCwC5tuyQQIECBAgAABAgQIECBAgAABAgQEg+4BAgQIECBAgAABAgQIECBAgAABAl0oIBjswqZbMgECBAgQIECAAAECBAgQIECAAAHBYOI98OyLbySOoJwAAQIECBAgQIAAAQIECBAgQKAVgQ9/cJ5WytRMFRAMJt4KgsFEQOUECBAgQIAAAQIECBAgQIAAgRYFBIMtwgkG0+DerRYM9o2jUQgQIECAAAECBAgQIECAAAECRQUEg0XFel7vicE0vxAMJgIqJ0CA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BAgQIECgaQHBYNNULiRAgAABAgQIECBAgAABAgQIECDQOQKCwc7ppZUQIECAAAECBAgQIECAAAECBAgQaFpAMNg0lQsJECBAgAABAgQIECBAgAABAgQIdI6AYLBzemklBAgQIECAAAECBAgQIECAAAECBJoWEAw2TeVCAgQIECBAgAABAgQIECBAgAABAp0jIBjsnF5aCQECBAgQIECAAAECBAgQIECAAIGmBQSDTVO5kAABAgQIECBAgAABAgQIECBAgEDnCAgGO6eXVkKAAAECBAgQIECAAAECBAgQIECgaQHBYNNULiRAgAABAgQIECBAgAABAgQIECDQOQKCwc7ppZUQIECAAAECBAgQIECAAAECBAgQaFpAMNg0lQsJECBAgAABAgQIECBAgAABAgQIdI6AYLBzemklBAgQIECAAAECBAgQIECAAAECBJoWEAw2TeVCAgQIECBAgAABAgQIECBAgAABAp0jIBjsnF5aCQECBAgQIECAAAECBAgQIECAAIGmBQSDTVO5kAABAgQIECBAgAABAgQIECBAgEDnCAgGO6eXVkKAAAECBAgQIECAAAECBAgQIECgaQHBYNNULiRAgAABAgQIECBAgAABAgQIECDQOQKCwc7ppZUQIECAAAECBAgQIECAAAECBAgQaFpAMNg0lQsJECBAgAABAgQIECBAgAABAgQIdI6AYLBzemklBAgQIECAAAECBAgQIECAAAECBJoWEAw2TeVCAgQIECBAgAABAgQIECBAgAABAp0jIBjsnF5aCQECBAgQIECAAAECBAgQIECAAIGmBQSDTVO5kAABAgQIECBAgAABAgQIECBAgEDnCAgGO6eXVkKAAAECBAgQIECAAAECBAgQIECgaQHBYNNULiRAgAABAgQIECBAgAABAgQIECDQOQL/HxXS4CLtOjSBAAAAAElFTkSuQmCC", + "image/png": "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", "text/html": [ - "