From 47620132e7024e0c354e6cbcc30a09682bb71d2b Mon Sep 17 00:00:00 2001 From: Alistair Miles Date: Wed, 21 Aug 2024 15:30:04 +0000 Subject: [PATCH 01/15] upgrade environment --- README.md | 10 +- environment.yml | 918 +++++++++++++++++++++++------------------------ requirements.yml | 8 +- 3 files changed, 467 insertions(+), 469 deletions(-) diff --git a/README.md b/README.md index 99c85d3..b933b9a 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ # selection-atlas -Here be dragons. - Development docs: - [Implementation plan](https://docs.google.com/document/d/1VvVZqIQWP8a2zH_CqTgKOp7_KotiJX8bcQ-RWfxiEj8/edit?usp=sharing) @@ -17,14 +15,14 @@ The file `requirements.yml` has the dependencies required to build the site. To To create and activate an environment on your own computer: ``` -mamba env create --force --file environment.yml -mamba activate selection-atlas +mamba env create --file environment.yml +conda activate selection-atlas ``` To create and activate an environment on datalab-bespin: ``` -mamba env create --force --prefix=${HOME}/envs/selection-atlas --file environment.yml +mamba env create --prefix=${HOME}/envs/selection-atlas --file environment.yml conda activate ${HOME}/envs/selection-atlas ``` @@ -33,7 +31,7 @@ If you need to add or upgrade a package, edit `requirements.yml`. **Do not edit To upgrade `environment.yml`: ``` -mamba env create --force --file requirements.yml +mamba env create --file requirements.yml mamba env export -f environment.yml -n selection-atlas-requirements --override-channels --channel conda-forge --channel bioconda sed -i "s/selection-atlas-requirements/selection-atlas/" environment.yml ``` diff --git a/environment.yml b/environment.yml index f81acbd..77b0a11 100644 --- a/environment.yml +++ b/environment.yml @@ -5,556 +5,556 @@ channels: dependencies: - _libgcc_mutex=0.1=conda_forge - _openmp_mutex=4.5=2_gnu - - accessible-pygments=0.0.4=pyhd8ed1ab_0 - - aioeasywebdav=2.4.0=pyha770c72_0 - - aiohttp=3.7.4.post0=py310h6acc77f_1 - - alabaster=0.7.13=pyhd8ed1ab_0 - - alsa-lib=1.2.8=h166bdaf_0 - - amply=0.1.5=pyhd8ed1ab_0 - - ansiwrap=0.8.4=py_0 - - anyio=3.7.0=pyhd8ed1ab_1 + - accessible-pygments=0.0.5=pyhd8ed1ab_0 + - aiohttp=3.9.5=py311h459d7ec_0 + - aiosignal=1.3.1=pyhd8ed1ab_0 + - alabaster=0.7.16=pyhd8ed1ab_0 + - alsa-lib=1.2.12=h4ab18f5_0 + - amply=0.1.6=pyhd8ed1ab_0 + - ansicolors=1.1.8=pyhd8ed1ab_0 + - anyio=4.4.0=pyhd8ed1ab_0 - appdirs=1.4.4=pyh9f0ad1d_0 - - argcomplete=3.0.8=pyhd8ed1ab_0 - - argon2-cffi=21.3.0=pyhd8ed1ab_0 - - argon2-cffi-bindings=21.2.0=py310h5764c6d_3 + - apricot-select=0.6.1=pyhd8ed1ab_0 + - argcomplete=3.5.0=pyhd8ed1ab_0 + - argon2-cffi=23.1.0=pyhd8ed1ab_0 + - argon2-cffi-bindings=21.2.0=py311h459d7ec_4 + - argparse-dataclass=2.0.0=pyhd8ed1ab_0 + - arrow=1.3.0=pyhd8ed1ab_0 - asciitree=0.3.3=py_2 - - asteval=0.9.29=pyhd8ed1ab_0 - - asttokens=2.2.1=pyhd8ed1ab_0 - - async-lru=2.0.2=pyhd8ed1ab_0 - - async-timeout=3.0.1=py_1000 + - asteval=1.0.2=pyhd8ed1ab_0 + - asttokens=2.4.1=pyhd8ed1ab_0 + - async-lru=2.0.4=pyhd8ed1ab_0 - attmap=0.13.2=pyhd8ed1ab_0 - - attr=2.5.1=h166bdaf_1 - - attrs=21.4.0=pyhd8ed1ab_0 - - aws-c-auth=0.6.27=he072965_1 - - aws-c-cal=0.5.26=hf677bf3_1 - - aws-c-common=0.8.19=hd590300_0 - - aws-c-compression=0.2.16=hbad4bc6_7 - - aws-c-event-stream=0.2.20=hb4b372c_7 - - aws-c-http=0.7.7=h2632f9a_4 - - aws-c-io=0.13.21=h9fef7b8_5 - - aws-c-mqtt=0.8.11=h2282364_1 - - aws-c-s3=0.3.0=hcb5a9b2_2 - - aws-c-sdkutils=0.1.9=hbad4bc6_2 - - aws-checksums=0.1.14=hbad4bc6_7 - - aws-crt-cpp=0.20.2=he0fdcb3_0 - - aws-sdk-cpp=1.10.57=h059227d_13 - - babel=2.12.1=pyhd8ed1ab_1 - - backcall=0.2.0=pyh9f0ad1d_0 - - backports=1.0=pyhd8ed1ab_3 - - backports.functools_lru_cache=1.6.4=pyhd8ed1ab_0 - - bcrypt=3.2.2=py310h5764c6d_1 - - beautifulsoup4=4.12.2=pyha770c72_0 - - biopython=1.81=py310h1fa729e_0 - - black=23.3.0=py310hff52083_1 - - bleach=6.0.0=pyhd8ed1ab_0 - - blinker=1.6.2=pyhd8ed1ab_0 - - blosc=1.21.4=h0f2a231_0 - - bokeh=3.1.1=pyhd8ed1ab_0 - - boltons=23.0.0=pyhd8ed1ab_0 - - boost-cpp=1.78.0=h6582d0a_3 + - attrs=24.2.0=pyh71513ae_0 + - aws-c-auth=0.7.25=h15d0e8c_6 + - aws-c-cal=0.7.3=h8dac057_2 + - aws-c-common=0.9.27=h4bc722e_0 + - aws-c-compression=0.2.18=h038f3f9_10 + - aws-c-event-stream=0.4.3=h570d160_0 + - aws-c-http=0.8.7=ha1f794c_4 + - aws-c-io=0.14.18=hf5b9b93_6 + - aws-c-mqtt=0.10.4=hc14a930_17 + - aws-c-s3=0.6.4=h558cea2_8 + - aws-c-sdkutils=0.1.19=h038f3f9_2 + - aws-checksums=0.1.18=h038f3f9_10 + - aws-crt-cpp=0.27.5=h6e4e78f_8 + - aws-sdk-cpp=1.11.379=hce093eb_4 + - azure-core-cpp=1.13.0=h935415a_0 + - azure-identity-cpp=1.8.0=hd126650_2 + - azure-storage-blobs-cpp=12.12.0=hd2e3451_0 + - azure-storage-common-cpp=12.7.0=h10ac4d7_1 + - azure-storage-files-datalake-cpp=12.11.0=h325d260_1 + - babel=2.14.0=pyhd8ed1ab_0 + - beautifulsoup4=4.12.3=pyha770c72_0 + - biopython=1.84=py311h331c9d8_0 + - bleach=6.1.0=pyhd8ed1ab_0 + - blinker=1.8.2=pyhd8ed1ab_0 + - blosc=1.21.6=hef167b5_0 + - bokeh=3.5.1=pyhd8ed1ab_0 - boto=2.49.0=py_0 - - boto3=1.26.144=pyhd8ed1ab_0 - - botocore=1.29.145=pyhd8ed1ab_0 - - branca=0.6.0=pyhd8ed1ab_0 - - brotli=1.0.9=h166bdaf_8 - - brotli-bin=1.0.9=h166bdaf_8 - - brotlipy=0.7.0=py310h5764c6d_1005 - - bzip2=1.0.8=h7f98852_4 - - c-ares=1.19.1=hd590300_0 - - ca-certificates=2023.5.7=hbcca054_0 + - branca=0.7.2=pyhd8ed1ab_0 + - brotli=1.1.0=hd590300_1 + - brotli-bin=1.1.0=hd590300_1 + - brotli-python=1.1.0=py311hb755f60_1 + - bzip2=1.0.8=h4bc722e_7 + - c-ares=1.33.0=ha66036c_0 + - ca-certificates=2024.7.4=hbcca054_0 - cached-property=1.5.2=hd8ed1ab_1 - cached_property=1.5.2=pyha770c72_1 - - cachetools=5.3.0=pyhd8ed1ab_0 - - cairo=1.16.0=hbbf8b49_1016 - - certifi=2023.5.7=pyhd8ed1ab_0 - - cffi=1.15.1=py310h255011f_3 - - cfitsio=4.2.0=hd9d235c_0 - - chardet=4.0.0=py310hff52083_3 - - charset-normalizer=3.1.0=pyhd8ed1ab_0 - - click=8.1.3=unix_pyhd8ed1ab_2 - - click-plugins=1.1.1=py_0 - - cligj=0.7.2=pyhd8ed1ab_1 - - cloudpickle=2.2.1=pyhd8ed1ab_0 - - coin-or-cbc=2.10.10=h9002f0b_0 + - cachetools=5.5.0=pyhd8ed1ab_0 + - cairo=1.18.0=hebfffa5_3 + - certifi=2024.7.4=pyhd8ed1ab_0 + - cffi=1.17.0=py311ha8e6434_0 + - cfitsio=4.4.1=hf8ad068_0 + - charset-normalizer=3.3.2=pyhd8ed1ab_0 + - click=8.1.7=unix_pyh707e725_0 + - cloudpickle=3.0.0=pyhd8ed1ab_0 + - coin-or-cbc=2.10.11=h56f689f_0 - coin-or-cgl=0.60.7=h516709c_0 - coin-or-clp=1.17.8=h1ee7a9c_0 - - coin-or-osi=0.108.8=ha2443b9_0 - - coin-or-utils=2.11.9=hee58242_0 - - coincbc=2.10.10=0_metapackage + - coin-or-osi=0.108.11=h6e6398e_0 + - coin-or-utils=2.11.12=h00a8a60_0 + - coincbc=2.10.11=0_metapackage - colorama=0.4.6=pyhd8ed1ab_0 - - comm=0.1.3=pyhd8ed1ab_0 - - conda=23.3.1=py310hff52083_0 - - conda-package-handling=2.0.2=pyh38be061_0 - - conda-package-streaming=0.8.0=pyhd8ed1ab_0 - - configargparse=1.5.3=pyhd8ed1ab_0 + - comm=0.2.2=pyhd8ed1ab_0 + - conda-inject=1.3.2=pyhd8ed1ab_0 + - configargparse=1.7=pyhd8ed1ab_0 - connection_pool=0.0.3=pyhd3deb0d_0 - - contourpy=1.0.7=py310hdf3cbec_0 - - crcmod=1.7=py310h5764c6d_1009 - - cryptography=41.0.0=py310h75e40e8_0 - - curl=8.1.2=h409715c_0 - - cycler=0.11.0=pyhd8ed1ab_0 - - cytoolz=0.12.0=py310h5764c6d_1 - - dask=2023.5.1=pyhd8ed1ab_0 - - dask-core=2023.5.1=pyhd8ed1ab_0 + - contourpy=1.2.1=py311h9547e67_0 + - crcmod=1.7=py311h459d7ec_1010 + - cryptography=43.0.0=py311hc6616f6_0 + - cycler=0.12.1=pyhd8ed1ab_0 + - cytoolz=0.12.3=py311h459d7ec_0 + - dask=2024.8.1=pyhd8ed1ab_0 + - dask-core=2024.8.1=pyhd8ed1ab_0 + - dask-expr=1.1.11=pyhd8ed1ab_0 - dataclasses=0.8=pyhc8e2a94_3 - - datrie=0.8.2=py310h5764c6d_6 + - datrie=0.8.2=py311h459d7ec_7 - dbus=1.13.6=h5008d03_3 - - debugpy=1.6.7=py310heca2aa9_0 + - debugpy=1.8.5=py311hf86e51f_0 - decorator=5.1.1=pyhd8ed1ab_0 - defusedxml=0.7.1=pyhd8ed1ab_0 - - distributed=2023.5.1=pyhd8ed1ab_0 - - docutils=0.17.1=py310hff52083_3 - - dpath=2.1.6=pyha770c72_0 - - dropbox=11.36.0=pyhd8ed1ab_0 + - dill=0.3.8=pyhd8ed1ab_0 + - distributed=2024.8.1=pyhd8ed1ab_0 + - docutils=0.20.1=py311h38be061_3 + - double-conversion=3.3.0=h59595ed_0 + - dpath=2.2.0=pyha770c72_0 + - eido=0.2.2=pyhd8ed1ab_0 - entrypoints=0.4=pyhd8ed1ab_0 - - exceptiongroup=1.1.1=pyhd8ed1ab_0 - - executing=1.2.0=pyhd8ed1ab_0 - - expat=2.5.0=hcb278e6_1 + - exceptiongroup=1.2.2=pyhd8ed1ab_0 + - executing=2.0.1=pyhd8ed1ab_0 + - expat=2.6.2=h59595ed_0 - fasteners=0.17.3=pyhd8ed1ab_0 - - filechunkio=1.8=py_2 - - filelock=3.12.0=pyhd8ed1ab_0 - - fiona=1.9.4=py310h111440e_0 - - flit-core=3.9.0=pyhd8ed1ab_0 - - fmt=9.1.0=h924138e_0 - - folium=0.14.0=pyhd8ed1ab_0 + - filelock=3.15.4=pyhd8ed1ab_0 + - fmt=11.0.2=h434a139_0 + - folium=0.17.0=pyhd8ed1ab_0 - font-ttf-dejavu-sans-mono=2.37=hab24e00_0 - font-ttf-inconsolata=3.000=h77eed37_0 - font-ttf-source-code-pro=2.038=h77eed37_0 - - font-ttf-ubuntu=0.83=hab24e00_0 + - font-ttf-ubuntu=0.83=h77eed37_2 - fontconfig=2.14.2=h14ed4e7_0 - fonts-conda-ecosystem=1=0 - fonts-conda-forge=1=0 - - fonttools=4.39.4=py310h2372a71_0 - - freetype=2.12.1=hca18f0e_1 - - freexl=1.0.6=h166bdaf_1 - - fsspec=2023.5.0=pyh1a96a4e_0 - - ftputil=5.0.4=pyhd8ed1ab_0 - - future=0.18.3=pyhd8ed1ab_0 - - gcs-oauth2-boto-plugin=3.0=pyhd8ed1ab_0 - - gcsfs=2023.5.0=pyhd8ed1ab_0 - - gdal=3.7.0=py310h52aca19_1 - - geopandas=0.13.0=pyhd8ed1ab_0 - - geopandas-base=0.13.0=pyha770c72_0 - - geos=3.11.2=hcb278e6_0 - - geotiff=1.7.1=h480ec47_8 - - gettext=0.21.1=h27087fc_0 + - fonttools=4.53.1=py311h61187de_0 + - fqdn=1.5.1=pyhd8ed1ab_0 + - freetype=2.12.1=h267a509_2 + - freexl=2.0.0=h743c826_0 + - frozenlist=1.4.1=py311h459d7ec_0 + - fsspec=2024.6.1=pyhff2d567_0 + - future=1.0.0=pyhd8ed1ab_0 + - gcs-oauth2-boto-plugin=3.2=pyhd8ed1ab_0 + - gcsfs=2024.6.1=pyhd8ed1ab_0 + - gdal=3.9.2=py311hb17e472_0 + - geopandas=1.0.1=pyhd8ed1ab_0 + - geopandas-base=1.0.1=pyha770c72_0 + - geos=3.12.2=he02047a_1 + - geotiff=1.7.3=hf7fa9e8_2 - gflags=2.2.2=he1b5a44_1004 - - giflib=5.2.1=h0b41bf4_3 - - gitdb=4.0.10=pyhd8ed1ab_0 - - gitpython=3.1.31=pyhd8ed1ab_0 - - glib=2.76.3=hfc55251_0 - - glib-tools=2.76.3=hfc55251_0 - - glog=0.6.0=h6f12383_0 - - google-api-core=2.11.0=pyhd8ed1ab_0 - - google-api-python-client=2.88.0=pyhd8ed1ab_0 + - giflib=5.2.2=hd590300_0 + - gitdb=4.0.11=pyhd8ed1ab_0 + - gitpython=3.1.43=pyhd8ed1ab_0 + - glog=0.7.1=hbabe93e_0 + - gmp=6.3.0=hac33072_2 + - gmpy2=2.1.5=py311hc4f1f91_1 + - google-api-core=2.19.1=pyhd8ed1ab_0 - google-apitools=0.5.32=pyhd8ed1ab_0 - - google-auth=2.19.0=pyh1a96a4e_0 - - google-auth-httplib2=0.1.0=pyhd8ed1ab_1 - - google-auth-oauthlib=1.0.0=pyhd8ed1ab_0 - - google-cloud-core=2.3.2=pyhd8ed1ab_0 - - google-cloud-storage=2.9.0=pyh1a96a4e_0 - - google-crc32c=1.1.2=py310he8fe98e_4 + - google-auth=2.17.0=pyh1a96a4e_0 + - google-auth-httplib2=0.2.0=pyhd8ed1ab_0 + - google-auth-oauthlib=1.2.1=pyhd8ed1ab_0 + - google-cloud-core=2.4.1=pyhd8ed1ab_0 + - google-cloud-storage=2.11.0=pyh1a96a4e_0 + - google-crc32c=1.1.2=py311h9b08b9c_5 - google-reauth=0.1.1=pyhd3deb0d_0 - - google-resumable-media=2.5.0=pyhd8ed1ab_0 - - googleapis-common-protos=1.57.1=pyhd8ed1ab_0 - - graphite2=1.3.13=h58526e2_1001 - - greenlet=2.0.2=py310hc6cd4ac_1 - - grpcio=1.54.2=py310heca2aa9_2 - - gst-plugins-base=1.22.3=h938bd60_1 - - gstreamer=1.22.3=h977cf35_1 - - gsutil=5.24=pyhd8ed1ab_0 - - h5py=3.8.0=nompi_py310ha66b2ad_101 - - harfbuzz=7.3.0=hdb3a94d_0 - - hdf4=4.2.15=h501b40f_6 - - hdf5=1.14.0=nompi_hb72d44e_103 + - google-resumable-media=2.7.2=pyhd8ed1ab_1 + - googleapis-common-protos=1.63.2=pyhd8ed1ab_0 + - graphite2=1.3.13=h59595ed_1003 + - greenlet=3.0.3=py311hb755f60_0 + - grpcio=1.62.2=py311ha6695c7_0 + - gsutil=5.30=pyhd8ed1ab_0 + - h11=0.14.0=pyhd8ed1ab_0 + - h2=4.1.0=pyhd8ed1ab_0 + - h5py=3.11.0=nompi_py311h439e445_102 + - harfbuzz=9.0.0=hda332d3_1 + - hdf4=4.2.15=h2a13503_7 + - hdf5=1.14.3=nompi_hdf9ad27_105 + - hpack=4.0.0=pyh9f0ad1d_0 + - httpcore=1.0.5=pyhd8ed1ab_0 - httplib2=0.20.4=pyhd8ed1ab_0 - - humanfriendly=10.0=py310hff52083_4 - - icu=72.1=hcb278e6_0 - - idna=3.4=pyhd8ed1ab_0 + - httpx=0.27.0=pyhd8ed1ab_0 + - humanfriendly=10.0=pyhd8ed1ab_6 + - hyperframe=6.0.1=pyhd8ed1ab_0 + - icu=75.1=he02047a_0 + - idna=3.7=pyhd8ed1ab_0 - imagesize=1.4.1=pyhd8ed1ab_0 - - importlib_metadata=6.6.0=hd8ed1ab_0 - - importlib_resources=5.12.0=pyhd8ed1ab_0 + - immutables=0.20=py311h459d7ec_1 + - importlib-metadata=8.4.0=pyha770c72_0 + - importlib_metadata=8.4.0=hd8ed1ab_0 + - importlib_resources=6.4.3=pyhd8ed1ab_0 - iniconfig=2.0.0=pyhd8ed1ab_0 - - ipykernel=6.23.1=pyh210e3f2_0 - - ipyleaflet=0.17.2=pyhd8ed1ab_0 - - ipython=8.13.2=pyh41d4057_0 - - ipywidgets=8.0.6=pyhd8ed1ab_0 + - ipykernel=6.29.5=pyh3099207_0 + - ipyleaflet=0.19.2=pyhd8ed1ab_0 + - ipython=8.26.0=pyh707e725_0 + - ipywidgets=8.1.3=pyhd8ed1ab_0 - iso3166=2.1.1=pyhd8ed1ab_0 - - jedi=0.18.2=pyhd8ed1ab_0 - - jinja2=3.1.2=pyhd8ed1ab_1 - - jmespath=1.0.1=pyhd8ed1ab_0 - - joblib=1.2.0=pyhd8ed1ab_0 - - json-c=0.16=hc379101_0 - - json5=0.9.5=pyh9f0ad1d_0 - - jsonpatch=1.32=pyhd8ed1ab_0 - - jsonpointer=2.0=py_0 - - jsonschema=4.17.3=pyhd8ed1ab_0 - - jupyter-book=0.15.1=pyhd8ed1ab_0 - - jupyter-cache=0.6.1=pyhd8ed1ab_0 - - jupyter-lsp=2.2.0=pyhd8ed1ab_0 - - jupyter_client=8.2.0=pyhd8ed1ab_0 - - jupyter_core=5.3.0=py310hff52083_0 - - jupyter_events=0.6.3=pyhd8ed1ab_0 - - jupyter_server=2.6.0=pyhd8ed1ab_0 - - jupyter_server_terminals=0.4.4=pyhd8ed1ab_1 - - jupyterlab=4.0.1=pyhd8ed1ab_0 - - jupyterlab_pygments=0.2.2=pyhd8ed1ab_0 - - jupyterlab_server=2.22.1=pyhd8ed1ab_0 - - jupyterlab_widgets=3.0.7=pyhd8ed1ab_1 - - kealib=1.5.1=h3845be2_3 + - isoduration=20.11.0=pyhd8ed1ab_0 + - jedi=0.19.1=pyhd8ed1ab_0 + - jinja2=3.1.4=pyhd8ed1ab_0 + - joblib=1.4.2=pyhd8ed1ab_0 + - json-c=0.17=h1220068_1 + - json5=0.9.25=pyhd8ed1ab_0 + - jsonpointer=3.0.0=py311h38be061_0 + - jsonschema=4.23.0=pyhd8ed1ab_0 + - jsonschema-specifications=2023.12.1=pyhd8ed1ab_0 + - jsonschema-with-format-nongpl=4.23.0=hd8ed1ab_0 + - jupyter-book=1.0.2=pyhd8ed1ab_0 + - jupyter-cache=1.0.0=pyhd8ed1ab_0 + - jupyter-lsp=2.2.5=pyhd8ed1ab_0 + - jupyter_client=8.6.2=pyhd8ed1ab_0 + - jupyter_core=5.7.2=py311h38be061_0 + - jupyter_events=0.10.0=pyhd8ed1ab_0 + - jupyter_leaflet=0.19.2=pyhd8ed1ab_0 + - jupyter_server=2.14.2=pyhd8ed1ab_0 + - jupyter_server_terminals=0.5.3=pyhd8ed1ab_0 + - jupyterlab=4.2.4=pyhd8ed1ab_0 + - jupyterlab_pygments=0.3.0=pyhd8ed1ab_1 + - jupyterlab_server=2.27.3=pyhd8ed1ab_0 + - jupyterlab_widgets=3.0.11=pyhd8ed1ab_0 + - kealib=1.5.3=hee9dde6_1 - keyutils=1.6.1=h166bdaf_0 - - kiwisolver=1.4.4=py310hbf28c38_1 - - krb5=1.20.1=h81ceb04_0 - - lame=3.100=h166bdaf_1003 + - kiwisolver=1.4.5=py311h9547e67_1 + - krb5=1.21.3=h659f571_0 - latexcodec=2.0.1=pyh9f0ad1d_0 - - lcms2=2.15=haa2dc70_1 - - ld_impl_linux-64=2.40=h41732ed_0 + - lcms2=2.16=hb7c19ff_0 + - ld_impl_linux-64=2.40=hf3520f5_7 - lerc=4.0.0=h27087fc_0 - - libabseil=20230125.2=cxx17_h59595ed_2 - - libaec=1.0.6=hcb278e6_1 - - libarchive=3.6.2=h039dbb9_1 - - libarrow=12.0.0=h96638e8_5_cpu - - libblas=3.9.0=16_linux64_openblas - - libbrotlicommon=1.0.9=h166bdaf_8 - - libbrotlidec=1.0.9=h166bdaf_8 - - libbrotlienc=1.0.9=h166bdaf_8 - - libcap=2.67=he9d0100_0 - - libcblas=3.9.0=16_linux64_openblas - - libclang=15.0.7=default_h7634d5b_2 - - libclang13=15.0.7=default_h9986a30_2 + - libabseil=20240116.2=cxx17_he02047a_1 + - libaec=1.1.3=h59595ed_0 + - libarchive=3.7.4=hfca40fe_0 + - libarrow=17.0.0=h8756180_8_cpu + - libarrow-acero=17.0.0=he02047a_8_cpu + - libarrow-dataset=17.0.0=he02047a_8_cpu + - libarrow-substrait=17.0.0=hc9a23c6_8_cpu + - libblas=3.9.0=23_linux64_openblas + - libbrotlicommon=1.1.0=hd590300_1 + - libbrotlidec=1.1.0=hd590300_1 + - libbrotlienc=1.1.0=hd590300_1 + - libcblas=3.9.0=23_linux64_openblas + - libclang-cpp18.1=18.1.8=default_hf981a13_2 + - libclang13=18.1.8=default_h9def88c_2 - libcrc32c=1.1.2=h9c3ff4c_0 - - libcups=2.3.3=h36d4200_3 - - libcurl=8.1.2=h409715c_0 - - libdeflate=1.18=h0b41bf4_0 + - libcups=2.3.3=h4637d8d_4 + - libcurl=8.9.1=hdb1bdb2_0 + - libdeflate=1.21=h4bc722e_0 + - libdrm=2.4.122=h4ab18f5_0 - libedit=3.1.20191231=he28a2e2_2 - - libev=4.33=h516909a_1 - - libevent=2.1.12=h3358134_0 - - libexpat=2.5.0=hcb278e6_1 + - libev=4.33=hd590300_2 + - libevent=2.1.12=hf998b51_1 + - libexpat=2.6.2=h59595ed_0 - libffi=3.4.2=h7f98852_5 - - libflac=1.4.2=h27087fc_0 - - libgcc-ng=12.2.0=h65d4601_19 - - libgcrypt=1.10.1=h166bdaf_0 - - libgdal=3.7.0=h9f4e061_1 - - libgfortran-ng=12.2.0=h69a702a_19 - - libgfortran5=12.2.0=h337968e_19 - - libglib=2.76.3=hebfc3b9_0 - - libgomp=12.2.0=h65d4601_19 - - libgoogle-cloud=2.10.1=hac9eb74_1 - - libgpg-error=1.46=h620e276_0 - - libgrpc=1.54.2=hb20ce57_2 - - libiconv=1.17=h166bdaf_0 - - libjpeg-turbo=2.1.5.1=h0b41bf4_0 - - libkml=1.3.0=h37653c0_1015 - - liblapack=3.9.0=16_linux64_openblas - - liblapacke=3.9.0=16_linux64_openblas - - libllvm14=14.0.6=hcd5def8_2 - - libllvm15=15.0.7=h5cf9203_2 - - libmamba=1.4.2=hcea66bb_0 - - libmambapy=1.4.2=py310h1428755_0 - - libnetcdf=4.9.2=nompi_h0f3d0bb_105 - - libnghttp2=1.52.0=h61bc06f_0 - - libnsl=2.0.0=h7f98852_0 - - libnuma=2.0.16=h0b41bf4_1 - - libogg=1.3.4=h7f98852_1 - - libopenblas=0.3.21=pthreads_h78a6416_3 - - libopus=1.3.1=h7f98852_1 - - libpng=1.6.39=h753d276_0 - - libpq=15.3=hbcd7760_1 - - libprotobuf=3.21.12=h3eb15da_0 - - librttopo=1.1.0=h0d5128d_13 - - libsndfile=1.2.0=hb75c966_0 + - libgcc-ng=14.1.0=h77fa898_0 + - libgdal=3.9.2=ha770c72_0 + - libgdal-core=3.9.2=hba09cee_0 + - libgdal-fits=3.9.2=hdd6600c_0 + - libgdal-grib=3.9.2=h5f34788_0 + - libgdal-hdf4=3.9.2=ha39a594_0 + - libgdal-hdf5=3.9.2=ha2ed5f0_0 + - libgdal-jp2openjpeg=3.9.2=h2ebfdf0_0 + - libgdal-kea=3.9.2=h2b45729_0 + - libgdal-netcdf=3.9.2=h94e7027_0 + - libgdal-pdf=3.9.2=h0fa2cb4_0 + - libgdal-pg=3.9.2=he047751_0 + - libgdal-postgisraster=3.9.2=he047751_0 + - libgdal-tiledb=3.9.2=h9d8aadb_0 + - libgdal-xls=3.9.2=h062f1c4_0 + - libgfortran-ng=14.1.0=h69a702a_0 + - libgfortran5=14.1.0=hc5f4f2c_0 + - libglib=2.80.3=h315aac3_2 + - libgomp=14.1.0=h77fa898_0 + - libgoogle-cloud=2.28.0=h26d7fe4_0 + - libgoogle-cloud-storage=2.28.0=ha262f82_0 + - libgrpc=1.62.2=h15f2491_0 + - libiconv=1.17=hd590300_2 + - libjpeg-turbo=3.0.0=hd590300_1 + - libkml=1.3.0=hbbc8833_1020 + - liblapack=3.9.0=23_linux64_openblas + - liblapacke=3.9.0=23_linux64_openblas + - libllvm14=14.0.6=hcd5def8_4 + - libllvm18=18.1.8=h8b73ec9_2 + - libnetcdf=4.9.2=nompi_h135f659_114 + - libnghttp2=1.58.0=h47da74e_1 + - libnsl=2.0.1=hd590300_0 + - libopenblas=0.3.27=pthreads_hac2b453_1 + - libparquet=17.0.0=haa1307c_8_cpu + - libpciaccess=0.18=hd590300_0 + - libpng=1.6.43=h2797004_0 + - libpq=16.4=h482b261_0 + - libprotobuf=4.25.3=h08a7969_0 + - libre2-11=2023.09.01=h5a48ba9_2 + - librttopo=1.1.0=hc670b87_16 - libsodium=1.0.18=h36c2ea0_1 - - libsolv=0.7.23=h3eb15da_0 - - libspatialindex=1.9.3=h9c3ff4c_4 - - libspatialite=5.0.1=hb46c372_26 - - libsqlite=3.42.0=h2797004_0 - - libssh2=1.10.0=hf14f497_3 - - libstdcxx-ng=12.2.0=h46fd767_19 - - libsystemd0=253=h8c4010b_1 - - libthrift=0.18.1=h8fd135c_1 - - libtiff=4.5.0=ha587672_6 + - libspatialite=5.1.0=h15fa968_9 + - libsqlite=3.46.0=hde9e2c9_0 + - libssh2=1.11.0=h0841786_0 + - libstdcxx-ng=14.1.0=hc0a3c3a_0 + - libthrift=0.20.0=hb90f79a_0 + - libtiff=4.6.0=h46a8edc_4 + - libtorch=2.3.1=cpu_generic_h970db74_0 - libutf8proc=2.8.0=h166bdaf_0 - libuuid=2.38.1=h0b41bf4_0 - - libvorbis=1.3.7=h9c3ff4c_0 - - libwebp-base=1.3.0=h0b41bf4_0 - - libxcb=1.15=h0b41bf4_0 - - libxkbcommon=1.5.0=h5d7e998_3 - - libxml2=2.11.4=h0d562d8_0 - - libzip=1.9.2=hc929e4a_1 - - libzlib=1.2.13=h166bdaf_4 - - linkify-it-py=2.0.0=pyhd8ed1ab_0 - - llvmlite=0.40.0=py310h1b8f574_0 - - lmfit=1.2.1=pyhd8ed1ab_0 + - libuv=1.48.0=hd590300_0 + - libwebp-base=1.4.0=hd590300_0 + - libxcb=1.16=hd590300_0 + - libxcrypt=4.4.36=hd590300_1 + - libxkbcommon=1.7.0=h2c5496b_1 + - libxml2=2.12.7=he7c6b58_4 + - libxslt=1.1.39=h76b75d6_0 + - libzip=1.10.1=h2629f0a_3 + - libzlib=1.3.1=h4ab18f5_1 + - linkify-it-py=2.0.3=pyhd8ed1ab_0 + - llvmlite=0.43.0=py311hbde99c3_0 + - lmfit=1.3.2=pyhd8ed1ab_0 - locket=1.0.0=pyhd8ed1ab_0 - logmuse=0.2.6=pyh8c360ce_0 - - lz4=4.3.2=py310h0cfdcf0_0 + - lz4=4.3.3=py311h38e4bf4_0 - lz4-c=1.9.4=hcb278e6_0 - - lzo=2.10=h516909a_1000 - - mamba=1.4.2=py310h51d5547_0 - - mapclassify=2.5.0=pyhd8ed1ab_1 - - markdown-it-py=2.2.0=pyhd8ed1ab_0 - - markupsafe=2.1.2=py310h1fa729e_0 - - matplotlib=3.7.1=py310hff52083_0 - - matplotlib-base=3.7.1=py310he60537e_0 - - matplotlib-inline=0.1.6=pyhd8ed1ab_0 - - mdit-py-plugins=0.3.5=pyhd8ed1ab_0 - - mdurl=0.1.0=pyhd8ed1ab_0 - - mistune=2.0.5=pyhd8ed1ab_0 - - monotonic=1.5=py_0 - - mpg123=1.31.3=hcb278e6_0 - - msgpack-python=1.0.5=py310hdf3cbec_0 - - multidict=6.0.4=py310h1fa729e_0 - - munch=3.0.0=pyhd8ed1ab_0 + - lzo=2.10=hd590300_1001 + - mapclassify=2.8.0=pyhd8ed1ab_0 + - markdown-it-py=3.0.0=pyhd8ed1ab_0 + - markupsafe=2.1.5=py311h459d7ec_0 + - matplotlib=3.9.2=py311h38be061_0 + - matplotlib-base=3.9.2=py311h74b4f7c_0 + - matplotlib-inline=0.1.7=pyhd8ed1ab_0 + - mdit-py-plugins=0.4.1=pyhd8ed1ab_0 + - mdurl=0.1.2=pyhd8ed1ab_0 + - minizip=4.0.7=h401b404_0 + - mistune=3.0.2=pyhd8ed1ab_0 + - monotonic=1.5=pyhd8ed1ab_1 + - mpc=1.3.1=hfe3b2da_0 + - mpfr=4.2.1=h38ae2d0_2 + - mpmath=1.3.0=pyhd8ed1ab_0 + - msgpack-python=1.0.8=py311h52f7536_0 + - multidict=6.0.5=py311h459d7ec_0 - munkres=1.1.4=pyh9f0ad1d_0 - - mypy_extensions=1.0.0=pyha770c72_0 - - mysql-common=8.0.32=hf1915f5_2 - - mysql-libs=8.0.32=hca2cd23_2 - - myst-nb=0.17.2=pyhd8ed1ab_0 - - myst-parser=0.18.1=pyhd8ed1ab_0 - - nbclient=0.7.4=pyhd8ed1ab_0 - - nbconvert-core=7.4.0=pyhd8ed1ab_0 - - nbformat=5.9.0=pyhd8ed1ab_0 - - ncurses=6.3=h27087fc_1 - - nest-asyncio=1.5.6=pyhd8ed1ab_0 - - networkx=3.1=pyhd8ed1ab_0 + - mysql-common=8.3.0=h70512c7_5 + - mysql-libs=8.3.0=ha479ceb_5 + - myst-nb=1.1.1=pyhd8ed1ab_0 + - myst-parser=2.0.0=pyhd8ed1ab_0 + - nbclient=0.10.0=pyhd8ed1ab_0 + - nbconvert-core=7.16.4=pyhd8ed1ab_1 + - nbformat=5.10.4=pyhd8ed1ab_0 + - ncurses=6.5=h59595ed_0 + - nest-asyncio=1.6.0=pyhd8ed1ab_0 + - networkx=3.3=pyhd8ed1ab_1 - nomkl=1.0=h5ca1d4c_0 - - notebook-shim=0.2.3=pyhd8ed1ab_0 + - nose=1.3.7=py_1006 + - notebook-shim=0.2.4=pyhd8ed1ab_0 - nspr=4.35=h27087fc_0 - - nss=3.89=he45b914_0 - - numba=0.57.0=py310h0f6aa51_1 - - numcodecs=0.11.0=py310heca2aa9_1 - - numexpr=2.8.4=py310h690d005_100 - - numpy=1.24.3=py310ha4c1d20_0 + - nss=3.103=h593d115_0 + - numba=0.60.0=py311h4bc866e_0 + - numcodecs=0.13.0=py311h044e617_0 + - numexpr=2.10.0=py311h8d05612_100 - oauth2client=4.1.3=py_0 - oauthlib=3.2.2=pyhd8ed1ab_0 - - openjpeg=2.5.0=hfec8fc6_2 - - openssl=3.1.1=hd590300_1 - - orc=1.8.3=hfdbbad2_0 - - overrides=7.3.1=pyhd8ed1ab_0 - - packaging=23.1=pyhd8ed1ab_0 - - pandas=2.0.2=py310h7cbd5c2_0 + - openjpeg=2.5.2=h488ebb8_0 + - openssl=3.3.1=h4bc722e_2 + - orc=2.0.2=h669347b_0 + - overrides=7.7.0=pyhd8ed1ab_0 + - packaging=24.1=pyhd8ed1ab_0 + - pandas=2.2.2=py311h14de704_1 - pandocfilters=1.5.0=pyhd8ed1ab_0 - - papermill=2.3.4=pyhd8ed1ab_0 - - paramiko=3.2.0=pyhd8ed1ab_0 - - parso=0.8.3=pyhd8ed1ab_0 - - partd=1.4.0=pyhd8ed1ab_0 - - pathspec=0.11.1=pyhd8ed1ab_0 - - patsy=0.5.3=pyhd8ed1ab_0 - - pcre2=10.40=hc3806b6_0 - - peppy=0.35.5=pyhd8ed1ab_0 - - pexpect=4.8.0=pyh1a96a4e_2 + - papermill=2.6.0=pyhd8ed1ab_0 + - parso=0.8.4=pyhd8ed1ab_0 + - partd=1.4.2=pyhd8ed1ab_0 + - patsy=0.5.6=pyhd8ed1ab_0 + - pcre2=10.44=hba22ea6_2 + - peppy=0.40.5=pyhd8ed1ab_0 + - pexpect=4.9.0=pyhd8ed1ab_0 - pickleshare=0.7.5=py_1003 - - pillow=9.5.0=py310h582fbeb_1 - - pip=23.1.2=pyhd8ed1ab_0 - - pixman=0.40.0=h36c2ea0_0 - - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_0 - - plac=1.3.5=pyhd8ed1ab_0 - - platformdirs=3.5.1=pyhd8ed1ab_0 - - plotly=5.14.1=pyhd8ed1ab_0 - - pluggy=1.0.0=pyhd8ed1ab_5 - - ply=3.11=py_1 - - pomegranate=0.14.8=py310hc4a4660_0 - - pooch=1.7.0=pyha770c72_3 - - poppler=23.05.0=hd18248d_1 + - pillow=10.4.0=py311h82a398c_0 + - pip=24.2=pyhd8ed1ab_0 + - pixman=0.43.2=h59595ed_0 + - pkgutil-resolve-name=1.3.10=pyhd8ed1ab_1 + - plac=1.4.3=pyhd8ed1ab_0 + - platformdirs=4.2.2=pyhd8ed1ab_0 + - plotly=5.23.0=pyhd8ed1ab_0 + - pluggy=1.5.0=pyhd8ed1ab_0 + - pomegranate=1.0.0=pyhd8ed1ab_1 + - poppler=24.08.0=hb0d391f_0 - poppler-data=0.4.12=hd8ed1ab_0 - - postgresql=15.3=hd458b1d_1 - - prettytable=3.7.0=pyhd8ed1ab_0 - - proj=9.2.0=h8ffa02c_0 - - prometheus_client=0.17.0=pyhd8ed1ab_0 - - prompt-toolkit=3.0.38=pyha770c72_0 - - prompt_toolkit=3.0.38=hd8ed1ab_0 - - protobuf=4.21.12=py310heca2aa9_0 - - psutil=5.9.5=py310h1fa729e_0 + - postgresql=16.4=ha8faf9a_0 + - proj=9.4.1=h54d7996_1 + - prometheus_client=0.20.0=pyhd8ed1ab_0 + - prompt-toolkit=3.0.47=pyha770c72_0 + - proto-plus=1.23.0=pyhd8ed1ab_0 + - protobuf=4.25.3=py311h7b78aeb_0 + - psutil=6.0.0=py311h331c9d8_0 - pthread-stubs=0.4=h36c2ea0_1001 - ptyprocess=0.7.0=pyhd3deb0d_0 - - pulp=2.7.0=py310hff52083_0 - - pulseaudio-client=16.1=hb77b528_4 - - pure_eval=0.2.2=pyhd8ed1ab_0 - - pyarrow=12.0.0=py310he6bfd7f_5_cpu - - pyasn1=0.4.8=py_0 - - pyasn1-modules=0.2.7=py_0 - - pybind11-abi=4=hd8ed1ab_3 + - pulp=2.8.0=py311h38be061_0 + - pure_eval=0.2.3=pyhd8ed1ab_0 + - pyarrow=17.0.0=py311hbd00459_1 + - pyarrow-core=17.0.0=py311h4510849_1_cpu + - pyarrow-hotfix=0.6=pyhd8ed1ab_0 + - pyasn1=0.6.0=pyhd8ed1ab_0 + - pyasn1-modules=0.4.0=pyhd8ed1ab_0 - pybtex=0.24.0=pyhd8ed1ab_2 - - pybtex-docutils=1.0.2=py310hff52083_2 - - pycosat=0.6.4=py310h5764c6d_1 - - pycparser=2.21=pyhd8ed1ab_0 - - pydata-sphinx-theme=0.13.3=pyhd8ed1ab_0 - - pygments=2.15.1=pyhd8ed1ab_0 - - pyjwt=2.7.0=pyhd8ed1ab_0 - - pynacl=1.5.0=py310h5764c6d_2 - - pyopenssl=23.2.0=pyhd8ed1ab_1 - - pyparsing=3.0.9=pyhd8ed1ab_0 - - pyproj=3.5.0=py310hb814896_1 + - pybtex-docutils=1.0.3=py311h38be061_1 + - pycparser=2.22=pyhd8ed1ab_0 + - pydata-sphinx-theme=0.15.4=pyhd8ed1ab_0 + - pygments=2.18.0=pyhd8ed1ab_0 + - pyjwt=2.9.0=pyhd8ed1ab_1 + - pyogrio=0.9.0=py311hfc743a8_0 + - pyopenssl=24.2.1=pyhd8ed1ab_2 + - pyparsing=3.1.2=pyhd8ed1ab_0 + - pyproj=3.6.1=py311ha1c4eca_8 - pyprojroot=0.3.0=pyhd8ed1ab_0 - - pyqt=5.15.7=py310hab646b1_3 - - pyqt5-sip=12.11.0=py310heca2aa9_3 - - pyrsistent=0.19.3=py310h1fa729e_0 - - pysftp=0.2.9=py_1 + - pyside6=6.7.2=py311hba19f1e_2 - pysocks=1.7.1=pyha2e5f31_6 - - pytest=7.3.1=pyhd8ed1ab_0 - - python=3.10.11=he550d4f_0_cpython - - python-dateutil=2.8.2=pyhd8ed1ab_0 - - python-fastjsonschema=2.17.1=pyhd8ed1ab_0 - - python-irodsclient=1.1.8=pyhd8ed1ab_0 + - pytest=8.3.2=pyhd8ed1ab_0 + - python=3.11.9=hb806964_0_cpython + - python-dateutil=2.9.0=pyhd8ed1ab_0 + - python-fastjsonschema=2.20.0=pyhd8ed1ab_0 - python-json-logger=2.0.7=pyhd8ed1ab_0 - - python-tzdata=2023.3=pyhd8ed1ab_0 - - python_abi=3.10=3_cp310 - - pytz=2023.3=pyhd8ed1ab_0 + - python-tzdata=2024.1=pyhd8ed1ab_0 + - python_abi=3.11=5_cp311 + - pytorch=2.3.1=cpu_generic_py311h8ca351a_0 + - pytz=2024.1=pyhd8ed1ab_0 - pyu2f=0.1.5=pyhd8ed1ab_0 - - pyyaml=6.0=py310h5764c6d_5 - - pyzmq=25.1.0=py310h5bbb5d0_0 - - qt-main=5.15.8=h01ceb2d_13 - - rdma-core=28.9=h59595ed_1 - - re2=2023.03.02=h8c504da_0 + - pyyaml=6.0.2=py311h61187de_0 + - pyzmq=26.1.1=py311h759c1eb_0 + - qhull=2020.2=h434a139_5 + - qt6-main=6.7.2=hb12f9c5_4 + - re2=2023.09.01=h7f4b329_2 - readline=8.2=h8228510_1 - - reproc=14.2.4=h0b41bf4_0 - - reproc-cpp=14.2.4=hcb278e6_0 - - requests=2.31.0=pyhd8ed1ab_0 - - requests-oauthlib=1.3.1=pyhd8ed1ab_0 + - referencing=0.35.1=pyhd8ed1ab_0 + - requests=2.32.3=pyhd8ed1ab_0 + - requests-oauthlib=2.0.0=pyhd8ed1ab_0 - reretry=0.11.8=pyhd8ed1ab_0 - retry_decorator=1.1.1=pyh9f0ad1d_0 - rfc3339-validator=0.1.4=pyhd8ed1ab_0 - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - - rich=13.4.1=pyhd8ed1ab_0 - - rsa=4.9=pyhd8ed1ab_0 - - rtree=1.0.1=py310hbdcdc62_1 - - ruamel.yaml=0.17.31=py310h2372a71_0 - - ruamel.yaml.clib=0.2.7=py310h1fa729e_1 - - s2n=1.3.44=h06160fa_0 - - s3transfer=0.6.1=pyhd8ed1ab_0 - - scikit-allel=1.3.5=py310hb5077e9_1 - - scikit-learn=1.2.2=py310hf7d194e_2 - - scipy=1.10.1=py310ha4c1d20_3 - - seaborn=0.12.2=hd8ed1ab_0 - - seaborn-base=0.12.2=pyhd8ed1ab_0 - - send2trash=1.8.2=pyh41d4057_0 - - setuptools=67.7.2=pyhd8ed1ab_0 - - setuptools-scm=7.1.0=pyhd8ed1ab_0 - - shapely=2.0.1=py310h056c13c_1 - - sip=6.7.9=py310hc6cd4ac_0 + - rich=13.7.1=pyhd8ed1ab_0 + - rpds-py=0.20.0=py311hb3a8bbb_0 + - rsa=4.7.2=pyh44b312d_0 + - s2n=1.5.1=h3400bea_0 + - scikit-allel=1.3.8=py311h14de704_2 + - scikit-learn=1.5.1=py311hd632256_0 + - scipy=1.14.0=py311h0a5b728_2 + - seaborn=0.13.2=hd8ed1ab_2 + - seaborn-base=0.13.2=pyhd8ed1ab_2 + - send2trash=1.8.3=pyh0d859eb_0 + - setuptools=72.2.0=pyhd8ed1ab_0 + - setuptools-scm=8.1.0=pyhd8ed1ab_0 + - shapely=2.0.6=py311h5925939_0 - six=1.16.0=pyh6c4a22f_0 - - slacker=0.14.0=py_0 - - smart_open=6.3.0=pyhd8ed1ab_1 - - smmap=3.0.5=pyh44b312d_0 - - snakemake=7.26.0=hdfd78af_0 - - snakemake-minimal=7.26.0=pyhdfd78af_0 - - snappy=1.1.10=h9fff704_0 - - sniffio=1.3.0=pyhd8ed1ab_0 + - slack-sdk=3.31.0=pyha770c72_0 + - slack_sdk=3.31.0=hd8ed1ab_0 + - sleef=3.6.1=h3400bea_1 + - smart_open=7.0.4=pyhd8ed1ab_0 + - smmap=5.0.0=pyhd8ed1ab_0 + - snakemake=8.18.2=hdfd78af_0 + - snakemake-interface-common=1.17.3=pyhdfd78af_0 + - snakemake-interface-executor-plugins=9.2.0=pyhdfd78af_0 + - snakemake-interface-report-plugins=1.0.0=pyhdfd78af_0 + - snakemake-interface-storage-plugins=3.3.0=pyhdfd78af_0 + - snakemake-minimal=8.18.2=pyhdfd78af_0 + - snappy=1.2.1=ha2e4443_0 + - sniffio=1.3.1=pyhd8ed1ab_0 - snowballstemmer=2.2.0=pyhd8ed1ab_0 - - socksipy-branch=1.01=pyh9f0ad1d_0 - sortedcontainers=2.4.0=pyhd8ed1ab_0 - - soupsieve=2.3.2.post1=pyhd8ed1ab_0 - - sphinx=4.5.0=pyh6c4a22f_0 - - sphinx-book-theme=1.0.1=pyhd8ed1ab_0 + - soupsieve=2.5=pyhd8ed1ab_1 + - spdlog=1.14.1=hed91bc2_1 + - sphinx=7.4.7=pyhd8ed1ab_0 + - sphinx-book-theme=1.1.3=pyhd8ed1ab_0 - sphinx-comments=0.0.3=pyh9f0ad1d_0 - sphinx-copybutton=0.5.2=pyhd8ed1ab_0 - - sphinx-design=0.3.0=pyhd8ed1ab_0 - - sphinx-external-toc=0.3.1=pyhd8ed1ab_0 - - sphinx-jupyterbook-latex=0.5.2=pyhd8ed1ab_0 + - sphinx-design=0.6.1=pyhd8ed1ab_0 + - sphinx-external-toc=1.0.1=pyhd8ed1ab_0 + - sphinx-jupyterbook-latex=1.0.0=pyhd8ed1ab_0 - sphinx-multitoc-numbering=0.1.3=pyhd8ed1ab_0 - - sphinx-thebe=0.2.1=pyhd8ed1ab_0 + - sphinx-thebe=0.3.1=pyhd8ed1ab_0 - sphinx-togglebutton=0.3.2=pyhd8ed1ab_0 - - sphinxcontrib-applehelp=1.0.4=pyhd8ed1ab_0 - - sphinxcontrib-bibtex=2.5.0=pyhd8ed1ab_0 - - sphinxcontrib-devhelp=1.0.2=py_0 - - sphinxcontrib-htmlhelp=2.0.1=pyhd8ed1ab_0 - - sphinxcontrib-jsmath=1.0.1=py_0 - - sphinxcontrib-qthelp=1.0.3=py_0 - - sphinxcontrib-serializinghtml=1.1.5=pyhd8ed1ab_2 - - sqlalchemy=2.0.15=py310h2372a71_0 - - sqlite=3.42.0=h2c6b66d_0 + - sphinxcontrib-applehelp=2.0.0=pyhd8ed1ab_0 + - sphinxcontrib-bibtex=2.6.2=pyhd8ed1ab_0 + - sphinxcontrib-devhelp=2.0.0=pyhd8ed1ab_0 + - sphinxcontrib-htmlhelp=2.1.0=pyhd8ed1ab_0 + - sphinxcontrib-jsmath=1.0.1=pyhd8ed1ab_0 + - sphinxcontrib-qthelp=2.0.0=pyhd8ed1ab_0 + - sphinxcontrib-serializinghtml=1.1.10=pyhd8ed1ab_0 + - sqlalchemy=2.0.32=py311h61187de_0 + - sqlite=3.46.0=h6d4b2fc_0 - stack_data=0.6.2=pyhd8ed1ab_0 - - statsmodels=0.14.0=py310h278f3c1_1 - - stone=3.3.1=pyhd8ed1ab_0 + - statsmodels=0.14.2=py311h18e1886_0 - stopit=1.1.2=py_0 + - sympy=1.13.2=pypyh2585a3b_103 - tabulate=0.9.0=pyhd8ed1ab_1 - - tblib=1.7.0=pyhd8ed1ab_0 - - tenacity=8.2.2=pyhd8ed1ab_0 - - terminado=0.17.1=pyh41d4057_0 - - textwrap3=0.9.2=py_0 - - threadpoolctl=3.1.0=pyh8a188c0_0 - - throttler=1.2.1=pyhd8ed1ab_0 - - tiledb=2.13.2=hd532e3d_0 - - tinycss2=1.2.1=pyhd8ed1ab_0 - - tk=8.6.12=h27826a3_0 - - toml=0.10.2=pyhd8ed1ab_0 + - tblib=3.0.0=pyhd8ed1ab_0 + - tenacity=9.0.0=pyhd8ed1ab_0 + - terminado=0.18.1=pyh0d859eb_0 + - threadpoolctl=3.5.0=pyhc1e730c_0 + - throttler=1.2.2=pyhd8ed1ab_0 + - tiledb=2.25.0=h213c483_7 + - tinycss2=1.3.0=pyhd8ed1ab_0 + - tk=8.6.13=noxft_h4845f30_101 - tomli=2.0.1=pyhd8ed1ab_0 - - toolz=0.12.0=pyhd8ed1ab_0 + - toolz=0.12.1=pyhd8ed1ab_0 - toposort=1.10=pyhd8ed1ab_0 - - tornado=6.3.2=py310h2372a71_0 - - tqdm=4.65.0=pyhd8ed1ab_1 - - traitlets=5.9.0=pyhd8ed1ab_0 + - tornado=6.4.1=py311h331c9d8_0 + - tqdm=4.66.5=pyhd8ed1ab_0 + - traitlets=5.14.3=pyhd8ed1ab_0 - traittypes=0.2.1=pyh9f0ad1d_2 - - typing-extensions=4.6.2=hd8ed1ab_0 - - typing_extensions=4.6.2=pyha770c72_0 + - types-python-dateutil=2.9.0.20240821=pyhd8ed1ab_0 + - typing-extensions=4.12.2=hd8ed1ab_0 + - typing_extensions=4.12.2=pyha770c72_0 - typing_utils=0.1.0=pyhd8ed1ab_0 - - tzcode=2023c=h0b41bf4_0 - - tzdata=2023c=h71feb2d_0 - - ubiquerg=0.6.2=pyhd8ed1ab_0 - - uc-micro-py=1.0.1=pyhd8ed1ab_0 - - ucx=1.14.1=hf587318_2 - - uncertainties=3.1.7=pyhd8ed1ab_0 - - unicodedata2=15.0.0=py310h5764c6d_0 - - uritemplate=4.1.1=pyhd8ed1ab_0 - - urllib3=1.26.15=pyhd8ed1ab_0 + - tzcode=2024a=h3f72095_0 + - tzdata=2024a=h0c530f3_0 + - ubiquerg=0.8.0=pyhd8ed1ab_0 + - uc-micro-py=1.0.3=pyhd8ed1ab_0 + - uncertainties=3.2.2=pyhd8ed1ab_1 + - uri-template=1.3.0=pyhd8ed1ab_0 + - uriparser=0.9.8=hac33072_0 + - urllib3=2.2.2=pyhd8ed1ab_1 - veracitools=0.1.3=py_0 - - wcwidth=0.2.6=pyhd8ed1ab_0 - - webencodings=0.5.1=py_1 - - websocket-client=1.5.2=pyhd8ed1ab_0 - - wheel=0.40.0=pyhd8ed1ab_0 - - widgetsnbextension=4.0.7=pyhd8ed1ab_0 - - wrapt=1.15.0=py310h1fa729e_0 - - xarray=2023.5.0=pyhd8ed1ab_0 - - xcb-util=0.4.0=hd590300_1 - - xcb-util-image=0.4.0=h8ee46fc_1 - - xcb-util-keysyms=0.4.0=h8ee46fc_1 - - xcb-util-renderutil=0.3.9=hd590300_1 - - xcb-util-wm=0.4.1=h8ee46fc_1 - - xerces-c=3.2.4=h8d71039_2 - - xkeyboard-config=2.38=h0b41bf4_0 + - wayland=1.23.0=h5291e77_0 + - wcwidth=0.2.13=pyhd8ed1ab_0 + - webcolors=24.8.0=pyhd8ed1ab_0 + - webencodings=0.5.1=pyhd8ed1ab_2 + - websocket-client=1.8.0=pyhd8ed1ab_0 + - wheel=0.44.0=pyhd8ed1ab_0 + - widgetsnbextension=4.0.11=pyhd8ed1ab_0 + - wrapt=1.16.0=py311h459d7ec_0 + - xarray=2024.7.0=pyhd8ed1ab_0 + - xcb-util=0.4.1=hb711507_2 + - xcb-util-cursor=0.1.4=h4ab18f5_2 + - xcb-util-image=0.4.0=hb711507_2 + - xcb-util-keysyms=0.4.1=hb711507_0 + - xcb-util-renderutil=0.3.10=hb711507_0 + - xcb-util-wm=0.4.2=hb711507_0 + - xerces-c=3.2.5=h666cd97_1 + - xkeyboard-config=2.42=h4ab18f5_0 - xorg-kbproto=1.0.7=h7f98852_1002 - xorg-libice=1.1.1=hd590300_0 - xorg-libsm=1.2.4=h7391055_0 - - xorg-libx11=1.8.4=h8ee46fc_1 + - xorg-libx11=1.8.9=hb711507_1 - xorg-libxau=1.0.11=hd590300_0 - xorg-libxdmcp=1.1.3=h7f98852_0 - xorg-libxext=1.3.4=h0b41bf4_2 - - xorg-libxrender=0.9.10=h7f98852_1003 + - xorg-libxrender=0.9.11=hd590300_0 - xorg-renderproto=0.11.1=h7f98852_1002 - xorg-xextproto=7.3.0=h0b41bf4_1003 - - xorg-xf86vidmodeproto=2.3.1=h7f98852_1002 - xorg-xproto=7.0.31=h7f98852_1007 - - xyzservices=2023.5.0=pyhd8ed1ab_1 + - xyzservices=2024.6.0=pyhd8ed1ab_0 - xz=5.2.6=h166bdaf_0 - yaml=0.2.5=h7f98852_2 - - yaml-cpp=0.7.0=h27087fc_2 - - yarl=1.9.2=py310h2372a71_0 - - yte=1.5.1=pyha770c72_2 - - zarr=2.14.2=pyhd8ed1ab_0 - - zeromq=4.3.4=h9c3ff4c_1 + - yarl=1.9.4=py311h459d7ec_0 + - yte=1.5.4=pyha770c72_0 + - zarr=2.18.2=pyhd8ed1ab_0 + - zeromq=4.3.5=h75354e8_4 - zict=3.0.0=pyhd8ed1ab_0 - - zipp=3.15.0=pyhd8ed1ab_0 - - zlib=1.2.13=h166bdaf_4 - - zstandard=0.19.0=py310hdeb6495_1 - - zstd=1.5.2=h3eb15da_6 + - zipp=3.20.0=pyhd8ed1ab_0 + - zlib=1.3.1=h4ab18f5_1 + - zstandard=0.23.0=py311h5cd10c7_0 + - zstd=1.5.6=ha6fb4c9_0 - pip: - - ansi2html==1.8.0 - - dash==2.10.2 + - biotite==0.41.2 + - dash==2.17.1 - dash-core-components==2.0.0 - - dash-cytoscape==0.3.0 + - dash-cytoscape==1.0.2 - dash-html-components==2.0.0 - dash-table==5.0.0 - - flask==2.2.5 + - flask==3.0.3 - igv-notebook==0.5.2 - - importlib-metadata==4.13.0 - - ipinfo==4.4.2 - - itsdangerous==2.1.2 - - jupyter-dash==0.4.2 - - malariagen-data==7.10.0 - - numpydoc-decorator==2.1.0 - - orjson==3.9.0 - - protopunica==0.14.8 + - ipinfo==5.0.1 + - itsdangerous==2.2.0 + - malariagen-data==12.0.0 + - numpy==1.26.4 + - numpydoc-decorator==2.2.0 + - orjson==3.10.7 + - protopunica==0.14.8.post1 - retrying==1.3.4 - - typeguard==4.0.0 - - werkzeug==2.2.3 -prefix: /home/aliman/mambaforge/envs/selection-atlas + - termcolor==2.3.0 + - typeguard==4.3.0 + - werkzeug==3.0.3 + - yaspin==3.0.2 +prefix: /opt/conda/envs/selection-atlas diff --git a/requirements.yml b/requirements.yml index c069277..5128ac9 100644 --- a/requirements.yml +++ b/requirements.yml @@ -3,7 +3,7 @@ channels: - conda-forge - bioconda dependencies: - - python=3.10 + - python=3.11 - numpy - snakemake - papermill @@ -15,11 +15,11 @@ dependencies: - fsspec - gcsfs - jupyterlab - - jupyter-book==0.15.1 + - jupyter-book - BioPython - gsutil - scikit-allel - - bokeh>=3.1 + - bokeh - statsmodels - ipyleaflet - tqdm @@ -34,4 +34,4 @@ dependencies: - pip - pip: - jsonschema>=3.1.0 - - malariagen_data>=7.10.0 + - malariagen_data From c08776e14b73c1d673636460237d15554f427903 Mon Sep 17 00:00:00 2001 From: Alistair Miles Date: Wed, 21 Aug 2024 15:34:23 +0000 Subject: [PATCH 02/15] upgrade cohorts analysis --- workflow/config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/config.yaml b/workflow/config.yaml index 2bbfdb9..c0e3ca8 100644 --- a/workflow/config.yaml +++ b/workflow/config.yaml @@ -19,7 +19,7 @@ contigs: # Pin the cohorts analysis version in order to get reproducible # builds. -cohorts_analysis: "20230223" +cohorts_analysis: "20240717" # Select the contig to use for H12 window size calibration. h12_calibration_contig: "3L" From 3e04b5c2fe87d6d18696605f57f2b56964a44618 Mon Sep 17 00:00:00 2001 From: Alistair Miles Date: Wed, 21 Aug 2024 16:04:46 +0000 Subject: [PATCH 03/15] use google-cloud-sdk --- README.md | 12 ++++++++++++ environment.yml | 19 ++++--------------- requirements.yml | 2 +- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index b933b9a..edd607a 100644 --- a/README.md +++ b/README.md @@ -36,8 +36,20 @@ mamba env export -f environment.yml -n selection-atlas-requirements --override-c sed -i "s/selection-atlas-requirements/selection-atlas/" environment.yml ``` +## Authenticating with Google Cloud + +With the selection-atlas environment activated: + +``` +gcloud auth login +gcloud auth application-default login +``` + + ## Running the workflow +See the file `workflow/config.yaml` for workflow configuration. + If running on your local system with GCS caching enabled, you'll need to run the build without any parallelisation: ``` diff --git a/environment.yml b/environment.yml index 77b0a11..619194a 100644 --- a/environment.yml +++ b/environment.yml @@ -15,7 +15,6 @@ dependencies: - anyio=4.4.0=pyhd8ed1ab_0 - appdirs=1.4.4=pyh9f0ad1d_0 - apricot-select=0.6.1=pyhd8ed1ab_0 - - argcomplete=3.5.0=pyhd8ed1ab_0 - argon2-cffi=23.1.0=pyhd8ed1ab_0 - argon2-cffi-bindings=21.2.0=py311h459d7ec_4 - argparse-dataclass=2.0.0=pyhd8ed1ab_0 @@ -51,7 +50,6 @@ dependencies: - blinker=1.8.2=pyhd8ed1ab_0 - blosc=1.21.6=hef167b5_0 - bokeh=3.5.1=pyhd8ed1ab_0 - - boto=2.49.0=py_0 - branca=0.7.2=pyhd8ed1ab_0 - brotli=1.1.0=hd590300_1 - brotli-bin=1.1.0=hd590300_1 @@ -81,7 +79,6 @@ dependencies: - configargparse=1.7=pyhd8ed1ab_0 - connection_pool=0.0.3=pyhd3deb0d_0 - contourpy=1.2.1=py311h9547e67_0 - - crcmod=1.7=py311h459d7ec_1010 - cryptography=43.0.0=py311hc6616f6_0 - cycler=0.12.1=pyhd8ed1ab_0 - cytoolz=0.12.3=py311h459d7ec_0 @@ -122,7 +119,6 @@ dependencies: - frozenlist=1.4.1=py311h459d7ec_0 - fsspec=2024.6.1=pyhff2d567_0 - future=1.0.0=pyhd8ed1ab_0 - - gcs-oauth2-boto-plugin=3.2=pyhd8ed1ab_0 - gcsfs=2024.6.1=pyhd8ed1ab_0 - gdal=3.9.2=py311hb17e472_0 - geopandas=1.0.1=pyhd8ed1ab_0 @@ -137,20 +133,17 @@ dependencies: - gmp=6.3.0=hac33072_2 - gmpy2=2.1.5=py311hc4f1f91_1 - google-api-core=2.19.1=pyhd8ed1ab_0 - - google-apitools=0.5.32=pyhd8ed1ab_0 - - google-auth=2.17.0=pyh1a96a4e_0 - - google-auth-httplib2=0.2.0=pyhd8ed1ab_0 + - google-auth=2.33.0=pyhff2d567_0 - google-auth-oauthlib=1.2.1=pyhd8ed1ab_0 - google-cloud-core=2.4.1=pyhd8ed1ab_0 - - google-cloud-storage=2.11.0=pyh1a96a4e_0 + - google-cloud-sdk=489.0.0=py311h38be061_0 + - google-cloud-storage=2.18.2=pyhff2d567_0 - google-crc32c=1.1.2=py311h9b08b9c_5 - - google-reauth=0.1.1=pyhd3deb0d_0 - google-resumable-media=2.7.2=pyhd8ed1ab_1 - googleapis-common-protos=1.63.2=pyhd8ed1ab_0 - graphite2=1.3.13=h59595ed_1003 - greenlet=3.0.3=py311hb755f60_0 - grpcio=1.62.2=py311ha6695c7_0 - - gsutil=5.30=pyhd8ed1ab_0 - h11=0.14.0=pyhd8ed1ab_0 - h2=4.1.0=pyhd8ed1ab_0 - h5py=3.11.0=nompi_py311h439e445_102 @@ -159,7 +152,6 @@ dependencies: - hdf5=1.14.3=nompi_hdf9ad27_105 - hpack=4.0.0=pyh9f0ad1d_0 - httpcore=1.0.5=pyhd8ed1ab_0 - - httplib2=0.20.4=pyhd8ed1ab_0 - httpx=0.27.0=pyhd8ed1ab_0 - humanfriendly=10.0=pyhd8ed1ab_6 - hyperframe=6.0.1=pyhd8ed1ab_0 @@ -308,7 +300,6 @@ dependencies: - mdurl=0.1.2=pyhd8ed1ab_0 - minizip=4.0.7=h401b404_0 - mistune=3.0.2=pyhd8ed1ab_0 - - monotonic=1.5=pyhd8ed1ab_1 - mpc=1.3.1=hfe3b2da_0 - mpfr=4.2.1=h38ae2d0_2 - mpmath=1.3.0=pyhd8ed1ab_0 @@ -333,7 +324,6 @@ dependencies: - numba=0.60.0=py311h4bc866e_0 - numcodecs=0.13.0=py311h044e617_0 - numexpr=2.10.0=py311h8d05612_100 - - oauth2client=4.1.3=py_0 - oauthlib=3.2.2=pyhd8ed1ab_0 - openjpeg=2.5.2=h488ebb8_0 - openssl=3.3.1=h4bc722e_2 @@ -410,12 +400,11 @@ dependencies: - requests=2.32.3=pyhd8ed1ab_0 - requests-oauthlib=2.0.0=pyhd8ed1ab_0 - reretry=0.11.8=pyhd8ed1ab_0 - - retry_decorator=1.1.1=pyh9f0ad1d_0 - rfc3339-validator=0.1.4=pyhd8ed1ab_0 - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - rich=13.7.1=pyhd8ed1ab_0 - rpds-py=0.20.0=py311hb3a8bbb_0 - - rsa=4.7.2=pyh44b312d_0 + - rsa=4.9=pyhd8ed1ab_0 - s2n=1.5.1=h3400bea_0 - scikit-allel=1.3.8=py311h14de704_2 - scikit-learn=1.5.1=py311hd632256_0 diff --git a/requirements.yml b/requirements.yml index 5128ac9..7cd48ed 100644 --- a/requirements.yml +++ b/requirements.yml @@ -17,7 +17,7 @@ dependencies: - jupyterlab - jupyter-book - BioPython - - gsutil + - google-cloud-sdk - scikit-allel - bokeh - statsmodels From ca85204e1c13150449307a40fa37824acfc9f8ea Mon Sep 17 00:00:00 2001 From: Alistair Miles Date: Wed, 21 Aug 2024 16:41:13 +0000 Subject: [PATCH 04/15] document save/restore --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README.md b/README.md index edd607a..7e7331a 100644 --- a/README.md +++ b/README.md @@ -61,3 +61,23 @@ If running on Google Cloud and GCS caching is disabled, you can try running with ``` snakemake -c4 ``` + + +## Saving/restoring a successful workflow run to GCS + +After a successful workflow run, copy the workflow outputs to GCS. This will allow you or other developers to continue working to improve the site based on these outputs, without having to do a complete workflow run themselves. + +With the selection-atlas environment activated, copy workflow outputs to GCS: + +``` +gsutil -m rsync -r build/ gs://vo_selection_atlas_dev_us_central1/build/2024-08-21/ +``` + +In the above command, "2024-08-21" is a build identifier. If you make any significant changes and rerun the workflow, use a new build identifier. + +To restore outputs from a previous workflow run to your local filesystem: + +``` +rm -r build +gsutil -m rsync -r gs://vo_selection_atlas_dev_us_central1/build/2024-08-21/ build/ +``` From 4307bfea9b2577bfb4ee8fdb7aaa477895e2d138 Mon Sep 17 00:00:00 2001 From: Alistair Miles Date: Wed, 21 Aug 2024 16:42:17 +0000 Subject: [PATCH 05/15] tweak --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7e7331a..0a55bfa 100644 --- a/README.md +++ b/README.md @@ -63,7 +63,7 @@ snakemake -c4 ``` -## Saving/restoring a successful workflow run to GCS +## Saving/restoring a successful workflow run After a successful workflow run, copy the workflow outputs to GCS. This will allow you or other developers to continue working to improve the site based on these outputs, without having to do a complete workflow run themselves. From b0618c9295a10c15dfd638fa0b563373bb4af5a5 Mon Sep 17 00:00:00 2001 From: Alistair Miles Date: Wed, 21 Aug 2024 16:50:58 +0000 Subject: [PATCH 06/15] ignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index de473a0..171e6c7 100644 --- a/.gitignore +++ b/.gitignore @@ -12,6 +12,7 @@ docs/genome/*.ipynb docs/cohort/*.ipynb docs/_toc.yml log +selection-atlas.html # Byte-compiled / optimized / DLL files __pycache__/ From c5ae3cecb845b575446c3f2aae9748a4516bb548 Mon Sep 17 00:00:00 2001 From: Alistair Miles Date: Wed, 21 Aug 2024 18:11:31 +0100 Subject: [PATCH 07/15] thrash --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0a55bfa..ab0302d 100644 --- a/README.md +++ b/README.md @@ -78,6 +78,7 @@ In the above command, "2024-08-21" is a build identifier. If you make any signif To restore outputs from a previous workflow run to your local filesystem: ``` -rm -r build +rm -r build/* gsutil -m rsync -r gs://vo_selection_atlas_dev_us_central1/build/2024-08-21/ build/ +find build -type f -exec touch {} + ``` From 5e9da50e4acfc887ef16166613ec2644930b7592 Mon Sep 17 00:00:00 2001 From: sanjaynagi Date: Thu, 2 Jan 2025 03:51:07 -0600 Subject: [PATCH 08/15] split site build into separate workflow --- workflow/{Snakefile => Snakefile-analyses} | 5 +-- workflow/Snakefile-site-build | 40 ++++++++++++++++++++++ workflow/rules/common.smk | 20 ----------- workflow/rules/site.smk | 10 +++--- 4 files changed, 46 insertions(+), 29 deletions(-) rename workflow/{Snakefile => Snakefile-analyses} (69%) create mode 100644 workflow/Snakefile-site-build diff --git a/workflow/Snakefile b/workflow/Snakefile-analyses similarity index 69% rename from workflow/Snakefile rename to workflow/Snakefile-analyses index 2bca9fc..be26cf7 100644 --- a/workflow/Snakefile +++ b/workflow/Snakefile-analyses @@ -10,12 +10,9 @@ chromosomes = config['contigs'] # include rule files include: "rules/common.smk" include: "rules/cohorts.smk" -include: "rules/site.smk" include: "rules/gwss.smk" include: "rules/utility.smk" rule all: input: - analyses = get_selection_atlas_outputs, - site = get_selection_atlas_site_pages, - build = "docs/_build/" + analyses = get_selection_atlas_outputs \ No newline at end of file diff --git a/workflow/Snakefile-site-build b/workflow/Snakefile-site-build new file mode 100644 index 0000000..15036dd --- /dev/null +++ b/workflow/Snakefile-site-build @@ -0,0 +1,40 @@ +import pandas as pd +import geopandas as gpd +import yaml + +# open configuration file +configfile: "workflow/config.yaml" +configpath = workflow.configfiles[0] +chromosomes = config['contigs'] + +# we dont use checkpoints in the site workflow, so need separate functions to the other workflow +def get_selection_atlas_site_pages(wildcards): + df = gpd.read_file("build/final_cohorts.geojson") + + wanted_outputs = [] + wanted_outputs.extend(["docs/home-page.ipynb"]) + wanted_outputs.extend( + expand("docs/country/{country}.ipynb", country=df['country_alpha2']) + ) + + wanted_outputs.extend( + expand("docs/genome/ag-{chrom}.ipynb", chrom=chromosomes) + ) + + wanted_outputs.extend( + expand("docs/cohort/{cohort}.ipynb", cohort=df['cohort_id'].unique()) + ) + return wanted_outputs + +def get_h12_signal_detection_csvs(wildcards): + df = pd.read_csv("build/final_cohorts.csv") + paths = expand("build/h12-signal-detection/{cohort}_{contig}.csv", cohort=df['cohort_id'], contig=chromosomes) + return paths + +# include rule files +include: "rules/site.smk" + +rule all: + input: + site = get_selection_atlas_site_pages, + build = "docs/_build/" diff --git a/workflow/rules/common.smk b/workflow/rules/common.smk index 124d58d..d8ed4a3 100644 --- a/workflow/rules/common.smk +++ b/workflow/rules/common.smk @@ -55,26 +55,6 @@ def get_selection_atlas_outputs(wildcards): return wanted_outputs -def get_selection_atlas_site_pages(wildcards): - - df = gpd.read_file(checkpoints.geolocate_cohorts.get().output.cohorts_geojson) - - wanted_outputs = [] - wanted_outputs.extend(["docs/home-page.ipynb"]) - wanted_outputs.extend( - expand("docs/country/{country}.ipynb", country=df['country_alpha2']) - ) - - wanted_outputs.extend( - expand("docs/genome/ag-{chrom}.ipynb", chrom=chromosomes) - ) - - wanted_outputs.extend( - expand("docs/cohort/{cohort}.ipynb", cohort=df['cohort_id'].unique()) - ) - return wanted_outputs - - def get_cohort_page_notebooks(wildcards): df = gpd.read_file(checkpoints.geolocate_cohorts.get().output.cohorts_geojson) diff --git a/workflow/rules/site.smk b/workflow/rules/site.smk index 29379ad..45dfc91 100644 --- a/workflow/rules/site.smk +++ b/workflow/rules/site.smk @@ -19,7 +19,7 @@ rule build_site: rule generate_toc: input: nb = f"{workflow.basedir}/notebooks/generate-toc.ipynb", - cohorts_geojson = rules.geolocate_cohorts.output.cohorts_geojson, + cohorts_geojson = "build/final_cohorts.geojson", config = configpath, output: nb = "build/notebooks/generate-toc.ipynb", @@ -37,7 +37,7 @@ rule home_page: input: nb = f"{workflow.basedir}/notebooks/home-page.ipynb", config = configpath, - cohorts_geojson = rules.geolocate_cohorts.output.cohorts_geojson, + cohorts_geojson = "build/final_cohorts.geojson", output: nb = "docs/home-page.ipynb" log: @@ -53,7 +53,7 @@ rule country_pages: input: nb = f"{workflow.basedir}/notebooks/country-page.ipynb", config = configpath, - cohorts_geojson = rules.geolocate_cohorts.output.cohorts_geojson, + cohorts_geojson = "build/final_cohorts.geojson", output: nb = "build/notebooks/country/{country}.ipynb" log: @@ -69,7 +69,7 @@ rule chromosome_pages: input: nb = f"{workflow.basedir}/notebooks/chromosome-page.ipynb", config = configpath, - cohorts_geojson = rules.geolocate_cohorts.output.cohorts_geojson, + cohorts_geojson = "build/final_cohorts.geojson", signals = get_h12_signal_detection_csvs, output: nb = "build/notebooks/genome/ag-{chrom}.ipynb" @@ -85,7 +85,7 @@ rule chromosome_pages: rule cohort_pages: input: nb = f"{workflow.basedir}/notebooks/cohort-page.ipynb", - cohorts_geojson = rules.geolocate_cohorts.output.cohorts_geojson, + cohorts_geojson = "build/final_cohorts.geojson", output_h12="build/notebooks/h12-gwss-{cohort}.ipynb", output_g123="build/notebooks/g123-gwss-{cohort}.ipynb", output_ihs="build/notebooks/ihs-gwss-{cohort}.ipynb", From 489ff56ae52bce3e073b6fccf18186d9360a5260 Mon Sep 17 00:00:00 2001 From: sanjaynagi Date: Thu, 2 Jan 2025 04:01:06 -0600 Subject: [PATCH 09/15] ci update and rn analysis workflow --- workflow/{Snakefile-analyses => Snakefile-analysis} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename workflow/{Snakefile-analyses => Snakefile-analysis} (100%) diff --git a/workflow/Snakefile-analyses b/workflow/Snakefile-analysis similarity index 100% rename from workflow/Snakefile-analyses rename to workflow/Snakefile-analysis From 978ca77635fb2e7741a7b93ef9411ffca8ee14f1 Mon Sep 17 00:00:00 2001 From: sanjaynagi Date: Thu, 2 Jan 2025 04:01:23 -0600 Subject: [PATCH 10/15] ci update and rn analysis workflow --- .github/workflows/test-build.yml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml index 086a516..0592fd6 100644 --- a/.github/workflows/test-build.yml +++ b/.github/workflows/test-build.yml @@ -31,11 +31,16 @@ jobs: environment-name: selection-atlas cache-downloads: true - - name: Run snakemake workflow + - name: Run analysis snakemake workflow shell: bash -l {0} run: | - snakemake -c1 --configfile ci/config.yaml + snakemake -c1 --configfile ci/config.yaml --snakefile workflow/Snakefile-analysis + - name: Run site build snakemake workflow + shell: bash -l {0} + run: | + snakemake -c1 --configfile ci/config.yaml --snakefile workflow/Snakefile-site-build + - name: Save GCS cache uses: actions/cache/save@v3 if: always() From 40ae5bb210fbb382f0755e6f92dfa940f04aa41f Mon Sep 17 00:00:00 2001 From: sanjaynagi Date: Thu, 2 Jan 2025 04:05:08 -0600 Subject: [PATCH 11/15] migrate micromamba gh actions --- .github/workflows/test-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test-build.yml b/.github/workflows/test-build.yml index 0592fd6..acaaf02 100644 --- a/.github/workflows/test-build.yml +++ b/.github/workflows/test-build.yml @@ -25,7 +25,7 @@ jobs: key: results_cache_20230512 - name: Install conda environment - uses: mamba-org/provision-with-micromamba@main + uses: mamba-org/setup-micromamba@v2 with: environment-file: environment.yml environment-name: selection-atlas From 23509b7d28956a812333f793c66d1f6f38e69ea4 Mon Sep 17 00:00:00 2001 From: sanjaynagi Date: Thu, 2 Jan 2025 08:12:50 -0600 Subject: [PATCH 12/15] update h12_gwss returning 3 values --- workflow/notebooks/h12-signal-detection.ipynb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/workflow/notebooks/h12-signal-detection.ipynb b/workflow/notebooks/h12-signal-detection.ipynb index b67f755..23cdefd 100644 --- a/workflow/notebooks/h12-signal-detection.ipynb +++ b/workflow/notebooks/h12-signal-detection.ipynb @@ -239,7 +239,7 @@ "outputs": [], "source": [ "# load gwss data\n", - "ppos, h12 = ag3.h12_gwss(\n", + "ppos, h12, _ = ag3.h12_gwss(\n", " contig=contig, \n", " window_size=window_size, \n", " analysis=phasing_analysis, \n", From ec8e129329a36aef0a094ca5db9da76f177cd50a Mon Sep 17 00:00:00 2001 From: sanjaynagi Date: Thu, 16 Jan 2025 04:41:52 -0600 Subject: [PATCH 13/15] update readme, add ghpages action --- .github/workflows/gh-pages.yml | 65 ++++++++++++++++++++++++++++++++++ README.md | 17 +++++++-- workflow/Snakefile-site-build | 1 + 3 files changed, 80 insertions(+), 3 deletions(-) create mode 100644 .github/workflows/gh-pages.yml diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml new file mode 100644 index 0000000..6b30ce6 --- /dev/null +++ b/.github/workflows/gh-pages.yml @@ -0,0 +1,65 @@ +name: deploy-site + +on: + push: + branches: + - master + +jobs: + deploy-docs: + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@v3 + + # Install dependencies + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.10" + + - name: Install conda environment + uses: mamba-org/setup-micromamba@v2 + with: + environment-file: environment.yml + environment-name: selection-atlas + cache-downloads: true + + # set up google cloud + - id: auth + name: Set up Google Cloud authentication + uses: google-github-actions/auth@v2 + with: + credentials_json: ${{ secrets.GOOGLE_CREDENTIALS }} + + - name: Set up Google Cloud SDK + uses: google-github-actions/setup-gcloud@v2 + with: + version: >= 363.0.0 + + - name: Check gcloud CLI + run: gcloud info + + - name: Download build from GCS + run: | + mkdir build + gsutil -m rsync -r gs://vo_selection_atlas_dev_us_central1/build/2024-08-21/ build/ + find build -type f -exec touch {} + + find build/notebooks -type f -exec touch {} + + find build/notebooks/cohort -type f -exec touch {} + + + - name: Build sel-atlas site + uses: snakemake/snakemake-github-action@v1 + with: + directory: '.' + snakefile: 'workflow/Snakefile-site-build' + args: '--cores 1 --conda-cleanup-pkgs cache' + stagein: '' # additional preliminary commands to run (can be multiline) + show-disk-usage-on-error: true + + # Push the book's HTML to github-pages + - name: GitHub Pages action + uses: peaceiris/actions-gh-pages@v3 + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: docs/_build/html diff --git a/README.md b/README.md index ab0302d..3e01b2c 100644 --- a/README.md +++ b/README.md @@ -46,20 +46,20 @@ gcloud auth application-default login ``` -## Running the workflow +## Running the analysis workflow See the file `workflow/config.yaml` for workflow configuration. If running on your local system with GCS caching enabled, you'll need to run the build without any parallelisation: ``` -snakemake -c1 +snakemake -c1 --snakefile workflow/Snakefile-analysis ``` If running on Google Cloud and GCS caching is disabled, you can try running with parallelisation, e.g.: ``` -snakemake -c4 +snakemake -c4 --snakefile workflow/Snakefile-analysis ``` @@ -81,4 +81,15 @@ To restore outputs from a previous workflow run to your local filesystem: rm -r build/* gsutil -m rsync -r gs://vo_selection_atlas_dev_us_central1/build/2024-08-21/ build/ find build -type f -exec touch {} + +find build/notebooks -type f -exec touch {} + +find build/notebooks/cohort -type f -exec touch {} + + +``` + +## Running the site-build workflow + +See the file `workflow/config.yaml` for workflow configuration. + ``` +snakemake -c1 --snakefile workflow/Snakefile-site-build +``` \ No newline at end of file diff --git a/workflow/Snakefile-site-build b/workflow/Snakefile-site-build index 15036dd..5010cc3 100644 --- a/workflow/Snakefile-site-build +++ b/workflow/Snakefile-site-build @@ -33,6 +33,7 @@ def get_h12_signal_detection_csvs(wildcards): # include rule files include: "rules/site.smk" +include: "rules/utility.smk" rule all: input: From 245fa8e1ea8746153c78916ca56ad1c0e92cafa9 Mon Sep 17 00:00:00 2001 From: sanjaynagi Date: Thu, 16 Jan 2025 09:37:05 -0600 Subject: [PATCH 14/15] run gh pages action on main not master --- .github/workflows/gh-pages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 6b30ce6..65540e7 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -3,7 +3,7 @@ name: deploy-site on: push: branches: - - master + - main jobs: deploy-docs: From a0b1b37a50fd1a4528e487be8c434cb5ad0215cd Mon Sep 17 00:00:00 2001 From: sanjaynagi Date: Thu, 16 Jan 2025 09:38:04 -0600 Subject: [PATCH 15/15] run gh pages action on PR to test for now --- .github/workflows/gh-pages.yml | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 65540e7..801ea4c 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -1,9 +1,6 @@ name: deploy-site -on: - push: - branches: - - main +on: pull_request jobs: deploy-docs: