From e9a70b9b06de2ac986aa6b28e972f396d073282a Mon Sep 17 00:00:00 2001 From: WardDeb Date: Mon, 22 Jun 2026 20:59:18 +0200 Subject: [PATCH 01/19] version overhaul rust dependencies, init pixi --- .gitignore | 5 +- Cargo.toml | 14 +- pixi.lock | 4074 ++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 19 +- src/alignmentsieve.rs | 151 +- src/bamcompare.rs | 295 ++- src/bamcoverage.rs | 155 +- src/computematrix.rs | 139 +- src/lib.rs | 4 +- src/multibamsummary.rs | 152 +- 10 files changed, 4663 insertions(+), 345 deletions(-) create mode 100644 pixi.lock diff --git a/.gitignore b/.gitignore index f6d59b9041..461ed4db1b 100755 --- a/.gitignore +++ b/.gitignore @@ -69,4 +69,7 @@ target* # jupyter notebooks .ipynb_checkpoints *.ipynb_checkpoints -*.ipynb \ No newline at end of file +*.ipynb + +# pixi +.pixi* diff --git a/Cargo.toml b/Cargo.toml index 3ceb5991e6..80c33a3d36 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -10,13 +10,13 @@ crate-type = ["cdylib"] [dependencies] openssl-sys = { version = "*", features = ["vendored"] } -pyo3 = { version = "0.23.4", features = ["extension-module"] } -rust-htslib = "0.49.0" -rayon = "1.10.0" -itertools = "0.14.0" -bigtools = "0.5.3" +pyo3 = { version = "*", features = ["extension-module"] } +rust-htslib = "*" +rayon = "*" +itertools = "*" +bigtools = "*" tokio = "*" flate2 = "*" tempfile = "*" -ndarray = "0.16.1" -ndarray-npy = "*" \ No newline at end of file +ndarray = "*" +ndarray-npy = "*" diff --git a/pixi.lock b/pixi.lock new file mode 100644 index 0000000000..4147b0b826 --- /dev/null +++ b/pixi.lock @@ -0,0 +1,4074 @@ +version: 7 +platforms: +- name: linux-64 +- name: osx-64 +- name: osx-arm64 +environments: + default: + channels: + - url: https://conda.anaconda.org/conda-forge/ + - url: https://conda.anaconda.org/bioconda/ + indexes: + - https://pypi.org/simple + packages: + linux-64: + - conda: https://conda.anaconda.org/bioconda/linux-64/htslib-1.19-h81da01d_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-bootstrap_h59bd682_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18-18.1.7-default_h9bb3924_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18.1.7-default_h90ac42e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-18-18.1.7-default_h9bb3924_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-18.1.7-default_h9bb3924_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clang-tools-18.1.7-default_h9bb3924_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clangdev-18.1.7-default_h9bb3924_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/clangxx-18.1.7-default_h127d8a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda + - 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.45.1-bootstrap_ha15bf96_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-18.1.7-default_h9bb3924_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp-18.1.7-default_h9bb3924_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.7-default_h9bb3924_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.7-default_h087397f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.8.0-hca28451_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-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/libexpat-2.8.1-hecca717_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.7-hb77312f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_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.12.7-hc051c1a_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-h4ab18f5_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-tools-18.1.7-hb77312f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/llvmdev-18.1.7-hb77312f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.3-hab00c5b_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_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/linux-64/xz-5.8.3-ha02ee65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.3-ha02ee65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-h4ab18f5_6.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_119.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - pypi: . + - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/bd/9c0d5d6983905ce2c9edaa073a7e89355a9cf7f396988e05d32f1c37785d/maturin-1.14.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/55/0f/e7f1ff3a1cabc6c4486a7ee1b0506aedf2f5f8329760ac1f4e8032feef2b/pysam-0.24.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/53/fb7122b71361a0d121b669dcf3d31244ef75badbbb724af388948de543e2/imagesize-2.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/62/5e/3a6a3e90f35cea3853c45e5d5fb9b7192ce4384616f932cf7591298ab6e1/numpydoc-1.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/65/b6/09b01cdbc15224e2850365192d17b7bdebb8bdbd8780ed221fcdf0d9a515/pandas-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6b/67/6ea73b2173bcb1abe3a947fbd090cf96ee1b0a75f3f690e8902dc8ffdbfa/py2bit-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6c/c2/63fdda36c56437eeb44aaf9493c8bcd62ce230ab1598924fc626ffbfa943/scikit_learn-1.9.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7a/f6/51d8a97116de23c9280c1fa3b813bc088f8571ce5936ba84af1ecf13ed45/pybigwig-0.3.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/95/7f522393c88313336b20d70fc849555757b2e5febc22b83b3a3f0fd4bce9/matplotlib-3.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ac/1f/d10d6ad23c86c62d90d867d0506881a392ec6ef06885b858eaab868dd356/deeptoolsintervals-0.1.9.tar.gz + - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bb/6b/f4a3d0637692c49da8ef99d72d52526f92e0a8d6ac4f0ca9f31441b9d9ea/numpy-2.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c4/13/680c54afe3e65767bed7ec1a15571e1a2f1257128733851ade24abcefbcc/kiwisolver-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/dd/aa/1b939f6c67ed68635bb538e6752d3dacc02f66535182e939a89581a44e9c/scipy-1.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl + osx-64: + - conda: https://conda.anaconda.org/bioconda/osx-64/htslib-1.10-h9f635df_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18-18.1.7-default_h4c8afb6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18.1.7-default_ha3b9224_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-format-18-18.1.7-default_h4c8afb6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-format-18.1.7-default_h4c8afb6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-tools-18.1.7-default_h4c8afb6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangdev-18.1.7-default_h4c8afb6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-18.1.7-default_ha3b9224_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.22.2-h3ddfcb2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-18.1.7-default_h4c8afb6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp-18.1.7-default_h4c8afb6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp18.1-18.1.7-default_h4c8afb6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang13-18.1.7-default_h0449792_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.20.0-h8f0b9e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-22.1.8-h19cb2f5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.25-h517ebb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.8.1-hcc62823_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.7-hd5e122f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.3-hbb4bfdb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.3-hbb4bfdb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.68.1-h70048d4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.0-h1b8f9f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.9-he1bc88e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.7-hd5e122f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvmdev-18.1.7-hd5e122f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.6-hcc0dc9a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.3-hc881268_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.3-h1411813_0_cpython.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.3-h6a5a847_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.3-h6a5a847_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.3-hbb4bfdb_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.2-hbb4bfdb_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda + - pypi: . + - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/14/27/cc422d11961a00bd04aa9a8d9a63683a1083fe2e6a491c285a94998d6751/pysam-0.24.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/46/3b/9dedd2e35cebcd4eb3539514b5ac674fd45654404839e6f9eff6e25d67c7/py2bit-1.0.1.tar.gz + - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/53/fb7122b71361a0d121b669dcf3d31244ef75badbbb724af388948de543e2/imagesize-2.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/62/5e/3a6a3e90f35cea3853c45e5d5fb9b7192ce4384616f932cf7591298ab6e1/numpydoc-1.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/6a/19/ca10ead60b0acc80b2b833c2c4a4f2ff753d0f58b811f70d911c7e94a25c/scipy-1.18.0-cp312-cp312-macosx_10_15_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ac/1f/d10d6ad23c86c62d90d867d0506881a392ec6ef06885b858eaab868dd356/deeptoolsintervals-0.1.9.tar.gz + - pypi: https://files.pythonhosted.org/packages/ac/20/75f915ff375d6249e6550ac740fdbbd66159a068fd3af1400ff62036b07a/scikit_learn-1.9.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/bf/d9/405320f8077e8e1c5c4bd6adc45e1e6edf6d727b6da7f2e2533cf58bff71/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cf/f4/672930ad51bbc135f51cac89577155f1d0c2d120375fc77978d3aa071bb7/pybigwig-0.3.25.tar.gz + - pypi: https://files.pythonhosted.org/packages/da/17/f5276b496c61477a6c4fc5e7401f4bfe1c2e5ef7c6cd67896f2ade3809cb/matplotlib-3.11.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fa/0a/11486d02add7b1384dff7374d124b1cfbb0ee864dcc9f6a2c0380638cf84/numpy-2.5.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/fe/83/294bca639b0e052f1e2f65199b3db258780c7d4e31408b934c9c974a1379/maturin-1.14.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl + osx-arm64: + - conda: https://conda.anaconda.org/bioconda/osx-arm64/htslib-1.10-hfcd771d_2.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-19.1.7-he32a8d3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/libcxx-headers-19.1.7-h707e725_2.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1030.6.3-llvm19_1_hd01ab73_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_impl_osx-arm64-1030.6.3-llvm19_1_he8a363d_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-19-19.1.7-default_hf3020a7_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-19.1.7-default_hf9bcbb7_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-format-19-19.1.7-default_hf3020a7_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-format-19.1.7-default_hf3020a7_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-tools-19.1.7-default_h1589341_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-19.1.7-default_hc11f16d_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangdev-19.1.7-default_hf3020a7_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-19.1.7-default_hc995acf_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-19.1.7-default_hc11f16d_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-19.1.7-h855ad52_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-hfd3d5f3_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-956.6-llvm19_1_he86490a_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-956.6-llvm19_1_ha2625f7_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-19.1.7-default_hf3020a7_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp-19.1.7-default_hf3020a7_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp19.1-19.1.7-default_hf3020a7_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang13-19.1.7-default_h13b06bd_9.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.20.0-hd5a2499_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.8-h55c6f16_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-19.1.7-h6dc3340_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.1-hf6b4638_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm19-19.1.7-h8e0c9ce_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.68.1-h8f3e76b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsigtool-0.1.3-h98dc951_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.2-h1ae2325_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.3-h5ef1a60_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.3-h5654f7c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.8-hc7d1edf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-19-19.1.7-h91fd4e7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-19.1.7-h855ad52_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmdev-19.1.7-h91fd4e7_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.3-hd24854e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.6-h156bc91_100_cp314.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-codesign-0.1.3-h98dc951_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1600.0.11.8-h997e182_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.2-h8088a28_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda + - pypi: . + - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/27/d2/23d25e3f247b328be58d04a4c9f894178a0d1eda7d42867cfb388adaf416/fonttools-4.63.0-cp314-cp314-macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3c/a7/552a7821597c632b907f7bfe8f36f9f572777af8ef8a48353041cf8e091a/scikit_learn-1.9.0-cp314-cp314-macosx_12_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/46/3b/9dedd2e35cebcd4eb3539514b5ac674fd45654404839e6f9eff6e25d67c7/py2bit-1.0.1.tar.gz + - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/49/b2/97980f3ad4fae37dd7fe31626e2bf75fbf8bdf5d303950ec1fab39a12da8/kiwisolver-1.5.0-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5d/39/b72e168daf9c00fb20c9fc996d00437ccecdef3102387775d29d7a62576d/numpy-2.5.0-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/53/fb7122b71361a0d121b669dcf3d31244ef75badbbb724af388948de543e2/imagesize-2.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/62/5e/3a6a3e90f35cea3853c45e5d5fb9b7192ce4384616f932cf7591298ab6e1/numpydoc-1.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/68/10/bf2d6738d72748b961a3751ab89522d58c54efc36a8e1a12161216cd45cf/pandas-3.0.3-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/72/65/a4559d4ff4a210d2a26d7ca0712e4e738cbfc963135f86e8ae807ca420eb/pysam-0.24.0-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7c/03/b8cdb625a21f710dfa11bbca1f48fb4057d2c0286975f8b415bf80942c99/matplotlib-3.11.0-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ac/1f/d10d6ad23c86c62d90d867d0506881a392ec6ef06885b858eaab868dd356/deeptoolsintervals-0.1.9.tar.gz + - pypi: https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ba/8c/1a9e46228571de18f8e28f16fabdfc20212a5d019f3e3303452b3f0a580d/pillow-12.2.0-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cf/f4/672930ad51bbc135f51cac89577155f1d0c2d120375fc77978d3aa071bb7/pybigwig-0.3.25.tar.gz + - pypi: https://files.pythonhosted.org/packages/d7/88/b72def7262e150d16be13fca37a96481138d624e700340bc3362a7588929/scipy-1.18.0-cp314-cp314-macosx_12_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/fe/83/294bca639b0e052f1e2f65199b3db258780c7d4e31408b934c9c974a1379/maturin-1.14.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl +packages: +- conda: https://conda.anaconda.org/bioconda/linux-64/htslib-1.19-h81da01d_0.tar.bz2 + sha256: 70a43fdc3e81fde05e8cee0b1880d9929c00b2581e162e7c21926deb379b31b3 + md5: 70a467e903079d86316ed9ecff262582 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.5.0,<9.0a0 + - libdeflate >=1.18,<1.26.0a0 + - libgcc-ng >=12 + - libzlib >=1.2.13,<1.3.0a0 + - openssl >=3.2.0,<4.0a0 + - xz >=5.2.6,<6.0a0 + license: MIT + size: 3008383 + timestamp: 1702415814448 +- conda: https://conda.anaconda.org/bioconda/osx-64/htslib-1.10-h9f635df_2.tar.bz2 + sha256: 4291d3afc950832676b1281391d99fcce0cb3f9cab24bc7e3ffc8eba903bdcdf + md5: d9ed52c8cc2dbb9de7425bbedb8e8be6 + depends: + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.14.1,<9.0a0 + - libdeflate >=1.22,<1.26.0a0 + - liblzma >=5.8.1,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + purls: [] + size: 1544219 + timestamp: 1750325113614 +- conda: https://conda.anaconda.org/bioconda/osx-arm64/htslib-1.10-hfcd771d_2.tar.bz2 + sha256: 3c275175a8c6d16eb25a20123cec349490b1a01df26b1a6ac0c7d9fb11f0b523 + md5: 597f543aab548d638c9e6f1cc01514fd + depends: + - bzip2 >=1.0.8,<2.0a0 + - libcurl >=8.14.1,<9.0a0 + - libdeflate >=1.22,<1.23.0a0 + - liblzma >=5.8.1,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + purls: [] + size: 1411277 + timestamp: 1750324139516 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-20_gnu.conda + build_number: 20 + sha256: 1dd3fffd892081df9726d7eb7e0dea6198962ba775bd88842135a4ddb4deb3c9 + md5: a9f577daf3de00bca7c3c76c0ecbd1de + depends: + - __glibc >=2.17,<3.0.a0 + - libgomp >=7.5.0 + constrains: + - openmp_impl <0.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: + strong: + - _openmp_mutex >=4.5 + size: 28948 + timestamp: 1770939786096 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.45.1-bootstrap_h59bd682_2.conda + sha256: a439e3c858547c9ee5b3b53a93e1aa4ddbbf7e918f51e2b0747e1f1f83a799c3 + md5: 89572c6f5e6c24375ffd022c5d790628 + depends: + - ld_impl_linux-64 2.45.1 bootstrap_ha15bf96_2 + - sysroot_linux-64 + license: GPL-3.0-only + license_family: GPL + purls: [] + run_exports: {} + size: 3717952 + timestamp: 1774197461353 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-hda65f42_9.conda + sha256: 0b75d45f0bba3e95dc693336fa51f40ea28c980131fec438afb7ce6118ed05f6 + md5: d2ffd7602c02f2b316fd921d39876885 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + run_exports: + weak: + - bzip2 >=1.0.8,<2.0a0 + size: 260182 + timestamp: 1771350215188 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.6-hb03c661_0.conda + sha256: cc9accf72fa028d31c2a038460787751127317dcfa991f8d1f1babf216bb454e + md5: 920bb03579f15389b9e512095ad995b7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - c-ares >=1.34.6,<2.0a0 + size: 207882 + timestamp: 1765214722852 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18-18.1.7-default_h9bb3924_0.conda + sha256: 894cf911d8a05319a1ebc89f239d1d4a7b4c239390d6f1060d496a31f5967c7f + md5: 9ca51acbe9841139edeff1a0e09d08b5 + depends: + - libclang-cpp18.1 18.1.7 default_h9bb3924_0 + - libgcc-ng >=12 + - libllvm18 >=18.1.7,<18.2.0a0 + - libstdcxx-ng >=12 + constrains: + - clangdev 18.1.7 + - clangxx 18.1.7 + - llvm-tools 18.1.7 + - clang-tools 18.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 773872 + timestamp: 1717818924402 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-18.1.7-default_h90ac42e_0.conda + sha256: 5b1116c7ebcb54c3b52078def1b7794fdd0148d36ab4820e334a348f96f23f60 + md5: 787439d32fd248f2deb7fabb0138d063 + depends: + - binutils_impl_linux-64 + - clang-18 18.1.7 default_h9bb3924_0 + - libgcc-devel_linux-64 + - sysroot_linux-64 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 22601 + timestamp: 1717819018422 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-18-18.1.7-default_h9bb3924_0.conda + sha256: 47aa360b6a1f488cf3de4e032f30136e27e11029d4e6c583d0af43fbcdf9b9db + md5: 11870f57d7d3ae9415d7df325595b3fa + depends: + - libclang-cpp18.1 >=18.1.7,<18.2.0a0 + - libgcc-ng >=12 + - libllvm18 >=18.1.7,<18.2.0a0 + - libstdcxx-ng >=12 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 65851 + timestamp: 1717819189499 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-format-18.1.7-default_h9bb3924_0.conda + sha256: 59c3f0e8e60a14c908bd39d7c3f41d8ae0592299b06346f3cf2b9da01f1df31b + md5: 13a578aae81d919f4fba0278b1040946 + depends: + - clang-format-18 18.1.7 default_h9bb3924_0 + - libclang-cpp18.1 >=18.1.7,<18.2.0a0 + - libgcc-ng >=12 + - libllvm18 >=18.1.7,<18.2.0a0 + - libstdcxx-ng >=12 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 22637 + timestamp: 1717819242710 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clang-tools-18.1.7-default_h9bb3924_0.conda + sha256: 4a7bcf3f7ea0f69091ca7d359b1557e5a507f2b9e7a3a41956b2680fb7c551c5 + md5: 540b026c132b76312e0186c94c45b514 + depends: + - clang-format 18.1.7 default_h9bb3924_0 + - libclang-cpp18.1 >=18.1.7,<18.2.0a0 + - libclang13 >=18.1.7 + - libgcc-ng >=12 + - libllvm18 >=18.1.7,<18.2.0a0 + - libstdcxx-ng >=12 + - libxml2 >=2.12.7,<2.14.0a0 + constrains: + - clangdev 18.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 28986750 + timestamp: 1717819296860 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clangdev-18.1.7-default_h9bb3924_0.conda + sha256: 23c4bc99a91042b3ad79189599365adee612df089f05b2c070011c72a06151ad + md5: 9b9f7b0e0edd09239794090ffa75fff4 + depends: + - clang 18.1.7 default_h90ac42e_0 + - clang-tools 18.1.7 default_h9bb3924_0 + - clangxx 18.1.7 default_h127d8a8_0 + - libclang 18.1.7 default_h9bb3924_0 + - libclang-cpp 18.1.7 default_h9bb3924_0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - llvmdev 18.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 49786226 + timestamp: 1717819415233 +- conda: https://conda.anaconda.org/conda-forge/linux-64/clangxx-18.1.7-default_h127d8a8_0.conda + sha256: ff611c7d5a52b21df93d4ef4f6de7bf0804b1ddbef3ba48aee7e64a9176476b3 + md5: b4befb65199865d55bcbd378c13bc317 + depends: + - clang 18.1.7 default_h90ac42e_0 + - libstdcxx-devel_linux-64 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 22673 + timestamp: 1717819030224 +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-73.2-h59595ed_0.conda + sha256: e12fd90ef6601da2875ebc432452590bc82a893041473bc1c13ef29001a73ea8 + md5: cc47e1facc155f91abd89b11e48e72ff + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - icu >=73.2,<74.0a0 + size: 12089150 + timestamp: 1692900650789 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.3-hb9d3cd8_0.conda + sha256: 0960d06048a7185d3542d850986d807c6e37ca2e644342dd0c72feefcf26c2a4 + md5: b38117a3c920364aff79f870c984b4a3 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.1-or-later + purls: [] + run_exports: + weak: + - keyutils >=1.6.3,<2.0a0 + size: 134088 + timestamp: 1754905959823 +- conda: 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 + purls: [] + run_exports: + weak: + - krb5 >=1.21.3,<1.22.0a0 + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.45.1-bootstrap_ha15bf96_2.conda + sha256: ffc8fb61b32f421687a35b1b6bdd7e73278da0ea1a0d616b624eb3760ed21742 + md5: bafc61899c34054d1f5e7cd85a2f81e9 + depends: + - __glibc >=2.17,<3.0.a0 + constrains: + - binutils_impl_linux-64 2.45.1 + license: GPL-3.0-only + license_family: GPL + purls: [] + run_exports: {} + size: 730756 + timestamp: 1774197447552 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-18.1.7-default_h9bb3924_0.conda + sha256: fd7116df16ba9c04e81fb45b24c2e3be5740435f0ddc2385bf7a51af47d41227 + md5: c587de8d5140487d7c021daa6bb69a6c + depends: + - libclang13 18.1.7 default_h087397f_0 + - libgcc-ng >=12 + - libllvm18 >=18.1.7,<18.2.0a0 + - libstdcxx-ng >=12 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libclang13 >=18.1.7 + size: 22600 + timestamp: 1717819141085 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp-18.1.7-default_h9bb3924_0.conda + sha256: 2bedab94a3fc45e67ad8c35c74899369030bd3ccb34ed1336ddc7896324ea574 + md5: 16ce01ff0eee850924312043482b39ae + depends: + - libclang-cpp18.1 18.1.7 default_h9bb3924_0 + - libgcc-ng >=12 + - libllvm18 >=18.1.7,<18.2.0a0 + - libstdcxx-ng >=12 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libclang-cpp18.1 >=18.1.7,<18.2.0a0 + size: 22599 + timestamp: 1717818973121 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp18.1-18.1.7-default_h9bb3924_0.conda + sha256: 710556634edf342cbfcb01d454e8644d4a0ac674eed0a9aebfc1fe86ea8c0bf6 + md5: bff3d36fbd1b1a2f1e6d34aa3eb6b58c + depends: + - libgcc-ng >=12 + - libllvm18 >=18.1.7,<18.2.0a0 + - libstdcxx-ng >=12 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libclang-cpp18.1 >=18.1.7,<18.2.0a0 + size: 19272701 + timestamp: 1717818801492 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-18.1.7-default_h087397f_0.conda + sha256: d981a2734c3af6217dd42c1bccc13b99fc3ca5a64c379739612d6cf67f992a1d + md5: 536526073c2e7f9056fdce8584da779e + depends: + - libgcc-ng >=12 + - libllvm18 >=18.1.7,<18.2.0a0 + - libstdcxx-ng >=12 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libclang13 >=18.1.7 + size: 11057579 + timestamp: 1717819075043 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.8.0-hca28451_1.conda + sha256: 6b5b64cdcdb643368ebe236de07eedee99b025bb95129bbe317c46e5bdc693f3 + md5: b8afb3e3cb3423cc445cf611ab95fdb0 + depends: + - krb5 >=1.21.3,<1.22.0a0 + - libgcc-ng >=12 + - libnghttp2 >=1.58.0,<2.0a0 + - libssh2 >=1.11.0,<2.0a0 + - libzlib >=1.2.13,<2.0a0 + - openssl >=3.3.1,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: curl + license_family: MIT + purls: [] + run_exports: + weak: + - libcurl >=8.8.0,<9.0a0 + size: 410158 + timestamp: 1719602718702 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.25-h17f619e_0.conda + sha256: aa8e8c4be9a2e81610ddf574e05b64ee131fab5e0e3693210c9d6d2fba32c680 + md5: 6c77a605a7a689d17d4819c0f8ac9a00 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libdeflate >=1.25,<1.26.0a0 + size: 73490 + timestamp: 1761979956660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20250104-pl5321h7949ede_0.conda + sha256: d789471216e7aba3c184cd054ed61ce3f6dac6f87a50ec69291b9297f8c18724 + md5: c277e0a4d549b03ac1e9d6cbbe3d017b + depends: + - ncurses + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - libedit >=3.1.20250104,<3.2.0a0 + size: 134676 + timestamp: 1738479519902 +- conda: 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 + purls: [] + run_exports: + weak: + - libev >=4.33,<4.34.0a0 + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.8.1-hecca717_1.conda + sha256: 16feffd9ddbbe5b718515d38ee376c685ba95491cd901244e24671d20b952a77 + md5: b24d3c612f71e7aa74158d92106318b2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - expat 2.8.1.* + license: MIT + license_family: MIT + purls: [] + run_exports: {} + size: 77856 + timestamp: 1781203599810 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.5.2-h3435931_0.conda + sha256: 31f19b6a88ce40ebc0d5a992c131f57d919f73c0b92cd1617a5bec83f6e961e6 + md5: a360c33a5abe61c07959e449fa1453eb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libffi >=3.5.2,<3.6.0a0 + size: 58592 + timestamp: 1769456073053 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-15.2.0-he0feb66_19.conda + sha256: 8e0a3b5e41272e5678499b5dfc4cddb673f9e935de01eb0767ce857001229f46 + md5: 57736f29cc2b0ec0b6c2952d3f101b6a + depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 + constrains: + - libgcc-ng ==15.2.0=*_19 + - libgomp 15.2.0 he0feb66_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: {} + size: 1041084 + timestamp: 1778269013026 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-15.2.0-h69a702a_19.conda + sha256: 9dcf54adfaa5e861123c2da4f2f0451a685464ea7e5a41ad91cf67b31d658d98 + md5: 331ee9b72b9dff570d56b1302c5ab37d + depends: + - libgcc 15.2.0 he0feb66_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: + strong: + - libgcc + size: 27694 + timestamp: 1778269016987 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-15.2.0-he0feb66_19.conda + sha256: 5abe4ab9d93f6c9757d654f1969ae2267d4505315c1f2f8fe705fd60af084f1b + md5: faac990cb7aedc7f3a2224f2c9b0c26c + depends: + - __glibc >=2.17,<3.0.a0 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: + strong: + - _openmp_mutex >=4.5 + size: 603817 + timestamp: 1778268942614 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.18-h3b78370_2.conda + sha256: c467851a7312765447155e071752d7bf9bf44d610a5687e32706f480aad2833f + md5: 915f5995e94f60e9a4826e0b0920ee88 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: LGPL-2.1-only + purls: [] + run_exports: + weak: + - libiconv >=1.18,<2.0a0 + size: 790176 + timestamp: 1754908768807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm18-18.1.7-hb77312f_0.conda + sha256: 9a9167b3e8e05abc517671fe45e5d40ae866d3e8195865ddad3c68131d059e25 + md5: bc0ea7e1f75a9b1c8467597fbbd9f86b + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libxml2 >=2.12.7,<2.14.0a0 + - libzlib >=1.2.13,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libllvm18 >=18.1.7,<18.2.0a0 + size: 38423980 + timestamp: 1717781615068 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.8.3-hb03c661_0.conda + sha256: ec30e52a3c1bf7d0425380a189d209a52baa03f22fb66dd3eb587acaa765bd6d + md5: b88d90cad08e6bc8ad540cb310a761fb + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + constrains: + - xz 5.8.3.* + license: 0BSD + purls: [] + run_exports: + weak: + - liblzma >=5.8.3,<6.0a0 + size: 113478 + timestamp: 1775825492909 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.8.3-hb03c661_0.conda + sha256: 7858f6a173206bc8a5bdc8e75690483bb66c0dcc3809ac1cb43c561a4723623a + md5: 55c20edec8e90c4703787acaade60808 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - liblzma 5.8.3 hb03c661_0 + license: 0BSD + purls: [] + run_exports: + weak: + - liblzma >=5.8.3,<6.0a0 + size: 491429 + timestamp: 1775825511214 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda + sha256: 1910c5306c6aa5bcbd623c3c930c440e9c77a5a019008e1487810e3c1d3716cb + md5: 700ac6ea6d53d5510591c4344d5c989a + depends: + - c-ares >=1.23.0,<2.0a0 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.2.0,<4.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libnghttp2 >=1.58.0,<2.0a0 + size: 631936 + timestamp: 1702130036271 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hb9d3cd8_1.conda + sha256: 927fe72b054277cde6cb82597d0fcf6baf127dcbce2e0a9d8925a68f1265eef5 + md5: d864d34357c3b65a4b731f78c0801dc4 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + license: LGPL-2.1-only + license_family: GPL + purls: [] + run_exports: + weak: + - libnsl >=2.0.1,<2.1.0a0 + size: 33731 + timestamp: 1750274110928 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda + sha256: daee3f68786231dad457d0dfde3f7f1f9a7f2018adabdbb864226775101341a8 + md5: 18aa975d2094c34aef978060ae7da7d8 + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0a0 + license: Unlicense + purls: [] + run_exports: + weak: + - libsqlite >=3.46.0,<4.0a0 + size: 865346 + timestamp: 1718050628718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda + sha256: 50e47fd9c4f7bf841a11647ae7486f65220cfc988ec422a4475fe8d5a823824d + md5: 1f5a58e686b13bcfde88b93f547d23fe + depends: + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + - openssl >=3.1.1,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - libssh2 >=1.11.0,<2.0a0 + size: 271133 + timestamp: 1685837707056 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-15.2.0-h934c35e_19.conda + sha256: dff1058c76ec6b8759e41cefa2508162d00e4a5e6721aa68ec3fd10094e702dc + md5: 5794b3bdc38177caf969dabd3af08549 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc 15.2.0 he0feb66_19 + constrains: + - libstdcxx-ng ==15.2.0=*_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: {} + size: 5852044 + timestamp: 1778269036376 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-15.2.0-hdf11a46_19.conda + sha256: 0672b6b6e1791c92e8eccad58081a99d614fcf82bca5841f9dfa3c3e658f83b9 + md5: e5ce228e579726c07255dbf90dc62101 + depends: + - libstdcxx 15.2.0 h934c35e_19 + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: + strong: + - libstdcxx + size: 27776 + timestamp: 1778269074600 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.42.2-h5347b49_0.conda + sha256: 9b1bdce27a7e31f7d241aeecff67a1f3101d52a2b1e33ccc2cdf2613072bf81f + md5: 01bb81d12c957de066ea7362007df642 + depends: + - libgcc >=14 + - __glibc >=2.17,<3.0.a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - libuuid >=2.42.2,<3.0a0 + size: 40017 + timestamp: 1781625522462 +- conda: 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 + purls: [] + run_exports: + weak: + - libxcrypt >=4.4.36 + size: 100393 + timestamp: 1702724383534 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-hc051c1a_1.conda + sha256: 576ea9134176636283ff052897bf7a91ffd8ac35b2c505dfde2890ec52849698 + md5: 340278ded8b0dc3a73f3660bbb0adbc6 + depends: + - icu >=73.2,<74.0a0 + - libgcc-ng >=12 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.2.13,<2.0a0 + - xz >=5.2.6,<6.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libxml2 >=2.12.7,<3.0a0 + size: 704984 + timestamp: 1717546454837 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.2.13-h4ab18f5_6.conda + sha256: 8ced4afed6322172182af503f21725d072a589a6eb918f8a58135c1e00d35980 + md5: 27329162c0dc732bcf67a4e0cd488125 + depends: + - libgcc-ng >=12 + constrains: + - zlib 1.2.13 *_6 + license: Zlib + license_family: Other + purls: [] + run_exports: + weak: + - libzlib >=1.2.13,<2.0a0 + size: 61571 + timestamp: 1716874066944 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvm-tools-18.1.7-hb77312f_0.conda + sha256: bd402e4792a6c5604a7364fbc81098fd7751f87ef98c816dd217c1396913129e + md5: 691d40e402c76d003125d382abd6e7bf + depends: + - libgcc-ng >=12 + - libllvm18 18.1.7 hb77312f_0 + - libstdcxx-ng >=12 + - libxml2 >=2.12.7,<2.14.0a0 + - libzlib >=1.2.13,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - llvmdev 18.1.7 + - clang 18.1.7 + - clang-tools 18.1.7 + - llvm 18.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 32657444 + timestamp: 1717781906587 +- conda: https://conda.anaconda.org/conda-forge/linux-64/llvmdev-18.1.7-hb77312f_0.conda + sha256: 18ac173d4525486923248be2eb1075d80624c7ac9cf80d2d5e3ce4d318a59d6e + md5: 6ac11f45bdcd0d5c8d596b8d3a266dab + depends: + - libgcc-ng >=12 + - libllvm18 18.1.7 hb77312f_0 + - libstdcxx-ng >=12 + - libxml2 >=2.12.7,<2.14.0a0 + - libzlib >=1.2.13,<2.0a0 + - llvm-tools 18.1.7 hb77312f_0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - llvm-tools 18.1.7 + - clang 18.1.7 + - clang-tools 18.1.7 + - llvm 18.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 58236201 + timestamp: 1717782018749 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.6-hdb14827_0.conda + sha256: fc89f74bbe362fb29fa3c037697a89bec140b346a2469a90f7936d1d7ea4d8a3 + md5: fc21868a1a5aacc937e7a18747acb8a5 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + license: X11 AND BSD-3-Clause + purls: [] + run_exports: + weak: + - ncurses >=6.6,<7.0a0 + size: 918956 + timestamp: 1777422145199 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.6.3-h35e630c_0.conda + sha256: d48f5c22b9897c01e4dff3680f1f57ceb02711ab9c62f74339b080419dfad34b + md5: 79dd2074b5cd5c5c6b2930514a11e22d + depends: + - __glibc >=2.17,<3.0.a0 + - ca-certificates + - libgcc >=14 + license: Apache-2.0 + license_family: Apache + purls: [] + run_exports: + weak: + - openssl >=3.6.3,<4.0a0 + size: 3159683 + timestamp: 1781069855778 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.3-hab00c5b_0_cpython.conda + sha256: f9865bcbff69f15fd89a33a2da12ad616e98d65ce7c83c644b92e66e5016b227 + md5: 2540b74d304f71d3e89c81209db4db84 + depends: + - bzip2 >=1.0.8,<2.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libgcc-ng >=12 + - libnsl >=2.0.1,<2.1.0a0 + - libsqlite >=3.45.2,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcrypt >=4.4.36 + - libzlib >=1.2.13,<2.0.0a0 + - ncurses >=6.4.20240210,<7.0a0 + - openssl >=3.2.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + run_exports: + weak: + - python_abi 3.12.* *_cp312 + noarch: + - python + size: 31991381 + timestamp: 1713208036041 +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.3-h853b02a_0.conda + sha256: 12ffde5a6f958e285aa22c191ca01bbd3d6e710aa852e00618fa6ddc59149002 + md5: d7d95fc8287ea7bf33e0e7116d2b95ec + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + run_exports: + weak: + - readline >=8.3,<9.0a0 + size: 345073 + timestamp: 1765813471974 +- conda: 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 + purls: [] + run_exports: + weak: + - tk >=8.6.13,<8.7.0a0 + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.8.3-ha02ee65_0.conda + sha256: 2553fd3ec0a1020b2ca05ca10b0036a596cb0d4bf3645922fcf69dacce0e6679 + md5: 6a1b6af49a334e4e06b9f103367762bf + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - liblzma 5.8.3 hb03c661_0 + - liblzma-devel 5.8.3 hb03c661_0 + - xz-gpl-tools 5.8.3 ha02ee65_0 + - xz-tools 5.8.3 hb03c661_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + purls: [] + run_exports: + weak: + - liblzma >=5.8.3,<6.0a0 + size: 24360 + timestamp: 1775825568523 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.8.3-ha02ee65_0.conda + sha256: 8f139666ea18dc8340a44a54056627dd4e89e242e8cd136ab2467d6dc2c192ba + md5: 8f5e2c6726c1339287a3c76a2c138ac7 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - liblzma 5.8.3 hb03c661_0 + constrains: + - xz 5.8.3.* + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + purls: [] + run_exports: + weak: + - liblzma >=5.8.3,<6.0a0 + size: 34213 + timestamp: 1775825548743 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.8.3-hb03c661_0.conda + sha256: 162ebd76803464b8c8ebc7d45df32edf0ec717b3bf369a437ae3b0254f22dc2e + md5: b62b615caa60812640f24db3a8d0fc87 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=14 + - liblzma 5.8.3 hb03c661_0 + constrains: + - xz 5.8.3.* + license: 0BSD AND LGPL-2.1-or-later + purls: [] + run_exports: {} + size: 95955 + timestamp: 1775825530484 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.2.13-h4ab18f5_6.conda + sha256: 534824ea44939f3e59ca8ebb95e3ece6f50f9d2a0e69999fbc692311252ed6ac + md5: 559d338a4234c2ad6e676f460a093e67 + depends: + - libgcc-ng >=12 + - libzlib 1.2.13 h4ab18f5_6 + license: Zlib + license_family: Other + purls: [] + run_exports: + weak: + - libzlib >=1.2.13,<2.0a0 + size: 92883 + timestamp: 1716874088980 +- conda: 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 + purls: [] + run_exports: + weak: + - zstd >=1.5.6,<1.6.0a0 + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda + sha256: f8e3c730fa14ee3f170493779f06522c4acf89169f43db4f039727709b6419cf + md5: a9965dd99f683c5f444428f896635716 + depends: + - __unix + license: ISC + purls: [] + run_exports: {} + size: 128866 + timestamp: 1781708962055 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-19.1.7-he32a8d3_1.conda + sha256: 8c32a3db8adf18ed58197e8895ce4f24a83ed63c817512b9a26724753b116f2a + md5: 8d99c82e0f5fed6cc36fcf66a11e03f0 + depends: + - clang 19.1.7.* + constrains: + - compiler-rt 19.1.7 + - clangxx 19.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: {} + size: 10490535 + timestamp: 1757411851093 +- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-4.18.0-he073ed8_9.conda + sha256: 41557eeadf641de6aeae49486cef30d02a6912d8da98585d687894afd65b356a + md5: 86d9cba083cd041bfbf242a01a7a1999 + constrains: + - sysroot_linux-64 ==2.28 + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later + license_family: GPL + purls: [] + run_exports: {} + size: 1278712 + timestamp: 1765578681495 +- conda: https://conda.anaconda.org/conda-forge/noarch/libcxx-headers-19.1.7-h707e725_2.conda + sha256: 36485e6807e03a4f15a8018ec982457a9de0a1318b4b49a44c5da75849dbe24f + md5: de91b5ce46dc7968b6e311f9add055a2 + depends: + - __unix + constrains: + - libcxx-devel 19.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 830747 + timestamp: 1764647922410 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.3.0-hf649bbc_119.conda + sha256: e1815bb11d5abe886979e95889d84310d83d078d36a3567ca67cbf57a3876d88 + md5: 7d517e32d656a8880d98c0e4fc8ddc2c + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: {} + size: 3091520 + timestamp: 1778268364856 +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.3.0-h9f08a49_119.conda + sha256: 1b4263aa5d8c8c659e8e38b66868f42867347e0c8941513ee77269afc00a5186 + md5: d1a866495b9654ccfef5392b8541dc58 + depends: + - __unix + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + purls: [] + run_exports: {} + size: 20199810 + timestamp: 1778268389428 +- conda: https://conda.anaconda.org/conda-forge/noarch/python_abi-3.14-8_cp314.conda + build_number: 8 + sha256: ad6d2e9ac39751cc0529dd1566a26751a0bf2542adb0c232533d32e176e21db5 + md5: 0539938c55b6b1a59b560e843ad864a4 + constrains: + - python 3.14.* *_cp314 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: {} + size: 6989 + timestamp: 1752805904792 +- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda + sha256: c47299fe37aebb0fcf674b3be588e67e4afb86225be4b0d452c7eb75c086b851 + md5: 13dc3adbc692664cd3beabd216434749 + depends: + - __glibc >=2.28 + - kernel-headers_linux-64 4.18.0 he073ed8_9 + - tzdata + license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later + license_family: GPL + purls: [] + run_exports: + strong: + - __glibc >=2.28,<3.0.a0 + size: 24008591 + timestamp: 1765578833462 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda + sha256: 1d30098909076af33a35017eed6f2953af1c769e273a0626a04722ac4acaba3c + md5: ad659d0a2b3e47e38d829aa8cad2d610 + license: LicenseRef-Public-Domain + purls: [] + run_exports: {} + size: 119135 + timestamp: 1767016325805 +- conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-h500dc9f_9.conda + sha256: 9f242f13537ef1ce195f93f0cc162965d6cc79da578568d6d8e50f70dd025c42 + md5: 4173ac3b19ec0a4f400b4f782910368b + depends: + - __osx >=10.13 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + run_exports: + weak: + - bzip2 >=1.0.8,<2.0a0 + size: 133427 + timestamp: 1771350680709 +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.6-hb5e19a0_0.conda + sha256: 2f5bc0292d595399df0d168355b4e9820affc8036792d6984bd751fdda2bcaea + md5: fc9a153c57c9f070bebaa7eef30a8f17 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - c-ares >=1.34.6,<2.0a0 + size: 186122 + timestamp: 1765215100384 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18-18.1.7-default_h4c8afb6_0.conda + sha256: 9e92d1c1234390ae2a47c34805f25d4bd7b58d9c8c60d72cae86d218b7196e00 + md5: afece857d99d5729372ad7fac3a95d2e + depends: + - __osx >=10.13 + - libclang-cpp18.1 18.1.7 default_h4c8afb6_0 + - libcxx >=16.0.6 + - libllvm18 >=18.1.7,<18.2.0a0 + constrains: + - clang-tools 18.1.7 + - clangxx 18.1.7 + - llvm-tools 18.1.7 + - clangdev 18.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 759958 + timestamp: 1717813819070 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-18.1.7-default_ha3b9224_0.conda + sha256: 507ea10018ff607b7b3ba6f6efca4c5b897bb6a262464d83222c650b0f467b16 + md5: f3d140dbce64634d0c77665d9a4e7ccb + depends: + - clang-18 18.1.7 default_h4c8afb6_0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 22588 + timestamp: 1717813901304 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-format-18-18.1.7-default_h4c8afb6_0.conda + sha256: 185dc3bdd67a438c7760ef446681d46a10ea73c7e8eef7f59c3770d387f73de3 + md5: 8b32920be1534ae49ea54d20bfed0c12 + depends: + - __osx >=10.13 + - libclang-cpp18.1 >=18.1.7,<18.2.0a0 + - libcxx >=16.0.6 + - libllvm18 >=18.1.7,<18.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 62212 + timestamp: 1717814131492 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-format-18.1.7-default_h4c8afb6_0.conda + sha256: 105457f602193cbea41ee3c23d3e0ef76dca0c9fa3fbe3dd24a4c4039802c755 + md5: 28e497580c0c89a619dab901cf3a550a + depends: + - __osx >=10.13 + - clang-format-18 18.1.7 default_h4c8afb6_0 + - libclang-cpp18.1 >=18.1.7,<18.2.0a0 + - libcxx >=16.0.6 + - libllvm18 >=18.1.7,<18.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 22876 + timestamp: 1717814196419 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-tools-18.1.7-default_h4c8afb6_0.conda + sha256: c78f1cb0472ff7a8221726d8b7c661ebac20b7e289846b8bfcaa088fb64402e2 + md5: c7be23fca3da1d8080946b1e5b84404a + depends: + - __osx >=10.13 + - clang-format 18.1.7 default_h4c8afb6_0 + - libclang-cpp18.1 >=18.1.7,<18.2.0a0 + - libclang13 >=18.1.7 + - libcxx >=16.0.6 + - libllvm18 >=18.1.7,<18.2.0a0 + - libxml2 >=2.12.7,<2.14.0a0 + constrains: + - clangdev 18.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 19771872 + timestamp: 1717814713981 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangdev-18.1.7-default_h4c8afb6_0.conda + sha256: 2d6964bcc42c8f19593a2aca90e41d437cafc6c15d96035b62907505f07a7e6c + md5: 39ffb42d6df2957d55c2d62413a45ec8 + depends: + - __osx >=10.13 + - clang 18.1.7 default_ha3b9224_0 + - clang-tools 18.1.7 default_h4c8afb6_0 + - clangxx 18.1.7 default_ha3b9224_0 + - libclang 18.1.7 default_h4c8afb6_0 + - libclang-cpp 18.1.7 default_h4c8afb6_0 + - libcxx >=16.0.6 + - llvmdev 18.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 26136783 + timestamp: 1717814816532 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-18.1.7-default_ha3b9224_0.conda + sha256: 1a8c83972531299dba368eae5a0dc01a9ce877c98554a40d24cd2d48579a336e + md5: a0432972cebd01c75aba04f1983e9919 + depends: + - clang 18.1.7 default_ha3b9224_0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 22662 + timestamp: 1717813914190 +- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + sha256: 2e64307532f482a0929412976c8450c719d558ba20c0962832132fd0d07ba7a7 + md5: d68d48a3060eb5abdc1cdc8e2a3a5966 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - icu >=75.1,<76.0a0 + size: 11761697 + timestamp: 1720853679409 +- conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.22.2-h3ddfcb2_1.conda + sha256: c6342c340b18651d14b6134e223904da6f6099665e45449efb683d4c68b28432 + md5: e070b249c4f9c6bddb7984a1a794e8df + depends: + - __osx >=11.0 + - libcxx >=19 + - libedit >=3.1.20250104,<3.2.0a0 + - libedit >=3.1.20250104,<4.0a0 + - openssl >=3.5.7,<4.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - krb5 >=1.22.2,<1.23.0a0 + size: 1195956 + timestamp: 1781860554632 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-18.1.7-default_h4c8afb6_0.conda + sha256: bb06a36b790b58643525d37ad4da9e116197fe261f6bcf82e2920f8e351a08de + md5: 44aaa57742042772d253d057a34883a6 + depends: + - __osx >=10.13 + - libclang13 18.1.7 default_h0449792_0 + - libcxx >=16.0.6 + - libllvm18 >=18.1.7,<18.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libclang13 >=18.1.7 + size: 22898 + timestamp: 1717814062566 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp-18.1.7-default_h4c8afb6_0.conda + sha256: ea2ab4d652b21bd454e0d3412d142635a2d5bae5887f4abd82ab972cc1bfa2c0 + md5: 24760f4e0135a795d4dff139184d69b4 + depends: + - __osx >=10.13 + - libclang-cpp18.1 18.1.7 default_h4c8afb6_0 + - libcxx >=16.0.6 + - libllvm18 >=18.1.7,<18.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libclang-cpp18.1 >=18.1.7,<18.2.0a0 + size: 22921 + timestamp: 1717813887590 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp18.1-18.1.7-default_h4c8afb6_0.conda + sha256: 22b64ad7f04ccee346c043ee6bf44c56c1e489b88788693a82f9ca9f3d39c3ab + md5: 41f0f6a496dfda7a7731005f9120fc08 + depends: + - __osx >=10.13 + - libcxx >=16.0.6 + - libllvm18 >=18.1.7,<18.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libclang-cpp18.1 >=18.1.7,<18.2.0a0 + size: 13773485 + timestamp: 1717813542661 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libclang13-18.1.7-default_h0449792_0.conda + sha256: 9bfec881038994d1a71fe587c226f6971f7bc5220e8024312ea8acb6ebb6c47d + md5: be4f24df1938154adcb08673fbce71be + depends: + - __osx >=10.13 + - libcxx >=16.0.6 + - libllvm18 >=18.1.7,<18.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libclang13 >=18.1.7 + size: 8119469 + timestamp: 1717813984475 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.20.0-h8f0b9e4_0.conda + sha256: 5d3d8a82ca43347e96f1d79048921f3a7c25e32514bc7feb53ed2a040dcca54d + md5: 4a0085ccf90dc514f0fc0909a874045e + depends: + - __osx >=11.0 + - krb5 >=1.22.2,<1.23.0a0 + - libnghttp2 >=1.68.1,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.6,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + purls: [] + run_exports: + weak: + - libcurl >=8.20.0,<9.0a0 + size: 419676 + timestamp: 1777462238769 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-22.1.8-h19cb2f5_0.conda + sha256: 57ee997f1f800cf38abc743c0f0a9ddfe6a101c697c35510452ce6f4ddf96361 + md5: 0f600157f28fc7bc9549ecafdfa5bc12 + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 566717 + timestamp: 1781672189697 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.25-h517ebb2_0.conda + sha256: 025f8b1e85dd8254e0ca65f011919fb1753070eb507f03bca317871a884d24de + md5: 31aa65919a729dc48180893f62c25221 + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libdeflate >=1.25,<1.26.0a0 + size: 70840 + timestamp: 1761980008502 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20250104-pl5321ha958ccf_0.conda + sha256: 6cc49785940a99e6a6b8c6edbb15f44c2dd6c789d9c283e5ee7bdfedd50b4cd6 + md5: 1f4ed31220402fcddc083b4bff406868 + depends: + - ncurses + - __osx >=10.13 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - libedit >=3.1.20250104,<3.2.0a0 + size: 115563 + timestamp: 1738479554273 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + sha256: 0d238488564a7992942aa165ff994eca540f687753b4f0998b29b4e4d030ff43 + md5: 899db79329439820b7e8f8de41bca902 + license: BSD-2-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - libev >=4.33,<4.34.0a0 + size: 106663 + timestamp: 1702146352558 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.8.1-hcc62823_1.conda + sha256: 9c96cc05e056e1bba5b545cbbd57b6e01db622dc2c82934caaaa25cfb22fe666 + md5: dcfdea7b7013beef0a4d744d776ea38f + depends: + - __osx >=11.0 + constrains: + - expat 2.8.1.* + license: MIT + license_family: MIT + purls: [] + run_exports: {} + size: 76020 + timestamp: 1781204303305 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.5.2-hd1f9c09_0.conda + sha256: 951958d1792238006fdc6fce7f71f1b559534743b26cc1333497d46e5903a2d6 + md5: 66a0dc7464927d0853b590b6f53ba3ea + depends: + - __osx >=10.13 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libffi >=3.5.2,<3.6.0a0 + size: 53583 + timestamp: 1769456300951 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.18-h57a12c2_2.conda + sha256: a1c8cecdf9966921e13f0ae921309a1f415dfbd2b791f2117cf7e8f5e61a48b6 + md5: 210a85a1119f97ea7887188d176db135 + depends: + - __osx >=10.13 + license: LGPL-2.1-only + purls: [] + run_exports: + weak: + - libiconv >=1.18,<2.0a0 + size: 737846 + timestamp: 1754908900138 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm18-18.1.7-hd5e122f_0.conda + sha256: dc9397be88e0b5d0e14765b98ea7bbea79b9110447e43b28a0f1e994514f6350 + md5: bc138883a1fbb4d446b8a5565b1c1bc0 + depends: + - __osx >=10.13 + - libcxx >=16 + - libxml2 >=2.12.7,<2.14.0a0 + - libzlib >=1.2.13,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libllvm18 >=18.1.7,<18.2.0a0 + size: 27583991 + timestamp: 1717771655947 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.8.3-hbb4bfdb_0.conda + sha256: d9e2006051529aec5578c6efeb13bb6a7200a014b2d5a77a579e83a8049d5f3c + md5: becdfbfe7049fa248e52aa37a9df09e2 + depends: + - __osx >=11.0 + constrains: + - xz 5.8.3.* + license: 0BSD + purls: [] + run_exports: + weak: + - liblzma >=5.8.3,<6.0a0 + size: 105724 + timestamp: 1775826029494 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.8.3-hbb4bfdb_0.conda + sha256: 05f845d7f29691f8410665297a4fd168261aaa2710993e9e21effd66365c080d + md5: a59a33afff299f2d95fdabbd1214f4f1 + depends: + - __osx >=11.0 + - liblzma 5.8.3 hbb4bfdb_0 + license: 0BSD + purls: [] + run_exports: + weak: + - liblzma >=5.8.3,<6.0a0 + size: 118185 + timestamp: 1775826064340 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.68.1-h70048d4_0.conda + sha256: 899551e16aac9dfb85bfc2fd98b655f4d1b7fea45720ec04ccb93d95b4d24798 + md5: dba4c95e2fe24adcae4b77ebf33559ae + depends: + - __osx >=11.0 + - c-ares >=1.34.6,<2.0a0 + - libcxx >=19 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libnghttp2 >=1.68.1,<2.0a0 + size: 606749 + timestamp: 1773854765508 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.46.0-h1b8f9f3_0.conda + sha256: 63af1a9e3284c7e4952364bafe7267e41e2d9d8bcc0e85a4ea4b0ec02d3693f6 + md5: 5dadfbc1a567fe6e475df4ce3148be09 + depends: + - __osx >=10.13 + - libzlib >=1.2.13,<2.0a0 + license: Unlicense + purls: [] + run_exports: + weak: + - libsqlite >=3.46.0,<4.0a0 + size: 908643 + timestamp: 1718050720117 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-hed3591d_0.conda + sha256: 00654ba9e5f73aa1f75c1f69db34a19029e970a4aeb0fa8615934d8e9c369c3c + md5: a6cb15db1c2dc4d3a5f6cf3772e09e81 + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - libssh2 >=1.11.1,<2.0a0 + size: 284216 + timestamp: 1745608575796 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.9-he1bc88e_0.conda + sha256: 151e653e72b9de48bdeb54ae0664b490d679d724e618649997530a582a67a5fb + md5: af41ebf4621373c4eeeda69cc703f19c + depends: + - __osx >=10.13 + - icu >=75.1,<76.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.1,<6.0a0 + - libzlib >=1.3.1,<2.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libxml2 >=2.13.9,<2.14.0a0 + size: 609937 + timestamp: 1761766325697 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.2-hbb4bfdb_2.conda + sha256: 4c6da089952b2d70150c74234679d6f7ac04f4a98f9432dec724968f912691e7 + md5: 30439ff30578e504ee5e0b390afc8c65 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.2 *_2 + license: Zlib + license_family: Other + purls: [] + run_exports: + weak: + - libzlib >=1.3.2,<2.0a0 + size: 59000 + timestamp: 1774073052242 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-18.1.7-hd5e122f_0.conda + sha256: 000a66921285d993aa748b0c9f39aa207331c9e5b7e2f86a57c42e79f92da9ed + md5: c8f3c58497f799f4d617282903d1cab0 + depends: + - __osx >=10.13 + - libllvm18 18.1.7 hd5e122f_0 + - libxml2 >=2.12.7,<2.14.0a0 + - libzlib >=1.2.13,<2.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - clang 18.1.7 + - llvmdev 18.1.7 + - clang-tools 18.1.7 + - llvm 18.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 24448916 + timestamp: 1717772227513 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvmdev-18.1.7-hd5e122f_0.conda + sha256: b9320209088189641ed50f02d6abc55418b73523a1817507ef0ed21fb5d767c2 + md5: 43a0f9e29406cc07593d95e8d5d6a416 + depends: + - __osx >=10.13 + - libcxx >=16 + - libllvm18 18.1.7 hd5e122f_0 + - libxml2 >=2.12.7,<2.14.0a0 + - libzlib >=1.2.13,<2.0a0 + - llvm-tools 18.1.7 hd5e122f_0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - clang 18.1.7 + - clang-tools 18.1.7 + - llvm-tools 18.1.7 + - llvm 18.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 44033239 + timestamp: 1717772482811 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.6-hcc0dc9a_0.conda + sha256: f5f7e006ff4271305ab4cc08eedd855c67a571793c3d18aff73f645f088a8cae + md5: 31b8740cf1b2588d4e61c81191004061 + depends: + - __osx >=11.0 + license: X11 AND BSD-3-Clause + purls: [] + run_exports: + weak: + - ncurses >=6.6,<7.0a0 + size: 831711 + timestamp: 1777423052277 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.6.3-hc881268_0.conda + sha256: 819d4368d6b5b298fa40d4bc836c1250842489002cacf3fb918a13ee2033b7c6 + md5: 46be42ab403712fd349d007d763bf767 + depends: + - __osx >=11.0 + - ca-certificates + license: Apache-2.0 + license_family: Apache + purls: [] + run_exports: + weak: + - openssl >=3.6.3,<4.0a0 + size: 2775300 + timestamp: 1781071391999 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.3-h1411813_0_cpython.conda + sha256: 3b327ffc152a245011011d1d730781577a8274fde1cf6243f073749ead8f1c2a + md5: df1448ec6cbf8eceb03d29003cf72ae6 + depends: + - __osx >=10.9 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.6.2,<3.0a0 + - libffi >=3.4,<4.0a0 + - libsqlite >=3.45.2,<4.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ncurses >=6.4.20240210,<7.0a0 + - openssl >=3.2.1,<4.0a0 + - readline >=8.2,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - xz >=5.2.6,<6.0a0 + constrains: + - python_abi 3.12.* *_cp312 + license: Python-2.0 + purls: [] + run_exports: + weak: + - python_abi 3.12.* *_cp312 + noarch: + - python + size: 14557341 + timestamp: 1713208068012 +- conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.3-h68b038d_0.conda + sha256: 4614af680aa0920e82b953fece85a03007e0719c3399f13d7de64176874b80d5 + md5: eefd65452dfe7cce476a519bece46704 + depends: + - __osx >=10.13 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + run_exports: + weak: + - readline >=8.3,<9.0a0 + size: 317819 + timestamp: 1765813692798 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda + sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 + md5: bf830ba5afc507c6232d4ef0fb1a882d + depends: + - libzlib >=1.2.13,<2.0.0a0 + license: TCL + license_family: BSD + purls: [] + run_exports: + weak: + - tk >=8.6.13,<8.7.0a0 + size: 3270220 + timestamp: 1699202389792 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.8.3-h6a5a847_0.conda + sha256: ba5ad03c1c99c0bc62b92fb4630a33839e07b41f1b64c2d224f63a36b6ac1c00 + md5: 65aa14eb080715ecf13b15e5d85acde2 + depends: + - __osx >=11.0 + - liblzma 5.8.3 hbb4bfdb_0 + - liblzma-devel 5.8.3 hbb4bfdb_0 + - xz-gpl-tools 5.8.3 h6a5a847_0 + - xz-tools 5.8.3 hbb4bfdb_0 + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + purls: [] + run_exports: + weak: + - liblzma >=5.8.3,<6.0a0 + size: 24261 + timestamp: 1775826189380 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.8.3-h6a5a847_0.conda + sha256: e9bbba55933e2d962f65b689796561e9b687c36fb388b42eba5c0c561c6fe574 + md5: f2d1a60e16eb0da1cac4f9d0129957da + depends: + - __osx >=11.0 + - liblzma 5.8.3 hbb4bfdb_0 + constrains: + - xz 5.8.3.* + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + purls: [] + run_exports: + weak: + - liblzma >=5.8.3,<6.0a0 + size: 34168 + timestamp: 1775826151739 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.8.3-hbb4bfdb_0.conda + sha256: 57fc818b986bf86c5dec503047d5ba2f97bf76f2de225a3e6fea0c87c6e973dd + md5: 0a8d7aa810e8bef50429295f485fb14c + depends: + - __osx >=11.0 + - liblzma 5.8.3 hbb4bfdb_0 + constrains: + - xz 5.8.3.* + license: 0BSD AND LGPL-2.1-or-later + purls: [] + run_exports: {} + size: 86264 + timestamp: 1775826113228 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.2-hbb4bfdb_2.conda + sha256: 5dd728cebca2e96fa48d41661f1a35ed0ee3cb722669eee4e2d854c6745655eb + md5: 6276aa61ffc361cbf130d78cfb88a237 + depends: + - __osx >=11.0 + - libzlib 1.3.2 hbb4bfdb_2 + license: Zlib + license_family: Other + purls: [] + run_exports: + weak: + - libzlib >=1.3.2,<2.0a0 + size: 92411 + timestamp: 1774073075482 +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda + sha256: 47101a4055a70a4876ffc87b750ab2287b67eca793f21c8224be5e1ee6394d3f + md5: 727109b184d680772e3122f40136d5ca + depends: + - __osx >=10.13 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - zstd >=1.5.7,<1.6.0a0 + size: 528148 + timestamp: 1764777156963 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-hd037594_9.conda + sha256: 540fe54be35fac0c17feefbdc3e29725cce05d7367ffedfaaa1bdda234b019df + md5: 620b85a3f45526a8bc4d23fd78fc22f0 + depends: + - __osx >=11.0 + license: bzip2-1.0.6 + license_family: BSD + purls: [] + run_exports: + weak: + - bzip2 >=1.0.8,<2.0a0 + size: 124834 + timestamp: 1771350416561 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.6-hc919400_0.conda + sha256: 2995f2aed4e53725e5efbc28199b46bf311c3cab2648fc4f10c2227d6d5fa196 + md5: bcb3cba70cf1eec964a03b4ba7775f01 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - c-ares >=1.34.6,<2.0a0 + size: 180327 + timestamp: 1765215064054 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1030.6.3-llvm19_1_hd01ab73_4.conda + sha256: 4f408036b5175be0d2c7940250d00dae5ea7a71d194a1ffb35881fb9df6211fc + md5: caf7c8e48827c2ad0c402716159fe0a2 + depends: + - cctools_impl_osx-arm64 1030.6.3 llvm19_1_he8a363d_4 + - ld64 956.6 llvm19_1_he86490a_4 + - libllvm19 >=19.1.7,<19.2.0a0 + license: APSL-2.0 + license_family: Other + purls: [] + run_exports: {} + size: 24313 + timestamp: 1768852906882 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_impl_osx-arm64-1030.6.3-llvm19_1_he8a363d_4.conda + sha256: c444442e0c01de92a75b58718a100f2e272649658d4f3dd915bbfc2316b25638 + md5: 76c651b923e048f3f3e0ecb22c966f70 + depends: + - __osx >=11.0 + - ld64_osx-arm64 >=956.6,<956.7.0a0 + - libcxx + - libllvm19 >=19.1.7,<19.2.0a0 + - libzlib >=1.3.1,<2.0a0 + - llvm-tools 19.1.* + - sigtool-codesign + constrains: + - ld64 956.6.* + - cctools 1030.6.3.* + - clang 19.1.* + license: APSL-2.0 + license_family: Other + purls: [] + run_exports: {} + size: 749918 + timestamp: 1768852866532 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-19-19.1.7-default_hf3020a7_9.conda + sha256: a1449c64f455d43153036f54c68cb075a52c1d9f3350a91f4a8936ecf1675c6b + md5: 5a77d772c22448f6ab340fbfff55db48 + depends: + - __osx >=11.0 + - libclang-cpp19.1 19.1.7 default_hf3020a7_9 + - libcxx >=19.1.7 + - libllvm19 >=19.1.7,<19.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 763361 + timestamp: 1776988759708 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-19.1.7-default_hf9bcbb7_9.conda + sha256: 8268c23a000cfeee1b83e19c59eb018ec07583905f69bfee01beac8aedd8c4df + md5: 20056c993a8c9df01e04a0e165579ec1 + depends: + - cctools + - clang-19 19.1.7.* default_* + - clang_impl_osx-arm64 19.1.7 default_hc11f16d_9 + - ld64 + - ld64_osx-arm64 * llvm19_1_* + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 24962 + timestamp: 1776989044302 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-format-19-19.1.7-default_hf3020a7_9.conda + sha256: ecb87f79f8377445fcd901060fb2a9af187ac91c098c1a444d833d4ae41cf2ea + md5: 03fc00f8bce94befe6b8e9ce56ccec56 + depends: + - __osx >=11.0 + - libclang-cpp19.1 >=19.1.7,<19.2.0a0 + - libcxx >=19.1.7 + - libllvm19 >=19.1.7,<19.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 62553 + timestamp: 1776988899878 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-format-19.1.7-default_hf3020a7_9.conda + sha256: a6dac903ec7d02e0c38a6e0a6bb4a6bad2811892bf339ac2e6cb4b4a78f249b3 + md5: 8a9e72cc9f23409110fd882ae3a805df + depends: + - __osx >=11.0 + - clang-format-19 19.1.7 default_hf3020a7_9 + - libclang-cpp19.1 >=19.1.7,<19.2.0a0 + - libcxx >=19.1.7 + - libllvm19 >=19.1.7,<19.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 25270 + timestamp: 1776989009705 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-tools-19.1.7-default_h1589341_9.conda + sha256: 0b3cdea6573996c35e80ca9d743349e71108703be79a6329c3dbb22be1f5d491 + md5: 1d58e84155ff0993fd7d58357c77b320 + depends: + - __osx >=11.0 + - clang-format 19.1.7 default_hf3020a7_9 + - libclang-cpp19.1 >=19.1.7,<19.2.0a0 + - libclang13 >=19.1.7 + - libcxx >=19.1.7 + - libllvm19 >=19.1.7,<19.2.0a0 + - libxml2 + - libxml2-16 >=2.14.6 + constrains: + - clangdev 19.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 15026501 + timestamp: 1776989117787 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-19.1.7-default_hc11f16d_9.conda + sha256: 56db3a98eda7032a0aefe38f146a4b29df9d75d08c71bf7f7d6412effe775dd1 + md5: 2aec2e39be3b4999bda2a3e5bd4cd2e6 + depends: + - cctools_impl_osx-arm64 + - clang-19 19.1.7.* default_* + - compiler-rt 19.1.7.* + - compiler-rt_osx-arm64 + - ld64_osx-arm64 * llvm19_1_* + - llvm-openmp >=19.1.7 + - llvm-tools 19.1.7.* + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 24905 + timestamp: 1776989025990 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangdev-19.1.7-default_hf3020a7_9.conda + sha256: 72d0f6d07c8b5324bc95ac3849346340337f889711993a0bd7a08d59cd5a6d14 + md5: 2d790dd1a13dd2e03b785bdbaab9d0f7 + depends: + - __osx >=11.0 + - clang 19.1.7 default_hf9bcbb7_9 + - clang-tools 19.1.7 default_h1589341_9 + - clangxx 19.1.7 default_hc995acf_9 + - libclang 19.1.7 default_hf3020a7_9 + - libclang-cpp 19.1.7 default_hf3020a7_9 + - libcxx >=19.1.7 + - llvmdev 19.1.7.* + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 29034862 + timestamp: 1776989261367 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-19.1.7-default_hc995acf_9.conda + sha256: 88697ecd1e5689e15c12d334bae2bb3900dffd91efd4686cd9eea9e1095ee986 + md5: 9a1ac8e5124fcc201adb20a103d51cc6 + depends: + - clang 19.1.7 default_hf9bcbb7_9 + - clangxx_impl_osx-arm64 19.1.7.* default_* + - libcxx-devel 19.1.* + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 24924 + timestamp: 1776989215095 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-19.1.7-default_hc11f16d_9.conda + sha256: 6b5ebc5f369ad5373091edc3d4c4d2e1f39169b7adb080395965646eb8aee7c9 + md5: 8b7425e84f940861653c919142435bde + depends: + - clang-19 19.1.7.* default_* + - clang_impl_osx-arm64 19.1.7 default_hc11f16d_9 + - libcxx-devel 19.1.* + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 24861 + timestamp: 1776989199328 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-19.1.7-h855ad52_1.conda + sha256: b58a481828aee699db7f28bfcbbe72fb133277ac60831dfe70ee2465541bcb93 + md5: 39451684370ae65667fa5c11222e43f7 + depends: + - __osx >=11.0 + - clang 19.1.7.* + - compiler-rt_osx-arm64 19.1.7.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: {} + size: 97085 + timestamp: 1757411887557 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-78.3-hef89b57_0.conda + sha256: 3a7907a17e9937d3a46dfd41cffaf815abad59a569440d1e25177c15fd0684e5 + md5: f1182c91c0de31a7abd40cedf6a5ebef + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - icu >=78.3,<79.0a0 + size: 12361647 + timestamp: 1773822915649 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.22.2-hfd3d5f3_1.conda + sha256: c740e4a2e7247776a9883158fdab50ae0732c8f67f96d8f1db8ad9da5e0b5222 + md5: 8780f41b013d19219faef9c82260744b + depends: + - __osx >=11.0 + - libcxx >=19 + - libedit >=3.1.20250104,<3.2.0a0 + - libedit >=3.1.20250104,<4.0a0 + - openssl >=3.5.7,<4.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - krb5 >=1.22.2,<1.23.0a0 + size: 1159780 + timestamp: 1781859501654 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-956.6-llvm19_1_he86490a_4.conda + sha256: d6197b4825ece12ab63097bd677294126439a1a6222c7098885aa23464ef280c + md5: 22eb76f8d98f4d3b8319d40bda9174de + depends: + - ld64_osx-arm64 956.6 llvm19_1_ha2625f7_4 + - libllvm19 >=19.1.7,<19.2.0a0 + constrains: + - cctools_osx-arm64 1030.6.3.* + - cctools 1030.6.3.* + license: APSL-2.0 + license_family: Other + purls: [] + run_exports: {} + size: 21592 + timestamp: 1768852886875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-956.6-llvm19_1_ha2625f7_4.conda + sha256: 4161eec579cea07903ee2fafdde6f8f9991dabd54f3ca6609a1bf75bed3dc788 + md5: eaf3d06e3a8a10dee7565e8d76ae618d + depends: + - __osx >=11.0 + - libcxx + - libllvm19 >=19.1.7,<19.2.0a0 + - sigtool-codesign + - tapi >=1600.0.11.8,<1601.0a0 + constrains: + - cctools_impl_osx-arm64 1030.6.3.* + - ld64 956.6.* + - cctools 1030.6.3.* + - clang 19.1.* + license: APSL-2.0 + license_family: Other + purls: [] + run_exports: {} + size: 1040464 + timestamp: 1768852821767 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-19.1.7-default_hf3020a7_9.conda + sha256: dc65ecec056b11b1606ca1d0bcd84310c23f644fd2fc579ad164eca4493af899 + md5: 2d27183e11c25e3d91138e11d2580b91 + depends: + - __osx >=11.0 + - libclang13 19.1.7 default_h13b06bd_9 + - libcxx >=19.1.7 + - libllvm19 >=19.1.7,<19.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libclang13 >=19.1.7 + size: 25224 + timestamp: 1776988937989 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp-19.1.7-default_hf3020a7_9.conda + sha256: 0d69dababfbddbe5dca1e90be56f42cc5e34a11bba8087b782cadf612b0de882 + md5: 37feb902c281c7c50c49254ffe757cdc + depends: + - __osx >=11.0 + - libclang-cpp19.1 19.1.7 default_hf3020a7_9 + - libcxx >=19.1.7 + - libllvm19 >=19.1.7,<19.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libclang-cpp19.1 >=19.1.7,<19.2.0a0 + size: 25253 + timestamp: 1776988972648 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp19.1-19.1.7-default_hf3020a7_9.conda + sha256: e05c4830a117492996bac1ad55cd7ee3e57f63b46da8a324862efbee9279ab44 + md5: ddb70ebdcbf3a44bddc2657a51faf490 + depends: + - __osx >=11.0 + - libcxx >=19.1.7 + - libllvm19 >=19.1.7,<19.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libclang-cpp19.1 >=19.1.7,<19.2.0a0 + size: 14064699 + timestamp: 1776988581784 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang13-19.1.7-default_h13b06bd_9.conda + sha256: 03bba9893f94d7cbf7e2d11dbb1736f70ce0af044be63e180895401a2dc9d65d + md5: 0bfbfaee8a27ada3ebc2977c5e00acd0 + depends: + - __osx >=11.0 + - libcxx >=19.1.7 + - libllvm19 >=19.1.7,<19.2.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libclang13 >=19.1.7 + size: 8439763 + timestamp: 1776988685803 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.20.0-hd5a2499_0.conda + sha256: 38c0bc634b61e542776e97cfd15d5d41edd304d4e47c333004d2d622439b2381 + md5: 2f57b7d0c6adda88957586b7afd78438 + depends: + - __osx >=11.0 + - krb5 >=1.22.2,<1.23.0a0 + - libnghttp2 >=1.68.1,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 + - libzlib >=1.3.2,<2.0a0 + - openssl >=3.5.6,<4.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: curl + license_family: MIT + purls: [] + run_exports: + weak: + - libcurl >=8.20.0,<9.0a0 + size: 400568 + timestamp: 1777462251987 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-22.1.8-h55c6f16_0.conda + sha256: a2e7abab5add9750fab064c024394de48e49f97631c605ad5db5c8ac3fc769ef + md5: 89f76a2a21a3ec3ec983b5eb237c4113 + depends: + - __osx >=11.0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 569349 + timestamp: 1781670209146 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-19.1.7-h6dc3340_2.conda + sha256: ec07ebaa226792f4e2bf0f5dba50325632a7474d5f04b951d8291be70af215da + md5: 9f7810b7c0a731dbc84d46d6005890ef + depends: + - libcxx >=19.1.7 + - libcxx-headers >=19.1.7,<19.1.8.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 23000 + timestamp: 1764648270121 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda + md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libdeflate >=1.22,<1.23.0a0 + size: 54089 + timestamp: 1728177149927 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20250104-pl5321hafb1f1b_0.conda + sha256: 66aa216a403de0bb0c1340a88d1a06adaff66bae2cfd196731aa24db9859d631 + md5: 44083d2d2c2025afca315c7a172eab2b + depends: + - ncurses + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + license: BSD-2-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - libedit >=3.1.20250104,<3.2.0a0 + size: 107691 + timestamp: 1738479560845 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda + sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f + md5: 36d33e440c31857372a72137f78bacf5 + license: BSD-2-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - libev >=4.33,<4.34.0a0 + size: 107458 + timestamp: 1702146414478 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.8.1-hf6b4638_1.conda + sha256: 5af74261101e3c777399c6294b2b5d290e508153268eb2e9ff99c4d69834612f + md5: a915151d5d3c5bf039f5ccc8402a436f + depends: + - __osx >=11.0 + constrains: + - expat 2.8.1.* + license: MIT + license_family: MIT + purls: [] + run_exports: {} + size: 69362 + timestamp: 1781203631990 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.5.2-hcf2aa1b_0.conda + sha256: 6686a26466a527585e6a75cc2a242bf4a3d97d6d6c86424a441677917f28bec7 + md5: 43c04d9cb46ef176bb2a4c77e324d599 + depends: + - __osx >=11.0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libffi >=3.5.2,<3.6.0a0 + size: 40979 + timestamp: 1769456747661 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.18-h23cfdf5_2.conda + sha256: de0336e800b2af9a40bdd694b03870ac4a848161b35c8a2325704f123f185f03 + md5: 4d5a7445f0b25b6a3ddbb56e790f5251 + depends: + - __osx >=11.0 + license: LGPL-2.1-only + purls: [] + run_exports: + weak: + - libiconv >=1.18,<2.0a0 + size: 750379 + timestamp: 1754909073836 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm19-19.1.7-h8e0c9ce_2.conda + sha256: 46f8ff3d86438c0af1bebe0c18261ce5de9878d58b4fe399a3a125670e4f0af5 + md5: d1d9b233830f6631800acc1e081a9444 + depends: + - __osx >=11.0 + - libcxx >=19 + - libxml2 + - libxml2-16 >=2.14.5 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: + weak: + - libllvm19 >=19.1.7,<19.2.0a0 + size: 26914852 + timestamp: 1757353228286 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.8.3-h8088a28_0.conda + sha256: 34878d87275c298f1a732c6806349125cebbf340d24c6c23727268184bba051e + md5: b1fd823b5ae54fbec272cea0811bd8a9 + depends: + - __osx >=11.0 + constrains: + - xz 5.8.3.* + license: 0BSD + purls: [] + run_exports: + weak: + - liblzma >=5.8.3,<6.0a0 + size: 92472 + timestamp: 1775825802659 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h84a0fba_1.conda + sha256: 1089c7f15d5b62c622625ec6700732ece83be8b705da8c6607f4dabb0c4bd6d2 + md5: 57c4be259f5e0b99a5983799a228ae55 + depends: + - __osx >=11.0 + license: BSD-2-Clause + license_family: BSD + purls: [] + run_exports: {} + size: 73690 + timestamp: 1769482560514 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.68.1-h8f3e76b_0.conda + sha256: 2bc7bc3978066f2c274ebcbf711850cc9ab92e023e433b9631958a098d11e10a + md5: 6ea18834adbc3b33df9bd9fb45eaf95b + depends: + - __osx >=11.0 + - c-ares >=1.34.6,<2.0a0 + - libcxx >=19 + - libev >=4.33,<4.34.0a0 + - libev >=4.33,<5.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.5,<4.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libnghttp2 >=1.68.1,<2.0a0 + size: 576526 + timestamp: 1773854624224 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsigtool-0.1.3-h98dc951_0.conda + sha256: 421f7bd7caaa945d9cd5d374cc3f01e75637ca7372a32d5e7695c825a48a30d1 + md5: c08557d00807785decafb932b5be7ef5 + depends: + - __osx >=11.0 + - openssl >=3.5.4,<4.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: {} + size: 36416 + timestamp: 1767045062496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.53.2-h1ae2325_0.conda + sha256: 862463917e8ef5ac3ebdaf8f19914634b457609cc27ba678b7197124cefeb1f7 + md5: 1ebde5c677f00765233a17e278571177 + depends: + - __osx >=11.0 + - icu >=78.3,<79.0a0 + - libzlib >=1.3.2,<2.0a0 + license: blessing + purls: [] + run_exports: + weak: + - libsqlite >=3.53.2,<4.0a0 + size: 927724 + timestamp: 1780575223548 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h1590b86_0.conda + sha256: 8bfe837221390ffc6f111ecca24fa12d4a6325da0c8d131333d63d6c37f27e0a + md5: b68e8f66b94b44aaa8de4583d3d4cc40 + depends: + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.5.0,<4.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - libssh2 >=1.11.1,<2.0a0 + size: 279193 + timestamp: 1745608793272 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-16-2.15.3-h5ef1a60_0.conda + sha256: ff75b84cdb9e8d123db2fa694a8ac2c2059516b6cbc98ac21fb68e235d0fd354 + md5: 19edaa53885fc8205614b03da2482282 + depends: + - __osx >=11.0 + - icu >=78.3,<79.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libzlib >=1.3.2,<2.0a0 + constrains: + - libxml2 2.15.3 + license: MIT + license_family: MIT + purls: [] + run_exports: {} + size: 466360 + timestamp: 1776377102261 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.15.3-h5654f7c_0.conda + sha256: 2fe1d8de0854342ae9cabe408b476935f82f5636e153b3b497456264dc8ff3a1 + md5: 8e037d73747d6fe34e12d7bcac10cf21 + depends: + - __osx >=11.0 + - icu >=78.3,<79.0a0 + - libiconv >=1.18,<2.0a0 + - liblzma >=5.8.3,<6.0a0 + - libxml2-16 2.15.3 h5ef1a60_0 + - libzlib >=1.3.2,<2.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: + weak: + - libxml2 + - libxml2-16 >=2.15.3 + size: 41102 + timestamp: 1776377119495 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.2-h8088a28_2.conda + sha256: 361415a698514b19a852f5d1123c5da746d4642139904156ddfca7c922d23a05 + md5: bc5a5721b6439f2f62a84f2548136082 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.2 *_2 + license: Zlib + license_family: Other + purls: [] + run_exports: + weak: + - libzlib >=1.3.2,<2.0a0 + size: 47759 + timestamp: 1774072956767 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-22.1.8-hc7d1edf_0.conda + sha256: ccbaad6bbc88f135ab849bc36af5fa6eda36a9ed18ce6f58e3dde3d11784c156 + md5: a9c118f6343fb6301b6f3b4e94c4c562 + depends: + - __osx >=11.0 + constrains: + - intel-openmp <0.0a0 + - openmp 22.1.8|22.1.8.* + license: Apache-2.0 WITH LLVM-exception + license_family: APACHE + purls: [] + run_exports: + strong: + - llvm-openmp >=22.1.8 + size: 286313 + timestamp: 1781736516782 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-19-19.1.7-h91fd4e7_2.conda + sha256: 73f9506f7c32a448071340e73a0e8461e349082d63ecc4849e3eb2d1efc357dd + md5: 8237b150fcd7baf65258eef9a0fc76ef + depends: + - __osx >=11.0 + - libcxx >=19 + - libllvm19 19.1.7 h8e0c9ce_2 + - libzlib >=1.3.1,<2.0a0 + - zstd >=1.5.7,<1.6.0a0 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 16376095 + timestamp: 1757353442671 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-19.1.7-h855ad52_2.conda + sha256: 09750c33b5d694c494cad9eafda56c61a62622264173d760341b49fb001afe82 + md5: 3e3ac06efc5fdc1aa675ca30bf7d53df + depends: + - __osx >=11.0 + - libllvm19 19.1.7 h8e0c9ce_2 + - llvm-tools-19 19.1.7 h91fd4e7_2 + constrains: + - llvm 19.1.7 + - llvmdev 19.1.7 + - clang-tools 19.1.7 + - clang 19.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 88390 + timestamp: 1757353535760 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvmdev-19.1.7-h91fd4e7_2.conda + sha256: 321c651f0ba81ed0df3a6d7bbdf1de02ba13679ce1c880382fb73fbd245b4ae1 + md5: 46d3c0cdc4e2361ace6d6014d6e94d64 + depends: + - __osx >=11.0 + - libcxx >=19 + - libllvm19 19.1.7 h8e0c9ce_2 + - libzlib >=1.3.1,<2.0a0 + - llvm-tools 19.1.7 h855ad52_2 + - zstd >=1.5.7,<1.6.0a0 + constrains: + - llvm 19.1.7 + - llvm-tools 19.1.7 + - clang-tools 19.1.7 + - clang 19.1.7 + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + purls: [] + run_exports: {} + size: 45637337 + timestamp: 1757353673840 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.6-h1d4f5a5_0.conda + sha256: 4ea6c620b87bd1d42bb2ccc2c87cd2483fa2d7f9e905b14c223f11ff3f4c455d + md5: 343d10ed5b44030a2f67193905aea159 + depends: + - __osx >=11.0 + license: X11 AND BSD-3-Clause + purls: [] + run_exports: + weak: + - ncurses >=6.6,<7.0a0 + size: 805509 + timestamp: 1777423252320 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.6.3-hd24854e_0.conda + sha256: b3e3ca895c336d4eb91c5d2f244a312bdb59a0de8cfa0cc4c179225ab2f6bbfb + md5: 8187a86242741725bfa74785fe812979 + depends: + - __osx >=11.0 + - ca-certificates + license: Apache-2.0 + license_family: Apache + purls: [] + run_exports: + weak: + - openssl >=3.6.3,<4.0a0 + size: 3102584 + timestamp: 1781069820667 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.14.6-h156bc91_100_cp314.conda + build_number: 100 + sha256: 984081c9fae3a3944c6f2707bbbbc70e8b961f02cdb7c640d9745e2636235632 + md5: 4841be3d0cf616a860efc6e60af66f8b + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libexpat >=2.8.1,<3.0a0 + - libffi >=3.5.2,<3.6.0a0 + - liblzma >=5.8.3,<6.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.53.2,<4.0a0 + - libzlib >=1.3.2,<2.0a0 + - ncurses >=6.6,<7.0a0 + - openssl >=3.5.7,<4.0a0 + - python_abi 3.14.* *_cp314 + - readline >=8.3,<9.0a0 + - tk >=8.6.13,<8.7.0a0 + - tzdata + - zstd >=1.5.7,<1.6.0a0 + license: Python-2.0 + purls: [] + run_exports: + weak: + - python_abi 3.14.* *_cp314 + noarch: + - python + size: 14059371 + timestamp: 1781254578985 + python_site_packages_path: lib/python3.14/site-packages +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.3-h46df422_0.conda + sha256: a77010528efb4b548ac2a4484eaf7e1c3907f2aec86123ed9c5212ae44502477 + md5: f8381319127120ce51e081dce4865cf4 + depends: + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + license: GPL-3.0-only + license_family: GPL + purls: [] + run_exports: + weak: + - readline >=8.3,<9.0a0 + size: 313930 + timestamp: 1765813902568 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-codesign-0.1.3-h98dc951_0.conda + sha256: f3d006e2441f110160a684744d90921bbedbffa247d7599d7e76b5cd048116dc + md5: ade77ad7513177297b1d75e351e136ce + depends: + - __osx >=11.0 + - libsigtool 0.1.3 h98dc951_0 + - openssl >=3.5.4,<4.0a0 + license: MIT + license_family: MIT + purls: [] + run_exports: {} + size: 114331 + timestamp: 1767045086274 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1600.0.11.8-h997e182_2.conda + sha256: de6893e53664e769c1b1c4103a666d436e3d307c0eb6a09a164e749d116e80f7 + md5: 555070ad1e18b72de36e9ee7ed3236b3 + depends: + - libcxx >=19.0.0.a0 + - __osx >=11.0 + - ncurses >=6.5,<7.0a0 + license: NCSA + purls: [] + run_exports: {} + size: 200192 + timestamp: 1775657222120 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h010d191_3.conda + sha256: 799cab4b6cde62f91f750149995d149bc9db525ec12595e8a1d91b9317f038b3 + md5: a9d86bc62f39b94c4661716624eb21b0 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: TCL + license_family: BSD + purls: [] + run_exports: + weak: + - tk >=8.6.13,<8.7.0a0 + size: 3127137 + timestamp: 1769460817696 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.2-h8088a28_2.conda + sha256: 8dd2ac25f0ba714263aac5832d46985648f4bfb9b305b5021d702079badc08d2 + md5: f1c0bce276210bed45a04949cfe8dc20 + depends: + - __osx >=11.0 + - libzlib 1.3.2 h8088a28_2 + license: Zlib + license_family: Other + purls: [] + run_exports: + weak: + - libzlib >=1.3.2,<2.0a0 + size: 81123 + timestamp: 1774072974535 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda + sha256: 9485ba49e8f47d2b597dd399e88f4802e100851b27c21d7525625b0b4025a5d9 + md5: ab136e4c34e97f34fb621d2592a393d8 + depends: + - __osx >=11.0 + - libzlib >=1.3.1,<2.0a0 + license: BSD-3-Clause + license_family: BSD + purls: [] + run_exports: + weak: + - zstd >=1.5.7,<1.6.0a0 + size: 433413 + timestamp: 1764777166076 +- pypi: . + name: deeptools + requires_dist: + - numpy>=2.0 + - scipy>=1.13 + - matplotlib>=3.9 + - pysam>=0.23 + - numpydoc>=1.8 + - pybigwig>=0.3 + - py2bit>=0.3 + - pandas>=2.2 + - scikit-learn>=1.6 + - deeptoolsintervals>=0.1 + - maturin + - flake8 ; extra == 'actions' + - pytest ; extra == 'actions' + - twine ; extra == 'actions' + - build ; extra == 'actions' + - planemo ; extra == 'actions' + requires_python: '>3.9' +- pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl + name: docutils + version: 0.22.4 + sha256: d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl + name: roman-numerals + version: 4.1.0 + sha256: 647ba99caddc2cc1e55a51e4360689115551bf4476d90e8162cf8c345fe233c7 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl + name: sphinxcontrib-htmlhelp + version: 2.1.0 + sha256: 166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8 + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + - html5lib ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl + name: charset-normalizer + version: 3.4.7 + sha256: eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl + name: pyparsing + version: 3.3.2 + sha256: 850ba148bd908d7e2411587e247a1e4f0327839c40e2e5e6d05a007ecc69911d + requires_dist: + - railroad-diagrams ; extra == 'diagrams' + - jinja2 ; extra == 'diagrams' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/14/27/cc422d11961a00bd04aa9a8d9a63683a1083fe2e6a491c285a94998d6751/pysam-0.24.0-cp312-cp312-macosx_10_13_x86_64.whl + name: pysam + version: 0.24.0 + sha256: 38d5cc5dff4bdaceabbb58c0700c41b132aacf783432b1d16060b46ac7d866e2 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/1a/bd/9c0d5d6983905ce2c9edaa073a7e89355a9cf7f396988e05d32f1c37785d/maturin-1.14.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl + name: maturin + version: 1.14.1 + sha256: dfc54ae32e6fcb18302193ab9a30b0b25eefffba994ae13238974805533ef75e + requires_dist: + - tomli>=1.1.0 ; python_full_version < '3.11' + - patchelf ; extra == 'patchelf' + - ziglang>=0.10.0 ; extra == 'zig' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + name: idna + version: '3.18' + sha256: 7f952cbe720b688055e3f87de14f5c3e5fdaa8bc3928985c4077ca689de849a2 + requires_dist: + - ruff>=0.6.2 ; extra == 'all' + - mypy>=1.11.2 ; extra == 'all' + - pytest>=8.3.2 ; extra == 'all' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + name: pandas + version: 3.0.3 + sha256: fed2ff7fd9779120e388e285fc029bd5cf9490cdd2e4166a9ee22c0e49a9ab09 + requires_dist: + - numpy>=1.26.0 ; python_full_version < '3.14' + - numpy>=2.3.3 ; python_full_version >= '3.14' + - python-dateutil>=2.8.2 + - tzdata ; sys_platform == 'win32' + - tzdata ; sys_platform == 'emscripten' + - hypothesis>=6.116.0 ; extra == 'test' + - pytest>=8.3.4 ; extra == 'test' + - pytest-xdist>=3.6.1 ; extra == 'test' + - pyarrow>=13.0.0 ; extra == 'pyarrow' + - bottleneck>=1.4.2 ; extra == 'performance' + - numba>=0.60.0 ; extra == 'performance' + - numexpr>=2.10.2 ; extra == 'performance' + - scipy>=1.14.1 ; extra == 'computation' + - xarray>=2024.10.0 ; extra == 'computation' + - fsspec>=2024.10.0 ; extra == 'fss' + - s3fs>=2024.10.0 ; extra == 'aws' + - gcsfs>=2024.10.0 ; extra == 'gcp' + - odfpy>=1.4.1 ; extra == 'excel' + - openpyxl>=3.1.5 ; extra == 'excel' + - python-calamine>=0.3.0 ; extra == 'excel' + - pyxlsb>=1.0.10 ; extra == 'excel' + - xlrd>=2.0.1 ; extra == 'excel' + - xlsxwriter>=3.2.0 ; extra == 'excel' + - pyarrow>=13.0.0 ; extra == 'parquet' + - pyarrow>=13.0.0 ; extra == 'feather' + - pyiceberg>=0.8.1 ; extra == 'iceberg' + - tables>=3.10.1 ; extra == 'hdf5' + - pyreadstat>=1.2.8 ; extra == 'spss' + - sqlalchemy>=2.0.36 ; extra == 'postgresql' + - psycopg2>=2.9.10 ; extra == 'postgresql' + - adbc-driver-postgresql>=1.2.0 ; extra == 'postgresql' + - sqlalchemy>=2.0.36 ; extra == 'mysql' + - pymysql>=1.1.1 ; extra == 'mysql' + - sqlalchemy>=2.0.36 ; extra == 'sql-other' + - adbc-driver-postgresql>=1.2.0 ; extra == 'sql-other' + - adbc-driver-sqlite>=1.2.0 ; extra == 'sql-other' + - beautifulsoup4>=4.12.3 ; extra == 'html' + - html5lib>=1.1 ; extra == 'html' + - lxml>=5.3.0 ; extra == 'html' + - lxml>=5.3.0 ; extra == 'xml' + - matplotlib>=3.9.3 ; extra == 'plot' + - jinja2>=3.1.5 ; extra == 'output-formatting' + - tabulate>=0.9.0 ; extra == 'output-formatting' + - pyqt5>=5.15.9 ; extra == 'clipboard' + - qtpy>=2.4.2 ; extra == 'clipboard' + - zstandard>=0.23.0 ; extra == 'compression' + - pytz>=2020.1 ; extra == 'timezone' + - adbc-driver-postgresql>=1.2.0 ; extra == 'all' + - adbc-driver-sqlite>=1.2.0 ; extra == 'all' + - beautifulsoup4>=4.12.3 ; extra == 'all' + - bottleneck>=1.4.2 ; extra == 'all' + - fastparquet>=2024.11.0 ; extra == 'all' + - fsspec>=2024.10.0 ; extra == 'all' + - gcsfs>=2024.10.0 ; extra == 'all' + - html5lib>=1.1 ; extra == 'all' + - hypothesis>=6.116.0 ; extra == 'all' + - jinja2>=3.1.5 ; extra == 'all' + - lxml>=5.3.0 ; extra == 'all' + - matplotlib>=3.9.3 ; extra == 'all' + - numba>=0.60.0 ; extra == 'all' + - numexpr>=2.10.2 ; extra == 'all' + - odfpy>=1.4.1 ; extra == 'all' + - openpyxl>=3.1.5 ; extra == 'all' + - psycopg2>=2.9.10 ; extra == 'all' + - pyarrow>=13.0.0 ; extra == 'all' + - pyiceberg>=0.8.1 ; extra == 'all' + - pymysql>=1.1.1 ; extra == 'all' + - pyqt5>=5.15.9 ; extra == 'all' + - pyreadstat>=1.2.8 ; extra == 'all' + - pytest>=8.3.4 ; extra == 'all' + - pytest-xdist>=3.6.1 ; extra == 'all' + - python-calamine>=0.3.0 ; extra == 'all' + - pytz>=2020.1 ; extra == 'all' + - pyxlsb>=1.0.10 ; extra == 'all' + - qtpy>=2.4.2 ; extra == 'all' + - scipy>=1.14.1 ; extra == 'all' + - s3fs>=2024.10.0 ; extra == 'all' + - sqlalchemy>=2.0.36 ; extra == 'all' + - tables>=3.10.1 ; extra == 'all' + - tabulate>=0.9.0 ; extra == 'all' + - xarray>=2024.10.0 ; extra == 'all' + - xlrd>=2.0.1 ; extra == 'all' + - xlsxwriter>=3.2.0 ; extra == 'all' + - zstandard>=0.23.0 ; extra == 'all' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl + name: sphinxcontrib-qthelp + version: 2.0.0 + sha256: b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + - defusedxml>=0.7.1 ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/27/d2/23d25e3f247b328be58d04a4c9f894178a0d1eda7d42867cfb388adaf416/fonttools-4.63.0-cp314-cp314-macosx_10_15_universal2.whl + name: fonttools + version: 4.63.0 + sha256: fd1e3094f42d806d3d7c79162fc59e5910fcbe3a7360c385b8da969bc4493745 + requires_dist: + - lxml>=4.0 ; extra == 'lxml' + - brotli>=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'woff' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'woff' + - zopfli>=0.1.4 ; extra == 'woff' + - unicodedata2>=17.0.0 ; python_full_version < '3.15' and extra == 'unicode' + - lz4>=1.7.4.2 ; extra == 'graphite' + - scipy ; platform_python_implementation != 'PyPy' and extra == 'interpolatable' + - munkres ; platform_python_implementation == 'PyPy' and extra == 'interpolatable' + - pycairo ; extra == 'interpolatable' + - matplotlib ; extra == 'plot' + - sympy ; extra == 'symfont' + - xattr ; sys_platform == 'darwin' and extra == 'type1' + - skia-pathops>=0.5.0 ; extra == 'pathops' + - uharfbuzz>=0.45.0 ; extra == 'repacker' + - lxml>=4.0 ; extra == 'all' + - brotli>=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'all' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'all' + - zopfli>=0.1.4 ; extra == 'all' + - unicodedata2>=17.0.0 ; python_full_version < '3.15' and extra == 'all' + - lz4>=1.7.4.2 ; extra == 'all' + - scipy ; platform_python_implementation != 'PyPy' and extra == 'all' + - munkres ; platform_python_implementation == 'PyPy' and extra == 'all' + - pycairo ; extra == 'all' + - matplotlib ; extra == 'all' + - sympy ; extra == 'all' + - xattr ; sys_platform == 'darwin' and extra == 'all' + - skia-pathops>=0.5.0 ; extra == 'all' + - uharfbuzz>=0.45.0 ; extra == 'all' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl + name: threadpoolctl + version: 3.6.0 + sha256: 43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl + name: sphinxcontrib-devhelp + version: 2.0.0 + sha256: aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2 + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: markupsafe + version: 3.0.3 + sha256: d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/3c/a7/552a7821597c632b907f7bfe8f36f9f572777af8ef8a48353041cf8e091a/scikit_learn-1.9.0-cp314-cp314-macosx_12_0_arm64.whl + name: scikit-learn + version: 1.9.0 + sha256: 24360002ae845e7866522b0a5bbf690802e7bc388cac8663502e78aa98598aa2 + requires_dist: + - numpy>=1.24.1 + - scipy>=1.10.0 + - joblib>=1.4.0 + - narwhals>=2.0.1 + - threadpoolctl>=3.5.0 + - numpy>=1.24.1 ; extra == 'build' + - scipy>=1.10.0 ; extra == 'build' + - cython>=3.1.2 ; extra == 'build' + - meson-python>=0.17.1 ; extra == 'build' + - numpy>=1.24.1 ; extra == 'install' + - scipy>=1.10.0 ; extra == 'install' + - joblib>=1.4.0 ; extra == 'install' + - narwhals>=2.0.1 ; extra == 'install' + - threadpoolctl>=3.5.0 ; extra == 'install' + - matplotlib>=3.6.1 ; extra == 'benchmark' + - pandas>=1.5.0 ; extra == 'benchmark' + - memory-profiler>=0.57.0 ; extra == 'benchmark' + - matplotlib>=3.6.1 ; extra == 'docs' + - scikit-image>=0.22.0 ; extra == 'docs' + - pandas>=1.5.0 ; extra == 'docs' + - rich>=14.1.0 ; extra == 'docs' + - seaborn>=0.13.0 ; extra == 'docs' + - memory-profiler>=0.57.0 ; extra == 'docs' + - sphinx>=7.3.7 ; extra == 'docs' + - sphinx-copybutton>=0.5.2 ; extra == 'docs' + - sphinx-gallery>=0.17.1 ; extra == 'docs' + - numpydoc>=1.2.0 ; extra == 'docs' + - pillow>=12.1.1 ; extra == 'docs' + - pooch>=1.8.0 ; extra == 'docs' + - sphinx-prompt>=1.4.0 ; extra == 'docs' + - sphinxext-opengraph>=0.9.1 ; extra == 'docs' + - plotly>=5.22.0 ; extra == 'docs' + - polars>=0.20.30 ; extra == 'docs' + - sphinx-design>=0.6.0 ; extra == 'docs' + - sphinxcontrib-sass>=0.3.4 ; extra == 'docs' + - pydata-sphinx-theme>=0.15.3 ; extra == 'docs' + - sphinx-remove-toctrees>=1.0.0.post1 ; extra == 'docs' + - towncrier>=24.8.0 ; extra == 'docs' + - matplotlib>=3.6.1 ; extra == 'examples' + - scikit-image>=0.22.0 ; extra == 'examples' + - pandas>=1.5.0 ; extra == 'examples' + - rich>=14.1.0 ; extra == 'examples' + - seaborn>=0.13.0 ; extra == 'examples' + - pooch>=1.8.0 ; extra == 'examples' + - plotly>=5.22.0 ; extra == 'examples' + - matplotlib>=3.6.1 ; extra == 'tests' + - pandas>=1.5.0 ; extra == 'tests' + - rich>=14.1.0 ; extra == 'tests' + - pytest>=7.1.2 ; extra == 'tests' + - pytest-cov>=2.9.0 ; extra == 'tests' + - ruff>=0.12.2 ; extra == 'tests' + - mypy>=1.15 ; extra == 'tests' + - pyamg>=5.0.0 ; extra == 'tests' + - polars>=0.20.30 ; extra == 'tests' + - pyarrow>=13.0.0 ; extra == 'tests' + - numpydoc>=1.2.0 ; extra == 'tests' + - pooch>=1.8.0 ; extra == 'tests' + - conda-lock==3.0.1 ; extra == 'maintenance' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: pillow + version: 12.2.0 + sha256: 62f5409336adb0663b7caa0da5c7d9e7bdbaae9ce761d34669420c2a801b2780 + requires_dist: + - furo ; extra == 'docs' + - olefile ; extra == 'docs' + - sphinx>=8.2 ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-inline-tabs ; extra == 'docs' + - sphinxext-opengraph ; extra == 'docs' + - olefile ; extra == 'fpx' + - olefile ; extra == 'mic' + - arro3-compute ; extra == 'test-arrow' + - arro3-core ; extra == 'test-arrow' + - nanoarrow ; extra == 'test-arrow' + - pyarrow ; extra == 'test-arrow' + - check-manifest ; extra == 'tests' + - coverage>=7.4.2 ; extra == 'tests' + - defusedxml ; extra == 'tests' + - markdown2 ; extra == 'tests' + - olefile ; extra == 'tests' + - packaging ; extra == 'tests' + - pyroma>=5 ; extra == 'tests' + - pytest ; extra == 'tests' + - pytest-cov ; extra == 'tests' + - pytest-timeout ; extra == 'tests' + - pytest-xdist ; extra == 'tests' + - trove-classifiers>=2024.10.12 ; extra == 'tests' + - defusedxml ; extra == 'xmp' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl + name: fonttools + version: 4.63.0 + sha256: a9faff9e0c1f76f9fd55899d2ce785832efebab37eb8ae13995853aef178bef0 + requires_dist: + - lxml>=4.0 ; extra == 'lxml' + - brotli>=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'woff' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'woff' + - zopfli>=0.1.4 ; extra == 'woff' + - unicodedata2>=17.0.0 ; python_full_version < '3.15' and extra == 'unicode' + - lz4>=1.7.4.2 ; extra == 'graphite' + - scipy ; platform_python_implementation != 'PyPy' and extra == 'interpolatable' + - munkres ; platform_python_implementation == 'PyPy' and extra == 'interpolatable' + - pycairo ; extra == 'interpolatable' + - matplotlib ; extra == 'plot' + - sympy ; extra == 'symfont' + - xattr ; sys_platform == 'darwin' and extra == 'type1' + - skia-pathops>=0.5.0 ; extra == 'pathops' + - uharfbuzz>=0.45.0 ; extra == 'repacker' + - lxml>=4.0 ; extra == 'all' + - brotli>=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'all' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'all' + - zopfli>=0.1.4 ; extra == 'all' + - unicodedata2>=17.0.0 ; python_full_version < '3.15' and extra == 'all' + - lz4>=1.7.4.2 ; extra == 'all' + - scipy ; platform_python_implementation != 'PyPy' and extra == 'all' + - munkres ; platform_python_implementation == 'PyPy' and extra == 'all' + - pycairo ; extra == 'all' + - matplotlib ; extra == 'all' + - sympy ; extra == 'all' + - xattr ; sys_platform == 'darwin' and extra == 'all' + - skia-pathops>=0.5.0 ; extra == 'all' + - uharfbuzz>=0.45.0 ; extra == 'all' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/46/3b/9dedd2e35cebcd4eb3539514b5ac674fd45654404839e6f9eff6e25d67c7/py2bit-1.0.1.tar.gz + name: py2bit + version: 1.0.1 + sha256: 4972f85eb3844cdfba43eb54ab3c8349a0536e03dfd7db07ca8d3447285ad20c +- pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl + name: narwhals + version: 2.22.1 + sha256: 60567d774edf77db53906f89d9fbd164e66e56d66d388e1e6990f17ac33cfb53 + requires_dist: + - cudf-cu12>=24.10.0 ; sys_platform == 'linux' and extra == 'cudf' + - dask[dataframe]>=2024.8 ; extra == 'dask' + - duckdb>=1.1 ; extra == 'duckdb' + - ibis-framework>=6.0.0 ; extra == 'ibis' + - rich>=12.4.4 ; extra == 'ibis' + - packaging>=21.3 ; extra == 'ibis' + - pyarrow-hotfix>=0.7 ; extra == 'ibis' + - modin>=0.22.0 ; extra == 'modin' + - pandas>=1.3.4 ; extra == 'pandas' + - polars>=0.20.4 ; extra == 'polars' + - pyarrow>=13.0.0 ; extra == 'pyarrow' + - pyspark>=3.5.0 ; extra == 'pyspark' + - pyspark[connect]>=3.5.0 ; extra == 'pyspark-connect' + - narwhals[duckdb] ; extra == 'sql' + - sqlparse>=0.5.5 ; extra == 'sql' + - sqlframe>=3.22.0,!=3.39.3 ; extra == 'sqlframe' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/49/b2/97980f3ad4fae37dd7fe31626e2bf75fbf8bdf5d303950ec1fab39a12da8/kiwisolver-1.5.0-cp314-cp314-macosx_11_0_arm64.whl + name: kiwisolver + version: 1.5.0 + sha256: 0cbe94b69b819209a62cb27bdfa5dc2a8977d8de2f89dfd97ba4f53ed3af754e + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: charset-normalizer + version: 3.4.7 + sha256: 5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl + name: snowballstemmer + version: 3.1.1 + sha256: 7e207fa178741da09cdee59d3ecec3827ad5f92b1fc5c9ff3755b639f71f5752 + requires_python: '>=3.3' +- pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl + name: sphinxcontrib-serializinghtml + version: 2.0.0 + sha256: 6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331 + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/55/0f/e7f1ff3a1cabc6c4486a7ee1b0506aedf2f5f8329760ac1f4e8032feef2b/pysam-0.24.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: pysam + version: 0.24.0 + sha256: 4a642f18649e59817de272173e9c27c031dceaca199809e4f8b338ebfc5d6698 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl + name: pillow + version: 12.2.0 + sha256: 2d192a155bbcec180f8564f693e6fd9bccff5a7af9b32e2e4bf8c9c69dbad6b5 + requires_dist: + - furo ; extra == 'docs' + - olefile ; extra == 'docs' + - sphinx>=8.2 ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-inline-tabs ; extra == 'docs' + - sphinxext-opengraph ; extra == 'docs' + - olefile ; extra == 'fpx' + - olefile ; extra == 'mic' + - arro3-compute ; extra == 'test-arrow' + - arro3-core ; extra == 'test-arrow' + - nanoarrow ; extra == 'test-arrow' + - pyarrow ; extra == 'test-arrow' + - check-manifest ; extra == 'tests' + - coverage>=7.4.2 ; extra == 'tests' + - defusedxml ; extra == 'tests' + - markdown2 ; extra == 'tests' + - olefile ; extra == 'tests' + - packaging ; extra == 'tests' + - pyroma>=5 ; extra == 'tests' + - pytest ; extra == 'tests' + - pytest-cov ; extra == 'tests' + - pytest-timeout ; extra == 'tests' + - pytest-xdist ; extra == 'tests' + - trove-classifiers>=2024.10.12 ; extra == 'tests' + - defusedxml ; extra == 'xmp' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + name: markupsafe + version: 3.0.3 + sha256: d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/5d/39/b72e168daf9c00fb20c9fc996d00437ccecdef3102387775d29d7a62576d/numpy-2.5.0-cp314-cp314-macosx_11_0_arm64.whl + name: numpy + version: 2.5.0 + sha256: 28e7137057d551e4a83c4ae414e3451f50568409db7569aacc7f9811ee06a446 + requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl + name: sphinxcontrib-applehelp + version: 2.0.0 + sha256: 4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5 + requires_dist: + - ruff==0.5.5 ; extra == 'lint' + - mypy ; extra == 'lint' + - types-docutils ; extra == 'lint' + - sphinx>=5 ; extra == 'standalone' + - pytest ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/5f/53/fb7122b71361a0d121b669dcf3d31244ef75badbbb724af388948de543e2/imagesize-2.0.0-py2.py3-none-any.whl + name: imagesize + version: 2.0.0 + sha256: 5667c5bbb57ab3f1fa4bc366f4fbc971db3d5ed011fd2715fd8001f782718d96 + requires_python: '>=3.10,<3.15' +- pypi: https://files.pythonhosted.org/packages/62/5e/3a6a3e90f35cea3853c45e5d5fb9b7192ce4384616f932cf7591298ab6e1/numpydoc-1.10.0-py3-none-any.whl + name: numpydoc + version: 1.10.0 + sha256: 3149da9874af890bcc2a82ef7aae5484e5aa81cb2778f08e3c307ba6d963721b + requires_dist: + - sphinx>=6 + - tomli>=1.1.0 ; python_full_version < '3.11' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + name: jinja2 + version: 3.1.6 + sha256: 85ece4451f492d0c13c5dd7c13a64681a86afae63a5f347908daf103ce6d2f67 + requires_dist: + - markupsafe>=2.0 + - babel>=2.7 ; extra == 'i18n' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/65/b6/09b01cdbc15224e2850365192d17b7bdebb8bdbd8780ed221fcdf0d9a515/pandas-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + name: pandas + version: 3.0.3 + sha256: 6dc0b3fd2169c9157deed50b4d519553a3655c8c6a96027136d654592be973a9 + requires_dist: + - numpy>=1.26.0 ; python_full_version < '3.14' + - numpy>=2.3.3 ; python_full_version >= '3.14' + - python-dateutil>=2.8.2 + - tzdata ; sys_platform == 'win32' + - tzdata ; sys_platform == 'emscripten' + - hypothesis>=6.116.0 ; extra == 'test' + - pytest>=8.3.4 ; extra == 'test' + - pytest-xdist>=3.6.1 ; extra == 'test' + - pyarrow>=13.0.0 ; extra == 'pyarrow' + - bottleneck>=1.4.2 ; extra == 'performance' + - numba>=0.60.0 ; extra == 'performance' + - numexpr>=2.10.2 ; extra == 'performance' + - scipy>=1.14.1 ; extra == 'computation' + - xarray>=2024.10.0 ; extra == 'computation' + - fsspec>=2024.10.0 ; extra == 'fss' + - s3fs>=2024.10.0 ; extra == 'aws' + - gcsfs>=2024.10.0 ; extra == 'gcp' + - odfpy>=1.4.1 ; extra == 'excel' + - openpyxl>=3.1.5 ; extra == 'excel' + - python-calamine>=0.3.0 ; extra == 'excel' + - pyxlsb>=1.0.10 ; extra == 'excel' + - xlrd>=2.0.1 ; extra == 'excel' + - xlsxwriter>=3.2.0 ; extra == 'excel' + - pyarrow>=13.0.0 ; extra == 'parquet' + - pyarrow>=13.0.0 ; extra == 'feather' + - pyiceberg>=0.8.1 ; extra == 'iceberg' + - tables>=3.10.1 ; extra == 'hdf5' + - pyreadstat>=1.2.8 ; extra == 'spss' + - sqlalchemy>=2.0.36 ; extra == 'postgresql' + - psycopg2>=2.9.10 ; extra == 'postgresql' + - adbc-driver-postgresql>=1.2.0 ; extra == 'postgresql' + - sqlalchemy>=2.0.36 ; extra == 'mysql' + - pymysql>=1.1.1 ; extra == 'mysql' + - sqlalchemy>=2.0.36 ; extra == 'sql-other' + - adbc-driver-postgresql>=1.2.0 ; extra == 'sql-other' + - adbc-driver-sqlite>=1.2.0 ; extra == 'sql-other' + - beautifulsoup4>=4.12.3 ; extra == 'html' + - html5lib>=1.1 ; extra == 'html' + - lxml>=5.3.0 ; extra == 'html' + - lxml>=5.3.0 ; extra == 'xml' + - matplotlib>=3.9.3 ; extra == 'plot' + - jinja2>=3.1.5 ; extra == 'output-formatting' + - tabulate>=0.9.0 ; extra == 'output-formatting' + - pyqt5>=5.15.9 ; extra == 'clipboard' + - qtpy>=2.4.2 ; extra == 'clipboard' + - zstandard>=0.23.0 ; extra == 'compression' + - pytz>=2020.1 ; extra == 'timezone' + - adbc-driver-postgresql>=1.2.0 ; extra == 'all' + - adbc-driver-sqlite>=1.2.0 ; extra == 'all' + - beautifulsoup4>=4.12.3 ; extra == 'all' + - bottleneck>=1.4.2 ; extra == 'all' + - fastparquet>=2024.11.0 ; extra == 'all' + - fsspec>=2024.10.0 ; extra == 'all' + - gcsfs>=2024.10.0 ; extra == 'all' + - html5lib>=1.1 ; extra == 'all' + - hypothesis>=6.116.0 ; extra == 'all' + - jinja2>=3.1.5 ; extra == 'all' + - lxml>=5.3.0 ; extra == 'all' + - matplotlib>=3.9.3 ; extra == 'all' + - numba>=0.60.0 ; extra == 'all' + - numexpr>=2.10.2 ; extra == 'all' + - odfpy>=1.4.1 ; extra == 'all' + - openpyxl>=3.1.5 ; extra == 'all' + - psycopg2>=2.9.10 ; extra == 'all' + - pyarrow>=13.0.0 ; extra == 'all' + - pyiceberg>=0.8.1 ; extra == 'all' + - pymysql>=1.1.1 ; extra == 'all' + - pyqt5>=5.15.9 ; extra == 'all' + - pyreadstat>=1.2.8 ; extra == 'all' + - pytest>=8.3.4 ; extra == 'all' + - pytest-xdist>=3.6.1 ; extra == 'all' + - python-calamine>=0.3.0 ; extra == 'all' + - pytz>=2020.1 ; extra == 'all' + - pyxlsb>=1.0.10 ; extra == 'all' + - qtpy>=2.4.2 ; extra == 'all' + - scipy>=1.14.1 ; extra == 'all' + - s3fs>=2024.10.0 ; extra == 'all' + - sqlalchemy>=2.0.36 ; extra == 'all' + - tables>=3.10.1 ; extra == 'all' + - tabulate>=0.9.0 ; extra == 'all' + - xarray>=2024.10.0 ; extra == 'all' + - xlrd>=2.0.1 ; extra == 'all' + - xlsxwriter>=3.2.0 ; extra == 'all' + - zstandard>=0.23.0 ; extra == 'all' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/68/10/bf2d6738d72748b961a3751ab89522d58c54efc36a8e1a12161216cd45cf/pandas-3.0.3-cp314-cp314-macosx_11_0_arm64.whl + name: pandas + version: 3.0.3 + sha256: bab900348131a7db1f69a7309ef141fd5680f1487094193bcbbb61791573bf8f + requires_dist: + - numpy>=1.26.0 ; python_full_version < '3.14' + - numpy>=2.3.3 ; python_full_version >= '3.14' + - python-dateutil>=2.8.2 + - tzdata ; sys_platform == 'win32' + - tzdata ; sys_platform == 'emscripten' + - hypothesis>=6.116.0 ; extra == 'test' + - pytest>=8.3.4 ; extra == 'test' + - pytest-xdist>=3.6.1 ; extra == 'test' + - pyarrow>=13.0.0 ; extra == 'pyarrow' + - bottleneck>=1.4.2 ; extra == 'performance' + - numba>=0.60.0 ; extra == 'performance' + - numexpr>=2.10.2 ; extra == 'performance' + - scipy>=1.14.1 ; extra == 'computation' + - xarray>=2024.10.0 ; extra == 'computation' + - fsspec>=2024.10.0 ; extra == 'fss' + - s3fs>=2024.10.0 ; extra == 'aws' + - gcsfs>=2024.10.0 ; extra == 'gcp' + - odfpy>=1.4.1 ; extra == 'excel' + - openpyxl>=3.1.5 ; extra == 'excel' + - python-calamine>=0.3.0 ; extra == 'excel' + - pyxlsb>=1.0.10 ; extra == 'excel' + - xlrd>=2.0.1 ; extra == 'excel' + - xlsxwriter>=3.2.0 ; extra == 'excel' + - pyarrow>=13.0.0 ; extra == 'parquet' + - pyarrow>=13.0.0 ; extra == 'feather' + - pyiceberg>=0.8.1 ; extra == 'iceberg' + - tables>=3.10.1 ; extra == 'hdf5' + - pyreadstat>=1.2.8 ; extra == 'spss' + - sqlalchemy>=2.0.36 ; extra == 'postgresql' + - psycopg2>=2.9.10 ; extra == 'postgresql' + - adbc-driver-postgresql>=1.2.0 ; extra == 'postgresql' + - sqlalchemy>=2.0.36 ; extra == 'mysql' + - pymysql>=1.1.1 ; extra == 'mysql' + - sqlalchemy>=2.0.36 ; extra == 'sql-other' + - adbc-driver-postgresql>=1.2.0 ; extra == 'sql-other' + - adbc-driver-sqlite>=1.2.0 ; extra == 'sql-other' + - beautifulsoup4>=4.12.3 ; extra == 'html' + - html5lib>=1.1 ; extra == 'html' + - lxml>=5.3.0 ; extra == 'html' + - lxml>=5.3.0 ; extra == 'xml' + - matplotlib>=3.9.3 ; extra == 'plot' + - jinja2>=3.1.5 ; extra == 'output-formatting' + - tabulate>=0.9.0 ; extra == 'output-formatting' + - pyqt5>=5.15.9 ; extra == 'clipboard' + - qtpy>=2.4.2 ; extra == 'clipboard' + - zstandard>=0.23.0 ; extra == 'compression' + - pytz>=2020.1 ; extra == 'timezone' + - adbc-driver-postgresql>=1.2.0 ; extra == 'all' + - adbc-driver-sqlite>=1.2.0 ; extra == 'all' + - beautifulsoup4>=4.12.3 ; extra == 'all' + - bottleneck>=1.4.2 ; extra == 'all' + - fastparquet>=2024.11.0 ; extra == 'all' + - fsspec>=2024.10.0 ; extra == 'all' + - gcsfs>=2024.10.0 ; extra == 'all' + - html5lib>=1.1 ; extra == 'all' + - hypothesis>=6.116.0 ; extra == 'all' + - jinja2>=3.1.5 ; extra == 'all' + - lxml>=5.3.0 ; extra == 'all' + - matplotlib>=3.9.3 ; extra == 'all' + - numba>=0.60.0 ; extra == 'all' + - numexpr>=2.10.2 ; extra == 'all' + - odfpy>=1.4.1 ; extra == 'all' + - openpyxl>=3.1.5 ; extra == 'all' + - psycopg2>=2.9.10 ; extra == 'all' + - pyarrow>=13.0.0 ; extra == 'all' + - pyiceberg>=0.8.1 ; extra == 'all' + - pymysql>=1.1.1 ; extra == 'all' + - pyqt5>=5.15.9 ; extra == 'all' + - pyreadstat>=1.2.8 ; extra == 'all' + - pytest>=8.3.4 ; extra == 'all' + - pytest-xdist>=3.6.1 ; extra == 'all' + - python-calamine>=0.3.0 ; extra == 'all' + - pytz>=2020.1 ; extra == 'all' + - pyxlsb>=1.0.10 ; extra == 'all' + - qtpy>=2.4.2 ; extra == 'all' + - scipy>=1.14.1 ; extra == 'all' + - s3fs>=2024.10.0 ; extra == 'all' + - sqlalchemy>=2.0.36 ; extra == 'all' + - tables>=3.10.1 ; extra == 'all' + - tabulate>=0.9.0 ; extra == 'all' + - xarray>=2024.10.0 ; extra == 'all' + - xlrd>=2.0.1 ; extra == 'all' + - xlsxwriter>=3.2.0 ; extra == 'all' + - zstandard>=0.23.0 ; extra == 'all' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/6a/19/ca10ead60b0acc80b2b833c2c4a4f2ff753d0f58b811f70d911c7e94a25c/scipy-1.18.0-cp312-cp312-macosx_10_15_x86_64.whl + name: scipy + version: 1.18.0 + sha256: 7bd21faaf5a1a3b2eff922d02db5f191b99a6518db9078a8fb23169f6d22259a + requires_dist: + - numpy>=2.0.0,<2.8 + - pytest>=8.0.0 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-xdist ; extra == 'test' + - asv ; extra == 'test' + - mpmath ; extra == 'test' + - gmpy2 ; extra == 'test' + - threadpoolctl ; extra == 'test' + - scikit-umfpack ; extra == 'test' + - pooch ; extra == 'test' + - hypothesis>=6.30 ; extra == 'test' + - array-api-strict>=2.3.1 ; extra == 'test' + - cython ; extra == 'test' + - meson ; extra == 'test' + - ninja ; sys_platform != 'emscripten' and extra == 'test' + - scipy-doctest>=2.0.0 ; extra == 'test' + - sphinx>=5.0.0,<8.2.0 ; extra == 'doc' + - intersphinx-registry ; extra == 'doc' + - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' + - sphinx-copybutton ; extra == 'doc' + - sphinx-design>=0.4.0 ; extra == 'doc' + - matplotlib>=3.5 ; extra == 'doc' + - numpydoc ; extra == 'doc' + - jupytext ; extra == 'doc' + - myst-nb>=1.2.0 ; extra == 'doc' + - pooch ; extra == 'doc' + - jupyterlite-sphinx>=0.19.1 ; extra == 'doc' + - jupyterlite-pyodide-kernel ; extra == 'doc' + - linkify-it-py ; extra == 'doc' + - tabulate ; extra == 'doc' + - click<8.3.0 ; extra == 'dev' + - spin ; extra == 'dev' + - mypy==1.19.1 ; extra == 'dev' + - pyrefly==0.63.0 ; extra == 'dev' + - typing-extensions ; extra == 'dev' + - types-psutil ; extra == 'dev' + - pycodestyle ; extra == 'dev' + - ruff>=0.12.0 ; extra == 'dev' + - cython-lint>=0.12.2 ; extra == 'dev' + requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/6b/67/6ea73b2173bcb1abe3a947fbd090cf96ee1b0a75f3f690e8902dc8ffdbfa/py2bit-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: py2bit + version: 1.0.1 + sha256: 0cbd9754342dc9595f46b18e655af01d89e78d9762b0b541fcd4e96076523275 +- pypi: https://files.pythonhosted.org/packages/6c/c2/63fdda36c56437eeb44aaf9493c8bcd62ce230ab1598924fc626ffbfa943/scikit_learn-1.9.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: scikit-learn + version: 1.9.0 + sha256: 056c92bb67ad4c28463c2f2653d9701449201e7e7a9e94e321be0f71c4fef2b8 + requires_dist: + - numpy>=1.24.1 + - scipy>=1.10.0 + - joblib>=1.4.0 + - narwhals>=2.0.1 + - threadpoolctl>=3.5.0 + - numpy>=1.24.1 ; extra == 'build' + - scipy>=1.10.0 ; extra == 'build' + - cython>=3.1.2 ; extra == 'build' + - meson-python>=0.17.1 ; extra == 'build' + - numpy>=1.24.1 ; extra == 'install' + - scipy>=1.10.0 ; extra == 'install' + - joblib>=1.4.0 ; extra == 'install' + - narwhals>=2.0.1 ; extra == 'install' + - threadpoolctl>=3.5.0 ; extra == 'install' + - matplotlib>=3.6.1 ; extra == 'benchmark' + - pandas>=1.5.0 ; extra == 'benchmark' + - memory-profiler>=0.57.0 ; extra == 'benchmark' + - matplotlib>=3.6.1 ; extra == 'docs' + - scikit-image>=0.22.0 ; extra == 'docs' + - pandas>=1.5.0 ; extra == 'docs' + - rich>=14.1.0 ; extra == 'docs' + - seaborn>=0.13.0 ; extra == 'docs' + - memory-profiler>=0.57.0 ; extra == 'docs' + - sphinx>=7.3.7 ; extra == 'docs' + - sphinx-copybutton>=0.5.2 ; extra == 'docs' + - sphinx-gallery>=0.17.1 ; extra == 'docs' + - numpydoc>=1.2.0 ; extra == 'docs' + - pillow>=12.1.1 ; extra == 'docs' + - pooch>=1.8.0 ; extra == 'docs' + - sphinx-prompt>=1.4.0 ; extra == 'docs' + - sphinxext-opengraph>=0.9.1 ; extra == 'docs' + - plotly>=5.22.0 ; extra == 'docs' + - polars>=0.20.30 ; extra == 'docs' + - sphinx-design>=0.6.0 ; extra == 'docs' + - sphinxcontrib-sass>=0.3.4 ; extra == 'docs' + - pydata-sphinx-theme>=0.15.3 ; extra == 'docs' + - sphinx-remove-toctrees>=1.0.0.post1 ; extra == 'docs' + - towncrier>=24.8.0 ; extra == 'docs' + - matplotlib>=3.6.1 ; extra == 'examples' + - scikit-image>=0.22.0 ; extra == 'examples' + - pandas>=1.5.0 ; extra == 'examples' + - rich>=14.1.0 ; extra == 'examples' + - seaborn>=0.13.0 ; extra == 'examples' + - pooch>=1.8.0 ; extra == 'examples' + - plotly>=5.22.0 ; extra == 'examples' + - matplotlib>=3.6.1 ; extra == 'tests' + - pandas>=1.5.0 ; extra == 'tests' + - rich>=14.1.0 ; extra == 'tests' + - pytest>=7.1.2 ; extra == 'tests' + - pytest-cov>=2.9.0 ; extra == 'tests' + - ruff>=0.12.2 ; extra == 'tests' + - mypy>=1.15 ; extra == 'tests' + - pyamg>=5.0.0 ; extra == 'tests' + - polars>=0.20.30 ; extra == 'tests' + - pyarrow>=13.0.0 ; extra == 'tests' + - numpydoc>=1.2.0 ; extra == 'tests' + - pooch>=1.8.0 ; extra == 'tests' + - conda-lock==3.0.1 ; extra == 'maintenance' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/72/65/a4559d4ff4a210d2a26d7ca0712e4e738cbfc963135f86e8ae807ca420eb/pysam-0.24.0-cp314-cp314-macosx_11_0_arm64.whl + name: pysam + version: 0.24.0 + sha256: f6f95d44efb4ee1dcfd18fcd11b26ba00bc1afaba9128a1b56c4c8887208fb07 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl + name: sphinx + version: 9.1.0 + sha256: c84fdd4e782504495fe4f2c0b3413d6c2bf388589bb352d439b2a3bb99991978 + requires_dist: + - sphinxcontrib-applehelp>=1.0.7 + - sphinxcontrib-devhelp>=1.0.6 + - sphinxcontrib-htmlhelp>=2.0.6 + - sphinxcontrib-jsmath>=1.0.1 + - sphinxcontrib-qthelp>=1.0.6 + - sphinxcontrib-serializinghtml>=1.1.9 + - jinja2>=3.1 + - pygments>=2.17 + - docutils>=0.21,<0.23 + - snowballstemmer>=2.2 + - babel>=2.13 + - alabaster>=0.7.14 + - imagesize>=1.3 + - requests>=2.30.0 + - roman-numerals>=1.0.0 + - packaging>=23.0 + - colorama>=0.4.6 ; sys_platform == 'win32' + requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + name: fonttools + version: 4.63.0 + sha256: 58dc6bb86a78d782f00f9190ca02c119cf5bbe2807536e361e18d42019f877d8 + requires_dist: + - lxml>=4.0 ; extra == 'lxml' + - brotli>=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'woff' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'woff' + - zopfli>=0.1.4 ; extra == 'woff' + - unicodedata2>=17.0.0 ; python_full_version < '3.15' and extra == 'unicode' + - lz4>=1.7.4.2 ; extra == 'graphite' + - scipy ; platform_python_implementation != 'PyPy' and extra == 'interpolatable' + - munkres ; platform_python_implementation == 'PyPy' and extra == 'interpolatable' + - pycairo ; extra == 'interpolatable' + - matplotlib ; extra == 'plot' + - sympy ; extra == 'symfont' + - xattr ; sys_platform == 'darwin' and extra == 'type1' + - skia-pathops>=0.5.0 ; extra == 'pathops' + - uharfbuzz>=0.45.0 ; extra == 'repacker' + - lxml>=4.0 ; extra == 'all' + - brotli>=1.0.1 ; platform_python_implementation == 'CPython' and extra == 'all' + - brotlicffi>=0.8.0 ; platform_python_implementation != 'CPython' and extra == 'all' + - zopfli>=0.1.4 ; extra == 'all' + - unicodedata2>=17.0.0 ; python_full_version < '3.15' and extra == 'all' + - lz4>=1.7.4.2 ; extra == 'all' + - scipy ; platform_python_implementation != 'PyPy' and extra == 'all' + - munkres ; platform_python_implementation == 'PyPy' and extra == 'all' + - pycairo ; extra == 'all' + - matplotlib ; extra == 'all' + - sympy ; extra == 'all' + - xattr ; sys_platform == 'darwin' and extra == 'all' + - skia-pathops>=0.5.0 ; extra == 'all' + - uharfbuzz>=0.45.0 ; extra == 'all' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl + name: babel + version: 2.18.0 + sha256: e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35 + requires_dist: + - pytz>=2015.7 ; python_full_version < '3.9' + - tzdata ; sys_platform == 'win32' and extra == 'dev' + - backports-zoneinfo ; python_full_version < '3.9' and extra == 'dev' + - freezegun~=1.0 ; extra == 'dev' + - jinja2>=3.0 ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - pytest>=6.0 ; extra == 'dev' + - pytz ; extra == 'dev' + - setuptools ; extra == 'dev' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/7a/f6/51d8a97116de23c9280c1fa3b813bc088f8571ce5936ba84af1ecf13ed45/pybigwig-0.3.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: pybigwig + version: 0.3.25 + sha256: 852c41f00afc610322eb3c5aba74068d05b340d09db4573db2deca330ad48f30 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl + name: joblib + version: 1.5.3 + sha256: 5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/7c/03/b8cdb625a21f710dfa11bbca1f48fb4057d2c0286975f8b415bf80942c99/matplotlib-3.11.0-cp314-cp314-macosx_11_0_arm64.whl + name: matplotlib + version: 3.11.0 + sha256: 25c2e5455efd8d99f41fb79871a31feb7d301569642e332ec58d72cfe9282bc3 + requires_dist: + - contourpy>=1.0.1 + - cycler>=0.10 + - fonttools>=4.22.0 + - kiwisolver>=1.3.1 + - numpy>=1.25 + - packaging>=20.0 + - pillow>=9 + - pyparsing>=3 + - python-dateutil>=2.7 + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl + name: alabaster + version: 1.0.0 + sha256: fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl + name: urllib3 + version: 2.7.0 + sha256: 9fb4c81ebbb1ce9531cce37674bbc6f1360472bc18ca9a553ede278ef7276897 + requires_dist: + - brotli>=1.2.0 ; platform_python_implementation == 'CPython' and extra == 'brotli' + - brotlicffi>=1.2.0.0 ; platform_python_implementation != 'CPython' and extra == 'brotli' + - h2>=4,<5 ; extra == 'h2' + - pysocks>=1.5.6,!=1.5.7,<2.0 ; extra == 'socks' + - backports-zstd>=1.0.0 ; python_full_version < '3.14' and extra == 'zstd' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/94/95/7f522393c88313336b20d70fc849555757b2e5febc22b83b3a3f0fd4bce9/matplotlib-3.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + name: matplotlib + version: 3.11.0 + sha256: be5f93a1d21981bfb802ded0d77a0caa92d4342a47d45754fac77e314a506344 + requires_dist: + - contourpy>=1.0.1 + - cycler>=0.10 + - fonttools>=4.22.0 + - kiwisolver>=1.3.1 + - numpy>=1.25 + - packaging>=20.0 + - pillow>=9 + - pyparsing>=3 + - python-dateutil>=2.7 + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl + name: charset-normalizer + version: 3.4.7 + sha256: c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl + name: requests + version: 2.34.2 + sha256: 2a0d60c172f83ac6ab31e4554906c0f3b3588d37b5cb939b1c061f4907e278e0 + requires_dist: + - charset-normalizer>=2,<4 + - idna>=2.5,<4 + - urllib3>=1.26,<3 + - certifi>=2023.5.7 + - pysocks>=1.5.6,!=1.5.7 ; extra == 'socks' + - chardet>=3.0.2,<8 ; extra == 'use-chardet-on-py3' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/ac/1f/d10d6ad23c86c62d90d867d0506881a392ec6ef06885b858eaab868dd356/deeptoolsintervals-0.1.9.tar.gz + name: deeptoolsintervals + version: 0.1.9 + sha256: 7d94c36fd2b6f10d8b99e536d2672e8228971f1fc810497d33527bba2c40d4f6 +- pypi: https://files.pythonhosted.org/packages/ac/20/75f915ff375d6249e6550ac740fdbbd66159a068fd3af1400ff62036b07a/scikit_learn-1.9.0-cp312-cp312-macosx_10_13_x86_64.whl + name: scikit-learn + version: 1.9.0 + sha256: 2bd41b0d201bc81575531b96b713d3eb5e5f50fb0b82101ff0f92294fdc236ac + requires_dist: + - numpy>=1.24.1 + - scipy>=1.10.0 + - joblib>=1.4.0 + - narwhals>=2.0.1 + - threadpoolctl>=3.5.0 + - numpy>=1.24.1 ; extra == 'build' + - scipy>=1.10.0 ; extra == 'build' + - cython>=3.1.2 ; extra == 'build' + - meson-python>=0.17.1 ; extra == 'build' + - numpy>=1.24.1 ; extra == 'install' + - scipy>=1.10.0 ; extra == 'install' + - joblib>=1.4.0 ; extra == 'install' + - narwhals>=2.0.1 ; extra == 'install' + - threadpoolctl>=3.5.0 ; extra == 'install' + - matplotlib>=3.6.1 ; extra == 'benchmark' + - pandas>=1.5.0 ; extra == 'benchmark' + - memory-profiler>=0.57.0 ; extra == 'benchmark' + - matplotlib>=3.6.1 ; extra == 'docs' + - scikit-image>=0.22.0 ; extra == 'docs' + - pandas>=1.5.0 ; extra == 'docs' + - rich>=14.1.0 ; extra == 'docs' + - seaborn>=0.13.0 ; extra == 'docs' + - memory-profiler>=0.57.0 ; extra == 'docs' + - sphinx>=7.3.7 ; extra == 'docs' + - sphinx-copybutton>=0.5.2 ; extra == 'docs' + - sphinx-gallery>=0.17.1 ; extra == 'docs' + - numpydoc>=1.2.0 ; extra == 'docs' + - pillow>=12.1.1 ; extra == 'docs' + - pooch>=1.8.0 ; extra == 'docs' + - sphinx-prompt>=1.4.0 ; extra == 'docs' + - sphinxext-opengraph>=0.9.1 ; extra == 'docs' + - plotly>=5.22.0 ; extra == 'docs' + - polars>=0.20.30 ; extra == 'docs' + - sphinx-design>=0.6.0 ; extra == 'docs' + - sphinxcontrib-sass>=0.3.4 ; extra == 'docs' + - pydata-sphinx-theme>=0.15.3 ; extra == 'docs' + - sphinx-remove-toctrees>=1.0.0.post1 ; extra == 'docs' + - towncrier>=24.8.0 ; extra == 'docs' + - matplotlib>=3.6.1 ; extra == 'examples' + - scikit-image>=0.22.0 ; extra == 'examples' + - pandas>=1.5.0 ; extra == 'examples' + - rich>=14.1.0 ; extra == 'examples' + - seaborn>=0.13.0 ; extra == 'examples' + - pooch>=1.8.0 ; extra == 'examples' + - plotly>=5.22.0 ; extra == 'examples' + - matplotlib>=3.6.1 ; extra == 'tests' + - pandas>=1.5.0 ; extra == 'tests' + - rich>=14.1.0 ; extra == 'tests' + - pytest>=7.1.2 ; extra == 'tests' + - pytest-cov>=2.9.0 ; extra == 'tests' + - ruff>=0.12.2 ; extra == 'tests' + - mypy>=1.15 ; extra == 'tests' + - pyamg>=5.0.0 ; extra == 'tests' + - polars>=0.20.30 ; extra == 'tests' + - pyarrow>=13.0.0 ; extra == 'tests' + - numpydoc>=1.2.0 ; extra == 'tests' + - pooch>=1.8.0 ; extra == 'tests' + - conda-lock==3.0.1 ; extra == 'maintenance' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl + name: markupsafe + version: 3.0.3 + sha256: c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + name: six + version: 1.17.0 + sha256: 4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/ba/8c/1a9e46228571de18f8e28f16fabdfc20212a5d019f3e3303452b3f0a580d/pillow-12.2.0-cp314-cp314-macosx_11_0_arm64.whl + name: pillow + version: 12.2.0 + sha256: 80b2da48193b2f33ed0c32c38140f9d3186583ce7d516526d462645fd98660ae + requires_dist: + - furo ; extra == 'docs' + - olefile ; extra == 'docs' + - sphinx>=8.2 ; extra == 'docs' + - sphinx-autobuild ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - sphinx-inline-tabs ; extra == 'docs' + - sphinxext-opengraph ; extra == 'docs' + - olefile ; extra == 'fpx' + - olefile ; extra == 'mic' + - arro3-compute ; extra == 'test-arrow' + - arro3-core ; extra == 'test-arrow' + - nanoarrow ; extra == 'test-arrow' + - pyarrow ; extra == 'test-arrow' + - check-manifest ; extra == 'tests' + - coverage>=7.4.2 ; extra == 'tests' + - defusedxml ; extra == 'tests' + - markdown2 ; extra == 'tests' + - olefile ; extra == 'tests' + - packaging ; extra == 'tests' + - pyroma>=5 ; extra == 'tests' + - pytest ; extra == 'tests' + - pytest-cov ; extra == 'tests' + - pytest-timeout ; extra == 'tests' + - pytest-xdist ; extra == 'tests' + - trove-classifiers>=2024.10.12 ; extra == 'tests' + - defusedxml ; extra == 'xmp' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/bb/6b/f4a3d0637692c49da8ef99d72d52526f92e0a8d6ac4f0ca9f31441b9d9ea/numpy-2.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: numpy + version: 2.5.0 + sha256: aaa760137137e8d3c920d27927748215b56014f92667dc9b6c27dfc61249255a + requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl + name: contourpy + version: 1.3.3 + sha256: b08a32ea2f8e42cf1d4be3169a98dd4be32bafe4f22b6c4cb4ba810fa9e5d2cb + requires_dist: + - numpy>=1.25 + - furo ; extra == 'docs' + - sphinx>=7.2 ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - bokeh ; extra == 'bokeh' + - selenium ; extra == 'bokeh' + - contourpy[bokeh,docs] ; extra == 'mypy' + - bokeh ; extra == 'mypy' + - docutils-stubs ; extra == 'mypy' + - mypy==1.17.0 ; extra == 'mypy' + - types-pillow ; extra == 'mypy' + - contourpy[test-no-images] ; extra == 'test' + - matplotlib ; extra == 'test' + - pillow ; extra == 'test' + - pytest ; extra == 'test-no-images' + - pytest-cov ; extra == 'test-no-images' + - pytest-rerunfailures ; extra == 'test-no-images' + - pytest-xdist ; extra == 'test-no-images' + - wurlitzer ; extra == 'test-no-images' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/bf/d9/405320f8077e8e1c5c4bd6adc45e1e6edf6d727b6da7f2e2533cf58bff71/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl + name: kiwisolver + version: 1.5.0 + sha256: 72ec46b7eba5b395e0a7b63025490d3214c11013f4aacb4f5e8d6c3041829588 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl + name: sphinxcontrib-jsmath + version: 1.0.1 + sha256: 2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178 + requires_dist: + - pytest ; extra == 'test' + - flake8 ; extra == 'test' + - mypy ; extra == 'test' + requires_python: '>=3.5' +- pypi: https://files.pythonhosted.org/packages/c4/13/680c54afe3e65767bed7ec1a15571e1a2f1257128733851ade24abcefbcc/kiwisolver-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + name: kiwisolver + version: 1.5.0 + sha256: bb5136fb5352d3f422df33f0c879a1b0c204004324150cc3b5e3c4f310c9049f + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: contourpy + version: 1.3.3 + sha256: 4d00e655fcef08aba35ec9610536bfe90267d7ab5ba944f7032549c55a146da1 + requires_dist: + - numpy>=1.25 + - furo ; extra == 'docs' + - sphinx>=7.2 ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - bokeh ; extra == 'bokeh' + - selenium ; extra == 'bokeh' + - contourpy[bokeh,docs] ; extra == 'mypy' + - bokeh ; extra == 'mypy' + - docutils-stubs ; extra == 'mypy' + - mypy==1.17.0 ; extra == 'mypy' + - types-pillow ; extra == 'mypy' + - contourpy[test-no-images] ; extra == 'test' + - matplotlib ; extra == 'test' + - pillow ; extra == 'test' + - pytest ; extra == 'test-no-images' + - pytest-cov ; extra == 'test-no-images' + - pytest-rerunfailures ; extra == 'test-no-images' + - pytest-xdist ; extra == 'test-no-images' + - wurlitzer ; extra == 'test-no-images' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/cf/f4/672930ad51bbc135f51cac89577155f1d0c2d120375fc77978d3aa071bb7/pybigwig-0.3.25.tar.gz + name: pybigwig + version: 0.3.25 + sha256: 8c717b0222e6677956fd659c8a21650983679ffb3314427d7f68d2910fad202a + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/d7/88/b72def7262e150d16be13fca37a96481138d624e700340bc3362a7588929/scipy-1.18.0-cp314-cp314-macosx_12_0_arm64.whl + name: scipy + version: 1.18.0 + sha256: 2ef3abc54a4ffc53765374b0d5728532dfdd2585ed23f6b11c206a1f0b1b9af8 + requires_dist: + - numpy>=2.0.0,<2.8 + - pytest>=8.0.0 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-xdist ; extra == 'test' + - asv ; extra == 'test' + - mpmath ; extra == 'test' + - gmpy2 ; extra == 'test' + - threadpoolctl ; extra == 'test' + - scikit-umfpack ; extra == 'test' + - pooch ; extra == 'test' + - hypothesis>=6.30 ; extra == 'test' + - array-api-strict>=2.3.1 ; extra == 'test' + - cython ; extra == 'test' + - meson ; extra == 'test' + - ninja ; sys_platform != 'emscripten' and extra == 'test' + - scipy-doctest>=2.0.0 ; extra == 'test' + - sphinx>=5.0.0,<8.2.0 ; extra == 'doc' + - intersphinx-registry ; extra == 'doc' + - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' + - sphinx-copybutton ; extra == 'doc' + - sphinx-design>=0.4.0 ; extra == 'doc' + - matplotlib>=3.5 ; extra == 'doc' + - numpydoc ; extra == 'doc' + - jupytext ; extra == 'doc' + - myst-nb>=1.2.0 ; extra == 'doc' + - pooch ; extra == 'doc' + - jupyterlite-sphinx>=0.19.1 ; extra == 'doc' + - jupyterlite-pyodide-kernel ; extra == 'doc' + - linkify-it-py ; extra == 'doc' + - tabulate ; extra == 'doc' + - click<8.3.0 ; extra == 'dev' + - spin ; extra == 'dev' + - mypy==1.19.1 ; extra == 'dev' + - pyrefly==0.63.0 ; extra == 'dev' + - typing-extensions ; extra == 'dev' + - types-psutil ; extra == 'dev' + - pycodestyle ; extra == 'dev' + - ruff>=0.12.0 ; extra == 'dev' + - cython-lint>=0.12.2 ; extra == 'dev' + requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/da/17/f5276b496c61477a6c4fc5e7401f4bfe1c2e5ef7c6cd67896f2ade3809cb/matplotlib-3.11.0-cp312-cp312-macosx_10_13_x86_64.whl + name: matplotlib + version: 3.11.0 + sha256: 06b5872e9cf11adc8f589ded3ce11bc3e1061ad498259664fabc1f6615beb918 + requires_dist: + - contourpy>=1.0.1 + - cycler>=0.10 + - fonttools>=4.22.0 + - kiwisolver>=1.3.1 + - numpy>=1.25 + - packaging>=20.0 + - pillow>=9 + - pyparsing>=3 + - python-dateutil>=2.7 + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/dd/aa/1b939f6c67ed68635bb538e6752d3dacc02f66535182e939a89581a44e9c/scipy-1.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + name: scipy + version: 1.18.0 + sha256: 1f55797419e16e7f30cf88ffb3113ce0467f00cfe3f70d5c281730b21769bfc2 + requires_dist: + - numpy>=2.0.0,<2.8 + - pytest>=8.0.0 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-xdist ; extra == 'test' + - asv ; extra == 'test' + - mpmath ; extra == 'test' + - gmpy2 ; extra == 'test' + - threadpoolctl ; extra == 'test' + - scikit-umfpack ; extra == 'test' + - pooch ; extra == 'test' + - hypothesis>=6.30 ; extra == 'test' + - array-api-strict>=2.3.1 ; extra == 'test' + - cython ; extra == 'test' + - meson ; extra == 'test' + - ninja ; sys_platform != 'emscripten' and extra == 'test' + - scipy-doctest>=2.0.0 ; extra == 'test' + - sphinx>=5.0.0,<8.2.0 ; extra == 'doc' + - intersphinx-registry ; extra == 'doc' + - pydata-sphinx-theme>=0.15.2 ; extra == 'doc' + - sphinx-copybutton ; extra == 'doc' + - sphinx-design>=0.4.0 ; extra == 'doc' + - matplotlib>=3.5 ; extra == 'doc' + - numpydoc ; extra == 'doc' + - jupytext ; extra == 'doc' + - myst-nb>=1.2.0 ; extra == 'doc' + - pooch ; extra == 'doc' + - jupyterlite-sphinx>=0.19.1 ; extra == 'doc' + - jupyterlite-pyodide-kernel ; extra == 'doc' + - linkify-it-py ; extra == 'doc' + - tabulate ; extra == 'doc' + - click<8.3.0 ; extra == 'dev' + - spin ; extra == 'dev' + - mypy==1.19.1 ; extra == 'dev' + - pyrefly==0.63.0 ; extra == 'dev' + - typing-extensions ; extra == 'dev' + - types-psutil ; extra == 'dev' + - pycodestyle ; extra == 'dev' + - ruff>=0.12.0 ; extra == 'dev' + - cython-lint>=0.12.2 ; extra == 'dev' + requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl + name: packaging + version: '26.2' + sha256: 5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl + name: cycler + version: 0.12.1 + sha256: 85cef7cff222d8644161529808465972e51340599459b8ac3ccbac5a854e0d30 + requires_dist: + - ipython ; extra == 'docs' + - matplotlib ; extra == 'docs' + - numpydoc ; extra == 'docs' + - sphinx ; extra == 'docs' + - pytest ; extra == 'tests' + - pytest-cov ; extra == 'tests' + - pytest-xdist ; extra == 'tests' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl + name: python-dateutil + version: 2.9.0.post0 + sha256: a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 + requires_dist: + - six>=1.5 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl + name: certifi + version: 2026.6.17 + sha256: 2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl + name: pygments + version: 2.20.0 + sha256: 81a9e26dd42fd28a23a2d169d86d7ac03b46e2f8b59ed4698fb4785f946d0176 + requires_dist: + - colorama>=0.4.6 ; extra == 'windows-terminal' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/fa/0a/11486d02add7b1384dff7374d124b1cfbb0ee864dcc9f6a2c0380638cf84/numpy-2.5.0-cp312-cp312-macosx_10_13_x86_64.whl + name: numpy + version: 2.5.0 + sha256: 489780423903667933b4ed6197b6ec3b75ea5dd17d1d8f0f38d798feb6921561 + requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl + name: contourpy + version: 1.3.3 + sha256: cbedb772ed74ff5be440fa8eee9bd49f64f6e3fc09436d9c7d8f1c287b121d77 + requires_dist: + - numpy>=1.25 + - furo ; extra == 'docs' + - sphinx>=7.2 ; extra == 'docs' + - sphinx-copybutton ; extra == 'docs' + - bokeh ; extra == 'bokeh' + - selenium ; extra == 'bokeh' + - contourpy[bokeh,docs] ; extra == 'mypy' + - bokeh ; extra == 'mypy' + - docutils-stubs ; extra == 'mypy' + - mypy==1.17.0 ; extra == 'mypy' + - types-pillow ; extra == 'mypy' + - contourpy[test-no-images] ; extra == 'test' + - matplotlib ; extra == 'test' + - pillow ; extra == 'test' + - pytest ; extra == 'test-no-images' + - pytest-cov ; extra == 'test-no-images' + - pytest-rerunfailures ; extra == 'test-no-images' + - pytest-xdist ; extra == 'test-no-images' + - wurlitzer ; extra == 'test-no-images' + requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/fe/83/294bca639b0e052f1e2f65199b3db258780c7d4e31408b934c9c974a1379/maturin-1.14.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl + name: maturin + version: 1.14.1 + sha256: ffe5ad71f21d1e6603c4dd75f7fee34adf5ed5ebcebb692886549888ebb329ed + requires_dist: + - tomli>=1.1.0 ; python_full_version < '3.11' + - patchelf ; extra == 'patchelf' + - ziglang>=0.10.0 ; extra == 'zig' + requires_python: '>=3.7' diff --git a/pyproject.toml b/pyproject.toml index c218cb5687..9a6fddf68f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -37,7 +37,8 @@ dependencies = [ "py2bit >= 0.3", "pandas >= 2.2", "scikit-learn >= 1.6", - "deeptoolsintervals >= 0.1" + "deeptoolsintervals >= 0.1", + "maturin" ] description = "Useful tools for exploring deep sequencing data." license = {file = "LICENSE.txt"} @@ -90,3 +91,19 @@ bamCompare = "deeptools.bamCompare2:main" computeMatrix = "deeptools.computeMatrix2:main" #alignmentSieve = "deeptools.alignmentSieve2:main" multiBamSummary = "deeptools.multiBamSummary2:main" + +[tool.pixi.workspace] +channels = ["conda-forge", "bioconda"] +platforms = ["linux-64", "osx-arm64", "osx-64"] +[tool.pixi.dependencies] +libclang = "<22" +clangdev = "<22" +#compilers = "*" +#gcc = "*" +#gxx = "*" +htslib = "<=1.19" +zlib = "*" +[tool.pixi.pypi-dependencies] +deeptools = { path = ".", editable = true } +[tool.pixi.activation.env] +LIBCLANG_PATH = "$CONDA_PREFIX/lib" diff --git a/src/alignmentsieve.rs b/src/alignmentsieve.rs index c8998c588e..d680c8eb21 100644 --- a/src/alignmentsieve.rs +++ b/src/alignmentsieve.rs @@ -1,35 +1,35 @@ +use crate::covcalc::{parse_regions, Region}; +use crate::filehandler::{is_bed_or_gtf, read_bedfile}; +use crate::filtering::Alignmentfilters; use pyo3::prelude::*; use pyo3::types::PyList; use rayon::prelude::*; use rayon::ThreadPoolBuilder; use rust_htslib::bam::{self, Header, IndexedReader, Read, Reader, Writer}; -use tempfile::{Builder, TempPath}; use std::fs::File; use std::io::Write; -use crate::covcalc::{parse_regions, Region}; -use crate::filtering::Alignmentfilters; -use crate::filehandler::{is_bed_or_gtf, read_bedfile}; +use tempfile::{Builder, TempPath}; #[pyfunction] pub fn r_alignmentsieve( - bamifile: &str, // input bamfile - ofile: &str, // output file - nproc: usize, // threads - filter_metrics: &str, // filter metrics file. + py: Python, + bamifile: &str, // input bamfile + ofile: &str, // output file + nproc: usize, // threads + filter_metrics: &str, // filter metrics file. filtered_out_readsfile: &str, // filtered_out_reads bam/bedfile. - verbose: bool, // verbose - shift: Py, // python list of the shift to perform. - _bed: bool, // output format in BEDPE. - filterrnastrand: &str, // "forward", "reverse" or "None". - minmappingquality: u8, // minimum mapping quality. - samflaginclude: u16, // sam flag include - samflagexclude: u16, // sam flag exclude - blacklist: &str, // blacklist file name. - minfraglen: u32, // minimum fragment length. - maxfraglen: u32, // maximum fragment length. + verbose: bool, // verbose + shift: Py, // python list of the shift to perform. + _bed: bool, // output format in BEDPE. + filterrnastrand: &str, // "forward", "reverse" or "None". + minmappingquality: u8, // minimum mapping quality. + samflaginclude: u16, // sam flag include + samflagexclude: u16, // sam flag exclude + blacklist: &str, // blacklist file name. + minfraglen: u32, // minimum fragment length. + maxfraglen: u32, // maximum fragment length. _extend_reads: u32, _center_reads: bool, - ) -> PyResult<()> { // Input bam file let bam = Reader::from_path(bamifile).unwrap(); @@ -40,13 +40,10 @@ pub fn r_alignmentsieve( if filtered_out_readsfile != "None" { write_filters = true; } - let mut readshift: Vec = Vec::new(); - Python::with_gil(|py| { - readshift = shift.extract(py).expect("Failed to extract shift."); - }); + let readshift: Vec = shift.extract(py).expect("Failed to extract shift"); // shift is of length 0, 2, or 4. - // Define regions + // Define regions let (regions, chromsizes) = parse_regions("None", vec![bamifile]); // If there is a blacklist, read it. let mut backlistregions: Option> = None; @@ -56,10 +53,11 @@ pub fn r_alignmentsieve( match isbed.as_str() { "gtf" => panic!("Error: Please provide a bed file for the blacklist."), "bed" => { - let (bls, _) = read_bedfile(&blacklist.to_string(), false, chromsizes.keys().collect()); + let (bls, _) = + read_bedfile(&blacklist.to_string(), false, chromsizes.keys().collect()); backlistregions = Some(bls); - }, - _ => panic!("Error: Cannot determine filetype of blacklist file.") + } + _ => panic!("Error: Cannot determine filetype of blacklist file."), } } @@ -79,17 +77,29 @@ pub fn r_alignmentsieve( ); let pool = ThreadPoolBuilder::new().num_threads(1).build().unwrap(); let (sieve, filtersieve, totalreads, filteredreads) = pool.install(|| { - regions.par_iter() - .map(|i| sieve_bamregion(bamifile, i, &filters, &readshift, write_filters, nproc, verbose)) + regions + .par_iter() + .map(|i| { + sieve_bamregion( + bamifile, + i, + &filters, + &readshift, + write_filters, + nproc, + verbose, + ) + }) .reduce( || (Vec::new(), Vec::new(), 0, 0), - |(mut _sieve, mut _filtersieve, mut _total, mut _filter), (sieve, filtersieve, total, filter)| { + |(mut _sieve, mut _filtersieve, mut _total, mut _filter), + (sieve, filtersieve, total, filter)| { _sieve.extend(sieve); _filtersieve.extend(filtersieve); _total += total; _filter += filter; (_sieve, _filtersieve, _total, _filter) - } + }, ) }); @@ -107,7 +117,8 @@ pub fn r_alignmentsieve( } // write filtered reads if necessary if write_filters { - let mut ofilterbam = Writer::from_path(filtered_out_readsfile, &header, bam::Format::Bam).unwrap(); + let mut ofilterbam = + Writer::from_path(filtered_out_readsfile, &header, bam::Format::Bam).unwrap(); let _ = ofilterbam.set_threads(nproc); for sb in filtersieve.into_iter() { if let Some(sb) = sb { @@ -127,15 +138,33 @@ pub fn r_alignmentsieve( // write header writeln!(of, "#bamFilterReads --filterMetrics").unwrap(); writeln!(of, "#File\tReads\tRemaining Total\tInitial Reads").unwrap(); - writeln!(of, "{}\t{}\t{}", bamifile, totalreads-filteredreads, totalreads).unwrap(); + writeln!( + of, + "{}\t{}\t{}", + bamifile, + totalreads - filteredreads, + totalreads + ) + .unwrap(); } Ok(()) } - -fn sieve_bamregion(ibam: &str, regstruct: &Region, alfilters: &Alignmentfilters, _shift: &Vec, write_filters: bool, nproc: usize, verbose: bool) -> (Vec>, Vec>, u64, u64) { - let region = (regstruct.chrom.clone(), regstruct.get_startu(), regstruct.get_endu()); +fn sieve_bamregion( + ibam: &str, + regstruct: &Region, + alfilters: &Alignmentfilters, + _shift: &Vec, + write_filters: bool, + nproc: usize, + verbose: bool, +) -> (Vec>, Vec>, u64, u64) { + let region = ( + regstruct.chrom.clone(), + regstruct.get_startu(), + regstruct.get_endu(), + ); let mut total_reads: u64 = 0; let mut filtered_reads: u64 = 0; let mut bam = IndexedReader::from_path(ibam).unwrap(); @@ -201,7 +230,7 @@ fn sieve_bamregion(ibam: &str, regstruct: &Region, alfilters: &Alignmentfilters, } continue; } - + // SAM flags if alfilters.samflaginclude != 0 && (record.flags() & alfilters.samflaginclude) == 0 { filtered_reads += 1; @@ -223,7 +252,9 @@ fn sieve_bamregion(ibam: &str, regstruct: &Region, alfilters: &Alignmentfilters, // fragment length if alfilters.minfraglen != 0 || alfilters.maxfraglen != 0 { if record.is_paired() { - if record.insert_size().abs() < alfilters.minfraglen as i64 || record.insert_size().abs() > alfilters.maxfraglen as i64 { + if record.insert_size().abs() < alfilters.minfraglen as i64 + || record.insert_size().abs() > alfilters.maxfraglen as i64 + { filtered_reads += 1; if let Some(filterbamout) = &mut filterbamout { filterbamout.write(&record).unwrap(); @@ -264,7 +295,7 @@ fn sieve_bamregion(ibam: &str, regstruct: &Region, alfilters: &Alignmentfilters, } continue; } - }, + } ("forward", false) => { if !(record.flags() & 16 == 16) { filtered_reads += 1; @@ -274,7 +305,7 @@ fn sieve_bamregion(ibam: &str, regstruct: &Region, alfilters: &Alignmentfilters, } continue; } - }, + } ("reverse", true) => { if !((record.flags() & 144 == 144) || (record.flags() & 96 == 96)) { filtered_reads += 1; @@ -284,7 +315,7 @@ fn sieve_bamregion(ibam: &str, regstruct: &Region, alfilters: &Alignmentfilters, } continue; } - }, + } ("reverse", false) => { if !(record.flags() & 16 == 0) { filtered_reads += 1; @@ -294,8 +325,8 @@ fn sieve_bamregion(ibam: &str, regstruct: &Region, alfilters: &Alignmentfilters, } continue; } - }, - _ => {}, + } + _ => {} } } sievebamout.write(&record).unwrap(); @@ -303,18 +334,24 @@ fn sieve_bamregion(ibam: &str, regstruct: &Region, alfilters: &Alignmentfilters, } match (written, filterwritten) { - (true, true) => { - (vec![Some(sievebam_path)], vec![Some(filterbam_path)], total_reads, filtered_reads) - }, - (true, false) => { - (vec![Some(sievebam_path)], vec![None], total_reads, filtered_reads) - }, - (false, true) => { - (vec![None], vec![Some(filterbam_path)], total_reads, filtered_reads) - }, - (false, false) => { - (vec![None], vec![None], total_reads, filtered_reads) - } + (true, true) => ( + vec![Some(sievebam_path)], + vec![Some(filterbam_path)], + total_reads, + filtered_reads, + ), + (true, false) => ( + vec![Some(sievebam_path)], + vec![None], + total_reads, + filtered_reads, + ), + (false, true) => ( + vec![None], + vec![Some(filterbam_path)], + total_reads, + filtered_reads, + ), + (false, false) => (vec![None], vec![None], total_reads, filtered_reads), } - -} \ No newline at end of file +} diff --git a/src/bamcompare.rs b/src/bamcompare.rs index 959d31ad11..32d0c1a709 100644 --- a/src/bamcompare.rs +++ b/src/bamcompare.rs @@ -1,25 +1,26 @@ +use crate::calc::{calc_ratio, median}; +use crate::covcalc::{bam_pileup, parse_regions, region_divider, Region, TempZip}; +use crate::filehandler::{bam_ispaired, is_bed_or_gtf, read_bedfile, write_covfile}; +use crate::filtering::Alignmentfilters; +use crate::normalization::scale_factor_bamcompare; +use bigtools::Value; +use itertools::Itertools; use pyo3::prelude::*; use pyo3::types::PyList; use rayon::prelude::*; use rayon::ThreadPoolBuilder; -use std::io::prelude::*; -use std::io::{BufReader}; use std::fs::File; -use itertools::Itertools; -use bigtools::{Value}; -use crate::filehandler::{bam_ispaired, write_covfile, is_bed_or_gtf, read_bedfile}; -use crate::covcalc::{bam_pileup, parse_regions, TempZip, region_divider, Region}; -use crate::filtering::Alignmentfilters; -use crate::normalization::{scale_factor_bamcompare}; -use crate::calc::{median, calc_ratio}; -use tempfile::{TempPath}; +use std::io::prelude::*; +use std::io::BufReader; +use tempfile::TempPath; #[pyfunction] pub fn r_bamcompare( + py: Python, // input and output bamifile1: &str, // input bamfile 1 bamifile2: &str, // input bamfile 2 - ofile: &str, // output file + ofile: &str, // output file ofiletype: &str, // ouput file type, bedgraph or bigwig // norm options norm: &str, @@ -31,11 +32,11 @@ pub fn r_bamcompare( pseudocount1: f32, pseudocount2: f32, // filtering options - extendreads: bool, // if 0, no extension + extendreads: bool, // if 0, no extension extendreadslen: u32, // length of extension (0 if PE or if not extending) centerreads: bool, - blacklist: &str, // path to blacklist filename, or 'None' - minmappingquality: u8, // + blacklist: &str, // path to blacklist filename, or 'None' + minmappingquality: u8, // samflaginclude: u16, samflagexclude: u16, minfraglen: u32, @@ -47,7 +48,7 @@ pub fn r_bamcompare( binsize: u32, supregion: &str, verbose: bool, - collapse: bool + collapse: bool, ) -> PyResult<()> { let ispe1 = bam_ispaired(bamifile1); let ispe2 = bam_ispaired(bamifile2); @@ -56,14 +57,12 @@ pub fn r_bamcompare( println!("Sample1: {} is-paired: {}", bamifile1, ispe1); println!("Sample2: {} is-paired: {}", bamifile2, ispe2); } - let mut ignorechr: Vec = Vec::new(); - Python::with_gil(|py| { - ignorechr = _ignorechr.extract(py).expect("Failed to retrieve ignorechr."); - }); + let ignorechr: Vec = _ignorechr + .extract(py) + .expect("Failed to retrieve ignorechr."); - - // Parse regions & calculate coverage. Note that - let (regions, chromsizes) = parse_regions(supregion, vec![bamifile1, bamifile2]); + // Parse regions & calculate coverage. Note that + let (regions, chromsizes) = parse_regions(supregion, vec![bamifile1, bamifile2]); let regionblocks = region_divider(®ions); // If there is a blacklist, read it. @@ -74,13 +73,14 @@ pub fn r_bamcompare( match isbed.as_str() { "gtf" => panic!("Error: Please provide a bed file for the blacklist."), "bed" => { - let (bls, _) = read_bedfile(&blacklist.to_string(), false, chromsizes.keys().collect()); + let (bls, _) = + read_bedfile(&blacklist.to_string(), false, chromsizes.keys().collect()); blacklistregions = Some(bls); - }, - _ => panic!("Error: Cannot determine filetype of blacklist file.") + } + _ => panic!("Error: Cannot determine filetype of blacklist file."), } } - // + // // Set alignment filters let mut filter1 = Alignmentfilters::new( blacklistregions, @@ -107,37 +107,51 @@ pub fn r_bamcompare( // We need a pass over the bamfile already to get the mean fragment length. filter1.set_extendreadslen(bamifile1, nproc, ®ions); if verbose { - println!("fragment length for read extension set as: {} for bamfile 1", filter1.extendreadslen); + println!( + "fragment length for read extension set as: {} for bamfile 1", + filter1.extendreadslen + ); } } if filter2.extendreads && filter2.extendreadslen == 0 && ispe2 { // We need a pass over the bamfile already to get the mean fragment length. filter2.set_extendreadslen(bamifile2, nproc, ®ions); if verbose { - println!("fragment length for read extension set as: {} for bamfile 2", filter2.extendreadslen); + println!( + "fragment length for read extension set as: {} for bamfile 2", + filter2.extendreadslen + ); } } let pool = ThreadPoolBuilder::new().num_threads(nproc).build().unwrap(); - + // Set up the bam files in a Vec. - let bamfiles: Vec<(&str, bool, &Alignmentfilters)> = vec![(bamifile1, ispe1, &filter1), (bamifile2, ispe2, &filter2)]; + let bamfiles: Vec<(&str, bool, &Alignmentfilters)> = + vec![(bamifile1, ispe1, &filter1), (bamifile2, ispe2, &filter2)]; let mut covcalcs: Vec = pool.install(|| { - bamfiles.par_iter() + bamfiles + .par_iter() .map(|(bamfile, ispe, alfilter)| { - let (bg, mapped, unmapped, readlen, fraglen) = regionblocks.par_iter() - .map(|i| bam_pileup(bamfile, &i, &binsize, &ispe, &ignorechr, alfilter , false, false, true)) + let (bg, mapped, unmapped, readlen, fraglen) = regionblocks + .par_iter() + .map(|i| { + bam_pileup( + bamfile, &i, &binsize, &ispe, &ignorechr, alfilter, false, false, true, + ) + }) .reduce( || (vec![], 0, 0, vec![], vec![]), - |(mut _bg, mut _mapped, mut _unmapped, mut _readlen, mut _fraglen), (bg, mapped, unmapped, readlen, fraglen)| { + |(mut _bg, mut _mapped, mut _unmapped, mut _readlen, mut _fraglen), + (bg, mapped, unmapped, readlen, fraglen)| { _bg.extend(bg); _readlen.extend(readlen); _fraglen.extend(fraglen); _mapped += mapped; _unmapped += unmapped; (_bg, _mapped, _unmapped, _readlen, _fraglen) - } + }, ); ParsedBamFile { bamfile: bamfile, @@ -146,25 +160,46 @@ pub fn r_bamcompare( mapped: mapped, unmapped: unmapped, readlen: median(readlen), - fraglen: median(fraglen) + fraglen: median(fraglen), } }) - .collect() + .collect() }); // Print out some stats if verbose if verbose { println!("bamfile\tPE\tmapped\tunmapped\tmed_readlen\tmed_fraglen"); - println!("{}\t{}\t{}\t{}\t{}\t{}", covcalcs[0].bamfile, covcalcs[0].ispe, covcalcs[0].mapped, covcalcs[0].unmapped, covcalcs[0].readlen, covcalcs[0].fraglen); - println!("{}\t{}\t{}\t{}\t{}\t{}", covcalcs[1].bamfile, covcalcs[1].ispe, covcalcs[1].mapped, covcalcs[1].unmapped, covcalcs[1].readlen, covcalcs[1].fraglen); + println!( + "{}\t{}\t{}\t{}\t{}\t{}", + covcalcs[0].bamfile, + covcalcs[0].ispe, + covcalcs[0].mapped, + covcalcs[0].unmapped, + covcalcs[0].readlen, + covcalcs[0].fraglen + ); + println!( + "{}\t{}\t{}\t{}\t{}\t{}", + covcalcs[1].bamfile, + covcalcs[1].ispe, + covcalcs[1].mapped, + covcalcs[1].unmapped, + covcalcs[1].readlen, + covcalcs[1].fraglen + ); } // Calculate scale factors. - + let mut sf = scale_factor_bamcompare( scalefactorsmethod, - covcalcs[0].mapped, covcalcs[1].mapped, - binsize, effective_genome_size, norm, - covcalcs[0].readlen, covcalcs[1].readlen, - covcalcs[0].fraglen, covcalcs[1].fraglen, + covcalcs[0].mapped, + covcalcs[1].mapped, + binsize, + effective_genome_size, + norm, + covcalcs[0].readlen, + covcalcs[1].readlen, + covcalcs[0].fraglen, + covcalcs[1].fraglen, ); if given_sf1 != 0.0 || given_sf2 != 0.0 { if verbose { @@ -174,33 +209,55 @@ pub fn r_bamcompare( } else if verbose { println!("scale factor1 = {}, scale factor2 = {}", sf.0, sf.1); } - + // Extract both vecs of TempPaths into a single vector let its = vec![ covcalcs[0].bg.drain(..).collect::>(), - covcalcs[1].bg.drain(..).collect::>() + covcalcs[1].bg.drain(..).collect::>(), ]; let its: Vec<_> = its.iter().map(|x| x.into_iter()).collect(); let zips = TempZip { iterators: its }; let zips_vec: Vec<_> = zips.collect(); if collapse { - let lines = zips_vec - .into_iter() - .flat_map(|c| { - let readers: Vec<_> = c.into_iter().map(|x| BufReader::new(File::open(x).unwrap()).lines()).collect(); - let temp_zip = TempZip { iterators: readers }; - temp_zip.into_iter().filter_map(|mut _l| { + let lines = zips_vec.into_iter().flat_map(|c| { + let readers: Vec<_> = c + .into_iter() + .map(|x| BufReader::new(File::open(x).unwrap()).lines()) + .collect(); + let temp_zip = TempZip { iterators: readers }; + temp_zip + .into_iter() + .filter_map(|mut _l| { let lines: Vec<_> = _l .iter_mut() .map(|x| x.as_mut().unwrap()) .map(|x| x.split('\t').collect()) - .map(|x: Vec<&str>| (x[0].to_string(), x[1].parse::().unwrap(), x[2].parse::().unwrap(), x[3].parse::().unwrap())) + .map(|x: Vec<&str>| { + ( + x[0].to_string(), + x[1].parse::().unwrap(), + x[2].parse::().unwrap(), + x[3].parse::().unwrap(), + ) + }) .collect(); assert_eq!(lines.len(), 2); - assert_eq!(lines[0].0, lines[1].0, "Error: Chromosome mismatch in bam files. {} != {}", lines[0].0, lines[1].0); - assert_eq!(lines[0].1, lines[1].1, "Error: Start position mismatch in bam files. {} != {}", lines[0].1, lines[1].1); - assert_eq!(lines[0].2, lines[1].2, "Error: End position mismatch in bam files. {} != {}", lines[0].2, lines[1].2); + assert_eq!( + lines[0].0, lines[1].0, + "Error: Chromosome mismatch in bam files. {} != {}", + lines[0].0, lines[1].0 + ); + assert_eq!( + lines[0].1, lines[1].1, + "Error: Start position mismatch in bam files. {} != {}", + lines[0].1, lines[1].1 + ); + assert_eq!( + lines[0].2, lines[1].2, + "Error: End position mismatch in bam files. {} != {}", + lines[0].2, lines[1].2 + ); // Calculate the coverage. if skip_zero_over_zero && lines[0].3 == 0.0 && lines[1].3 == 0.0 { return None; @@ -209,12 +266,35 @@ pub fn r_bamcompare( } else if skip_non_covered_regions && lines[1].3 == 0.0 { return None; } else { - let cov = calc_ratio(lines[0].3, lines[1].3, &sf.0, &sf.1, &pseudocount1, &pseudocount2, operation); - Some((lines[0].0.clone(), Value { start: lines[0].1, end: lines[0].2, value: cov })) + let cov = calc_ratio( + lines[0].3, + lines[1].3, + &sf.0, + &sf.1, + &pseudocount1, + &pseudocount2, + operation, + ); + Some(( + lines[0].0.clone(), + Value { + start: lines[0].1, + end: lines[0].2, + value: cov, + }, + )) } - }).coalesce(|p, c| { + }) + .coalesce(|p, c| { if p.1.value == c.1.value && p.0 == c.0 { - Ok((p.0, Value {start: p.1.start, end: c.1.end, value: p.1.value})) + Ok(( + p.0, + Value { + start: p.1.start, + end: c.1.end, + value: p.1.value, + }, + )) } else { Err((p, c)) } @@ -222,34 +302,69 @@ pub fn r_bamcompare( }); write_covfile(lines, ofile, ofiletype, chromsizes); } else { - let lines = zips_vec - .into_iter() - .flat_map(|c| { - let readers: Vec<_> = c.into_iter().map(|x| BufReader::new(File::open(x).unwrap()).lines()).collect(); - let temp_zip = TempZip { iterators: readers }; - temp_zip.into_iter().filter_map(|mut _l| { - let lines: Vec<_> = _l - .iter_mut() - .map(|x| x.as_mut().unwrap()) - .map(|x| x.split('\t').collect()) - .map(|x: Vec<&str>| (x[0].to_string(), x[1].parse::().unwrap(), x[2].parse::().unwrap(), x[3].parse::().unwrap())) - .collect(); - assert_eq!(lines.len(), 2); - assert_eq!(lines[0].0, lines[1].0, "Error: Chromosome mismatch in bam files. {} != {}", lines[0].0, lines[1].0); - assert_eq!(lines[0].1, lines[1].1, "Error: Start position mismatch in bam files. {} != {}", lines[0].1, lines[1].1); - assert_eq!(lines[0].2, lines[1].2, "Error: End position mismatch in bam files. {} != {}", lines[0].2, lines[1].2); - // Calculate the coverage. - if skip_zero_over_zero && lines[0].3 == 0.0 && lines[1].3 == 0.0 { - return None; - } else if skip_non_covered_regions && lines[0].3 == 0.0 { - return None; - } else if skip_non_covered_regions && lines[1].3 == 0.0 { - return None; - } else { - let cov = calc_ratio(lines[0].3, lines[1].3, &sf.0, &sf.1, &pseudocount1, &pseudocount2, operation); - Some((lines[0].0.clone(), Value { start: lines[0].1, end: lines[0].2, value: cov })) - } - }) + let lines = zips_vec.into_iter().flat_map(|c| { + let readers: Vec<_> = c + .into_iter() + .map(|x| BufReader::new(File::open(x).unwrap()).lines()) + .collect(); + let temp_zip = TempZip { iterators: readers }; + temp_zip.into_iter().filter_map(|mut _l| { + let lines: Vec<_> = _l + .iter_mut() + .map(|x| x.as_mut().unwrap()) + .map(|x| x.split('\t').collect()) + .map(|x: Vec<&str>| { + ( + x[0].to_string(), + x[1].parse::().unwrap(), + x[2].parse::().unwrap(), + x[3].parse::().unwrap(), + ) + }) + .collect(); + assert_eq!(lines.len(), 2); + assert_eq!( + lines[0].0, lines[1].0, + "Error: Chromosome mismatch in bam files. {} != {}", + lines[0].0, lines[1].0 + ); + assert_eq!( + lines[0].1, lines[1].1, + "Error: Start position mismatch in bam files. {} != {}", + lines[0].1, lines[1].1 + ); + assert_eq!( + lines[0].2, lines[1].2, + "Error: End position mismatch in bam files. {} != {}", + lines[0].2, lines[1].2 + ); + // Calculate the coverage. + if skip_zero_over_zero && lines[0].3 == 0.0 && lines[1].3 == 0.0 { + return None; + } else if skip_non_covered_regions && lines[0].3 == 0.0 { + return None; + } else if skip_non_covered_regions && lines[1].3 == 0.0 { + return None; + } else { + let cov = calc_ratio( + lines[0].3, + lines[1].3, + &sf.0, + &sf.1, + &pseudocount1, + &pseudocount2, + operation, + ); + Some(( + lines[0].0.clone(), + Value { + start: lines[0].1, + end: lines[0].2, + value: cov, + }, + )) + } + }) }); write_covfile(lines, ofile, ofiletype, chromsizes); } @@ -263,5 +378,5 @@ pub struct ParsedBamFile<'a> { pub mapped: u32, pub unmapped: u32, pub readlen: f32, - pub fraglen: f32 -} \ No newline at end of file + pub fraglen: f32, +} diff --git a/src/bamcoverage.rs b/src/bamcoverage.rs index 905641400d..2ca0e260d6 100644 --- a/src/bamcoverage.rs +++ b/src/bamcoverage.rs @@ -1,43 +1,43 @@ +use crate::calc::median; +use crate::covcalc::{bam_pileup, parse_regions, region_divider, Region}; +use crate::filehandler::{bam_ispaired, is_bed_or_gtf, read_bedfile, write_covfile}; +use crate::filtering::Alignmentfilters; +use crate::normalization::scale_factor; +use bigtools::Value; +use core::panic; use pyo3::prelude::*; use pyo3::types::PyList; use rayon::prelude::*; use rayon::ThreadPoolBuilder; -use core::panic; +use std::fs::File; use std::io::prelude::*; use std::io::BufReader; -use std::fs::File; -use bigtools::Value; -use crate::covcalc::{bam_pileup, parse_regions, region_divider, Region}; -use crate::filtering::Alignmentfilters; -use crate::filehandler::{bam_ispaired, write_covfile, is_bed_or_gtf, read_bedfile}; -use crate::normalization::scale_factor; -use crate::calc::median; - #[pyfunction] pub fn r_bamcoverage( + py: Python, // input and output - bamifile: &str, // input bamfile - ofile: &str, // output file + bamifile: &str, // input bamfile + ofile: &str, // output file ofiletype: &str, // output file type, bedgraph or bigwig // norm options - norm: &str, // normalization mode RPKM, CPM, BPM, RPGC - effectivegenomesize: u64, // default is 0, when not set. - scalefactor: f32, // default 1.0 + norm: &str, // normalization mode RPKM, CPM, BPM, RPGC + effectivegenomesize: u64, // default is 0, when not set. + scalefactor: f32, // default 1.0 // processing options mnase: bool, _offset: Py, // list of 2 [offset 5', offset 3'], if no offset is required we have [0, 0] - extendreads: bool, // true for extension of reads + extendreads: bool, // true for extension of reads extendreadslen: u32, // if extendreads is set, and SE, this length is used for extension. - centerreads: bool, // to center the reads or not. + centerreads: bool, // to center the reads or not. filterrnastrand: &str, // forward, reverse or 'None' - blacklist: &str, // path to blacklist filename, or 'None' + blacklist: &str, // path to blacklist filename, or 'None' _ignorechr: Py, // list of chromosomes to ignore. Is empty if none. skipnoncovregions: bool, _smoothlength: u32, // 0 = no smoothing, else it's a strictly larger then binsize binsize: u32, // filtering options - minmappingquality: u8, // + minmappingquality: u8, // samflaginclude: u16, samflagexclude: u16, mut minfraglen: u32, // default 0 -> no filter @@ -47,17 +47,19 @@ pub fn r_bamcoverage( verbose: bool, collapse: bool, ) -> PyResult<()> { - let mut offset: (i32, i32) = (0, 0); - let mut ignorechr: Vec = Vec::new(); - Python::with_gil(|py| { - let offsetv: Vec = _offset.extract(py).expect("Failed to retrieve offset."); - if offsetv.len() == 2 { - offset = (offsetv[0], offsetv[1]); - } else { - panic!("Error: Offset should be a list of 2. Received: {:?}", offsetv); - } - ignorechr = _ignorechr.extract(py).expect("Failed to retrieve ignorechr."); - }); + let offsetv: Vec = _offset.extract(py).expect("Failed to retrieve offset"); + + let offset = match offsetv.as_slice() { + [a, b] => (*a, *b), + _ => panic!( + "Error: Offset should be a list of 2. Received: {:?}", + offsetv + ), + }; + + let ignorechr: Vec = _ignorechr + .extract(py) + .expect("Failed to retrieve ignorechr"); let ispe = bam_ispaired(bamifile); // If mnase, library should be PE ! @@ -93,23 +95,32 @@ pub fn r_bamcoverage( if mnase { if minfraglen == 0 { minfraglen = 130; - } else if minfraglen != 130{ - println!("Note that MNase mode is set, but minfraglen is set at {}. Recommended is 130.", minfraglen); + } else if minfraglen != 130 { + println!( + "Note that MNase mode is set, but minfraglen is set at {}. Recommended is 130.", + minfraglen + ); } if maxfraglen == 0 { maxfraglen = 200; } else if maxfraglen != 200 { - println!("Note that MNase mode is set, but maxfraglen is set at {}. Recommended is 200.", maxfraglen); + println!( + "Note that MNase mode is set, but maxfraglen is set at {}. Recommended is 200.", + maxfraglen + ); } if binsize != 1 { - println!("Note that MNase mode is set, but binsize is set at {}. Recommended is 1.", binsize); + println!( + "Note that MNase mode is set, but binsize is set at {}. Recommended is 1.", + binsize + ); } } if verbose { println!("Sample: {} is-paired: {}", bamifile, ispe); } // Parse regions & calculate coverage - let (regions, chromsizes) = parse_regions(supregion, vec![bamifile]); + let (regions, chromsizes) = parse_regions(supregion, vec![bamifile]); let regionblocks = region_divider(®ions); // If there is a blacklist, read it. @@ -120,10 +131,11 @@ pub fn r_bamcoverage( match isbed.as_str() { "gtf" => panic!("Error: Please provide a bed file for the blacklist."), "bed" => { - let (bls, _) = read_bedfile(&blacklist.to_string(), false, chromsizes.keys().collect()); + let (bls, _) = + read_bedfile(&blacklist.to_string(), false, chromsizes.keys().collect()); backlistregions = Some(bls); - }, - _ => panic!("Error: Cannot determine filetype of blacklist file.") + } + _ => panic!("Error: Cannot determine filetype of blacklist file."), } } // Set alignment filters @@ -146,17 +158,26 @@ pub fn r_bamcoverage( // We need a pass over the bamfile already to get the mean fragment length. filters.set_extendreadslen(bamifile, nproc, ®ions); if verbose { - println!("fragment length for read extension set as: {}", filters.extendreadslen); + println!( + "fragment length for read extension set as: {}", + filters.extendreadslen + ); } } let pool = ThreadPoolBuilder::new().num_threads(nproc).build().unwrap(); let (bg, mapped, _unmapped, readlen, fraglen) = pool.install(|| { - regionblocks.par_iter() - .map(|i| bam_pileup(bamifile, &i, &binsize, &ispe, &ignorechr, &filters, collapse, false, true)) + regionblocks + .par_iter() + .map(|i| { + bam_pileup( + bamifile, &i, &binsize, &ispe, &ignorechr, &filters, collapse, false, true, + ) + }) .reduce( || (vec![], 0, 0, vec![], vec![]), - |(mut _bg, mut _mapped, mut _unmapped, mut _readlen, mut _fraglen), (bg, mapped, unmapped, readlen, fraglen)| { + |(mut _bg, mut _mapped, mut _unmapped, mut _readlen, mut _fraglen), + (bg, mapped, unmapped, readlen, fraglen)| { _bg.extend(bg); _readlen.extend(readlen); _fraglen.extend(fraglen); @@ -164,14 +185,17 @@ pub fn r_bamcoverage( _unmapped += unmapped; (_bg, _mapped, _unmapped, _readlen, _fraglen) - } + }, ) }); let mut readlen = median(readlen); if filters.extendreads { if verbose { - println!("extend reads option on, overriding readlen from {} to {}", readlen, filters.extendreadslen); + println!( + "extend reads option on, overriding readlen from {} to {}", + readlen, filters.extendreadslen + ); } readlen = filters.extendreadslen as f32; } @@ -183,39 +207,36 @@ pub fn r_bamcoverage( } let sf = scale_factor( - norm, + norm, mapped, binsize, effectivegenomesize, readlen, fraglen, scalefactor, - &verbose + &verbose, ); // Create output stream - let lines = bg.into_iter().flat_map( - |bg| { - let reader = BufReader::new(File::open(bg).unwrap()); - reader.lines().filter_map( - |l| { - let l = l.unwrap(); - let fields: Vec<&str> = l.split('\t').collect(); - if skipnoncovregions && fields[3] == "0" { - None - } else { - Some( - (fields[0].to_string(), Value { - start: fields[1].parse::().unwrap(), - end: fields[2].parse::().unwrap(), - value: (fields[3].parse::().unwrap() * sf * 100.0).round() / 100.0, - }) - ) - } - } - ) - } - ); + let lines = bg.into_iter().flat_map(|bg| { + let reader = BufReader::new(File::open(bg).unwrap()); + reader.lines().filter_map(|l| { + let l = l.unwrap(); + let fields: Vec<&str> = l.split('\t').collect(); + if skipnoncovregions && fields[3] == "0" { + None + } else { + Some(( + fields[0].to_string(), + Value { + start: fields[1].parse::().unwrap(), + end: fields[2].parse::().unwrap(), + value: (fields[3].parse::().unwrap() * sf * 100.0).round() / 100.0, + }, + )) + } + }) + }); if verbose { println!("Writing output to: {}", ofile); } diff --git a/src/computematrix.rs b/src/computematrix.rs index 587dc5e1be..fcba6c2d78 100644 --- a/src/computematrix.rs +++ b/src/computematrix.rs @@ -1,62 +1,78 @@ +use crate::calc::{max_float, mean_float, median_float, min_float, sum_float}; +use crate::covcalc::{Bin, Gtfparse, Region, Scalingregions}; +use crate::filehandler::{ + bwintervals, chrombounds_from_bw, header_matrix, is_bed_or_gtf, read_bedfile, read_gtffile, + write_matrix, +}; +use itertools::Itertools; use pyo3::prelude::*; use pyo3::types::PyList; -use crate::filehandler::{read_bedfile, read_gtffile, chrombounds_from_bw, bwintervals, header_matrix, write_matrix, is_bed_or_gtf}; use rayon::prelude::*; use rayon::ThreadPoolBuilder; use std::collections::HashMap; use std::path::Path; -use itertools::Itertools; -use crate::calc::{mean_float, median_float, max_float, min_float, sum_float}; -use crate::covcalc::{Region, Gtfparse, Scalingregions, Bin}; #[pyfunction] pub fn r_computematrix( - mode: &str, // reference-point or scale-regions - regionlis: Py, // python list of region files (bed or gtf) - bwlis: Py, // python list of bigwig files - sampleslabel: Py, // python list of sample labels, if empty, use bigwig file names. - upstream: u32, // upstream region to consider - downstream: u32, // downstream region to consider + py: Python, + mode: &str, // reference-point or scale-regions + regionlis: Py, // python list of region files (bed or gtf) + bwlis: Py, // python list of bigwig files + sampleslabel: Py, // python list of sample labels, if empty, use bigwig file names. + upstream: u32, // upstream region to consider + downstream: u32, // downstream region to consider unscaled5prime: u32, // unscaled region 5' of the anchorpoint, only used in scale-regions mode. unscaled3prime: u32, // unscaled region 3' of the anchorpoint, only used in scale-regions mode. regionbodylength: u32, // length of the region body (after scaling), only used in scale-regions mode. - binsize: u32, // binsize to use for the matrix + binsize: u32, // binsize to use for the matrix missingdatazero: bool, // Encode missing data as 0. Default is false (and will be encoded as NA). - metagene: bool, // If set, 'exons' are stitched together to form a metagene - txnid: &str, // transcript id to use when parsing GTF file - exonid: &str, // exon id to use when parsing GTF file + metagene: bool, // If set, 'exons' are stitched together to form a metagene + txnid: &str, // transcript id to use when parsing GTF file + exonid: &str, // exon id to use when parsing GTF file txniddesignator: &str, // designator to use when parsing GTF file - scale: f32, // scaling factor for writing out values. default is 1.0 (no scaling) - nanafterend: bool, // end regions will treated as nans. Default is false. - skipzeros: bool, // skip regions with all zeros. Default is false. - minthresh: f32, // minimum threshold to keep a region. If not set it will equal 0.0 - maxthresh: f32, // maximum threshold to keep a region. if not set it will equal 0.0 + scale: f32, // scaling factor for writing out values. default is 1.0 (no scaling) + nanafterend: bool, // end regions will treated as nans. Default is false. + skipzeros: bool, // skip regions with all zeros. Default is false. + minthresh: f32, // minimum threshold to keep a region. If not set it will equal 0.0 + maxthresh: f32, // maximum threshold to keep a region. if not set it will equal 0.0 averagetypebins: &str, // operation to summarize values over bins. Default is mean. sortregions: &str, // either ascend, descend or keep. Default is keep (and ignores sortusing). sortusing: &str, // metric to sort on. Either mean median max min sum region_length. Default is mean. sortusingsamples: Py, // list of samples to sort on. If empty, use all samples. referencepoint: &str, // reference point to use. Either TSS, TES or center. Default is TSS. Only used in reference-point mode. - nproc: usize, // number of threads. - verbose: bool, // verbose output. - ofile: &str // npz file to write to. + nproc: usize, // number of threads. + verbose: bool, // verbose output. + ofile: &str, // npz file to write to. ) -> PyResult<()> { // Extract the bed and bigwig files from pyList to Vec. - let mut region_files: Vec = Vec::new(); - let mut bw_files: Vec = Vec::new(); - let mut samples_label: Vec = Vec::new(); - let mut sort_using_samples: Vec = Vec::new(); - Python::with_gil(|py| { - region_files = regionlis.extract(py).expect("Failed to retrieve bed files."); - bw_files = bwlis.extract(py).expect("Failed to retrieve bigwig filess."); - samples_label = sampleslabel.extract(py).expect("Failed to retrieve samples label."); - sort_using_samples = sortusingsamples.extract(py).expect("Failed to retrieve the samples to sort on."); - }); + let region_files: Vec = regionlis + .extract(py) + .expect("Failed to retrieve bed files."); + + let bw_files: Vec = bwlis + .extract(py) + .expect("Failed to retrieve bigwig filess."); + + let mut samples_label: Vec = sampleslabel + .extract(py) + .expect("Failed to retrieve samples label."); + + let sort_using_samples: Vec = sortusingsamples + .extract(py) + .expect("Failed to retrieve the samples to sort on."); // Assert that samples_label equals bw_files, if samples_label is not empty. if !samples_label.is_empty() { - assert_eq!(samples_label.len(), bw_files.len(), "Number of samplelabels do not match number of bigwig files."); + assert_eq!( + samples_label.len(), + bw_files.len(), + "Number of samplelabels do not match number of bigwig files." + ); } // Assert that sort_using_samples is smaller or equal to bw_files. - assert!(sort_using_samples.len() <= bw_files.len(), "Number of samples to sort on is larger than number of bigwig files provided."); + assert!( + sort_using_samples.len() <= bw_files.len(), + "Number of samples to sort on is larger than number of bigwig files provided." + ); // Assert that no value in sort_using_samples is larger than bw_files. // Get chromosome boundaries from first bigwig file. let chromsizes = chrombounds_from_bw(&bw_files.get(0).unwrap()); @@ -106,7 +122,7 @@ pub fn r_computematrix( verbose: verbose, proc_number: nproc, regionlabels: regionlabels, - bwlabels: samples_label + bwlabels: samples_label, }; let gtfparse = Gtfparse { metagene: metagene, @@ -121,7 +137,7 @@ pub fn r_computematrix( println!("Sort using samples: {:?}", &sort_using_samples); } let pool = ThreadPoolBuilder::new().num_threads(nproc).build().unwrap(); - + // Parse regions from bed files. Note that we retain the name of the bed file (in case there are more then 1) // Additionaly, score and strand are also retained, if it's a 3-column bed file we just fill in '.' let mut regions: Vec = Vec::new(); @@ -129,7 +145,7 @@ pub fn r_computematrix( region_files.iter() .map(|r| { let ftype = is_bed_or_gtf(r); - + match ftype.as_str() { "gtf" => read_gtffile(r, >fparse, chromsizes.keys().collect()), "bed" => read_bedfile(r, metagene, chromsizes.keys().collect()), @@ -142,7 +158,8 @@ pub fn r_computematrix( }); // Define slop regions, which contain the actual 'bins' to query the bigwig files. let slopregions = pool.install(|| { - regions.par_iter() + regions + .par_iter() .map(|region| slop_region(®ion, &scale_regions, &chromsizes)) .collect::>() }); @@ -150,7 +167,8 @@ pub fn r_computematrix( // Discriminate between reference-point and scale-regions mode. let matrix: Vec> = pool.install(|| { - bw_files.par_iter() + bw_files + .par_iter() .map(|i| bwintervals(&i, ®ions, &slopregions, &scale_regions)) .reduce( || vec![vec![]; regions.len()], @@ -167,11 +185,11 @@ pub fn r_computematrix( sortusing, sort_using_samples, regions, - matrix, + matrix, scale_regions, regionsizes, ofile, - verbose + verbose, ); Ok(()) @@ -180,15 +198,15 @@ pub fn r_computematrix( fn slop_region( region: &Region, scale_regions: &Scalingregions, - chromsizes: &HashMap + chromsizes: &HashMap, ) -> Vec { // Idea is to create a vector Bins (Conbin or Catbin) which encodes start and end of every bin (binsize passed by computeMatrix). // Catbin takes care of the situation where one needs metagenes, and thus multiple start/end per bin are possible. // The number of columns is predetermined - // Note that the before / after could mean that we run out of chromosome. + // Note that the before / after could mean that we run out of chromosome. // Invalid regions (later to be encoded as NA or 0), will be pushed as (0,0) tuples. // Note that if nan_after_end is set to true, we will push (0,0) tuples after the end of the region. - + // Get the chromosome end for a specific region, and assert that the region stays within the chromosome boundary. // Note that only a right check is needed, as positions are u32. // Note that we know ®ion.chrom is inside chromsizes already, since this filtering is done at the region reading stage. @@ -208,13 +226,16 @@ fn matrix_dump( scale_regions: Scalingregions, regionsizes: HashMap, ofile: &str, - verbose: bool + verbose: bool, ) { // Takes a pre-computed matrix, resorts it if requested, and writes it to file. // Resort the matrix, if this is requested. if sortregions != "keep" { if verbose { - println!("Sorting output matrix with settings: sortRegions: {}, sortUsing {}", sortregions, sortusing); + println!( + "Sorting output matrix with settings: sortRegions: {}, sortUsing {}", + sortregions, sortusing + ); } // If sortusingsamples is set, we need a vector to subset the columns of interest let mut cols_of_interest: Vec = Vec::new(); @@ -306,34 +327,32 @@ fn matrix_dump( } }) .collect(); - } + } // assert sorted ix length == matrix length == regions length assert_eq!( sortedix.len(), matrix.len(), - "Length of sorted indices does not match matrix length: {} != {}", sortedix.len(), matrix.len() + "Length of sorted indices does not match matrix length: {} != {}", + sortedix.len(), + matrix.len() ); assert_eq!( sortedix.len(), regions.len(), - "Length of sorted indices does not match regions length: {} ! = {}", sortedix.len(), regions.len() + "Length of sorted indices does not match regions length: {} ! = {}", + sortedix.len(), + regions.len() ); // Reorder matrix & regions - let sortedmatrix = sortedix - .iter() - .map(|ix| matrix[*ix].clone()) - .collect(); - let sortedregions = sortedix - .into_iter() - .map(|ix| regions[ix].clone()) - .collect(); + let sortedmatrix = sortedix.iter().map(|ix| matrix[*ix].clone()).collect(); + let sortedregions = sortedix.into_iter().map(|ix| regions[ix].clone()).collect(); write_matrix( header_matrix(&scale_regions, regionsizes), sortedmatrix, ofile, sortedregions, - &scale_regions + &scale_regions, ); } else { write_matrix( @@ -341,7 +360,7 @@ fn matrix_dump( matrix, ofile, regions, - &scale_regions + &scale_regions, ); } -} \ No newline at end of file +} diff --git a/src/lib.rs b/src/lib.rs index 47b39334a3..9a37b0398e 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,7 +1,7 @@ use pyo3::prelude::*; mod alignmentsieve; -mod bamcoverage; mod bamcompare; +mod bamcoverage; mod calc; mod computematrix; mod covcalc; @@ -13,7 +13,7 @@ mod normalization; mod tests; #[pymodule] -fn hp(m: &Bound<'_, PyModule>) -> PyResult<()> { +fn hp(_py: Python<'_>, m: &Bound<'_, PyModule>) -> PyResult<()> { m.add_function(wrap_pyfunction!(bamcoverage::r_bamcoverage, m)?)?; m.add_function(wrap_pyfunction!(bamcompare::r_bamcompare, m)?)?; m.add_function(wrap_pyfunction!(computematrix::r_computematrix, m)?)?; diff --git a/src/multibamsummary.rs b/src/multibamsummary.rs index 8cbec0e616..ef05c04e99 100644 --- a/src/multibamsummary.rs +++ b/src/multibamsummary.rs @@ -1,22 +1,25 @@ +use crate::calc::deseq_scalefactors; +use crate::covcalc::{bam_pileup, parse_regions, region_divider, TempZip}; +use crate::covcalc::{Gtfparse, Region}; +use crate::filehandler::{ + bam_ispaired, chrombounds_from_bam, is_bed_or_gtf, read_bedfile, read_gtffile, +}; +use crate::filtering::Alignmentfilters; +use itertools::multiunzip; +use ndarray::Array2; +use ndarray_npy::NpzWriter; use pyo3::prelude::*; use pyo3::types::PyList; use rayon::prelude::*; use rayon::ThreadPoolBuilder; -use itertools::multiunzip; +use std::collections::HashMap; +use std::fs::File; use std::io::prelude::*; use std::io::{BufReader, BufWriter}; -use std::fs::File; -use ndarray::Array2; -use ndarray_npy::NpzWriter; -use std::collections::HashMap; -use crate::covcalc::{bam_pileup, parse_regions, TempZip, region_divider}; -use crate::filtering::Alignmentfilters; -use crate::filehandler::{bam_ispaired, read_bedfile, read_gtffile, chrombounds_from_bam, is_bed_or_gtf}; -use crate::calc::deseq_scalefactors; -use crate::covcalc::{Region, Gtfparse}; #[pyfunction] pub fn r_mbams( + py: Python, // required parameters mode: &str, // either bins or BED-file bam_files: Py, @@ -36,25 +39,25 @@ pub fn r_mbams( extendreads: bool, extendreadslen: u32, centerreads: bool, - samflaginclude: u16, // sam flag include - samflagexclude: u16, // sam flag exclude - minfraglen: u32, // minimum fragment length. - maxfraglen: u32, // maximum fragment length. + samflaginclude: u16, // sam flag include + samflagexclude: u16, // sam flag exclude + minfraglen: u32, // minimum fragment length. + maxfraglen: u32, // maximum fragment length. minmappingquality: u8, // minimum mapping quality. - metagene: bool, // metagene mode or not. - txnid: &str, // transcript id to use when parsing GTF file. - exonid: &str, // exon id to use when parsing GTF file. + metagene: bool, // metagene mode or not. + txnid: &str, // transcript id to use when parsing GTF file. + exonid: &str, // exon id to use when parsing GTF file. txniddesignator: &str, // designator to use when parsing GTF file. ) -> PyResult<()> { - let mut bamfiles: Vec = Vec::new(); - let mut bamlabels: Vec = Vec::new(); - let mut bedfiles: Vec = Vec::new(); + let bamfiles: Vec = bam_files + .extract(py) + .expect("Failed to retrieve bam files."); + + let bamlabels: Vec = labels.extract(py).expect("Failed to retrieve labels."); + + let bedfiles: Vec = bed_file.extract(py).expect("Failed to retrieve bedfiles."); + let ignorechr: Vec = Vec::new(); - Python::with_gil(|py| { - bamfiles = bam_files.extract(py).expect("Failed to retrieve bam files."); - bamlabels = labels.extract(py).expect("Failed to retrieve labels."); - bedfiles = bed_file.extract(py).expect("Failed to retrieve bedfiles."); - }); let max_len = bamlabels.iter().map(|s| s.len()).max().unwrap_or(0); let bamlabels_arr: Array2 = Array2::from_shape_fn((bamlabels.len(), max_len), |(i, j)| { @@ -62,9 +65,7 @@ pub fn r_mbams( }); // Get paired-end information - let ispe = bamfiles.iter() - .map(|x| bam_ispaired(x)) - .collect::>(); + let ispe = bamfiles.iter().map(|x| bam_ispaired(x)).collect::>(); // zip through ispe and bamfiles if verbose { @@ -72,8 +73,7 @@ pub fn r_mbams( println!("Sample: {} is-paired: {}", _bf, _ispe); } } - - + let mut regions: Vec = Vec::new(); let mut gene_mode = false; let mut blacklistregions: Option> = None; @@ -100,7 +100,7 @@ pub fn r_mbams( bedfiles.iter() .map(|r| { let ftype = is_bed_or_gtf(r); - + match ftype.as_str() { "gtf" => read_gtffile(r, >fparse, chromsizes.keys().collect()), "bed" => read_bedfile(r, metagene, chromsizes.keys().collect()), @@ -120,17 +120,22 @@ pub fn r_mbams( match isbed.as_str() { "gtf" => panic!("Error: Please provide a bed file for the blacklist."), "bed" => { - let (bls, _) = read_bedfile(&blacklist.to_string(), false, chromsizes.keys().collect()); + let (bls, _) = + read_bedfile(&blacklist.to_string(), false, chromsizes.keys().collect()); blacklistregions = Some(bls); - }, - _ => panic!("Error: Cannot determine filetype of blacklist file.") + } + _ => panic!("Error: Cannot determine filetype of blacklist file."), } } } else { if verbose { - println!("BINS mode. with binsize: {}, distance between bins: {}", binsize, distance_between_bins); + println!( + "BINS mode. with binsize: {}, distance between bins: {}", + binsize, distance_between_bins + ); } - let (parsedregions, chromsizes) = parse_regions(supregion, bamfiles.iter().map(|x| x.as_str()).collect()); + let (parsedregions, chromsizes) = + parse_regions(supregion, bamfiles.iter().map(|x| x.as_str()).collect()); regions = parsedregions; // If there is a blacklist, read it. if blacklist != "None" { @@ -139,10 +144,11 @@ pub fn r_mbams( match isbed.as_str() { "gtf" => panic!("Error: Please provide a bed file for the blacklist."), "bed" => { - let (bls, _) = read_bedfile(&blacklist.to_string(), false, chromsizes.keys().collect()); + let (bls, _) = + read_bedfile(&blacklist.to_string(), false, chromsizes.keys().collect()); blacklistregions = Some(bls); - }, - _ => panic!("Error: Cannot determine filetype of blacklist file.") + } + _ => panic!("Error: Cannot determine filetype of blacklist file."), } } } @@ -162,8 +168,8 @@ pub fn r_mbams( Some(centerreads), ); - let pool = ThreadPoolBuilder::new().num_threads(nproc).build().unwrap(); - + let pool = ThreadPoolBuilder::new().num_threads(nproc).build().unwrap(); + // Zip together bamfiles and ispe into a vec of tuples. let bampfiles: Vec<_> = bamfiles.into_iter().zip(ispe.into_iter()).collect(); let bam_ispe_filter: Vec<(String, bool, Alignmentfilters)> = bampfiles.into_iter() @@ -176,7 +182,7 @@ pub fn r_mbams( panic!("Error: No fragment length found for read extension. Please provide a valid fragment length."); } if verbose { - println!("fragment length for read extension set as: {} for {}", filter.extendreadslen, bamfile); + println!("fragment length for read extension set as: {} for {}", filter.extendreadslen, bamfile.to_string()); } } (bamfile, ispe, filter) @@ -184,39 +190,50 @@ pub fn r_mbams( .collect(); // Divide up the regions into regionBlocks let regionblocks = region_divider(®ions); - + assert!(regionblocks.len() > 0, "No regions to process. Exiting."); if verbose { - println!("Regions divided into {} parallel blocks", regionblocks.len()); + println!( + "Regions divided into {} parallel blocks", + regionblocks.len() + ); println!("Start coverage calculation"); } let covcalcs: Vec<_> = pool.install(|| { - bam_ispe_filter.par_iter() + bam_ispe_filter + .par_iter() .map(|(bamfile, ispe, filter)| { - let (bg, _mapped, _unmapped, _readlen, _fraglen) = regionblocks.par_iter() - .map(|i| bam_pileup(bamfile, &i, &binsize, &ispe, &ignorechr, filter, false, gene_mode, false)) + let (bg, _mapped, _unmapped, _readlen, _fraglen) = regionblocks + .par_iter() + .map(|i| { + bam_pileup( + bamfile, &i, &binsize, &ispe, &ignorechr, filter, false, gene_mode, + false, + ) + }) .reduce( || (vec![], 0, 0, vec![], vec![]), - |(mut _bg, mut _mapped, mut _unmapped, mut _readlen, mut _fraglen), (bg, mapped, unmapped, readlen, fraglen)| { + |(mut _bg, mut _mapped, mut _unmapped, mut _readlen, mut _fraglen), + (bg, mapped, unmapped, readlen, fraglen)| { _bg.extend(bg); _readlen.extend(readlen); _fraglen.extend(fraglen); _mapped += mapped; _unmapped += unmapped; (_bg, _mapped, _unmapped, _readlen, _fraglen) - } + }, ); bg }) - .collect() + .collect() }); if verbose { println!("Coverage calculation done"); println!("Define output file"); } - - // Collate the coverage files into a matrix. + + // Collate the coverage files into a matrix. let its: Vec<_> = covcalcs.iter().map(|x| x.into_iter()).collect(); let zips = TempZip { iterators: its }; if verbose { @@ -229,7 +246,10 @@ pub fn r_mbams( let _m: Vec<_> = zips_vec .par_iter() .flat_map(|c| { - let readers: Vec<_> = c.par_iter().map(|x| BufReader::new(File::open(x).unwrap()).lines()).collect(); + let readers: Vec<_> = c + .par_iter() + .map(|x| BufReader::new(File::open(x).unwrap()).lines()) + .collect(); let mut _matvec: Vec> = Vec::new(); let mut _regions: Vec<(String, String, String)> = Vec::new(); for mut _l in (TempZip { iterators: readers }) { @@ -238,13 +258,21 @@ pub fn r_mbams( .par_iter_mut() .map(|x| x.as_mut().unwrap()) .map(|x| x.split('\t').collect()) - .map(|x: Vec<&str> | ( x[0].to_string(), x[1].to_string(), x[2].to_string(), x[3].parse::().unwrap() ) ) + .map(|x: Vec<&str>| { + ( + x[0].to_string(), + x[1].to_string(), + x[2].to_string(), + x[3].parse::().unwrap(), + ) + }) .collect(); let counts = lines .par_iter() .map(|x| (x.3 * 100.0).round() / 100.0) .collect::>(); - let regions: (String, String, String) = (lines[0].0.clone(), lines[0].1.clone(), lines[0].2.clone()); + let regions: (String, String, String) = + (lines[0].0.clone(), lines[0].1.clone(), lines[0].2.clone()); _matvec.push(counts); _regions.push(regions); } @@ -272,7 +300,9 @@ pub fn r_mbams( } writeln!(cfile, "{}", headstr).unwrap(); let outlines: Vec = pool.install(|| { - regions.par_iter().zip(matvec.par_iter()) + regions + .par_iter() + .zip(matvec.par_iter()) .map(|(region, counts)| { let mut outstr = String::new(); outstr.push_str(&format!("{}\t{}\t{}", region.0, region.1, region.2)); @@ -290,9 +320,11 @@ pub fn r_mbams( // Create 2darray from matvec let matarr: Array2 = Array2::from_shape_vec( - (matvec.len(), matvec[0].len()), matvec.into_iter().flatten().collect() - ).unwrap(); - + (matvec.len(), matvec[0].len()), + matvec.into_iter().flatten().collect(), + ) + .unwrap(); + // If scalefactors are required, calc and save them now. if scaling_factors != "None" { if verbose { @@ -318,4 +350,4 @@ pub fn r_mbams( println!("Matrix written."); } Ok(()) -} \ No newline at end of file +} From c85d26af0148a1f7ab181016aff2021b2edc0310 Mon Sep 17 00:00:00 2001 From: WardDeb Date: Tue, 23 Jun 2026 09:00:16 +0200 Subject: [PATCH 02/19] add actions to editable pixi run --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index 9a6fddf68f..e6135bf295 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -104,6 +104,6 @@ clangdev = "<22" htslib = "<=1.19" zlib = "*" [tool.pixi.pypi-dependencies] -deeptools = { path = ".", editable = true } +deeptools = { path = ".", editable = true, extras = ['actions'] } [tool.pixi.activation.env] LIBCLANG_PATH = "$CONDA_PREFIX/lib" From 21559501a06a6830f779a753a40c5b0197aa13f5 Mon Sep 17 00:00:00 2001 From: WardDeb Date: Tue, 23 Jun 2026 09:00:25 +0200 Subject: [PATCH 03/19] fix tests --- pixi.lock | 1778 +++++++++++++++++ pydeeptools/deeptools/bamPEFragmentSize.py | 528 +++-- pydeeptools/deeptools/bigwigAverage.py | 108 +- pydeeptools/deeptools/computeMatrix2.py | 697 ++++--- pydeeptools/deeptools/multiBamSummary2.py | 327 +-- pydeeptools/deeptools/multiBigwigSummary.py | 323 +-- .../deeptools/test/test_bamPEFragmentSize.py | 41 +- .../bamPEFragmentSize_histogram_result1.png | Bin 14756 -> 18288 bytes .../plotCoverage_default.png | Bin 81892 -> 93012 bytes .../plotEnrichment_defaults.png | Bin 37537 -> 56069 bytes .../test_plotHeatmap/plotHeatmap_default.png | Bin 55257 -> 53038 bytes .../test_plotProfile/plotProfile_default.png | Bin 37052 -> 36166 bytes 12 files changed, 2943 insertions(+), 859 deletions(-) diff --git a/pixi.lock b/pixi.lock index 4147b0b826..e5f37ef660 100644 --- a/pixi.lock +++ b/pixi.lock @@ -74,50 +74,146 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.28-h4ee821c_9.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2025c-hc9c84f9_1.conda - pypi: . + - pypi: https://files.pythonhosted.org/packages/00/01/4001033457f25ecdc2b1ffd513ca0b76200b9ea009dd64f6c1aad2dde133/boltons-26.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/02/08/9c41fb51ab5b43eb21674aff13df270e8ba6c4b29c8624e328dc7a9482af/distlib-0.4.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/08/f6/af32e23e563971ffb0fb86be52bc5be5c2c118858ffc119bf6a9039b173d/lxml-6.1.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0b/35/1cceccc5fcb50fa2ed53e2aa278cd032f3902682a73e763fb1ac3be8e6fa/rich_argparse-1.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0d/fe/6bea5c9162869c5beba5d9c8abbed835ec85bf1ec1fba05a3822325c45f3/build-1.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/10/c2/6604a71269e0c1bd75656d5a001432d16f2cc5b8c057140ec797155c295e/rdflib-7.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/13/37/a065dc3bd6e49423a6532c642ca7378d3f467b1ef44c2800c937af7f9739/filelock-3.29.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/14/15/5574111ae50dd6e879456888c0eadd4c5a869959775854e18e18a6b345f3/propcache-0.5.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/15/1c/991e414e4305e5aef60c8ebb51f35a2e1b12cf80b9fc41733bbdd070c037/galaxy_tool_util-26.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/18/3e/4253fa84dd1947207033df2fecd52781e7e2f6d65c4360f38d739bb3c8c9/galaxy_util-26.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/82/a70006589557f267f15bd384c0642ad49f0d97b690c3a05b166b9dcbad3b/python_discovery-1.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1a/bd/9c0d5d6983905ce2c9edaa073a7e89355a9cf7f396988e05d32f1c37785d/maturin-1.14.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/20/9c/d445818389df371f56d141d881153ba23183c4735a03f7356ffb43f7757d/aiohttp-3.14.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/7f/a946aa4f8752b37102b41e64dca18a1976ac705c3a0d1dfe74d820a02552/mistune-3.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2c/02/3623e6169bed617ed1e2d372f7c69f92ec28d54c4dfc997055c8578ec148/virtualenv-21.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/8e/b94ec25fcd4384de2a1f5e0403284f005ec743c04bafdb6698c851df5c6d/tuspy-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/37/aa/111610d8bf5b1bb7a295a048fc648cec346347a8b0be5881defd2d1b4a52/oyaml-1.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3a/7a/882d99539b19b1490cac5d77c67338d126e4122c8276bf640e411650c830/twine-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/3c/6b/72e5f22f3c5069bd950f107110cd17468cdb43abda3c55b48c4013e7b667/bioblend-1.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3d/6f/221654a39431edc7e9685702ab06fbb22bb313629e0187c0ed4462ba8af7/schema_salad-8.9.20260417192335-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/42/77/de194443bf38daed9452139e960c632b0ef9f9a5dd9ce605fdf18ca9f1b1/id-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/53/78/ddd0affa881b1e09bc59f11ab829a7904f4bca29d25c34cbb9395e8e0061/allure_python_commons-2.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/55/0f/e7f1ff3a1cabc6c4486a7ee1b0506aedf2f5f8329760ac1f4e8032feef2b/pysam-0.24.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/58/9d/40b6267367182187139a4000b82a3b287d84d745bccd808e75d916920e9d/bleach-6.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5b/67/314f6151bad77a93d751978a344033e1fc890822f05f0416079338e34231/nh3-0.3.6-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5f/53/fb7122b71361a0d121b669dcf3d31244ef75badbbb724af388948de543e2/imagesize-2.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/5f/fc/a7bf5b6e4e617b45f90f2d9d2a68519c249c81dd4fc2658c7a2a61c4f4b7/aiohappyeyeballs-2.6.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/62/5e/3a6a3e90f35cea3853c45e5d5fb9b7192ce4384616f932cf7591298ab6e1/numpydoc-1.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/b6/09b01cdbc15224e2850365192d17b7bdebb8bdbd8780ed221fcdf0d9a515/pandas-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6a/bd/d91c5e39f490a49df14320f4e8c80161cfcce09f1e2cde1edd16a551abb3/frozenlist-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6a/fd/6adabd4f6d5e686f97dd02ce7fce3fe4cf672cbac36b8f67ff4040e8ad8b/msgpack-1.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/6b/67/6ea73b2173bcb1abe3a947fbd090cf96ee1b0a75f3f690e8902dc8ffdbfa/py2bit-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/6b/b2/d17b2722c636d64b4e77ddc68d8d0625719d39f94021be8719a218af4c0a/backports_zstd-1.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/6c/c2/63fdda36c56437eeb44aaf9493c8bcd62ce230ab1598924fc626ffbfa943/scikit_learn-1.9.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/17/853354204e1ca022d6b7d011ca7f3206c4f8faa3cc743e92609b49c1d83f/tinydb-4.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7a/da/323a01c349bd5fb01bb6652e314d9bb218cee630a736bdb810ad50e4013f/yarl-1.24.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/7a/f6/51d8a97116de23c9280c1fa3b813bc088f8571ce5936ba84af1ecf13ed45/pybigwig-0.3.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/59/208f71d70ddc6184f79b8c6d87d46eb7d7b12c19186a817dec9c9c3f3693/tifffile-2026.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/db/e655086b7f3a705df045bf0933bdd9c2f79bb3c97bfef1384598bb79a217/keyring-25.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/f3/d7b4c8c9b6657ff0db27b739894ed0665fa8f3c78a7452bf74d6447f6865/zipstream_new-1.1.8-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/0c/b3288ee003c344356cd505ba8d85286e8f0d4d4177a13d8eed7db6e7c688/planemo-0.75.44-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/8e/b4/23f8462c72e514563f5fd949e38a9e45bcc86fb59bf4b88240ba0ef02026/cwl_utils-0.42-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/fb/2c4c618185be2bda327f9dacd16b3122cc938809f19df7be840595d0e584/prov-1.5.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/92/7a/8017d45e513c720ee82bf062b1be3ae39087db3024571b4a00773e17c235/galaxy_job_config_init-0.1.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/94/95/7f522393c88313336b20d70fc849555757b2e5febc22b83b3a3f0fd4bce9/matplotlib-3.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/96/9a/982e48afcffcd727a9144506720ffd4224b6b7e355c98641866f38b7c043/jaraco_functools-4.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/97/1b/295bf2fa3e740131778065e5ffa2c481f0e7210182d408e9a2c244ff5b0c/readme_renderer-45.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9a/70/875f4a23bfc4731703a5835487d0d2fb999031bd415e7d17c0ae615c18b7/pathvalidate-3.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/setuptools-82.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/e9/1a19e42cd43cc1365e127db6aae85e1c671da1d9a5d746f4d34a50edb577/h5py-3.16.0-cp312-cp312-manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/9f/27/3c3e5398fa49227b2dd67211b4402c84ed9d5b48a4257bf5b1196f9b6a8e/ct3-3.4.0.post5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/9f/56/13ab06b4f93ca7cac71078fbe37fcea175d3216f31f85c3168a6bbd0bb9a/flake8-7.3.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/1f/d10d6ad23c86c62d90d867d0506881a392ec6ef06885b858eaab868dd356/deeptoolsintervals-0.1.9.tar.gz + - pypi: https://files.pythonhosted.org/packages/ac/3e/61d11b779e4e83ee8661439af070f6f138060cd41f0346a0a70432f9e55c/cwl_upgrader-1.2.15-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b4/97/0535f7d3f45d3853f79a11988d8faf798de684d902579126449455506e2f/ephemeris-0.10.11-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/b7/46/f5af3402b579fd5e11573ce652019a67074317e18c1935cc0b4ba9b35552/secretstorage-3.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/ruamel_yaml-0.19.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bb/6b/f4a3d0637692c49da8ef99d72d52526f92e0a8d6ac4f0ca9f31441b9d9ea/numpy-2.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c4/13/680c54afe3e65767bed7ec1a15571e1a2f1257128733851ade24abcefbcc/kiwisolver-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/2f/7229e91cfa37459622808002bec6eb019c7189bfc59788b3eaba5f273671/conda_package_streaming-0.13.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d4/74/3d6534c6ce0802bf085a32908b093e6a4123443050299bcc6e3828a9bf3e/cwltool-3.2.20260413085819-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/a5/bbbc3b74a94fbdbd7915e7ad030f16539bfdc1362f7e9003b594f0537950/glob2-0.7.tar.gz + - pypi: https://files.pythonhosted.org/packages/d9/b0/1e05aa4e0124cbc6509641353f513fc29c2b5e5197dbd5dfade810a521cf/galaxy_tool_util_models-26.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/dd/aa/1b939f6c67ed68635bb538e6752d3dacc02f66535182e939a89581a44e9c/scipy-1.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e3/78/47a205b5921bd86ef8d174fcda3daf23d65ad2887b38771935a064acd348/gxformat2-0.27.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e8/3d/1087453384dbde46a8c7f9356eead2c58be8a7bf156bca40243377c85715/more_itertools-11.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ec/17/d9ad109c8d7f05e6e78a79c4ec410ad3d38877b3efe18896eae6c446b534/edam_ontology-1.25.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/79/c45f2d53efe6ada1110cf6f9fca095e4ff47a0454444aefdde6ac4789179/cachecontrol-0.14.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f2/58/bc8954bda5fcda97bd7c19be11b85f91973d67a706ed4a3aec33e7de22db/jaraco_context-6.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f3/8d/5e5be3ced1d12966fefb5c4ea3b2a5b480afcea36406559442c6e31d4a48/multidict-6.7.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/38/8b6fc7a8153cb49eb3a9a13acfa9eeb6cc476e37888781e593e6f02ac05e/spython-0.3.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl osx-64: - conda: https://conda.anaconda.org/bioconda/osx-64/htslib-1.10-h9f635df_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda @@ -166,50 +262,144 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.2-hbb4bfdb_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.7-h3eecb57_6.conda - pypi: . + - pypi: https://files.pythonhosted.org/packages/00/01/4001033457f25ecdc2b1ffd513ca0b76200b9ea009dd64f6c1aad2dde133/boltons-26.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/02/08/9c41fb51ab5b43eb21674aff13df270e8ba6c4b29c8624e328dc7a9482af/distlib-0.4.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0b/35/1cceccc5fcb50fa2ed53e2aa278cd032f3902682a73e763fb1ac3be8e6fa/rich_argparse-1.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl + - pypi: https://files.pythonhosted.org/packages/0d/fe/6bea5c9162869c5beba5d9c8abbed835ec85bf1ec1fba05a3822325c45f3/build-1.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/10/c2/6604a71269e0c1bd75656d5a001432d16f2cc5b8c057140ec797155c295e/rdflib-7.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/13/37/a065dc3bd6e49423a6532c642ca7378d3f467b1ef44c2800c937af7f9739/filelock-3.29.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/14/27/cc422d11961a00bd04aa9a8d9a63683a1083fe2e6a491c285a94998d6751/pysam-0.24.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/15/1c/991e414e4305e5aef60c8ebb51f35a2e1b12cf80b9fc41733bbdd070c037/galaxy_tool_util-26.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/18/3e/4253fa84dd1947207033df2fecd52781e7e2f6d65c4360f38d739bb3c8c9/galaxy_util-26.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/82/a70006589557f267f15bd384c0642ad49f0d97b690c3a05b166b9dcbad3b/python_discovery-1.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1e/bb/009af3a9532d4cc66d5385391c512210fae32ab2442605f26aca1d8d2957/backports_zstd-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz + - pypi: https://files.pythonhosted.org/packages/22/00/ff3009c88e65de8011630acf8ab5a09cb2becd2aaf47fba2f3449f6224e9/lxml-6.1.1-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2a/7f/a946aa4f8752b37102b41e64dca18a1976ac705c3a0d1dfe74d820a02552/mistune-3.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2c/02/3623e6169bed617ed1e2d372f7c69f92ec28d54c4dfc997055c8578ec148/virtualenv-21.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/8e/b94ec25fcd4384de2a1f5e0403284f005ec743c04bafdb6698c851df5c6d/tuspy-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/37/aa/111610d8bf5b1bb7a295a048fc648cec346347a8b0be5881defd2d1b4a52/oyaml-1.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3a/7a/882d99539b19b1490cac5d77c67338d126e4122c8276bf640e411650c830/twine-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3c/6b/72e5f22f3c5069bd950f107110cd17468cdb43abda3c55b48c4013e7b667/bioblend-1.9.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3d/6f/221654a39431edc7e9685702ab06fbb22bb313629e0187c0ed4462ba8af7/schema_salad-8.9.20260417192335-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/42/77/de194443bf38daed9452139e960c632b0ef9f9a5dd9ce605fdf18ca9f1b1/id-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/46/3b/9dedd2e35cebcd4eb3539514b5ac674fd45654404839e6f9eff6e25d67c7/py2bit-1.0.1.tar.gz - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/53/78/ddd0affa881b1e09bc59f11ab829a7904f4bca29d25c34cbb9395e8e0061/allure_python_commons-2.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/58/9d/40b6267367182187139a4000b82a3b287d84d745bccd808e75d916920e9d/bleach-6.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5f/53/fb7122b71361a0d121b669dcf3d31244ef75badbbb724af388948de543e2/imagesize-2.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/fc/a7bf5b6e4e617b45f90f2d9d2a68519c249c81dd4fc2658c7a2a61c4f4b7/aiohappyeyeballs-2.6.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/62/5e/3a6a3e90f35cea3853c45e5d5fb9b7192ce4384616f932cf7591298ab6e1/numpydoc-1.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/64/80/4f6e318ee2a7c0750ed724fa33a4bdf1eacdc5a39a7a24e818a773cd91af/frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/6a/19/ca10ead60b0acc80b2b833c2c4a4f2ff753d0f58b811f70d911c7e94a25c/scipy-1.18.0-cp312-cp312-macosx_10_15_x86_64.whl - pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/17/853354204e1ca022d6b7d011ca7f3206c4f8faa3cc743e92609b49c1d83f/tinydb-4.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/59/208f71d70ddc6184f79b8c6d87d46eb7d7b12c19186a817dec9c9c3f3693/tifffile-2026.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/db/e655086b7f3a705df045bf0933bdd9c2f79bb3c97bfef1384598bb79a217/keyring-25.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/f3/d7b4c8c9b6657ff0db27b739894ed0665fa8f3c78a7452bf74d6447f6865/zipstream_new-1.1.8-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/0c/b3288ee003c344356cd505ba8d85286e8f0d4d4177a13d8eed7db6e7c688/planemo-0.75.44-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/b4/23f8462c72e514563f5fd949e38a9e45bcc86fb59bf4b88240ba0ef02026/cwl_utils-0.42-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/fb/2c4c618185be2bda327f9dacd16b3122cc938809f19df7be840595d0e584/prov-1.5.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/92/7a/8017d45e513c720ee82bf062b1be3ae39087db3024571b4a00773e17c235/galaxy_job_config_init-0.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/96/9a/982e48afcffcd727a9144506720ffd4224b6b7e355c98641866f38b7c043/jaraco_functools-4.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/96/c2/2a1605af41829cd2a247271b5b6f6b2dbc2e9407df2dd9bcafdceafcd4b3/ct3-3.4.0.post5.tar.gz + - pypi: https://files.pythonhosted.org/packages/97/1b/295bf2fa3e740131778065e5ffa2c481f0e7210182d408e9a2c244ff5b0c/readme_renderer-45.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9a/70/875f4a23bfc4731703a5835487d0d2fb999031bd415e7d17c0ae615c18b7/pathvalidate-3.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/setuptools-82.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9f/56/13ab06b4f93ca7cac71078fbe37fcea175d3216f31f85c3168a6bbd0bb9a/flake8-7.3.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/1f/d10d6ad23c86c62d90d867d0506881a392ec6ef06885b858eaab868dd356/deeptoolsintervals-0.1.9.tar.gz - pypi: https://files.pythonhosted.org/packages/ac/20/75f915ff375d6249e6550ac740fdbbd66159a068fd3af1400ff62036b07a/scikit_learn-1.9.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ac/3e/61d11b779e4e83ee8661439af070f6f138060cd41f0346a0a70432f9e55c/cwl_upgrader-1.2.15-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b4/97/0535f7d3f45d3853f79a11988d8faf798de684d902579126449455506e2f/ephemeris-0.10.11-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/ruamel_yaml-0.19.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bc/dd/9e8cbd8f5582ca4b590336f2b91ee5662f6a6ca562b565abaf696a0f81ff/msgpack-1.2.1-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/bf/1d/fcefb70922ea2268a8971d8e5874d9a8218644200fb8465f1dcad55e6851/yarl-1.24.2-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/bf/d9/405320f8077e8e1c5c4bd6adc45e1e6edf6d727b6da7f2e2533cf58bff71/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c2/82/280619e0bd7bf2454987e19282616e84762255dd9c8468f62382e8c191f1/aiohttp-3.14.1-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c8/c0/5d4119dba94093bbafede500d3defd2f5eab7897732998c04b54021e530b/h5py-3.16.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/2f/7229e91cfa37459622808002bec6eb019c7189bfc59788b3eaba5f273671/conda_package_streaming-0.13.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl - pypi: https://files.pythonhosted.org/packages/cf/f4/672930ad51bbc135f51cac89577155f1d0c2d120375fc77978d3aa071bb7/pybigwig-0.3.25.tar.gz + - pypi: https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/d4/74/3d6534c6ce0802bf085a32908b093e6a4123443050299bcc6e3828a9bf3e/cwltool-3.2.20260413085819-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/a5/bbbc3b74a94fbdbd7915e7ad030f16539bfdc1362f7e9003b594f0537950/glob2-0.7.tar.gz + - pypi: https://files.pythonhosted.org/packages/d9/b0/1e05aa4e0124cbc6509641353f513fc29c2b5e5197dbd5dfade810a521cf/galaxy_tool_util_models-26.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/da/17/f5276b496c61477a6c4fc5e7401f4bfe1c2e5ef7c6cd67896f2ade3809cb/matplotlib-3.11.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e3/78/47a205b5921bd86ef8d174fcda3daf23d65ad2887b38771935a064acd348/gxformat2-0.27.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e6/13/b8ae04c59392f8d11c6cd9fb4011d1dc7c86b81225c770280300e259ffe1/propcache-0.5.2-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/e8/3d/1087453384dbde46a8c7f9356eead2c58be8a7bf156bca40243377c85715/more_itertools-11.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ec/17/d9ad109c8d7f05e6e78a79c4ec410ad3d38877b3efe18896eae6c446b534/edam_ontology-1.25.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/79/c45f2d53efe6ada1110cf6f9fca095e4ff47a0454444aefdde6ac4789179/cachecontrol-0.14.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f2/58/bc8954bda5fcda97bd7c19be11b85f91973d67a706ed4a3aec33e7de22db/jaraco_context-6.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f3/ab/a7653bce9a3b204be6a6931767a9e23595807bb84790ce6685e4d7e5bd08/nh3-0.3.6-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl + - pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/38/8b6fc7a8153cb49eb3a9a13acfa9eeb6cc476e37888781e593e6f02ac05e/spython-0.3.14-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fa/0a/11486d02add7b1384dff7374d124b1cfbb0ee864dcc9f6a2c0380638cf84/numpy-2.5.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/fe/83/294bca639b0e052f1e2f65199b3db258780c7d4e31408b934c9c974a1379/maturin-1.14.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl + - pypi: https://files.pythonhosted.org/packages/fe/cf/18ef143a81610136d3da8193da9d80bfe1cb548a1e2d1c775f26b23d024a/multidict-6.7.1-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl osx-arm64: - conda: https://conda.anaconda.org/bioconda/osx-arm64/htslib-1.10-hfcd771d_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/ca-certificates-2026.6.17-hbd8a1cb_0.conda @@ -272,50 +462,145 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.2-h8088a28_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.7-hbf9d68e_6.conda - pypi: . + - pypi: https://files.pythonhosted.org/packages/00/01/4001033457f25ecdc2b1ffd513ca0b76200b9ea009dd64f6c1aad2dde133/boltons-26.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/02/08/9c41fb51ab5b43eb21674aff13df270e8ba6c4b29c8624e328dc7a9482af/distlib-0.4.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0b/35/1cceccc5fcb50fa2ed53e2aa278cd032f3902682a73e763fb1ac3be8e6fa/rich_argparse-1.8.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/0d/fe/6bea5c9162869c5beba5d9c8abbed835ec85bf1ec1fba05a3822325c45f3/build-1.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/10/c2/6604a71269e0c1bd75656d5a001432d16f2cc5b8c057140ec797155c295e/rdflib-7.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/13/37/a065dc3bd6e49423a6532c642ca7378d3f467b1ef44c2800c937af7f9739/filelock-3.29.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/13/e2/2e325795566de01d0d7c3bb57d3c370616b2d07b01214e84eec5d3b10963/lxml-6.1.1-cp314-cp314-macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/15/1c/991e414e4305e5aef60c8ebb51f35a2e1b12cf80b9fc41733bbdd070c037/galaxy_tool_util-26.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/18/3e/4253fa84dd1947207033df2fecd52781e7e2f6d65c4360f38d739bb3c8c9/galaxy_util-26.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/1a/82/a70006589557f267f15bd384c0642ad49f0d97b690c3a05b166b9dcbad3b/python_discovery-1.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/d2/23d25e3f247b328be58d04a4c9f894178a0d1eda7d42867cfb388adaf416/fonttools-4.63.0-cp314-cp314-macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/2a/7f/a946aa4f8752b37102b41e64dca18a1976ac705c3a0d1dfe74d820a02552/mistune-3.2.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/2c/02/3623e6169bed617ed1e2d372f7c69f92ec28d54c4dfc997055c8578ec148/virtualenv-21.5.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/32/8e/b94ec25fcd4384de2a1f5e0403284f005ec743c04bafdb6698c851df5c6d/tuspy-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/37/aa/111610d8bf5b1bb7a295a048fc648cec346347a8b0be5881defd2d1b4a52/oyaml-1.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3a/7a/882d99539b19b1490cac5d77c67338d126e4122c8276bf640e411650c830/twine-6.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3c/6b/72e5f22f3c5069bd950f107110cd17468cdb43abda3c55b48c4013e7b667/bioblend-1.9.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3c/a7/552a7821597c632b907f7bfe8f36f9f572777af8ef8a48353041cf8e091a/scikit_learn-1.9.0-cp314-cp314-macosx_12_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/3d/6f/221654a39431edc7e9685702ab06fbb22bb313629e0187c0ed4462ba8af7/schema_salad-8.9.20260417192335-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/42/77/de194443bf38daed9452139e960c632b0ef9f9a5dd9ce605fdf18ca9f1b1/id-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/46/3b/9dedd2e35cebcd4eb3539514b5ac674fd45654404839e6f9eff6e25d67c7/py2bit-1.0.1.tar.gz - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/49/b2/97980f3ad4fae37dd7fe31626e2bf75fbf8bdf5d303950ec1fab39a12da8/kiwisolver-1.5.0-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/53/78/ddd0affa881b1e09bc59f11ab829a7904f4bca29d25c34cbb9395e8e0061/allure_python_commons-2.16.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/58/9d/40b6267367182187139a4000b82a3b287d84d745bccd808e75d916920e9d/bleach-6.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/5d/39/b72e168daf9c00fb20c9fc996d00437ccecdef3102387775d29d7a62576d/numpy-2.5.0-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5f/53/fb7122b71361a0d121b669dcf3d31244ef75badbbb724af388948de543e2/imagesize-2.0.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/5f/fc/a7bf5b6e4e617b45f90f2d9d2a68519c249c81dd4fc2658c7a2a61c4f4b7/aiohappyeyeballs-2.6.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/60/5c/15b4c7a0182f75ffa90751958ba36a9c01cafee367d49a3edc10ed140b01/msgpack-1.2.1-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/62/5e/3a6a3e90f35cea3853c45e5d5fb9b7192ce4384616f932cf7591298ab6e1/numpydoc-1.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/63/b1/4260d67d6bd85e58a66b72d54ce15d5de789b6f3870cc6bedf8ff9667401/propcache-0.5.2-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/68/10/bf2d6738d72748b961a3751ab89522d58c54efc36a8e1a12161216cd45cf/pandas-3.0.3-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/6a/b7/9366ed44ced9b7ef357ab48c94205280276db9d7f064aa3012a97227e966/h5py-3.16.0-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/72/65/a4559d4ff4a210d2a26d7ca0712e4e738cbfc963135f86e8ae807ca420eb/pysam-0.24.0-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/17/853354204e1ca022d6b7d011ca7f3206c4f8faa3cc743e92609b49c1d83f/tinydb-4.8.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7c/03/b8cdb625a21f710dfa11bbca1f48fb4057d2c0286975f8b415bf80942c99/matplotlib-3.11.0-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/81/59/208f71d70ddc6184f79b8c6d87d46eb7d7b12c19186a817dec9c9c3f3693/tifffile-2026.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/db/e655086b7f3a705df045bf0933bdd9c2f79bb3c97bfef1384598bb79a217/keyring-25.7.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/81/f3/d7b4c8c9b6657ff0db27b739894ed0665fa8f3c78a7452bf74d6447f6865/zipstream_new-1.1.8-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/84/0c/b3288ee003c344356cd505ba8d85286e8f0d4d4177a13d8eed7db6e7c688/planemo-0.75.44-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/b4/23f8462c72e514563f5fd949e38a9e45bcc86fb59bf4b88240ba0ef02026/cwl_utils-0.42-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/8e/fb/2c4c618185be2bda327f9dacd16b3122cc938809f19df7be840595d0e584/prov-1.5.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/92/7a/8017d45e513c720ee82bf062b1be3ae39087db3024571b4a00773e17c235/galaxy_job_config_init-0.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/96/9a/982e48afcffcd727a9144506720ffd4224b6b7e355c98641866f38b7c043/jaraco_functools-4.5.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/97/1b/295bf2fa3e740131778065e5ffa2c481f0e7210182d408e9a2c244ff5b0c/readme_renderer-45.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl + - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9a/70/875f4a23bfc4731703a5835487d0d2fb999031bd415e7d17c0ae615c18b7/pathvalidate-3.3.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/setuptools-82.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/9f/56/13ab06b4f93ca7cac71078fbe37fcea175d3216f31f85c3168a6bbd0bb9a/flake8-7.3.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a1/93/72b1736d68f03fda5fdf0f2180fb6caaae3894f1b854d006ac61ecc727ee/frozenlist-1.8.0-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ac/1f/d10d6ad23c86c62d90d867d0506881a392ec6ef06885b858eaab868dd356/deeptoolsintervals-0.1.9.tar.gz + - pypi: https://files.pythonhosted.org/packages/ac/3e/61d11b779e4e83ee8661439af070f6f138060cd41f0346a0a70432f9e55c/cwl_upgrader-1.2.15-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b4/97/0535f7d3f45d3853f79a11988d8faf798de684d902579126449455506e2f/ephemeris-0.10.11-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b4/c9/7d293a9ea42ef05d6260714f8cf641ba64fab438be55312b1c719d4e7cc6/fissix-24.4.24-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/ruamel_yaml-0.19.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ba/8c/1a9e46228571de18f8e28f16fabdfc20212a5d019f3e3303452b3f0a580d/pillow-12.2.0-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/ba/b1/5297bb6a7df4782f7605bffc43b31f5044070935fbbcaa6c705a07e6ac65/yarl-1.24.2-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/cc/2f/7229e91cfa37459622808002bec6eb019c7189bfc59788b3eaba5f273671/conda_package_streaming-0.13.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cf/f4/672930ad51bbc135f51cac89577155f1d0c2d120375fc77978d3aa071bb7/pybigwig-0.3.25.tar.gz + - pypi: https://files.pythonhosted.org/packages/d4/74/3d6534c6ce0802bf085a32908b093e6a4123443050299bcc6e3828a9bf3e/cwltool-3.2.20260413085819-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d7/88/b72def7262e150d16be13fca37a96481138d624e700340bc3362a7588929/scipy-1.18.0-cp314-cp314-macosx_12_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/d7/a5/bbbc3b74a94fbdbd7915e7ad030f16539bfdc1362f7e9003b594f0537950/glob2-0.7.tar.gz + - pypi: https://files.pythonhosted.org/packages/d9/b0/1e05aa4e0124cbc6509641353f513fc29c2b5e5197dbd5dfade810a521cf/galaxy_tool_util_models-26.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e3/78/47a205b5921bd86ef8d174fcda3daf23d65ad2887b38771935a064acd348/gxformat2-0.27.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e8/3d/1087453384dbde46a8c7f9356eead2c58be8a7bf156bca40243377c85715/more_itertools-11.1.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/e9/a7/248e1aebe0c7810b0271e021a0f2a5eb6e78a051885b3c9df49f42a5802d/aiohttp-3.14.1-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/ec/17/d9ad109c8d7f05e6e78a79c4ec410ad3d38877b3efe18896eae6c446b534/edam_ontology-1.25.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/ef/2f/c5464532e965badff2f4c4c1a3a83f5697f0d7c407ed0cda44aaa99bb451/certifi-2026.6.17-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/ef/79/c45f2d53efe6ada1110cf6f9fca095e4ff47a0454444aefdde6ac4789179/cachecontrol-0.14.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f1/4f/733c48f270565d78b4544f2baddc2fb2a245e5a8640254b12c36ac7ac68e/multidict-6.7.1-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/f2/58/bc8954bda5fcda97bd7c19be11b85f91973d67a706ed4a3aec33e7de22db/jaraco_context-6.1.2-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f3/ab/a7653bce9a3b204be6a6931767a9e23595807bb84790ce6685e4d7e5bd08/nh3-0.3.6-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl + - pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/f9/38/8b6fc7a8153cb49eb3a9a13acfa9eeb6cc476e37888781e593e6f02ac05e/spython-0.3.14-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/fd/99/757a48b4ace0097b63550597db28f58da0b91d89889f98b34b30f272c0bf/ct3-3.4.0.post5-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/fe/83/294bca639b0e052f1e2f65199b3db258780c7d4e31408b934c9c974a1379/maturin-1.14.1-py3-none-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl + - pypi: https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl packages: - conda: https://conda.anaconda.org/bioconda/linux-64/htslib-1.19-h81da01d_0.tar.bz2 sha256: 70a43fdc3e81fde05e8cee0b1880d9929c00b2581e162e7c21926deb379b31b3 @@ -2780,6 +3065,15 @@ packages: - build ; extra == 'actions' - planemo ; extra == 'actions' requires_python: '>3.9' +- pypi: https://files.pythonhosted.org/packages/00/01/4001033457f25ecdc2b1ffd513ca0b76200b9ea009dd64f6c1aad2dde133/boltons-26.0.0-py3-none-any.whl + name: boltons + version: 26.0.0 + sha256: ba077cac51b27532299634f87f5589b4080fa94a011b4d43a9247f775e9215c7 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/02/08/9c41fb51ab5b43eb21674aff13df270e8ba6c4b29c8624e328dc7a9482af/distlib-0.4.3-py2.py3-none-any.whl + name: distlib + version: 0.4.3 + sha256: 4b0ce306c966eb73bc3a7b6abad017c556dadd92c44701562cd528ac7fde4d5b - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl name: docutils version: 0.22.4 @@ -2790,6 +3084,16 @@ packages: version: 4.1.0 sha256: 647ba99caddc2cc1e55a51e4360689115551bf4476d90e8162cf8c345fe233c7 requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/08/f6/af32e23e563971ffb0fb86be52bc5be5c2c118858ffc119bf6a9039b173d/lxml-6.1.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl + name: lxml + version: 6.1.1 + sha256: ebe6af670449830d6d9b752c256a983291c766a1365ba5d5460048f9e33a7818 + requires_dist: + - cssselect>=0.7 ; extra == 'cssselect' + - html5lib ; extra == 'html5' + - beautifulsoup4 ; extra == 'htmlsoup' + - lxml-html-clean ; extra == 'html-clean' + requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl name: sphinxcontrib-htmlhelp version: 2.1.0 @@ -2802,11 +3106,38 @@ packages: - pytest ; extra == 'test' - html5lib ; extra == 'test' requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/0b/35/1cceccc5fcb50fa2ed53e2aa278cd032f3902682a73e763fb1ac3be8e6fa/rich_argparse-1.8.0-py3-none-any.whl + name: rich-argparse + version: 1.8.0 + sha256: d2a3ce7854654e2253c578763ab0a32f05016f23a55fadba7b9a91b6c0e92142 + requires_dist: + - rich>=11.0.0 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl + name: pycparser + version: '3.0' + sha256: b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992 + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl name: charset-normalizer version: 3.4.7 sha256: eca9705049ad3c7345d574e3510665cb2cf844c2f2dcfe675332677f081cbd46 requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/0d/fe/6bea5c9162869c5beba5d9c8abbed835ec85bf1ec1fba05a3822325c45f3/build-1.5.0-py3-none-any.whl + name: build + version: 1.5.0 + sha256: 13f3eecb844759ab66efec90ca17639bbf14dc06cb2fdf37a9010322d9c50a6f + requires_dist: + - packaging>=24.0 + - pyproject-hooks + - colorama ; os_name == 'nt' + - importlib-metadata>=4.6 ; python_full_version < '3.10.2' + - tomli>=1.1.0 ; python_full_version < '3.11' + - keyring ; extra == 'keyring' + - uv>=0.1.18 ; extra == 'uv' + - virtualenv>=20.17 ; python_full_version >= '3.10' and python_full_version < '3.14' and extra == 'virtualenv' + - virtualenv>=20.31 ; python_full_version >= '3.14' and extra == 'virtualenv' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/10/bd/c038d7cc38edc1aa5bf91ab8068b63d4308c66c4c8bb3cbba7dfbc049f9c/pyparsing-3.3.2-py3-none-any.whl name: pyparsing version: 3.3.2 @@ -2815,11 +3146,126 @@ packages: - railroad-diagrams ; extra == 'diagrams' - jinja2 ; extra == 'diagrams' requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/10/c2/6604a71269e0c1bd75656d5a001432d16f2cc5b8c057140ec797155c295e/rdflib-7.6.0-py3-none-any.whl + name: rdflib + version: 7.6.0 + sha256: 30c0a3ebf4c0e09215f066be7246794b6492e054e782d7ac2a34c9f70a15e0dd + requires_dist: + - berkeleydb>=18.1.0,<19.0.0 ; extra == 'berkeleydb' + - html5rdf>=1.2,<2 ; extra == 'html' + - httpx>=0.28.1,<0.29.0 ; extra == 'graphdb' or extra == 'rdf4j' + - isodate>=0.7.2,<1.0.0 ; python_full_version < '3.11' + - lxml>=4.3,<6.0 ; extra == 'lxml' + - networkx>=2,<4 ; extra == 'networkx' + - orjson>=3.9.14,<4 ; extra == 'orjson' + - pyparsing>=2.1.0,<4 + requires_python: '>=3.8.1' +- pypi: https://files.pythonhosted.org/packages/13/37/a065dc3bd6e49423a6532c642ca7378d3f467b1ef44c2800c937af7f9739/filelock-3.29.4-py3-none-any.whl + name: filelock + version: 3.29.4 + sha256: dac1648087d5115554850d113e7dd8c83ab2d38e3435dde2d4f163847e57b767 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/13/e2/2e325795566de01d0d7c3bb57d3c370616b2d07b01214e84eec5d3b10963/lxml-6.1.1-cp314-cp314-macosx_10_15_universal2.whl + name: lxml + version: 6.1.1 + sha256: 19b7ab10b210b0b3ad7985d9ac4eb66ab09a90b20fe6e2f7ba55d01a234345d0 + requires_dist: + - cssselect>=0.7 ; extra == 'cssselect' + - html5lib ; extra == 'html5' + - beautifulsoup4 ; extra == 'htmlsoup' + - lxml-html-clean ; extra == 'html-clean' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/14/15/5574111ae50dd6e879456888c0eadd4c5a869959775854e18e18a6b345f3/propcache-0.5.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: propcache + version: 0.5.2 + sha256: 6f328175a2cde1f0ff2c4ed8ce968b9dcfb55f3a7153f39e2957ed994da13476 + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/14/27/cc422d11961a00bd04aa9a8d9a63683a1083fe2e6a491c285a94998d6751/pysam-0.24.0-cp312-cp312-macosx_10_13_x86_64.whl name: pysam version: 0.24.0 sha256: 38d5cc5dff4bdaceabbb58c0700c41b132aacf783432b1d16060b46ac7d866e2 requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/15/1c/991e414e4305e5aef60c8ebb51f35a2e1b12cf80b9fc41733bbdd070c037/galaxy_tool_util-26.0.1-py3-none-any.whl + name: galaxy-tool-util + version: 26.0.1 + sha256: 8e96969e2ced926bededa90ac137aa3a939500eb521ec7f64edc0f39f48b180a + requires_dist: + - galaxy-tool-util-models + - galaxy-util[image-util,template]>=22.1 + - conda-package-streaming + - lxml!=4.2.2 + - markupsafe + - packaging + - pydantic>=2.7.4 + - pyyaml + - requests + - sortedcontainers + - typing-extensions + - cwl-utils ; extra == 'cwl' + - cwltool>=3.1.20230624081518 ; extra == 'cwl' + - jinja2 ; extra == 'mulled' + - whoosh ; extra == 'mulled' + - edam-ontology ; extra == 'edam' + - numpy ; extra == 'extended-assertions' + - pysam ; extra == 'extended-assertions' + - pillow ; extra == 'extended-assertions' + - tifffile ; extra == 'extended-assertions' + - beaker ; extra == 'test' + - pytest ; extra == 'test' + - pytest-mock ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/18/3e/4253fa84dd1947207033df2fecd52781e7e2f6d65c4360f38d739bb3c8c9/galaxy_util-26.0.1-py3-none-any.whl + name: galaxy-util + version: 26.0.1 + sha256: 62185001f2295338e45aa7376f30bbefd0ee69f08875892170c9831901a0310d + requires_dist: + - bleach + - boltons + - docutils!=0.17,!=0.17.1 + - importlib-resources>=5.10.0 ; python_full_version < '3.12' + - packaging + - pyparsing>=3.0.0 + - pyyaml + - requests + - typing-extensions + - zipstream-new + - pillow ; extra == 'image-util' + - dictobj ; extra == 'jstree' + - ct3>=3.3.3 ; extra == 'template' + - fissix ; python_full_version >= '3.13' and extra == 'template' + - future>=1.0.0 ; extra == 'template' + - galaxy-tool-util-models ; extra == 'config-template' + - jinja2 ; extra == 'config-template' + - pydantic>=2.7.4 ; extra == 'config-template' + - pytest ; extra == 'test' + - pytest-httpserver ; extra == 'test' + - responses ; extra == 'test' + - werkzeug ; extra == 'test' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl + name: typing-extensions + version: 4.15.0 + sha256: f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/1a/82/a70006589557f267f15bd384c0642ad49f0d97b690c3a05b166b9dcbad3b/python_discovery-1.4.2-py3-none-any.whl + name: python-discovery + version: 1.4.2 + sha256: 475803f53b7b2ed6e490e27373f9d8340f7d2eebf9acdaf645d7d714c97bb500 + requires_dist: + - filelock>=3.15.4 + - platformdirs>=4.3.6,<5 + - furo>=2025.12.19 ; extra == 'docs' + - sphinx-autodoc-typehints>=3.6.3 ; extra == 'docs' + - sphinx>=9.1 ; extra == 'docs' + - sphinxcontrib-mermaid>=2 ; extra == 'docs' + - sphinxcontrib-towncrier>=0.4 ; extra == 'docs' + - towncrier>=25.8 ; extra == 'docs' + - covdefaults>=2.3 ; extra == 'testing' + - coverage>=7.5.4 ; extra == 'testing' + - pytest-mock>=3.14 ; extra == 'testing' + - pytest>=8.3.5 ; extra == 'testing' + - setuptools>=75.1 ; extra == 'testing' + requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/1a/bd/9c0d5d6983905ce2c9edaa073a7e89355a9cf7f396988e05d32f1c37785d/maturin-1.14.1-py3-none-manylinux_2_12_x86_64.manylinux2010_x86_64.musllinux_1_1_x86_64.whl name: maturin version: 1.14.1 @@ -2838,6 +3284,78 @@ packages: - mypy>=1.11.2 ; extra == 'all' - pytest>=8.3.2 ; extra == 'all' requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/1e/bb/009af3a9532d4cc66d5385391c512210fae32ab2442605f26aca1d8d2957/backports_zstd-1.6.0-cp312-cp312-macosx_10_13_x86_64.whl + name: backports-zstd + version: 1.6.0 + sha256: 0466b14723f3b7697669c00ee66fe16e30e25636b286b0a923fa86fa3d8a753c + requires_python: '>=3.10,<3.14' +- pypi: https://files.pythonhosted.org/packages/1f/99/d1c90d6041656cc6ee229dc99cd67fd0cd5aec3c5f7d72fffc27cc750054/cryptography-49.0.0.tar.gz + name: cryptography + version: 49.0.0 + sha256: f89660a348f4f78a92366240a61404e337586ef7f5909a2fef59ca88ef505493 + requires_dist: + - cffi>=2.0.0 ; platform_python_implementation != 'PyPy' + - typing-extensions>=4.13.2 ; python_full_version < '3.11' + - bcrypt>=3.1.5 ; extra == 'ssh' + requires_python: '>=3.9,!=3.9.0,!=3.9.1' +- pypi: https://files.pythonhosted.org/packages/20/2c/0622f20ff02b2ef32558733443805dc82fd4c275be01b2d19d14676f3a1b/cryptography-49.0.0-cp311-abi3-manylinux_2_28_x86_64.whl + name: cryptography + version: 49.0.0 + sha256: 2afe9051da7ae7bd5905da5a949280c7d2bb75682e188f650a9d0f2756b834c6 + requires_dist: + - cffi>=2.0.0 ; platform_python_implementation != 'PyPy' + - typing-extensions>=4.13.2 ; python_full_version < '3.11' + - bcrypt>=3.1.5 ; extra == 'ssh' + requires_python: '>=3.9,!=3.9.0,!=3.9.1' +- pypi: https://files.pythonhosted.org/packages/20/9c/d445818389df371f56d141d881153ba23183c4735a03f7356ffb43f7757d/aiohttp-3.14.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: aiohttp + version: 3.14.1 + sha256: 3e6fc1a85fa7194a1a7d19f44e8609180f4a8eb5fa4c7ed8b4355f080fad235c + requires_dist: + - aiohappyeyeballs>=2.5.0 + - aiosignal>=1.4.0 + - async-timeout>=4.0,<6.0 ; python_full_version < '3.11' + - attrs>=17.3.0 + - frozenlist>=1.1.1 + - multidict>=4.5,<7.0 + - propcache>=0.2.0 + - typing-extensions>=4.4 ; python_full_version < '3.13' + - yarl>=1.17.0,<2.0 + - aiodns>=3.3.0 ; sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + - brotli>=1.2 ; platform_python_implementation == 'CPython' and sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + - brotlicffi>=1.2 ; platform_python_implementation != 'CPython' and extra == 'speedups' + - backports-zstd ; python_full_version < '3.14' and platform_python_implementation == 'CPython' and sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/22/00/ff3009c88e65de8011630acf8ab5a09cb2becd2aaf47fba2f3449f6224e9/lxml-6.1.1-cp312-cp312-macosx_10_13_x86_64.whl + name: lxml + version: 6.1.1 + sha256: 25c6997a9a534e016695a0ba06b2f07945de682731ff01065b6d5a4474179da1 + requires_dist: + - cssselect>=0.7 ; extra == 'cssselect' + - html5lib ; extra == 'html5' + - beautifulsoup4 ; extra == 'htmlsoup' + - lxml-html-clean ; extra == 'html-clean' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl + name: pytest + version: 9.1.1 + sha256: 37a86b45efb9a47a61a36449063e8e18d0cab3161329fc099eb21783169c4f0c + requires_dist: + - colorama>=0.4 ; sys_platform == 'win32' + - exceptiongroup>=1 ; python_full_version < '3.11' + - iniconfig>=1.0.1 + - packaging>=22 + - pluggy>=1.5,<2 + - pygments>=2.7.2 + - tomli>=1 ; python_full_version < '3.11' + - argcomplete ; extra == 'dev' + - attrs>=19.2 ; extra == 'dev' + - hypothesis>=3.56 ; extra == 'dev' + - mock ; extra == 'dev' + - requests ; extra == 'dev' + - setuptools ; extra == 'dev' + - xmlschema ; extra == 'dev' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl name: pandas version: 3.0.3 @@ -2928,6 +3446,11 @@ packages: - xlsxwriter>=3.2.0 ; extra == 'all' - zstandard>=0.23.0 ; extra == 'all' requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl + name: mccabe + version: 0.7.0 + sha256: 6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e + requires_python: '>=3.6' - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl name: sphinxcontrib-qthelp version: 2.0.0 @@ -2974,6 +3497,47 @@ packages: - skia-pathops>=0.5.0 ; extra == 'all' - uharfbuzz>=0.45.0 ; extra == 'all' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/2a/7f/a946aa4f8752b37102b41e64dca18a1976ac705c3a0d1dfe74d820a02552/mistune-3.2.1-py3-none-any.whl + name: mistune + version: 3.2.1 + sha256: 78cdb0ba5e938053ccf63651b352508d2efa9411dc8810bfb05f2dc5140c0048 + requires_dist: + - typing-extensions ; python_full_version < '3.11' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/2c/02/3623e6169bed617ed1e2d372f7c69f92ec28d54c4dfc997055c8578ec148/virtualenv-21.5.1-py3-none-any.whl + name: virtualenv + version: 21.5.1 + sha256: 55aa670b67bbfb991b03fda39bd3276d92c419d702376e98c5df1c9989a26783 + requires_dist: + - distlib>=0.3.7,<1 + - filelock>=3.24.2,<4 ; python_full_version >= '3.10' + - filelock>=3.16.1,<=3.19.1 ; python_full_version < '3.10' + - platformdirs>=3.9.1,<5 + - python-discovery>=1.4.2 + - typing-extensions>=4.13.2 ; python_full_version < '3.11' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl + name: sortedcontainers + version: 2.4.0 + sha256: a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0 +- pypi: https://files.pythonhosted.org/packages/32/8e/b94ec25fcd4384de2a1f5e0403284f005ec743c04bafdb6698c851df5c6d/tuspy-1.1.0-py3-none-any.whl + name: tuspy + version: 1.1.0 + sha256: 7fc5ac8fb25de37c96c90213f83a1ffdede7f48a471cb5a15a2f57846828a79a + requires_dist: + - requests>=2.18.4 + - tinydb>=3.5.0 + - aiohttp>=3.6.2 + - responses>=0.5.1 ; extra == 'test' + - aioresponses>=0.6.2 ; extra == 'test' + - coverage>=4.2 ; extra == 'test' + - pytest>=3.0.3 ; extra == 'test' + - pytest-cov>=2.3.1,<2.6 ; extra == 'test' + - parametrize>=0.1.1 ; extra == 'test' + - tox>=2.3.1 ; extra == 'dev' + - sphinx-autobuild==2021.3.14 ; extra == 'dev' + - sphinx==1.7.1 ; extra == 'dev' + requires_python: '>=3.5.3' - pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl name: threadpoolctl version: 3.6.0 @@ -2990,11 +3554,49 @@ packages: - sphinx>=5 ; extra == 'standalone' - pytest ; extra == 'test' requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/37/aa/111610d8bf5b1bb7a295a048fc648cec346347a8b0be5881defd2d1b4a52/oyaml-1.0-py2.py3-none-any.whl + name: oyaml + version: '1.0' + sha256: 3a378747b7fb2425533d1ce41962d6921cda075d46bb480a158d45242d156323 + requires_dist: + - pyyaml +- pypi: https://files.pythonhosted.org/packages/3a/7a/882d99539b19b1490cac5d77c67338d126e4122c8276bf640e411650c830/twine-6.2.0-py3-none-any.whl + name: twine + version: 6.2.0 + sha256: 418ebf08ccda9a8caaebe414433b0ba5e25eb5e4a927667122fbe8f829f985d8 + requires_dist: + - readme-renderer>=35.0 + - requests>=2.20 + - requests-toolbelt>=0.8.0,!=0.9.0 + - urllib3>=1.26.0 + - importlib-metadata>=3.6 ; python_full_version < '3.10' + - keyring>=21.2.0 ; platform_machine != 'ppc64le' and platform_machine != 's390x' + - rfc3986>=1.4.0 + - rich>=12.0.0 + - packaging>=24.0 + - id + - keyring>=21.2.0 ; extra == 'keyring' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl + name: appdirs + version: 1.4.4 + sha256: a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128 - pypi: https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl name: markupsafe version: 3.0.3 sha256: d6dd0be5b5b189d31db7cda48b91d7e0a9795f31430b7f271219ab30f1d3ac9d requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/3c/6b/72e5f22f3c5069bd950f107110cd17468cdb43abda3c55b48c4013e7b667/bioblend-1.9.0-py3-none-any.whl + name: bioblend + version: 1.9.0 + sha256: 573d6e8e8f1ee3f5a5630a05e561ca5c69ecfa2cf93d7e81d472ec8fe53abc49 + requires_dist: + - pyyaml + - requests>=2.20.0 + - requests-toolbelt>=0.5.1,!=0.9.0 + - tuspy + - pytest ; extra == 'testing' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/3c/a7/552a7821597c632b907f7bfe8f36f9f572777af8ef8a48353041cf8e091a/scikit_learn-1.9.0-cp314-cp314-macosx_12_0_arm64.whl name: scikit-learn version: 1.9.0 @@ -3059,6 +3661,51 @@ packages: - pooch>=1.8.0 ; extra == 'tests' - conda-lock==3.0.1 ; extra == 'maintenance' requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/3d/6f/221654a39431edc7e9685702ab06fbb22bb313629e0187c0ed4462ba8af7/schema_salad-8.9.20260417192335-py3-none-any.whl + name: schema-salad + version: 8.9.20260417192335 + sha256: dd7f5b1aa4d6f3ab61e7fd83d942af22d83afecc5f24f48b2027810efe6bd76f + requires_dist: + - requests>=1.0 + - ruamel-yaml>=0.17.6,<0.20 + - rdflib>=4.2.2,<8.0.0 + - mistune>=3,<3.3 + - cachecontrol[filecache]>=0.13.1,<0.15 + - mypy-extensions + - rich-argparse + - sphinx>=2.2 ; extra == 'docs' + - sphinx-rtd-theme>=1 ; extra == 'docs' + - pytest<10 ; extra == 'docs' + - sphinx-autoapi ; extra == 'docs' + - sphinx-autodoc-typehints ; extra == 'docs' + - sphinxcontrib-autoprogram ; extra == 'docs' + - black ; extra == 'pycodegen' + requires_python: '>=3.10,<3.15' +- pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl + name: requests-toolbelt + version: 1.0.0 + sha256: cccfdd665f0a24fcf4726e690f65639d272bb0637b9b92dfd91a5568ccf6bd06 + requires_dist: + - requests>=2.0.1,<3.0.0 + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' +- pypi: https://files.pythonhosted.org/packages/42/77/de194443bf38daed9452139e960c632b0ef9f9a5dd9ce605fdf18ca9f1b1/id-1.6.1-py3-none-any.whl + name: id + version: 1.6.1 + sha256: f5ec41ed2629a508f5d0988eda142e190c9c6da971100612c4de9ad9f9b237ca + requires_dist: + - urllib3>=2,<3 + - build ; extra == 'dev' + - bump>=1.3.2 ; extra == 'dev' + - id[test,lint] ; extra == 'dev' + - bandit ; extra == 'lint' + - interrogate ; extra == 'lint' + - mypy ; extra == 'lint' + - ruff<0.14.15 ; extra == 'lint' + - pytest ; extra == 'test' + - pytest-cov ; extra == 'test' + - pretend ; extra == 'test' + - coverage[toml] ; extra == 'test' + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl name: pillow version: 12.2.0 @@ -3177,11 +3824,38 @@ packages: - sphinx>=5 ; extra == 'standalone' - pytest ; extra == 'test' requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/53/78/ddd0affa881b1e09bc59f11ab829a7904f4bca29d25c34cbb9395e8e0061/allure_python_commons-2.16.0-py3-none-any.whl + name: allure-python-commons + version: 2.16.0 + sha256: 6d42a500078aca8a2e68823075c1ffc2396987bb268d62b19af82390b205ce88 + requires_dist: + - attrs>=16.0.0 + - pluggy>=0.4.0 + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl + name: pluggy + version: 1.6.0 + sha256: e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746 + requires_dist: + - pre-commit ; extra == 'dev' + - tox ; extra == 'dev' + - pytest ; extra == 'testing' + - pytest-benchmark ; extra == 'testing' + - coverage ; extra == 'testing' + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/55/0f/e7f1ff3a1cabc6c4486a7ee1b0506aedf2f5f8329760ac1f4e8032feef2b/pysam-0.24.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl name: pysam version: 0.24.0 sha256: 4a642f18649e59817de272173e9c27c031dceaca199809e4f8b338ebfc5d6698 requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/58/9d/40b6267367182187139a4000b82a3b287d84d745bccd808e75d916920e9d/bleach-6.4.0-py3-none-any.whl + name: bleach + version: 6.4.0 + sha256: 4b6b6a54fff2e69a3dde9d21cc6301220bee3c3cb792187d11403fd795031081 + requires_dist: + - webencodings + - tinycss2>=1.1.0 ; extra == 'css' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl name: pillow version: 12.2.0 @@ -3214,11 +3888,23 @@ packages: - trove-classifiers>=2024.10.12 ; extra == 'tests' - defusedxml ; extra == 'xmp' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl + name: cffi + version: 2.0.0 + sha256: c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13 + requires_dist: + - pycparser ; implementation_name != 'PyPy' + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl name: markupsafe version: 3.0.3 sha256: d53197da72cc091b024dd97249dfc7794d6a56530370992a5e1a08983ad9230e requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/5b/67/314f6151bad77a93d751978a344033e1fc890822f05f0416079338e34231/nh3-0.3.6-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: nh3 + version: 0.3.6 + sha256: 905f877dc66dd7aea4a76e54bcb26acb5ff8216f720c0017ccf63e0e6035698e + requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/5d/39/b72e168daf9c00fb20c9fc996d00437ccecdef3102387775d29d7a62576d/numpy-2.5.0-cp314-cp314-macosx_11_0_arm64.whl name: numpy version: 2.5.0 @@ -3240,6 +3926,23 @@ packages: version: 2.0.0 sha256: 5667c5bbb57ab3f1fa4bc366f4fbc971db3d5ed011fd2715fd8001f782718d96 requires_python: '>=3.10,<3.15' +- pypi: https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: pydantic-core + version: 2.46.4 + sha256: 926c9541b14b12b1681dca8a0b75feb510b06c6341b70a8e500c2fdcff837cce + requires_dist: + - typing-extensions>=4.14.1 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/5f/fc/a7bf5b6e4e617b45f90f2d9d2a68519c249c81dd4fc2658c7a2a61c4f4b7/aiohappyeyeballs-2.6.2-py3-none-any.whl + name: aiohappyeyeballs + version: 2.6.2 + sha256: 4708045e2d7a6c6bdf8aafa8ed39649eaf926a4543b54560659129e3365953c4 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/60/5c/15b4c7a0182f75ffa90751958ba36a9c01cafee367d49a3edc10ed140b01/msgpack-1.2.1-cp314-cp314-macosx_11_0_arm64.whl + name: msgpack + version: 1.2.1 + sha256: 810b916696c86ef0deb3b74588480224df4c1b071136c34183e4a2a4284d7ac7 + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/62/5e/3a6a3e90f35cea3853c45e5d5fb9b7192ce4384616f932cf7591298ab6e1/numpydoc-1.10.0-py3-none-any.whl name: numpydoc version: 1.10.0 @@ -3256,6 +3959,21 @@ packages: - markupsafe>=2.0 - babel>=2.7 ; extra == 'i18n' requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/63/b1/4260d67d6bd85e58a66b72d54ce15d5de789b6f3870cc6bedf8ff9667401/propcache-0.5.2-cp314-cp314-macosx_11_0_arm64.whl + name: propcache + version: 0.5.2 + sha256: 97797ebb098e670a2f92dd66f32897e30d7615b14e7f59711de23e30a9072539 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/64/80/4f6e318ee2a7c0750ed724fa33a4bdf1eacdc5a39a7a24e818a773cd91af/frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl + name: frozenlist + version: 1.8.0 + sha256: 229bf37d2e4acdaf808fd3f06e854a4a7a3661e871b10dc1f8f1896a3b05f18b + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl + name: attrs + version: 26.1.0 + sha256: c647aa4a12dfbad9333ca4e71fe62ddc36f4e63b2d260a37a8b83d2f043ac309 + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/65/b6/09b01cdbc15224e2850365192d17b7bdebb8bdbd8780ed221fcdf0d9a515/pandas-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl name: pandas version: 3.0.3 @@ -3482,10 +4200,32 @@ packages: - ruff>=0.12.0 ; extra == 'dev' - cython-lint>=0.12.2 ; extra == 'dev' requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/6a/b7/9366ed44ced9b7ef357ab48c94205280276db9d7f064aa3012a97227e966/h5py-3.16.0-cp314-cp314-macosx_11_0_arm64.whl + name: h5py + version: 3.16.0 + sha256: 8c1eff849cdd53cbc73c214c30ebdb6f1bb8b64790b4b4fc36acdb5e43570210 + requires_dist: + - numpy>=1.21.2 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/6a/bd/d91c5e39f490a49df14320f4e8c80161cfcce09f1e2cde1edd16a551abb3/frozenlist-1.8.0-cp312-cp312-manylinux1_x86_64.manylinux_2_28_x86_64.manylinux_2_5_x86_64.whl + name: frozenlist + version: 1.8.0 + sha256: 494a5952b1c597ba44e0e78113a7266e656b9794eec897b19ead706bd7074383 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/6a/fd/6adabd4f6d5e686f97dd02ce7fce3fe4cf672cbac36b8f67ff4040e8ad8b/msgpack-1.2.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: msgpack + version: 1.2.1 + sha256: 020e881a764b20d8d7ca1a54fc01b8175519d108e3c3f194fddc200bda95951a + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/6b/67/6ea73b2173bcb1abe3a947fbd090cf96ee1b0a75f3f690e8902dc8ffdbfa/py2bit-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: py2bit version: 1.0.1 sha256: 0cbd9754342dc9595f46b18e655af01d89e78d9762b0b541fcd4e96076523275 +- pypi: https://files.pythonhosted.org/packages/6b/b2/d17b2722c636d64b4e77ddc68d8d0625719d39f94021be8719a218af4c0a/backports_zstd-1.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: backports-zstd + version: 1.6.0 + sha256: 1a99710fbb225d459d66def4dc2bb2cd4a9a0bdc8b799fc0621cfdd863be9c93 + requires_python: '>=3.10,<3.14' - pypi: https://files.pythonhosted.org/packages/6c/c2/63fdda36c56437eeb44aaf9493c8bcd62ce230ab1598924fc626ffbfa943/scikit_learn-1.9.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl name: scikit-learn version: 1.9.0 @@ -3578,6 +4318,17 @@ packages: - packaging>=23.0 - colorama>=0.4.6 ; sys_platform == 'win32' requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl + name: argcomplete + version: 3.6.3 + sha256: f5007b3a600ccac5d25bbce33089211dfd49eab4a7718da3f10e3082525a92ce + requires_dist: + - coverage ; extra == 'test' + - mypy ; extra == 'test' + - pexpect ; extra == 'test' + - ruff ; extra == 'test' + - wheel ; extra == 'test' + requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl name: fonttools version: 4.63.0 @@ -3627,6 +4378,39 @@ packages: - pytz ; extra == 'dev' - setuptools ; extra == 'dev' requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/78/17/853354204e1ca022d6b7d011ca7f3206c4f8faa3cc743e92609b49c1d83f/tinydb-4.8.2-py3-none-any.whl + name: tinydb + version: 4.8.2 + sha256: f97030ee5cbc91eeadd1d7af07ab0e48ceb04aa63d4a983adbaca4cba16e86c3 + requires_python: '>=3.8,<4.0' +- pypi: https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + name: cffi + version: 2.0.0 + sha256: 3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba + requires_dist: + - pycparser ; implementation_name != 'PyPy' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl + name: annotated-types + version: 0.7.0 + sha256: 1f02e8b43a8fbbc3f3e0d4f0f4bfc8131bcb4eebe8849b8e5c773f3a1c582a53 + requires_dist: + - typing-extensions>=4.0.0 ; python_full_version < '3.9' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl + name: mypy-extensions + version: 1.1.0 + sha256: 1be4cccdb0f2482337c4743e60421de3a356cd97508abadd57d47403e94f5505 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/7a/da/323a01c349bd5fb01bb6652e314d9bb218cee630a736bdb810ad50e4013f/yarl-1.24.2-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: yarl + version: 1.24.2 + sha256: 7e7ebcdef69dec6c6451e616f32b622a6d4a2e92b445c992f7c8e5274a6bbc4c + requires_dist: + - idna>=2.0 + - multidict>=4.0 + - propcache>=0.2.1 + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/7a/f6/51d8a97116de23c9280c1fa3b813bc088f8571ce5936ba84af1ecf13ed45/pybigwig-0.3.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: pybigwig version: 0.3.25 @@ -3652,6 +4436,25 @@ packages: - pyparsing>=3 - python-dateutil>=2.7 requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl + name: pydot + version: 4.0.1 + sha256: 869c0efadd2708c0be1f916eb669f3d664ca684bc57ffb7ecc08e70d5e93fee6 + requires_dist: + - pyparsing>=3.1.0 + - ruff ; extra == 'lint' + - mypy ; extra == 'types' + - pydot[lint] ; extra == 'dev' + - pydot[types] ; extra == 'dev' + - chardet ; extra == 'dev' + - parameterized ; extra == 'dev' + - pydot[dev] ; extra == 'tests' + - tox ; extra == 'tests' + - pytest ; extra == 'tests' + - pytest-cov ; extra == 'tests' + - pytest-xdist[psutil] ; extra == 'tests' + - zest-releaser[recommended] ; extra == 'release' + requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl name: alabaster version: 1.0.0 @@ -3668,6 +4471,230 @@ packages: - pysocks>=1.5.6,!=1.5.7,<2.0 ; extra == 'socks' - backports-zstd>=1.0.0 ; python_full_version < '3.14' and extra == 'zstd' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl + name: jaraco-classes + version: 3.4.0 + sha256: f662826b6bed8cace05e7ff873ce0f9283b5c924470fe664fff1c2f00f581790 + requires_dist: + - more-itertools + - sphinx>=3.5 ; extra == 'docs' + - jaraco-packaging>=9.3 ; extra == 'docs' + - rst-linker>=1.9 ; extra == 'docs' + - furo ; extra == 'docs' + - sphinx-lint ; extra == 'docs' + - jaraco-tidelift>=1.4 ; extra == 'docs' + - pytest>=6 ; extra == 'testing' + - pytest-checkdocs>=2.4 ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - pytest-mypy ; extra == 'testing' + - pytest-enabler>=2.2 ; extra == 'testing' + - pytest-ruff>=0.2.1 ; extra == 'testing' + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl + name: psutil + version: 7.2.2 + sha256: 1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979 + requires_dist: + - psleak ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-instafail ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - setuptools ; extra == 'dev' + - abi3audit ; extra == 'dev' + - black ; extra == 'dev' + - check-manifest ; extra == 'dev' + - coverage ; extra == 'dev' + - packaging ; extra == 'dev' + - pylint ; extra == 'dev' + - pyperf ; extra == 'dev' + - pypinfo ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - requests ; extra == 'dev' + - rstcheck ; extra == 'dev' + - ruff ; extra == 'dev' + - sphinx ; extra == 'dev' + - sphinx-rtd-theme ; extra == 'dev' + - toml-sort ; extra == 'dev' + - twine ; extra == 'dev' + - validate-pyproject[all] ; extra == 'dev' + - virtualenv ; extra == 'dev' + - vulture ; extra == 'dev' + - wheel ; extra == 'dev' + - colorama ; os_name == 'nt' and extra == 'dev' + - pyreadline3 ; os_name == 'nt' and extra == 'dev' + - pywin32 ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'dev' + - wheel ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'dev' + - wmi ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'dev' + - psleak ; extra == 'test' + - pytest ; extra == 'test' + - pytest-instafail ; extra == 'test' + - pytest-xdist ; extra == 'test' + - setuptools ; extra == 'test' + - pywin32 ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'test' + - wheel ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'test' + - wmi ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'test' + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/81/59/208f71d70ddc6184f79b8c6d87d46eb7d7b12c19186a817dec9c9c3f3693/tifffile-2026.6.1-py3-none-any.whl + name: tifffile + version: 2026.6.1 + sha256: 0d7382d2769b855b81ce358528e2b40c16d48aa39031746efa81215205332a8d + requires_dist: + - numpy>=2.1 + - imagecodecs>=2026.5.10 ; extra == 'codecs' + - lxml ; extra == 'xml' + - zarr>=3.2.0 ; extra == 'zarr' + - fsspec ; extra == 'zarr' + - kerchunk ; extra == 'zarr' + - matplotlib ; extra == 'plot' + - imagecodecs>=2026.5.10 ; extra == 'all' + - matplotlib ; extra == 'all' + - lxml ; extra == 'all' + - zarr>=3.2.0 ; extra == 'all' + - xarray ; extra == 'all' + - fsspec ; extra == 'all' + - kerchunk ; extra == 'all' + - cmapfile ; extra == 'test' + - czifile ; extra == 'test' + - dask ; extra == 'test' + - fsspec ; extra == 'test' + - imagecodecs ; extra == 'test' + - kerchunk ; extra == 'test' + - lfdfiles ; extra == 'test' + - lxml ; extra == 'test' + - ndtiff ; extra == 'test' + - oiffile ; extra == 'test' + - psdtags ; extra == 'test' + - pytest ; extra == 'test' + - requests ; extra == 'test' + - roifile ; extra == 'test' + - xarray ; extra == 'test' + - zarr>=3.2.0 ; extra == 'test' + requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/81/db/e655086b7f3a705df045bf0933bdd9c2f79bb3c97bfef1384598bb79a217/keyring-25.7.0-py3-none-any.whl + name: keyring + version: 25.7.0 + sha256: be4a0b195f149690c166e850609a477c532ddbfbaed96a404d4e43f8d5e2689f + requires_dist: + - pywin32-ctypes>=0.2.0 ; sys_platform == 'win32' + - secretstorage>=3.2 ; sys_platform == 'linux' + - jeepney>=0.4.2 ; sys_platform == 'linux' + - importlib-metadata>=4.11.4 ; python_full_version < '3.12' + - jaraco-classes + - jaraco-functools + - jaraco-context + - pytest>=6,!=8.1.* ; extra == 'test' + - pyfakefs ; extra == 'test' + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pytest-checkdocs>=2.4 ; extra == 'check' + - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'check' + - pytest-cov ; extra == 'cover' + - pytest-enabler>=3.4 ; extra == 'enabler' + - pytest-mypy>=1.0.1 ; extra == 'type' + - pygobject-stubs ; extra == 'type' + - shtab ; extra == 'type' + - types-pywin32 ; extra == 'type' + - shtab>=1.1.0 ; extra == 'completion' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/81/e6/cd9575ac904136b3cbf7aa7ee819ef86eedb7274e46f230e94ea4342e729/platformdirs-4.10.0-py3-none-any.whl + name: platformdirs + version: 4.10.0 + sha256: fb516cdb12eb0d857d0cd85a7c57cea4d060bee4578d6cf5a14dfdf8cbf8784a + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/81/f3/d7b4c8c9b6657ff0db27b739894ed0665fa8f3c78a7452bf74d6447f6865/zipstream_new-1.1.8-py3-none-any.whl + name: zipstream-new + version: 1.1.8 + sha256: 0662eb3ebe764fa168a5883cd8819ef83b94bd9e39955537188459d2264a7f60 +- pypi: https://files.pythonhosted.org/packages/82/3b/64d4899d73f91ba49a8c18a8ff3f0ea8f1c1d75481760df8c68ef5235bf5/rich-15.0.0-py3-none-any.whl + name: rich + version: 15.0.0 + sha256: 33bd4ef74232fb73fe9279a257718407f169c09b78a87ad3d296f548e27de0bb + requires_dist: + - ipywidgets>=7.5.1,<9 ; extra == 'jupyter' + - markdown-it-py>=2.2.0 + - pygments>=2.13.0,<3.0.0 + requires_python: '>=3.9.0' +- pypi: https://files.pythonhosted.org/packages/84/0c/b3288ee003c344356cd505ba8d85286e8f0d4d4177a13d8eed7db6e7c688/planemo-0.75.44-py3-none-any.whl + name: planemo + version: 0.75.44 + sha256: 9c167c35f84fd15227ef5af81c80c761768b6a2feecf99724e8eb12b8a146906 + requires_dist: + - allure-python-commons + - bioblend>=1.6.0 + - click!=8.0.2 + - cryptography>=46.0.3 + - cwltool>=1.0.20191225192155 + - ephemeris>=0.10.3 + - galaxy-job-config-init>=0.1.4 + - galaxy-tool-util[edam,extended-assertions]>=25.1,<26.1 + - galaxy-util[template]>=24.1,<26.1 + - glob2 + - gxformat2>=0.25.0 + - h5py + - jinja2 + - lxml + - oyaml + - packaging + - pathvalidate + - pydantic>=2 + - pyyaml + - ruamel-yaml + - virtualenv + - stdlib-list ; python_full_version < '3.10' + - tabulate + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: pyyaml + version: 6.0.3 + sha256: ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/8e/b4/23f8462c72e514563f5fd949e38a9e45bcc86fb59bf4b88240ba0ef02026/cwl_utils-0.42-py3-none-any.whl + name: cwl-utils + version: '0.42' + sha256: 3ded53f626268d1113895f59e91a6ce2d8a1568823b4db506b4814ae2e4904c4 + requires_dist: + - cwl-upgrader>=1.2.3 + - packaging + - rdflib + - requests + - ruamel-yaml>=0.17.6,<0.20 + - schema-salad>=8.8.20250205075315,<9 + - typing-extensions>=4.10.0 + - cwlformat ; extra == 'pretty' + - cwlformat ; extra == 'testing' + - cwltool ; extra == 'testing' + - jsonschema>=4.21.1 ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - pytest-mock>=1.10.0 ; extra == 'testing' + - pytest-xdist[psutil] ; extra == 'testing' + - pytest<10 ; extra == 'testing' + - udocker ; extra == 'testing' + requires_python: '>=3.10,<3.15' +- pypi: https://files.pythonhosted.org/packages/8e/fb/2c4c618185be2bda327f9dacd16b3122cc938809f19df7be840595d0e584/prov-1.5.1-py2.py3-none-any.whl + name: prov + version: 1.5.1 + sha256: 5c930cbbd05424aa3066d336dc31d314dd9fa0280caeab064288e592ed716bea + requires_dist: + - lxml + - networkx + - python-dateutil + - rdflib>=4.2.1 + - six>=1.9.0 + - pydot>=1.2.0 ; extra == 'dot' +- pypi: https://files.pythonhosted.org/packages/92/7a/8017d45e513c720ee82bf062b1be3ae39087db3024571b4a00773e17c235/galaxy_job_config_init-0.1.4-py3-none-any.whl + name: galaxy-job-config-init + version: 0.1.4 + sha256: d9db27a0dee86da4adc22a35ec9a97b631a921d9a4eb9fba199cbfdc6cbaf35f + requires_dist: + - typing-extensions + - jinja2 + - pyyaml + - backports-strenum ; python_full_version < '3.11' + requires_python: '>=3.7' - pypi: https://files.pythonhosted.org/packages/94/95/7f522393c88313336b20d70fc849555757b2e5febc22b83b3a3f0fd4bce9/matplotlib-3.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl name: matplotlib version: 3.11.0 @@ -3683,11 +4710,204 @@ packages: - pyparsing>=3 - python-dateutil>=2.7 requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/96/9a/982e48afcffcd727a9144506720ffd4224b6b7e355c98641866f38b7c043/jaraco_functools-4.5.0-py3-none-any.whl + name: jaraco-functools + version: 4.5.0 + sha256: 79ce39246eddbde4b3a03b77ea5f0f7878dc669b166a66cf3fa8e266aa3fa2f4 + requires_dist: + - more-itertools + - pytest>=6,!=8.1.* ; extra == 'test' + - jaraco-classes ; extra == 'test' + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pytest-checkdocs>=2.14 ; extra == 'check' + - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'check' + - pytest-cov ; extra == 'cover' + - pytest-enabler>=3.4 ; extra == 'enabler' + - pytest-mypy>=1.0.1 ; platform_python_implementation != 'PyPy' and extra == 'type' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/96/c2/2a1605af41829cd2a247271b5b6f6b2dbc2e9407df2dd9bcafdceafcd4b3/ct3-3.4.0.post5.tar.gz + name: ct3 + version: 3.4.0.post5 + sha256: 1c5f2000d52d591703c74f6f5f7ef427ed1b6501be28e3f1634f62c3a5d792e1 + requires_dist: + - markdown ; extra == 'filters' + - markdown ; extra == 'markdown' + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' +- pypi: https://files.pythonhosted.org/packages/97/1b/295bf2fa3e740131778065e5ffa2c481f0e7210182d408e9a2c244ff5b0c/readme_renderer-45.0-py3-none-any.whl + name: readme-renderer + version: '45.0' + sha256: 3385ed220117104a2bceb4a9dac8c5fdf6d1f96890d7ea2a9c7174fd5c84091f + requires_dist: + - nh3>=0.2.14 + - docutils>=0.21.2 + - pygments>=2.5.1 + - comrak>=0.0.11 ; extra == 'md' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/97/c8/c67cb8c70e19ef1960b97b22ed2a1567711de46c4ddf19799923adc836c2/charset_normalizer-3.4.7-cp314-cp314-macosx_10_15_universal2.whl name: charset-normalizer version: 3.4.7 sha256: c36c333c39be2dbca264d7803333c896ab8fa7d4d6f0ab7edb7dfd7aea6e98c0 requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl + name: tabulate + version: 0.10.0 + sha256: f0b0622e567335c8fabaaa659f1b33bcb6ddfe2e496071b743aa113f8774f2d3 + requires_dist: + - wcwidth ; extra == 'widechars' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/9a/70/875f4a23bfc4731703a5835487d0d2fb999031bd415e7d17c0ae615c18b7/pathvalidate-3.3.1-py3-none-any.whl + name: pathvalidate + version: 3.3.1 + sha256: 5263baab691f8e1af96092fa5137ee17df5bdfbd6cff1fcac4d6ef4bc2e1735f + requires_dist: + - sphinx-rtd-theme>=1.2.2 ; extra == 'docs' + - sphinx>=2.4 ; extra == 'docs' + - urllib3<2 ; extra == 'docs' + - readmemaker>=1.2.0 ; extra == 'readme' + - path>=13,<18 ; extra == 'readme' + - allpairspy>=2 ; extra == 'test' + - click>=6.2 ; extra == 'test' + - faker>=1.0.8 ; extra == 'test' + - pytest>=6.0.1 ; extra == 'test' + - pytest-md-report>=0.6.2 ; extra == 'test' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/9b/22/adf66990e63584a68dfb50c24f48a125c07b1699899381c8151e63ed458c/cryptography-49.0.0-cp311-abi3-macosx_11_0_arm64.whl + name: cryptography + version: 49.0.0 + sha256: 966fe0e9c67490071f14c0d2b1cb2dfb3023c5ce39457343931415f08382f2db + requires_dist: + - cffi>=2.0.0 ; platform_python_implementation != 'PyPy' + - typing-extensions>=4.13.2 ; python_full_version < '3.11' + - bcrypt>=3.1.5 ; extra == 'ssh' + requires_python: '>=3.9,!=3.9.0,!=3.9.1' +- pypi: https://files.pythonhosted.org/packages/9d/76/f789f7a86709c6b087c5a2f52f911838cad707cc613162401badc665acfe/setuptools-82.0.1-py3-none-any.whl + name: setuptools + version: 82.0.1 + sha256: a59e362652f08dcd477c78bb6e7bd9d80a7995bc73ce773050228a348ce2e5bb + requires_dist: + - pytest>=6,!=8.1.* ; extra == 'test' + - virtualenv>=13.0.0 ; extra == 'test' + - wheel>=0.44.0 ; extra == 'test' + - pip>=19.1 ; extra == 'test' + - packaging>=24.2 ; extra == 'test' + - jaraco-envs>=2.2 ; extra == 'test' + - pytest-xdist>=3 ; extra == 'test' + - jaraco-path>=3.7.2 ; extra == 'test' + - build[virtualenv]>=1.0.3 ; extra == 'test' + - filelock>=3.4.0 ; extra == 'test' + - ini2toml[lite]>=0.14 ; extra == 'test' + - tomli-w>=1.0.0 ; extra == 'test' + - pytest-timeout ; extra == 'test' + - pytest-perf ; sys_platform != 'cygwin' and extra == 'test' + - jaraco-develop>=7.21 ; python_full_version >= '3.9' and sys_platform != 'cygwin' and extra == 'test' + - pytest-home>=0.5 ; extra == 'test' + - pytest-subprocess ; extra == 'test' + - pyproject-hooks!=1.1 ; extra == 'test' + - jaraco-test>=5.5 ; extra == 'test' + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pygments-github-lexers==0.0.5 ; extra == 'doc' + - sphinx-favicon ; extra == 'doc' + - sphinx-inline-tabs ; extra == 'doc' + - sphinx-reredirects ; extra == 'doc' + - sphinxcontrib-towncrier ; extra == 'doc' + - sphinx-notfound-page>=1,<2 ; extra == 'doc' + - pyproject-hooks!=1.1 ; extra == 'doc' + - towncrier<24.7 ; extra == 'doc' + - packaging>=24.2 ; extra == 'core' + - more-itertools>=8.8 ; extra == 'core' + - jaraco-text>=3.7 ; extra == 'core' + - importlib-metadata>=6 ; python_full_version < '3.10' and extra == 'core' + - tomli>=2.0.1 ; python_full_version < '3.11' and extra == 'core' + - wheel>=0.43.0 ; extra == 'core' + - jaraco-functools>=4 ; extra == 'core' + - more-itertools ; extra == 'core' + - pytest-checkdocs>=2.4 ; extra == 'check' + - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'check' + - ruff>=0.13.0 ; sys_platform != 'cygwin' and extra == 'check' + - pytest-cov ; extra == 'cover' + - pytest-enabler>=2.2 ; extra == 'enabler' + - pytest-mypy ; extra == 'type' + - mypy==1.18.* ; extra == 'type' + - importlib-metadata>=7.0.2 ; python_full_version < '3.10' and extra == 'type' + - jaraco-develop>=7.21 ; sys_platform != 'cygwin' and extra == 'type' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/9e/c9/b2622292ea83fbb4ec318f5b9ab867d0a28ab43c5717bb85b0a5f6b3b0a4/networkx-3.6.1-py3-none-any.whl + name: networkx + version: 3.6.1 + sha256: d47fbf302e7d9cbbb9e2555a0d267983d2aa476bac30e90dfbe5669bd57f3762 + requires_dist: + - asv ; extra == 'benchmarking' + - virtualenv ; extra == 'benchmarking' + - numpy>=1.25 ; extra == 'default' + - scipy>=1.11.2 ; extra == 'default' + - matplotlib>=3.8 ; extra == 'default' + - pandas>=2.0 ; extra == 'default' + - pre-commit>=4.1 ; extra == 'developer' + - mypy>=1.15 ; extra == 'developer' + - sphinx>=8.0 ; extra == 'doc' + - pydata-sphinx-theme>=0.16 ; extra == 'doc' + - sphinx-gallery>=0.18 ; extra == 'doc' + - numpydoc>=1.8.0 ; extra == 'doc' + - pillow>=10 ; extra == 'doc' + - texext>=0.6.7 ; extra == 'doc' + - myst-nb>=1.1 ; extra == 'doc' + - intersphinx-registry ; extra == 'doc' + - osmnx>=2.0.0 ; extra == 'example' + - momepy>=0.7.2 ; extra == 'example' + - contextily>=1.6 ; extra == 'example' + - seaborn>=0.13 ; extra == 'example' + - cairocffi>=1.7 ; extra == 'example' + - igraph>=0.11 ; extra == 'example' + - scikit-learn>=1.5 ; extra == 'example' + - iplotx>=0.9.0 ; extra == 'example' + - lxml>=4.6 ; extra == 'extra' + - pygraphviz>=1.14 ; extra == 'extra' + - pydot>=3.0.1 ; extra == 'extra' + - sympy>=1.10 ; extra == 'extra' + - build>=0.10 ; extra == 'release' + - twine>=4.0 ; extra == 'release' + - wheel>=0.40 ; extra == 'release' + - changelist==0.5 ; extra == 'release' + - pytest>=7.2 ; extra == 'test' + - pytest-cov>=4.0 ; extra == 'test' + - pytest-xdist>=3.0 ; extra == 'test' + - pytest-mpl ; extra == 'test-extras' + - pytest-randomly ; extra == 'test-extras' + requires_python: '>=3.11,!=3.14.1' +- pypi: https://files.pythonhosted.org/packages/9e/e9/1a19e42cd43cc1365e127db6aae85e1c671da1d9a5d746f4d34a50edb577/h5py-3.16.0-cp312-cp312-manylinux_2_28_x86_64.whl + name: h5py + version: 3.16.0 + sha256: dfc21898ff025f1e8e67e194965a95a8d4754f452f83454538f98f8a3fcb207e + requires_dist: + - numpy>=1.21.2 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/9f/27/3c3e5398fa49227b2dd67211b4402c84ed9d5b48a4257bf5b1196f9b6a8e/ct3-3.4.0.post5-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl + name: ct3 + version: 3.4.0.post5 + sha256: 3be2cd9d24b6c6741e90c3f854b20dd019b0c47f7887962972a515b92c35204e + requires_dist: + - markdown ; extra == 'filters' + - markdown ; extra == 'markdown' + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' +- pypi: https://files.pythonhosted.org/packages/9f/56/13ab06b4f93ca7cac71078fbe37fcea175d3216f31f85c3168a6bbd0bb9a/flake8-7.3.0-py2.py3-none-any.whl + name: flake8 + version: 7.3.0 + sha256: b9696257b9ce8beb888cdbe31cf885c90d31928fe202be0889a7cdafad32f01e + requires_dist: + - mccabe>=0.7.0,<0.8.0 + - pycodestyle>=2.14.0,<2.15.0 + - pyflakes>=3.4.0,<3.5.0 + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl name: requests version: 2.34.2 @@ -3700,6 +4920,19 @@ packages: - pysocks>=1.5.6,!=1.5.7 ; extra == 'socks' - chardet>=3.0.2,<8 ; extra == 'use-chardet-on-py3' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/a1/93/72b1736d68f03fda5fdf0f2180fb6caaae3894f1b854d006ac61ecc727ee/frozenlist-1.8.0-cp314-cp314-macosx_11_0_arm64.whl + name: frozenlist + version: 1.8.0 + sha256: 4970ece02dbc8c3a92fcc5228e36a3e933a01a999f7094ff7c23fbd2beeaa67c + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl + name: coloredlogs + version: 15.0.1 + sha256: 612ee75c546f53e92e70049c9dbfcc18c935a2b9a53b66085ce9ef6a6e5c0934 + requires_dist: + - humanfriendly>=9.1 + - capturer>=2.4 ; extra == 'cron' + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' - pypi: https://files.pythonhosted.org/packages/ac/1f/d10d6ad23c86c62d90d867d0506881a392ec6ef06885b858eaab868dd356/deeptoolsintervals-0.1.9.tar.gz name: deeptoolsintervals version: 0.1.9 @@ -3768,16 +5001,177 @@ packages: - pooch>=1.8.0 ; extra == 'tests' - conda-lock==3.0.1 ; extra == 'maintenance' requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/ac/3e/61d11b779e4e83ee8661439af070f6f138060cd41f0346a0a70432f9e55c/cwl_upgrader-1.2.15-py3-none-any.whl + name: cwl-upgrader + version: 1.2.15 + sha256: 42ae4546a433a7439f56282942e3a9369d08d9a2ad31d86cddb1bb298e28640d + requires_dist: + - ruamel-yaml>=0.16.0,<0.20 + - schema-salad + - pytest<10 ; extra == 'testing' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/ad/1f/8970b150a4b4365623ae00fc88603491f763c627311ae8031e3111356d6e/pydantic_core-2.46.4-cp314-cp314-macosx_11_0_arm64.whl + name: pydantic-core + version: 2.46.4 + sha256: 23ace664830ee0bfe014a0c7bc248b1f7f25ed7ad103852c317624a1083af462 + requires_dist: + - typing-extensions>=4.14.1 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl + name: jeepney + version: 0.9.0 + sha256: 97e5714520c16fc0a45695e5365a2e11b81ea79bba796e26f9f1d178cb182683 + requires_dist: + - pytest ; extra == 'test' + - pytest-trio ; extra == 'test' + - pytest-asyncio>=0.17 ; extra == 'test' + - testpath ; extra == 'test' + - trio ; extra == 'test' + - async-timeout ; python_full_version < '3.11' and extra == 'test' + - trio ; extra == 'trio' + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/b3/38/89ba8ad64ae25be8de66a6d463314cf1eb366222074cfda9ee839c56a4b4/mdurl-0.1.2-py3-none-any.whl + name: mdurl + version: 0.1.2 + sha256: 84008a41e51615a49fc9966191ff91509e3c40b939176e643fd50a5c2196b8f8 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/b3/81/4da04ced5a082363ecfa159c010d200ecbd959ae410c10c0264a38cac0f5/markdown_it_py-4.2.0-py3-none-any.whl + name: markdown-it-py + version: 4.2.0 + sha256: 9f7ebbcd14fe59494226453aed97c1070d83f8d24b6fc3a3bcf9a38092641c4a + requires_dist: + - mdurl~=0.1 + - psutil ; extra == 'benchmarking' + - pytest ; extra == 'benchmarking' + - pytest-benchmark ; extra == 'benchmarking' + - commonmark~=0.9 ; extra == 'compare' + - markdown~=3.4 ; extra == 'compare' + - mistletoe~=1.0 ; extra == 'compare' + - mistune~=3.0 ; extra == 'compare' + - panflute~=2.3 ; extra == 'compare' + - markdown-it-pyrs ; extra == 'compare' + - linkify-it-py>=1,<3 ; extra == 'linkify' + - mdit-py-plugins>=0.5.0 ; extra == 'plugins' + - gprof2dot ; extra == 'profiling' + - mdit-py-plugins>=0.5.0 ; extra == 'rtd' + - myst-parser ; extra == 'rtd' + - pyyaml ; extra == 'rtd' + - sphinx ; extra == 'rtd' + - sphinx-copybutton ; extra == 'rtd' + - sphinx-design ; extra == 'rtd' + - sphinx-book-theme~=1.0 ; extra == 'rtd' + - jupyter-sphinx ; extra == 'rtd' + - ipykernel ; extra == 'rtd' + - coverage ; extra == 'testing' + - pytest ; extra == 'testing' + - pytest-cov ; extra == 'testing' + - pytest-regressions ; extra == 'testing' + - pytest-timeout ; extra == 'testing' + - requests ; extra == 'testing' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/b4/97/0535f7d3f45d3853f79a11988d8faf798de684d902579126449455506e2f/ephemeris-0.10.11-py2.py3-none-any.whl + name: ephemeris + version: 0.10.11 + sha256: a6ec62371ccc519ebab9aefa1d49bd1d396218a3ebced1760ae5ace77dd93f2f + requires_dist: + - six>=1.9.0 + - pyyaml + - bioblend>=0.10.0 + - jinja2 + - galaxy-tool-util>=20.9.1 + - galaxy-util>=20.9.0 + - pysam + - rich + - setuptools + - pydantic>=2.0 + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/b4/c9/7d293a9ea42ef05d6260714f8cf641ba64fab438be55312b1c719d4e7cc6/fissix-24.4.24-py3-none-any.whl + name: fissix + version: 24.4.24 + sha256: be7f5c66e9e212bd9b3365c9e8f2453e973d0a645f31c8eba842724adb4c0c50 + requires_dist: + - appdirs>=1.4.4 + - attribution==1.7.1 ; extra == 'dev' + - black==24.4.0 ; extra == 'dev' + - flit==3.9.0 ; extra == 'dev' + - isort==5.8.0 ; extra == 'dev' + - pytest==8.1.1 ; extra == 'dev' + - sphinx==7.3.7 ; extra == 'docs' + - sphinx-mdinclude==0.6.0 ; extra == 'docs' + requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/b5/64/7660f8a4a8e53c924d0fa05dc3a55c9cee10bbd82b11c5afb27d44b096ce/markupsafe-3.0.3-cp314-cp314-macosx_11_0_arm64.whl name: markupsafe version: 3.0.3 sha256: c47a551199eb8eb2121d4f0f15ae0f923d31350ab9280078d1e5f12b249e0026 requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl + name: psutil + version: 7.2.2 + sha256: 076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9 + requires_dist: + - psleak ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-instafail ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - setuptools ; extra == 'dev' + - abi3audit ; extra == 'dev' + - black ; extra == 'dev' + - check-manifest ; extra == 'dev' + - coverage ; extra == 'dev' + - packaging ; extra == 'dev' + - pylint ; extra == 'dev' + - pyperf ; extra == 'dev' + - pypinfo ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - requests ; extra == 'dev' + - rstcheck ; extra == 'dev' + - ruff ; extra == 'dev' + - sphinx ; extra == 'dev' + - sphinx-rtd-theme ; extra == 'dev' + - toml-sort ; extra == 'dev' + - twine ; extra == 'dev' + - validate-pyproject[all] ; extra == 'dev' + - virtualenv ; extra == 'dev' + - vulture ; extra == 'dev' + - wheel ; extra == 'dev' + - colorama ; os_name == 'nt' and extra == 'dev' + - pyreadline3 ; os_name == 'nt' and extra == 'dev' + - pywin32 ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'dev' + - wheel ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'dev' + - wmi ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'dev' + - psleak ; extra == 'test' + - pytest ; extra == 'test' + - pytest-instafail ; extra == 'test' + - pytest-xdist ; extra == 'test' + - setuptools ; extra == 'test' + - pywin32 ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'test' + - wheel ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'test' + - wmi ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'test' + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/b7/46/f5af3402b579fd5e11573ce652019a67074317e18c1935cc0b4ba9b35552/secretstorage-3.5.0-py3-none-any.whl + name: secretstorage + version: 3.5.0 + sha256: 0ce65888c0725fcb2c5bc0fdb8e5438eece02c523557ea40ce0703c266248137 + requires_dist: + - cryptography>=2.0 + - jeepney>=0.6 + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl name: six version: 1.17.0 sha256: 4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/ruamel_yaml-0.19.1-py3-none-any.whl + name: ruamel-yaml + version: 0.19.1 + sha256: 27592957fedf6e0b62f281e96effd28043345e0e66001f97683aa9a40c667c93 + requires_dist: + - ruamel-yaml-clib ; platform_python_implementation == 'CPython' and extra == 'oldlibyaml' + - ruamel-yaml-clibz>=0.3.7 ; platform_python_implementation == 'CPython' and extra == 'libyaml' + - ruamel-yaml-jinja2>=0.2 ; extra == 'jinja2' + - ryd ; extra == 'docs' + - mercurial>5.7 ; extra == 'docs' + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/ba/8c/1a9e46228571de18f8e28f16fabdfc20212a5d019f3e3303452b3f0a580d/pillow-12.2.0-cp314-cp314-macosx_11_0_arm64.whl name: pillow version: 12.2.0 @@ -3810,11 +5204,35 @@ packages: - trove-classifiers>=2024.10.12 ; extra == 'tests' - defusedxml ; extra == 'xmp' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/ba/b1/5297bb6a7df4782f7605bffc43b31f5044070935fbbcaa6c705a07e6ac65/yarl-1.24.2-cp314-cp314-macosx_11_0_arm64.whl + name: yarl + version: 1.24.2 + sha256: 0c3063e5c0a8e8e62fae6c2596fa01da1561e4cd1da6fec5789f5cf99a8aefd8 + requires_dist: + - idna>=2.0 + - multidict>=4.0 + - propcache>=0.2.1 + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/bb/6b/f4a3d0637692c49da8ef99d72d52526f92e0a8d6ac4f0ca9f31441b9d9ea/numpy-2.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl name: numpy version: 2.5.0 sha256: aaa760137137e8d3c920d27927748215b56014f92667dc9b6c27dfc61249255a requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/bc/dd/9e8cbd8f5582ca4b590336f2b91ee5662f6a6ca562b565abaf696a0f81ff/msgpack-1.2.1-cp312-cp312-macosx_10_13_x86_64.whl + name: msgpack + version: 1.2.1 + sha256: 2ef59c659f289eddf8aa6623823f19fa2f40a4029266889eac7a2505dd210c35 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl + name: pyproject-hooks + version: 1.2.0 + sha256: 9e5c6bfa8dcc30091c74b0cf803c81fdd29d94f01992a7707bc97babb1141913 + requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl + name: pyyaml + version: 6.0.3 + sha256: 34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310 + requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/be/45/adfee365d9ea3d853550b2e735f9d66366701c65db7855cd07621732ccfc/contourpy-1.3.3-cp312-cp312-macosx_10_13_x86_64.whl name: contourpy version: 1.3.3 @@ -3840,11 +5258,25 @@ packages: - pytest-xdist ; extra == 'test-no-images' - wurlitzer ; extra == 'test-no-images' requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/bf/1d/fcefb70922ea2268a8971d8e5874d9a8218644200fb8465f1dcad55e6851/yarl-1.24.2-cp312-cp312-macosx_10_13_x86_64.whl + name: yarl + version: 1.24.2 + sha256: 3b075301a2836a0e297b1b658cb6d6135df535d62efefdd60366bd589c2c82f2 + requires_dist: + - idna>=2.0 + - multidict>=4.0 + - propcache>=0.2.1 + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/bf/d9/405320f8077e8e1c5c4bd6adc45e1e6edf6d727b6da7f2e2533cf58bff71/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl name: kiwisolver version: 1.5.0 sha256: 72ec46b7eba5b395e0a7b63025490d3214c11013f4aacb4f5e8d6c3041829588 requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl + name: pyflakes + version: 3.4.0 + sha256: f742a7dbd0d9cb9ea41e9a24a918996e8170c799fa528688d40dd582c8265f4f + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl name: sphinxcontrib-jsmath version: 1.0.1 @@ -3854,11 +5286,70 @@ packages: - flake8 ; extra == 'test' - mypy ; extra == 'test' requires_python: '>=3.5' +- pypi: https://files.pythonhosted.org/packages/c2/82/280619e0bd7bf2454987e19282616e84762255dd9c8468f62382e8c191f1/aiohttp-3.14.1-cp312-cp312-macosx_10_13_x86_64.whl + name: aiohttp + version: 3.14.1 + sha256: bcfb80a2cc36fba2534e5e5b5264dc7ae6fcd9bf15256da3e53d2f499e6fa29d + requires_dist: + - aiohappyeyeballs>=2.5.0 + - aiosignal>=1.4.0 + - async-timeout>=4.0,<6.0 ; python_full_version < '3.11' + - attrs>=17.3.0 + - frozenlist>=1.1.1 + - multidict>=4.5,<7.0 + - propcache>=0.2.0 + - typing-extensions>=4.4 ; python_full_version < '3.13' + - yarl>=1.17.0,<2.0 + - aiodns>=3.3.0 ; sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + - brotli>=1.2 ; platform_python_implementation == 'CPython' and sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + - brotlicffi>=1.2 ; platform_python_implementation != 'CPython' and extra == 'speedups' + - backports-zstd ; python_full_version < '3.14' and platform_python_implementation == 'CPython' and sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/c4/13/680c54afe3e65767bed7ec1a15571e1a2f1257128733851ade24abcefbcc/kiwisolver-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl name: kiwisolver version: 1.5.0 sha256: bb5136fb5352d3f422df33f0c879a1b0c204004324150cc3b5e3c4f310c9049f requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl + name: click + version: 8.4.1 + sha256: 482be17c6991b8c19c5429a1e995d9b0efdbb63172824c41f99965dc0ade8ec2 + requires_dist: + - colorama ; sys_platform == 'win32' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/c8/c0/5d4119dba94093bbafede500d3defd2f5eab7897732998c04b54021e530b/h5py-3.16.0-cp312-cp312-macosx_10_13_x86_64.whl + name: h5py + version: 3.16.0 + sha256: c5313566f4643121a78503a473f0fb1e6dcc541d5115c44f05e037609c565c4d + requires_dist: + - numpy>=1.21.2 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl + name: iniconfig + version: 2.3.0 + sha256: f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/cc/2f/7229e91cfa37459622808002bec6eb019c7189bfc59788b3eaba5f273671/conda_package_streaming-0.13.0-py3-none-any.whl + name: conda-package-streaming + version: 0.13.0 + sha256: 806ea3f2f7ac272873242e6253d543ac8aaf224e5c76d794e5fee9c63776fb5c + requires_dist: + - requests + - backports-zstd ; python_full_version < '3.14' + - furo ; extra == 'docs' + - sphinx ; extra == 'docs' + - myst-parser ; extra == 'docs' + - mdit-py-plugins>=0.3.0 ; extra == 'docs' + - pytest>=7 ; extra == 'test' + - pytest-cov ; extra == 'test' + - pytest-mock ; extra == 'test' + - boto3 ; extra == 'test' + - boto3-stubs[essential] ; extra == 'test' + - bottle ; extra == 'test' + - conda ; extra == 'test' + - conda-package-handling>=2 ; extra == 'test' + - responses ; extra == 'test' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/cc/8f/ec6289987824b29529d0dfda0d74a07cec60e54b9c92f3c9da4c0ac732de/contourpy-1.3.3-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl name: contourpy version: 1.3.3 @@ -3884,11 +5375,53 @@ packages: - pytest-xdist ; extra == 'test-no-images' - wurlitzer ; extra == 'test-no-images' requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/ce/8c/af022f0af448d7747c5154288d46b5f2bc5f17366eaa0e23e9aa04d59f3b/pydantic_core-2.46.4-cp312-cp312-macosx_10_12_x86_64.whl + name: pydantic-core + version: 2.46.4 + sha256: 3245406455a5d98187ec35530fd772b1d799b26667980872c8d4614991e2c4a2 + requires_dist: + - typing-extensions>=4.14.1 + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/cf/f4/672930ad51bbc135f51cac89577155f1d0c2d120375fc77978d3aa071bb7/pybigwig-0.3.25.tar.gz name: pybigwig version: 0.3.25 sha256: 8c717b0222e6677956fd659c8a21650983679ffb3314427d7f68d2910fad202a requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl + name: pyyaml + version: 6.0.3 + sha256: 7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/d4/74/3d6534c6ce0802bf085a32908b093e6a4123443050299bcc6e3828a9bf3e/cwltool-3.2.20260413085819-py3-none-any.whl + name: cwltool + version: 3.2.20260413085819 + sha256: 2ed9b586b2d9cda0870a3c2b9cba958943ef3fde53805f935cb20888dc8b87a3 + requires_dist: + - requests>=2.6.1 + - ruamel-yaml>=0.16,<0.20 + - rdflib>=4.2.2,<7.7.0 + - schema-salad>=8.9,<9 + - prov==1.5.1 + - mypy-extensions + - psutil>=5.6.6 + - coloredlogs + - pydot>=1.4.1 + - argcomplete>=1.12.0 + - pyparsing!=3.0.2 + - cwl-utils>=0.41 + - spython>=0.3.0 + - rich-argparse + - pygments>=2.20.0 + - typing-extensions>=4.1.0 + - galaxy-tool-util>=22.1.2,!=23.0.1,!=23.0.2,!=23.0.3,!=23.0.4,!=23.0.5,<26.1 ; extra == 'deps' + - galaxy-util<26.1 ; extra == 'deps' + - pillow ; extra == 'deps' + requires_python: '>=3.10,<3.15' +- pypi: https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl + name: pycodestyle + version: 2.14.0 + sha256: dd6bf7cb4ee77f8e016f9c8e74a35ddd9f67e1d5fd4184d86c3b98e07099f42d + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/d7/88/b72def7262e150d16be13fca37a96481138d624e700340bc3362a7588929/scipy-1.18.0-cp314-cp314-macosx_12_0_arm64.whl name: scipy version: 1.18.0 @@ -3935,6 +5468,19 @@ packages: - ruff>=0.12.0 ; extra == 'dev' - cython-lint>=0.12.2 ; extra == 'dev' requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/d7/a5/bbbc3b74a94fbdbd7915e7ad030f16539bfdc1362f7e9003b594f0537950/glob2-0.7.tar.gz + name: glob2 + version: '0.7' + sha256: 85c3dbd07c8aa26d63d7aacee34fa86e9a91a3873bc30bf62ec46e531f92ab8c +- pypi: https://files.pythonhosted.org/packages/d9/b0/1e05aa4e0124cbc6509641353f513fc29c2b5e5197dbd5dfade810a521cf/galaxy_tool_util_models-26.0.1-py3-none-any.whl + name: galaxy-tool-util-models + version: 26.0.1 + sha256: b14e5619cec2fc4375dc355ec2d812168935cd97e4249dcd8ffa5c8d592db843 + requires_dist: + - pydantic>=2.7.4 + - typing-extensions + - pytest ; extra == 'test' + requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/da/17/f5276b496c61477a6c4fc5e7401f4bfe1c2e5ef7c6cd67896f2ade3809cb/matplotlib-3.11.0-cp312-cp312-macosx_10_13_x86_64.whl name: matplotlib version: 3.11.0 @@ -3950,6 +5496,18 @@ packages: - pyparsing>=3 - python-dateutil>=2.7 requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl + name: future + version: 1.0.0 + sha256: 929292d34f5872e70396626ef385ec22355a1fae8ad29e1a734c3e43f9fbc216 + requires_python: '>=2.6,!=3.0.*,!=3.1.*,!=3.2.*' +- pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl + name: typing-inspection + version: 0.4.2 + sha256: 4ed1cacbdc298c220f1bd249ed5287caa16f34d44ef4e9c3d0cbad5b521545e7 + requires_dist: + - typing-extensions>=4.12.0 + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/dd/aa/1b939f6c67ed68635bb538e6752d3dacc02f66535182e939a89581a44e9c/scipy-1.18.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl name: scipy version: 1.18.0 @@ -4001,6 +5559,24 @@ packages: version: '26.2' sha256: 5fc45236b9446107ff2415ce77c807cee2862cb6fac22b8a73826d0693b0980e requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/e3/78/47a205b5921bd86ef8d174fcda3daf23d65ad2887b38771935a064acd348/gxformat2-0.27.0-py3-none-any.whl + name: gxformat2 + version: 0.27.0 + sha256: 2e8a90b649ddecc7d1662b2ab75b942b895bae9536fec1f8b6f71e27fe4fe4c6 + requires_dist: + - eval-type-backport ; python_full_version < '3.10' + - pydantic>=2.0 + - pyyaml + - requests + - schema-salad>8.7.20241010092723 + - typing-extensions + - bioblend ; extra == 'bioblend' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/e6/13/b8ae04c59392f8d11c6cd9fb4011d1dc7c86b81225c770280300e259ffe1/propcache-0.5.2-cp312-cp312-macosx_10_13_x86_64.whl + name: propcache + version: 0.5.2 + sha256: db2b80ea58eab4f86b2beec3cc8b39e8ff9276ac20e96b7cce43c8ae84cd6b5a + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/e7/05/c19819d5e3d95294a6f5947fb9b9629efb316b96de511b418c53d245aae6/cycler-0.12.1-py3-none-any.whl name: cycler version: 0.12.1 @@ -4014,6 +5590,86 @@ packages: - pytest-cov ; extra == 'tests' - pytest-xdist ; extra == 'tests' requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl + name: psutil + version: 7.2.2 + sha256: ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486 + requires_dist: + - psleak ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-instafail ; extra == 'dev' + - pytest-xdist ; extra == 'dev' + - setuptools ; extra == 'dev' + - abi3audit ; extra == 'dev' + - black ; extra == 'dev' + - check-manifest ; extra == 'dev' + - coverage ; extra == 'dev' + - packaging ; extra == 'dev' + - pylint ; extra == 'dev' + - pyperf ; extra == 'dev' + - pypinfo ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - requests ; extra == 'dev' + - rstcheck ; extra == 'dev' + - ruff ; extra == 'dev' + - sphinx ; extra == 'dev' + - sphinx-rtd-theme ; extra == 'dev' + - toml-sort ; extra == 'dev' + - twine ; extra == 'dev' + - validate-pyproject[all] ; extra == 'dev' + - virtualenv ; extra == 'dev' + - vulture ; extra == 'dev' + - wheel ; extra == 'dev' + - colorama ; os_name == 'nt' and extra == 'dev' + - pyreadline3 ; os_name == 'nt' and extra == 'dev' + - pywin32 ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'dev' + - wheel ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'dev' + - wmi ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'dev' + - psleak ; extra == 'test' + - pytest ; extra == 'test' + - pytest-instafail ; extra == 'test' + - pytest-xdist ; extra == 'test' + - setuptools ; extra == 'test' + - pywin32 ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'test' + - wheel ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'test' + - wmi ; implementation_name != 'pypy' and os_name == 'nt' and extra == 'test' + requires_python: '>=3.6' +- pypi: https://files.pythonhosted.org/packages/e8/3d/1087453384dbde46a8c7f9356eead2c58be8a7bf156bca40243377c85715/more_itertools-11.1.0-py3-none-any.whl + name: more-itertools + version: 11.1.0 + sha256: 4b65538ae22f6fed0ce4874efd317463a7489796a0939fa66824dd542125a192 + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/e9/a7/248e1aebe0c7810b0271e021a0f2a5eb6e78a051885b3c9df49f42a5802d/aiohttp-3.14.1-cp314-cp314-macosx_11_0_arm64.whl + name: aiohttp + version: 3.14.1 + sha256: 07eabb979d236335fed927e137a928c9adfb7df3b9ec7aa31726f133a62be983 + requires_dist: + - aiohappyeyeballs>=2.5.0 + - aiosignal>=1.4.0 + - async-timeout>=4.0,<6.0 ; python_full_version < '3.11' + - attrs>=17.3.0 + - frozenlist>=1.1.1 + - multidict>=4.5,<7.0 + - propcache>=0.2.0 + - typing-extensions>=4.4 ; python_full_version < '3.13' + - yarl>=1.17.0,<2.0 + - aiodns>=3.3.0 ; sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + - brotli>=1.2 ; platform_python_implementation == 'CPython' and sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + - brotlicffi>=1.2 ; platform_python_implementation != 'CPython' and extra == 'speedups' + - backports-zstd ; python_full_version < '3.14' and platform_python_implementation == 'CPython' and sys_platform != 'android' and sys_platform != 'ios' and extra == 'speedups' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl + name: cffi + version: 2.0.0 + sha256: 6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d + requires_dist: + - pycparser ; implementation_name != 'PyPy' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/ec/17/d9ad109c8d7f05e6e78a79c4ec410ad3d38877b3efe18896eae6c446b534/edam_ontology-1.25.3-py3-none-any.whl + name: edam-ontology + version: 1.25.3 + sha256: cdea906b7885b5e553e924425ba4fb708826dfcb8a2cf186af57725998fcf8c5 + requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/ec/57/56b9bcc3c9c6a792fcbaf139543cee77261f3651ca9da0c93f5c1221264b/python_dateutil-2.9.0.post0-py2.py3-none-any.whl name: python-dateutil version: 2.9.0.post0 @@ -4026,6 +5682,82 @@ packages: version: 2026.6.17 sha256: 2227dcbaafe0d2f59279d1762ddddc37783ed4354594f194ffc31d20f41fc3db requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/ef/79/c45f2d53efe6ada1110cf6f9fca095e4ff47a0454444aefdde6ac4789179/cachecontrol-0.14.4-py3-none-any.whl + name: cachecontrol + version: 0.14.4 + sha256: b7ac014ff72ee199b5f8af1de29d60239954f223e948196fa3d84adaffc71d2b + requires_dist: + - requests>=2.16.0 + - msgpack>=0.5.2,<2.0.0 + - cachecontrol[filecache,redis] ; extra == 'dev' + - cherrypy ; extra == 'dev' + - cheroot>=11.1.2 ; extra == 'dev' + - codespell ; extra == 'dev' + - furo ; extra == 'dev' + - mypy ; extra == 'dev' + - pytest ; extra == 'dev' + - pytest-cov ; extra == 'dev' + - ruff ; extra == 'dev' + - sphinx ; extra == 'dev' + - sphinx-copybutton ; extra == 'dev' + - types-redis ; extra == 'dev' + - types-requests ; extra == 'dev' + - filelock>=3.8.0 ; extra == 'filecache' + - redis>=2.10.5 ; extra == 'redis' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl + name: humanfriendly + version: '10.0' + sha256: 1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477 + requires_dist: + - monotonic ; python_full_version == '2.7.*' + - pyreadline ; python_full_version < '3.8' and sys_platform == 'win32' + - pyreadline3 ; python_full_version >= '3.8' and sys_platform == 'win32' + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' +- pypi: https://files.pythonhosted.org/packages/f1/4f/733c48f270565d78b4544f2baddc2fb2a245e5a8640254b12c36ac7ac68e/multidict-6.7.1-cp314-cp314-macosx_11_0_arm64.whl + name: multidict + version: 6.7.1 + sha256: 0e161ddf326db5577c3a4cc2d8648f81456e8a20d40415541587a71620d7a7d1 + requires_dist: + - typing-extensions>=4.1.0 ; python_full_version < '3.11' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/f2/58/bc8954bda5fcda97bd7c19be11b85f91973d67a706ed4a3aec33e7de22db/jaraco_context-6.1.2-py3-none-any.whl + name: jaraco-context + version: 6.1.2 + sha256: bf8150b79a2d5d91ae48629d8b427a8f7ba0e1097dd6202a9059f29a36379535 + requires_dist: + - backports-tarfile ; python_full_version < '3.12' + - pytest>=6,!=8.1.* ; extra == 'test' + - jaraco-test>=5.6.0 ; extra == 'test' + - portend ; extra == 'test' + - sphinx>=3.5 ; extra == 'doc' + - jaraco-packaging>=9.3 ; extra == 'doc' + - rst-linker>=1.9 ; extra == 'doc' + - furo ; extra == 'doc' + - sphinx-lint ; extra == 'doc' + - jaraco-tidelift>=1.4 ; extra == 'doc' + - pytest-checkdocs>=2.14 ; extra == 'check' + - pytest-ruff>=0.2.1 ; sys_platform != 'cygwin' and extra == 'check' + - pytest-cov ; extra == 'cover' + - pytest-enabler>=3.4 ; extra == 'enabler' + - pytest-mypy>=1.0.1 ; platform_python_implementation != 'PyPy' and extra == 'type' + requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/f3/8d/5e5be3ced1d12966fefb5c4ea3b2a5b480afcea36406559442c6e31d4a48/multidict-6.7.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl + name: multidict + version: 6.7.1 + sha256: bfde23ef6ed9db7eaee6c37dcec08524cb43903c60b285b172b6c094711b3961 + requires_dist: + - typing-extensions>=4.1.0 ; python_full_version < '3.11' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/f3/ab/a7653bce9a3b204be6a6931767a9e23595807bb84790ce6685e4d7e5bd08/nh3-0.3.6-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl + name: nh3 + version: 0.3.6 + sha256: a43ebd7543555c3ac1bc353023d0794e75cb76f6f18f19c32e95441496c0cc25 + requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/f4/24/2a3e3df732393fed8b3ebf2ec078f05546de641fe1b667ee316ec1dcf3b7/webencodings-0.5.1-py2.py3-none-any.whl + name: webencodings + version: 0.5.1 + sha256: a0af1213f3c2226497a97e2b3aa01a7e4bee4f403f95be16fc9acd2947514a78 - pypi: https://files.pythonhosted.org/packages/f4/7e/a72dd26f3b0f4f2bf1dd8923c85f7ceb43172af56d63c7383eb62b332364/pygments-2.20.0-py3-none-any.whl name: pygments version: 2.20.0 @@ -4033,11 +5765,43 @@ packages: requires_dist: - colorama>=0.4.6 ; extra == 'windows-terminal' requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/f9/38/8b6fc7a8153cb49eb3a9a13acfa9eeb6cc476e37888781e593e6f02ac05e/spython-0.3.14-py3-none-any.whl + name: spython + version: 0.3.14 + sha256: 72968583e498bc2a51f9acd0ed6bc0d7d1f7ccd491feaba5e2f7d944bc51da3a - pypi: https://files.pythonhosted.org/packages/fa/0a/11486d02add7b1384dff7374d124b1cfbb0ee864dcc9f6a2c0380638cf84/numpy-2.5.0-cp312-cp312-macosx_10_13_x86_64.whl name: numpy version: 2.5.0 sha256: 489780423903667933b4ed6197b6ec3b75ea5dd17d1d8f0f38d798feb6921561 requires_python: '>=3.12' +- pypi: https://files.pythonhosted.org/packages/fb/76/641ae371508676492379f16e2fa48f4e2c11741bd63c48be4b12a6b09cba/aiosignal-1.4.0-py3-none-any.whl + name: aiosignal + version: 1.4.0 + sha256: 053243f8b92b990551949e63930a839ff0cf0b0ebbe0597b0f3fb19e1a0fe82e + requires_dist: + - frozenlist>=1.1.0 + - typing-extensions>=4.2 ; python_full_version < '3.13' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/fd/7b/122376b1fd3c62c1ed9dc80c931ace4844b3c55407b6fb2d199377c9736f/pydantic-2.13.4-py3-none-any.whl + name: pydantic + version: 2.13.4 + sha256: 45a282cde31d808236fd7ea9d919b128653c8b38b393d1c4ab335c62924d9aba + requires_dist: + - annotated-types>=0.6.0 + - pydantic-core==2.46.4 + - typing-extensions>=4.14.1 + - typing-inspection>=0.4.2 + - email-validator>=2.0.0 ; extra == 'email' + - tzdata ; python_full_version >= '3.9' and sys_platform == 'win32' and extra == 'timezone' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/fd/99/757a48b4ace0097b63550597db28f58da0b91d89889f98b34b30f272c0bf/ct3-3.4.0.post5-cp314-cp314-macosx_11_0_arm64.whl + name: ct3 + version: 3.4.0.post5 + sha256: 9611a4052fd76df8bd8961be0f8d94150908f712f910fcf22b2ceddae8f1882a + requires_dist: + - markdown ; extra == 'filters' + - markdown ; extra == 'markdown' + requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*' - pypi: https://files.pythonhosted.org/packages/fd/e1/3542a9cb596cadd76fcef413f19c79216e002623158befe6daa03dbfa88c/contourpy-1.3.3-cp314-cp314-macosx_11_0_arm64.whl name: contourpy version: 1.3.3 @@ -4072,3 +5836,17 @@ packages: - patchelf ; extra == 'patchelf' - ziglang>=0.10.0 ; extra == 'zig' requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/fe/cf/18ef143a81610136d3da8193da9d80bfe1cb548a1e2d1c775f26b23d024a/multidict-6.7.1-cp312-cp312-macosx_10_13_x86_64.whl + name: multidict + version: 6.7.1 + sha256: 3fccb473e87eaa1382689053e4a4618e7ba7b9b9b8d6adf2027ee474597128cd + requires_dist: + - typing-extensions>=4.1.0 ; python_full_version < '3.11' + requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/ff/9a/9afaade874b2fa6c752c36f1548f718b5b83af81ed9b76628329dab81c1b/rfc3986-2.0.0-py2.py3-none-any.whl + name: rfc3986 + version: 2.0.0 + sha256: 50b1502b60e289cb37883f3dfd34532b8873c7de9f49bb546641ce9cbd256ebd + requires_dist: + - idna ; extra == 'idna2008' + requires_python: '>=3.7' diff --git a/pydeeptools/deeptools/bamPEFragmentSize.py b/pydeeptools/deeptools/bamPEFragmentSize.py index fab0b96022..9569abbe66 100755 --- a/pydeeptools/deeptools/bamPEFragmentSize.py +++ b/pydeeptools/deeptools/bamPEFragmentSize.py @@ -3,114 +3,152 @@ import argparse import sys -import numpy as np import matplotlib -matplotlib.use('Agg') -matplotlib.rcParams['pdf.fonttype'] = 42 -matplotlib.rcParams['svg.fonttype'] = 'none' +import numpy as np + +matplotlib.use("Agg") +matplotlib.rcParams["pdf.fonttype"] = 42 +matplotlib.rcParams["svg.fonttype"] = "none" +from importlib.metadata import version + import matplotlib.pyplot as plt +from deeptools.getFragmentAndReadSize import get_read_and_fragment_length + # own tools from deeptools.parserCommon import writableFile -from deeptools.getFragmentAndReadSize import get_read_and_fragment_length -from importlib.metadata import version + def parse_arguments(): parser = argparse.ArgumentParser( - description='This tool calculates the fragment sizes for read pairs given a BAM file from paired-end sequencing.' - 'Several regions are sampled depending on the ' - 'size of the genome and number of processors to estimate the' - 'summary statistics on the fragment lengths. ' - 'Properly paired reads are preferred for computation, i.e., ' - 'it will only use discordant pairs if no concordant alignments ' - 'overlap with a given region. ' - 'The default setting simply prints the summary statistics to the screen.', - usage='bamPEFragmentSize -b sample1.bam sample2.bam -o hist.png\n' - 'help: bamPEFragmentSize -h / bamPEFragmentSize --help' + description="This tool calculates the fragment sizes for read pairs given a BAM file from paired-end sequencing." + "Several regions are sampled depending on the " + "size of the genome and number of processors to estimate the" + "summary statistics on the fragment lengths. " + "Properly paired reads are preferred for computation, i.e., " + "it will only use discordant pairs if no concordant alignments " + "overlap with a given region. " + "The default setting simply prints the summary statistics to the screen.", + usage="bamPEFragmentSize -b sample1.bam sample2.bam -o hist.png\n" + "help: bamPEFragmentSize -h / bamPEFragmentSize --help", + ) + parser.add_argument( + "--bamfiles", + "-b", + help="List of BAM files to process", + nargs="+", + metavar="bam files", + ) + + parser.add_argument( + "--histogram", + "-hist", + "-o", + help="Save a .png file with a histogram of the fragment length distribution.", + metavar="FILE", + ) + + parser.add_argument( + "--plotFileFormat", + metavar="FILETYPE", + help="Image format type. If given, this option " + "overrides the image format based on the plotFile " + "ending. The available options are: png, " + "eps, pdf, svg and plotly.", + default=None, + choices=["png", "pdf", "svg", "eps"], + ) + parser.add_argument( + "--ggplot", help="Use ggplot theme for figures", action="store_true" + ) + + parser.add_argument( + "--numberOfProcessors", + "-p", + help="Number of processors to use. The default is " + "to use 1. (Default: %(default)s)", + metavar="INT", + type=int, + default=1, + required=False, + ) + parser.add_argument( + "--samplesLabel", + help="Labels for the samples plotted. The " + "default is to use the file name of the " + "sample. The sample labels should be separated " + "by spaces and quoted if a label itself" + 'contains a space E.g. --samplesLabel label-1 "label 2" ', + nargs="+", + ) + parser.add_argument( + "--plotTitle", + "-T", + help="Title of the plot, to be printed on top of " + "the generated image. Leave blank for no title. (Default: %(default)s)", + default="", + ) + parser.add_argument( + "--maxFragmentLength", + help="The maximum fragment length in the histogram. A value of 0 (the default) indicates to use twice the mean fragment length. (Default: %(default)s)", + default=0, + type=int, + ) + parser.add_argument("--logScale", help="Plot on the log scale", action="store_true") + parser.add_argument( + "--binSize", + "-bs", + metavar="INT", + help="Length in bases of the window used to sample the genome. (Default: %(default)s)", + default=1000, + type=int, + ) + parser.add_argument( + "--distanceBetweenBins", + "-n", + metavar="INT", + help="To reduce the computation time, not every possible genomic " + "bin is sampled. This option allows you to set the distance " + "between bins actually sampled from. Larger numbers are sufficient " + "for high coverage samples, while smaller values are useful for " + "lower coverage samples. Note that if you specify a value that " + "results in too few (<1000) reads sampled, the value will be " + "decreased. (Default: %(default)s)", + default=1000000, + type=int, + ) + parser.add_argument( + "--blackListFileName", + "-bl", + help="A BED file containing regions that should be excluded from all analyses. Currently this works by rejecting genomic chunks that happen to overlap an entry. Consequently, for BAM files, if a read partially overlaps a blacklisted region or a fragment spans over it, then the read/fragment might still be considered.", + metavar="BED file", + required=False, + ) + parser.add_argument( + "--table", + metavar="FILE", + help="In addition to printing read and fragment length metrics to the screen, write them to the given file in tabular format.", + required=False, + ) + parser.add_argument( + "--outRawFragmentLengths", + metavar="FILE", + required=False, + type=writableFile, + help="Save the fragment (or read if the input is single-end) length and their associated number of occurrences to a tab-separated file. Columns are length, number of occurrences, and the sample label.", + ) + parser.add_argument( + "--verbose", + help="Set if processing data messages are wanted.", + action="store_true", + required=False, + ) + parser.add_argument( + "--version", + action="version", + version="%(prog)s {}".format(version("deeptools")), ) - parser.add_argument('--bamfiles', '-b', - help='List of BAM files to process', - nargs='+', - metavar='bam files') - - parser.add_argument('--histogram', '-hist', '-o', - help='Save a .png file with a histogram ' - 'of the fragment length distribution.', - metavar='FILE') - - parser.add_argument('--plotFileFormat', - metavar='FILETYPE', - help='Image format type. If given, this option ' - 'overrides the image format based on the plotFile ' - 'ending. The available options are: png, ' - 'eps, pdf, svg and plotly.', - default=None, - choices=['png', 'pdf', 'svg', 'eps']) - parser.add_argument('--ggplot', - help='Use ggplot theme for figures', - action='store_true') - - parser.add_argument('--numberOfProcessors', '-p', - help='Number of processors to use. The default is ' - 'to use 1. (Default: %(default)s)', - metavar="INT", - type=int, - default=1, - required=False) - parser.add_argument('--samplesLabel', - help='Labels for the samples plotted. The ' - 'default is to use the file name of the ' - 'sample. The sample labels should be separated ' - 'by spaces and quoted if a label itself' - 'contains a space E.g. --samplesLabel label-1 "label 2" ', - nargs='+') - parser.add_argument('--plotTitle', '-T', - help='Title of the plot, to be printed on top of ' - 'the generated image. Leave blank for no title. (Default: %(default)s)', - default='') - parser.add_argument('--maxFragmentLength', - help='The maximum fragment length in the histogram. A value of 0 (the default) indicates to use twice the mean fragment length. (Default: %(default)s)', - default=0, - type=int) - parser.add_argument('--logScale', - help='Plot on the log scale', - action='store_true') - parser.add_argument('--binSize', '-bs', - metavar='INT', - help='Length in bases of the window used to sample the genome. (Default: %(default)s)', - default=1000, - type=int) - parser.add_argument('--distanceBetweenBins', '-n', - metavar='INT', - help='To reduce the computation time, not every possible genomic ' - 'bin is sampled. This option allows you to set the distance ' - 'between bins actually sampled from. Larger numbers are sufficient ' - 'for high coverage samples, while smaller values are useful for ' - 'lower coverage samples. Note that if you specify a value that ' - 'results in too few (<1000) reads sampled, the value will be ' - 'decreased. (Default: %(default)s)', - default=1000000, - type=int) - parser.add_argument('--blackListFileName', '-bl', - help="A BED file containing regions that should be excluded from all analyses. Currently this works by rejecting genomic chunks that happen to overlap an entry. Consequently, for BAM files, if a read partially overlaps a blacklisted region or a fragment spans over it, then the read/fragment might still be considered.", - metavar="BED file", - required=False) - parser.add_argument('--table', - metavar='FILE', - help='In addition to printing read and fragment length metrics to the screen, write them to the given file in tabular format.', - required=False) - parser.add_argument('--outRawFragmentLengths', - metavar='FILE', - required=False, - type=writableFile, - help='Save the fragment (or read if the input is single-end) length and their associated number of occurrences to a tab-separated file. Columns are length, number of occurrences, and the sample label.') - parser.add_argument('--verbose', - help='Set if processing data messages are wanted.', - action='store_true', - required=False) - parser.add_argument('--version', action='version', - version='%(prog)s {}'.format(version('deeptools'))) return parser @@ -126,23 +164,33 @@ def getDensity(lengths, minVal, maxVal): def getFragSize(bam, args, idx, outRawFrags): - fragment_len_dict, read_len_dict = get_read_and_fragment_length(bam, return_lengths=True, - blackListFileName=args.blackListFileName, - numberOfProcessors=args.numberOfProcessors, - verbose=args.verbose, - binSize=args.binSize, - distanceBetweenBins=args.distanceBetweenBins) + fragment_len_dict, read_len_dict = get_read_and_fragment_length( + bam, + return_lengths=True, + blackListFileName=args.blackListFileName, + numberOfProcessors=args.numberOfProcessors, + verbose=args.verbose, + binSize=args.binSize, + distanceBetweenBins=args.distanceBetweenBins, + ) if outRawFrags: label = bam if args.samplesLabel and idx < len(args.samplesLabel): label = args.samplesLabel[idx] if fragment_len_dict: - fragment_len_dict['lengths'] = [int(x) for x in fragment_len_dict['lengths']] - cnts = np.bincount(fragment_len_dict['lengths'], minlength=int(fragment_len_dict['max']) + 1) + fragment_len_dict["lengths"] = [ + int(x) for x in fragment_len_dict["lengths"] + ] + cnts = np.bincount( + fragment_len_dict["lengths"], + minlength=int(fragment_len_dict["max"]) + 1, + ) else: - read_len_dict['lengths'] = [int(x) for x in read_len_dict['lengths']] - cnts = np.bincount(read_len_dict['lengths'], minlength=int(read_len_dict['max']) + 1) + read_len_dict["lengths"] = [int(x) for x in read_len_dict["lengths"]] + cnts = np.bincount( + read_len_dict["lengths"], minlength=int(read_len_dict["max"]) + 1 + ) for idx, v in enumerate(cnts): if v > 0: outRawFrags.write("{}\t{}\t{}\n".format(idx, v, label)) @@ -153,74 +201,98 @@ def getFragSize(bam, args, idx, outRawFrags): print("\n\nBAM file : {}".format(bam)) if fragment_len_dict: - if fragment_len_dict['mean'] == 0: - print("No pairs were found. Is the data from a paired-end sequencing experiment?") + if fragment_len_dict["mean"] == 0: + print( + "No pairs were found. Is the data from a paired-end sequencing experiment?" + ) - print("Sample size: {}\n".format(fragment_len_dict['sample_size'])) + print("Sample size: {}\n".format(fragment_len_dict["sample_size"])) print("Fragment lengths:") - print("Min.: {}\n1st Qu.: {}\nMean: {}\nMedian: {}\n" - "3rd Qu.: {}\nMax.: {}\nStd: {}".format(fragment_len_dict['min'], - fragment_len_dict['qtile25'], - fragment_len_dict['mean'], - fragment_len_dict['median'], - fragment_len_dict['qtile75'], - fragment_len_dict['max'], - fragment_len_dict['std'])) - print("MAD: {}\nLen. 10%: {}\nLen. 20%: {}\nLen. 30%: {}\nLen. 40%: {}\nLen. 60%: {}\nLen. 70%: {}\nLen. 80%: {}\nLen. 90%: {}\nLen. 99%: {}\n".format(fragment_len_dict['mad'], - fragment_len_dict['qtile10'], - fragment_len_dict['qtile20'], - fragment_len_dict['qtile30'], - fragment_len_dict['qtile40'], - fragment_len_dict['qtile60'], - fragment_len_dict['qtile70'], - fragment_len_dict['qtile80'], - fragment_len_dict['qtile90'], - fragment_len_dict['qtile99'])) + print( + "Min.: {}\n1st Qu.: {}\nMean: {}\nMedian: {}\n" + "3rd Qu.: {}\nMax.: {}\nStd: {}".format( + fragment_len_dict["min"], + fragment_len_dict["qtile25"], + fragment_len_dict["mean"], + fragment_len_dict["median"], + fragment_len_dict["qtile75"], + fragment_len_dict["max"], + fragment_len_dict["std"], + ) + ) + print( + "MAD: {}\nLen. 10%: {}\nLen. 20%: {}\nLen. 30%: {}\nLen. 40%: {}\nLen. 60%: {}\nLen. 70%: {}\nLen. 80%: {}\nLen. 90%: {}\nLen. 99%: {}\n".format( + fragment_len_dict["mad"], + fragment_len_dict["qtile10"], + fragment_len_dict["qtile20"], + fragment_len_dict["qtile30"], + fragment_len_dict["qtile40"], + fragment_len_dict["qtile60"], + fragment_len_dict["qtile70"], + fragment_len_dict["qtile80"], + fragment_len_dict["qtile90"], + fragment_len_dict["qtile99"], + ) + ) else: - print("No pairs were found. Is the data from a paired-end sequencing experiment?") + print( + "No pairs were found. Is the data from a paired-end sequencing experiment?" + ) print("\nRead lengths:") - print("Sample size: {}\n".format(read_len_dict['sample_size'])) - print("Min.: {}\n1st Qu.: {}\nMean: {}\nMedian: {}\n" - "3rd Qu.: {}\nMax.: {}\nStd: {}".format(read_len_dict['min'], - read_len_dict['qtile25'], - read_len_dict['mean'], - read_len_dict['median'], - read_len_dict['qtile75'], - read_len_dict['max'], - read_len_dict['std'])) - print("MAD: {}\nLen. 10%: {}\nLen. 20%: {}\nLen. 30%: {}\nLen. 40%: {}\nLen. 60%: {}\nLen. 70%: {}\nLen. 80%: {}\nLen. 90%: {}\nLen. 99%: {}\n".format(read_len_dict['mad'], - read_len_dict['qtile10'], - read_len_dict['qtile20'], - read_len_dict['qtile30'], - read_len_dict['qtile40'], - read_len_dict['qtile60'], - read_len_dict['qtile70'], - read_len_dict['qtile80'], - read_len_dict['qtile90'], - read_len_dict['qtile99'])) + print("Sample size: {}\n".format(read_len_dict["sample_size"])) + print( + "Min.: {}\n1st Qu.: {}\nMean: {}\nMedian: {}\n" + "3rd Qu.: {}\nMax.: {}\nStd: {}".format( + read_len_dict["min"], + read_len_dict["qtile25"], + read_len_dict["mean"], + read_len_dict["median"], + read_len_dict["qtile75"], + read_len_dict["max"], + read_len_dict["std"], + ) + ) + print( + "MAD: {}\nLen. 10%: {}\nLen. 20%: {}\nLen. 30%: {}\nLen. 40%: {}\nLen. 60%: {}\nLen. 70%: {}\nLen. 80%: {}\nLen. 90%: {}\nLen. 99%: {}\n".format( + read_len_dict["mad"], + read_len_dict["qtile10"], + read_len_dict["qtile20"], + read_len_dict["qtile30"], + read_len_dict["qtile40"], + read_len_dict["qtile60"], + read_len_dict["qtile70"], + read_len_dict["qtile80"], + read_len_dict["qtile90"], + read_len_dict["qtile99"], + ) + ) # The read and fragment lists will just eat up memory if not removed! if args.histogram: if fragment_len_dict: - maxVal = fragment_len_dict['mean'] * 2 - minVal = fragment_len_dict['min'] + maxVal = fragment_len_dict["mean"] * 2 + minVal = fragment_len_dict["min"] else: - maxVal = read_len_dict['mean'] * 2 - minVal = read_len_dict['min'] + maxVal = read_len_dict["mean"] * 2 + minVal = read_len_dict["min"] if args.maxFragmentLength > 0: maxVal = args.maxFragmentLength if fragment_len_dict: - fragment_len_dict['lengths'] = getDensity(fragment_len_dict['lengths'], minVal, maxVal) + fragment_len_dict["lengths"] = getDensity( + fragment_len_dict["lengths"], minVal, maxVal + ) if read_len_dict: - read_len_dict['lengths'] = getDensity(read_len_dict['lengths'], minVal, maxVal) + read_len_dict["lengths"] = getDensity( + read_len_dict["lengths"], minVal, maxVal + ) else: if fragment_len_dict: - del fragment_len_dict['lengths'] + del fragment_len_dict["lengths"] if read_len_dict: - del read_len_dict['lengths'] + del read_len_dict["lengths"] return (fragment_len_dict, read_len_dict) @@ -231,11 +303,19 @@ def printTable(args, fragDict, readDict): """ of = open(args.table, "w") of.write("\tFrag. Sampled") - of.write("\tFrag. Len. Min.\tFrag. Len. 1st. Qu.\tFrag. Len. Mean\tFrag. Len. Median\tFrag. Len. 3rd Qu.\tFrag. Len. Max\tFrag. Len. Std.") - of.write("\tFrag. Med. Abs. Dev.\tFrag. Len. 10%\tFrag. Len. 20%\tFrag. Len. 30%\tFrag. Len. 40%\tFrag. Len. 60%\tFrag. Len. 70%\tFrag. Len. 80%\tFrag. Len. 90%\tFrag. Len. 99%") + of.write( + "\tFrag. Len. Min.\tFrag. Len. 1st. Qu.\tFrag. Len. Mean\tFrag. Len. Median\tFrag. Len. 3rd Qu.\tFrag. Len. Max\tFrag. Len. Std." + ) + of.write( + "\tFrag. Med. Abs. Dev.\tFrag. Len. 10%\tFrag. Len. 20%\tFrag. Len. 30%\tFrag. Len. 40%\tFrag. Len. 60%\tFrag. Len. 70%\tFrag. Len. 80%\tFrag. Len. 90%\tFrag. Len. 99%" + ) of.write("\tReads Sampled") - of.write("\tRead Len. Min.\tRead Len. 1st. Qu.\tRead Len. Mean\tRead Len. Median\tRead Len. 3rd Qu.\tRead Len. Max\tRead Len. Std.") - of.write("\tRead Med. Abs. Dev.\tRead Len. 10%\tRead Len. 20%\tRead Len. 30%\tRead Len. 40%\tRead Len. 60%\tRead Len. 70%\tRead Len. 80%\tRead Len. 90%\tRead Len. 99%\n") + of.write( + "\tRead Len. Min.\tRead Len. 1st. Qu.\tRead Len. Mean\tRead Len. Median\tRead Len. 3rd Qu.\tRead Len. Max\tRead Len. Std." + ) + of.write( + "\tRead Med. Abs. Dev.\tRead Len. 10%\tRead Len. 20%\tRead Len. 30%\tRead Len. 40%\tRead Len. 60%\tRead Len. 70%\tRead Len. 80%\tRead Len. 90%\tRead Len. 99%\n" + ) for idx, bam in enumerate(args.bamfiles): if args.samplesLabel and idx < len(args.samplesLabel): @@ -244,57 +324,74 @@ def printTable(args, fragDict, readDict): of.write(bam) if fragDict is not None and fragDict[bam] is not None: d = fragDict[bam] - of.write("\t{}".format(d['sample_size'])) - of.write("\t{}\t{}\t{}\t{}\t{}\t{}\t{}".format(d['min'], - d['qtile25'], - d['mean'], - d['median'], - d['qtile75'], - d['max'], - d['std'])) - of.write("\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}".format(d['mad'], - d['qtile10'], - d['qtile20'], - d['qtile30'], - d['qtile40'], - d['qtile60'], - d['qtile70'], - d['qtile80'], - d['qtile90'], - d['qtile99'])) + of.write("\t{}".format(d["sample_size"])) + of.write( + "\t{}\t{}\t{}\t{}\t{}\t{}\t{}".format( + d["min"], + d["qtile25"], + d["mean"], + d["median"], + d["qtile75"], + d["max"], + d["std"], + ) + ) + of.write( + "\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}".format( + d["mad"], + d["qtile10"], + d["qtile20"], + d["qtile30"], + d["qtile40"], + d["qtile60"], + d["qtile70"], + d["qtile80"], + d["qtile90"], + d["qtile99"], + ) + ) else: of.write("\t0") of.write("\t0\t0\t0\t0\t0\t0\t0") of.write("\t0\t0\t0\t0\t0\t0\t0\t0\t0\t0") d = readDict[bam] - of.write("\t{}".format(d['sample_size'])) - of.write("\t{}\t{}\t{}\t{}\t{}\t{}\t{}".format(d['min'], - d['qtile25'], - d['mean'], - d['median'], - d['qtile75'], - d['max'], - d['std'])) - of.write("\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\n".format(d['mad'], - d['qtile10'], - d['qtile20'], - d['qtile30'], - d['qtile40'], - d['qtile60'], - d['qtile70'], - d['qtile80'], - d['qtile90'], - d['qtile99'])) + of.write("\t{}".format(d["sample_size"])) + of.write( + "\t{}\t{}\t{}\t{}\t{}\t{}\t{}".format( + d["min"], + d["qtile25"], + d["mean"], + d["median"], + d["qtile75"], + d["max"], + d["std"], + ) + ) + of.write( + "\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\t{}\n".format( + d["mad"], + d["qtile10"], + d["qtile20"], + d["qtile30"], + d["qtile40"], + d["qtile60"], + d["qtile70"], + d["qtile80"], + d["qtile90"], + d["qtile99"], + ) + ) of.close() def main(args=None): - args = parse_arguments().parse_args(args) - - if len(sys.argv) == 1: - parse_arguments().print_help() - sys.exit() - + parser = parse_arguments() + if args is None: + if len(sys.argv) == 1: + parser.print_help() + return + args = parser.parse_args(args) + print(args) fraglengths = {} readlengths = {} of = None @@ -310,7 +407,7 @@ def main(args=None): printTable(args, fraglengths, readlengths) if args.ggplot: - plt.style.use('ggplot') + plt.style.use("ggplot") if args.histogram: if args.samplesLabel: @@ -330,17 +427,22 @@ def main(args=None): if args.maxFragmentLength > 0: maxVal = args.maxFragmentLength else: - maxVal = d['mean'] * 2 - - plt.bar(d['lengths'][1][:-1], height=d['lengths'][0], - width=d['lengths'][1][1:] - d['lengths'][1][:-1], - align='edge', log=args.logScale, - alpha=0.5, label=labels[i]) + maxVal = d["mean"] * 2 + + plt.bar( + d["lengths"][1][:-1], + height=d["lengths"][0], + width=d["lengths"][1][1:] - d["lengths"][1][:-1], + align="edge", + log=args.logScale, + alpha=0.5, + label=labels[i], + ) i += 1 - plt.xlabel('Fragment Length') - plt.ylabel('Frequency') - plt.legend(loc='upper right') + plt.xlabel("Fragment Length") + plt.ylabel("Frequency") + plt.legend(loc="upper right") plt.title(args.plotTitle) plt.savefig(args.histogram, bbox_inches=0, format=args.plotFileFormat) plt.close() diff --git a/pydeeptools/deeptools/bigwigAverage.py b/pydeeptools/deeptools/bigwigAverage.py index 5228ddf08f..fb60612491 100644 --- a/pydeeptools/deeptools/bigwigAverage.py +++ b/pydeeptools/deeptools/bigwigAverage.py @@ -2,9 +2,10 @@ # -*- coding: utf-8 -*- import argparse import sys + import numpy as np -from deeptools import parserCommon -from deeptools import writeBedGraph_bam_and_bw + +from deeptools import parserCommon, writeBedGraph_bam_and_bw debug = 0 @@ -15,40 +16,49 @@ def parse_arguments(args=None): parser = argparse.ArgumentParser( parents=[parentParser, outputParser], formatter_class=argparse.ArgumentDefaultsHelpFormatter, - description='This tool average multiple bigWig files based on the number ' - 'of mapped reads. To average the bigWig files, the genome is ' - 'partitioned into bins of equal size, then the scores ' - 'in each bigwig file are computed per bin.' - 'These scores are averaged and scaleFactors can be applied before the average.', - usage='bigwigAverage -b sample1.bw sample2.bw -o outfile.bw\n' - 'help: bigwigAverage -h / bigwigAverage --help') + description="This tool average multiple bigWig files based on the number " + "of mapped reads. To average the bigWig files, the genome is " + "partitioned into bins of equal size, then the scores " + "in each bigwig file are computed per bin." + "These scores are averaged and scaleFactors can be applied before the average.", + usage="bigwigAverage -b sample1.bw sample2.bw -o outfile.bw\n" + "help: bigwigAverage -h / bigwigAverage --help", + ) # define the arguments - parser.add_argument('--bigwigs', '-b', - metavar='Bigwig files', - help='Bigwig files separated by space.', - nargs='+', - required=True) - - parser.add_argument('--scaleFactors', - help='Set this parameter to multipy the bigwig values ' - 'by a constant. The format is ' - 'scaleFactor1:scaleFactor2:scaleFactor3 etc. ' - 'For example 0.7:1 to scale the first bigwig file ' - 'by 0.7 while not scaling the second bigwig file', - default=None, - required=False) - - parser.add_argument('--skipNonCoveredRegions', '--skipNAs', - help='This parameter determines if non-covered regions (regions without a score) ' - 'in the bigWig files should be skipped. The default is to treat those ' - 'regions as having a value of zero. ' - 'The decision to skip non-covered regions ' - 'depends on the interpretation of the data. Non-covered regions ' - 'in a bigWig file may represent repetitive regions that should ' - 'be skipped. Alternatively, the interpretation of non-covered regions as ' - 'zeros may be wrong and this option should be used ', - action='store_true') + parser.add_argument( + "--bigwigs", + "-b", + metavar="Bigwig files", + help="Bigwig files separated by space.", + nargs="+", + required=True, + ) + + parser.add_argument( + "--scaleFactors", + help="Set this parameter to multipy the bigwig values " + "by a constant. The format is " + "scaleFactor1:scaleFactor2:scaleFactor3 etc. " + "For example 0.7:1 to scale the first bigwig file " + "by 0.7 while not scaling the second bigwig file", + default=None, + required=False, + ) + + parser.add_argument( + "--skipNonCoveredRegions", + "--skipNAs", + help="This parameter determines if non-covered regions (regions without a score) " + "in the bigWig files should be skipped. The default is to treat those " + "regions as having a value of zero. " + "The decision to skip non-covered regions " + "depends on the interpretation of the data. Non-covered regions " + "in a bigWig file may represent repetitive regions that should " + "be skipped. Alternatively, the interpretation of non-covered regions as " + "zeros may be wrong and this option should be used ", + action="store_true", + ) return parser @@ -84,16 +94,18 @@ def average(tileCoverage, args): nan """ - norm_values = [args['scaleFactors'][i] * cov for i, cov in enumerate(tileCoverage)] + norm_values = [args["scaleFactors"][i] * cov for i, cov in enumerate(tileCoverage)] return np.mean(norm_values) def main(args=None): - args = parse_arguments().parse_args(args) - if len(sys.argv) == 1: - parse_arguments().print_help() - sys.exit() + parser = parse_arguments() + if args is None: + if len(sys.argv) == 1: + parser.print_help() + return + args = parser.parse_args(args) nFiles = len(args.bigwigs) @@ -105,19 +117,26 @@ def main(args=None): raise argparse.ArgumentTypeError( "Format of scaleFactors is factor or factor1:factor2... as many as bigwig files. " "There are {} bigwigs and {} factors." - "The value given ( {} ) is not valid".format(nFiles, len(scaleFactors), args.scaleFactors)) + "The value given ( {} ) is not valid".format( + nFiles, len(scaleFactors), args.scaleFactors + ) + ) else: scaleFactors = [1] * nFiles # the average function is called and receives # the function_args per each tile that is considered FUNC = average - function_args = {'scaleFactors': scaleFactors} + function_args = {"scaleFactors": scaleFactors} writeBedGraph_bam_and_bw.writeBedGraph( [(b, getType(b)) for b in args.bigwigs], - args.outFileName, 0, FUNC, - function_args, tileSize=args.binSize, region=args.region, + args.outFileName, + 0, + FUNC, + function_args, + tileSize=args.binSize, + region=args.region, blackListFileName=args.blackListFileName, verbose=args.verbose, numberOfProcessors=args.numberOfProcessors, @@ -125,4 +144,5 @@ def main(args=None): format=args.outFileFormat, smoothLength=False, missingDataAsZero=not args.skipNonCoveredRegions, - extendPairedEnds=False) + extendPairedEnds=False, + ) diff --git a/pydeeptools/deeptools/computeMatrix2.py b/pydeeptools/deeptools/computeMatrix2.py index a2b123e7e6..4b6081e481 100644 --- a/pydeeptools/deeptools/computeMatrix2.py +++ b/pydeeptools/deeptools/computeMatrix2.py @@ -1,17 +1,17 @@ - import argparse +import signal import sys -from deeptools.parserCommon import writableFile, numberOfProcessors -from deeptools import parserCommon from importlib.metadata import version + +from deeptools import parserCommon from deeptools.hp import r_computematrix -import signal +from deeptools.parserCommon import numberOfProcessors, writableFile + def parse_arguments(args=None): - parser = \ - argparse.ArgumentParser( - formatter_class=argparse.RawDescriptionHelpFormatter, - description=""" + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description=""" This tool calculates scores per genome regions and prepares an intermediate file that can be used with ``plotHeatmap`` and ``plotProfiles``. Typically, the genome regions are genes, but any other regions defined in a BED file can be used. @@ -26,329 +26,425 @@ def parse_arguments(args=None): $ computeMatrix scale-regions --help """, - epilog='An example usage is:\n computeMatrix reference-point -S ' - ' -R -b 1000\n \n') + epilog="An example usage is:\n computeMatrix reference-point -S " + " -R -b 1000\n \n", + ) - parser.add_argument('--version', action='version', - version='%(prog)s {}'.format(version('deeptools'))) + parser.add_argument( + "--version", + action="version", + version="%(prog)s {}".format(version("deeptools")), + ) - subparsers = parser.add_subparsers( - title='Commands', - dest='command', - metavar='') + subparsers = parser.add_subparsers(title="Commands", dest="command", metavar="") # scale-regions mode options subparsers.add_parser( - 'scale-regions', + "scale-regions", formatter_class=argparse.ArgumentDefaultsHelpFormatter, parents=[ computeMatrixRequiredArgs(), computeMatrixOutputArgs(), - computeMatrixOptArgs(case='scale-regions'), - parserCommon.gtf_options() + computeMatrixOptArgs(case="scale-regions"), + parserCommon.gtf_options(), ], help="In the scale-regions mode, all regions in the BED file are " "stretched or shrunken to the length (in bases) indicated by the user.", - usage='An example usage is:\n computeMatrix scale-regions -S ' - ' -R -b 1000\n\n') + usage="An example usage is:\n computeMatrix scale-regions -S " + " -R -b 1000\n\n", + ) # reference point arguments subparsers.add_parser( - 'reference-point', + "reference-point", formatter_class=argparse.ArgumentDefaultsHelpFormatter, - parents=[computeMatrixRequiredArgs(), - computeMatrixOutputArgs(), - computeMatrixOptArgs(case='reference-point'), - parserCommon.gtf_options() - ], + parents=[ + computeMatrixRequiredArgs(), + computeMatrixOutputArgs(), + computeMatrixOptArgs(case="reference-point"), + parserCommon.gtf_options(), + ], help="Reference-point refers to a position within a BED region " "(e.g., the starting point). In this mode, only those genomic" "positions before (upstream) and/or after (downstream) of the " "reference point will be plotted.", - usage='An example usage is:\n computeMatrix reference-point -S ' - ' -R -a 3000 -b 3000\n\n') + usage="An example usage is:\n computeMatrix reference-point -S " + " -R -a 3000 -b 3000\n\n", + ) return parser def computeMatrixRequiredArgs(args=None): parser = argparse.ArgumentParser(add_help=False) - required = parser.add_argument_group('Required arguments') - required.add_argument('--regionsFileName', '-R', - metavar='File', - help='File name or names, in BED or GTF format, containing ' - 'the regions to plot. If multiple bed files are given, each one is considered a ' - 'group that can be plotted separately.', - nargs='+', - required=True) - required.add_argument('--scoreFileName', '-S', - help='bigWig file(s) containing ' - 'the scores to be plotted. Multiple files should be separated by spaced. BigWig ' - 'files can be obtained by using the bamCoverage ' - 'or bamCompare tools. More information about ' - 'the bigWig file format can be found at ' - 'http://genome.ucsc.edu/goldenPath/help/bigWig.html ', - metavar='File', - nargs='+', - required=True) + required = parser.add_argument_group("Required arguments") + required.add_argument( + "--regionsFileName", + "-R", + metavar="File", + help="File name or names, in BED or GTF format, containing " + "the regions to plot. If multiple bed files are given, each one is considered a " + "group that can be plotted separately.", + nargs="+", + required=True, + ) + required.add_argument( + "--scoreFileName", + "-S", + help="bigWig file(s) containing " + "the scores to be plotted. Multiple files should be separated by spaced. BigWig " + "files can be obtained by using the bamCoverage " + "or bamCompare tools. More information about " + "the bigWig file format can be found at " + "http://genome.ucsc.edu/goldenPath/help/bigWig.html ", + metavar="File", + nargs="+", + required=True, + ) return parser def computeMatrixOutputArgs(args=None): parser = argparse.ArgumentParser(add_help=False) - output = parser.add_argument_group('Output options') - output.add_argument('--outFileName', '-out', '-o', - help='File name to save the gzipped matrix file ' - 'needed by the "plotHeatmap" and "plotProfile" tools.', - type=writableFile, - required=True) - - output.add_argument('--outFileNameMatrix', - help='If this option is given, then the matrix ' - 'of values underlying the heatmap will be saved ' - 'using the indicated name, e.g. IndividualValues.tab.' - 'This matrix can easily be loaded into R or ' - 'other programs.', - metavar='FILE', - type=writableFile) - output.add_argument('--outFileSortedRegions', - help='File name in which the regions are saved ' - 'after skiping zeros or min/max threshold values. The ' - 'order of the regions in the file follows the sorting ' - 'order selected. This is useful, for example, to ' - 'generate other heatmaps keeping the sorting of the ' - 'first heatmap. Example: Heatmap1sortedRegions.bed', - metavar='BED file', - type=argparse.FileType('w')) + output = parser.add_argument_group("Output options") + output.add_argument( + "--outFileName", + "-out", + "-o", + help="File name to save the gzipped matrix file " + 'needed by the "plotHeatmap" and "plotProfile" tools.', + type=writableFile, + required=True, + ) + + output.add_argument( + "--outFileNameMatrix", + help="If this option is given, then the matrix " + "of values underlying the heatmap will be saved " + "using the indicated name, e.g. IndividualValues.tab." + "This matrix can easily be loaded into R or " + "other programs.", + metavar="FILE", + type=writableFile, + ) + output.add_argument( + "--outFileSortedRegions", + help="File name in which the regions are saved " + "after skiping zeros or min/max threshold values. The " + "order of the regions in the file follows the sorting " + "order selected. This is useful, for example, to " + "generate other heatmaps keeping the sorting of the " + "first heatmap. Example: Heatmap1sortedRegions.bed", + metavar="BED file", + type=argparse.FileType("w"), + ) return parser -def computeMatrixOptArgs(case=['scale-regions', 'reference-point'][0]): +def computeMatrixOptArgs(case=["scale-regions", "reference-point"][0]): parser = argparse.ArgumentParser(add_help=False) - optional = parser.add_argument_group('Optional arguments') - optional.add_argument('--version', action='version', - version='%(prog)s {}'.format(version('deeptools'))) - - if case == 'scale-regions': - optional.add_argument('--regionBodyLength', '-m', - default=1000, - type=int, - help='Distance in bases to which all regions will ' - 'be fit. (Default: %(default)s)') - optional.add_argument('--startLabel', - default='TSS', - help='Label shown in the plot for the start of ' - 'the region. Default is TSS (transcription ' - 'start site), but could be changed to anything, ' - 'e.g. "peak start". Note that this is only ' - 'useful if you plan to plot the results yourself ' - 'and not, for example, with plotHeatmap, which ' - 'will override this. (Default: %(default)s)') - optional.add_argument('--endLabel', - default='TES', - help='Label shown in the plot for the region ' - 'end. Default is TES (transcription end site). ' - 'See the --startLabel option for more ' - 'information. (Default: %(default)s) ') - optional.add_argument('--beforeRegionStartLength', '-b', '--upstream', - default=0, - type=int, - help='Distance upstream of the start site of ' - 'the regions defined in the region file. If the ' - 'regions are genes, this would be the distance ' - 'upstream of the transcription start site. (Default: %(default)s)') - optional.add_argument('--afterRegionStartLength', '-a', '--downstream', - default=0, - type=int, - help='Distance downstream of the end site ' - 'of the given regions. If the ' - 'regions are genes, this would be the distance ' - 'downstream of the transcription end site. (Default: %(default)s)') - optional.add_argument("--unscaled5prime", - default=0, - type=int, - help='Number of bases at the 5-prime end of the ' - 'region to exclude from scaling. By default, ' - 'each region is scaled to a given length (see the --regionBodyLength option). In some cases it is useful to look at unscaled signals around region boundaries, so this setting specifies the number of unscaled bases on the 5-prime end of each boundary. (Default: %(default)s)') - optional.add_argument("--unscaled3prime", - default=0, - type=int, - help='Like --unscaled5prime, but for the 3-prime ' - 'end. (Default: %(default)s)') - - elif case == 'reference-point': - optional.add_argument('--referencePoint', - default='TSS', - choices=['TSS', 'TES', 'center'], - help='The reference point for the plotting ' - 'could be either the region start (TSS), the ' - 'region end (TES) or the center of the region. ' - 'Note that regardless of what you specify, ' - 'plotHeatmap/plotProfile will default to using "TSS" as the ' - 'label. (Default: %(default)s)') + optional = parser.add_argument_group("Optional arguments") + optional.add_argument( + "--version", + action="version", + version="%(prog)s {}".format(version("deeptools")), + ) + + if case == "scale-regions": + optional.add_argument( + "--regionBodyLength", + "-m", + default=1000, + type=int, + help="Distance in bases to which all regions will " + "be fit. (Default: %(default)s)", + ) + optional.add_argument( + "--startLabel", + default="TSS", + help="Label shown in the plot for the start of " + "the region. Default is TSS (transcription " + "start site), but could be changed to anything, " + 'e.g. "peak start". Note that this is only ' + "useful if you plan to plot the results yourself " + "and not, for example, with plotHeatmap, which " + "will override this. (Default: %(default)s)", + ) + optional.add_argument( + "--endLabel", + default="TES", + help="Label shown in the plot for the region " + "end. Default is TES (transcription end site). " + "See the --startLabel option for more " + "information. (Default: %(default)s) ", + ) + optional.add_argument( + "--beforeRegionStartLength", + "-b", + "--upstream", + default=0, + type=int, + help="Distance upstream of the start site of " + "the regions defined in the region file. If the " + "regions are genes, this would be the distance " + "upstream of the transcription start site. (Default: %(default)s)", + ) + optional.add_argument( + "--afterRegionStartLength", + "-a", + "--downstream", + default=0, + type=int, + help="Distance downstream of the end site " + "of the given regions. If the " + "regions are genes, this would be the distance " + "downstream of the transcription end site. (Default: %(default)s)", + ) + optional.add_argument( + "--unscaled5prime", + default=0, + type=int, + help="Number of bases at the 5-prime end of the " + "region to exclude from scaling. By default, " + "each region is scaled to a given length (see the --regionBodyLength option). In some cases it is useful to look at unscaled signals around region boundaries, so this setting specifies the number of unscaled bases on the 5-prime end of each boundary. (Default: %(default)s)", + ) + optional.add_argument( + "--unscaled3prime", + default=0, + type=int, + help="Like --unscaled5prime, but for the 3-prime " + "end. (Default: %(default)s)", + ) + + elif case == "reference-point": + optional.add_argument( + "--referencePoint", + default="TSS", + choices=["TSS", "TES", "center"], + help="The reference point for the plotting " + "could be either the region start (TSS), the " + "region end (TES) or the center of the region. " + "Note that regardless of what you specify, " + 'plotHeatmap/plotProfile will default to using "TSS" as the ' + "label. (Default: %(default)s)", + ) # set region body length to zero for reference point mode - optional.add_argument('--regionBodyLength', help=argparse.SUPPRESS, - default=0, type=int) - optional.add_argument('--unscaled5prime', default=0, type=int, help=argparse.SUPPRESS) - optional.add_argument('--unscaled3prime', default=0, type=int, help=argparse.SUPPRESS) - optional.add_argument('--beforeRegionStartLength', '-b', '--upstream', - default=500, - type=int, - metavar='INT bp', - help='Distance upstream of the reference-point ' - 'selected. (Default: %(default)s)') - optional.add_argument('--afterRegionStartLength', '-a', '--downstream', - default=1500, - metavar='INT bp', - type=int, - help='Distance downstream of the ' - 'reference-point selected. (Default: %(default)s)') - optional.add_argument('--nanAfterEnd', - action='store_true', - help='If set, any values after the region end ' - 'are discarded. This is useful to visualize ' - 'the region end when not using the ' - 'scale-regions mode and when the reference-' - 'point is set to the TSS.') - - optional.add_argument('--binSize', '-bs', - help='Length, in bases, of the non-overlapping ' - 'bins for averaging the score over the ' - 'regions length. (Default: %(default)s)', - type=int, - default=10) - - optional.add_argument('--sortRegions', - help='Whether the output file should present the ' - 'regions sorted. The default (keep) retains order as in -R.' - 'Note that this is only useful if you plan to plot ' - 'the results yourself and not, for example, with ' - 'plotHeatmap, which will override this. (Default: %(default)s)', - choices=["descend", "ascend", "keep"], - default='keep') - - optional.add_argument('--sortUsing', - help='Indicate which method should be used for ' - 'sorting. The value is computed for each row.' - 'Note that the region_length option will lead ' - 'to a dotted line within the heatmap that indicates ' - 'the end of the regions. (Default: %(default)s)', - choices=["mean", "median", "max", "min", "sum", - "region_length"], - default='mean') - - optional.add_argument('--sortUsingSamples', - help='List of sample numbers (order as in matrix), ' - 'that are used for sorting by --sortUsing, ' - 'no value uses all samples, ' - 'example: --sortUsingSamples 1 3', - type=int, nargs='+') - - optional.add_argument('--averageTypeBins', - default='mean', - choices=["mean", "median", "min", - "max", "std", "sum"], - help='Define the type of statistic that should be ' - 'used over the bin size range. The ' - 'options are: "mean", "median", "min", "max", "sum" ' - 'and "std". The default is "mean". (Default: %(default)s)') - - optional.add_argument('--missingDataAsZero', - help='If set, missing data (NAs) will be treated as zeros. ' - 'The default is to ignore such cases, which will be depicted as black areas in ' - 'a heatmap. (see the --missingDataColor argument ' - 'of the plotHeatmap command for additional options).', - action='store_true') - - optional.add_argument('--skipZeros', - help='Whether regions with only scores of zero ' - 'should be included or not. Default is to include ' - 'them.', - action='store_true') - - optional.add_argument('--minThreshold', - default=None, - type=float, - help='Numeric value. Any region containing a ' - 'value that is less than or equal to this ' - 'will be skipped. This is useful to skip, ' - 'for example, genes where the read count is zero ' - 'for any of the bins. This could be the result of ' - 'unmappable areas and can bias the overall results. (Default: %(default)s)') - - optional.add_argument('--maxThreshold', - default=None, - type=float, - help='Numeric value. Any region containing a value ' - 'greater than or equal to this ' - 'will be skipped. The maxThreshold is useful to ' - 'skip those few regions with very high read counts ' - '(e.g. micro satellites) that may bias the average ' - 'values. (Default: %(default)s)') - - optional.add_argument('--blackListFileName', '-bl', - help="A BED file containing regions that should be excluded from all analyses. Currently this works by rejecting genomic chunks that happen to overlap an entry. Consequently, for BAM files, if a read partially overlaps a blacklisted region or a fragment spans over it, then the read/fragment might still be considered.", - metavar="BED file", - required=False) - - optional.add_argument('--samplesLabel', - help='Labels for the samples. This will then be passed to plotHeatmap and plotProfile. The ' - 'default is to use the file name of the ' - 'sample. The sample labels should be separated ' - 'by spaces and quoted if a label itself' - 'contains a space E.g. --samplesLabel label-1 "label 2" ', - nargs='+') - - optional.add_argument('--verbose', - help='Being VERY verbose in the status messages. --quiet will disable this.', - action='store_true') - - optional.add_argument('--scale', - help='If set, all values are multiplied by ' - 'this number. (Default: %(default)s)', - type=float, - default=1) - optional.add_argument('--numberOfProcessors', '-p', - help='Number of processors to use. Type "max/2" to ' - 'use half the maximum number of processors or "max" ' - 'to use all available processors. (Default: %(default)s)', - metavar="INT", - type=numberOfProcessors, - default=1, - required=False) + optional.add_argument( + "--regionBodyLength", help=argparse.SUPPRESS, default=0, type=int + ) + optional.add_argument( + "--unscaled5prime", default=0, type=int, help=argparse.SUPPRESS + ) + optional.add_argument( + "--unscaled3prime", default=0, type=int, help=argparse.SUPPRESS + ) + optional.add_argument( + "--beforeRegionStartLength", + "-b", + "--upstream", + default=500, + type=int, + metavar="INT bp", + help="Distance upstream of the reference-point " + "selected. (Default: %(default)s)", + ) + optional.add_argument( + "--afterRegionStartLength", + "-a", + "--downstream", + default=1500, + metavar="INT bp", + type=int, + help="Distance downstream of the " + "reference-point selected. (Default: %(default)s)", + ) + optional.add_argument( + "--nanAfterEnd", + action="store_true", + help="If set, any values after the region end " + "are discarded. This is useful to visualize " + "the region end when not using the " + "scale-regions mode and when the reference-" + "point is set to the TSS.", + ) + + optional.add_argument( + "--binSize", + "-bs", + help="Length, in bases, of the non-overlapping " + "bins for averaging the score over the " + "regions length. (Default: %(default)s)", + type=int, + default=10, + ) + + optional.add_argument( + "--sortRegions", + help="Whether the output file should present the " + "regions sorted. The default (keep) retains order as in -R." + "Note that this is only useful if you plan to plot " + "the results yourself and not, for example, with " + "plotHeatmap, which will override this. (Default: %(default)s)", + choices=["descend", "ascend", "keep"], + default="keep", + ) + + optional.add_argument( + "--sortUsing", + help="Indicate which method should be used for " + "sorting. The value is computed for each row." + "Note that the region_length option will lead " + "to a dotted line within the heatmap that indicates " + "the end of the regions. (Default: %(default)s)", + choices=["mean", "median", "max", "min", "sum", "region_length"], + default="mean", + ) + + optional.add_argument( + "--sortUsingSamples", + help="List of sample numbers (order as in matrix), " + "that are used for sorting by --sortUsing, " + "no value uses all samples, " + "example: --sortUsingSamples 1 3", + type=int, + nargs="+", + ) + + optional.add_argument( + "--averageTypeBins", + default="mean", + choices=["mean", "median", "min", "max", "std", "sum"], + help="Define the type of statistic that should be " + "used over the bin size range. The " + 'options are: "mean", "median", "min", "max", "sum" ' + 'and "std". The default is "mean". (Default: %(default)s)', + ) + + optional.add_argument( + "--missingDataAsZero", + help="If set, missing data (NAs) will be treated as zeros. " + "The default is to ignore such cases, which will be depicted as black areas in " + "a heatmap. (see the --missingDataColor argument " + "of the plotHeatmap command for additional options).", + action="store_true", + ) + + optional.add_argument( + "--skipZeros", + help="Whether regions with only scores of zero " + "should be included or not. Default is to include " + "them.", + action="store_true", + ) + + optional.add_argument( + "--minThreshold", + default=None, + type=float, + help="Numeric value. Any region containing a " + "value that is less than or equal to this " + "will be skipped. This is useful to skip, " + "for example, genes where the read count is zero " + "for any of the bins. This could be the result of " + "unmappable areas and can bias the overall results. (Default: %(default)s)", + ) + + optional.add_argument( + "--maxThreshold", + default=None, + type=float, + help="Numeric value. Any region containing a value " + "greater than or equal to this " + "will be skipped. The maxThreshold is useful to " + "skip those few regions with very high read counts " + "(e.g. micro satellites) that may bias the average " + "values. (Default: %(default)s)", + ) + + optional.add_argument( + "--blackListFileName", + "-bl", + help="A BED file containing regions that should be excluded from all analyses. Currently this works by rejecting genomic chunks that happen to overlap an entry. Consequently, for BAM files, if a read partially overlaps a blacklisted region or a fragment spans over it, then the read/fragment might still be considered.", + metavar="BED file", + required=False, + ) + + optional.add_argument( + "--samplesLabel", + help="Labels for the samples. This will then be passed to plotHeatmap and plotProfile. The " + "default is to use the file name of the " + "sample. The sample labels should be separated " + "by spaces and quoted if a label itself" + 'contains a space E.g. --samplesLabel label-1 "label 2" ', + nargs="+", + ) + + optional.add_argument( + "--verbose", + help="Being VERY verbose in the status messages. --quiet will disable this.", + action="store_true", + ) + + optional.add_argument( + "--scale", + help="If set, all values are multiplied by this number. (Default: %(default)s)", + type=float, + default=1, + ) + optional.add_argument( + "--numberOfProcessors", + "-p", + help='Number of processors to use. Type "max/2" to ' + 'use half the maximum number of processors or "max" ' + "to use all available processors. (Default: %(default)s)", + metavar="INT", + type=numberOfProcessors, + default=1, + required=False, + ) return parser def process_args(args=None): - args = parse_arguments().parse_args(args) - - if len(sys.argv) == 1: - parse_arguments().print_help() - sys.exit() + parser = parse_arguments() + if args is None: + if len(sys.argv) == 1: + parser.print_help() + return + args = parser.parse_args(args) # Ensure before and after region length is positive if args.beforeRegionStartLength < 0: - print(f"beforeRegionStartLength changed from {args.beforeRegionStartLength} into {abs(args.beforeRegionStartLength)}") + print( + f"beforeRegionStartLength changed from {args.beforeRegionStartLength} into {abs(args.beforeRegionStartLength)}" + ) args.beforeRegionStartLength = abs(args.beforeRegionStartLength) if args.afterRegionStartLength < 0: - print(f"afterRegionStartLength changed from {args.afterRegionStartLength} into {abs(args.afterRegionStartLength)}") + print( + f"afterRegionStartLength changed from {args.afterRegionStartLength} into {abs(args.afterRegionStartLength)}" + ) args.afterRegionStartLength = abs(args.afterRegionStartLength) - if args.command == 'scale-regions': + if args.command == "scale-regions": args.nanAfterEnd = False args.referencePoint = "" - elif args.command == 'reference-point': - if args.beforeRegionStartLength == 0 and \ - args.afterRegionStartLength == 0: - sys.exit("\nUpstrean and downstream regions are both " - "set to 0. Nothing to output. Maybe you want to " - "use the scale-regions mode?\n") + elif args.command == "reference-point": + if args.beforeRegionStartLength == 0 and args.afterRegionStartLength == 0: + sys.exit( + "\nUpstrean and downstream regions are both " + "set to 0. Nothing to output. Maybe you want to " + "use the scale-regions mode?\n" + ) if args.beforeRegionStartLength % args.binSize != 0: - sys.exit("\nThe --beforeRegionStartLength value must be a multiple of the --binSize value.") + sys.exit( + "\nThe --beforeRegionStartLength value must be a multiple of the --binSize value." + ) if args.afterRegionStartLength % args.binSize != 0: - sys.exit("\nThe --afterRegionStartLength value must be a multiple of the --binSize value.") + sys.exit( + "\nThe --afterRegionStartLength value must be a multiple of the --binSize value." + ) if not args.samplesLabel: args.samplesLabel = [] if not args.sortUsingSamples: @@ -364,25 +460,26 @@ def main(args=None): args = process_args(args) - parameters = {'upstream': args.beforeRegionStartLength, - 'downstream': args.afterRegionStartLength, - 'body': args.regionBodyLength, - 'bin size': args.binSize, - 'ref point': args.referencePoint, - 'verbose': args.verbose, - 'bin avg type': args.averageTypeBins, - 'missing data as zero': args.missingDataAsZero, - 'min threshold': args.minThreshold, - 'max threshold': args.maxThreshold, - 'scale': args.scale, - 'skip zeros': args.skipZeros, - 'nan after end': args.nanAfterEnd, - 'proc number': args.numberOfProcessors, - 'sort regions': args.sortRegions, - 'sort using': args.sortUsing, - 'unscaled 5 prime': args.unscaled5prime, - 'unscaled 3 prime': args.unscaled3prime - } + parameters = { + "upstream": args.beforeRegionStartLength, + "downstream": args.afterRegionStartLength, + "body": args.regionBodyLength, + "bin size": args.binSize, + "ref point": args.referencePoint, + "verbose": args.verbose, + "bin avg type": args.averageTypeBins, + "missing data as zero": args.missingDataAsZero, + "min threshold": args.minThreshold, + "max threshold": args.maxThreshold, + "scale": args.scale, + "skip zeros": args.skipZeros, + "nan after end": args.nanAfterEnd, + "proc number": args.numberOfProcessors, + "sort regions": args.sortRegions, + "sort using": args.sortUsing, + "unscaled 5 prime": args.unscaled5prime, + "unscaled 3 prime": args.unscaled3prime, + } signal.signal(signal.SIGINT, signal.SIG_DFL) r_computematrix( args.command, @@ -396,7 +493,7 @@ def main(args=None): args.regionBodyLength, args.binSize, args.missingDataAsZero, - args.keepExons, # --metagene or not. + args.keepExons, # --metagene or not. args.transcriptID, args.exonID, args.transcript_id_designator, @@ -412,5 +509,5 @@ def main(args=None): args.referencePoint, args.numberOfProcessors, args.verbose, - args.outFileName - ) \ No newline at end of file + args.outFileName, + ) diff --git a/pydeeptools/deeptools/multiBamSummary2.py b/pydeeptools/deeptools/multiBamSummary2.py index 25766acdc9..8096c9b292 100644 --- a/pydeeptools/deeptools/multiBamSummary2.py +++ b/pydeeptools/deeptools/multiBamSummary2.py @@ -1,25 +1,27 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- +import argparse import os +import signal import sys -import argparse +from importlib.metadata import version + import numpy as np -import signal import deeptools.countReadsPerBin as countR from deeptools import parserCommon from deeptools.utilities import smartLabels -from importlib.metadata import version -old_settings = np.seterr(all='ignore') + +old_settings = np.seterr(all="ignore") from deeptools.hp import r_mbams + def parse_arguments(args=None): - parser = \ - argparse.ArgumentParser( - formatter_class=argparse.RawDescriptionHelpFormatter, - description=""" + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description=""" ``multiBamSummary`` computes the read coverages for genomic regions for typically two or more BAM files. The analysis can be performed for the entire genome by running the program in 'bins' mode. @@ -37,167 +39,206 @@ def parse_arguments(args=None): """, - epilog='example usages:\n' - 'multiBamSummary bins --bamfiles file1.bam file2.bam -o results.npz \n\n' - 'multiBamSummary BED-file --BED selection.bed --bamfiles file1.bam file2.bam \n' - '-o results.npz' - ' \n\n', - conflict_handler='resolve') - - parser.add_argument('--version', action='version', - version='%(prog)s {}'.format(version('deeptools'))) + epilog="example usages:\n" + "multiBamSummary bins --bamfiles file1.bam file2.bam -o results.npz \n\n" + "multiBamSummary BED-file --BED selection.bed --bamfiles file1.bam file2.bam \n" + "-o results.npz" + " \n\n", + conflict_handler="resolve", + ) + + parser.add_argument( + "--version", + action="version", + version="%(prog)s {}".format(version("deeptools")), + ) subparsers = parser.add_subparsers( title="commands", - dest='command', - description='subcommands', - help='subcommands', - metavar='') + dest="command", + description="subcommands", + help="subcommands", + metavar="", + ) parent_parser = parserCommon.getParentArgParse(binSize=False) read_options_parser = parserCommon.read_options() # bins mode options subparsers.add_parser( - 'bins', + "bins", formatter_class=argparse.ArgumentDefaultsHelpFormatter, - parents=[bamcorrelate_args(case='bins'), - parent_parser, read_options_parser, - parserCommon.gtf_options(suppress=True) - ], + parents=[ + bamcorrelate_args(case="bins"), + parent_parser, + read_options_parser, + parserCommon.gtf_options(suppress=True), + ], help="The coverage calculation is done for consecutive bins of equal " - "size (10 kilobases by default). This mode is useful to assess the " - "genome-wide similarity of BAM files. The bin size and " - "distance between bins can be adjusted.", + "size (10 kilobases by default). This mode is useful to assess the " + "genome-wide similarity of BAM files. The bin size and " + "distance between bins can be adjusted.", add_help=False, - usage='%(prog)s ' - '--bamfiles file1.bam file2.bam ' - '-o results.npz \n' - 'help: multiBamSummary bins -h / multiBamSummary bins --help\n') + usage="%(prog)s " + "--bamfiles file1.bam file2.bam " + "-o results.npz \n" + "help: multiBamSummary bins -h / multiBamSummary bins --help\n", + ) # BED file arguments subparsers.add_parser( - 'BED-file', + "BED-file", formatter_class=argparse.ArgumentDefaultsHelpFormatter, - parents=[bamcorrelate_args(case='BED-file'), - parent_parser, read_options_parser, - parserCommon.gtf_options() - ], + parents=[ + bamcorrelate_args(case="BED-file"), + parent_parser, + read_options_parser, + parserCommon.gtf_options(), + ], help="The user provides a BED file that contains all regions " - "that should be considered for the coverage analysis. A " - "common use is to compare ChIP-seq coverages between two " - "different samples for a set of peak regions.", - usage='%(prog)s --BED selection.bed --bamfiles file1.bam file2.bam -o results.npz\n' - 'help: multiBamSummary BED-file -h / multiBamSummary bins --help\n', - add_help=False) + "that should be considered for the coverage analysis. A " + "common use is to compare ChIP-seq coverages between two " + "different samples for a set of peak regions.", + usage="%(prog)s --BED selection.bed --bamfiles file1.bam file2.bam -o results.npz\n" + "help: multiBamSummary BED-file -h / multiBamSummary bins --help\n", + add_help=False, + ) return parser -def bamcorrelate_args(case='bins'): +def bamcorrelate_args(case="bins"): parser = argparse.ArgumentParser(add_help=False) - required = parser.add_argument_group('Required arguments') + required = parser.add_argument_group("Required arguments") # define the arguments - required.add_argument('--bamfiles', '-b', - metavar='FILE1 FILE2', - help='List of indexed bam files separated by spaces.', - nargs='+', - required=True) - - required.add_argument('--outFileName', '-out', '-o', - help='File name to save the coverage matrix. This matrix ' - 'can be subsequently plotted using plotCorrelation or ' - 'or plotPCA.', - type=parserCommon.writableFile) - - optional = parser.add_argument_group('Optional arguments') - - optional.add_argument("--help", "-h", action="help", - help="show this help message and exit") - optional.add_argument('--labels', '-l', - metavar='sample1 sample2', - help='User defined labels instead of default labels from ' - 'file names. ' - 'Multiple labels have to be separated by a space, e.g. ' - '--labels sample1 sample2 sample3', - nargs='+') - optional.add_argument('--smartLabels', - action='store_true', - help='Instead of manually specifying labels for the input ' - 'BAM files, this causes deepTools to use the file name ' - 'after removing the path and extension.') - - optional.add_argument('--genomeChunkSize', - type=int, - default=None, - help='Manually specify the size of the genome provided to each processor. ' - 'The default value of None specifies that this is determined by read ' - 'density of the BAM file.') - - if case == 'bins': - optional.add_argument('--binSize', '-bs', - metavar='INT', - help='Length in bases of the window used ' - 'to sample the genome. (Default: %(default)s)', - default=10000, - type=int) - - optional.add_argument('--distanceBetweenBins', '-n', - metavar='INT', - help='By default, multiBamSummary considers consecutive ' - 'bins of the specified --binSize. However, to ' - 'reduce the computation time, a larger distance ' - 'between bins can by given. Larger distances ' - 'result in fewer bins considered. (Default: %(default)s)', - default=0, - type=int) - - required.add_argument('--BED', - help=argparse.SUPPRESS, - default=None) + required.add_argument( + "--bamfiles", + "-b", + metavar="FILE1 FILE2", + help="List of indexed bam files separated by spaces.", + nargs="+", + required=True, + ) + + required.add_argument( + "--outFileName", + "-out", + "-o", + help="File name to save the coverage matrix. This matrix " + "can be subsequently plotted using plotCorrelation or " + "or plotPCA.", + type=parserCommon.writableFile, + ) + + optional = parser.add_argument_group("Optional arguments") + + optional.add_argument( + "--help", "-h", action="help", help="show this help message and exit" + ) + optional.add_argument( + "--labels", + "-l", + metavar="sample1 sample2", + help="User defined labels instead of default labels from " + "file names. " + "Multiple labels have to be separated by a space, e.g. " + "--labels sample1 sample2 sample3", + nargs="+", + ) + optional.add_argument( + "--smartLabels", + action="store_true", + help="Instead of manually specifying labels for the input " + "BAM files, this causes deepTools to use the file name " + "after removing the path and extension.", + ) + + optional.add_argument( + "--genomeChunkSize", + type=int, + default=None, + help="Manually specify the size of the genome provided to each processor. " + "The default value of None specifies that this is determined by read " + "density of the BAM file.", + ) + + if case == "bins": + optional.add_argument( + "--binSize", + "-bs", + metavar="INT", + help="Length in bases of the window used " + "to sample the genome. (Default: %(default)s)", + default=10000, + type=int, + ) + + optional.add_argument( + "--distanceBetweenBins", + "-n", + metavar="INT", + help="By default, multiBamSummary considers consecutive " + "bins of the specified --binSize. However, to " + "reduce the computation time, a larger distance " + "between bins can by given. Larger distances " + "result in fewer bins considered. (Default: %(default)s)", + default=0, + type=int, + ) + + required.add_argument("--BED", help=argparse.SUPPRESS, default=None) else: - optional.add_argument('--binSize', '-bs', - help=argparse.SUPPRESS, - default=10000, - type=int) - - optional.add_argument('--distanceBetweenBins', '-n', - help=argparse.SUPPRESS, - metavar='INT', - default=0, - type=int) - - required.add_argument('--BED', - help='Limits the coverage analysis to ' - 'the regions specified in these files.', - metavar='FILE1.bed FILE2.bed', - nargs='+', - required=True) - - group = parser.add_argument_group('Output optional options') - - group.add_argument('--outRawCounts', - help='Save the counts per region to a tab-delimited file.', - type=parserCommon.writableFile, - metavar='FILE') - - group.add_argument('--scalingFactors', - help='Compute scaling factors (in the DESeq2 manner) ' - 'compatible for use with bamCoverage and write them to a ' - 'file. The file has tab-separated columns "sample" and ' - '"scalingFactor".', - type=parserCommon.writableFile, - metavar='FILE') + optional.add_argument( + "--binSize", "-bs", help=argparse.SUPPRESS, default=10000, type=int + ) + + optional.add_argument( + "--distanceBetweenBins", + "-n", + help=argparse.SUPPRESS, + metavar="INT", + default=0, + type=int, + ) + + required.add_argument( + "--BED", + help="Limits the coverage analysis to " + "the regions specified in these files.", + metavar="FILE1.bed FILE2.bed", + nargs="+", + required=True, + ) + + group = parser.add_argument_group("Output optional options") + + group.add_argument( + "--outRawCounts", + help="Save the counts per region to a tab-delimited file.", + type=parserCommon.writableFile, + metavar="FILE", + ) + + group.add_argument( + "--scalingFactors", + help="Compute scaling factors (in the DESeq2 manner) " + "compatible for use with bamCoverage and write them to a " + 'file. The file has tab-separated columns "sample" and ' + '"scalingFactor".', + type=parserCommon.writableFile, + metavar="FILE", + ) return parser def process_args(args=None): - args = parse_arguments().parse_args(args) - - if len(sys.argv) == 1: - parse_arguments().print_help() - sys.exit() + parser = parse_arguments() + if args is None: + if len(sys.argv) == 1: + parser.print_help() + return + args = parser.parse_args(args) if args.labels and len(args.bamfiles) != len(args.labels): print("The number of labels does not match the number of bam files.") @@ -215,7 +256,7 @@ def process_args(args=None): if not args.region: args.region = "None" if not args.blackListFileName: - args.blackListFileName = 'None' + args.blackListFileName = "None" else: if len(args.blackListFileName) != 1: print("Please only provide one blacklist file.") @@ -257,7 +298,7 @@ def main(args=None): """ args = process_args(args) - + signal.signal(signal.SIGINT, signal.SIG_DFL) r_mbams( args.command, @@ -284,5 +325,5 @@ def main(args=None): args.keepExons, args.transcriptID, args.exonID, - args.transcript_id_designator + args.transcript_id_designator, ) diff --git a/pydeeptools/deeptools/multiBigwigSummary.py b/pydeeptools/deeptools/multiBigwigSummary.py index 3a5bda19ab..bcf277ecc2 100644 --- a/pydeeptools/deeptools/multiBigwigSummary.py +++ b/pydeeptools/deeptools/multiBigwigSummary.py @@ -1,23 +1,24 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- -import sys import argparse import os.path +import sys +from importlib.metadata import version + import numpy as np + +import deeptools.getScorePerBigWigBin as score_bw from deeptools import parserCommon from deeptools.utilities import smartLabels -import deeptools.getScorePerBigWigBin as score_bw -from importlib.metadata import version -old_settings = np.seterr(all='ignore') +old_settings = np.seterr(all="ignore") def parse_arguments(args=None): - parser = \ - argparse.ArgumentParser( - formatter_class=argparse.RawDescriptionHelpFormatter, - description=""" + parser = argparse.ArgumentParser( + formatter_class=argparse.RawDescriptionHelpFormatter, + description=""" Given typically two or more bigWig files, ``multiBigwigSummary`` computes the average scores for each of the files in every genomic region. This analysis is performed for the entire genome by running the program in ``bins`` mode, or for certain user selected regions in ``BED-file`` @@ -33,77 +34,87 @@ def parse_arguments(args=None): """, - epilog='example usage:\n multiBigwigSummary bins ' - '-b file1.bw file2.bw -o results.npz\n\n' - 'multiBigwigSummary BED-file -b file1.bw file2.bw -o results.npz\n' - '--BED selection.bed' - ' \n\n', - conflict_handler='resolve') - - parser.add_argument('--version', action='version', - version='%(prog)s {}'.format(version('deeptools'))) - subparsers = parser.add_subparsers( - title="commands", - dest='command', - metavar='') + epilog="example usage:\n multiBigwigSummary bins " + "-b file1.bw file2.bw -o results.npz\n\n" + "multiBigwigSummary BED-file -b file1.bw file2.bw -o results.npz\n" + "--BED selection.bed" + " \n\n", + conflict_handler="resolve", + ) + + parser.add_argument( + "--version", + action="version", + version="%(prog)s {}".format(version("deeptools")), + ) + + subparsers = parser.add_subparsers(title="commands", dest="command", metavar="") parent_parser = parserCommon.getParentArgParse(binSize=False) # bins mode options subparsers.add_parser( - 'bins', + "bins", formatter_class=argparse.ArgumentDefaultsHelpFormatter, parents=[ - multiBigwigSummaryArgs(case='bins'), + multiBigwigSummaryArgs(case="bins"), parent_parser, - parserCommon.gtf_options(suppress=True) + parserCommon.gtf_options(suppress=True), ], help="The average score is based on equally sized bins " - "(10 kilobases by default), which consecutively cover the " - "entire genome. The only exception is the last bin of a chromosome, which " - "is often smaller. The output of this mode is commonly used to assess the " - "overall similarity of different bigWig files.", + "(10 kilobases by default), which consecutively cover the " + "entire genome. The only exception is the last bin of a chromosome, which " + "is often smaller. The output of this mode is commonly used to assess the " + "overall similarity of different bigWig files.", add_help=False, - usage='multiBigwigSummary bins ' - '-b file1.bw file2.bw ' - '-o results.npz\n' - 'help: multiBigwigSummary bins -h / multiBigwigSummary bins --help\n') + usage="multiBigwigSummary bins " + "-b file1.bw file2.bw " + "-o results.npz\n" + "help: multiBigwigSummary bins -h / multiBigwigSummary bins --help\n", + ) # BED file arguments subparsers.add_parser( - 'BED-file', + "BED-file", formatter_class=argparse.ArgumentDefaultsHelpFormatter, parents=[ - multiBigwigSummaryArgs(case='BED-file'), + multiBigwigSummaryArgs(case="BED-file"), parent_parser, - parserCommon.gtf_options() + parserCommon.gtf_options(), ], help="The user provides a BED file that contains all regions " - "that should be considered for the analysis. A " - "common use is to compare scores (e.g. ChIP-seq scores) between " - "different samples over a set of pre-defined peak regions.", - usage='multiBigwigSummary BED-file ' - '-b file1.bw file2.bw ' - '-o results.npz --BED selection.bed\n' - 'help: multiBigwigSummary BED-file -h / multiBigwigSummary BED-file --help\n', - add_help=False) + "that should be considered for the analysis. A " + "common use is to compare scores (e.g. ChIP-seq scores) between " + "different samples over a set of pre-defined peak regions.", + usage="multiBigwigSummary BED-file " + "-b file1.bw file2.bw " + "-o results.npz --BED selection.bed\n" + "help: multiBigwigSummary BED-file -h / multiBigwigSummary BED-file --help\n", + add_help=False, + ) return parser def process_args(args=None): - args = parse_arguments().parse_args(args) - if len(sys.argv) == 1: - parse_arguments().print_help() - sys.exit() + parser = parse_arguments() + if args is None: + if len(sys.argv) == 1: + parser.print_help() + return + args = parser.parse_args(args) if not args.labels and args.smartLabels: args.labels = smartLabels(args.bwfiles) elif not args.labels: args.labels = [] for f in args.bwfiles: - if f.startswith("http://") or f.startswith("https://") or f.startswith("ftp://"): + if ( + f.startswith("http://") + or f.startswith("https://") + or f.startswith("ftp://") + ): args.labels.append(f.split("/")[-1]) else: args.labels.append(os.path.basename(f)) @@ -114,92 +125,116 @@ def process_args(args=None): return args -def multiBigwigSummaryArgs(case='bins'): +def multiBigwigSummaryArgs(case="bins"): parser = argparse.ArgumentParser(add_help=False) - required = parser.add_argument_group('Required arguments') + required = parser.add_argument_group("Required arguments") # define the arguments - required.add_argument('--bwfiles', '-b', - metavar='FILE1 FILE2', - help='List of bigWig files, separated by spaces.', - nargs='+', - required=True) - - required.add_argument('--outFileName', '-out', '-o', - help='File name to save the compressed matrix file (npz format) ' - 'needed by the "plotPCA" and "plotCorrelation" tools.', - type=parserCommon.writableFile, - required=True) - - optional = parser.add_argument_group('Optional arguments') - - optional.add_argument("--help", "-h", action="help", - help="show this help message and exit") - optional.add_argument('--labels', '-l', - metavar='sample1 sample2', - help='User defined labels instead of default labels from ' - 'file names. ' - 'Multiple labels have to be separated by spaces, e.g., ' - '--labels sample1 sample2 sample3', - nargs='+') - optional.add_argument('--smartLabels', - action='store_true', - help='Instead of manually specifying labels for the input ' - 'bigWig files, this causes deepTools to use the file name ' - 'after removing the path and extension.') - - optional.add_argument('--chromosomesToSkip', - metavar='chr1 chr2', - help='List of chromosomes that you do not want to be included. ' - ' Useful to remove "random" or "extra" chr.', - nargs='+') - - if case == 'bins': - optional.add_argument('--binSize', '-bs', - metavar='INT', - help='Size (in bases) of the windows sampled ' - 'from the genome. (Default: %(default)s)', - default=10000, - type=int) - - optional.add_argument('--distanceBetweenBins', '-n', - metavar='INT', - help='By default, multiBigwigSummary considers adjacent ' - 'bins of the specified --binSize. However, to ' - 'reduce the computation time, a larger distance ' - 'between bins can be given. Larger distances ' - 'results in fewer considered bins. (Default: %(default)s)', - default=0, - type=int) - - required.add_argument('--BED', - help=argparse.SUPPRESS, - default=None) + required.add_argument( + "--bwfiles", + "-b", + metavar="FILE1 FILE2", + help="List of bigWig files, separated by spaces.", + nargs="+", + required=True, + ) + + required.add_argument( + "--outFileName", + "-out", + "-o", + help="File name to save the compressed matrix file (npz format) " + 'needed by the "plotPCA" and "plotCorrelation" tools.', + type=parserCommon.writableFile, + required=True, + ) + + optional = parser.add_argument_group("Optional arguments") + + optional.add_argument( + "--help", "-h", action="help", help="show this help message and exit" + ) + optional.add_argument( + "--labels", + "-l", + metavar="sample1 sample2", + help="User defined labels instead of default labels from " + "file names. " + "Multiple labels have to be separated by spaces, e.g., " + "--labels sample1 sample2 sample3", + nargs="+", + ) + optional.add_argument( + "--smartLabels", + action="store_true", + help="Instead of manually specifying labels for the input " + "bigWig files, this causes deepTools to use the file name " + "after removing the path and extension.", + ) + + optional.add_argument( + "--chromosomesToSkip", + metavar="chr1 chr2", + help="List of chromosomes that you do not want to be included. " + ' Useful to remove "random" or "extra" chr.', + nargs="+", + ) + + if case == "bins": + optional.add_argument( + "--binSize", + "-bs", + metavar="INT", + help="Size (in bases) of the windows sampled " + "from the genome. (Default: %(default)s)", + default=10000, + type=int, + ) + + optional.add_argument( + "--distanceBetweenBins", + "-n", + metavar="INT", + help="By default, multiBigwigSummary considers adjacent " + "bins of the specified --binSize. However, to " + "reduce the computation time, a larger distance " + "between bins can be given. Larger distances " + "results in fewer considered bins. (Default: %(default)s)", + default=0, + type=int, + ) + + required.add_argument("--BED", help=argparse.SUPPRESS, default=None) else: - optional.add_argument('--binSize', '-bs', - help=argparse.SUPPRESS, - default=10000, - type=int) - - optional.add_argument('--distanceBetweenBins', '-n', - help=argparse.SUPPRESS, - metavar='INT', - default=0, - type=int) - - required.add_argument('--BED', - help='Limits the analysis to ' - 'the regions specified in this file.', - metavar='file1.bed file2.bed', - nargs='+', - required=True) - - group = parser.add_argument_group('Output optional options') - - group.add_argument('--outRawCounts', - help='Save average scores per region for each bigWig file to a single tab-delimited file.', - type=parserCommon.writableFile, - metavar='FILE') + optional.add_argument( + "--binSize", "-bs", help=argparse.SUPPRESS, default=10000, type=int + ) + + optional.add_argument( + "--distanceBetweenBins", + "-n", + help=argparse.SUPPRESS, + metavar="INT", + default=0, + type=int, + ) + + required.add_argument( + "--BED", + help="Limits the analysis to the regions specified in this file.", + metavar="file1.bed file2.bed", + nargs="+", + required=True, + ) + + group = parser.add_argument_group("Output optional options") + + group.add_argument( + "--outRawCounts", + help="Save average scores per region for each bigWig file to a single tab-delimited file.", + type=parserCommon.writableFile, + metavar="FILE", + ) return parser @@ -214,15 +249,17 @@ def main(args=None): """ args = process_args(args) - if 'BED' in args: + if "BED" in args: bed_regions = args.BED else: bed_regions = None if len(args.bwfiles) == 1 and not args.outRawCounts: - sys.stderr.write("You've input a single bigWig file and not specified " - "--outRawCounts. The resulting output will NOT be " - "useful with any deepTools program!\n") + sys.stderr.write( + "You've input a single bigWig file and not specified " + "--outRawCounts. The resulting output will NOT be " + "useful with any deepTools program!\n" + ) num_reads_per_bin = score_bw.getScorePerBin( args.bwfiles, @@ -235,20 +272,20 @@ def main(args=None): bedFile=bed_regions, chrsToSkip=args.chromosomesToSkip, out_file_for_raw_data=args.outRawCounts, - allArgs=args) + allArgs=args, + ) - sys.stderr.write("Number of bins " - "found: {}\n".format(num_reads_per_bin.shape[0])) + sys.stderr.write("Number of bins found: {}\n".format(num_reads_per_bin.shape[0])) if num_reads_per_bin.shape[0] < 2: - exit("ERROR: too few non zero bins found.\n" - "If using --region please check that this " - "region is covered by reads.\n") + exit( + "ERROR: too few non zero bins found.\n" + "If using --region please check that this " + "region is covered by reads.\n" + ) f = open(args.outFileName, "wb") - np.savez_compressed(f, - matrix=num_reads_per_bin, - labels=args.labels) + np.savez_compressed(f, matrix=num_reads_per_bin, labels=args.labels) f.close() if args.outRawCounts: diff --git a/pydeeptools/deeptools/test/test_bamPEFragmentSize.py b/pydeeptools/deeptools/test/test_bamPEFragmentSize.py index f06ed5da47..92e9287457 100644 --- a/pydeeptools/deeptools/test/test_bamPEFragmentSize.py +++ b/pydeeptools/deeptools/test/test_bamPEFragmentSize.py @@ -1,9 +1,9 @@ -import deeptools.bamPEFragmentSize -from matplotlib.testing.compare import compare_images import os.path -import filecmp from os import unlink -from tempfile import NamedTemporaryFile + +from matplotlib.testing.compare import compare_images + +import deeptools.bamPEFragmentSize ROOT = os.path.dirname(os.path.abspath(__file__)) + "/test_data" @@ -12,34 +12,43 @@ def test_bamPEFragmentSize_histogram(): """ Test histogram plot for bamPEFragmentSize """ - outfile = '/tmp/test_histogram.png' - args = "--bamfiles {}/bowtie2_test1.bam --samplesLabel bowtie2_test1.bam --plotFileFormat png --plotTitle Test-Plot --histogram {}".format(ROOT, outfile).split() + outfile = "/tmp/test_histogram.png" + args = "--bamfiles {}/bowtie2_test1.bam --samplesLabel bowtie2_test1.bam --plotFileFormat png --plotTitle Test-Plot --histogram {}".format( + ROOT, outfile + ).split() deeptools.bamPEFragmentSize.main(args) - res = compare_images(ROOT + '/bamPEFragmentSize_histogram_result1.png', outfile, 10) + res = compare_images(ROOT + "/bamPEFragmentSize_histogram_result1.png", outfile, 10) assert res is None, res unlink(outfile) + def test_bamPEFragmentSize_fr_sizes(): """ Test fragment length information for bamPEFragmentSize """ - out_lengths = '/tmp/test_raw_frag_lengths.txt' - out_metrics = '/tmp/test_metrics_table.txt' - args = "--bamfiles {}/bowtie2_test1.bam --outRawFragmentLengths {} --table {}".format(ROOT, out_lengths, out_metrics).split() + out_lengths = "/tmp/test_raw_frag_lengths.txt" + out_metrics = "/tmp/test_metrics_table.txt" + args = ( + "--bamfiles {}/bowtie2_test1.bam --outRawFragmentLengths {} --table {}".format( + ROOT, out_lengths, out_metrics + ).split() + ) deeptools.bamPEFragmentSize.main(args) - l = open(out_lengths, 'r') + l = open(out_lengths, "r") l_resp = l.readlines() l.close() - l_expected = ['241\t1', '242\t1', '251\t1'] - matches = [expected for expected in l_expected if any(expected in resp for resp in l_resp)] + l_expected = ["241\t1", "242\t1", "251\t1"] + matches = [ + expected for expected in l_expected if any(expected in resp for resp in l_resp) + ] assert matches == l_expected - m = open(out_metrics, 'r') + m = open(out_metrics, "r") m_resp = m.readlines()[1] m.close() - m_expected = '3\t241.0\t241.5\t244.66666666666666\t242.0\t246.5\t251.0\t4.496912521077347\t1.0\t241.2\t241.4\t241.6\t241.8\t243.8\t245.6\t247.4\t249.2\t250.82\t3\t251.0\t251.0\t251.0\t251.0\t251.0\t251.0\t0.0\t0.0\t251.0\t251.0\t251.0\t251.0\t251.0\t251.0\t251.0\t251.0\t251.0\n' + m_expected = "3\t241.0\t241.5\t244.66666666666666\t242.0\t246.5\t251.0\t4.496912521077347\t1.0\t241.2\t241.4\t241.6\t241.8\t243.8\t245.6\t247.4\t249.2\t250.82\t3\t251.0\t251.0\t251.0\t251.0\t251.0\t251.0\t0.0\t0.0\t251.0\t251.0\t251.0\t251.0\t251.0\t251.0\t251.0\t251.0\t251.0\n" assert m_expected in f"{m_resp}" unlink(out_lengths) - unlink(out_metrics) \ No newline at end of file + unlink(out_metrics) diff --git a/pydeeptools/deeptools/test/test_data/bamPEFragmentSize_histogram_result1.png b/pydeeptools/deeptools/test/test_data/bamPEFragmentSize_histogram_result1.png index fd10ccb091903ad91dfbdfcdafe65ea901487774..8268288a32b4e16d0f7aaefee5c86ddf4d314813 100644 GIT binary patch literal 18288 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 literal 14756 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

2cyoTpxdI5P!b$_7cKV;*ST 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 z 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 literal 81892 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�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

_li1<|?VF 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 diff --git a/pydeeptools/deeptools/test/test_plotEnrichment/plotEnrichment_defaults.png b/pydeeptools/deeptools/test/test_plotEnrichment/plotEnrichment_defaults.png index 176e3dc3fac3ea23b7959925023c72cb228897e4..6f0f6f3cafec87946c702e505983360ad0b611ef 100644 GIT binary patch literal 56069 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 literal 37537 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 Xw7-AYIsaSR`Cwhpl6hAG*QEXehw>ik diff --git a/pydeeptools/deeptools/test/test_plotHeatmap/plotHeatmap_default.png b/pydeeptools/deeptools/test/test_plotHeatmap/plotHeatmap_default.png index fedc808fd1f92ebcc87af48a788a8d0dec45e4a8..606c1b4e225a615fffe2c91408e050cef81c46c6 100644 GIT binary patch literal 53038 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

&l1f(g2qE7b8*w@jl!=4 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 UVTE7-1OH>L+oBPrzWez91!#i6HUIzs diff --git a/pydeeptools/deeptools/test/test_plotProfile/plotProfile_default.png b/pydeeptools/deeptools/test/test_plotProfile/plotProfile_default.png index 338357505fe68cf26089e7830851805ca4c66dec..f7ba808a38e05b7c6a55490de854d105bd55718d 100644 GIT binary patch literal 36166 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 literal 37052 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 From ef56909bd03a7e377ec82f44db5c74e590dd72ef Mon Sep 17 00:00:00 2001 From: WardDeb Date: Tue, 23 Jun 2026 09:09:57 +0200 Subject: [PATCH 04/19] python version 10 - 14 --- .github/workflows/test_pytest.yml | 192 +++++++++++++++--------------- 1 file changed, 96 insertions(+), 96 deletions(-) diff --git a/.github/workflows/test_pytest.yml b/.github/workflows/test_pytest.yml index 4e9322f40e..0d44db2bf0 100644 --- a/.github/workflows/test_pytest.yml +++ b/.github/workflows/test_pytest.yml @@ -2,101 +2,101 @@ name: tests_pytest on: [push, pull_request, workflow_dispatch] defaults: - run: - shell: bash -l {0} + run: + shell: bash -l {0} jobs: - check_versions_matches: - name: Check deeptools version matches galaxy tools - runs-on: ubuntu-latest - if: github.base_ref == 'master' - steps: - - uses: actions/checkout@v4 - - name: Check path - run: find /home/runner/work/deepTools/deepTools -name "pyproject.toml" - - name: Get Version of Deeptools - run: echo "deeptools_version=$(grep "version" /home/runner/work/deepTools/deepTools/pyproject.toml | awk '{print substr($NF, 2, length($NF) - 2)}')" >> $GITHUB_ENV - - name: Get Version of Galaxy tools - run: echo "galaxy_deeptools_version=$(grep "token.*TOOL_VERSION" /home/runner/work/deepTools/deepTools/galaxy/wrapper/deepTools_macros.xml | awk -F '>|<' '{print $3}')" >> $GITHUB_ENV - - name: Versions - run: | - echo deeptools version=${deeptools_version} - echo deeptools version in galaxy=${galaxy_deeptools_version} - - name: Fail PR if versions not matching - run: | - if [ -z $galaxy_deeptools_version ]; then - echo "galaxy_deeptools_version not defined change the github action" - exit 1 - fi - if [ -z $deeptools_version ]; then - echo "deeptools_version not defined change the github action" - exit 1 - fi - if [ "$galaxy_deeptools_version" != "$deeptools_version" ]; then - echo "versions do not match" - exit 1 - fi - build-linux: - name: Test on Linux - runs-on: ubuntu-latest - strategy: - matrix: - python-version: ['3.9','3.10', '3.11', '3.12', '3.13'] - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - cache: 'pip' - - name: Install Rust - uses: actions-rust-lang/setup-rust-toolchain@v1 - - name: build deeptools - run: | - python -m venv venv - source venv/bin/activate - pip install maturin - maturin develop --release --extras actions - - name: test deeptools - run: | - source venv/bin/activate - pytest -v - - name: build wheel - run: | - source venv/bin/activate - python -m build - - name: test wheel - run: | - source venv/bin/activate - pip install dist/*whl - build-osx: - name: Test on OSX - runs-on: macOS-latest - strategy: - matrix: - python-version: ['3.9','3.10', '3.11', '3.12', '3.13'] - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: ${{ matrix.python-version }} - cache: 'pip' - - name: Install Rust - uses: actions-rust-lang/setup-rust-toolchain@v1 - - name: build deeptools - run: | - python -m venv venv - source venv/bin/activate - pip install maturin - maturin develop --release --extras actions - - name: test deeptools - run: | - source venv/bin/activate - pytest -v - - name: build wheel - run: | - source venv/bin/activate - python -m build - - name: test wheel - run: | - source venv/bin/activate - pip install dist/*whl \ No newline at end of file + check_versions_matches: + name: Check deeptools version matches galaxy tools + runs-on: ubuntu-latest + if: github.base_ref == 'master' + steps: + - uses: actions/checkout@v4 + - name: Check path + run: find /home/runner/work/deepTools/deepTools -name "pyproject.toml" + - name: Get Version of Deeptools + run: echo "deeptools_version=$(grep "version" /home/runner/work/deepTools/deepTools/pyproject.toml | awk '{print substr($NF, 2, length($NF) - 2)}')" >> $GITHUB_ENV + - name: Get Version of Galaxy tools + run: echo "galaxy_deeptools_version=$(grep "token.*TOOL_VERSION" /home/runner/work/deepTools/deepTools/galaxy/wrapper/deepTools_macros.xml | awk -F '>|<' '{print $3}')" >> $GITHUB_ENV + - name: Versions + run: | + echo deeptools version=${deeptools_version} + echo deeptools version in galaxy=${galaxy_deeptools_version} + - name: Fail PR if versions not matching + run: | + if [ -z $galaxy_deeptools_version ]; then + echo "galaxy_deeptools_version not defined change the github action" + exit 1 + fi + if [ -z $deeptools_version ]; then + echo "deeptools_version not defined change the github action" + exit 1 + fi + if [ "$galaxy_deeptools_version" != "$deeptools_version" ]; then + echo "versions do not match" + exit 1 + fi + build-linux: + name: Test on Linux + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + cache: "pip" + - name: Install Rust + uses: actions-rust-lang/setup-rust-toolchain@v1 + - name: build deeptools + run: | + python -m venv venv + source venv/bin/activate + pip install maturin + maturin develop --release --extras actions + - name: test deeptools + run: | + source venv/bin/activate + pytest -v + - name: build wheel + run: | + source venv/bin/activate + python -m build + - name: test wheel + run: | + source venv/bin/activate + pip install dist/*whl + build-osx: + name: Test on OSX + runs-on: macOS-latest + strategy: + matrix: + python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + cache: "pip" + - name: Install Rust + uses: actions-rust-lang/setup-rust-toolchain@v1 + - name: build deeptools + run: | + python -m venv venv + source venv/bin/activate + pip install maturin + maturin develop --release --extras actions + - name: test deeptools + run: | + source venv/bin/activate + pytest -v + - name: build wheel + run: | + source venv/bin/activate + python -m build + - name: test wheel + run: | + source venv/bin/activate + pip install dist/*whl From 3ea7dadaa98a81562db163d6d889053a673ebb0d Mon Sep 17 00:00:00 2001 From: WardDeb Date: Tue, 23 Jun 2026 09:10:55 +0200 Subject: [PATCH 05/19] action version updater --- .github/dependabot.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 .github/dependabot.yml diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000000..fd59a97bbf --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,10 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: weekly + groups: + dependencies: + patterns: + - "*" From ac68269d7f671e7baf218172106b2733287f26f7 Mon Sep 17 00:00:00 2001 From: WardDeb Date: Tue, 23 Jun 2026 09:25:00 +0200 Subject: [PATCH 06/19] lock update --- .github/workflows/test_pytest.yml | 10 +-- pixi.lock | 109 +++++++++++++++++------------- pyproject.toml | 6 +- 3 files changed, 68 insertions(+), 57 deletions(-) diff --git a/.github/workflows/test_pytest.yml b/.github/workflows/test_pytest.yml index 0d44db2bf0..404e1fa093 100644 --- a/.github/workflows/test_pytest.yml +++ b/.github/workflows/test_pytest.yml @@ -11,7 +11,7 @@ jobs: runs-on: ubuntu-latest if: github.base_ref == 'master' steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Check path run: find /home/runner/work/deepTools/deepTools -name "pyproject.toml" - name: Get Version of Deeptools @@ -43,8 +43,8 @@ jobs: matrix: python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v7 + - uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} cache: "pip" @@ -75,8 +75,8 @@ jobs: matrix: python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 + - uses: actions/checkout@v7 + - uses: actions/setup-python@v6 with: python-version: ${{ matrix.python-version }} cache: "pip" diff --git a/pixi.lock b/pixi.lock index e5f37ef660..7836598766 100644 --- a/pixi.lock +++ b/pixi.lock @@ -159,7 +159,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/8e/b4/23f8462c72e514563f5fd949e38a9e45bcc86fb59bf4b88240ba0ef02026/cwl_utils-0.42-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8e/fb/2c4c618185be2bda327f9dacd16b3122cc938809f19df7be840595d0e584/prov-1.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/92/7a/8017d45e513c720ee82bf062b1be3ae39087db3024571b4a00773e17c235/galaxy_job_config_init-0.1.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/94/95/7f522393c88313336b20d70fc849555757b2e5febc22b83b3a3f0fd4bce9/matplotlib-3.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/96/9a/982e48afcffcd727a9144506720ffd4224b6b7e355c98641866f38b7c043/jaraco_functools-4.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/97/1b/295bf2fa3e740131778065e5ffa2c481f0e7210182d408e9a2c244ff5b0c/readme_renderer-45.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl @@ -171,6 +170,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/9f/56/13ab06b4f93ca7cac71078fbe37fcea175d3216f31f85c3168a6bbd0bb9a/flake8-7.3.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/a7/b2/d872fc3d753516870d520595ddd8ce4dd44fa797a240999f125f58521ad7/matplotlib-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/ac/1f/d10d6ad23c86c62d90d867d0506881a392ec6ef06885b858eaab868dd356/deeptoolsintervals-0.1.9.tar.gz - pypi: https://files.pythonhosted.org/packages/ac/3e/61d11b779e4e83ee8661439af070f6f138060cd41f0346a0a70432f9e55c/cwl_upgrader-1.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl @@ -300,6 +300,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/77/de194443bf38daed9452139e960c632b0ef9f9a5dd9ce605fdf18ca9f1b1/id-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl + - pypi: https://files.pythonhosted.org/packages/44/c7/6b2d8cb7cc251d53c976799cacd3200add56351c175ba89ab9cbd7c1e68a/matplotlib-3.10.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/46/3b/9dedd2e35cebcd4eb3539514b5ac674fd45654404839e6f9eff6e25d67c7/py2bit-1.0.1.tar.gz - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl @@ -374,7 +375,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d7/a5/bbbc3b74a94fbdbd7915e7ad030f16539bfdc1362f7e9003b594f0537950/glob2-0.7.tar.gz - pypi: https://files.pythonhosted.org/packages/d9/b0/1e05aa4e0124cbc6509641353f513fc29c2b5e5197dbd5dfade810a521cf/galaxy_tool_util_models-26.0.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/da/17/f5276b496c61477a6c4fc5e7401f4bfe1c2e5ef7c6cd67896f2ade3809cb/matplotlib-3.11.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl @@ -516,6 +516,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/63/b1/4260d67d6bd85e58a66b72d54ce15d5de789b6f3870cc6bedf8ff9667401/propcache-0.5.2-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/68/10/bf2d6738d72748b961a3751ab89522d58c54efc36a8e1a12161216cd45cf/pandas-3.0.3-cp314-cp314-macosx_11_0_arm64.whl + - pypi: https://files.pythonhosted.org/packages/68/dd/fa2e1a45fce2d09f4aea3cee169760e672c8262325aa5796c49d543dc7e6/matplotlib-3.10.0.tar.gz - pypi: https://files.pythonhosted.org/packages/6a/b7/9366ed44ced9b7ef357ab48c94205280276db9d7f064aa3012a97227e966/h5py-3.16.0-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/72/65/a4559d4ff4a210d2a26d7ca0712e4e738cbfc963135f86e8ae807ca420eb/pysam-0.24.0-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl @@ -525,7 +526,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7c/03/b8cdb625a21f710dfa11bbca1f48fb4057d2c0286975f8b415bf80942c99/matplotlib-3.11.0-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl @@ -3064,6 +3064,7 @@ packages: - twine ; extra == 'actions' - build ; extra == 'actions' - planemo ; extra == 'actions' + - matplotlib==3.10 ; extra == 'actions' requires_python: '>3.9' - pypi: https://files.pythonhosted.org/packages/00/01/4001033457f25ecdc2b1ffd513ca0b76200b9ea009dd64f6c1aad2dde133/boltons-26.0.0-py3-none-any.whl name: boltons @@ -3772,6 +3773,25 @@ packages: - skia-pathops>=0.5.0 ; extra == 'all' - uharfbuzz>=0.45.0 ; extra == 'all' requires_python: '>=3.10' +- pypi: https://files.pythonhosted.org/packages/44/c7/6b2d8cb7cc251d53c976799cacd3200add56351c175ba89ab9cbd7c1e68a/matplotlib-3.10.0-cp312-cp312-macosx_10_13_x86_64.whl + name: matplotlib + version: 3.10.0 + sha256: 4659665bc7c9b58f8c00317c3c2a299f7f258eeae5a5d56b4c64226fca2f7c59 + requires_dist: + - contourpy>=1.0.1 + - cycler>=0.10 + - fonttools>=4.22.0 + - kiwisolver>=1.3.1 + - numpy>=1.23 + - packaging>=20.0 + - pillow>=8 + - pyparsing>=2.3.1 + - python-dateutil>=2.7 + - meson-python>=0.13.1,<0.17.0 ; extra == 'dev' + - pybind11>=2.13.2,!=2.13.3 ; extra == 'dev' + - setuptools-scm>=7 ; extra == 'dev' + - setuptools>=64 ; extra == 'dev' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/46/3b/9dedd2e35cebcd4eb3539514b5ac674fd45654404839e6f9eff6e25d67c7/py2bit-1.0.1.tar.gz name: py2bit version: 1.0.1 @@ -4154,6 +4174,25 @@ packages: - xlsxwriter>=3.2.0 ; extra == 'all' - zstandard>=0.23.0 ; extra == 'all' requires_python: '>=3.11' +- pypi: https://files.pythonhosted.org/packages/68/dd/fa2e1a45fce2d09f4aea3cee169760e672c8262325aa5796c49d543dc7e6/matplotlib-3.10.0.tar.gz + name: matplotlib + version: 3.10.0 + sha256: b886d02a581b96704c9d1ffe55709e49b4d2d52709ccebc4be42db856e511278 + requires_dist: + - contourpy>=1.0.1 + - cycler>=0.10 + - fonttools>=4.22.0 + - kiwisolver>=1.3.1 + - numpy>=1.23 + - packaging>=20.0 + - pillow>=8 + - pyparsing>=2.3.1 + - python-dateutil>=2.7 + - meson-python>=0.13.1,<0.17.0 ; extra == 'dev' + - pybind11>=2.13.2,!=2.13.3 ; extra == 'dev' + - setuptools-scm>=7 ; extra == 'dev' + - setuptools>=64 ; extra == 'dev' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/6a/19/ca10ead60b0acc80b2b833c2c4a4f2ff753d0f58b811f70d911c7e94a25c/scipy-1.18.0-cp312-cp312-macosx_10_15_x86_64.whl name: scipy version: 1.18.0 @@ -4421,21 +4460,6 @@ packages: version: 1.5.3 sha256: 5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713 requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/7c/03/b8cdb625a21f710dfa11bbca1f48fb4057d2c0286975f8b415bf80942c99/matplotlib-3.11.0-cp314-cp314-macosx_11_0_arm64.whl - name: matplotlib - version: 3.11.0 - sha256: 25c2e5455efd8d99f41fb79871a31feb7d301569642e332ec58d72cfe9282bc3 - requires_dist: - - contourpy>=1.0.1 - - cycler>=0.10 - - fonttools>=4.22.0 - - kiwisolver>=1.3.1 - - numpy>=1.25 - - packaging>=20.0 - - pillow>=9 - - pyparsing>=3 - - python-dateutil>=2.7 - requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl name: pydot version: 4.0.1 @@ -4695,21 +4719,6 @@ packages: - pyyaml - backports-strenum ; python_full_version < '3.11' requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/94/95/7f522393c88313336b20d70fc849555757b2e5febc22b83b3a3f0fd4bce9/matplotlib-3.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - name: matplotlib - version: 3.11.0 - sha256: be5f93a1d21981bfb802ded0d77a0caa92d4342a47d45754fac77e314a506344 - requires_dist: - - contourpy>=1.0.1 - - cycler>=0.10 - - fonttools>=4.22.0 - - kiwisolver>=1.3.1 - - numpy>=1.25 - - packaging>=20.0 - - pillow>=9 - - pyparsing>=3 - - python-dateutil>=2.7 - requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/96/9a/982e48afcffcd727a9144506720ffd4224b6b7e355c98641866f38b7c043/jaraco_functools-4.5.0-py3-none-any.whl name: jaraco-functools version: 4.5.0 @@ -4933,6 +4942,25 @@ packages: - humanfriendly>=9.1 - capturer>=2.4 ; extra == 'cron' requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' +- pypi: https://files.pythonhosted.org/packages/a7/b2/d872fc3d753516870d520595ddd8ce4dd44fa797a240999f125f58521ad7/matplotlib-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl + name: matplotlib + version: 3.10.0 + sha256: 9b0558bae37f154fffda54d779a592bc97ca8b4701f1c710055b609a3bac44c8 + requires_dist: + - contourpy>=1.0.1 + - cycler>=0.10 + - fonttools>=4.22.0 + - kiwisolver>=1.3.1 + - numpy>=1.23 + - packaging>=20.0 + - pillow>=8 + - pyparsing>=2.3.1 + - python-dateutil>=2.7 + - meson-python>=0.13.1,<0.17.0 ; extra == 'dev' + - pybind11>=2.13.2,!=2.13.3 ; extra == 'dev' + - setuptools-scm>=7 ; extra == 'dev' + - setuptools>=64 ; extra == 'dev' + requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/ac/1f/d10d6ad23c86c62d90d867d0506881a392ec6ef06885b858eaab868dd356/deeptoolsintervals-0.1.9.tar.gz name: deeptoolsintervals version: 0.1.9 @@ -5481,21 +5509,6 @@ packages: - typing-extensions - pytest ; extra == 'test' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/da/17/f5276b496c61477a6c4fc5e7401f4bfe1c2e5ef7c6cd67896f2ade3809cb/matplotlib-3.11.0-cp312-cp312-macosx_10_13_x86_64.whl - name: matplotlib - version: 3.11.0 - sha256: 06b5872e9cf11adc8f589ded3ce11bc3e1061ad498259664fabc1f6615beb918 - requires_dist: - - contourpy>=1.0.1 - - cycler>=0.10 - - fonttools>=4.22.0 - - kiwisolver>=1.3.1 - - numpy>=1.25 - - packaging>=20.0 - - pillow>=9 - - pyparsing>=3 - - python-dateutil>=2.7 - requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl name: future version: 1.0.0 diff --git a/pyproject.toml b/pyproject.toml index e6135bf295..2e63155ba7 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -53,7 +53,8 @@ actions = [ "pytest", "twine", "build", - "planemo" + "planemo", + "matplotlib == 3.10", # pin matplotlib version to avoid plots changing in pytests (font size defaults etc.) ] [project.urls] homepage = "https://pypi.python.org/pypi/deepTools/" @@ -98,9 +99,6 @@ platforms = ["linux-64", "osx-arm64", "osx-64"] [tool.pixi.dependencies] libclang = "<22" clangdev = "<22" -#compilers = "*" -#gcc = "*" -#gxx = "*" htslib = "<=1.19" zlib = "*" [tool.pixi.pypi-dependencies] From 5a8ef7d1d69b1bc91393594bf9a03d7300567857 Mon Sep 17 00:00:00 2001 From: WardDeb Date: Tue, 23 Jun 2026 09:35:37 +0200 Subject: [PATCH 07/19] pin mpl in action extra --- pixi.lock | 110 ++++++++++++++++++++++--------------------------- pyproject.toml | 2 +- 2 files changed, 50 insertions(+), 62 deletions(-) diff --git a/pixi.lock b/pixi.lock index 7836598766..a1fdc4e40e 100644 --- a/pixi.lock +++ b/pixi.lock @@ -159,6 +159,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/8e/b4/23f8462c72e514563f5fd949e38a9e45bcc86fb59bf4b88240ba0ef02026/cwl_utils-0.42-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/8e/fb/2c4c618185be2bda327f9dacd16b3122cc938809f19df7be840595d0e584/prov-1.5.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/92/7a/8017d45e513c720ee82bf062b1be3ae39087db3024571b4a00773e17c235/galaxy_job_config_init-0.1.4-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/94/95/7f522393c88313336b20d70fc849555757b2e5febc22b83b3a3f0fd4bce9/matplotlib-3.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/96/9a/982e48afcffcd727a9144506720ffd4224b6b7e355c98641866f38b7c043/jaraco_functools-4.5.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/97/1b/295bf2fa3e740131778065e5ffa2c481f0e7210182d408e9a2c244ff5b0c/readme_renderer-45.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/99/55/db07de81b5c630da5cbf5c7df646580ca26dfaefa593667fc6f2fe016d2e/tabulate-0.10.0-py3-none-any.whl @@ -170,7 +171,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/9f/56/13ab06b4f93ca7cac71078fbe37fcea175d3216f31f85c3168a6bbd0bb9a/flake8-7.3.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a0/f4/c67b0b3f1b9245e8d266f0f112c500d50e5b4e83cb6f3b71b6528104182a/requests-2.34.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/a7/06/3d6badcf13db419e25b07041d9c7b4a2c331d3f4e7134445ec5df57714cd/coloredlogs-15.0.1-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/a7/b2/d872fc3d753516870d520595ddd8ce4dd44fa797a240999f125f58521ad7/matplotlib-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/ac/1f/d10d6ad23c86c62d90d867d0506881a392ec6ef06885b858eaab868dd356/deeptoolsintervals-0.1.9.tar.gz - pypi: https://files.pythonhosted.org/packages/ac/3e/61d11b779e4e83ee8661439af070f6f138060cd41f0346a0a70432f9e55c/cwl_upgrader-1.2.15-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/b2/a3/e137168c9c44d18eff0376253da9f1e9234d0239e0ee230d2fee6cea8e55/jeepney-0.9.0-py3-none-any.whl @@ -300,7 +300,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/3f/51/d4db610ef29373b879047326cbf6fa98b6c1969d6f6dc423279de2b1be2c/requests_toolbelt-1.0.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/42/77/de194443bf38daed9452139e960c632b0ef9f9a5dd9ce605fdf18ca9f1b1/id-1.6.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/44/c7/6b2d8cb7cc251d53c976799cacd3200add56351c175ba89ab9cbd7c1e68a/matplotlib-3.10.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/46/3b/9dedd2e35cebcd4eb3539514b5ac674fd45654404839e6f9eff6e25d67c7/py2bit-1.0.1.tar.gz - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl @@ -375,6 +374,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/d7/27/a58ddaf8c588a3ef080db9d0b7e0b97215cee3a45df74f3a94dbbf5c893a/pycodestyle-2.14.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/d7/a5/bbbc3b74a94fbdbd7915e7ad030f16539bfdc1362f7e9003b594f0537950/glob2-0.7.tar.gz - pypi: https://files.pythonhosted.org/packages/d9/b0/1e05aa4e0124cbc6509641353f513fc29c2b5e5197dbd5dfade810a521cf/galaxy_tool_util_models-26.0.1-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/da/17/f5276b496c61477a6c4fc5e7401f4bfe1c2e5ef7c6cd67896f2ade3809cb/matplotlib-3.11.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/dc/9b/47798a6c91d8bdb567fe2698fe81e0c6b7cb7ef4d13da4114b41d239f65d/typing_inspection-0.4.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/df/b2/87e62e8c3e2f4b32e5fe99e0b86d576da1312593b39f47d8ceef365e95ed/packaging-26.2-py3-none-any.whl @@ -516,7 +516,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/63/b1/4260d67d6bd85e58a66b72d54ce15d5de789b6f3870cc6bedf8ff9667401/propcache-0.5.2-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/68/10/bf2d6738d72748b961a3751ab89522d58c54efc36a8e1a12161216cd45cf/pandas-3.0.3-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/68/dd/fa2e1a45fce2d09f4aea3cee169760e672c8262325aa5796c49d543dc7e6/matplotlib-3.10.0.tar.gz - pypi: https://files.pythonhosted.org/packages/6a/b7/9366ed44ced9b7ef357ab48c94205280276db9d7f064aa3012a97227e966/h5py-3.16.0-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/72/65/a4559d4ff4a210d2a26d7ca0712e4e738cbfc963135f86e8ae807ca420eb/pysam-0.24.0-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl @@ -526,6 +525,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl + - pypi: https://files.pythonhosted.org/packages/7c/03/b8cdb625a21f710dfa11bbca1f48fb4057d2c0286975f8b415bf80942c99/matplotlib-3.11.0-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl @@ -3064,7 +3064,7 @@ packages: - twine ; extra == 'actions' - build ; extra == 'actions' - planemo ; extra == 'actions' - - matplotlib==3.10 ; extra == 'actions' + - matplotlib==3.11 ; extra == 'actions' requires_python: '>3.9' - pypi: https://files.pythonhosted.org/packages/00/01/4001033457f25ecdc2b1ffd513ca0b76200b9ea009dd64f6c1aad2dde133/boltons-26.0.0-py3-none-any.whl name: boltons @@ -3773,25 +3773,6 @@ packages: - skia-pathops>=0.5.0 ; extra == 'all' - uharfbuzz>=0.45.0 ; extra == 'all' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/44/c7/6b2d8cb7cc251d53c976799cacd3200add56351c175ba89ab9cbd7c1e68a/matplotlib-3.10.0-cp312-cp312-macosx_10_13_x86_64.whl - name: matplotlib - version: 3.10.0 - sha256: 4659665bc7c9b58f8c00317c3c2a299f7f258eeae5a5d56b4c64226fca2f7c59 - requires_dist: - - contourpy>=1.0.1 - - cycler>=0.10 - - fonttools>=4.22.0 - - kiwisolver>=1.3.1 - - numpy>=1.23 - - packaging>=20.0 - - pillow>=8 - - pyparsing>=2.3.1 - - python-dateutil>=2.7 - - meson-python>=0.13.1,<0.17.0 ; extra == 'dev' - - pybind11>=2.13.2,!=2.13.3 ; extra == 'dev' - - setuptools-scm>=7 ; extra == 'dev' - - setuptools>=64 ; extra == 'dev' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/46/3b/9dedd2e35cebcd4eb3539514b5ac674fd45654404839e6f9eff6e25d67c7/py2bit-1.0.1.tar.gz name: py2bit version: 1.0.1 @@ -4174,25 +4155,6 @@ packages: - xlsxwriter>=3.2.0 ; extra == 'all' - zstandard>=0.23.0 ; extra == 'all' requires_python: '>=3.11' -- pypi: https://files.pythonhosted.org/packages/68/dd/fa2e1a45fce2d09f4aea3cee169760e672c8262325aa5796c49d543dc7e6/matplotlib-3.10.0.tar.gz - name: matplotlib - version: 3.10.0 - sha256: b886d02a581b96704c9d1ffe55709e49b4d2d52709ccebc4be42db856e511278 - requires_dist: - - contourpy>=1.0.1 - - cycler>=0.10 - - fonttools>=4.22.0 - - kiwisolver>=1.3.1 - - numpy>=1.23 - - packaging>=20.0 - - pillow>=8 - - pyparsing>=2.3.1 - - python-dateutil>=2.7 - - meson-python>=0.13.1,<0.17.0 ; extra == 'dev' - - pybind11>=2.13.2,!=2.13.3 ; extra == 'dev' - - setuptools-scm>=7 ; extra == 'dev' - - setuptools>=64 ; extra == 'dev' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/6a/19/ca10ead60b0acc80b2b833c2c4a4f2ff753d0f58b811f70d911c7e94a25c/scipy-1.18.0-cp312-cp312-macosx_10_15_x86_64.whl name: scipy version: 1.18.0 @@ -4460,6 +4422,21 @@ packages: version: 1.5.3 sha256: 5fc3c5039fc5ca8c0276333a188bbd59d6b7ab37fe6632daa76bc7f9ec18e713 requires_python: '>=3.9' +- pypi: https://files.pythonhosted.org/packages/7c/03/b8cdb625a21f710dfa11bbca1f48fb4057d2c0286975f8b415bf80942c99/matplotlib-3.11.0-cp314-cp314-macosx_11_0_arm64.whl + name: matplotlib + version: 3.11.0 + sha256: 25c2e5455efd8d99f41fb79871a31feb7d301569642e332ec58d72cfe9282bc3 + requires_dist: + - contourpy>=1.0.1 + - cycler>=0.10 + - fonttools>=4.22.0 + - kiwisolver>=1.3.1 + - numpy>=1.25 + - packaging>=20.0 + - pillow>=9 + - pyparsing>=3 + - python-dateutil>=2.7 + requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl name: pydot version: 4.0.1 @@ -4719,6 +4696,21 @@ packages: - pyyaml - backports-strenum ; python_full_version < '3.11' requires_python: '>=3.7' +- pypi: https://files.pythonhosted.org/packages/94/95/7f522393c88313336b20d70fc849555757b2e5febc22b83b3a3f0fd4bce9/matplotlib-3.11.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl + name: matplotlib + version: 3.11.0 + sha256: be5f93a1d21981bfb802ded0d77a0caa92d4342a47d45754fac77e314a506344 + requires_dist: + - contourpy>=1.0.1 + - cycler>=0.10 + - fonttools>=4.22.0 + - kiwisolver>=1.3.1 + - numpy>=1.25 + - packaging>=20.0 + - pillow>=9 + - pyparsing>=3 + - python-dateutil>=2.7 + requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/96/9a/982e48afcffcd727a9144506720ffd4224b6b7e355c98641866f38b7c043/jaraco_functools-4.5.0-py3-none-any.whl name: jaraco-functools version: 4.5.0 @@ -4942,25 +4934,6 @@ packages: - humanfriendly>=9.1 - capturer>=2.4 ; extra == 'cron' requires_python: '>=2.7,!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*' -- pypi: https://files.pythonhosted.org/packages/a7/b2/d872fc3d753516870d520595ddd8ce4dd44fa797a240999f125f58521ad7/matplotlib-3.10.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - name: matplotlib - version: 3.10.0 - sha256: 9b0558bae37f154fffda54d779a592bc97ca8b4701f1c710055b609a3bac44c8 - requires_dist: - - contourpy>=1.0.1 - - cycler>=0.10 - - fonttools>=4.22.0 - - kiwisolver>=1.3.1 - - numpy>=1.23 - - packaging>=20.0 - - pillow>=8 - - pyparsing>=2.3.1 - - python-dateutil>=2.7 - - meson-python>=0.13.1,<0.17.0 ; extra == 'dev' - - pybind11>=2.13.2,!=2.13.3 ; extra == 'dev' - - setuptools-scm>=7 ; extra == 'dev' - - setuptools>=64 ; extra == 'dev' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/ac/1f/d10d6ad23c86c62d90d867d0506881a392ec6ef06885b858eaab868dd356/deeptoolsintervals-0.1.9.tar.gz name: deeptoolsintervals version: 0.1.9 @@ -5509,6 +5482,21 @@ packages: - typing-extensions - pytest ; extra == 'test' requires_python: '>=3.8' +- pypi: https://files.pythonhosted.org/packages/da/17/f5276b496c61477a6c4fc5e7401f4bfe1c2e5ef7c6cd67896f2ade3809cb/matplotlib-3.11.0-cp312-cp312-macosx_10_13_x86_64.whl + name: matplotlib + version: 3.11.0 + sha256: 06b5872e9cf11adc8f589ded3ce11bc3e1061ad498259664fabc1f6615beb918 + requires_dist: + - contourpy>=1.0.1 + - cycler>=0.10 + - fonttools>=4.22.0 + - kiwisolver>=1.3.1 + - numpy>=1.25 + - packaging>=20.0 + - pillow>=9 + - pyparsing>=3 + - python-dateutil>=2.7 + requires_python: '>=3.11' - pypi: https://files.pythonhosted.org/packages/da/71/ae30dadffc90b9006d77af76b393cb9dfbfc9629f339fc1574a1c52e6806/future-1.0.0-py3-none-any.whl name: future version: 1.0.0 diff --git a/pyproject.toml b/pyproject.toml index 2e63155ba7..19f230a8c4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -54,7 +54,7 @@ actions = [ "twine", "build", "planemo", - "matplotlib == 3.10", # pin matplotlib version to avoid plots changing in pytests (font size defaults etc.) + "matplotlib == 3.11", # pin matplotlib version to avoid plots changing in pytests (font size defaults etc.) ] [project.urls] homepage = "https://pypi.python.org/pypi/deepTools/" From 8c254c72793da77245c402733b7066b542b86d5f Mon Sep 17 00:00:00 2001 From: WardDeb Date: Tue, 23 Jun 2026 09:39:56 +0200 Subject: [PATCH 08/19] minimal python 3.12 --- .github/workflows/test_pytest.yml | 4 ++-- pyproject.toml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/test_pytest.yml b/.github/workflows/test_pytest.yml index 404e1fa093..e4c624e909 100644 --- a/.github/workflows/test_pytest.yml +++ b/.github/workflows/test_pytest.yml @@ -41,7 +41,7 @@ jobs: runs-on: ubuntu-latest strategy: matrix: - python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] + python-version: ["3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v7 - uses: actions/setup-python@v6 @@ -73,7 +73,7 @@ jobs: runs-on: macOS-latest strategy: matrix: - python-version: ["3.10", "3.11", "3.12", "3.13", "3.14"] + python-version: ["3.12", "3.13", "3.14"] steps: - uses: actions/checkout@v7 - uses: actions/setup-python@v6 diff --git a/pyproject.toml b/pyproject.toml index 19f230a8c4..b63f4a15a4 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -26,7 +26,7 @@ authors = [ {name="Thomas Manke"}, {email="bioinfo-core@ie-freiburg.mpg.de"} ] -requires-python = "> 3.9" +requires-python = ">= 3.12" dependencies = [ "numpy >= 2.0", "scipy >= 1.13", From 435067b3ba99da5ae5e998f311772297fa44d11d Mon Sep 17 00:00:00 2001 From: WardDeb Date: Tue, 23 Jun 2026 10:25:36 +0200 Subject: [PATCH 09/19] simplify dependencies --- Cargo.toml | 2 +- pixi.lock | 174 +------------------------------------------------ pyproject.toml | 1 - 3 files changed, 2 insertions(+), 175 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 80c33a3d36..67ef0af27c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,9 +13,9 @@ openssl-sys = { version = "*", features = ["vendored"] } pyo3 = { version = "*", features = ["extension-module"] } rust-htslib = "*" rayon = "*" +tokio = "*" itertools = "*" bigtools = "*" -tokio = "*" flate2 = "*" tempfile = "*" ndarray = "*" diff --git a/pixi.lock b/pixi.lock index a1fdc4e40e..13d75d908f 100644 --- a/pixi.lock +++ b/pixi.lock @@ -77,9 +77,7 @@ environments: - pypi: https://files.pythonhosted.org/packages/00/01/4001033457f25ecdc2b1ffd513ca0b76200b9ea009dd64f6c1aad2dde133/boltons-26.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/02/08/9c41fb51ab5b43eb21674aff13df270e8ba6c4b29c8624e328dc7a9482af/distlib-0.4.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/08/f6/af32e23e563971ffb0fb86be52bc5be5c2c118858ffc119bf6a9039b173d/lxml-6.1.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0b/35/1cceccc5fcb50fa2ed53e2aa278cd032f3902682a73e763fb1ac3be8e6fa/rich_argparse-1.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/fe/6bea5c9162869c5beba5d9c8abbed835ec85bf1ec1fba05a3822325c45f3/build-1.5.0-py3-none-any.whl @@ -97,13 +95,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/20/9c/d445818389df371f56d141d881153ba23183c4735a03f7356ffb43f7757d/aiohttp-3.14.1-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/7f/a946aa4f8752b37102b41e64dca18a1976ac705c3a0d1dfe74d820a02552/mistune-3.2.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/02/3623e6169bed617ed1e2d372f7c69f92ec28d54c4dfc997055c8578ec148/virtualenv-21.5.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/8e/b94ec25fcd4384de2a1f5e0403284f005ec743c04bafdb6698c851df5c6d/tuspy-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/37/aa/111610d8bf5b1bb7a295a048fc648cec346347a8b0be5881defd2d1b4a52/oyaml-1.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3a/7a/882d99539b19b1490cac5d77c67338d126e4122c8276bf640e411650c830/twine-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3c/2e/8d0c2ab90a8c1d9a24f0399058ab8519a3279d1bd4289511d74e909f060e/markupsafe-3.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl @@ -114,18 +110,13 @@ environments: - pypi: https://files.pythonhosted.org/packages/43/e3/fdc657359e919462369869f1c9f0e973f353f9a9ee295a39b1fea8ee1a77/pillow-12.2.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/4b/f8/d0118a2f5f23b02cd166fa385c60f9b0d4f9194f574e2b31cef350ad7223/charset_normalizer-3.4.7-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/78/ddd0affa881b1e09bc59f11ab829a7904f4bca29d25c34cbb9395e8e0061/allure_python_commons-2.16.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/55/0f/e7f1ff3a1cabc6c4486a7ee1b0506aedf2f5f8329760ac1f4e8032feef2b/pysam-0.24.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/58/9d/40b6267367182187139a4000b82a3b287d84d745bccd808e75d916920e9d/bleach-6.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5b/67/314f6151bad77a93d751978a344033e1fc890822f05f0416079338e34231/nh3-0.3.6-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5f/53/fb7122b71361a0d121b669dcf3d31244ef75badbbb724af388948de543e2/imagesize-2.0.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/5f/fc/a7bf5b6e4e617b45f90f2d9d2a68519c249c81dd4fc2658c7a2a61c4f4b7/aiohappyeyeballs-2.6.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/62/5e/3a6a3e90f35cea3853c45e5d5fb9b7192ce4384616f932cf7591298ab6e1/numpydoc-1.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/65/b6/09b01cdbc15224e2850365192d17b7bdebb8bdbd8780ed221fcdf0d9a515/pandas-3.0.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl @@ -134,10 +125,8 @@ environments: - pypi: https://files.pythonhosted.org/packages/6b/67/6ea73b2173bcb1abe3a947fbd090cf96ee1b0a75f3f690e8902dc8ffdbfa/py2bit-1.0.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/6b/b2/d17b2722c636d64b4e77ddc68d8d0625719d39f94021be8719a218af4c0a/backports_zstd-1.6.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/6c/c2/63fdda36c56437eeb44aaf9493c8bcd62ce230ab1598924fc626ffbfa943/scikit_learn-1.9.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/77/c7/2342da9830e3e9d4870305ca5d2091d2a83284f2953079b7bdd3b5e029d8/fonttools-4.63.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/78/17/853354204e1ca022d6b7d011ca7f3206c4f8faa3cc743e92609b49c1d83f/tinydb-4.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl @@ -146,7 +135,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/7a/f6/51d8a97116de23c9280c1fa3b813bc088f8571ce5936ba84af1ecf13ed45/pybigwig-0.3.25-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl - pypi: https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/81/59/208f71d70ddc6184f79b8c6d87d46eb7d7b12c19186a817dec9c9c3f3693/tifffile-2026.6.1-py3-none-any.whl @@ -184,7 +172,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/bb/6b/f4a3d0637692c49da8ef99d72d52526f92e0a8d6ac4f0ca9f31441b9d9ea/numpy-2.5.0-cp312-cp312-manylinux_2_27_x86_64.manylinux_2_28_x86_64.whl - pypi: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c4/13/680c54afe3e65767bed7ec1a15571e1a2f1257128733851ade24abcefbcc/kiwisolver-1.5.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl @@ -265,8 +252,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/00/01/4001033457f25ecdc2b1ffd513ca0b76200b9ea009dd64f6c1aad2dde133/boltons-26.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/02/08/9c41fb51ab5b43eb21674aff13df270e8ba6c4b29c8624e328dc7a9482af/distlib-0.4.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0b/35/1cceccc5fcb50fa2ed53e2aa278cd032f3902682a73e763fb1ac3be8e6fa/rich_argparse-1.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/eb/4fc8d0a7110eb5fc9cc161723a34a8a6c200ce3b4fbf681bc86feee22308/charset_normalizer-3.4.7-cp312-cp312-macosx_10_13_universal2.whl @@ -286,13 +271,11 @@ environments: - pypi: https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/f1/392f8c5bfc16f66a0d2d41561c01627c228fe7ed2a0d056ef11315042570/pandas-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2a/7f/a946aa4f8752b37102b41e64dca18a1976ac705c3a0d1dfe74d820a02552/mistune-3.2.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/02/3623e6169bed617ed1e2d372f7c69f92ec28d54c4dfc997055c8578ec148/virtualenv-21.5.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/8e/b94ec25fcd4384de2a1f5e0403284f005ec743c04bafdb6698c851df5c6d/tuspy-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/37/aa/111610d8bf5b1bb7a295a048fc648cec346347a8b0be5881defd2d1b4a52/oyaml-1.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3a/7a/882d99539b19b1490cac5d77c67338d126e4122c8276bf640e411650c830/twine-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3c/6b/72e5f22f3c5069bd950f107110cd17468cdb43abda3c55b48c4013e7b667/bioblend-1.9.0-py3-none-any.whl @@ -302,30 +285,22 @@ environments: - pypi: https://files.pythonhosted.org/packages/44/a0/c815bea63117fa63e4e1c01f8a1110d2112fa003f838e6467094ec2432ce/fonttools-4.63.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/46/3b/9dedd2e35cebcd4eb3539514b5ac674fd45654404839e6f9eff6e25d67c7/py2bit-1.0.1.tar.gz - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/78/ddd0affa881b1e09bc59f11ab829a7904f4bca29d25c34cbb9395e8e0061/allure_python_commons-2.16.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/58/9d/40b6267367182187139a4000b82a3b287d84d745bccd808e75d916920e9d/bleach-6.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/58/be/7482c8a5ebebbc6470b3eb791812fff7d5e0216c2be3827b30b8bb6603ed/pillow-12.2.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/5a/72/147da192e38635ada20e0a2e1a51cf8823d2119ce8883f7053879c2199b5/markupsafe-3.0.3-cp312-cp312-macosx_10_13_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5f/53/fb7122b71361a0d121b669dcf3d31244ef75badbbb724af388948de543e2/imagesize-2.0.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5f/fc/a7bf5b6e4e617b45f90f2d9d2a68519c249c81dd4fc2658c7a2a61c4f4b7/aiohappyeyeballs-2.6.2-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/62/5e/3a6a3e90f35cea3853c45e5d5fb9b7192ce4384616f932cf7591298ab6e1/numpydoc-1.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/64/80/4f6e318ee2a7c0750ed724fa33a4bdf1eacdc5a39a7a24e818a773cd91af/frozenlist-1.8.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/6a/19/ca10ead60b0acc80b2b833c2c4a4f2ff753d0f58b811f70d911c7e94a25c/scipy-1.18.0-cp312-cp312-macosx_10_15_x86_64.whl - - pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/78/17/853354204e1ca022d6b7d011ca7f3206c4f8faa3cc743e92609b49c1d83f/tinydb-4.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/81/59/208f71d70ddc6184f79b8c6d87d46eb7d7b12c19186a817dec9c9c3f3693/tifffile-2026.6.1-py3-none-any.whl @@ -361,7 +336,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/bf/1d/fcefb70922ea2268a8971d8e5874d9a8218644200fb8465f1dcad55e6851/yarl-1.24.2-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/bf/d9/405320f8077e8e1c5c4bd6adc45e1e6edf6d727b6da7f2e2533cf58bff71/kiwisolver-1.5.0-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c2/82/280619e0bd7bf2454987e19282616e84762255dd9c8468f62382e8c191f1/aiohttp-3.14.1-cp312-cp312-macosx_10_13_x86_64.whl - pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c8/c0/5d4119dba94093bbafede500d3defd2f5eab7897732998c04b54021e530b/h5py-3.16.0-cp312-cp312-macosx_10_13_x86_64.whl @@ -465,8 +439,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/00/01/4001033457f25ecdc2b1ffd513ca0b76200b9ea009dd64f6c1aad2dde133/boltons-26.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/02/08/9c41fb51ab5b43eb21674aff13df270e8ba6c4b29c8624e328dc7a9482af/distlib-0.4.3-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/02/10/5da547df7a391dcde17f59520a231527b8571e6f46fc8efb02ccb370ab12/docutils-0.22.4-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0b/35/1cceccc5fcb50fa2ed53e2aa278cd032f3902682a73e763fb1ac3be8e6fa/rich_argparse-1.8.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/0d/fe/6bea5c9162869c5beba5d9c8abbed835ec85bf1ec1fba05a3822325c45f3/build-1.5.0-py3-none-any.whl @@ -481,14 +453,12 @@ environments: - pypi: https://files.pythonhosted.org/packages/1e/5e/d4e9f1a599fb8e573b7b87160658329fbf28d19eac2718f51fc3def3aa5a/idna-3.18-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/24/25/1de2678b631f5a49215c6c96fff41ba892b0a34df68d6d80292b1b48aa7f/pytest-9.1.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/27/d2/23d25e3f247b328be58d04a4c9f894178a0d1eda7d42867cfb388adaf416/fonttools-4.63.0-cp314-cp314-macosx_10_15_universal2.whl - pypi: https://files.pythonhosted.org/packages/2a/7f/a946aa4f8752b37102b41e64dca18a1976ac705c3a0d1dfe74d820a02552/mistune-3.2.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/2c/02/3623e6169bed617ed1e2d372f7c69f92ec28d54c4dfc997055c8578ec148/virtualenv-21.5.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/8e/b94ec25fcd4384de2a1f5e0403284f005ec743c04bafdb6698c851df5c6d/tuspy-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/32/d5/f9a850d79b0851d1d4ef6456097579a9005b31fea68726a4ae5f2d82ddd9/threadpoolctl-3.6.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/37/aa/111610d8bf5b1bb7a295a048fc648cec346347a8b0be5881defd2d1b4a52/oyaml-1.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3a/7a/882d99539b19b1490cac5d77c67338d126e4122c8276bf640e411650c830/twine-6.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl @@ -500,34 +470,26 @@ environments: - pypi: https://files.pythonhosted.org/packages/46/3b/9dedd2e35cebcd4eb3539514b5ac674fd45654404839e6f9eff6e25d67c7/py2bit-1.0.1.tar.gz - pypi: https://files.pythonhosted.org/packages/48/ca/36339329c4604adbcc99c899b7eb1ce1a555c499b6a6860757dc9bfed36d/narwhals-2.22.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/49/b2/97980f3ad4fae37dd7fe31626e2bf75fbf8bdf5d303950ec1fab39a12da8/kiwisolver-1.5.0-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/53/78/ddd0affa881b1e09bc59f11ab829a7904f4bca29d25c34cbb9395e8e0061/allure_python_commons-2.16.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/58/9d/40b6267367182187139a4000b82a3b287d84d745bccd808e75d916920e9d/bleach-6.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/5d/39/b72e168daf9c00fb20c9fc996d00437ccecdef3102387775d29d7a62576d/numpy-2.5.0-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/5f/53/fb7122b71361a0d121b669dcf3d31244ef75badbbb724af388948de543e2/imagesize-2.0.0-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/5f/fc/a7bf5b6e4e617b45f90f2d9d2a68519c249c81dd4fc2658c7a2a61c4f4b7/aiohappyeyeballs-2.6.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/60/5c/15b4c7a0182f75ffa90751958ba36a9c01cafee367d49a3edc10ed140b01/msgpack-1.2.1-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/62/5e/3a6a3e90f35cea3853c45e5d5fb9b7192ce4384616f932cf7591298ab6e1/numpydoc-1.10.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/63/b1/4260d67d6bd85e58a66b72d54ce15d5de789b6f3870cc6bedf8ff9667401/propcache-0.5.2-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/64/b4/17d4b0b2a2dc85a6df63d1157e028ed19f90d4cd97c36717afef2bc2f395/attrs-26.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/68/10/bf2d6738d72748b961a3751ab89522d58c54efc36a8e1a12161216cd45cf/pandas-3.0.3-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/6a/b7/9366ed44ced9b7ef357ab48c94205280276db9d7f064aa3012a97227e966/h5py-3.16.0-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/72/65/a4559d4ff4a210d2a26d7ca0712e4e738cbfc963135f86e8ae807ca420eb/pysam-0.24.0-cp314-cp314-macosx_11_0_arm64.whl - - pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/78/17/853354204e1ca022d6b7d011ca7f3206c4f8faa3cc743e92609b49c1d83f/tinydb-4.8.2-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/78/b6/6307fbef88d9b5ee7421e68d78a9f162e0da4900bc5f5793f6d3d0e34fb8/annotated_types-0.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/79/7b/2c79738432f5c924bef5071f933bcc9efd0473bac3b4aa584a6f7c1c8df8/mypy_extensions-1.1.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7b/91/984aca2ec129e2757d1e4e3c81c3fcda9d0f85b74670a094cc443d9ee949/joblib-1.5.3-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7c/03/b8cdb625a21f710dfa11bbca1f48fb4057d2c0286975f8b415bf80942c99/matplotlib-3.11.0-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/7e/32/a7125fb28c4261a627f999d5fb4afff25b523800faed2c30979949d6facd/pydot-4.0.1-py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/7f/66/b15ce62552d84bbfcec9a4873ab79d993a1dd4edb922cbfccae192bd5b5f/jaraco.classes-3.4.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl @@ -567,7 +529,6 @@ environments: - pypi: https://files.pythonhosted.org/packages/bd/24/12818598c362d7f300f18e74db45963dbcb85150324092410c8b49405e42/pyproject_hooks-1.2.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl - pypi: https://files.pythonhosted.org/packages/c2/2f/81d580a0fb83baeb066698975cb14a618bdbed7720678566f1b046a95fe8/pyflakes-3.4.0-py2.py3-none-any.whl - - pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/c7/0d/67e5b4109ea4a837e80daa87c2c696711955e40449a97e8926672534def2/click-8.4.1-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl - pypi: https://files.pythonhosted.org/packages/cc/2f/7229e91cfa37459622808002bec6eb019c7189bfc59788b3eaba5f273671/conda_package_streaming-0.13.0-py3-none-any.whl @@ -3052,7 +3013,6 @@ packages: - scipy>=1.13 - matplotlib>=3.9 - pysam>=0.23 - - numpydoc>=1.8 - pybigwig>=0.3 - py2bit>=0.3 - pandas>=2.2 @@ -3065,7 +3025,7 @@ packages: - build ; extra == 'actions' - planemo ; extra == 'actions' - matplotlib==3.11 ; extra == 'actions' - requires_python: '>3.9' + requires_python: '>=3.12' - pypi: https://files.pythonhosted.org/packages/00/01/4001033457f25ecdc2b1ffd513ca0b76200b9ea009dd64f6c1aad2dde133/boltons-26.0.0-py3-none-any.whl name: boltons version: 26.0.0 @@ -3080,11 +3040,6 @@ packages: version: 0.22.4 sha256: d0013f540772d1420576855455d050a2180186c91c15779301ac2ccb3eeb68de requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/04/54/6f679c435d28e0a568d8e8a7c0a93a09010818634c3c3907fc98d8983770/roman_numerals-4.1.0-py3-none-any.whl - name: roman-numerals - version: 4.1.0 - sha256: 647ba99caddc2cc1e55a51e4360689115551bf4476d90e8162cf8c345fe233c7 - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/08/f6/af32e23e563971ffb0fb86be52bc5be5c2c118858ffc119bf6a9039b173d/lxml-6.1.1-cp312-cp312-manylinux_2_26_x86_64.manylinux_2_28_x86_64.whl name: lxml version: 6.1.1 @@ -3095,18 +3050,6 @@ packages: - beautifulsoup4 ; extra == 'htmlsoup' - lxml-html-clean ; extra == 'html-clean' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/0a/7b/18a8c0bcec9182c05a0b3ec2a776bba4ead82750a55ff798e8d406dae604/sphinxcontrib_htmlhelp-2.1.0-py3-none-any.whl - name: sphinxcontrib-htmlhelp - version: 2.1.0 - sha256: 166759820b47002d22914d64a075ce08f4c46818e17cfc9470a9786b759b19f8 - requires_dist: - - ruff==0.5.5 ; extra == 'lint' - - mypy ; extra == 'lint' - - types-docutils ; extra == 'lint' - - sphinx>=5 ; extra == 'standalone' - - pytest ; extra == 'test' - - html5lib ; extra == 'test' - requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/0b/35/1cceccc5fcb50fa2ed53e2aa278cd032f3902682a73e763fb1ac3be8e6fa/rich_argparse-1.8.0-py3-none-any.whl name: rich-argparse version: 1.8.0 @@ -3452,18 +3395,6 @@ packages: version: 0.7.0 sha256: 6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e requires_python: '>=3.6' -- pypi: https://files.pythonhosted.org/packages/27/83/859ecdd180cacc13b1f7e857abf8582a64552ea7a061057a6c716e790fce/sphinxcontrib_qthelp-2.0.0-py3-none-any.whl - name: sphinxcontrib-qthelp - version: 2.0.0 - sha256: b18a828cdba941ccd6ee8445dbe72ffa3ef8cbe7505d8cd1fa0d42d3f2d5f3eb - requires_dist: - - ruff==0.5.5 ; extra == 'lint' - - mypy ; extra == 'lint' - - types-docutils ; extra == 'lint' - - sphinx>=5 ; extra == 'standalone' - - pytest ; extra == 'test' - - defusedxml>=0.7.1 ; extra == 'test' - requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/27/d2/23d25e3f247b328be58d04a4c9f894178a0d1eda7d42867cfb388adaf416/fonttools-4.63.0-cp314-cp314-macosx_10_15_universal2.whl name: fonttools version: 4.63.0 @@ -3544,17 +3475,6 @@ packages: version: 3.6.0 sha256: 43a0b8fd5a2928500110039e43a5eed8480b918967083ea48dc3ab9f13c4a7fb requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/35/7a/987e583882f985fe4d7323774889ec58049171828b58c2217e7f79cdf44e/sphinxcontrib_devhelp-2.0.0-py3-none-any.whl - name: sphinxcontrib-devhelp - version: 2.0.0 - sha256: aefb8b83854e4b0998877524d1029fd3e6879210422ee3780459e28a1f03a8a2 - requires_dist: - - ruff==0.5.5 ; extra == 'lint' - - mypy ; extra == 'lint' - - types-docutils ; extra == 'lint' - - sphinx>=5 ; extra == 'standalone' - - pytest ; extra == 'test' - requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/37/aa/111610d8bf5b1bb7a295a048fc648cec346347a8b0be5881defd2d1b4a52/oyaml-1.0-py2.py3-none-any.whl name: oyaml version: '1.0' @@ -3809,22 +3729,6 @@ packages: version: 3.4.7 sha256: 5649fd1c7bade02f320a462fdefd0b4bd3ce036065836d4f42e0de958038e116 requires_python: '>=3.7' -- pypi: https://files.pythonhosted.org/packages/4c/07/2ebca9b11fb9be7340a818d8d6f63feaebb146be2c4afbd6061701d6df6e/snowballstemmer-3.1.1-py3-none-any.whl - name: snowballstemmer - version: 3.1.1 - sha256: 7e207fa178741da09cdee59d3ecec3827ad5f92b1fc5c9ff3755b639f71f5752 - requires_python: '>=3.3' -- pypi: https://files.pythonhosted.org/packages/52/a7/d2782e4e3f77c8450f727ba74a8f12756d5ba823d81b941f1b04da9d033a/sphinxcontrib_serializinghtml-2.0.0-py3-none-any.whl - name: sphinxcontrib-serializinghtml - version: 2.0.0 - sha256: 6e2cb0eef194e10c27ec0023bfeb25badbbb5868244cf5bc5bdc04e4464bf331 - requires_dist: - - ruff==0.5.5 ; extra == 'lint' - - mypy ; extra == 'lint' - - types-docutils ; extra == 'lint' - - sphinx>=5 ; extra == 'standalone' - - pytest ; extra == 'test' - requires_python: '>=3.9' - pypi: https://files.pythonhosted.org/packages/53/78/ddd0affa881b1e09bc59f11ab829a7904f4bca29d25c34cbb9395e8e0061/allure_python_commons-2.16.0-py3-none-any.whl name: allure-python-commons version: 2.16.0 @@ -3911,22 +3815,6 @@ packages: version: 2.5.0 sha256: 28e7137057d551e4a83c4ae414e3451f50568409db7569aacc7f9811ee06a446 requires_python: '>=3.12' -- pypi: https://files.pythonhosted.org/packages/5d/85/9ebeae2f76e9e77b952f4b274c27238156eae7979c5421fba91a28f4970d/sphinxcontrib_applehelp-2.0.0-py3-none-any.whl - name: sphinxcontrib-applehelp - version: 2.0.0 - sha256: 4cd3f0ec4ac5dd9c17ec65e9ab272c9b867ea77425228e68ecf08d6b28ddbdb5 - requires_dist: - - ruff==0.5.5 ; extra == 'lint' - - mypy ; extra == 'lint' - - types-docutils ; extra == 'lint' - - sphinx>=5 ; extra == 'standalone' - - pytest ; extra == 'test' - requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/5f/53/fb7122b71361a0d121b669dcf3d31244ef75badbbb724af388948de543e2/imagesize-2.0.0-py2.py3-none-any.whl - name: imagesize - version: 2.0.0 - sha256: 5667c5bbb57ab3f1fa4bc366f4fbc971db3d5ed011fd2715fd8001f782718d96 - requires_python: '>=3.10,<3.15' - pypi: https://files.pythonhosted.org/packages/5f/97/2aab507d3d00ca626e8e57c1eac6a79e4e5fbcc63eb99733ff55d1717f65/pydantic_core-2.46.4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl name: pydantic-core version: 2.46.4 @@ -3944,14 +3832,6 @@ packages: version: 1.2.1 sha256: 810b916696c86ef0deb3b74588480224df4c1b071136c34183e4a2a4284d7ac7 requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/62/5e/3a6a3e90f35cea3853c45e5d5fb9b7192ce4384616f932cf7591298ab6e1/numpydoc-1.10.0-py3-none-any.whl - name: numpydoc - version: 1.10.0 - sha256: 3149da9874af890bcc2a82ef7aae5484e5aa81cb2778f08e3c307ba6d963721b - requires_dist: - - sphinx>=6 - - tomli>=1.1.0 ; python_full_version < '3.11' - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/62/a1/3d680cbfd5f4b8f15abc1d571870c5fc3e594bb582bc3b64ea099db13e56/jinja2-3.1.6-py3-none-any.whl name: jinja2 version: 3.1.6 @@ -4296,29 +4176,6 @@ packages: version: 0.24.0 sha256: f6f95d44efb4ee1dcfd18fcd11b26ba00bc1afaba9128a1b56c4c8887208fb07 requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/73/f7/b1884cb3188ab181fc81fa00c266699dab600f927a964df02ec3d5d1916a/sphinx-9.1.0-py3-none-any.whl - name: sphinx - version: 9.1.0 - sha256: c84fdd4e782504495fe4f2c0b3413d6c2bf388589bb352d439b2a3bb99991978 - requires_dist: - - sphinxcontrib-applehelp>=1.0.7 - - sphinxcontrib-devhelp>=1.0.6 - - sphinxcontrib-htmlhelp>=2.0.6 - - sphinxcontrib-jsmath>=1.0.1 - - sphinxcontrib-qthelp>=1.0.6 - - sphinxcontrib-serializinghtml>=1.1.9 - - jinja2>=3.1 - - pygments>=2.17 - - docutils>=0.21,<0.23 - - snowballstemmer>=2.2 - - babel>=2.13 - - alabaster>=0.7.14 - - imagesize>=1.3 - - requests>=2.30.0 - - roman-numerals>=1.0.0 - - packaging>=23.0 - - colorama>=0.4.6 ; sys_platform == 'win32' - requires_python: '>=3.12' - pypi: https://files.pythonhosted.org/packages/74/f5/9373290775639cb67a2fce7f629a1c240dce9f12fe927bc32b2736e16dfc/argcomplete-3.6.3-py3-none-any.whl name: argcomplete version: 3.6.3 @@ -4364,21 +4221,6 @@ packages: - skia-pathops>=0.5.0 ; extra == 'all' - uharfbuzz>=0.45.0 ; extra == 'all' requires_python: '>=3.10' -- pypi: https://files.pythonhosted.org/packages/77/f5/21d2de20e8b8b0408f0681956ca2c69f1320a3848ac50e6e7f39c6159675/babel-2.18.0-py3-none-any.whl - name: babel - version: 2.18.0 - sha256: e2b422b277c2b9a9630c1d7903c2a00d0830c409c59ac8cae9081c92f1aeba35 - requires_dist: - - pytz>=2015.7 ; python_full_version < '3.9' - - tzdata ; sys_platform == 'win32' and extra == 'dev' - - backports-zoneinfo ; python_full_version < '3.9' and extra == 'dev' - - freezegun~=1.0 ; extra == 'dev' - - jinja2>=3.0 ; extra == 'dev' - - pytest-cov ; extra == 'dev' - - pytest>=6.0 ; extra == 'dev' - - pytz ; extra == 'dev' - - setuptools ; extra == 'dev' - requires_python: '>=3.8' - pypi: https://files.pythonhosted.org/packages/78/17/853354204e1ca022d6b7d011ca7f3206c4f8faa3cc743e92609b49c1d83f/tinydb-4.8.2-py3-none-any.whl name: tinydb version: 4.8.2 @@ -4456,11 +4298,6 @@ packages: - pytest-xdist[psutil] ; extra == 'tests' - zest-releaser[recommended] ; extra == 'release' requires_python: '>=3.8' -- pypi: https://files.pythonhosted.org/packages/7e/b3/6b4067be973ae96ba0d615946e314c5ae35f9f993eca561b356540bb0c2b/alabaster-1.0.0-py3-none-any.whl - name: alabaster - version: 1.0.0 - sha256: fc6786402dc3fcb2de3cabd5fe455a2db534b371124f1f21de8731783dec828b - requires_python: '>=3.10' - pypi: https://files.pythonhosted.org/packages/7f/3e/5db95bcf282c52709639744ca2a8b149baccf648e39c8cc87553df9eae0c/urllib3-2.7.0-py3-none-any.whl name: urllib3 version: 2.7.0 @@ -5278,15 +5115,6 @@ packages: version: 3.4.0 sha256: f742a7dbd0d9cb9ea41e9a24a918996e8170c799fa528688d40dd582c8265f4f requires_python: '>=3.9' -- pypi: https://files.pythonhosted.org/packages/c2/42/4c8646762ee83602e3fb3fbe774c2fac12f317deb0b5dbeeedd2d3ba4b77/sphinxcontrib_jsmath-1.0.1-py2.py3-none-any.whl - name: sphinxcontrib-jsmath - version: 1.0.1 - sha256: 2ec2eaebfb78f3f2078e73666b1415417a116cc848b72e5172e596c871103178 - requires_dist: - - pytest ; extra == 'test' - - flake8 ; extra == 'test' - - mypy ; extra == 'test' - requires_python: '>=3.5' - pypi: https://files.pythonhosted.org/packages/c2/82/280619e0bd7bf2454987e19282616e84762255dd9c8468f62382e8c191f1/aiohttp-3.14.1-cp312-cp312-macosx_10_13_x86_64.whl name: aiohttp version: 3.14.1 diff --git a/pyproject.toml b/pyproject.toml index b63f4a15a4..ffc2e8c6da 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,6 @@ dependencies = [ "scipy >= 1.13", "matplotlib >= 3.9", "pysam >= 0.23", - "numpydoc >= 1.8", "pyBigWig >= 0.3", "py2bit >= 0.3", "pandas >= 2.2", From 957aaa16a22749d9fb679b1dea6b0ff35401d04c Mon Sep 17 00:00:00 2001 From: WardDeb Date: Tue, 23 Jun 2026 12:34:10 +0200 Subject: [PATCH 10/19] weekly cargo build --- .github/workflows/test_rust.yml | 27 ++++++++++++++++----------- 1 file changed, 16 insertions(+), 11 deletions(-) diff --git a/.github/workflows/test_rust.yml b/.github/workflows/test_rust.yml index 47728e18b5..438148ba11 100644 --- a/.github/workflows/test_rust.yml +++ b/.github/workflows/test_rust.yml @@ -1,14 +1,19 @@ name: tests_rust -on: [push, pull_request, workflow_dispatch] +on: + push: + pull_request: + workflow_dispatch: + schedule: + - cron: "0 0 * * 0" jobs: - cargo_test: - name: run cargo test - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - run: rustup update stable && rustup default stable - - name: cargo build - run: cargo build --verbose - - name: cargo test - run: cargo test --verbose \ No newline at end of file + cargo_test: + name: run cargo test + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + - run: rustup update stable && rustup default stable + - name: cargo build + run: cargo build --verbose + - name: cargo test + run: cargo test --verbose From 3642de92615f6f594bec3ecd6a804ae0870cd361 Mon Sep 17 00:00:00 2001 From: WardDeb Date: Wed, 24 Jun 2026 07:42:30 +0200 Subject: [PATCH 11/19] plotProfile tests MPL update --- galaxy/wrapper/test-data/profiler_result2.png | Bin 30846 -> 25947 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/galaxy/wrapper/test-data/profiler_result2.png b/galaxy/wrapper/test-data/profiler_result2.png index 2e67acf103739fa4333792ff6bca1c0ba73cbfe5..445da93b84096301e54ccbc1ce0762a74ea5f4d0 100644 GIT binary patch literal 25947 zcmce;2{4!M`!;-|&}xaYMM#U3BnnYkLmQz`lC>-$`>se@q{vpOY-LRd6|$6+LWJx~ zk}X@=%Jv=?{r>;|JI_4NJTvdiYvw!O8GYQJ`@Zh;I?v-c&f~nU9zCqGVky^BilSDi z9#GVzC^~hDqS0ie$8Q8_6_?|G(hf=|9FEzTIXIuWU`ic2<6vuL<6w2pXq}Vk1^aV0 z=f$^)iEZ01vhJ*dgRQ-^sHpXSePWx<1#{8R(s&zOWr^(pU3-e+Ehhibod4`7M^PrF zs*3xyT<#CFIJ;=o{*`Pu-;ua}{jFPmxBN!8e&*LT4n5c(xyy3E zd9xogt>XMo+?%*)x^)8N$KpnW2+RCWZ;{E>0P=HyX@mO0=iIjI&VNXt+V=zN{D*Gy z9t@lRP{62R#=na(ga|EsO7{P!OGQXJP>PBYENj=U2vu7guX(j9R%MsNZpE5_pG`ST zT!Hla_wOGb89CQu8<4XMZ_yVuRU)XzC@ z>*$yoZpotYrt=dki^i%8J)ikKX8&~WzVMy#*YDqs6`MoVMt?S}vj6d^XtejsnRDkF z_Gz$69Cjc7NkjSh`4xWrn5<)*H#L|$*%KQSx7T}aW+Fn;S}*FYieezsLoB-m?S%^$ zwmbbiv7B3Sd9L%2vX__K{ivv_9GlbRH$_E7M>nxeP7M`|d=jsGbnMCD$?k{VT+&uC z%BDZ-(>Y|EM4Sejb(3e;Y&%(ajeSesZean7PviwjTxe)$=xHk`7(F(k!t1)IyYium zo*viXhjM{*3@g`(h%8S`Og!=Of>2|&_4R~=O+0&Co?R5&XdzctR<_-J-0JL3E;&)v znoA@$EWST*>)Y&i`7#aF>OJTAvo)Vv)_wd=mgU!{YYkkx*b}sbmvilW{~nKS^D%7e zo7&{#RZouaeY&?RE&2_=fMAEXx?+upqLLE7oE&eeeva~!!%>E&rrN1quCA^J)YRnF z)Runw^r?Mt&>+>EbGdfc^_w@9Jv{dCtX<2(!NDjlF0R{FTr7`3T(@P*vewpCZG)l0 zi*(h&(MwisXdlRFdu?u2QBg7ZyK=AHpI=?VO)ak+m+d;=ybp`X!^6YO%1Vo9$hZDj zR`$$$&WrLXDA+qaGn33CBPGQdzU>q(wVY=+b9Qz%ed!7&CKY96dJz$k_Rdbe?T#*)cxQ^ei(|;mXRj zpQ9BRBJP$IxPAZrz5VUgRg@169sQ$2_axm)^BntES3HniMse(M*`AV`n#}$&@z@jF zsd4Mx%8rhX>Vv5|+LdCb^4-`!hKpW_jO3i1D44@qzt;OI6l1oJnMHyh@f}U!t&8|E z%irJQs_8J$s7>ASYN)RdSiEd?09H5O*u>22nsckG3L^U0Cbp$fuPMJLPoA8}b+Qip zw%d8|eos~Gm5SZGyu3yegDskTfy#odUQ^a*EG?72oF8s465!|GKjf%`cL;m`qI}^`Fp)*^LoCfJ*?pP`t;N)`I>U`)U0z~Hgx>>@%T$yRh34H zUX~go|J#DuF;SX*qeE?N?Hm*KZCTnO6Y7loWgkD5{2l98+PBX~({i?UwiFmr(F}vBgM^^-}G!Rq)CiYiw};< z$?&1(-k?=$g zO;AmoE*Y8}=`60U);w|IM8NFK)b;(o^h;!9WO~&<-QrhJw6jaMx*={}aljhkp@?XF z`|QjcMO)iv__b;QS#pjJ-ww=@uyD*d895VYH4W& zsPK7eQOt63az>NG9nzFDT`G&F8kNL;&qJ>KP&(}3Q_p|-E5y|*4bcyJLFeRPu| z*0Tg(=9inB%chPHG&yZ{nfY61(B81WC8ed@dCK_nQK>x>&Gs3;Hy(MwwsPgl>apqR z>9@ljZ``35XGp43OpUTUX9?E&XjSw>?|HV!Aeal=e zACS}LrEg(rVIj=xF}z>Qq33AF_wVbefL(1KzaM<4o@vEa`932oBElB5=T`t*Y-(yM z$96*>4mpn(J@x6a4tdDN0x~lCPN~Dgwo!BRo*o`=u@~3VujJX3mzU=k85v2flbabm z7UeY-C6YhhXle8*LQJ!*z1^_4HLCzwGI8QAl2gc_(p1}~5TTebQtTu)H;Q_hnVA)r zma5#~6jwGeF*(qE{o1v+NF}14w_Q5}cbOO~Dl1=O+BMLgHt!p?A4N4K(Gb z+dY(Z*Xcg#;gR<&Cnub>@cJ6jzWbGBWvnO)?3CZtt5O~0_3E*r{EOG}H`e&$j| z+r=`hy`0PNqZ+gJ!ixf%H>*k?H!#?ylX8Op;Gsj83knK~OcJ*Z=4M;`@{%2^IY#TV zeb=rvr#(h4Tj>m!@_DmKN=nlDMC@_RNSTXM4T*a@I#_AI$bZ4!zT{mXcS&o$yW`ET z&KYrzX}WQ_m#-{0S!xM5uALlYAdBVYI9$wRN;#)y0OuJd_MYYd&pcb`~IDHeFmINY53 z^-)xF&h%qg?IiD@q|2}&%|4PWx|eyIq7H>VeQ8$C)!;fX#md2Pc32wk>lw8UN#3;E z>{A3k#kgzNuG^uZ@j2eEt}mY-w89q2_#N6dRS_j~9b4EpU8^)-t{)kfkt!}JQ9=&x zvHsm?nWie%s~*<(?X_j{tD)mvex`5ySJ0O>Wtd*yx$Ln{vSY=$@XfEs>hvY9rHgG) z@9OG`Ir2~rD<YNBKR1 zKPbbB`%=IswM~P)PacL<%nZL_%J_{$vWQBkwYb06+rUXqR(7rT%vktg{nSgBXwQ8* zZs5Aux+%Ms+xP0#B@eu3U8zD~DvhH@4ToPFc#di3FQ&7INvf2VkYLAlUqnq$warOR zN{O6&@!61P%nmuVc519(Zib0!9~cOH^1!XEo#TkypY@GdmJIxhW~YB2iL!4Dyk*n! zN_!X0u182%9Y|cZwzh?3p}(G z-g8^?d67GcoYdl3QC>^1Y9p0<=N{$doqY1Q z0reGi>w0tZNe@7>p4#N_!*f`f{jpX1qK_IjK0hbjjn(xf$-Q!Fe1MMXl}(#=cXN~W zk!@8-~o^oFt9|mMh>$u--6K;os-9gFg^chULG$8w{PbYuMpS3F8Egk_nej4ltI%_MJKbMCtd!om z^^n`C+O}N-uAUz>PqjH)xAf0czjH;|=aF$r(KBvc+xe^OV>&Pw5^MW)(bt7YE;I}b z45R&DnSAM26yrTuo_yL;@5dY=>n?fi+O_Q_@0lBxZ)V97nXjHZ#KbOMRju7}wYuQp>qAvM)P%dewAU=F*8q z@m>Qpb@lkKjqW?+e&H@lK1GU;v^ckQ0K?ViI*THWF;Fj@2JYSw>6yButEII*pI6!; z;c)N?b_MrAB%-$8LxnS5b)n{dqXUuJk?DY)H(@nQsy)*D!G2v` z&P$grJ+tdn9vy7auX9E<=8&+^YGE*-+qP}n@Wh0QiOKrI5B6N0p7sF6sj)~Y8!7_y zZtw56d}ghz?BD987abiv{Ogyzm6eF3O)FxgQCA2!ZO?eUafTOgS#^KV-dPS=x6y<@ zfi?S1dDMlj3QI{5d2Z9z+CGLAALHFM?)g=xDckyXWaQP)pO0GAKZ~yG#J}^R*uBF- zu<-KUT($9VJMa&|=C`Aw0&xohTehfoyFMwa)Cdg^=jM^wwJWF2PWyOQcO7z2t$X&| z&&;M`{OISN=)gb{3t`qGS1Ma3QTeFR0Px$TI7ybMeQTu=*9j2?})vK$ML<^=h zhr-RNfEzbb-W;$zGL@nYDEn>RAFq8T+*(@{>H52QN1aTgPuv(E2VeuKH=s$@=eKi03Wj(>(kEf zzJUOU4?HH5thwfrukQ%%)~LTO6*ML|xEl3Jt@0Yp=ReUZ+Ukej6c_i2NGc%7ZATFj z_SW{&Nkgrw9%-E2?i;`*N_Mu1b@Pj=_LpUQIlt=Mqw{IXu~AQ3A^ZH4hK5F0{kzd- z`^usZAC^$Vb^12^0s=95Gm=*IK44yI-d+F>gf#Ttk6!8x8nWB-?@p>^V&J^E*(b`@ zJhJuXS{Ym5*SN=z`|juJ8yc=d#88xFUCQk+&)V=;lPNNeeT&S^&8b2p#}(O4S(f1y zW5VKisddopkp|Q;Z}Qu9`n1l@ zPC@O-raafoI|p98e0k>mEq?kb&*35l$|oX%ML-$@TW_TaG>6qK+fF zTSCQb3wk!$r3Z7osd*bFR4@XIBn zVraoV6EZ40-dv$+{xfyr&u=jaiO{4KUcbwCNne(D{-g4tX!+`|Vc8Qc~y% znPy?RNWzc3N^W-27)Vu%^D6+bEx`YMIZr)3Rw?Vo=fc++Ng6rv%#ema@}JEwSAmy6 z`QXBX&?A~q4%Thmx&m~o6p?TljHuS)p~#~_xqc9owR>kqR}~i*4@2@WY>y)+T^Hol?M81I9eO^~ z5CoyFt{^W@3qtP){;+<-2DQx1fbvL`SAv3={F(Sx+Su5T)Rn52B@dm16q=c-2|5Zd zLco32vZMGiDHlk4BkjIS-{Qj!E`^7$LDfxn?AJN@%3%r7J*NNsw)6~A@L#^)!C|M@ zWCz2G+}v337R~6OTeog0pH2)4;PR=;DH0NR#q?iGCoSo== z0~wBml{F^kA!txN_9XycfWuGVEbVt1?AWq2`|@W0_R}{J^irLLm%2QA857eQBwMzn zm*s7KHl9Y_W=4Xml2P8j{~}iYZjqRkwRH(Dk({?N_2*A30P(~xd-v?g)AKC&^Me~~ zOsmT?;_lsRUk%(3)#bbz%4c@`t-Fk0(ZV9B=gX6zRy%3OzV)oDR+WGtZleMa-CsW< z{~u}<<@W=eVfAHTdb&fID*p22Soe@6u0H(xcXCFMd^9uUF%~5yCAYL0r1d57nu!yc zjX5?CciXo6I2?@E{P0&_Uw;|(?G4l38X2#XC+`zf%iWZuot!i_3ucev8Se!|=b1Id zqVeTTq>zAxriZ7enAs-|6zDfKHEeC36Kj8biu6TDECvyJmY%*JoMF4`FB3u$hByWX z2Vc012zdSJS_8Jc2=Ef1bRW3(cE>)g`lhB%EDN-N8{kw}(t z9)xPO2wGuBd%F+#QfHM4UugLOP9t;kD@2MAj{W)LhfbHLjwEskfd_zdZ$5-R z(9J9{X=&g;9c0;y%(uV5*Xeh$9q33V_@mT$+Law=e`*uKJ zU`dfLgI(vl6>)KKL>mPbU|h1K2=px}8SSasBrLqc1%etAl*10N$+s`+NAMAiA@TU2tJ;BOvOG@}9 zB(#P5J{Nd<-{9W05)qa3yT7raK~?*!MR7|@euZ&#UvFE%UJ#XIonAL@-gM+!&eF0= zF7rQH{lk3=V*USF(FZqW(TK&XYx6V$}?!Oa5 zLFM;$y=iL7r4bMmh{+Wr4Tl}UZ>}&IBa}96*`fdxDTcjBvNdq=8!)vSxSumfZS`s+JUjl-Hz#KoaL(fpW_$sYpz@7<7cT4ooVkLXvD5H5 z_TDotUi^thihj;YDBhG$+Uvh+lJ+}o+xLBXxR;M2GDrJE?^!Xo8;Xi?*GWv(tUvj} zmPRFrR|!fm5>*glhJX9^qjiTFFG4Kc2MCT`Tml8!)LQa(0fTY)2zjL8YGpXT-@D_p>?=50Z1_s9jY<2oeqr!Bhp_9)Z4$G=JAn-H`~0X z4s}m%Nz1zgjp%wl{bW$^#!Z zK79N1RPHd)fiaZx6L~IT$nuM*`se3XZ8&^CAlJEwXwE(|i`fTPuUWHENX@?y(gH7Z zduihqrcgDZ5)M{YO;h~=S0okix2e~XEG)IWq*r9|{3fsLH9?h|?GTP9p;0_LTO}ZJ z>J?kK=;?RrqWSoi92-6)(I;Py$he2xzklQX`vVXVIPYyc^$Ik+9TE1zb1M5Vw>51o zaD%k&(&H}=qNKWqT4z=6U}tCN7ZmJ#opwl3F{_j`wYXC6-{%q0&t6VPzx=b*d7#43 zEyvY9c0=xp7SCnl;#!KOpl)q7mm%^=dwMCa0!qM94ULPjDnWhL;s}X|yRCEA90x?$ zDUc?uhU{N|%4Pxr-cOQ_ibkv{Q1-JImjGcAVGLBj&71y^hAXlxYL^1|)2};i_T-Qs zl8`|8KJD|zG&L^~h0nTA9un`U-o3Y+MrY1M=kT$xaPlpzkG#D6=U0xFzTHUrTk>CD z=(<)RWgTNb+M{uYBgu47rsx;?UbgbrfE~z63s3z zMMV>jgJE0&da3UkGR@#pk zyK~@NNDN3@L}aAu$DaV(x5L67e|c9_M04tuLt@C(v#hL8gKpF&EJAf|5~~ujv-iQU z8*$*hq})C}9JO@Knl+0SFOJ5wU8YA$`^R3PDVMC1dI@{7xuvBFoOrjCR8eIm6BI?I ze1m%dJzg!Rx(3gOCYMA;^vs6Tq00sBfo8H`(SfO4$=gXM3p)lSp$lA+kABgnk4@w1 zs+zWnl{LvKS+)%;g>qQ;VeD!^f>VSDr>dqVD=GTWZTNvDk$lIz%41>#_Dm1Ina}pz z+}EKFJObky9v@fM(z>IidMzL!T}@Rr@t4Pi3mKz-2j3PqH}e46)7fsMVU<5{na6+S zTH&nZJhrq)kM=b(C2mvmw_Hq5uXb5r&|sU(u7N-8?d{UJatQI2Awq)b85zYXx|zc> z6K&*O-IKIVny`F5TCEObL+NE%T!w;z7^Op$$s;2`H$og~#IE7x-KKAFyaC`k{%cFF zb9mI(4f3Tye5IF{twDWU;_mJq)#cbI2}Qp6>Z*-Lb#xxv=WT=DFR*hbTVYgO3N$R6 zTx^!aPm@Tq{XhRA@544 zTHhBl_CNebUsO~y#UTGxogFg^r>}Bsk@wux>HKcUCF$rDQ2V+oqB_8uEMpJ3{QC84 z7y=R9i_E;Izk>78#CTI(&1z?7H#y#9L$gnB+o^C85A79J4M+CQ#O0KuNx8DUBDfex z=4&r`VLu{7Bxp=cO;2Q7ah^PRk|;O4vTo>)E(89ke_eoC`2LRH=mJMQE)d zTY2y7WNgI<+EWJ~%B=;hq9_rAyc0Ha2KjEPCF}&yQLog8ePlA_8k5`_B^_TbI%0{S z0Q97z2=ja4HkMTJ2i3k4$&}u9V|r4*Nnk*L#o(-SW2~FDj*dSRQ1yGljZIB&%F9=P z;2k({pb#$=u;LPW6UUykr5l%0RFK@?O~`^9pi+a1(t<4DeQ-@E<5JPiL#?(B4)YDD zloRQ+c%v#v=L98=jyh0A7!KsCGSTwUyfB*#!8B5?t=SPoof(edNQf41bV z0dahBp=;^+mRFat8;XjHX@~NDuM`jzbc9gW*ockj@wfMht)1O|bY9Vdyo7yW_;yCiEr<0K4$yv?ULu`zC1Q~dITN(SmueOk7{E^ zgv!af?F8p!W@nGjIRp(066I}>b>zu@tJeu*vr|LHAA*HkK$O$18g@|oAl8q1RHOE# z+jk#EswgTgWdM4wK4P4opFaYW9SdkY<`9k&@EZz~;O5OsKr~5P+()MJF9<0Y!TNS~ zMeRktXUxr=E7L(>;=3FnRB-I|%1a3xZ`j1Y2py}DA@8}|^EL+vHdYVc#xEnojl7Be z`JC)TC`xCiQAW+aq!5uP8RwNyUDx5pM-b$+lLfLW&kIiHxv*5qPVguPa$P18P&c|O z@iQt0E**% z^0NFzltsaf8yS#`i|~6#;k|)e5=#lk#8U===3HKIY7nCam)L-&w7!0myN=SUsXVl{ zD<19*!WRALl*O=aVB#N>K%TGFsF}xy<#ZwO%AeZW_zI&kvdK%6k4|vH%bEHH0!u1x z>+i>j}m_<}e>(pqkFL4MUPE-KgpV@ZE!<4ZOnk-Uv@KR+CwZeda zo;esTQgo)ipjns78v{&kd`4oApc~XR=GCipOz%PMFlxiA_=R#r(?u{J@0 zxFjm`vvk(jzt@GvT>gs@) z>_^b5lfAACB?il9a-U#n{8TF#9J{+<+W9Yo&YS;}*C+l>zbZ@#fPeH9@|R!Y<~9p* zp_sqe)3&fl`0 z|Em=CLQ|Ld_*DE~4M`H`urbDVY$KK#{KRaChNp)(JX~CMYYDSMEPAAwcq=SSNA#=l zKf_YsHD=mfHm!Gp1qO!jNgw4{F+HAnvW2@Zx^w5wx*a<-H;OG~VoJMkE(!`eNIVN0 zo8PTl%+IZxRueVjcYU9PZrP_#Z+pKyVd3Kog8B_WL-0;db^J%qpi?JL-T)QapQ=Md zzuDPYbgOrx?wdY4f-WZn8c{Ic{n1C)tzW+gT<6Nmmw!Ax(ihJVizI`mJirj3eMw!hS~pVZ6aT^ku2 zLl}?F35t&wqNSr_;o(UU*Vp=zSIE&Pq`P$K(qa^A!kV!=qwF^xzF!E{WPC(f{kzulgG9-1TJIdM6=$ChGWoBk33p=||e~!zDk%_r^EQ%ZHv0}$k)X?jx zZG_?iP?O?R|Llx{^?4*lgi*s5bSXgryv~JJb^Z9k^|Nzua2wv~X@Hsxp6GNpP~Tv>0{GRJ{ju`^+ZCv$aW~KVQZa z7VfKWY~&L9@%Qgw%erOMsZ*zD9w}dDKi`^n72!xnkt}5~A!GkzIV>VXpaLIg_yh4L z7Qhwc{v8CH?PotfvIqjl0x!OUFvW(JH(wH^mkOua>ms=a4<2N^O)xIKDZS0_+ZLP&0g!aqzu+$(eqKr*0tBZnusvy-W+ZfNcUZ9#;K}OvC43 z4hdaoMFqoUTha>4%9bKWCsgeqU1+KhSW}D$kH{g|eg66RvQJOGyoB$WUjb-N#9TPG zW!pCTqhrB);gq7bPp+9yf(hxHMMYJttWxld-@lvS8Lh2NyI#`K()Rs)IrHP)*$>qu zXwDQbLU>ODEA;>+1pd{>^HZ#>tjNwbJiBf8bze+}p1~Qi;ZQNr@g|4QEa%*@h=Sp6 zaeGBYq5s)c!q!cFpDP?VgQ509lRWOeXFjVcWMpQV-g}u;YvJ2wcj(|jH2G7HJ&-~2 zLbBfKm7TERMzF{L;3fgXe$40=Y{UlF=oG^{-IzZMUECy8g4cW64rV|`$R{PY1y$lq zRGUP%ZY@W1+&(nTPBi7b3JE30L$Ousq^0$q>~w}JDzweC>G?Uqa@KR+6B85R8@Ln3 z`($LvRresS75l?-Ebu6@C4B+=lz~>C-&2Zd%<9v5y|DqYA-p`2B8~ zRwF_gnV7zwo42-VwL!1P3JMAeYUt@D<>YH7`oSAxC4L+ddd2G65Vu2N=q>pJU&BbX z9AYhTHd)H*95}#8bRQIEcz%kTn)K^7z?DF?!?Cos|H~7ml$4ZPp`n){8yKOEOM8;G z0fDl6g%JE8 z!(T;eJp*Z`wr>LHj&#g>TJvRiJx4WqUqEXxt9%gH^)b9NHK$b`DCYCyL)^X7*k*Rq zlXg^Lf<|myXI)(#X&Rx8d*k?NPj;+*Xi}G{xp`;SR|7f<-L1%Dp=8+|PGj$HzPA-Z zjXc^8t>dshA>lWEPx!?&m)Nn%FWTB==nd(}fPL&|yvVQM{|MF2t?A{fSKnTCKlmaA z;;_@IPBKgqg<<8~?J~TM zG|@mUjDP<49Nql9tu;fvAl>iM)9ia=dL1c$`Rv0#xg*nd&;ie#G{dp_@XvZ{_#Wn8|T`1nT0 zM}~(BiBS`NLL!=>!}yPiB!61xKH5WrXG0zq+_Q%VIfkE~pGa+Y)J(^0ZjyX(Hy-5x z@z-~!dnFT7De}sS@pF)Iv@RaL#{mJ(E;}JIA>7pE?E-8H3}vR>ym@oRrDbAbVhITe zpPNd-120~@DBbna_tK@$+1C1kDo6hAO#Fwk0{5ReL(rK+*k?Gm1b6NFYRCsV*^sG( zYFDTGFW2b${vLt%zUr89$pX&2dj~CA zgjvs>Zk^;>=#k>}Pe^G{?*X;~$e=-r7gRocXvKn++~N+5PiTxi`fYVvEnXgtpCUP2 zP;*Dzp_@qTL>lW{e7Kzc-=}R~zI=(wApNlih!6Z=Ec^H-w&CI7Th>4N1_vt|1d_xT z;NAPP=+y(Sr5&^4$Jzox(NCce_Tj}XUJN0Z8DFA&dY{dZ`ra1&!#2u z@1oWKtQqAe1qB3-{wMVW1qG$Bo&pn;(pL8p18%RXUAu6-tta8xIDBsK*|Y5gO+iU*UOsN;GUVEOML+_+h>pNkF3{pT0pF zSAfjIp=ukY5Dwz?rLZlSFF9pvyM51|J&&}6139ELJ}v}q!b)u|t#$A?N$Rul@iFoH zwaNi?1(&m7qZiMI_$m$4h3i_NL^D}r>0xc56rkYydhU^xHC?=h;NpewR;*nZvFPDN zcr)|yi8g(b;O8$g+=v#%iGS}w2(c|a#eVLg82+ZZ$sqbDq%n1K z@vkUuuq%K=a7eicB&pBeM1qp=0!}z=#0H1W{~Ichc0RfCyW;shc{d;Z@c#9R!l6sC z8X(gMn}~=)*j=CW$fL|bi`%WQxM1@ah%r-GD9Z?NJ-xd{a%kn>4y%~2%2&{cU=iFH z^Dbasd5}h6=mnMTmtzy(=EHEw#BQq|l=r*50Vw6+C)c~cChqQ$W_&oP4 z$k*4mB9j0r2z9=Ac5>y%Hy5tFRGty`0E7Uvw&fM8@jayCKiT7a^e8i~e1k`pMM7nM zA>Q{utYqQj+?=c!9vO+t0>-1b0~$c>;1s(cV4*r6lp6Ug^6O+}Pi6aU6Bb^&z_lVH z`PZ%6C#nA(24MtbLi_@6bc}iN;>6vpNqdYPV6XS}#QMaU9FQ>vcr0lElVw}DU?3wu z={xGnuUWOq_u93k`JS-WGjnhx055IY#0VZHabZ+ZvG(}T2TfR>0n1@NUA%GQMu)zd zC97Aj&f@C-R&pIu<93%;;72q`QZk|AD{eitkd#d_m9Q%GQ)n-imD$61D4(dsg$Ih6 zIxaeYMf5Z-0ygktn|I$23|#TR>+d;KA%a!)vkI33+VxS4YAnR_0?>)YR%)!G_QO* zG6{p%j>m`YnLQ_KbV!5H9adJ8%GJcB{?pjnI`!DaZGfq0wVrKxm4#puu;3wI(EL&y z>Xe8K=>>%wxGlND#P<$*2N7NMgh=v_+XBBcwsUub0B#pDbN&GP(#1#+CS5OK!9}80 z9G#OmAd!cblpz|Eo3?IE)t*CLCek9DdA1iW$OD@uYa2b!Mx!Wz>-w)>7v7eZ_KQTr zkCFDP0aRH(%5T%|-5j_%2`{IJfQ0ySw@iA0&}nSDIb#}KAj~?>TEUDuH{HD#)KoPz zbljrp$U}E_zXOL3rB)G5#QEcg54WvZ#(e{Vbx zS-aboa-SGfA`MmN!DhWc%t_G0FvP~r4xK^}x+WQQBIZ`uTi!G`=N+Ev1#2}(t_SQH zd|Y*wnVWmdmddE$V54V2QBhG9tgo;`CQ*QCep^t;LzBr6mmEWg^i3QtQQjM_;O@#3AE7uX)a>Y6dr~xStr+4!FsAi-P6+$ zmz*RSO42^xu9F_iGMc?hLgMnnhYyi_u*bUQ@?2$o8Ji0hW zZv$9>pi{!*okOFb?NEdX5O1gZULvviF+E$uAd z)wYNt8mDx(MH4o z7Y%x1&kE17Y|7rs>(;{`WlS;&*sGZRkAsj#G^D*?C!Fp-Jy#5^zv`vEIoiA+b`;4( z{wuhN_YE6KL^ngxJa2xldPPO zF5dU}`PL=sS5~pq5-&d-{s81C>fiyW61lk_CGE$ChkY~?cLLohYPH?9>b1p-xC@{} za(+s?JhYRdh8UexJ=G7lB&C)zGWx(<25c)3^TUr6UWtgjygduo1yTS~rk{d7R~Gi! z@n=2DzqB2oM@w*<)({XCWVLnWtIvhR&dV`+Ip5YZq`|5g|1YJO=YtO;1+x=PsOJU3gpY?*?SQ+AOYWF7o9 zI%#Jt%I5O%7FtASE!7lFOaS5I;(D}54O4-U37B+rJpI`-NV<(MuY1Acx2`3|FwAF7PZJNW+75wNy+rvh6noJCwUf)azZmAkzKGD zJyt)s5LnRSfIA&}9^tP6$C2B&OLWbd;k_oD`_R1B8J8Fa!k!9sjRt>|mlcC(* zyLUH#{c#K9KJ!ug`|;z)(2aAucZ14cn%m?2rMvNfy69JyE!_sQALq|6AZ<}b%LsB> z$jc+N^A|M%h%KwEEJcUM9}v3(#Suk*1GO(vi|A>jVGm{d23L>_hD)p(pMPj~g@gkH z(<^%%_M>?9a3h#oP=+w$^5O*<94WeI^BQISH&>}b&1cv;9$|=0(q22ccGIR!+v`i= z-OcuU3e9FaR(w9d6$4L$5x{C*qv{XY)6m%17mC6(gvtmh`wcgFq%N)CmaMUub{c3b z!gQ)rGp6Tkrl5ZA`So6qh;S5{VP=+JhoLfJTbrGovcUlPJ*JprvDyX(H&HzhT-dwx zQ^c!lp8XFi!^8XU1`Zw1H(|is$UAff#Jr|mFauCbMj~u~|2QO~_neV9UWg43^RH~U z^VE?^0xn=bNNVxI5GJ_?xX05?KdwF)u^sBfG?aT{g@=TCC9PnV3tmHyKx6(SOW=8E z7Sffg6KgF1mwT<#j&6ccMJQPjJ}COj@@GgXMrsIhQw<}QM$%)yiL%gvHQf)VAu;5_ zA5bT(o3w;~5i0Fs>cndgDI#~aSFHJjxuxZ>%tY+kB6dO;x%9|oaTV}Bpl-T4hf?ZClp1w+~ikUV5P}X46wjTKQ+kL z8!-8Blz&NTO-+qOphCGi$|SA`dF^q0JOUjmB!sp9QFf6M%6mR&qHGW|4_ctcbt$@8 zT!O&MV9`oQ6p;Gt#((P0qeGz9k=o;@d!N^CkU%k@FZ~UP725yph=>yd9O#W%vdc*D zVV^;Bgn&jyBM^!J2Zs)I^!FzpySfcb3^s!MTgmfU_}#cG((>AqJ4kk%15&~W?2v^` zO}WZ5n2hm5$dTz(IK_RKX<Ai*aNpu%*;`JA%K=(!0Ik;wQ(jfI3+`Q6Lti+**vL45b!l~96FU+UA1 z8Q@AGK?`ucM*2gr(@+F*hHqzBcsSj@K(#AvmaB!arQkMsI_^?4?8l7bEpD-&gbu%B zw>~EM3Fjj;>e8k51rd)Vzo(qYC+O>;X)p{xj?}?9`Qx5VpGQO0GSNIAIHB9&Q3jm8 zqM5kJ_K91BB)tN}QL1^ftHG)B=g(&`g>jw4D}nJl8XYo-0^;HTK0vA1!>?bz{--XI zx+pUCK!hB_084Hm@(^jjVLojC-GM}PKsN?k^RR?x&yK3W4CFyk;6C(I7M16kG=D>* zfbYm^$tn2tcE-Bw0*)f0JMuak8_*R4G;Ca6aYZ6X5eNY3kRpdiz-s*Z&yRaSWG}uac6VNrZL&^uTMUA?Z2@fhYR^{{N%C)?_23;vJ7%{b4 z5|xwV92jN-M9iY`Tg#@6sCtAK64{lU^MTU@lCwq!L0;ZhR$hVhLb_jTMYn7bf6<%> zbEJBh2n~e}*n#f*Po8XiaiG6)%Md4@(cIK{_C-4iDYk#f81VLQG- zLKf~f;-_=)z+AwI=Vw`ntr*SNH<%m+<|Z~VxxYPvz)vV5Mz9TM^po>R$czm(9v$HB zr~6Vst9V&7FvQSNn;T-@#ls&@M9=I4c;)k*0*q7Zx}HCBhAwy0qNs@T{@}(5v!kCIUHRKAMLmXo;>fVathFh!Et$!=A2LBrz zbgU>K_k@AQtZ$G0F346;$p0HJ5^Z+zVpXLD8`U5Yt?=wmFRVI|O6234Qka`~^G3mZ z2`_bnLyQ)v3^Hgb_8Hm&Oo7UDsFElnMwmI)KF>CV^BfF6KiUuP{#yJMPDUUWIrE2} z^Cpl#hcr`xL>2yn0IDCH_zS!UeG5NhTHVASFT zy&CR!BB$afkTygp={Av=N=g7!pzJLlPlr+0`Ue*@Wk`7QlmnO$osjpB;IPnTmj*uq z@?YRbU0v}&L`Z>f^CjpsxXiz~cc6ce{?{!KBux9vH#Rgi<7QgW5<{zp2zDfU%x>4U zI71LAdSakQ&!21Axc}2@gdBifY@M8bSk147gyq4oyNL@e(B3;g(7sZ^rY@4hB#CtV zOGrB%U`S|v|GV9q-MBItO#{|NYPtAdDZ9ISW7DVF4V_@6?Q$r*7(>yZ(>5_#xj-P)K>3MFcT+7bBI8Zruo+N?ggK#5) z$dtA6%?I<3=W3WyQ>dn|=B0w_^< z7f@Qt%W+Q4KkXOK_@66woyjm+1Vijjc=a*nZv5;JEWHk9*U>Qou2_8R7?Csav*Kdg z+rV}R!Z?eBqJTpo$^Np!xa=u971jAqgo^3zxCG@j2HjYQYyMZRT)DG*eyKG&OH4j6 zK5!qDLZ3jwfn)yTT67y$tfdzI-I(w$@^gS`+neN#p}T@m46O?f%>V9gPFY*d7H_74 z(+9))RMBD@MZ#)b!Lfw=t;R=GJ(?p&Dy2EEe;n>pb#rr5xU!FYLCv?Ct_j-;k=hV= zOnS#)kLnm4Z1t&PX3=m2qfy&JOY9%8Ak&jh=AaO?I%2YZG$lLjB?gaJSXfxKrL(hh z*h(n1mq6Ah=WLMX9{-vco+|m@yTJZ0kEM!cmJje>d1?Lu6Vf|yaufOazx?C>Psd}$ zSg0L7tc>iSa0P%+x!5Ez@&nEcf{B|rV!!|RA&K*=6wBq|0$D9`f)wN#GA!nB=uM+GxT z+|nXo!nEKrI~|xEy#1J6zFplo44@7tbbh{umX=>ljTYq-8p;m%dDZpz4+)b9C?pjy z_K|NQwkLQiCvmmNO(6E`?qg5Bp8ab%4X{tnaDZJMXK@AIxx;pUw;e4p!GiA$V?g=L z?DQYQ^9L2RWPx&^hV6lmgdARhk6pS7L1QhfM3OFp@HJq*XeGQkz7Rw^e3|4(r60MJ zyUaZ7?nUfgzbjXaQF0=7m|_kB92s_aquL~G%7+a10&!XeYzKS3122Rz>Xr)(n!~{E zg~i1&(Fy=_zrwbix&|!RiE$J7*Q%u^$eceW4ljd`N}b2R9iH?XAl^>11ZsC?&382Y z!0YHJ`W0O3Wx#;1VO+!rQ!tbdPOdlu>hNy)ZJgi(f&L*y+2oD*w<;3g290|&jE{?f zddSBrNON_s;zZx*fA#z(NnNXZ!i)-8k8c8HTz$W)U!KT!F>Z7>i1J zEb-%*p&|18FiaXyR2JcqMJVBct3}Bhf%$`?0CSF;=ECs92;Fki=FLShO4o0&aN$f7 zcHl8;61Hj5@}Ni;SqvDD^m5Rp#lXco6i|Oay;!6y%7=7cghP{xzHPu+bZEi&7tH=$ zhT4MR)-@1#AB(?nfR~gEP;Jzpr2x6e{4(IyeiTt+qmF%79vN@e4qQyA5Zltlm}3mW z2r9RgJ5EhN8Gw>V>k0@(a3zw{tn%h&r&f3{pwzx0`vSNx$)r?ux-0(OWIEpGfRCF~!SQlru zp;W@oCA2oz-G4JWQe{KW$c*O7mGl($&{y|QdMLkFasS0A;E*ATF>IJL{jm;)3ThvG zKk3DS0v2~j1lqLjf#z`r*3fD%M?Lto1wi4h0k40<_AEqRx5MNkIS))y2hTo#2ANys zDwZr@8zt(|Z@LZpcAcU1LGPy>h}Nx?S-u^UQ8;73vfu57PIzL~Q^m0)(Emwz<%lg4 zl7|tF`XLr=Qzju5MMXk4Ac<5T*>^QSkF?-mjfO9ml^9u355+L5uA2*qwD(D*wk}Qz zfKuMk*LMvwdwFv52&G{3F=^h12({0#ZWsv8!|-bd+5NwNe>sn&}FJ;(ohP~A|O@fWks8KKebpjTN2ncGQIj4bXsCfj?{V;rSKBE3NkN-2QU3WRLfOu@0-<&~d51=qDyZjXd@ z55<8@39+nNWjw05gbX|o2QV28gbV>YJ~5a9_ek)XV`P}jhhY6~g@<2(pj4}X0nS4o z;eMx~kY@8*yR+;==E8%84Vyb{P!+Wwchw4C z7k4VZN7`-02;*h+ovC$L=WTw>I1Wk^O->xDh6p34YZVg|!;BqZgq;_I9*y~ZRH~jE z09^jo4H-&*2c=Q;<`0*v>G_I*l&a4;{C>=rJ`Qs&8K}M~q#oAu(;Ie&>!cw~PKLrl z--LbM5R=HeaoElCmnn6)IWg#HjQq&ifGvTp%W!99ID#M$mR13@O);BXg0e+XNF=0$ zZ8&t-4}vT?RfzH-(0hcI;q!kC$T5?cmujoS^4A|g6 znTyDh(fC$!gc#|M-59QfSxr@9j9hXP<@!3;l8qAH3LnW8!iG`2!dh zS#cP~hA5a4fggM!V#q5fbbR|JU>R$pYG9pXad!KP-N{O!z&A^&Z-9_#87(kvqm{!( zy`7t#*xTSrPJe{WAGQ|l)6v)i7NOy-hj0qY*`0T%xNPuhs)O^v%cQRbLvu%#UIha1 zMR&)Oqnq9u2gz;#&EvQ9o(P81vzk8O)%c4_O+k|FDQBmP@C!@SpNG$$%z@Dm|NT>~ zYZ~gX5n+POeY-yOMxp8()%olUKl=?hZafD@@u&egKnXmPrqwC3t@4wjv;Blu= z>oqu376KGHW9_IL%GYiMB-kb2-vrf|h9dh5Z==>F1xalW&TJ(3ir%z4OwOi+*+x*%TJTM%?nYd=1?XH&Lh6*5l@t~H5+g(!-EP2%Kv zmI~ZX#wn;59)B{#NCB@I^itluVFNwPLp82pnbL4%Lp21@7{+EQgp`C~@~s9?RsZJG zVAgvZFe91YNle_FeZD10{0lK`e?!?OCvQS} z9y6e~BUzt~CL1+q>AHj^%L)=JZe$1E9@X5yF$KW~Ucb5~1ICLuPKS(e;9==YXK)r~ zv}R(Q90qU-aVo6oM}JG1*OGP6vQECdu$X~~_YS)~dT9#>;`yoKKvZ(L6;7lgM>+iN zu2i3!1llk`GlKGgutV(n8NZS7NP>zN*iEKh*adTC&NROEbf01HD&QJ+-CP}uq<~`+ z4!fNggl9Tf_C60REdwkU@JRI6?gZRTf_OgiJ>-ZQQ!_0yG*H40ab};C{o|BMoKMCN z>gB-O1EYJ+3y0p|lvG4L@&r5P)Yc&5X}Y5eI6}@v3QT;}c^n6C0xn%cwfZpr9R}WK zKj*>$j)-zh>w~&R&W4)s@CJ0+f-@*xE1ghSRiSNC>o6l&LQK8cm~3E1GK$mU*eEEd zP-liQKO;=Hjd57Foar4_J^)+hClN;&$8dCkFwXH@3Y6jrfH@L~EI zCwltTut;Rzszs^FXh&EyfF%xf6sxczx9XN10Bu(D| z)UnU;>T48LRE#mOGl_!<0y#|ATJ~54E}z2DBYs&~S*@o6$-q2VCbzU=j2TRgO6YFw z{CgVsKkIcVEY-`XV%XBm>wW+mk@ILIGYPwZu;)jb?(WE4&^iU-?TwIeep(^%yovkM z16h4|{BVdX)bBO$DKS%T|DWE@J{rqAjN>;>B3n`GZF-}f)kzcUlzOTu9=(mC=A^8Z zEEB8rhKZK)5}|fhCrzxB5|82$X;G9^)`=9dt(S9jBBoe-=IQ0I&*j*E`@8!ue>wMa z-@o7Qx~}iry{nH|z^pEC)rra;2^(tq2|0=doz~RQM+Jv{0MAy^u@xv|;Kj=6w#jfL zN6cV0Hv)<~r~cNGv50DRcRt*{`1Q*zRkLCNAUa!-wqixcy#n5a01=65%9CQ4L+@7s@agjYYw6q4n#l|^f$uSxeiMXgH_Bu6~Esv*-)&N9w!%_bipq9qLA?fGHc7fyk<=9me zQZ2k$MUg%hB<1Ms3&7Wvzma=vM2mJE|M`2*ryNL0@oo(bQ0*Ygk){&g`7U1NanyaG zEvHWj6H8M(Vp4HCnh(RQ;-?QxmqNAWG=izc$-<%=T+J~=GTjxjr0sB_3A8Vx6-zFP zBvk|DGyUV;#!3Hl<$m~;(RTWgO@okDL2)3Qsu-XJpFmX!r_=L9=<`I>Su=(6&R*hVW`?>4NAOmJx?vw@*Xpq< zIr;g0EJUeD6_zizBA#4YZE>o>o(R`n8z!37yufhxd`_V+iu)pu-rX$&Nq$RW1M^~f|2lo0(W1oi~c<^h?; z^v_-t8(~&;rC!w7^mAs{Yy) z?UZ=3uzwFg7u8IFkNhUlAP{{cD}&0P%V{S}4+16eg>bSs#{yUD zgzCp=s>bbyHr}3|^$$4K-n2z!HDy@;sJm;N=fv81CI-;zCo(PjOWaU_okV9bSi~`$ zEo~}_jusJfxtgas+`A~qieXyfK~WEQuUID|A{kL;y;A2WEGiN+hgx52FA??tFk*Y_ zepU5-LWJ4eYotJ>5AlZ+lSo5zzA1poo+Hs0XLq|!x4yX=f+G#xBw}Y2lqN{)L`*nU zXd@aR>|^nCk3IySYfD}V(8z3TspQi4`K8h?36WwQV8G_?gLhjADO_BA{`543RFu)l zI1ag?c3RF~PQ39jTPAU5jeK(Hpk+Y+!RDeBkq**&UjwTRfp1*%)S)sIX zPj9E1al>LbBN9m^5!JbH!_sN$Mh5R*ljtcokUpf8Ff<{SmB)msX|!!@j&`yqW}8Gx zuzN6C^Q?w(3qeA9!0{CcXlD7JqfiN!($-&|Fer_ZF^2uD?8k3T28VBSgTJh6uFPmk zk`3X71C&s{fgn)9@NZioa$o^XtZ<|IXv{4Ki!zPtlN(fY`*3{_UX(RgqD-|pADu%+ z=I-vUC}9qhH=4?lGm^0ijyl_pXklG|n)`WLUx;sK%(YWGq6RDCS_ihA>jEV8{U$SU9 zbmO(l&&i0rQrw7%el2&X_RDN+Um}4;AbG{$0HAP>Pd}y?nw= z%yjZ8o*T@@C!dnWZv6kh?EjNzrhAH%lyp}{x<}h(p+~-&oSB)KN`$5=LBg-vyE1{_ zhR0P<`aKhbNzVr@EiI#tBr*4`K?`CUnsDVr;jevtm-_np?A_etR8@)S{0Yz*BsaNWNA#U ztV9Tmdy_UaG&B+Ie^&?%O%zpATYGQA5(S5V`9x*BDvqTX$Dkf(}OY69Yj{C03o zal$UFtZZzjQ2hM-6he+y-X|aGFUjqW&e5+{EOh(M)Dm9+I&( zcRf6W8pA1{H8KYEdhjC_t%z%s&D7M?jmJN(Tw!5h z;^QMD6yLeLwLEN*`yv!&|Co`un7c#tPq;40*1?|+CT3>rG+A`^>pcIrS?hHv0{m zdUNh^`|LSO1>TkZejlF3B`yOzhO-9;2Wzct7z&a1{8pO_z0DmR=TOeeLuA7xHW~`G zsCRbb)dST&BHzA$KZWu;+GW{V8Z?<#4ehx>%#_N{#L9|G@3Zmp;OM0s-Pf9fHc-!wdV|yoL0jgtWw6N#KHRL+|{QL%nhEk=132^Z6>XBb`@zNzr zKH1y1PgU=)h_LH?JbU~0?fHR1CU$oAhjw<6`TC!Y`*L-5CWGnUX|ht&Sap9;T0gzJ z`)BS9D(ddl>cg!E;q(%8V`F0lMMVKQIcy)45`yC5;&e@-Vq;DI%zj6ncx6?Uk(n75 zJw5%m1OdXi_C%{2L8arq55~5(wi-oNE7N-a*njRylk4~LQ&S`E%X<)9Xwp>M)^*?wV3Dj3c88jk47$nCacshS=?vF2}zL0wEcC2672h8TLUJWC1P$XGzQ+kWzJ$_ z*Y@_3UAlD1-qlqW($T>@6fwT(?zmIg~W1@~z-?c6U%hx?1( zemjepnwe<|ac}oD`p=w}cZdCUf5xs`T)4!ZskPi$Uw;-;wWV8S0+pj>J5tDL_F+$^ z8v40BeZFB$1Y9Z8jT=PB<(HJm_UG&WUaKRVo@sf#xwSl2_1T-CJy`-%m}vPG3Mc7X zAtzar;f65sHdktX>qi^YKV~pBN3T8^Ee{pf6+P}=u)*vJ)L3-Tja0bgw3smdh`*eA ziO~OmL^33r?H;a%hDLF6j<1KO=W~e7UXj@jiDPzl4i3JEl)c_kJ3|LJT+gQcsW2|n zeUCr0p>N;Pa2wa-piScA;zH2W0PnG1_cAe&BYy?orlHoKeGfg+%eH=;i(Z)dAL(J%ZoBJ0 zMLfz}JSPLmXLd{)!ygy;czBc-6c%P}Z_1lqWAD4&)0+FBlmH&JFzQQ32O$&>i1l0E z-jxSMA{-p}5bAYL&YbJS7}f|kwY0a(>gZ6SzCdP+d2IziMp#>0t7>WnIL)6m(g*`1b8vs_?>(A4#^yyto*dn4p3L8r21TZE8B_;o&h*YDd5R=MO`` zm#Ky@hkkvxujAwNOtRs(?%u^+T3#lmqa%R!YHDU?v^rLWv`y$IbnX+Uu3WkD4t`s4 zL^+%z4#Uhg5()V#HqWY$kG#GmiBUsyN1*~GpLBMr?(FWSWM<;LeEHJx!>?hxnucPl z{cvlB$S4fuOD2nF_-f--7s`Ebcdu zl99oJBOs!qi-@2VVH6Sh+?TO-{rYtx$uE$$koHogwxbg>GiRNgob;etu&5-}Lnfh+ zj(yw6hyj|u+Nxsn`p-6`O}4ErFD(%f6Q2?g5I_#)_~`JCf1@ zQc}dY-!bin4+|G8va_>q7}cJok?_?!%0)`y=w|^MTH2o_gbof4&CSi7(`o&q(ADe@ z_gt2SOI6yp!fAv^MnAh@diihMP@NWBtvRmt=JJ_KbfY>L=8by){)*_~Mt7ORH1^Wc z(hVpSWfc{SVq&!W+pBU84&3nj)}TU2Wob^K1;#S@8rLT4ez&kBqcVLv^eUVm=kY_e zlTufIHPo@SIvxqFr&4=3D(a$Ml_%M)P1XQtiu?^yT4{URLJzIG5mx=k#kMQ4w)4p1Lw700coSK>%kdcvLO-)2}xwWlrk;VzI!Ia_g zUTm53uUC!J234L~5G>jerH{H8(KcEZ43_3Y%qmIjA3uKV8Tttoq@du&AU`9cq~aSM z85EI1EGJoDV4&r)hPrx>dFv(i`>J!l$vJed440LaJqrI+$Z1&34);I94cN^}%nc&j z7^<=5Cw>*t-_nWGGSbqIHXl2oy;iGAzpDI!w#+uXv%ep9xWC>MGkgoK395r8tj z66E;|jel7h{3LVx_7mNN1OdC}fE#kEj#N9s?`vsA53OE?rw0fyRr~X+S0ulOtS~K< z;tw7SV_O8T1}seTLP$b=b!k7FBR&UR<%JJqc7sK-kM`X7VY1&**49yh=jMX04Kzd6 zRY-U8U_$ynibV*r`sZY92&S|gwFsvyq$=%T{591Y&F08|Ra8{(TJ&9y zM}OAWd&Za)m6T+hot^W3^YHLcc_)vQIiy)nFDE(E1ZI;iuPprun61 zldWa8d_;0`GJwkdfvu|TF%1!h?8SQhO;Z*@!Ll)vxw*NVL*>Q0NrZHw*H%}d+*irJ zAX=!wI7~P84$ATopNaP^pM&ZZ5FH(@7{GfT7xxu6z%~O-Ev?=`Tmm$(*;wKD^X{PUuOI2U60-VPjkcDStOPWIs&@NOsV3*=uc`DbD!hf>0*`lH z$j#9)yO`Y>+Qs@#vd@-I8oiu?QoZGv92{|dxzk+F%1u{BY)vk+zKuOhW+qWxFk!4s zU2W}xb$^wY+aNOoLrUKv->OSYOw3eX>DViq>8UBpV*N6Eqt}O+uKI=s8M^6ML*K6K z4yct3`y+nGhn}Hfcc@PqP(Way(d@T3RI97KIkCD7=XxzQ&_=eloUz8yF)@sAoH@Qo zeQ0$2U0q#GA?%!aF!tjIiB(^2m!S5YJ2(JNPoV_t#&Z8K{;8}K_4u4WMeN2XAwdu2 zsp`P@dpw`Ly?y6^@8CzXd8my33s0}|?Gt6i^V?A6=H;D2LCnP{Y%Z)rcWyO%|MlzF zwLgDydS~G&y)K0^@*t<^&+=?XGFPlMpr!|xDmv@y>dpW{%Pd9b3%e`?goNOrdK-8a zSb1K*c=1mAVCEU2cxLh2{GiZK`Ks+4bsq@PsuDJmMk6jyy6{SPY11UGMva)~G_D>tf090q9RXit{UCDlP7rfdym@9ICV z!N^qVf0t)a_0f;4sqw37TI|Upm6ViRuzCIRC4*rTKppAvY9DHE8W?BRD=MEped?Lh z%on}CT2u3tU&L)Cs zz_`elz2X`NM|3F%JA2WB3Cyf^u~AXH9*WXK#)T2uFfR2DFl3fPyM!j>j>}NKbubGvGO6|Dp`oGcjW&o&Jch$ei0{!Q8X~NzaRIl+xn7wqbUde9x0>#Jd zH?Ee`?6dFBma}4ZN25pi>+GdP49BK=P2^ z(@kmjFa~H&j`0z(qn+uG6zwd@-l?vP<9d(&j2U+4&x+;bJ8or%4gluu8B5TV*g-gp ztgP#`b#;X{!~6*6aW`GPy*aCdmft!qB2v~1VglePwrW*FD8J@$@?()O+4qEs^|}l& zEjzD{jXn}-B)@p^;l_N|$Lu~Jdl2dY;T3QLPXihhw4XpBk0`Cae`t4Shj*Y6z#+63 z$Mc2|uzCCl=4yV)NP)S31u;OIt(D=g8Z~r+A?o z#z&9Om6bG*NC8zcNXRc!!NiwGnv0$KPOkg&q;J2m#Ff=l;WUBBR z!1!cFvhQitD${$03QH?d{Huqhr8$dL<1qOH?q~v>@iHMH?50I~GZ`*l3$#75r_Y|9 z(qyp(%vA>iBM~_{i^T}^U>|V{S65da;%--0g<^dT%!|uEuwt1@NHEoVtR;5i5#PQk zUb%X;W&Km*T0N=C#Ln+&AUf)SUkWnx-Nl0G0R{Pd<5A~j#YAB;dhfMUuU@|{j;CZ8 z9T*sR)Z5@pcu(^6j zk2-BJV^-<+_0N`5PJpyU=v1N?@DdjO=q3*j_ePtJh}UfbgVAr9w)g2Ay>~&o3E9Pq zkH|E9VDMY4G8|Tk2Ffk$szOZjm0XC`9hlh>t}r*39g?NFKblC=hSEkK!_hluFx>Ae z#bOZTUL7wf)lpte*95}?a$Nwf)tBx507~CE+#dfu;?$AypwyOv&+_8b^z^DAwh1dI zXJcBVIPN>o!QY=(tF2~2c&(mqA5rnOy*jmdHJGoZ_XUI0Ozyi6>EWdvNx#AtVy^4x z=;&^?eESwvswMHBiHEm6q?m-ytA*l$rshRpKJifQi+QC8DTlUEQdFdJQ99p?DJ#2g zLz%>!-5)qQb_9_UW3?|PCWb^|+2_wzGztkiH%uh9fQFVC^LF%nFX?_z zerb1)a`&or`&%JL*;%NxO@MM)!rs<5HMNoIpF4LB-Txsg$$j%zcSgHa9^Oyrxi46@ zA=Dd6Y=#%A^3ziKV-}nY|75vKQSH%Yi5o&S%XSKNQLy*=m>e6MQ8Kfwj7QCnR~LjY zrLBDlN|68j{3B@@nMp`d9-}dsP9ZGTU~=Gf*Ef*DQ#*LiIXF1z7}Nv#Ny@C)Ik2_$ zb66uoIl8448Nz@$oaa*IUD?F^^05F=h_F!p3o{Ey7tGfyXN=9xX4dxE-;&wiT85;= zUmCBWhi=6C>eZ{6VZw|qEPzw|P2V5;z(}0Q6u;iHRe@`%n|=I{mss*L2Zxfc-@ao> zeCxwoo3aI)SB?C)jt|1G!vM0}y$=~s($c7{&-mf{A3_u|`jtS-Xe4FqWetIc{c#@q zoj5f=(2=^-QvIq`L7JPdADXE8*i>!yJ-|268}GDI*euTRw9)XPvh07Ggb@Kynd!>$ zTAVHnSVUyhgkC_@6iF`!V~6<8#2Fz4HFfo;5ZFBn85NU7{GWoAxIepPz~o^+(@cyu zEG1_JI2Bcism{(&k{RBn>s>tJ)l#WC6y{D>&vFRLnHA=KS3zO|gU8o=!ZX>iZGD-G z@ukCB+S=LQd$RwcnfJ^aW^#4Zowm z|6X3tI?_2dS(@?H@+2=&Q|D-1Er%wVwTZFYHT%AW`f|*A1(#tBSk9K@el3nd*&5%& zne!fiwP30ndFZ{D+GdsW?i~tgz@=!*Li%2wt<6w0I&a&zHQ%qJmSJiMq< z>TK`9i$J;;S`YFR>(mDXoP{}7D=%?j^98;Q8ud;-R@FP%Z7<=ruXh8=05#lok#ldi5~7S2;BN zNhpPUESF&;&{Hp>qRx7Gc~!2}Uf6+p<*+osy);%u9Vxa&@$K6;dq`r%B++v1+W}=| zf^QySojv=mpnwRW4uoBoaFE`&GC~Q%ABC7_(NF>}UtUE%Q^hDUgxSH6Q`Seq-0Sm* z>aKPKy+ppYK1RsvXm{@C^32SP?5bC~FdLR;EIMD_8G>UClD~i0FiSIA|6YbJXC-I0 zd><5DH9fs>z!uFaCD7;=4|@iOhIE%Hj*qr$7R8dpf2|Mg0sFtmUYUA#^9mO~f63P? zH-&`C$DW6xI@1-%JxFv73^-$pN~E(NkmVZI7|fl%jwT}^Np)TRzDz&1ySLXGFb~xf zUz;Z{i*D$mrbPs`rw<}5Eyp+PRojm9PXo?fuU1On=hHcemzI<3FLw#fhDQU_u%xe{ z;Vb9;Vne=O9e}aAR?PcbB|(byL4@?27leV>o`O**tF&ri)fiBLu3^6d0vPVZ3)s=& z;^KDJ`1$FTJ7VQ%=ha4C*SKLnaVwniCN{m_0XMWW0w7vJOM2fYajEw-&fRp9XW00) z!SueF+9~nJ=3 z81LyR`a0Ly(V?P!jg6JH79L3N7D0lTm+Q0S^&I9z&_al}Rz@G#d1)z?zgHUW?@L#R zEvncm26E`*tM^2wAy7=KS{gM}#L{~=WwSf_+qi0SyTcWoblb~JTS&?~xoGX$9 z1q4d_mh$;KRhPO`@m6pc#&uVIG_kC6w1MIo#KJB5E-9W1u`>51e5{Lak ziQ@EP4S?I@ohFHy?Ua<1O#}LL;qD?Ryuuj5oGw6)yOq8GQ5}C3S7VS;QZByHDYd>2 z;i+Y^Sr4cqGx4)1s1lxNbmr}+y6J#>&ZAEI1O007Y#ABShXG+$jFsFp|3-wW?@W>E z^*tK%T5aJ5cHk_E+jc|{dN$i#1qB&b*AnOjRWO3SSO%KIlZEj0k@g?&(?pB>Jx#`1KCbqS{mh>e27yZxIXwl8SLRZXW<0KLv5?67dp-hQ>&GuE@F7 zRYQxc=EEj%Vd- z9br=^5)^^sLr0v#`h!ONz(L&(8}Ft0W2+Yd^3V zTTGC&wap*$ngWqX2L4Mo0ZJ(%0Sz)UGS*%$B<>9kz0a0z#klqDW(N)`6)+rrNuCe` zFG$cJO|Q>oA8T5T;VcRlqQk>4e)#a=v_E`PFu+k^G5&0&O^@S=XM{7$pI0grKth!R zHTc#E`cH%(LD!|YM((=0y51qTl@T4q1b!uUy)spxVp>dVySp`Vbv}J)xMD1c19djn zRbBm0FRX%`Y<^KTTzN1!c(lS2~pMHSJ5 zwK`+aj*Tb2Jh5b{hAN-yRM~jN7+QJl;Ghmi(5W-nA)s}I0DM;6Sm;$as+@I8`M$ad zU@Lei4n|Z`Kzk&FVjC~wL_IzhK)GlcN3_>r4mg78xbpJyRKMdR%ju!v;V=*?p9fwb ze;!Qdc}Fo>T>tFZvp8@QgXTj;k9Eb!(Oq%UiZ~1g9zV&7t8oJ*@nBX3mEi#ht?tLcIMjLhXLX`{TkUtsNb)=iQVX ziKwVpkwXIBi>bnGm2-8t=&{D@tH!&#yGT_iSp@m!ewlrW``)jN253Yl|E!FDcJcHL zyy44O0_5JC@FJ^zWoW`WqENhyr|Ls3=^vqpApcXfr?-~|HS&`4^75{6abZ3!SGX)% zR!Q(}7>q>T@#9+Q+~^;C#MB@> z<_W0UR0GF3L$O-jclQuLT%JvU z5-y&>#>?E^9{*&a@)Ec)tyjHoNw^uZC3eRvJw5@=*1fm6va-U72oY*PM>~ux50_rJ zcdsA22}a47MoKKD6__G*r*k3YGES5+HcTZWXii0*-$2-%Dr}<5amt0zkkst>1{_x5 z*t9ZG>oaq6R)=1Y`BPaLNtSCa^rWOrh_zt%6G*ka)K(4-h4(9*vxd$a_!xrg!?-tF zOIL!tqT&6@Ft6WJA9GvDkdu=WKi^Z(_rSdhgLMIn8Gazn>q@xV zz|90eb@!>lklBnm*;*_~FNJYc6MyyJmF6TT8L zAOP~FDW`-~i@{fdJ^o;CdzA~MSi8=$5Z*~<<+JZ9Ug?@-8dzg=eTO05^InZCH%8F1 zVN4Jcz#gzDnbR7hWA4-VBS0nY0P{giNg2Aa;T)HcPzMqoBDc|bEpdA|d}7Ye&lhx_ zClWtCa6-%z7VU3uL(|vO)9cK8An@(25a}n2jvzEz>6zAiJQJwEP$$lT1}cGIWuUz- zgROy*k`m~HK=mwX7+t!`oh+b+P$05k9Jk2~ok2WImttk!yF3VS0OpL#3=F3r!9Z~i z3JyL8DSZPZmEutQ>TD}`2sjPPdlmRI#5|>&!0cP168QNXWvyvtz&eQ7AizN(15%vp&ww5 zIS-9k47s;sfG=zPhJFl8OlN>1m>(&>iI^K8({X@X`8bb4c^pPDLjWMdns)B}CxDiy z5NijgL1hTAuOKghqI*ie!udAPf81a|38xlN&SQM&#ADKk2Z=`sQr%ZbN@Su1=78VVEOB+xk^GtsDPXgGkncwbi+iW((i z`+$2ygC*eI*E!=a{-*@}jzp0=u^z9c1>*FXdR9PeEV*nX9U5ZkB0L=H^*Ljp_i=D= zzQ8E*6h=ds`0#=I$7VB6<$_s6Mo*6h3426LzoV!q4b}`$j1e^rp_-}KuJ&Dpiknxa z;u9!m1~M ze^(zCf6^SMD6QbvpCWvfnYs0X>D>2({)Y`8;8><>124=2^w8GYwscso`hGuH( zItU22xK*)qxXMcaIEr(qo&K7mbnWjEA$O9^JCZoIUk-mX3)4*@gXoch>G#x*Az2pi z)*JAhY9>g*AG3W#f3j2Vk9PhnNsL2c4}uls0gmt#`%|- zp`qc<&JIwJFLUfZZi0lgUXqbvkrp8*{XPe7jTj3H3zaQktId(20v^LViuE`sgvCJl z6P>2_-7!jQdILIv|AG?P_VRE>Vd6qi7~n~?I2|#uYL&n+NNJ%xJw3v!9qsLn;AII1 zE$PltZXvZNDKRl07PIkL6va(*Jkak>p`dya0NM`r9ByiAGJ#|&_B{gawzjnu7qtdi zoCde%U;V}GP0{XVO zt*s7H{x{5bCeVq>7V|&9Q@!>gF%b-+=3xCoAI6Xn1fdhV0P1dQc{Q|BN-X95v|19D;=)4jvPbMcoq=aDo+$ufxd=+)w4)!}Ph+z$}co z`J{sIx`fRc8I=IF1R~NkQg5J*fyV+pGNKn16NA{Qz&CLL8e#-sg4&Lbj?3Ix+L$U* z(48@*)`G<}Abi~$7Ej?W$_f~HYco`I9-KI3(+=)?ck@nJ)ZanZ)JTAxFc3oL6tEAU zMl1kM<3hEW@5`f>l#=3x5z=#;aTfwUQ2sTu(c#`^NO-uktSmMR4xkZ4!XHkCvLrpS zr)Ohiw1J@(0YXq|g9@b>7#V-y0t7$#!3%E?{?C8?pSfZ0S65@Pa&X9adyAsJK*cdP zKj0%lY_z{Xz$6h85<>a=`=h|mNV%~i`poVLP=&-46pxl}octQyz=47LQ27VmHO>5x zKJnZ#o|z86e_;kRR=cLgMre4WAzk25ASNyrg`VLU{bpgeIOPVh)e}w3c_%lwU|?K` z)8Hl;87&9H)tsIvkcR%dmH(3)7`n)CR$U!8oa#&t^T}na<-{gD2%n!fr4fw_Xl^zI zl9!r~?w<{~XW=6Gy@}?Rn$oh`EQS^xvlJp%`2P8aGaGVpH5oZMHQL>2C6b;zf6i(W zoKF1DZ*1uhKvd=}q|)x*Q2%~v_B#*!KfeEbDWj?RB?g|4o{elgJd`>*GQyjsh1^Y@ zDPuSn{(RMUd&9&y#UUm$^dB#B4?EeVn8~$C&GM18AL)z2oA<6MazFGJsjc%Nx-=Vh zbU6CZHXnt04;Bh0)4YFH=2Y{P)KuK2NQ=unJm=35GEetpDQaq6ccDu2+K#}vkfU7r z^jXzI3yYMDN2`jT?$krk4g%vQ%s9AEt!04c0*4|@R!?5MAc7eR2db5lry|2y-`$_& z2m}B{O$rD(P(CLY7M_F5VGIg&oQNCeMclwfZbv7lLfcVcBwe7BqWmG2jas9w-!HMI zeEaroJTIgVBV%fxbk;>dKk<8TfZ}hTzj}q6*l6!&$6`?_DOowWV40EeC?O`4NRr~F z|Js^81ULVH?aD~`4oCwJjU47ELE7ShI*&$B;_xVNR1pyoE@N&$0)j6B>&=@tE@P|U zh|POY%6Q|(nsQyH)Jx)LYozz7;kiYBYW@(|zB=x6epqdluC6GiBfkUKYS z-mL3ZkwAN`l%GQt0LrNZ6b8nZFJOvtIM{JuzKgiid(3~%#WD&D>u3uoDt_zFswpo& z{p3lKAD6(!?OXnApj2#<=ANSTkzE1@?pN^jazlj?jzv6-j90FlCFe3Yi=q*O9IH z=@lSnpr79(HL+Mdan8p_#c0DM$}2SOvgdrsSxLxq+x5148CPwsHxb4Bc`K_w%#qy# zb3L*u^+gDdL+%`fNGga3ji#CdqhcdW@Hi;M9fycqiA~MlzJXze1#G5(U&D~Of6x{< z$pPs5VApsV6N3%xj%Ki?2HD+XANo0(ZVr@tY!o1jJT-X=l=W~4{#`SdpD|b$E??YPjI2U`uD96gTzPUo zR87DNJsL%MQlC`n$NY|c>KhwRqgJZ64PeGDP@4vf&@#+bxpo>@G;WJ_n%w(^rvXbh zx3qi(cTyn?z=%N^JORLY$mLCgy^Iv~(4v1$)&Vd$${);HvJHwzWWOhr#L=sWg7Rc+ ztPW?Q-p1=3dDTQ}3FveVjvNUrAUwLR_XU}E zf*)z)qZ%&~a>WL3-pDxq>mC(Kmj;G(o6%8HQa+t|2^wkq>K`n>yRsAkiHt~*AbA#i z{8$UB4-PqbtZbwO_|WVU-n=n_Y1O49fzRp^Ha^u^)W9bTLhw;8(qvRtPO9KpJ`cbD z;KAa>oY>fVRfaHJ3&Va+?3*{Cz`y=8WY2@UA<27P9#IFtJxm3o{|&#R1KmRe7rBjj zoC6Q2y|Xh|jmW?gkASxF(A{N_X3oNZcmPnb%ypRx9>FCCup%e2N1_qi9RPFN^cs`~N!XFMebw>Q_N3+js z-6|HvcWa>v5>w2F{%i}LC>>vE8vGPF)y9?a@b}cI`LQad*99Uy>=yOF!3A-fG)}B3j;;)Hn;>q^#vdM`yoLXk90W%a^D1Y zn^Q9JN&H9aNJ=6A%P3gJ(*UkPA*lnyQN(#t=AOY-*j1pA@D+ub5GPRb6aa9bOD6$v zg5!o3vD|}yO3vhV98h;i_X3yS{NN`RL?HpT6I zh}#w#Uvq0~EpXU~#0y&zD;jdpCM2U`?@jLfc7{^CZi*dsceDg=rK?V7WsZzy2}|U2 z(7h*W)4ZRhk){T_4U(Ro!te|W9HwPqCf$u_(&F&%Qsu_$-M8bKpZxhV5TxTgb6m?9 z3jXaWNbxUd>I#lz>-?e8QrlPRnUXk&YZjcW6ugg!5Gw*QE}@VS_`1f2iSgqjw>)3S zfjHjBB*-5k4HQwyVUk2?vWO#s4^j&NM^8h;akO$qE25eh{XsPaN#(>8Kw8eu|3H zoaYVt>?INqd@nYN@ci#5VPSbmsp-RfInwMvhJpd95zOwVP>Ad>+nzXl#bg_q67#dO zYfgtR9GaUisHlOej&x!u^x%}$Fgd>u8w3|GX|G~B2VU(5IZn%-KYg0Y?@-@~g#P%> z>!tc5ggJmc0q}S1z@X9d>M`tIAPyNAxHEh0pnKlAbLR`_zm2fUZi33E|s{Bj?mZp%A*8=vtHOA;|9M18jN^7PCeB?r#YE@#EgRit+x>`l(kqr>fh zSwLmSX7%x<0rS!!?1zy!+#p3wqy*DtN7tX}rGBLn&wCzqVw(0?0@}B~+`+@%{)Yd; z)z?Z6-{NPiU`Whel82yG94%9ON-M%?-0)oDhVwl3SuCFji=@G4Hp85cq66L}un|!$ zJex}SMz{gymVs9#ZJL1Hfb-B>oatc(Jr^)GOGC=^%K1_=z9UGJL; zii;b-3A_dXgAvFjutU}AyNzn)B!YDtq6+(+r#6^)Pg!mwml`R$j)SbV>`Yw%3g}b& zG%};19)iJ1%r_iAoN38X8>{2=!0ua0goTBjK_O~~rIwHu=q{%^D;?bQF$$>l zipJsB9~$YLpuxDWR&5v9jf;a<53%v!;N#0YdUOq&fCfjS+x(9ZKCCb%0DT#nCf7aV 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

;+Mx*}f#yo9TqaE{I5%;GpRcef_z9$#EJ zg|6JwzX&#_L2%K&0w&BDh9sRJPT_Qz0p6kGdVX0=jy>n*_aWTn7G3={t^|XJL>88q74MJJOaq8__0uzI|@FRpuxVm0lU41f6 zoT?2N!Hd||h4OBT^g)LS?0Kc7rQ;doBSqL*T6KQYa(g-f=AgD$eKw~!BZN0zN`g;l ziig@SS7yLfg_!}NzCvVFR86)jFp z*EUfm1on`&1?&XSbcErCc9xtB+oEcln>XU9IS3RN1Sc+?&?GFXJVFE9{nhUl{%a-!3xtJi<|{FxM#QE)|CLKRrDo}URURBUj7n+ddE>o4{9 z_6man$!=BISo{kk1fNCB9gGMKC%q@B_ggT8X#v(MO5*|83dFaP&1!lIz01KU{1A>btsj-#3>auXIR z+Mo10q_7jZLXlP4)Z|cn$ZKS@mVW$fWBua$D3)l;h^`njgX|J<_|S*|s|w}-WjGl}@z-L{kqbaYK^oprRH6B^gZ$HSvRZ+UGr8sRK!i?= zDMUUw|3Vt--S^5EJh;YQZ^$7Dm8Js^K$_JA|JiZVrZL!2$*K;=RFn}(&eF1Yd_+cD z2h8x`>6ix_Rywwdyy20L=`cLB%qR-wU_b&K^(MABxO2zq<#yT?2Z2kV`5qEdr$=ea z$t?hTlcTFEFX{?9o=IPS8eUJiD!A9 Date: Wed, 24 Jun 2026 07:43:38 +0200 Subject: [PATCH 12/19] planemo against 26 --- .github/workflows/test_planemo.yml | 104 ++++++++++++++--------------- 1 file changed, 52 insertions(+), 52 deletions(-) diff --git a/.github/workflows/test_planemo.yml b/.github/workflows/test_planemo.yml index dd5d0a413b..2cfa48d4a5 100644 --- a/.github/workflows/test_planemo.yml +++ b/.github/workflows/test_planemo.yml @@ -2,59 +2,59 @@ name: tests_planemo on: [push, pull_request, workflow_dispatch] env: - GALAXY_BRANCH: release_24.1 + GALAXY_BRANCH: release_26.0 defaults: - run: - shell: bash -l {0} + run: + shell: bash -l {0} jobs: - planemo_test: - name: Planemo test - runs-on: ubuntu-latest - strategy: - matrix: - chunk: [1, 2, 3] - steps: - - uses: actions/checkout@v4 - - uses: conda-incubator/setup-miniconda@v3 - with: - miniconda-version: "latest" - auto-activate-base: true - python-version: "3.12" - - name: get samtools - run: | - conda install -c conda-forge -c bioconda samtools - - name: pip install - run: | - pip install .[actions] - - name: planemo - run: | - ./.planemo.sh ${{ matrix.chunk }} ${{ env.GALAXY_BRANCH }} - - uses: actions/upload-artifact@v4 - with: - name: 'Tool test output ${{ matrix.chunk }}' - path: upload - planemo_combine_outputs: - name: Combine chunked test results - needs: planemo_test - runs-on: ubuntu-latest - steps: - - uses: actions/download-artifact@v4 - with: - path: artifacts - - name: Combine outputs - uses: galaxyproject/planemo-ci-action@v1 - id: combine - with: - mode: combine - html-report: true - - uses: actions/upload-artifact@v4 - with: - name: 'All tool test results' - path: upload - - name: Check outputs - uses: galaxyproject/planemo-ci-action@v1 - id: check - with: - mode: check \ No newline at end of file + planemo_test: + name: Planemo test + runs-on: ubuntu-latest + strategy: + matrix: + chunk: [1, 2, 3] + steps: + - uses: actions/checkout@v4 + - uses: conda-incubator/setup-miniconda@v3 + with: + miniconda-version: "latest" + auto-activate-base: true + python-version: "3.12" + - name: get samtools + run: | + conda install -c conda-forge -c bioconda samtools + - name: pip install + run: | + pip install .[actions] + - name: planemo + run: | + ./.planemo.sh ${{ matrix.chunk }} ${{ env.GALAXY_BRANCH }} + - uses: actions/upload-artifact@v4 + with: + name: "Tool test output ${{ matrix.chunk }}" + path: upload + planemo_combine_outputs: + name: Combine chunked test results + needs: planemo_test + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v4 + with: + path: artifacts + - name: Combine outputs + uses: galaxyproject/planemo-ci-action@v1 + id: combine + with: + mode: combine + html-report: true + - uses: actions/upload-artifact@v4 + with: + name: "All tool test results" + path: upload + - name: Check outputs + uses: galaxyproject/planemo-ci-action@v1 + id: check + with: + mode: check From d92ab2aa922770cb1b2428fa95bd1eb783a26a48 Mon Sep 17 00:00:00 2001 From: WardDeb Date: Wed, 24 Jun 2026 08:04:18 +0200 Subject: [PATCH 13/19] plotEnrichment fix --- .../test-data/plotEnrichment_output.png | Bin 36874 -> 56155 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/galaxy/wrapper/test-data/plotEnrichment_output.png b/galaxy/wrapper/test-data/plotEnrichment_output.png index 6302d954538f365f8fcd31ed62708b5b1485bbac..94d402bc3c8f79b30df19510ce18dc0df7855237 100644 GIT binary patch literal 56155 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 KDQUmCZv0=B$`ED% literal 36874 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 From e79f57d3bd47df09354bcc79b71c526e47b7345e Mon Sep 17 00:00:00 2001 From: WardDeb Date: Wed, 24 Jun 2026 08:15:01 +0200 Subject: [PATCH 14/19] fix plotCoverage --- .../test-data/plotCoverage_result1.png | Bin 46704 -> 56942 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/galaxy/wrapper/test-data/plotCoverage_result1.png b/galaxy/wrapper/test-data/plotCoverage_result1.png index e22727ca52f06f1dd6875587d482885ff27505e5..6669cb87ae1c821ec7a959acef30041541b4d844 100644 GIT binary patch literal 56942 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

Vc;aTN+= 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 Og0)R$Ys}_D?*9+5vI>R( From f5a3450b97a2b5462694f0b77e610631c877ec5a Mon Sep 17 00:00:00 2001 From: WardDeb Date: Wed, 24 Jun 2026 08:25:12 +0200 Subject: [PATCH 15/19] fix plotCorrelation --- .../test-data/plotCorrelation_result1.png | Bin 27348 -> 24147 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/galaxy/wrapper/test-data/plotCorrelation_result1.png b/galaxy/wrapper/test-data/plotCorrelation_result1.png index c2373582bbfbd0aa836fda2d979b89436ad4f34d..535715ea094838cf89b0bff794ec30eb1a8b8210 100644 GIT binary patch literal 24147 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 S=9%>N%stw_Jlth=@&5q{hfG8O literal 27348 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%0Dqw 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 From 211689aedfee5c8731fafbcc1b24497d1e116e92 Mon Sep 17 00:00:00 2001 From: WardDeb Date: Wed, 24 Jun 2026 08:39:52 +0200 Subject: [PATCH 16/19] fix planemo test bamPEfragmentsize --- .../bamPEFragmentSize_histogram_result1.png | Bin 16570 -> 18187 bytes pydeeptools/deeptools/bamPEFragmentSize.py | 1 - 2 files changed, 1 deletion(-) diff --git a/galaxy/wrapper/test-data/bamPEFragmentSize_histogram_result1.png b/galaxy/wrapper/test-data/bamPEFragmentSize_histogram_result1.png index 25ae59a92964744f94d3990a978800a6f59a973d..af9abe4216ccccfa35e269e1a342a687ef4b11de 100644 GIT binary patch literal 18187 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 Q4@Ksz!kN@xF8=mE0QOs*@c;k- diff --git a/pydeeptools/deeptools/bamPEFragmentSize.py b/pydeeptools/deeptools/bamPEFragmentSize.py index 9569abbe66..362b118555 100755 --- a/pydeeptools/deeptools/bamPEFragmentSize.py +++ b/pydeeptools/deeptools/bamPEFragmentSize.py @@ -391,7 +391,6 @@ def main(args=None): parser.print_help() return args = parser.parse_args(args) - print(args) fraglengths = {} readlengths = {} of = None From e8a06829ca308633dd4b45e40f4cdd9b5964f44b Mon Sep 17 00:00:00 2001 From: WardDeb Date: Wed, 24 Jun 2026 09:03:21 +0200 Subject: [PATCH 17/19] fix bamCoverage planemo tests --- galaxy/wrapper/test-data/bamCoverage_result1.bw | Bin 673 -> 549 bytes galaxy/wrapper/test-data/bamCoverage_result2.bw | Bin 704 -> 681 bytes galaxy/wrapper/test-data/bamCoverage_result6.bw | Bin 667 -> 545 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/galaxy/wrapper/test-data/bamCoverage_result1.bw b/galaxy/wrapper/test-data/bamCoverage_result1.bw index 695105d3785003557dd9121846e86a6319bce72e..11273f50764f12e6973badfb9365fc7369f39a61 100644 GIT binary patch delta 126 zcmZ3;x|Bsy?N5IP3j+hgTt*-P1QAgB?BqZu;fXq;6LXGCEYO~8z-VNi+|V?akEh_k zi35Dg^cy{;)dgzV&ulATx_JITj-a~0U&b?b4>=aqH{Rs!Q<&8%c%-a=;iAE2#>vYW TLm1Ca{==xvV+*l^0c0rvXG_AKco@z6c$lj4c)stiW?(Qo b%_=M}tD12+Z=GCC(WG|lDXDL8QA0N*lw z#*MoBSD1I~V?Oe*pLMU}7h{FIJ0DJQyVNs0`abztW#fx@hdZAxpXPSiY+z)d5$#>k zlriHb!{nWeA&fUC^D$}bctVV3sF;)7z{sn?#uQx_m|w1@_y3vq=EVs`*0K!|O^nP8 d3CqHBqo~R?k>Bt0;$k-St$QbT=W+P{_1B1iG za)l*4noKW^-8hzyT*7OqYh_KXz1yNVm43~-U)%odxyYSw+kV`epV`e9 z`QO8u=frD6z8Qv7L+5N<6p<7&k>%d}>-L=2tC=S+Wej0_JNXx*wq`8EI);il$qkIW z8fgg$8=i`PElYp&DSw}dHJ94<%Z-hR%UPJ&CVMlfF=a4K{>`W)0&}D~R5Qp|04@eh Ae*gdg diff --git a/galaxy/wrapper/test-data/bamCoverage_result6.bw b/galaxy/wrapper/test-data/bamCoverage_result6.bw index 969d8052a53fb20210f30ace528c0cc72aae4a45..e539b016699625723c05d0297ce7ae1d351b90b1 100644 GIT binary patch delta 100 zcmbQux{yUu?N5IP3j+hgOhzC91QAgB Date: Wed, 24 Jun 2026 09:27:49 +0200 Subject: [PATCH 18/19] fix bamCompare --- galaxy/wrapper/test-data/bamCompare_result2.bw | Bin 515 -> 509 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/galaxy/wrapper/test-data/bamCompare_result2.bw b/galaxy/wrapper/test-data/bamCompare_result2.bw index 75b87e500063c9d21e953a38ecc0d76b8ab547eb..a25d50888edaf7632b8cfbfbe667bdb245aa824a 100644 GIT binary patch delta 71 zcmZo>`O7S+_NTvtg@J*glo3b(K?Iaux>3@Lk+-2~E+0?90ge`qjcnDE%NRo$mrg#z NsLdk^QOp3+4FFBa5e)zU delta 77 zcmey%+{_}W_NTvtg@J*gnh{6 Date: Wed, 24 Jun 2026 10:59:44 +0200 Subject: [PATCH 19/19] action runner versions update, macos runner to latest --- .github/workflows/pypi.yml | 52 ++-- .github/workflows/test_planemo.yml | 10 +- .github/workflows/wheels.yml | 375 ++++++++++++++--------------- 3 files changed, 218 insertions(+), 219 deletions(-) diff --git a/.github/workflows/pypi.yml b/.github/workflows/pypi.yml index 71a57b0719..42fc17a097 100644 --- a/.github/workflows/pypi.yml +++ b/.github/workflows/pypi.yml @@ -1,33 +1,33 @@ name: pypi upload on: - create: - tags: - - '*' + create: + tags: + - "*" defaults: - run: - shell: bash -l {0} + run: + shell: bash -l {0} jobs: - pypi: - if: ${{ startsWith(github.ref, 'refs/tags/') }} - name: upload to pypi - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: '3.12' - cache: 'pip' - - name: build - run: | - pip install .[actions] - rm -f dist/* - python -m build - - name: upload - env: - TWINE_USERNAME: "__token__" - TWINE_PASSWORD: ${{ secrets.pypi_password }} - run: | - twine upload dist/* + pypi: + if: ${{ startsWith(github.ref, 'refs/tags/') }} + name: upload to pypi + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + - uses: actions/setup-python@v6 + with: + python-version: "3.12" + cache: "pip" + - name: build + run: | + pip install .[actions] + rm -f dist/* + python -m build + - name: upload + env: + TWINE_USERNAME: "__token__" + TWINE_PASSWORD: ${{ secrets.pypi_password }} + run: | + twine upload dist/* diff --git a/.github/workflows/test_planemo.yml b/.github/workflows/test_planemo.yml index 2cfa48d4a5..063ffb4046 100644 --- a/.github/workflows/test_planemo.yml +++ b/.github/workflows/test_planemo.yml @@ -16,8 +16,8 @@ jobs: matrix: chunk: [1, 2, 3] steps: - - uses: actions/checkout@v4 - - uses: conda-incubator/setup-miniconda@v3 + - uses: actions/checkout@v7 + - uses: conda-incubator/setup-miniconda@v4 with: miniconda-version: "latest" auto-activate-base: true @@ -31,7 +31,7 @@ jobs: - name: planemo run: | ./.planemo.sh ${{ matrix.chunk }} ${{ env.GALAXY_BRANCH }} - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: "Tool test output ${{ matrix.chunk }}" path: upload @@ -40,7 +40,7 @@ jobs: needs: planemo_test runs-on: ubuntu-latest steps: - - uses: actions/download-artifact@v4 + - uses: actions/download-artifact@v8 with: path: artifacts - name: Combine outputs @@ -49,7 +49,7 @@ jobs: with: mode: combine html-report: true - - uses: actions/upload-artifact@v4 + - uses: actions/upload-artifact@v7 with: name: "All tool test results" path: upload diff --git a/.github/workflows/wheels.yml b/.github/workflows/wheels.yml index 76c439767b..2a8dd339bc 100644 --- a/.github/workflows/wheels.yml +++ b/.github/workflows/wheels.yml @@ -3,200 +3,199 @@ name: build wheels # Also, see: https://github.com/jackh726/bigtools/blob/master/.github/workflows/release-python.yml on: - push: - pull_request: + push: + pull_request: permissions: - contents: read + contents: read jobs: + linux: + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: ubuntu-22.04 + target: x86_64 + - runner: ubuntu-22.04 + target: aarch64 + steps: + - uses: actions/checkout@v7 + - uses: actions/setup-python@v5 + with: + python-version: 3.x + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --release --out dist --find-interpreter + # sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} + manylinux: 2_28 + before-script-linux: | + set -ex + cat /etc/*release* + if [ "${{ matrix.platform.target }}" = "x86_64" ]; then + # maturin-action's manylinux switches to AlmaLinux 8 + dnf install -y epel-release && dnf update -y + dnf install -y gcc gcc-c++ make perl curl clang xz-devel pkgconfig + ## we've vendored openssl via Cargo.toml anyway, so this part is no longer used... + # dnf install -y openssl-devel + # export OPENSSL_INCLUDE_DIR=$(pkg-config --variable=includedir openssl) + # export OPENSSL_LIB_DIR=$(pkg-config --variable=libdir openssl) + # export OPENSSL_DIR="$OPENSSL_LIB_DIR/ssl" + elif [ "${{ matrix.platform.target }}" = "aarch64" ]; then + # cross-compiling on Ubuntu 22.04 + ## We're vendoring openssl because libssl-dev:aarch64 is not available! + apt-get update + apt-get install -y build-essential perl curl clang liblzma-dev pkg-config \ + gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-dev-arm64-cross crossbuild-essential-arm64 + # export OPENSSL_LIB_DIR=/usr/lib/aarch64-linux-gnu + # export OPENSSL_INCLUDE_DIR=/usr/include/aarch64-linux-gnu + # export OPENSSL_DIR=/usr/lib/aarch64-linux-gnu + # export OPENSSL_NO_VENDOR=1 + fi + # export OPENSSL_NO_VENDOR=1 + # if [ -z "$OPENSSL_LIB_DIR" ] || [ -z "$OPENSSL_INCLUDE_DIR" ]; then + # echo "OpenSSL development files are not installed or pkg-config is not configured correctly." + # exit 1 + # fi + # env | grep SSL # for debugging when rust crate fails to find headers + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: wheels-linux-${{ matrix.platform.target }} + path: dist - linux: - runs-on: ${{ matrix.platform.runner }} - strategy: - matrix: - platform: - - runner: ubuntu-22.04 - target: x86_64 - - runner: ubuntu-22.04 - target: aarch64 - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: 3.x - - name: Build wheels - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.platform.target }} - args: --release --out dist --find-interpreter - # sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} - manylinux: 2_28 - before-script-linux: | - set -ex - cat /etc/*release* - if [ "${{ matrix.platform.target }}" = "x86_64" ]; then - # maturin-action's manylinux switches to AlmaLinux 8 - dnf install -y epel-release && dnf update -y - dnf install -y gcc gcc-c++ make perl curl clang xz-devel pkgconfig - ## we've vendored openssl via Cargo.toml anyway, so this part is no longer used... - # dnf install -y openssl-devel - # export OPENSSL_INCLUDE_DIR=$(pkg-config --variable=includedir openssl) - # export OPENSSL_LIB_DIR=$(pkg-config --variable=libdir openssl) - # export OPENSSL_DIR="$OPENSSL_LIB_DIR/ssl" - elif [ "${{ matrix.platform.target }}" = "aarch64" ]; then - # cross-compiling on Ubuntu 22.04 - ## We're vendoring openssl because libssl-dev:aarch64 is not available! - apt-get update - apt-get install -y build-essential perl curl clang liblzma-dev pkg-config \ - gcc-aarch64-linux-gnu g++-aarch64-linux-gnu libc6-dev-arm64-cross crossbuild-essential-arm64 - # export OPENSSL_LIB_DIR=/usr/lib/aarch64-linux-gnu - # export OPENSSL_INCLUDE_DIR=/usr/include/aarch64-linux-gnu - # export OPENSSL_DIR=/usr/lib/aarch64-linux-gnu - # export OPENSSL_NO_VENDOR=1 - fi - # export OPENSSL_NO_VENDOR=1 - # if [ -z "$OPENSSL_LIB_DIR" ] || [ -z "$OPENSSL_INCLUDE_DIR" ]; then - # echo "OpenSSL development files are not installed or pkg-config is not configured correctly." - # exit 1 - # fi - # env | grep SSL # for debugging when rust crate fails to find headers - - name: Upload wheels - uses: actions/upload-artifact@v4 - with: - name: wheels-linux-${{ matrix.platform.target }} - path: dist + musllinux: + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: ubuntu-22.04 + target: x86_64 + - runner: ubuntu-22.04 + target: aarch64 + steps: + - uses: actions/checkout@v7 + - uses: actions/setup-python@v5 + with: + python-version: 3.x + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --release --out dist --find-interpreter + # sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} + manylinux: musllinux_1_2 + before-script-linux: | + apt-get update + apt-get install -y musl-tools musl-dev + if [ "${{ matrix.platform.target }}" = "aarch64" ]; then + apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu + fi + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: wheels-musllinux-${{ matrix.platform.target }} + path: dist - musllinux: - runs-on: ${{ matrix.platform.runner }} - strategy: - matrix: - platform: - - runner: ubuntu-22.04 - target: x86_64 - - runner: ubuntu-22.04 - target: aarch64 - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: 3.x - - name: Build wheels - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.platform.target }} - args: --release --out dist --find-interpreter - # sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} - manylinux: musllinux_1_2 - before-script-linux: | - apt-get update - apt-get install -y musl-tools musl-dev - if [ "${{ matrix.platform.target }}" = "aarch64" ]; then - apt-get install -y gcc-aarch64-linux-gnu g++-aarch64-linux-gnu - fi - - name: Upload wheels - uses: actions/upload-artifact@v4 - with: - name: wheels-musllinux-${{ matrix.platform.target }} - path: dist + # windows: + # runs-on: ${{ matrix.platform.runner }} + # strategy: + # matrix: + # platform: + # - runner: windows-latest + # target: x64 + # - runner: windows-latest + # target: x86 + # steps: + # - uses: actions/checkout@v4 + # - uses: actions/setup-python@v5 + # with: + # python-version: 3.x + # architecture: ${{ matrix.platform.target }} + # - name: Install And Configure Dependencies + # env: + # VCPKG_DEFAULT_TRIPLET: ${{ matrix.platform.target }}-windows + # OPENSSL_DIR: ${{ github.workspace }}/vcpkg/installed/${{ matrix.platform.target }}-windows + # OPENSSL_ROOT: ${{ github.workspace }}/vcpkg/installed/${{ matrix.platform.target }}-windows + # LZMA_ROOT: ${{ github.workspace }}/vcpkg/installed/${{ matrix.platform.target }}-windows + # run: | + # vcpkg install openssl liblzma + # - name: Build wheels + # uses: PyO3/maturin-action@v1 + # with: + # target: ${{ matrix.platform.target }} + # args: --release --out dist --find-interpreter + # # sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} + # - name: Upload wheels + # uses: actions/upload-artifact@v4 + # with: + # name: wheels-windows-${{ matrix.platform.target }} + # path: dist - # windows: - # runs-on: ${{ matrix.platform.runner }} - # strategy: - # matrix: - # platform: - # - runner: windows-latest - # target: x64 - # - runner: windows-latest - # target: x86 - # steps: - # - uses: actions/checkout@v4 - # - uses: actions/setup-python@v5 - # with: - # python-version: 3.x - # architecture: ${{ matrix.platform.target }} - # - name: Install And Configure Dependencies - # env: - # VCPKG_DEFAULT_TRIPLET: ${{ matrix.platform.target }}-windows - # OPENSSL_DIR: ${{ github.workspace }}/vcpkg/installed/${{ matrix.platform.target }}-windows - # OPENSSL_ROOT: ${{ github.workspace }}/vcpkg/installed/${{ matrix.platform.target }}-windows - # LZMA_ROOT: ${{ github.workspace }}/vcpkg/installed/${{ matrix.platform.target }}-windows - # run: | - # vcpkg install openssl liblzma - # - name: Build wheels - # uses: PyO3/maturin-action@v1 - # with: - # target: ${{ matrix.platform.target }} - # args: --release --out dist --find-interpreter - # # sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} - # - name: Upload wheels - # uses: actions/upload-artifact@v4 - # with: - # name: wheels-windows-${{ matrix.platform.target }} - # path: dist + macos: + runs-on: ${{ matrix.platform.runner }} + strategy: + matrix: + platform: + - runner: macos-latest + target: x86_64 + - runner: macos-latest + target: aarch64 + steps: + - uses: actions/checkout@v7 + - uses: actions/setup-python@v5 + with: + python-version: 3.x + - name: Build wheels + uses: PyO3/maturin-action@v1 + with: + target: ${{ matrix.platform.target }} + args: --release --out dist --find-interpreter + # sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} + - name: Upload wheels + uses: actions/upload-artifact@v4 + with: + name: wheels-macos-${{ matrix.platform.target }} + path: dist - macos: - runs-on: ${{ matrix.platform.runner }} - strategy: - matrix: - platform: - - runner: macos-13 - target: x86_64 - - runner: macos-14 - target: aarch64 - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-python@v5 - with: - python-version: 3.x - - name: Build wheels - uses: PyO3/maturin-action@v1 - with: - target: ${{ matrix.platform.target }} - args: --release --out dist --find-interpreter - # sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} - - name: Upload wheels - uses: actions/upload-artifact@v4 - with: - name: wheels-macos-${{ matrix.platform.target }} - path: dist + sdist: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v7 + - name: Build sdist + uses: PyO3/maturin-action@v1 + with: + command: sdist + args: --out dist + # sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} + - name: Upload sdist + uses: actions/upload-artifact@v4 + with: + name: wheels-sdist + path: dist - sdist: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - name: Build sdist - uses: PyO3/maturin-action@v1 - with: - command: sdist - args: --out dist - # sccache: ${{ !startsWith(github.ref, 'refs/tags/') }} - - name: Upload sdist - uses: actions/upload-artifact@v4 - with: - name: wheels-sdist - path: dist - - release: - name: Release - runs-on: ubuntu-latest - if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} - needs: [linux, macos, sdist] - permissions: - id-token: write - contents: write - attestations: write - steps: - - uses: actions/download-artifact@v4 - - name: Generate artifact attestation - uses: actions/attest-build-provenance@v1 - with: - subject-path: 'wheels-*/*' - - name: Publish to PyPI - if: ${{ startsWith(github.ref, 'refs/tags/') }} - uses: PyO3/maturin-action@v1 - env: - MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} - with: - command: upload - args: --non-interactive --skip-existing wheels-*/* + release: + name: Release + runs-on: ubuntu-latest + if: ${{ startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' }} + needs: [linux, macos, sdist] + permissions: + id-token: write + contents: write + attestations: write + steps: + - uses: actions/download-artifact@v4 + - name: Generate artifact attestation + uses: actions/attest-build-provenance@v1 + with: + subject-path: "wheels-*/*" + - name: Publish to PyPI + if: ${{ startsWith(github.ref, 'refs/tags/') }} + uses: PyO3/maturin-action@v1 + env: + MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} + with: + command: upload + args: --non-interactive --skip-existing wheels-*/*