diff --git a/bio/reference/ensembl-biomart-table/environment.linux-64.pin.txt b/bio/reference/ensembl-biomart-table/environment.linux-64.pin.txt new file mode 100644 index 00000000000..a1d5a4bc057 --- /dev/null +++ b/bio/reference/ensembl-biomart-table/environment.linux-64.pin.txt @@ -0,0 +1,244 @@ +# This file may be used to create an environment using: +# $ conda create --name --file +# platform: linux-64 +@EXPLICIT +https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2#d7c89558ba9fa0495403155b64376d81 +https://conda.anaconda.org/conda-forge/noarch/_r-mutex-1.0.1-anacondar_1.tar.bz2#19f9db5f4f1b7f5ef5f6d67207f25f38 +https://conda.anaconda.org/conda-forge/noarch/_sysroot_linux-64_curr_repodata_hack-3-h69a702a_16.conda#1c005af0c6ff22814b7c52ee448d4bea +https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.7.4-hbcca054_0.conda#23ab7665c5f63cfb9f1f6195256daac6 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2#0c96522c6bdaed4b1566d11387caaf45 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2#34893075a5c9e55cdafac56607368fc6 +https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2#4d59c254e01d9cde7957100457e2d5fb +https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_2.conda#cbbe59391138ea5ad3658c76912e147f +https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.40-hf3520f5_7.conda#b80f2f396ca2c28b8c14c437a4ed1e74 +https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-14.1.0-h5d3d1c9_100.conda#6d4f65dc440f7b3422113b135be19703 +https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-14.1.0-h5d3d1c9_100.conda#cedc62fd8c4cf28f23d3cd5db7839e99 +https://conda.anaconda.org/conda-forge/linux-64/pandoc-3.2.1-ha770c72_0.conda#b39b12d3809e4042f832b76192e0e7e8 +https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-4_cp312.conda#dccc2d142812964fcc6abdc97b672dff +https://conda.anaconda.org/conda-forge/noarch/tzdata-2024a-h0c530f3_0.conda#161081fc7cec0bfda0d86d7cb595f8d8 +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2#f766549260d6815b0c52253f1fb1bb29 +https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-3.10.0-h4a8ded7_16.conda#ff7f38675b226cfb855aebfc32a13e31 +https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.1.0-h77fa898_0.conda#ae061a5ed5f05818acdf9adab72c146d +https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2#73aaf86a425cc6e73fcf236a5a46396d +https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2#fee5683a3f04bd15cbd8318b096a27ab +https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.17-h4a8ded7_16.conda#223fe8a3ff6d5e78484a9d58eb34d055 +https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.40-ha1999f0_7.conda#3f840c7ed70a96b5ebde8044b2f36f32 +https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.1.0-h77fa898_0.conda#ca0fad6a41ddaef54a153b78eccb5037 +https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda#62ee74e96c5ebb0af99386de58cf9553 +https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.32.2-h4bc722e_0.conda#8024af1ee7078e37fa3101c0a0296af2 +https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2#ac7bc6a654f8f41b352b38f4051135f8 +https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2#30186d27e2c9fa62b45fb1476b7200e3 +https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.20-hd590300_0.conda#8e88f9389f1165d7c0936fe40d9a9a79 +https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda#172bf1cd1ff8629f2b1179945ed45055 +https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.2-h59595ed_0.conda#e7ba12deb7020dd080c6c70e7b6f6a3d +https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2#d645c6d2ac96843a2bfaccd2d62b3ac3 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.1.0-hc5f4f2c_0.conda#6456c2620c990cd8dde2428a27ba0bc5 +https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda#d66573916ffcf376178462f1b61c941e +https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda#ea25936bb4080d843790b586850f82b8 +https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda#30fd6e37fe21f86f4bd26d6ee73eeec7 +https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.1.0-hc0a3c3a_0.conda#1cb187a157136398ddbaae90713e2498 +https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda#40b61aab5c7ba9ff276c41cfffe6b80b +https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda#b26e8aa824079e1be0294e7152ca4559 +https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda#5aa797f8787fe7a17d1b0821485b5adc +https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-h4ab18f5_1.conda#57d7dc60e9325e3de37ff8dffd18e814 +https://conda.anaconda.org/conda-forge/linux-64/make-4.3-hd18ef5c_1.tar.bz2#4049ebfd3190b580dffe76daed26155a +https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-h59595ed_0.conda#fcea371545eda051b6deafb24889fc69 +https://conda.anaconda.org/conda-forge/linux-64/oniguruma-6.9.9-hd590300_0.conda#77dab674d16c1525ebe65e67de30de0d +https://conda.anaconda.org/conda-forge/linux-64/openssl-3.3.1-h4bc722e_2.conda#e1b454497f9f7c1147fdde4b53f1b512 +https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-h36c2ea0_1001.tar.bz2#22dad4df6e8630e8dff2428f6f6a7036 +https://conda.anaconda.org/conda-forge/linux-64/sed-4.8-he412f7d_0.tar.bz2#7362f0042e95681f5d371c46c83ebd08 +https://conda.anaconda.org/conda-forge/linux-64/xorg-kbproto-1.0.7-h7f98852_1002.tar.bz2#4b230e8381279d76131116660f5a241a +https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hd590300_0.conda#b462a33c0be1421532f28bfe8f4a7514 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hd590300_0.conda#2c80dc38fface310c9bd81b17037fee5 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.3-h7f98852_0.tar.bz2#be93aabceefa2fac576e971aef407908 +https://conda.anaconda.org/conda-forge/linux-64/xorg-renderproto-0.11.1-h7f98852_1002.tar.bz2#06feff3d2634e3097ce2fe681474b534 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xextproto-7.3.0-h0b41bf4_1003.conda#bce9f945da8ad2ae9b1d7165a64d0f87 +https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-h7f98852_1007.tar.bz2#b4a4381d54784606820704f7b5f05a15 +https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2#2161070d867d1b1204ea749c8eec4ef0 +https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2#4cb3ad778ec2d5a7acbdf254eb1c42ae +https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.2-h59595ed_0.conda#53fb86322bdb89496d7579fe3f02fd61 +https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda#f87c7b7c2cb45f323ffbce941c78ab7c +https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda#8b189310083baabfb622af68fd9d3ae3 +https://conda.anaconda.org/conda-forge/linux-64/jq-1.7.1-hd590300_0.conda#80814f94713e35df60aad6c4b235de87 +https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2#76bbff344f0134279f225174e9064c8f +https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2#4d331e44109e3f0e19b4cb8f9b82f3e1 +https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.1.0-h69a702a_0.conda#f4ca84fbd6d06b0a052fb2d5b96dde41 +https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.58.0-h47da74e_1.conda#700ac6ea6d53d5510591c4344d5c989a +https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.43-h2797004_0.conda#009981dd9cfcaa4dbfa25ffaed86bcae +https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-14.1.0-hcba0ae0_0.conda#88343f89ea4280a79ddd9e755992743d +https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.46.0-hde9e2c9_0.conda#18aa975d2094c34aef978060ae7da7d8 +https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.0-h0841786_0.conda#1f5a58e686b13bcfde88b93f547d23fe +https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.16-hd590300_0.conda#151cba22b85a989c2d6ef9633ffee1e4 +https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-h0f59acf_0.conda#3914f7ac1761dce57102c72ca7c35d01 +https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda#71004cbf7924e19c02746ccde9fd7123 +https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda#47d31b792659ce70f470b5c82fdfb7a4 +https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda#d453b98d9c83e71da0741bb0ff4d76bc +https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-h7391055_0.conda#93ee23f12bc2e684548181256edd2cf6 +https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-h4ab18f5_1.conda#9653f1bf3766164d0e65fa723cabbc54 +https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda#4d056880988120e29d75bfff282e0f45 +https://conda.anaconda.org/conda-forge/linux-64/bwidget-1.9.14-ha770c72_1.tar.bz2#5746d6202ba2abad4a4707f2a2462795 +https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda#9ae35c3d96db2c94ce0cef86efdfa2cb +https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-14.1.0-h3c94d91_0.conda#b0dd0de49e0f3e34f3f636e5c7d149fe +https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda#3f43953b7d3fb3aaa1d0d0723d91e368 +https://conda.anaconda.org/conda-forge/linux-64/libglib-2.80.3-h8a4344b_1.conda#6ea440297aacee4893f02ad759e6ffbc +https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.27-pthreads_hac2b453_1.conda#ae05ece66d3924ac3d48b4aa3fa96cec +https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.6.0-h1dd3fc0_3.conda#66f03896ffbe1a110ffda05c7a856504 +https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.12.7-he7c6b58_4.conda#08a9265c637230c37cb1be4a6cad4536 +https://conda.anaconda.org/conda-forge/linux-64/python-3.12.4-h194c7f8_0_cpython.conda#d73490214f536cccb5819e9873048c92 +https://conda.anaconda.org/conda-forge/linux-64/tktable-2.10-h8bc8fbc_6.conda#dff3627fec2c0584ded391205295abf0 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.9-hb711507_1.conda#4a6d410296d7e39f00bacdee7df046e9 +https://conda.anaconda.org/conda-forge/noarch/argcomplete-3.4.0-pyhd8ed1ab_0.conda#9f736cae0da3365a4dbbfbadfac9f3a2 +https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.14.2-h14ed4e7_0.conda#0f69b688f52ff6da70bccb7ff7001d1d +https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-14.1.0-he4a1faa_0.conda#a9ce7cd0848a93a8df88c1fc0ac84d9d +https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-14.1.0-h2879b86_0.conda#47d6de998d7a285b98b60bce2fecb54b +https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-22_linux64_openblas.conda#1a2a0cd3153464fee6646f3dd6dad9b8 +https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.8.0-hca28451_1.conda#b8afb3e3cb3423cc445cf611ab95fdb0 +https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.1-py312h98912ed_1.conda#e3fd78d8d490af1d84763b9fe3f2e552 +https://conda.anaconda.org/conda-forge/noarch/setuptools-71.0.4-pyhd8ed1ab_0.conda#ee78ac9c720d0d02fcfd420866b82ab1 +https://conda.anaconda.org/conda-forge/noarch/toml-0.10.2-pyhd8ed1ab_0.tar.bz2#f832c45a477c78bebd107098db465095 +https://conda.anaconda.org/conda-forge/noarch/tomlkit-0.13.0-pyha770c72_0.conda#810ba6f354ddef812d0ddc4669cc8de6 +https://conda.anaconda.org/conda-forge/noarch/wheel-0.43.0-pyhd8ed1ab_1.conda#0b5293a157c2b5cd513dd1b03d8d3aae +https://conda.anaconda.org/conda-forge/noarch/xmltodict-0.13.0-pyhd8ed1ab_0.tar.bz2#b5b33faed6ed2b4ba47a690b8f5c0818 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.4-h0b41bf4_2.conda#82b6df12252e6f32402b96dacc656fec +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hd590300_0.conda#ed67c36f215b310412b2af935bf3e530 +https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.0-hd590300_1.conda#ae92aab42726eb29d16488924f7312cb +https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda#fceaedf1cdbcb02df9699a0d9b005292 +https://conda.anaconda.org/conda-forge/linux-64/curl-8.8.0-he654da7_1.conda#78678b2ddfd9bd7c7861b8d2e3b7473b +https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-22_linux64_openblas.conda#4b31699e0ec5de64d5896e580389c9a1 +https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-22_linux64_openblas.conda#b083767b6c877e24ee597d93b87ab838 +https://conda.anaconda.org/conda-forge/noarch/pip-24.0-pyhd8ed1ab_0.conda#f586ac1e56c8638b64f9c8122a7b8a67 +https://conda.anaconda.org/conda-forge/noarch/yq-3.4.3-pyhd8ed1ab_0.conda#b5a8334311d5f6751cce8281ab6458d3 +https://conda.anaconda.org/conda-forge/linux-64/gsl-2.7-he838d99_0.tar.bz2#fec079ba39c9cca093bf4c00001825de +https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda#76b32dcf243444aea9c6b804bcfa40b8 +https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda#7df02e445367703cd87a574046e3a6f0 +https://conda.anaconda.org/conda-forge/linux-64/r-base-4.3.3-h9967228_12.conda#88e0b778762c6ffa75241d0f34cfa94e +https://conda.anaconda.org/bioconda/noarch/bioconductor-biocgenerics-0.48.1-r43hdfd78af_2.tar.bz2#a313dd8a932cfd178fad2f3e7e6a6184 +https://conda.anaconda.org/bioconda/noarch/bioconductor-data-packages-20231203-hdfd78af_0.tar.bz2#797a95b275a72d48553852e7845edf19 +https://conda.anaconda.org/bioconda/linux-64/bioconductor-zlibbioc-1.48.0-r43ha9d7317_2.tar.bz2#b460a5493c1d67ff386a0e63eb078a64 +https://conda.anaconda.org/conda-forge/noarch/r-assertthat-0.2.1-r43hc72bb7e_5.conda#830d74ef2014697ec7f95922cd6edcef +https://conda.anaconda.org/conda-forge/linux-64/r-backports-1.5.0-r43hb1dbf0f_1.conda#12431f6441e6e7b9181747123e88fe9e +https://conda.anaconda.org/conda-forge/linux-64/r-base64enc-0.1_3-r43hb1dbf0f_1007.conda#3509080778587bf9d42eae11e0246633 +https://conda.anaconda.org/conda-forge/linux-64/r-bit-4.0.5-r43hb1dbf0f_2.conda#9711c7d7088374bebf2d9fb2fe54ed25 +https://conda.anaconda.org/conda-forge/linux-64/r-bitops-1.0_7-r43hb1dbf0f_3.conda#7b4dc15e4a8f68e641ba75046b883d44 +https://conda.anaconda.org/conda-forge/linux-64/r-cli-3.6.3-r43h0d4f4ea_1.conda#ba1f08e0eab53429d77026adb68960a5 +https://conda.anaconda.org/conda-forge/noarch/r-clipr-0.8.0-r43hc72bb7e_3.conda#57efbe0d7deb70566c3314c2f6be7a22 +https://conda.anaconda.org/conda-forge/linux-64/r-colorspace-2.1_0-r43hb1dbf0f_2.conda#e7b603d52076a3773d8022dce3131fea +https://conda.anaconda.org/conda-forge/noarch/r-cpp11-0.4.7-r43hc72bb7e_1.conda#6711d7027a2ed4efdd76137a61e2d674 +https://conda.anaconda.org/conda-forge/noarch/r-crayon-1.5.3-r43hc72bb7e_1.conda#bafc77be1942ea00228cf18d2cb30e35 +https://conda.anaconda.org/conda-forge/linux-64/r-curl-5.2.1-r43h6b349a7_1.conda#11b8e08ae968d29fdf2a2d3ed5ccdb79 +https://conda.anaconda.org/conda-forge/linux-64/r-data.table-1.15.4-r43ha8f4200_0.conda#7f80fa5300b292c19bab54674884e233 +https://conda.anaconda.org/conda-forge/noarch/r-dbi-1.2.3-r43hc72bb7e_1.conda#6a3941852688f1291271e4ef5772425d +https://conda.anaconda.org/conda-forge/linux-64/r-digest-0.6.36-r43ha18555a_1.conda#d06159633739315e3002a1b693f8645e +https://conda.anaconda.org/conda-forge/noarch/r-evaluate-0.24.0-r43hc72bb7e_1.conda#5188f299c45fa47d9211b5898ceee182 +https://conda.anaconda.org/conda-forge/linux-64/r-fansi-1.0.6-r43hb1dbf0f_1.conda#4c17a0f74a974316fdfafa5a9fe91b52 +https://conda.anaconda.org/conda-forge/linux-64/r-farver-2.1.2-r43ha18555a_1.conda#85a82a5b78397daf57f002120aed9e3e +https://conda.anaconda.org/conda-forge/linux-64/r-fastmap-1.2.0-r43ha18555a_1.conda#ac100509c0d93c8dc19e53fb299a48b5 +https://conda.anaconda.org/conda-forge/linux-64/r-filelock-1.0.3-r43hb1dbf0f_1.conda#fed4578af498b0745d546c0161a85032 +https://conda.anaconda.org/conda-forge/linux-64/r-fs-1.6.4-r43ha18555a_1.conda#a6ea7a4871b7129f41c7ab8940792107 +https://conda.anaconda.org/conda-forge/noarch/r-generics-0.1.3-r43hc72bb7e_3.conda#2d352e143ff3536b257fe53e4ba91a00 +https://conda.anaconda.org/conda-forge/linux-64/r-glue-1.7.0-r43hb1dbf0f_1.conda#94cbb45d60c60af1fbcf0cf20ad0baa6 +https://conda.anaconda.org/conda-forge/linux-64/r-isoband-0.2.7-r43ha18555a_3.conda#39459e8609d9461d90ee0683a7fd2f3a +https://conda.anaconda.org/conda-forge/linux-64/r-jsonlite-1.8.8-r43hb1dbf0f_1.conda#eb4377db2a26436aed657474aad972aa +https://conda.anaconda.org/conda-forge/noarch/r-labeling-0.4.3-r43hc72bb7e_1.conda#0464c37b6ff6701cbb8606e8f4bfebe4 +https://conda.anaconda.org/conda-forge/linux-64/r-lattice-0.22_6-r43hb1dbf0f_1.conda#e42a7ddaeeea0096c4f6df18fb5274e3 +https://conda.anaconda.org/conda-forge/linux-64/r-magrittr-2.0.3-r43hb1dbf0f_3.conda#fc61bcf37e59037b486c8841a704e9da +https://conda.anaconda.org/conda-forge/linux-64/r-mass-7.3_60.0.1-r43hb1dbf0f_1.conda#c3c9184486ccabe19b86aba11351652e +https://conda.anaconda.org/conda-forge/linux-64/r-mime-0.12-r43hb1dbf0f_3.conda#1e7d080b1e82a19e8a939c0e90405728 +https://conda.anaconda.org/conda-forge/linux-64/r-nanoparquet-0.3.1-r43h0d4f4ea_0.conda#aa06cbb01f95d37bf7fd3dbddbf19477 +https://conda.anaconda.org/conda-forge/noarch/r-pkgconfig-2.0.3-r43hc72bb7e_4.conda#509adf7f5bc34d77064f28f487d7fa6e +https://conda.anaconda.org/conda-forge/noarch/r-plogr-0.2.0-r43hc72bb7e_1006.conda#75003e5611e863848d5c7b9d1544d11d +https://conda.anaconda.org/conda-forge/linux-64/r-png-0.1_8-r43h21f035c_2.conda#bb38ba000f70e6776d546e1b41b8ce4c +https://conda.anaconda.org/conda-forge/linux-64/r-ps-1.7.7-r43hdb488b9_0.conda#a6b5dc229feb1303b373dd738490928d +https://conda.anaconda.org/conda-forge/noarch/r-r6-2.5.1-r43hc72bb7e_3.conda#66ea76748b9fac0ca0ef549f796228d3 +https://conda.anaconda.org/conda-forge/linux-64/r-rappdirs-0.3.3-r43hb1dbf0f_3.conda#9fb3dd1c37f2b0d351850edf594fb1a9 +https://conda.anaconda.org/conda-forge/noarch/r-rcolorbrewer-1.1_3-r43h785f33e_3.conda#ceb1c167b7d9e5eefed0ecbe759540de +https://conda.anaconda.org/conda-forge/noarch/r-rematch-2.0.0-r43hc72bb7e_1.conda#3a0951ee971e0ecd8896771d8871cd73 +https://conda.anaconda.org/conda-forge/linux-64/r-rlang-1.1.4-r43ha18555a_1.conda#e9f6f76e66306bd6483935ad4c79ac28 +https://conda.anaconda.org/conda-forge/noarch/r-rstudioapi-0.16.0-r43hc72bb7e_1.conda#bf49fab78ca6311b4e74f5cc7e72880b +https://conda.anaconda.org/conda-forge/linux-64/r-stringi-1.8.4-r43h33cde33_3.conda#827bd9c9e7a678acee9c6a2d5b0586a6 +https://conda.anaconda.org/conda-forge/linux-64/r-sys-3.4.2-r43hb1dbf0f_2.conda#97ac2486210aeff0afb5f4c5bcecf5d4 +https://conda.anaconda.org/conda-forge/linux-64/r-utf8-1.2.4-r43hb1dbf0f_1.conda#6337f1f20dea2a325142d2b7b1b7d42c +https://conda.anaconda.org/conda-forge/linux-64/r-uuid-1.2_0-r43hb1dbf0f_1.conda#3d7dc78e3be4dd08350738849e90defd +https://conda.anaconda.org/conda-forge/noarch/r-viridislite-0.4.2-r43hc72bb7e_2.conda#2a5b8c2803b5714f3319a238c66cc9e7 +https://conda.anaconda.org/conda-forge/noarch/r-withr-3.0.0-r43hc72bb7e_1.conda#d94e3cf956e6271038a110f626a512cb +https://conda.anaconda.org/conda-forge/linux-64/r-xfun-0.46-r43h0d4f4ea_0.conda#62da57182ae2be4e3b04449d63cfe8e1 +https://conda.anaconda.org/conda-forge/linux-64/r-xml-3.99_0.17-r43he716329_1.conda#dbf21bccef274990fedbbb40f7df166c +https://conda.anaconda.org/conda-forge/linux-64/r-yaml-2.3.9-r43hdb488b9_0.conda#2304d06b9a4135bfd50a3978a276ec94 +https://conda.anaconda.org/bioconda/linux-64/bioconductor-biobase-2.62.0-r43ha9d7317_2.tar.bz2#a15d639455e398eb2297d0b926b2e57f +https://conda.anaconda.org/bioconda/noarch/bioconductor-genomeinfodbdata-1.2.11-r43hdfd78af_1.tar.bz2#14721a7fde8cfe4703796dfd5a119d76 +https://conda.anaconda.org/bioconda/linux-64/bioconductor-s4vectors-0.40.2-r43ha9d7317_2.tar.bz2#6aa465e83dabb7ed5b853519d8a334e4 +https://conda.anaconda.org/conda-forge/linux-64/r-askpass-1.2.0-r43hb1dbf0f_1.conda#01e6c23b754802bb1f68664e56de58fc +https://conda.anaconda.org/conda-forge/linux-64/r-bit64-4.0.5-r43hb1dbf0f_3.conda#0497d0061211b14cb89186a43d132ad1 +https://conda.anaconda.org/conda-forge/linux-64/r-cachem-1.1.0-r43hb1dbf0f_1.conda#02b195910b59c2cfd1fb7159edbb047a +https://conda.anaconda.org/conda-forge/linux-64/r-ellipsis-0.3.2-r43hb1dbf0f_3.conda#b8349582a31b17184a7674f4c847a5ad +https://conda.anaconda.org/conda-forge/noarch/r-highr-0.11-r43hc72bb7e_1.conda#23e4d2048f51cbe7c0fb8b9230edc701 +https://conda.anaconda.org/conda-forge/noarch/r-lifecycle-1.0.4-r43hc72bb7e_1.conda#7a0a8ba1fe2cf12b39062d8291e2fca8 +https://conda.anaconda.org/conda-forge/linux-64/r-matrix-1.6_5-r43he966344_1.conda#df8a1175a62460e02dbf340966cbfeab +https://conda.anaconda.org/conda-forge/noarch/r-munsell-0.5.1-r43hc72bb7e_1.conda#8b2f9bb8064ae0896ffedd984661a2d5 +https://conda.anaconda.org/conda-forge/linux-64/r-nlme-3.1_165-r43hbcb9c34_1.conda#ae3f1ce6e352a9089f639044764c533f +https://conda.anaconda.org/conda-forge/noarch/r-prettyunits-1.2.0-r43hc72bb7e_1.conda#cf655364ee1c16ad385e829987a67458 +https://conda.anaconda.org/conda-forge/linux-64/r-processx-3.8.4-r43hb1dbf0f_1.conda#b9dcc14c0f4866d8593bb5fbd3f1c447 +https://conda.anaconda.org/conda-forge/linux-64/r-rcurl-1.98_1.16-r43h6b349a7_0.conda#88bf36e10f18d1937d102e205100d792 +https://conda.anaconda.org/conda-forge/linux-64/r-timechange-0.3.0-r43ha18555a_1.conda#da155dc726414cca04cdc76a297c4463 +https://conda.anaconda.org/conda-forge/noarch/r-tinytex-0.52-r43hc72bb7e_0.conda#b60613abdfd0690e8b4ed8dfb142511f +https://conda.anaconda.org/conda-forge/linux-64/r-tzdb-0.4.0-r43ha18555a_2.conda#af670d1acc46c7aa0973ad190e0f52a0 +https://conda.anaconda.org/conda-forge/linux-64/r-xml2-1.3.6-r43hbfba7a4_1.conda#545f26a602ff99102e7fd70f425ead32 +https://conda.anaconda.org/bioconda/linux-64/bioconductor-iranges-2.36.0-r43ha9d7317_2.tar.bz2#cca51afd40439bea147c1adf9857bec0 +https://conda.anaconda.org/conda-forge/noarch/r-callr-3.7.6-r43hc72bb7e_1.conda#cb327fa8f604dce0de71143459185b9f +https://conda.anaconda.org/conda-forge/noarch/r-gtable-0.3.5-r43hc72bb7e_1.conda#373d1655e4d3c45b6abe455d8a52b14e +https://conda.anaconda.org/conda-forge/linux-64/r-htmltools-0.5.8.1-r43ha18555a_1.conda#7b26688542e1b7a39fc62affeef9d32e +https://conda.anaconda.org/conda-forge/noarch/r-knitr-1.48-r43hc72bb7e_0.conda#78b89f7a7df2bacfa367589fc95a36db +https://conda.anaconda.org/conda-forge/linux-64/r-lubridate-1.9.3-r43hdb488b9_1.conda#7bce2af86e6010576bdb4718cbd985b9 +https://conda.anaconda.org/conda-forge/noarch/r-memoise-2.0.1-r43hc72bb7e_3.conda#98e3d2eb6635a5f7b8af487f47184a98 +https://conda.anaconda.org/conda-forge/linux-64/r-mgcv-1.9_1-r43h0d28552_1.conda#154d840fb734a3f80a5ef623b52ff6cd +https://conda.anaconda.org/conda-forge/linux-64/r-openssl-2.2.0-r43h5bbf899_1.conda#d0d7032f575c8ed6ae83cd8c4d7214e4 +https://conda.anaconda.org/conda-forge/noarch/r-scales-1.3.0-r43hc72bb7e_1.conda#119d9c10dc652ac1492fc49951d86860 +https://conda.anaconda.org/conda-forge/linux-64/r-systemfonts-1.1.0-r43h38d38ca_1.conda#03e51a887e5284ddae8ea6983e682e76 +https://conda.anaconda.org/conda-forge/linux-64/r-vctrs-0.6.5-r43h0d4f4ea_1.conda#7f4c30bb576acec2a682c40790c2d406 +https://conda.anaconda.org/bioconda/noarch/bioconductor-genomeinfodb-1.38.1-r43hdfd78af_1.tar.bz2#03e20a01b672b693c9470dec80d83993 +https://conda.anaconda.org/bioconda/linux-64/bioconductor-xvector-0.42.0-r43ha9d7317_2.tar.bz2#16f45b1c97517cc3d063a442a43689a4 +https://conda.anaconda.org/conda-forge/noarch/r-blob-1.2.4-r43hc72bb7e_2.conda#c0111a5bf605a519c06fc7a8b15ee7c2 +https://conda.anaconda.org/conda-forge/noarch/r-conflicted-1.2.0-r43h785f33e_2.conda#fc25350adce05a2aff8cf5e2698b4a30 +https://conda.anaconda.org/conda-forge/noarch/r-fontawesome-0.5.2-r43hc72bb7e_1.conda#7eae1f1e19732ec65fab5c3acb836de9 +https://conda.anaconda.org/conda-forge/noarch/r-hms-1.1.3-r43hc72bb7e_2.conda#5eed9ddd04bbb39ecf29045e2b4cc079 +https://conda.anaconda.org/conda-forge/noarch/r-httr-1.4.7-r43hc72bb7e_1.conda#746050b53c705dbe5ac9c5fbce51737a +https://conda.anaconda.org/conda-forge/noarch/r-ids-1.0.1-r43hc72bb7e_4.conda#04fac2f5b7f911d4a204b7a6b77ce245 +https://conda.anaconda.org/conda-forge/noarch/r-jquerylib-0.1.4-r43hc72bb7e_3.conda#39eb4928bdd8752b548f7cbe8fa7cabd +https://conda.anaconda.org/conda-forge/noarch/r-pillar-1.9.0-r43hc72bb7e_2.conda#49a43daa7f46eecd9d42f1073da96662 +https://conda.anaconda.org/conda-forge/linux-64/r-purrr-1.0.2-r43hdb488b9_1.conda#4270c6c51a02fc0da32b9d7b453ef3f5 +https://conda.anaconda.org/conda-forge/linux-64/r-sass-0.4.9-r43ha18555a_1.conda#4671c120e368b94d8651b7289d06a43f +https://conda.anaconda.org/conda-forge/noarch/r-stringr-1.5.1-r43h785f33e_1.conda#b997c27a396a991db9fba6ad9c07da40 +https://conda.anaconda.org/conda-forge/linux-64/r-textshaping-0.4.0-r43ha47bcaa_1.conda#adb6db8a13fa35d0e052078cdb7044c2 +https://conda.anaconda.org/conda-forge/noarch/r-tidyselect-1.2.1-r43hc72bb7e_1.conda#f55367f874307bb57575ac1506079178 +https://conda.anaconda.org/bioconda/linux-64/bioconductor-biostrings-2.70.1-r43ha9d7317_2.tar.bz2#4cb6e5507bdb6d9bb8403e55d7996b22 +https://conda.anaconda.org/conda-forge/noarch/r-bslib-0.7.0-r43hc72bb7e_1.conda#eaccfd4ea4612eb224991c3a4af32349 +https://conda.anaconda.org/conda-forge/noarch/r-gargle-1.5.2-r43h785f33e_1.conda#9b055b60f2d36aa2a991840f20be6f07 +https://conda.anaconda.org/conda-forge/noarch/r-progress-1.2.3-r43hc72bb7e_1.conda#e50711aa4ed08fae208148998c92f296 +https://conda.anaconda.org/conda-forge/linux-64/r-ragg-1.3.2-r43hffa04bc_0.conda#ab0ad12b503efe8f87333ddef7586c18 +https://conda.anaconda.org/conda-forge/linux-64/r-rsqlite-2.3.7-r43h0d4f4ea_0.conda#7f09465a2f9b2b4fa020616398e0d441 +https://conda.anaconda.org/conda-forge/noarch/r-selectr-0.4_2-r43hc72bb7e_4.conda#08ede6e9829e45bdc8ff712f3b56eb22 +https://conda.anaconda.org/conda-forge/linux-64/r-tibble-3.2.1-r43hdb488b9_3.conda#3e78c6ee2205ef56c165cbf2c166fdf6 +https://conda.anaconda.org/bioconda/noarch/bioconductor-keggrest-1.42.0-r43hdfd78af_0.tar.bz2#54323027d5b00c42545a8b7870d95bbf +https://conda.anaconda.org/conda-forge/noarch/r-cellranger-1.1.0-r43hc72bb7e_1007.conda#350fc39da2e9660b475f38a2cc2c4aab +https://conda.anaconda.org/conda-forge/linux-64/r-dplyr-1.1.4-r43h0d4f4ea_1.conda#ab942d9107cdd78e74410f9ec48e50c7 +https://conda.anaconda.org/conda-forge/noarch/r-forcats-1.0.0-r43hc72bb7e_2.conda#eb7aeed1dd1844ce3a5d5477516fc681 +https://conda.anaconda.org/conda-forge/noarch/r-ggplot2-3.5.1-r43hc72bb7e_1.conda#a828d1513cabc43cf0711ee0eaec53b2 +https://conda.anaconda.org/conda-forge/noarch/r-googledrive-2.1.1-r43hc72bb7e_2.conda#25f614d432724c7a673859b804ec9537 +https://conda.anaconda.org/conda-forge/noarch/r-rematch2-2.1.2-r43hc72bb7e_4.conda#3a4a5f3929460a3e8450d94aac2d85c2 +https://conda.anaconda.org/conda-forge/noarch/r-rmarkdown-2.27-r43hc72bb7e_1.conda#4b681e35650d7d10737bc0c6ed80ae9a +https://conda.anaconda.org/conda-forge/noarch/r-rvest-1.0.4-r43hc72bb7e_0.conda#01ff5b7fd4bfafd75c0b91e6d3a1d443 +https://conda.anaconda.org/conda-forge/linux-64/r-vroom-1.6.5-r43h0d4f4ea_1.conda#2fc1d56664063aaa4ffd43a702a71baf +https://conda.anaconda.org/bioconda/noarch/bioconductor-annotationdbi-1.64.1-r43hdfd78af_0.tar.bz2#2fb7b9df6be98331067946cc8183c92f +https://conda.anaconda.org/conda-forge/noarch/r-dtplyr-1.3.1-r43hc72bb7e_1.conda#85ba0e234af279259478526f5cdf952f +https://conda.anaconda.org/conda-forge/noarch/r-googlesheets4-1.1.1-r43h785f33e_2.conda#332576dbba1cf5eea98ade568264a297 +https://conda.anaconda.org/conda-forge/linux-64/r-readr-2.1.5-r43h0d4f4ea_1.conda#e3ffadf38171b07d753f0bb4f744d73f +https://conda.anaconda.org/conda-forge/linux-64/r-readxl-1.4.3-r43he58e087_1.conda#32e15ee3765d83331fd41f55fdc509ae +https://conda.anaconda.org/conda-forge/noarch/r-reprex-2.1.1-r43hc72bb7e_1.conda#fb8a11a5f839f565cf30815ee55515ec +https://conda.anaconda.org/conda-forge/linux-64/r-tidyr-1.3.1-r43h0d4f4ea_1.conda#f3e46eed831fa7cbce60dfead1ff6268 +https://conda.anaconda.org/conda-forge/noarch/r-broom-1.0.6-r43hc72bb7e_1.conda#6e271d12aeb605bef4cfb7c6e9e25a52 +https://conda.anaconda.org/conda-forge/noarch/r-dbplyr-2.5.0-r43hc72bb7e_1.conda#73cd48c8632ca1a98381cc0f1ebed3d4 +https://conda.anaconda.org/conda-forge/linux-64/r-haven-2.5.4-r43h0d4f4ea_1.conda#5ea73f6c0626a144907ac2748d19050e +https://conda.anaconda.org/bioconda/noarch/bioconductor-biocfilecache-2.10.1-r43hdfd78af_0.tar.bz2#532a3a1ca1cc38e1d31e56f1de94fec4 +https://conda.anaconda.org/conda-forge/noarch/r-modelr-0.1.11-r43hc72bb7e_2.conda#2cdd8c74b0c949695af0debfd3a44974 +https://conda.anaconda.org/bioconda/noarch/bioconductor-biomart-2.58.0-r43hdfd78af_0.tar.bz2#863f49a8729f533415ec09e562fa7f3c +https://conda.anaconda.org/conda-forge/noarch/r-tidyverse-2.0.0-r43h785f33e_1.conda#390310ae8a44cbd35c8d27f5efa362cb diff --git a/bio/reference/ensembl-biomart-table/environment.yaml b/bio/reference/ensembl-biomart-table/environment.yaml new file mode 100644 index 00000000000..bc05f445260 --- /dev/null +++ b/bio/reference/ensembl-biomart-table/environment.yaml @@ -0,0 +1,8 @@ +channels: + - conda-forge + - bioconda + - nodefaults +dependencies: + - bioconductor-biomart =2.58 + - r-nanoparquet =0.3 + - r-tidyverse = 2.0 \ No newline at end of file diff --git a/bio/reference/ensembl-biomart-table/meta.yaml b/bio/reference/ensembl-biomart-table/meta.yaml new file mode 100644 index 00000000000..18e7887597c --- /dev/null +++ b/bio/reference/ensembl-biomart-table/meta.yaml @@ -0,0 +1,41 @@ +name: ensembl-biomart-table +description: > + Create a table of annotations available via the ``bioconductor-biomart``, + with one column per specified annotation (for example ``ensembl_gene_id``, + ``ensembl_transcript_id``, ``ext_gene``, ... for the human reference). For + reference, have a look at the + `Ensembl biomart online `_ + or at the ``biomaRt`` package documentation linked in the ``URL`` field. +url: https://bioconductor.org/packages/deveol/bioc/vignettes/biomaRt/inst/doc/accessing_ensembl.html +authors: + - David Lähnemann +output: + - > + tab-separated values (``.tsv``); for supported compression extensions, see + `the write_tsv documentation page `_ + - > + parquet (``.parquet``) file; for supported compression algorithms, see + `the write_parquet documentation page `_ +params: + - biomart: > + for example, 'genes'; for options, see + `the documentation on identifying databases `_ + - species: > + species that has a 'genes' database / dataset available via the Ensembl + BioMart (for example, 'homo_sapiens'), for example check the + `Ensembl species list `_ + - build: build available for the selected species, for example 'GRCh38' + - release: release from which the species and build are available, for example '112' + - attributes: > + A list of wanted annotation columns ("database attributes"). For + finding available attributes, see the + `instructions in the biomaRt documentation `_. + Note that these need to be available for the combination of species, + build and release from the specified biomart database. + - filters: > + (optional) This will restrict the download and output to the filters you + specify. The format is a dictionary, for example + ``{"chromosome_name": ["X", "Y"]}``. Note that non-existing filter values + (for example a ``chromosomes_name`` of ``"Z"``) will simply be ignored + without error or warning. For finding available filters, see the + `instructions in the biomaRt documentation `_. \ No newline at end of file diff --git a/bio/reference/ensembl-biomart-table/test/Snakefile b/bio/reference/ensembl-biomart-table/test/Snakefile new file mode 100644 index 00000000000..9e2113c2577 --- /dev/null +++ b/bio/reference/ensembl-biomart-table/test/Snakefile @@ -0,0 +1,38 @@ +rule create_transcripts_to_genes_mapping: + output: + table="resources/ensembl_transcripts_to_genes_mapping.tsv.gz", # .gz extension is optional, but recommended + params: + biomart="genes", + species="homo_sapiens", + build="GRCh38", + release="112", + attributes=[ + "ensembl_transcript_id", + "ensembl_gene_id", + "external_gene_name", + "genecards", + "chromosome_name", + ], + filters={ "chromosome_name": ["22", "X"] }, # optional: restrict output by using filters + log: + "logs/create_transcripts_to_genes_mapping.log", + cache: "omit-software" # save space and time with between workflow caching (see docs) + wrapper: + "master/bio/reference/ensembl-biomart-table" + + +rule create_transcripts_to_genes_mapping_parquet: + output: + table="resources/ensembl_transcripts_to_genes_mapping.parquet.gz", # .gz extension is optional, but recommended + params: + biomart="genes", + species="mus_musculus", + build="GRCm39", + release="112", + attributes=["ensembl_transcript_id", "ensembl_gene_id"], + # filters={ "chromosome_name": "19"}, # optional: restrict output by using filters + log: + "logs/create_transcripts_to_genes_mapping_parquet.log", + cache: "omit-software" # save space and time with between workflow caching (see docs) + wrapper: + "master/bio/reference/ensembl-biomart-table" diff --git a/bio/reference/ensembl-biomart-table/wrapper.R b/bio/reference/ensembl-biomart-table/wrapper.R new file mode 100644 index 00000000000..1ad9450c701 --- /dev/null +++ b/bio/reference/ensembl-biomart-table/wrapper.R @@ -0,0 +1,146 @@ +# __author__ = "David Lähnemann" +# __copyright__ = "Copyright 2024, David Lähnemann" +# __email__ = "david.laehnemann@hhu.de" +# __license__ = "MIT" + +log <- file(snakemake@log[[1]], open="wt") +sink(log) +sink(log, type="message") + +library("tidyverse") +library("nanoparquet") +rlang::global_entrace() +library("fs") +library("cli") + +library("biomaRt") + +wanted_biomart <- snakemake@params[["biomart"]] +# bioconductor-biomart needs the species as something like `hsapiens` instead +# of `homo_sapiens`, and `chyarkandensis` instead of `cervus_hanglu_yarkandensis` +species_name_components <- str_split(snakemake@params[["species"]], "_")[[1]] +if (length(species_name_components) == 2) { + wanted_species <- str_c( + str_sub(species_name_components[1], 1, 1), + species_name_components[2] + ) +} else if (length(species_name_components) == 3) { + wanted_species <- str_c( + str_sub(species_name_components[1], 1, 1), + str_sub(species_name_components[2], 1, 1), + species_name_components[3] + ) +} else { + cli_abort(c( + "Unsupported species name '{snakemake@params[['species']]}'.", + "x" = "Splitting on underscores led to unexpected number of name components: {length(species_name_components)}.", + "i" = "Expected species name with 2 (e.g. `homo_sapiens`) or 3 (e.g. `cervus_hanglu_yarkandensis`) components.", + "Anything else either does not exist in Ensembl, or we don't yet handle it properly.", + "In case you are sure the species you specified is correct and exists in Ensembl, please", + "file a bug report as an issue on GitHub, referencing this file: ", + "https://github.com/snakemake/snakemake-wrappers/blob/master/bio/reference/ensembl-biomart-table/wrapper.R" + )) +} + +wanted_release <- snakemake@params[["release"]] +wanted_build <- snakemake@params[["build"]] + +wanted_filters <- snakemake@params[["filters"]] + +wanted_columns <- snakemake@params[["attributes"]] + +output_filename <- snakemake@output[["table"]] + +if (wanted_build == "GRCh37") { + grch <- "37" + version <- NULL + cli_warn(c( + "As you specified build 'GRCH37' in your configuration yaml, biomart forces", + "us to ignore the release you specified ('{release}')." + )) +} else { + grch <- NULL + version <- wanted_release +} + +get_mart <- function(biomart, species, build, version, grch, dataset) { + mart <- useEnsembl( + biomart = biomart, + dataset = str_c(species, "_", dataset), + version = version, + GRCh = grch + ) + + if (build == "GRCh37") { + retrieved_build <- str_remove(listDatasets(mart)$version, "\\..*") + } else { + retrieved_build <- str_remove(searchDatasets(mart, species)$version, "\\..*") + } + + if (retrieved_build != build) { + cli_abort(c( + "The Ensembl release and genome build number you specified are not compatible.", + "x" = "Genome build '{build}' not available via biomart for Ensembl release '{release}'.", + "i" = "Ensembl release '{release}' only provides build '{retrieved_build}'.", + " " = "Please fix your configuration yaml file's reference entry, you have two options:", + "*" = "Change the build entry to '{retrieved_build}'.", + "*" = "Change the release entry to one that provides build '{build}'. You have to determine this from biomart by yourself." + )) + } + mart +} + +gene_ensembl <- get_mart(wanted_biomart, wanted_species, wanted_build, version, grch, "gene_ensembl") + +if ( !is.null(wanted_filters) ) { + table <- getBM( + attributes = wanted_columns, + filters = names(wanted_filters), + values = unname(wanted_filters), + mart = gene_ensembl + ) |> as_tibble() +} else { + table <- getBM( + attributes = wanted_columns, + mart = gene_ensembl + ) |> as_tibble() +} + + + +if ( str_detect(output_filename, "tsv(\\.(gz|bz2|xz))?$") ) { + write_tsv( + x = table, + file = output_filename + ) +} else if ( str_detect(output_filename, "\\.parquet") ) { + last_ext <- path_ext(output_filename) + compression <- case_match( + last_ext, + "parquet" ~ "uncompressed", + "gz" ~ "gzip", + "zst" ~ "zstd", + "sz" ~ "snappy" + ) + if ( is.na(compression) ) { + cli_abort( + "File extension '{last_ext}' not supported for writing with the used nanoparquet version.", + "x" = "Cannot write to a file '{output_filename}', because the version of the package", + "nanoparquet used does not support writing files of type '{last_ext}'.", + "i" = "For supported file types, see: https://r-lib.github.io/nanoparquet/reference/write_parquet.html" + ) + } + write_parquet( + x = table, + file = output_filename, + compression = compression + ) +} else { + cli_abort(c( + "Unsupported file format in output file '{output_filename}'.", + "x" = "Only '.tsv' and '.parquet' files are supported, with certain compression variants each.", + "i" = "For supported compression extensions, see:", + "*" = "tsv: https://readr.tidyverse.org/reference/write_delim.html#output", + "*" = "parquet: https://r-lib.github.io/nanoparquet/reference/write_parquet.html#arguments" + )) +} diff --git a/test.py b/test.py index 35aadbd6172..11b81bd6db3 100644 --- a/test.py +++ b/test.py @@ -5602,7 +5602,14 @@ def test_ensembl_annotation_gtf_gz(): def test_ensembl_regulatory_gff3_gz(): run( "bio/reference/ensembl-regulation", - ["snakemake", "--cores", "1", "resources/regulatory_features.gff3.gz", "--use-conda", "-F"], + [ + "snakemake", + "--cores", + "1", + "resources/regulatory_features.gff3.gz", + "--use-conda", + "-F", + ], ) @@ -5610,7 +5617,14 @@ def test_ensembl_regulatory_gff3_gz(): def test_ensembl_regulatory_features_grch37_gff(): run( "bio/reference/ensembl-regulation", - ["snakemake", "--cores", "1", "resources/regulatory_features.gff", "--use-conda", "-F"], + [ + "snakemake", + "--cores", + "1", + "resources/regulatory_features.gff", + "--use-conda", + "-F", + ], ) @@ -5618,7 +5632,44 @@ def test_ensembl_regulatory_features_grch37_gff(): def test_ensembl_regulatory_features_mouse_gff_gz(): run( "bio/reference/ensembl-regulation", - ["snakemake", "--cores", "1", "resources/regulatory_features.mouse.gff.gz", "--use-conda", "-F"], + [ + "snakemake", + "--cores", + "1", + "resources/regulatory_features.mouse.gff.gz", + "--use-conda", + "-F", + ], + ) + + +@skip_if_not_modified +def test_ensembl_transcripts_to_genes_mapping(): + run( + "bio/reference/ensembl-biomart-table", + [ + "snakemake", + "--cores", + "1", + "resources/ensembl_transcripts_to_genes_mapping.tsv.gz", + "--use-conda", + "-F", + ], + ) + + +@skip_if_not_modified +def test_ensembl_transcripts_to_genes_mapping_parquet(): + run( + "bio/reference/ensembl-biomart-table", + [ + "snakemake", + "--cores", + "1", + "resources/ensembl_transcripts_to_genes_mapping.parquet.gz", + "--use-conda", + "-F", + ], )