From 1cdbc3410b7a226abd29ef42a8efab62178e97e4 Mon Sep 17 00:00:00 2001 From: Colby Ford Date: Tue, 21 Jan 2025 15:45:40 -0500 Subject: [PATCH 01/10] Update README.md --- README.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/README.md b/README.md index b600638..73f56cb 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,7 @@ This is the official codebase of the paper - [How to create comparative plots of evaluation results](#how-to-create-comparative-plots-of-evaluation-results) - [How to predict new protein-ligand complex structures and their affinities using FlowDock](#how-to-predict-new-protein-ligand-complex-structures-using-flowdock) - [For developers](#for-developers) +- [Docker](#docker) - [Acknowledgements](#acknowledgements) - [License](#license) - [Citing this work](#citing-this-work) @@ -384,6 +385,25 @@ rm env.yaml # clean up temporary environment file +## Docker + +
+ +Build the Docker image + +```bash +docker build -t flowdock . +``` + +Run the Docker container + +```bash +docker run --gpus all --rm --name flowdock -it flowdock /bin/bash +``` + +
+ + ## Acknowledgements `FlowDock` builds upon the source code and data from the following projects: From 19beebfcb5c45b9dea893620caa530a11376969c Mon Sep 17 00:00:00 2001 From: Colby Ford Date: Tue, 21 Jan 2025 15:45:43 -0500 Subject: [PATCH 02/10] Create Dockerfile --- Dockerfile | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 Dockerfile diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..c29028e --- /dev/null +++ b/Dockerfile @@ -0,0 +1,40 @@ +FROM pytorch/pytorch:2.2.1-cuda11.8-cudnn8-runtime + +LABEL authors="Colby T. Ford " + +## Install system requirements +RUN apt update && \ + apt-get install -y --reinstall \ + ca-certificates && \ + apt install -y \ + git \ + wget \ + libxml2 \ + libgl-dev \ + libgl1 \ + gcc \ + g++ + +## Set working directory +RUN mkdir -p /software/flowdock +WORKDIR /software/flowdock + +## Clone project +RUN git clone https://github.com/BioinfoMachineLearning/FlowDock /software/flowdock + +## Create conda environment +RUN conda env create -f environments/flowdock_environment.yaml + +## Automatically activate conda environment +RUN echo "source activate FlowDock" >> /etc/profile.d/conda.sh && \ + echo "source /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \ + echo "conda activate FlowDock" >> ~/.bashrc + + +# conda activate FlowDock # NOTE: one still needs to use `conda` to (de)activate environments +# pip3 install -e . # install local project as package + + +## Default shell and command +SHELL ["/bin/bash", "-l", "-c"] +CMD ["/bin/bash"] \ No newline at end of file From 45144116dcfe42e647d3a225733225b2983e2100 Mon Sep 17 00:00:00 2001 From: Colby Ford Date: Wed, 22 Jan 2025 13:45:13 -0500 Subject: [PATCH 03/10] Update Dockerfile --- Dockerfile | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/Dockerfile b/Dockerfile index c29028e..09b2fc5 100644 --- a/Dockerfile +++ b/Dockerfile @@ -23,12 +23,14 @@ WORKDIR /software/flowdock RUN git clone https://github.com/BioinfoMachineLearning/FlowDock /software/flowdock ## Create conda environment -RUN conda env create -f environments/flowdock_environment.yaml +# RUN conda env create -f environments/flowdock_environment.yaml +COPY environments/flowdock_environment_docker.yaml /software/flowdock/environments/flowdock_environment_docker.yaml +RUN conda env create -f environments/flowdock_environment_docker.yaml ## Automatically activate conda environment -RUN echo "source activate FlowDock" >> /etc/profile.d/conda.sh && \ +RUN echo "source activate flowdock" >> /etc/profile.d/conda.sh && \ echo "source /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \ - echo "conda activate FlowDock" >> ~/.bashrc + echo "conda activate flowdock" >> ~/.bashrc # conda activate FlowDock # NOTE: one still needs to use `conda` to (de)activate environments From 4bf242af6d95644233dfb8029975211643c1c201 Mon Sep 17 00:00:00 2001 From: Colby Ford Date: Wed, 22 Jan 2025 13:48:28 -0500 Subject: [PATCH 04/10] Create flowdock_environment_docker.yaml --- environments/flowdock_environment_docker.yaml | 448 ++++++++++++++++++ 1 file changed, 448 insertions(+) create mode 100644 environments/flowdock_environment_docker.yaml diff --git a/environments/flowdock_environment_docker.yaml b/environments/flowdock_environment_docker.yaml new file mode 100644 index 0000000..6114e4f --- /dev/null +++ b/environments/flowdock_environment_docker.yaml @@ -0,0 +1,448 @@ +name: flowdock +channels: + - pyg + - iopath + - pytorch + - senyan.dev + - nvidia + - defaults + - conda-forge +dependencies: + # - _libgcc_mutex=0.1=conda_forge + # - _openmp_mutex=4.5=2_kmp_llvm + # - aiohttp=3.9.3=py39hd1e30aa_1 + # - aiosignal=1.3.1=pyhd8ed1ab_0 + # - antlr-python-runtime=4.9.3=pyhd8ed1ab_1 + # - anyio=4.2.0=py39h06a4308_0 + # - argon2-cffi=23.1.0=pyhd8ed1ab_0 + # - argon2-cffi-bindings=21.2.0=py39hd1e30aa_4 + # - arpack=3.7.0=hdefa2d7_2 + # - arrow=1.2.3=py39h06a4308_1 + # - astunparse=1.6.3=pyhd8ed1ab_0 + # - async-lru=2.0.4=pyhd8ed1ab_0 + # - async-timeout=4.0.3=pyhd8ed1ab_0 + # - attrs=22.1.0=py39h06a4308_0 + # - babel=2.14.0=pyhd8ed1ab_0 + # - backcall=0.2.0=pyhd3eb1b0_0 + # - backoff=2.2.1=pyhd8ed1ab_0 + # - beautifulsoup4=4.12.2=py39h06a4308_0 + # - blas=2.116=mkl + # - blas-devel=3.9.0=16_linux64_mkl + # - bleach=6.1.0=pyhd8ed1ab_0 + # - blessed=1.19.1=pyhe4f9e05_2 + # - blosc=1.21.5=h0f2a231_0 + # - boost=1.84.0=h8003fee_2 + # - boost-cpp=1.84.0=h44aadfe_2 + # - bottleneck=1.3.7=py39ha9d4c09_0 + # - brotli=1.0.9=h166bdaf_9 + # - brotli-bin=1.0.9=h166bdaf_9 + # - brotli-python=1.0.9=py39h5a03fae_9 + # - bson=0.5.9=py_0 + # - bzip2=1.0.8=h7f98852_4 + # - c-ares=1.25.0=hd590300_0 + # - c-blosc2=2.12.0=hb4ffafa_0 + # - ca-certificates=2024.2.2=hbcca054_0 + # - cachecontrol=0.13.1=pyhd8ed1ab_0 + # - cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0 + # - cached-property=1.5.2=hd8ed1ab_1 + # - cached_property=1.5.2=pyha770c72_1 + # - cachetools=5.3.2=pyhd8ed1ab_0 + # - cairo=1.18.0=h3faef2a_0 + # - certifi=2024.2.2=pyhd8ed1ab_0 + # - cffi=1.15.1=py39h5eee18b_3 + # - cfgv=3.3.1=py39h06a4308_0 + # - charset-normalizer=3.2.0=pyhd8ed1ab_0 + # - cleo=2.0.1=py39h06a4308_0 + # - click=8.0.4=py39h06a4308_0 + # - colorama=0.4.6=pyhd8ed1ab_0 + # - comm=0.2.1=pyhd8ed1ab_0 + # - contourpy=1.2.0=py39hdb19cb5_0 + # - crashtest=0.4.1=py39h06a4308_0 + # - croniter=1.3.7=py39h06a4308_0 + # - cryptography=41.0.2=py39h22a60cf_0 + # - cuda-cudart=11.8.89=0 + # - cuda-cupti=11.8.87=0 + # - cuda-libraries=11.8.0=0 + # - cuda-nvrtc=11.8.89=0 + # - cuda-nvtx=11.8.86=0 + # - cuda-runtime=11.8.0=0 + # - cudatoolkit=11.8.0=h4ba93d1_12 + # - cudatoolkit-dev=11.8.0=h1fa729e_6 + # - curl=8.1.2=h409715c_0 + # - cycler=0.11.0=pyhd3eb1b0_0 + # - cython=3.0.7=py39h3d6467e_0 + # - dateutils=0.6.12=py_0 + # - dbus=1.13.18=hb2f20db_0 + # - debugpy=1.8.0=py39h3d6467e_1 + # - decorator=5.1.1=pyhd8ed1ab_0 + # - deepdiff=6.3.1=pyhd8ed1ab_0 + # - defusedxml=0.7.1=pyhd8ed1ab_0 + # - distlib=0.3.7=pyhd8ed1ab_0 + # - dulwich=0.21.3=py39h5eee18b_0 + # - entrypoints=0.4=pyhd8ed1ab_0 + # - exceptiongroup=1.0.4=py39h06a4308_0 + # - expat=2.6.2=h59595ed_0 + # - ffmpeg=4.3=hf484d3e_0 + # - fftw=3.3.10=nompi_hc118613_108 + # - filelock=3.12.2=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=h77eed37_1 + # - fontconfig=2.14.2=h14ed4e7_0 + # - fonts-conda-ecosystem=1=0 + # - fonts-conda-forge=1=0 + # - fonttools=4.25.0=pyhd3eb1b0_0 + # - fqdn=1.5.1=pyhd8ed1ab_0 + # - freetype=2.12.1=hca18f0e_1 + # - frozenlist=1.4.1=py39hd1e30aa_0 + # - fvcore=0.1.5.post20221221=pyhd8ed1ab_0 + # - glib=2.80.0=hf2295e7_1 + # - glib-tools=2.80.0=hde27a5a_1 + # - gmp=6.2.1=h58526e2_0 + # - gmpy2=2.1.2=py39h376b7d2_1 + # - gnutls=3.6.13=h85f3911_1 + # - greenlet=3.0.1=py39h6a678d5_0 + # - h11=0.12.0=pyhd3eb1b0_0 + # - hdf4=4.2.15=h9772cbc_5 + # - hdf5=1.14.1=nompi_h4f84152_100 + - hydra-core=1.3.2=pyhd8ed1ab_0 + # - icu=73.2=h59595ed_0 + # - identify=2.5.5=py39h06a4308_0 + # - idna=3.4=pyhd8ed1ab_0 + # - importlib-metadata=6.0.0=py39h06a4308_0 + # - importlib-resources=3.3.1=pyhd8ed1ab_0 + # - importlib_metadata=6.0.0=hd3eb1b0_0 + # - importlib_resources=5.2.0=pyhd3eb1b0_1 + # - iniconfig=1.1.1=pyhd3eb1b0_0 + # - inquirer=3.1.3=pyhd8ed1ab_0 + # - iopath=0.1.9=py39 + # - ipykernel=6.28.0=py39h06a4308_0 + # - ipython=8.15.0=py39h06a4308_0 + # - ipywidgets=8.1.1=pyhd8ed1ab_0 + # - isoduration=20.11.0=pyhd8ed1ab_0 + # - itsdangerous=2.0.1=pyhd3eb1b0_0 + # - jaraco.classes=3.2.1=pyhd3eb1b0_0 + # - jedi=0.18.1=py39h06a4308_1 + # - jeepney=0.7.1=pyhd3eb1b0_0 + # - jinja2=3.1.2=pyhd8ed1ab_1 + # - joblib=1.3.2=pyhd8ed1ab_0 + # - jpeg=9e=h166bdaf_2 + # - json5=0.9.14=pyhd8ed1ab_0 + # - jsonpointer=2.4=py39hf3d152e_3 + # - jsonschema=4.17.3=py39h06a4308_0 + # - jsonschema-with-format-nongpl=4.17.3=pyhd8ed1ab_0 + # - jupyter-lsp=2.2.1=pyhd8ed1ab_0 + # - jupyter_client=8.6.0=pyhd8ed1ab_0 + # - jupyter_core=5.7.1=py39hf3d152e_0 + # - jupyter_events=0.6.3=pyhd8ed1ab_1 + # - jupyter_server=2.10.0=pyhd8ed1ab_0 + # - jupyter_server_terminals=0.5.1=pyhd8ed1ab_0 + # - jupyterlab=4.0.10=pyhd8ed1ab_0 + # - jupyterlab_pygments=0.3.0=pyhd8ed1ab_0 + # - jupyterlab_server=2.24.0=pyhd8ed1ab_0 + # - jupyterlab_widgets=3.0.9=pyhd8ed1ab_0 + # - keyring=24.2.0=py39hf3d152e_0 + # - keyutils=1.6.1=h166bdaf_0 + # - kiwisolver=1.4.4=py39h6a678d5_0 + # - krb5=1.20.1=h81ceb04_0 + # - lame=3.100=h166bdaf_1003 + # - lcms2=2.12=hddcbb42_0 + # - ld_impl_linux-64=2.40=h41732ed_0 + # - lerc=4.0.0=h27087fc_0 + # - libaec=1.1.2=h59595ed_1 + # - libblas=3.9.0=16_linux64_mkl + # - libboost=1.84.0=h8013b2b_2 + # - libboost-devel=1.84.0=h00ab1b0_2 + # - libboost-headers=1.84.0=ha770c72_2 + # - libboost-python=1.84.0=py39hda80f44_2 + # - libboost-python-devel=1.84.0=py39h8003fee_2 + # - libbrotlicommon=1.0.9=h166bdaf_9 + # - libbrotlidec=1.0.9=h166bdaf_9 + # - libbrotlienc=1.0.9=h166bdaf_9 + # - libcblas=3.9.0=16_linux64_mkl + # - libcublas=11.11.3.6=0 + # - libcufft=10.9.0.58=0 + # - libcufile=1.7.1.12=0 + # - libcurand=10.3.3.129=0 + # - libcurl=8.1.2=h409715c_0 + # - libcusolver=11.4.1.48=0 + # - libcusparse=11.7.5.86=0 + # - libdeflate=1.17=h0b41bf4_0 + # - libedit=3.1.20191231=he28a2e2_2 + # - libev=4.33=hd590300_2 + # - libexpat=2.6.2=h59595ed_0 + # - libffi=3.4.2=h7f98852_5 + # - libgcc-ng=13.1.0=he5830b7_0 + # - libgfortran-ng=13.1.0=h69a702a_0 + # - libgfortran5=13.1.0=h15d22d2_0 + # - libglib=2.80.0=hf2295e7_1 + # - libgomp=13.1.0=he5830b7_0 + # - libhwloc=2.4.1=h6746aa3_0 + # - libiconv=1.17=h166bdaf_0 + # - libjpeg-turbo=2.0.0=h9bf148f_0 + # - liblapack=3.9.0=16_linux64_mkl + # - liblapacke=3.9.0=16_linux64_mkl + # - libnghttp2=1.58.0=h47da74e_1 + # - libnpp=11.8.0.86=0 + # - libnsl=2.0.0=h7f98852_0 + # - libnvjpeg=11.9.0.86=0 + # - libpng=1.6.39=h753d276_0 + # - libsodium=1.0.18=h36c2ea0_1 + # - libsqlite=3.42.0=h2797004_0 + # - libssh2=1.11.0=h0841786_0 + # - libstdcxx-ng=13.1.0=hfd8a6a1_0 + # - libtiff=4.2.0=hf544144_3 + # - libuuid=2.38.1=h0b41bf4_0 + # - libwebp-base=1.3.1=hd590300_0 + # - libxcb=1.15=h0b41bf4_0 + # - libxcrypt=4.4.36=hd590300_1 + # - libxml2=2.12.6=h232c23b_1 + # - libxslt=1.1.39=h76b75d6_0 + # - libzip=1.10.1=h2629f0a_3 + # - libzlib=1.2.13=hd590300_5 + # - llvm-openmp=15.0.7=h0cdce71_0 + # - lxml=4.8.0=py39hb9d737c_3 + # - lz4-c=1.9.3=h9c3ff4c_1 + # - lzo=2.10=h516909a_1000 + # - markdown-it-py=2.2.0=py39h06a4308_1 + # - markupsafe=2.1.1=py39h7f8727e_0 + # - matplotlib-base=3.8.0=py39he9076e7_1 + # - matplotlib-inline=0.1.6=pyhd8ed1ab_0 + # - mda-xdrlib=0.2.0=pyhd8ed1ab_0 + # - mdtraj=1.9.9=py39h67e0f1a_1 + # - mdurl=0.1.0=py39h06a4308_0 + - mendeleev=0.15.0=pyhc1e730c_0 + # - mistune=3.0.2=pyhd8ed1ab_0 + # - mkl=2022.1.0=h84fe81f_915 + # - mkl-devel=2022.1.0=ha770c72_916 + # - mkl-include=2022.1.0=h84fe81f_915 + # - more-itertools=8.12.0=pyhd3eb1b0_0 + # - mpc=1.3.1=hfe3b2da_0 + # - mpfr=4.2.0=hb012696_0 + # - mpmath=1.3.0=py39h06a4308_0 + - msgpack-python=1.0.3=py39hd09550d_0 + # - multidict=6.0.5=py39hd1e30aa_0 + # - munkres=1.1.4=pyh9f0ad1d_0 + # - nbclient=0.8.0=pyhd8ed1ab_0 + # - nbconvert-core=7.14.1=pyhd8ed1ab_0 + # - nbformat=5.9.2=pyhd8ed1ab_0 + # - ncurses=6.4=hcb278e6_0 + # - nest-asyncio=1.5.8=pyhd8ed1ab_0 + # - nettle=3.6=he412f7d_0 + - networkx=3.1=py39h06a4308_0 + # - nodeenv=1.7.0=py39h06a4308_0 + # - notebook=7.0.6=pyhd8ed1ab_0 + # - notebook-shim=0.2.3=pyhd8ed1ab_0 + # - numexpr=2.8.0=mkl_py39h25e7801_2 + # - ocl-icd=2.3.1=h7f98852_0 + # - ocl-icd-system=1.0.0=1 + # - olefile=0.47=pyhd8ed1ab_0 + - omegaconf=2.3.0=pyhd8ed1ab_0 + # - openff-amber-ff-ports=0.0.4=pyhca7485f_0 + # - openff-forcefields=2023.11.0=pyhca7485f_0 + # - openff-interchange-base=0.3.18=pyhd8ed1ab_0 + # - openff-models=0.1.1=pyhca7485f_0 + # - openff-toolkit-base=0.14.5=pyhd8ed1ab_1 + # - openff-units=0.2.1=pyh1a96a4e_0 + # - openff-utilities=0.1.12=pyhd8ed1ab_0 + # - openh264=2.1.1=h780b84a_0 + # - openjpeg=2.4.0=hb52868f_1 + # - openmm=8.1.0=py39he81762f_1 + # - openssl=3.2.1=hd590300_1 + # - ordered-set=4.1.0=py39h06a4308_0 + # - orjson=3.8.8=py39h52d8a92_0 + # - overrides=7.4.0=pyhd8ed1ab_0 + # - packaging=23.1=py39h06a4308_0 + # - packmol=20.010=h86c2bf4_0 + - pandas=2.1.4=py39h1128e8f_0 + # - pandocfilters=1.5.0=pyhd8ed1ab_0 + # - panedr=0.8.0=pyhd8ed1ab_0 + # - parmed=3.4.4=py39h227be39_0 + # - parso=0.8.3=pyhd8ed1ab_0 + # - pcre=8.45=h295c915_0 + # - pcre2=10.43=hcad00b1_0 + # - pdbfixer=1.9=pyh1a96a4e_0 + # - perl=5.32.1=7_hd590300_perl5 + # - pexpect=4.8.0=pyhd3eb1b0_3 + # - pickleshare=0.7.5=py_1003 + # - pillow=8.2.0=py39hf95b381_1 + # - pint=0.21=pyhd8ed1ab_0 + # - pip=23.2.1=pyhd8ed1ab_0 + # - pixman=0.43.2=h59595ed_0 + # - pkginfo=1.9.6=py39h06a4308_0 + # - platformdirs=3.10.0=py39h06a4308_0 + # - pluggy=1.0.0=py39h06a4308_1 + # - poetry=1.6.1=linux_pyha804496_0 + # - poetry-core=1.7.0=pyhd8ed1ab_0 + # - poetry-plugin-export=1.5.0=pyhd8ed1ab_0 + # - portalocker=2.8.2=py39hf3d152e_1 + # - pre-commit=3.2.1=py39h06a4308_0 + # - prometheus_client=0.19.0=pyhd8ed1ab_0 + # - prompt-toolkit=3.0.43=py39h06a4308_0 + # - psutil=5.9.0=py39h5eee18b_0 + # - pthread-stubs=0.4=h36c2ea0_1001 + # - ptyprocess=0.7.0=pyhd3eb1b0_2 + # - pure_eval=0.2.2=pyhd8ed1ab_0 + # - py-cpuinfo=9.0.0=pyhd8ed1ab_0 + # - pycairo=1.25.0=py39hc92de75_1 + # - pycparser=2.21=pyhd3eb1b0_0 + # - pydantic=1.10.8=py39h5eee18b_0 + # - pyedr=0.8.0=pyhd8ed1ab_0 + # - pyfiglet=0.8.post1=py_0 + # - pyg=2.5.2=py39_torch_2.2.0_cu118 + # - pygments=2.15.1=py39h06a4308_1 + # - pyjwt=2.4.0=py39h06a4308_0 + # - pynvml=11.5.0=pyhd8ed1ab_0 + # - pyparsing=3.0.9=py39h06a4308_0 + # - pyproject_hooks=1.0.0=py39h06a4308_0 + # - pyrsistent=0.18.0=py39heee7806_0 + # - pysocks=1.7.1=pyha2e5f31_6 + # - pytables=3.8.0=py39hb8e3aad_2 + # - pytest=7.4.0=py39h06a4308_0 + # - python=3.9.17=h0755675_0_cpython + # - python-build=0.10.0=py39h06a4308_0 + # - python-constraint=1.4.0=py_0 + # - python-dateutil=2.8.2=pyhd3eb1b0_0 + # - python-editor=1.0.4=pyhd3eb1b0_0 + # - python-fastjsonschema=2.19.1=pyhd8ed1ab_0 + # - python-installer=0.7.0=pyhd8ed1ab_0 + # - python-json-logger=2.0.7=pyhd8ed1ab_0 + # - python-multipart=0.0.6=pyhd8ed1ab_0 + # - python-tzdata=2023.4=pyhd8ed1ab_0 + # - python_abi=3.9=3_cp39 + - pytorch=2.2.1=py3.9_cuda11.8_cudnn8.7.0_0 + - pytorch-cuda=11.8=h7e8668a_5 + - pytorch-mutex=1.0=cuda + - pytorch-scatter=2.1.2=py39_torch_2.2.0_cu118 + # - pytz=2023.3.post1=py39h06a4308_0 + # - pyyaml=6.0.1=py39hd1e30aa_0 + # - pyzmq=25.1.2=py39h6a678d5_0 + # - rapidfuzz=2.13.7=py39h417a72b_0 + - rdkit=2024.03.1=py39h6cc1c65_0 + # - readchar=4.0.5=pyhd8ed1ab_0 + # - readline=8.2=h8228510_1 + # - reportlab=3.5.68=py39he59360d_1 + # - requests=2.31.0=pyhd8ed1ab_0 + # - requests-toolbelt=1.0.0=py39h06a4308_0 + # - rfc3339-validator=0.1.4=pyhd8ed1ab_0 + # - rfc3986-validator=0.1.1=pyh9f0ad1d_0 + # - rich=13.3.5=py39h06a4308_0 + # - rocm-smi=5.6.0=h59595ed_1 + - scikit-learn=1.4.1.post1=py39ha22ef79_0 + - scipy=1.12.0=py39h474f0d3_2 + # - secretstorage=3.3.1=py39h06a4308_1 + # - send2trash=1.8.2=pyh41d4057_0 + # - setuptools=63.4.1=py39h06a4308_0 + # - shellingham=1.5.0=py39h06a4308_0 + # - six=1.16.0=pyhd3eb1b0_1 + # - smirnoff99frosst=1.1.0=pyh44b312d_0 + # - snappy=1.1.10=h9fff704_0 + # - sniffio=1.2.0=py39h06a4308_1 + # - soupsieve=2.4=py39h06a4308_0 + # - sqlalchemy=2.0.25=py39h5eee18b_0 + # - stack_data=0.6.2=pyhd8ed1ab_0 + # - starlette=0.27.0=pyhd8ed1ab_0 + # - starsessions=1.3.0=pyhd8ed1ab_0 + # - sympy=1.12=pypyh9d50eac_103 + # - tabulate=0.9.0=pyhd8ed1ab_1 + # - tbb=2021.7.0=h924138e_0 + # - termcolor=2.4.0=pyhd8ed1ab_0 + # - terminado=0.18.0=pyh0d859eb_0 + # - threadpoolctl=3.4.0=pyhc1e730c_0 + # - tinycss2=1.2.1=pyhd8ed1ab_0 + # - tinydb=4.8.0=pyhd8ed1ab_0 + # - tk=8.6.12=h27826a3_0 + # - tomli=2.0.1=py39h06a4308_0 + # - tomlkit=0.12.1=pyha770c72_0 + - torchaudio=2.2.1=py39_cu118 + - torchtriton=2.2.0=py39 + - torchvision=0.17.1=py39_cu118 + # - tornado=6.3.3=py39h5eee18b_0 + - tqdm=4.66.1=pyhd8ed1ab_0 + # - traitlets=5.7.1=py39h06a4308_0 + # - trove-classifiers=2023.3.9=py39h06a4308_0 + # - typing-extensions=4.8.0=hd8ed1ab_0 + # - typing_extensions=4.8.0=pyha770c72_0 + # - typing_utils=0.1.0=pyhd8ed1ab_0 + # - tzdata=2023c=h71feb2d_0 + # - ukkonen=1.0.1=py39hdb19cb5_0 + # - unicodedata2=15.1.0=py39hd1e30aa_0 + # - uri-template=1.3.0=pyhd8ed1ab_0 + # - urllib3=2.1.0=py39h06a4308_1 + # - uvicorn=0.20.0=py39h06a4308_0 + # - validators=0.22.0=pyhd8ed1ab_0 + # - virtualenv=20.24.3=pyhd8ed1ab_0 + # - wcwidth=0.2.5=pyhd3eb1b0_0 + # - webcolors=1.13=pyhd8ed1ab_0 + # - webencodings=0.5.1=pyhd8ed1ab_2 + # - websocket-client=0.58.0=py39h06a4308_4 + # - websockets=10.4=py39h5eee18b_1 + # - wheel=0.41.1=pyhd8ed1ab_0 + # - widgetsnbextension=4.0.9=pyhd8ed1ab_0 + # - xmltodict=0.13.0=pyhd8ed1ab_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.7=h8ee46fc_0 + # - 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.11=hd590300_0 + # - xorg-renderproto=0.11.1=h7f98852_1002 + # - xorg-xextproto=7.3.0=h0b41bf4_1003 + # - xorg-xproto=7.0.31=h7f98852_1007 + # - xz=5.2.6=h166bdaf_0 + # - yacs=0.1.8=pyhd8ed1ab_0 + # - yaml=0.2.5=h7b6447c_0 + # - yarl=1.9.4=py39hd1e30aa_0 + # - zeromq=4.3.5=h59595ed_0 + # - zipp=3.11.0=py39h06a4308_0 + # - zlib=1.2.13=hd590300_5 + # - zlib-ng=2.0.7=h0b41bf4_0 + # - zstd=1.5.5=hfc55251_0 + - pip: + # - absl-py==2.1.0 + # - appdirs==1.4.4 + # - asttokens==2.4.1 + - beartype==0.17.2 + - biopandas==0.4.1 + - biopython>=1.79 + # - colorlog==6.8.2 + # - contextlib2==21.6.0 + # - deprecated==1.2.14 + # - git+https://github.com/NVIDIA/dllogger.git@0540a43971f4a8a16693a9de9de73c1072020769 + - dm-tree==0.1.8 + # - docker-pycreds==0.4.0 + # - einops==0.7.0 + # - executing==2.0.1 + - fair-esm==2.0.0 + # - fairscale==0.4.13 + # - fastcore==1.5.29 + # - fsspec==2024.2.0 + # - gitdb==4.0.11 + # - gitpython==3.1.42 + - hydra-colorlog==1.2.0 + - lightning==2.2.2 + - lightning-utilities==0.11.1 + - lovely-numpy==0.2.11 + - lovely-tensors==0.1.15 + # - ml-collections==0.1.1 + - msgpack-numpy==0.4.8 + - numpy==1.23.5 + - git+https://github.com/amorehead/openfold.git@fe1275099639bf7e617e09ef24d6af778647dd64 + # - posebusters==0.2.13 + # - git+https://git@github.com/zrqiao/power_spherical.git@290b1630c5f84e3bb0d61711046edcf6e47200d4 + - prody==2.4.1 + # - protobuf==4.25.3 + # - python-dotenv==1.0.1 + - pytorch-lightning==2.2.2 + - git+https://github.com/facebookresearch/pytorch3d.git@3da7703c5ac10039645966deddffe8db52eab8c5 + - rootutils==1.0.7 + # - seaborn==0.13.2 + # - sentry-sdk==1.40.5 + # - setproctitle==1.3.3 + # - smmap==5.0.1 + - torchmetrics==1.3.1 + - wandb==0.17.0 + # - wrapt==1.16.0 From cb3077d8f68a0b0f3103e4e1f4bc6b6fe7c28fae Mon Sep 17 00:00:00 2001 From: "Colby T. Ford" Date: Thu, 23 Jan 2025 09:51:21 -0500 Subject: [PATCH 05/10] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 73f56cb..bd8e000 100644 --- a/README.md +++ b/README.md @@ -392,7 +392,7 @@ rm env.yaml # clean up temporary environment file Build the Docker image ```bash -docker build -t flowdock . +docker build --platform linux/amd64 -t flowdock . ``` Run the Docker container From cd41e047bbb1b2c52d49eb3c4093ec895d558682 Mon Sep 17 00:00:00 2001 From: "Colby T. Ford" Date: Thu, 23 Jan 2025 15:50:09 -0500 Subject: [PATCH 06/10] Update flowdock_environment_docker.yaml --- environments/flowdock_environment_docker.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/environments/flowdock_environment_docker.yaml b/environments/flowdock_environment_docker.yaml index 6114e4f..5d15a23 100644 --- a/environments/flowdock_environment_docker.yaml +++ b/environments/flowdock_environment_docker.yaml @@ -3,7 +3,7 @@ channels: - pyg - iopath - pytorch - - senyan.dev + # - senyan.dev - nvidia - defaults - conda-forge @@ -300,7 +300,7 @@ dependencies: # - pysocks=1.7.1=pyha2e5f31_6 # - pytables=3.8.0=py39hb8e3aad_2 # - pytest=7.4.0=py39h06a4308_0 - # - python=3.9.17=h0755675_0_cpython + - python=3.9.17=h0755675_0_cpython # - python-build=0.10.0=py39h06a4308_0 # - python-constraint=1.4.0=py_0 # - python-dateutil=2.8.2=pyhd3eb1b0_0 @@ -327,7 +327,7 @@ dependencies: # - requests-toolbelt=1.0.0=py39h06a4308_0 # - rfc3339-validator=0.1.4=pyhd8ed1ab_0 # - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - # - rich=13.3.5=py39h06a4308_0 + - rich=13.3.5=py39h06a4308_0 # - rocm-smi=5.6.0=h59595ed_1 - scikit-learn=1.4.1.post1=py39ha22ef79_0 - scipy=1.12.0=py39h474f0d3_2 From 8e1fc00f827189ca6fff0db9bb63ac476689d8f1 Mon Sep 17 00:00:00 2001 From: Colby Ford Date: Thu, 23 Jan 2025 18:15:14 -0500 Subject: [PATCH 07/10] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index bd8e000..8e5186b 100644 --- a/README.md +++ b/README.md @@ -395,10 +395,10 @@ Build the Docker image docker build --platform linux/amd64 -t flowdock . ``` -Run the Docker container +Run the Docker container (and mount your local `checkpoints/` directory). ```bash -docker run --gpus all --rm --name flowdock -it flowdock /bin/bash +docker run --gpus all -v ./checkpoints:/software/flowdock/checkpoints --rm --name flowdock -it flowdock /bin/bash ``` From ebc804627d33fbd3dd2aa4448c4ef7e7bb08cfbe Mon Sep 17 00:00:00 2001 From: Colby Ford Date: Thu, 23 Jan 2025 18:17:07 -0500 Subject: [PATCH 08/10] Update flowdock_environment_docker.yaml --- environments/flowdock_environment_docker.yaml | 402 +----------------- 1 file changed, 2 insertions(+), 400 deletions(-) diff --git a/environments/flowdock_environment_docker.yaml b/environments/flowdock_environment_docker.yaml index 5d15a23..14b9d4f 100644 --- a/environments/flowdock_environment_docker.yaml +++ b/environments/flowdock_environment_docker.yaml @@ -3,446 +3,48 @@ channels: - pyg - iopath - pytorch - # - senyan.dev - nvidia - defaults - conda-forge dependencies: - # - _libgcc_mutex=0.1=conda_forge - # - _openmp_mutex=4.5=2_kmp_llvm - # - aiohttp=3.9.3=py39hd1e30aa_1 - # - aiosignal=1.3.1=pyhd8ed1ab_0 - # - antlr-python-runtime=4.9.3=pyhd8ed1ab_1 - # - anyio=4.2.0=py39h06a4308_0 - # - argon2-cffi=23.1.0=pyhd8ed1ab_0 - # - argon2-cffi-bindings=21.2.0=py39hd1e30aa_4 - # - arpack=3.7.0=hdefa2d7_2 - # - arrow=1.2.3=py39h06a4308_1 - # - astunparse=1.6.3=pyhd8ed1ab_0 - # - async-lru=2.0.4=pyhd8ed1ab_0 - # - async-timeout=4.0.3=pyhd8ed1ab_0 - # - attrs=22.1.0=py39h06a4308_0 - # - babel=2.14.0=pyhd8ed1ab_0 - # - backcall=0.2.0=pyhd3eb1b0_0 - # - backoff=2.2.1=pyhd8ed1ab_0 - # - beautifulsoup4=4.12.2=py39h06a4308_0 - # - blas=2.116=mkl - # - blas-devel=3.9.0=16_linux64_mkl - # - bleach=6.1.0=pyhd8ed1ab_0 - # - blessed=1.19.1=pyhe4f9e05_2 - # - blosc=1.21.5=h0f2a231_0 - # - boost=1.84.0=h8003fee_2 - # - boost-cpp=1.84.0=h44aadfe_2 - # - bottleneck=1.3.7=py39ha9d4c09_0 - # - brotli=1.0.9=h166bdaf_9 - # - brotli-bin=1.0.9=h166bdaf_9 - # - brotli-python=1.0.9=py39h5a03fae_9 - # - bson=0.5.9=py_0 - # - bzip2=1.0.8=h7f98852_4 - # - c-ares=1.25.0=hd590300_0 - # - c-blosc2=2.12.0=hb4ffafa_0 - # - ca-certificates=2024.2.2=hbcca054_0 - # - cachecontrol=0.13.1=pyhd8ed1ab_0 - # - cachecontrol-with-filecache=0.13.1=pyhd8ed1ab_0 - # - cached-property=1.5.2=hd8ed1ab_1 - # - cached_property=1.5.2=pyha770c72_1 - # - cachetools=5.3.2=pyhd8ed1ab_0 - # - cairo=1.18.0=h3faef2a_0 - # - certifi=2024.2.2=pyhd8ed1ab_0 - # - cffi=1.15.1=py39h5eee18b_3 - # - cfgv=3.3.1=py39h06a4308_0 - # - charset-normalizer=3.2.0=pyhd8ed1ab_0 - # - cleo=2.0.1=py39h06a4308_0 - # - click=8.0.4=py39h06a4308_0 - # - colorama=0.4.6=pyhd8ed1ab_0 - # - comm=0.2.1=pyhd8ed1ab_0 - # - contourpy=1.2.0=py39hdb19cb5_0 - # - crashtest=0.4.1=py39h06a4308_0 - # - croniter=1.3.7=py39h06a4308_0 - # - cryptography=41.0.2=py39h22a60cf_0 - # - cuda-cudart=11.8.89=0 - # - cuda-cupti=11.8.87=0 - # - cuda-libraries=11.8.0=0 - # - cuda-nvrtc=11.8.89=0 - # - cuda-nvtx=11.8.86=0 - # - cuda-runtime=11.8.0=0 - # - cudatoolkit=11.8.0=h4ba93d1_12 - # - cudatoolkit-dev=11.8.0=h1fa729e_6 - # - curl=8.1.2=h409715c_0 - # - cycler=0.11.0=pyhd3eb1b0_0 - # - cython=3.0.7=py39h3d6467e_0 - # - dateutils=0.6.12=py_0 - # - dbus=1.13.18=hb2f20db_0 - # - debugpy=1.8.0=py39h3d6467e_1 - # - decorator=5.1.1=pyhd8ed1ab_0 - # - deepdiff=6.3.1=pyhd8ed1ab_0 - # - defusedxml=0.7.1=pyhd8ed1ab_0 - # - distlib=0.3.7=pyhd8ed1ab_0 - # - dulwich=0.21.3=py39h5eee18b_0 - # - entrypoints=0.4=pyhd8ed1ab_0 - # - exceptiongroup=1.0.4=py39h06a4308_0 - # - expat=2.6.2=h59595ed_0 - # - ffmpeg=4.3=hf484d3e_0 - # - fftw=3.3.10=nompi_hc118613_108 - # - filelock=3.12.2=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=h77eed37_1 - # - fontconfig=2.14.2=h14ed4e7_0 - # - fonts-conda-ecosystem=1=0 - # - fonts-conda-forge=1=0 - # - fonttools=4.25.0=pyhd3eb1b0_0 - # - fqdn=1.5.1=pyhd8ed1ab_0 - # - freetype=2.12.1=hca18f0e_1 - # - frozenlist=1.4.1=py39hd1e30aa_0 - # - fvcore=0.1.5.post20221221=pyhd8ed1ab_0 - # - glib=2.80.0=hf2295e7_1 - # - glib-tools=2.80.0=hde27a5a_1 - # - gmp=6.2.1=h58526e2_0 - # - gmpy2=2.1.2=py39h376b7d2_1 - # - gnutls=3.6.13=h85f3911_1 - # - greenlet=3.0.1=py39h6a678d5_0 - # - h11=0.12.0=pyhd3eb1b0_0 - # - hdf4=4.2.15=h9772cbc_5 - # - hdf5=1.14.1=nompi_h4f84152_100 - hydra-core=1.3.2=pyhd8ed1ab_0 - # - icu=73.2=h59595ed_0 - # - identify=2.5.5=py39h06a4308_0 - # - idna=3.4=pyhd8ed1ab_0 - # - importlib-metadata=6.0.0=py39h06a4308_0 - # - importlib-resources=3.3.1=pyhd8ed1ab_0 - # - importlib_metadata=6.0.0=hd3eb1b0_0 - # - importlib_resources=5.2.0=pyhd3eb1b0_1 - # - iniconfig=1.1.1=pyhd3eb1b0_0 - # - inquirer=3.1.3=pyhd8ed1ab_0 - # - iopath=0.1.9=py39 - # - ipykernel=6.28.0=py39h06a4308_0 - # - ipython=8.15.0=py39h06a4308_0 - # - ipywidgets=8.1.1=pyhd8ed1ab_0 - # - isoduration=20.11.0=pyhd8ed1ab_0 - # - itsdangerous=2.0.1=pyhd3eb1b0_0 - # - jaraco.classes=3.2.1=pyhd3eb1b0_0 - # - jedi=0.18.1=py39h06a4308_1 - # - jeepney=0.7.1=pyhd3eb1b0_0 - # - jinja2=3.1.2=pyhd8ed1ab_1 - # - joblib=1.3.2=pyhd8ed1ab_0 - # - jpeg=9e=h166bdaf_2 - # - json5=0.9.14=pyhd8ed1ab_0 - # - jsonpointer=2.4=py39hf3d152e_3 - # - jsonschema=4.17.3=py39h06a4308_0 - # - jsonschema-with-format-nongpl=4.17.3=pyhd8ed1ab_0 - # - jupyter-lsp=2.2.1=pyhd8ed1ab_0 - # - jupyter_client=8.6.0=pyhd8ed1ab_0 - # - jupyter_core=5.7.1=py39hf3d152e_0 - # - jupyter_events=0.6.3=pyhd8ed1ab_1 - # - jupyter_server=2.10.0=pyhd8ed1ab_0 - # - jupyter_server_terminals=0.5.1=pyhd8ed1ab_0 - # - jupyterlab=4.0.10=pyhd8ed1ab_0 - # - jupyterlab_pygments=0.3.0=pyhd8ed1ab_0 - # - jupyterlab_server=2.24.0=pyhd8ed1ab_0 - # - jupyterlab_widgets=3.0.9=pyhd8ed1ab_0 - # - keyring=24.2.0=py39hf3d152e_0 - # - keyutils=1.6.1=h166bdaf_0 - # - kiwisolver=1.4.4=py39h6a678d5_0 - # - krb5=1.20.1=h81ceb04_0 - # - lame=3.100=h166bdaf_1003 - # - lcms2=2.12=hddcbb42_0 - # - ld_impl_linux-64=2.40=h41732ed_0 - # - lerc=4.0.0=h27087fc_0 - # - libaec=1.1.2=h59595ed_1 - # - libblas=3.9.0=16_linux64_mkl - # - libboost=1.84.0=h8013b2b_2 - # - libboost-devel=1.84.0=h00ab1b0_2 - # - libboost-headers=1.84.0=ha770c72_2 - # - libboost-python=1.84.0=py39hda80f44_2 - # - libboost-python-devel=1.84.0=py39h8003fee_2 - # - libbrotlicommon=1.0.9=h166bdaf_9 - # - libbrotlidec=1.0.9=h166bdaf_9 - # - libbrotlienc=1.0.9=h166bdaf_9 - # - libcblas=3.9.0=16_linux64_mkl - # - libcublas=11.11.3.6=0 - # - libcufft=10.9.0.58=0 - # - libcufile=1.7.1.12=0 - # - libcurand=10.3.3.129=0 - # - libcurl=8.1.2=h409715c_0 - # - libcusolver=11.4.1.48=0 - # - libcusparse=11.7.5.86=0 - # - libdeflate=1.17=h0b41bf4_0 - # - libedit=3.1.20191231=he28a2e2_2 - # - libev=4.33=hd590300_2 - # - libexpat=2.6.2=h59595ed_0 - # - libffi=3.4.2=h7f98852_5 - # - libgcc-ng=13.1.0=he5830b7_0 - # - libgfortran-ng=13.1.0=h69a702a_0 - # - libgfortran5=13.1.0=h15d22d2_0 - # - libglib=2.80.0=hf2295e7_1 - # - libgomp=13.1.0=he5830b7_0 - # - libhwloc=2.4.1=h6746aa3_0 - # - libiconv=1.17=h166bdaf_0 - # - libjpeg-turbo=2.0.0=h9bf148f_0 - # - liblapack=3.9.0=16_linux64_mkl - # - liblapacke=3.9.0=16_linux64_mkl - # - libnghttp2=1.58.0=h47da74e_1 - # - libnpp=11.8.0.86=0 - # - libnsl=2.0.0=h7f98852_0 - # - libnvjpeg=11.9.0.86=0 - # - libpng=1.6.39=h753d276_0 - # - libsodium=1.0.18=h36c2ea0_1 - # - libsqlite=3.42.0=h2797004_0 - # - libssh2=1.11.0=h0841786_0 - # - libstdcxx-ng=13.1.0=hfd8a6a1_0 - # - libtiff=4.2.0=hf544144_3 - # - libuuid=2.38.1=h0b41bf4_0 - # - libwebp-base=1.3.1=hd590300_0 - # - libxcb=1.15=h0b41bf4_0 - # - libxcrypt=4.4.36=hd590300_1 - # - libxml2=2.12.6=h232c23b_1 - # - libxslt=1.1.39=h76b75d6_0 - # - libzip=1.10.1=h2629f0a_3 - # - libzlib=1.2.13=hd590300_5 - # - llvm-openmp=15.0.7=h0cdce71_0 - # - lxml=4.8.0=py39hb9d737c_3 - # - lz4-c=1.9.3=h9c3ff4c_1 - # - lzo=2.10=h516909a_1000 - # - markdown-it-py=2.2.0=py39h06a4308_1 - # - markupsafe=2.1.1=py39h7f8727e_0 - # - matplotlib-base=3.8.0=py39he9076e7_1 - # - matplotlib-inline=0.1.6=pyhd8ed1ab_0 - # - mda-xdrlib=0.2.0=pyhd8ed1ab_0 - # - mdtraj=1.9.9=py39h67e0f1a_1 - # - mdurl=0.1.0=py39h06a4308_0 - mendeleev=0.15.0=pyhc1e730c_0 - # - mistune=3.0.2=pyhd8ed1ab_0 - # - mkl=2022.1.0=h84fe81f_915 - # - mkl-devel=2022.1.0=ha770c72_916 - # - mkl-include=2022.1.0=h84fe81f_915 - # - more-itertools=8.12.0=pyhd3eb1b0_0 - # - mpc=1.3.1=hfe3b2da_0 - # - mpfr=4.2.0=hb012696_0 - # - mpmath=1.3.0=py39h06a4308_0 - msgpack-python=1.0.3=py39hd09550d_0 - # - multidict=6.0.5=py39hd1e30aa_0 - # - munkres=1.1.4=pyh9f0ad1d_0 - # - nbclient=0.8.0=pyhd8ed1ab_0 - # - nbconvert-core=7.14.1=pyhd8ed1ab_0 - # - nbformat=5.9.2=pyhd8ed1ab_0 - # - ncurses=6.4=hcb278e6_0 - # - nest-asyncio=1.5.8=pyhd8ed1ab_0 - # - nettle=3.6=he412f7d_0 - networkx=3.1=py39h06a4308_0 - # - nodeenv=1.7.0=py39h06a4308_0 - # - notebook=7.0.6=pyhd8ed1ab_0 - # - notebook-shim=0.2.3=pyhd8ed1ab_0 - # - numexpr=2.8.0=mkl_py39h25e7801_2 - # - ocl-icd=2.3.1=h7f98852_0 - # - ocl-icd-system=1.0.0=1 - # - olefile=0.47=pyhd8ed1ab_0 - omegaconf=2.3.0=pyhd8ed1ab_0 - # - openff-amber-ff-ports=0.0.4=pyhca7485f_0 - # - openff-forcefields=2023.11.0=pyhca7485f_0 - # - openff-interchange-base=0.3.18=pyhd8ed1ab_0 - # - openff-models=0.1.1=pyhca7485f_0 - # - openff-toolkit-base=0.14.5=pyhd8ed1ab_1 - # - openff-units=0.2.1=pyh1a96a4e_0 - # - openff-utilities=0.1.12=pyhd8ed1ab_0 - # - openh264=2.1.1=h780b84a_0 - # - openjpeg=2.4.0=hb52868f_1 - # - openmm=8.1.0=py39he81762f_1 - # - openssl=3.2.1=hd590300_1 - # - ordered-set=4.1.0=py39h06a4308_0 - # - orjson=3.8.8=py39h52d8a92_0 - # - overrides=7.4.0=pyhd8ed1ab_0 - # - packaging=23.1=py39h06a4308_0 - # - packmol=20.010=h86c2bf4_0 - pandas=2.1.4=py39h1128e8f_0 - # - pandocfilters=1.5.0=pyhd8ed1ab_0 - # - panedr=0.8.0=pyhd8ed1ab_0 - # - parmed=3.4.4=py39h227be39_0 - # - parso=0.8.3=pyhd8ed1ab_0 - # - pcre=8.45=h295c915_0 - # - pcre2=10.43=hcad00b1_0 - # - pdbfixer=1.9=pyh1a96a4e_0 - # - perl=5.32.1=7_hd590300_perl5 - # - pexpect=4.8.0=pyhd3eb1b0_3 - # - pickleshare=0.7.5=py_1003 - # - pillow=8.2.0=py39hf95b381_1 - # - pint=0.21=pyhd8ed1ab_0 - # - pip=23.2.1=pyhd8ed1ab_0 - # - pixman=0.43.2=h59595ed_0 - # - pkginfo=1.9.6=py39h06a4308_0 - # - platformdirs=3.10.0=py39h06a4308_0 - # - pluggy=1.0.0=py39h06a4308_1 - # - poetry=1.6.1=linux_pyha804496_0 - # - poetry-core=1.7.0=pyhd8ed1ab_0 - # - poetry-plugin-export=1.5.0=pyhd8ed1ab_0 - # - portalocker=2.8.2=py39hf3d152e_1 - # - pre-commit=3.2.1=py39h06a4308_0 - # - prometheus_client=0.19.0=pyhd8ed1ab_0 - # - prompt-toolkit=3.0.43=py39h06a4308_0 - # - psutil=5.9.0=py39h5eee18b_0 - # - pthread-stubs=0.4=h36c2ea0_1001 - # - ptyprocess=0.7.0=pyhd3eb1b0_2 - # - pure_eval=0.2.2=pyhd8ed1ab_0 - # - py-cpuinfo=9.0.0=pyhd8ed1ab_0 - # - pycairo=1.25.0=py39hc92de75_1 - # - pycparser=2.21=pyhd3eb1b0_0 - # - pydantic=1.10.8=py39h5eee18b_0 - # - pyedr=0.8.0=pyhd8ed1ab_0 - # - pyfiglet=0.8.post1=py_0 - # - pyg=2.5.2=py39_torch_2.2.0_cu118 - # - pygments=2.15.1=py39h06a4308_1 - # - pyjwt=2.4.0=py39h06a4308_0 - # - pynvml=11.5.0=pyhd8ed1ab_0 - # - pyparsing=3.0.9=py39h06a4308_0 - # - pyproject_hooks=1.0.0=py39h06a4308_0 - # - pyrsistent=0.18.0=py39heee7806_0 - # - pysocks=1.7.1=pyha2e5f31_6 - # - pytables=3.8.0=py39hb8e3aad_2 - # - pytest=7.4.0=py39h06a4308_0 - python=3.9.17=h0755675_0_cpython - # - python-build=0.10.0=py39h06a4308_0 - # - python-constraint=1.4.0=py_0 - # - python-dateutil=2.8.2=pyhd3eb1b0_0 - # - python-editor=1.0.4=pyhd3eb1b0_0 - # - python-fastjsonschema=2.19.1=pyhd8ed1ab_0 - # - python-installer=0.7.0=pyhd8ed1ab_0 - # - python-json-logger=2.0.7=pyhd8ed1ab_0 - # - python-multipart=0.0.6=pyhd8ed1ab_0 - # - python-tzdata=2023.4=pyhd8ed1ab_0 - # - python_abi=3.9=3_cp39 - pytorch=2.2.1=py3.9_cuda11.8_cudnn8.7.0_0 - pytorch-cuda=11.8=h7e8668a_5 - pytorch-mutex=1.0=cuda - pytorch-scatter=2.1.2=py39_torch_2.2.0_cu118 - # - pytz=2023.3.post1=py39h06a4308_0 - # - pyyaml=6.0.1=py39hd1e30aa_0 - # - pyzmq=25.1.2=py39h6a678d5_0 - # - rapidfuzz=2.13.7=py39h417a72b_0 - rdkit=2024.03.1=py39h6cc1c65_0 - # - readchar=4.0.5=pyhd8ed1ab_0 - # - readline=8.2=h8228510_1 - # - reportlab=3.5.68=py39he59360d_1 - # - requests=2.31.0=pyhd8ed1ab_0 - # - requests-toolbelt=1.0.0=py39h06a4308_0 - # - rfc3339-validator=0.1.4=pyhd8ed1ab_0 - # - rfc3986-validator=0.1.1=pyh9f0ad1d_0 - rich=13.3.5=py39h06a4308_0 - # - rocm-smi=5.6.0=h59595ed_1 - scikit-learn=1.4.1.post1=py39ha22ef79_0 - scipy=1.12.0=py39h474f0d3_2 - # - secretstorage=3.3.1=py39h06a4308_1 - # - send2trash=1.8.2=pyh41d4057_0 - # - setuptools=63.4.1=py39h06a4308_0 - # - shellingham=1.5.0=py39h06a4308_0 - # - six=1.16.0=pyhd3eb1b0_1 - # - smirnoff99frosst=1.1.0=pyh44b312d_0 - # - snappy=1.1.10=h9fff704_0 - # - sniffio=1.2.0=py39h06a4308_1 - # - soupsieve=2.4=py39h06a4308_0 - # - sqlalchemy=2.0.25=py39h5eee18b_0 - # - stack_data=0.6.2=pyhd8ed1ab_0 - # - starlette=0.27.0=pyhd8ed1ab_0 - # - starsessions=1.3.0=pyhd8ed1ab_0 - # - sympy=1.12=pypyh9d50eac_103 - # - tabulate=0.9.0=pyhd8ed1ab_1 - # - tbb=2021.7.0=h924138e_0 - # - termcolor=2.4.0=pyhd8ed1ab_0 - # - terminado=0.18.0=pyh0d859eb_0 - # - threadpoolctl=3.4.0=pyhc1e730c_0 - # - tinycss2=1.2.1=pyhd8ed1ab_0 - # - tinydb=4.8.0=pyhd8ed1ab_0 - # - tk=8.6.12=h27826a3_0 - # - tomli=2.0.1=py39h06a4308_0 - # - tomlkit=0.12.1=pyha770c72_0 - torchaudio=2.2.1=py39_cu118 - torchtriton=2.2.0=py39 - torchvision=0.17.1=py39_cu118 - # - tornado=6.3.3=py39h5eee18b_0 - tqdm=4.66.1=pyhd8ed1ab_0 - # - traitlets=5.7.1=py39h06a4308_0 - # - trove-classifiers=2023.3.9=py39h06a4308_0 - # - typing-extensions=4.8.0=hd8ed1ab_0 - # - typing_extensions=4.8.0=pyha770c72_0 - # - typing_utils=0.1.0=pyhd8ed1ab_0 - # - tzdata=2023c=h71feb2d_0 - # - ukkonen=1.0.1=py39hdb19cb5_0 - # - unicodedata2=15.1.0=py39hd1e30aa_0 - # - uri-template=1.3.0=pyhd8ed1ab_0 - # - urllib3=2.1.0=py39h06a4308_1 - # - uvicorn=0.20.0=py39h06a4308_0 - # - validators=0.22.0=pyhd8ed1ab_0 - # - virtualenv=20.24.3=pyhd8ed1ab_0 - # - wcwidth=0.2.5=pyhd3eb1b0_0 - # - webcolors=1.13=pyhd8ed1ab_0 - # - webencodings=0.5.1=pyhd8ed1ab_2 - # - websocket-client=0.58.0=py39h06a4308_4 - # - websockets=10.4=py39h5eee18b_1 - # - wheel=0.41.1=pyhd8ed1ab_0 - # - widgetsnbextension=4.0.9=pyhd8ed1ab_0 - # - xmltodict=0.13.0=pyhd8ed1ab_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.7=h8ee46fc_0 - # - 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.11=hd590300_0 - # - xorg-renderproto=0.11.1=h7f98852_1002 - # - xorg-xextproto=7.3.0=h0b41bf4_1003 - # - xorg-xproto=7.0.31=h7f98852_1007 - # - xz=5.2.6=h166bdaf_0 - # - yacs=0.1.8=pyhd8ed1ab_0 - # - yaml=0.2.5=h7b6447c_0 - # - yarl=1.9.4=py39hd1e30aa_0 - # - zeromq=4.3.5=h59595ed_0 - # - zipp=3.11.0=py39h06a4308_0 - # - zlib=1.2.13=hd590300_5 - # - zlib-ng=2.0.7=h0b41bf4_0 - # - zstd=1.5.5=hfc55251_0 - pip: - # - absl-py==2.1.0 - # - appdirs==1.4.4 - # - asttokens==2.4.1 - beartype==0.17.2 - biopandas==0.4.1 - biopython>=1.79 - # - colorlog==6.8.2 - # - contextlib2==21.6.0 - # - deprecated==1.2.14 - # - git+https://github.com/NVIDIA/dllogger.git@0540a43971f4a8a16693a9de9de73c1072020769 - dm-tree==0.1.8 - # - docker-pycreds==0.4.0 - # - einops==0.7.0 - # - executing==2.0.1 + - einops==0.7.0 - fair-esm==2.0.0 - # - fairscale==0.4.13 - # - fastcore==1.5.29 - # - fsspec==2024.2.0 - # - gitdb==4.0.11 - # - gitpython==3.1.42 - hydra-colorlog==1.2.0 - lightning==2.2.2 - lightning-utilities==0.11.1 - lovely-numpy==0.2.11 - lovely-tensors==0.1.15 - # - ml-collections==0.1.1 + - ml-collections==0.1.1 - msgpack-numpy==0.4.8 - numpy==1.23.5 - git+https://github.com/amorehead/openfold.git@fe1275099639bf7e617e09ef24d6af778647dd64 - # - posebusters==0.2.13 - # - git+https://git@github.com/zrqiao/power_spherical.git@290b1630c5f84e3bb0d61711046edcf6e47200d4 - prody==2.4.1 - # - protobuf==4.25.3 - # - python-dotenv==1.0.1 - pytorch-lightning==2.2.2 - git+https://github.com/facebookresearch/pytorch3d.git@3da7703c5ac10039645966deddffe8db52eab8c5 - rootutils==1.0.7 - # - seaborn==0.13.2 - # - sentry-sdk==1.40.5 - # - setproctitle==1.3.3 - # - smmap==5.0.1 - torchmetrics==1.3.1 - wandb==0.17.0 - # - wrapt==1.16.0 From 670ef061767bd05f879afcca29ec4efc847e4b05 Mon Sep 17 00:00:00 2001 From: Colby Ford Date: Thu, 23 Jan 2025 18:17:09 -0500 Subject: [PATCH 09/10] Update Dockerfile --- Dockerfile | 5 ----- 1 file changed, 5 deletions(-) diff --git a/Dockerfile b/Dockerfile index 09b2fc5..d96d319 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,11 +32,6 @@ RUN echo "source activate flowdock" >> /etc/profile.d/conda.sh && \ echo "source /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \ echo "conda activate flowdock" >> ~/.bashrc - -# conda activate FlowDock # NOTE: one still needs to use `conda` to (de)activate environments -# pip3 install -e . # install local project as package - - ## Default shell and command SHELL ["/bin/bash", "-l", "-c"] CMD ["/bin/bash"] \ No newline at end of file From 5cfb1b8adb28610328071eee62fbb4d19b21303a Mon Sep 17 00:00:00 2001 From: Colby Ford Date: Fri, 24 Jan 2025 10:33:28 -0500 Subject: [PATCH 10/10] Update README.md --- README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8e5186b..b85a9ed 100644 --- a/README.md +++ b/README.md @@ -389,16 +389,24 @@ rm env.yaml # clean up temporary environment file
-Build the Docker image +Given that this tool has a number of dependencies, it may be easier to run it in a Docker container. + +Pull from [Docker Hub](https://hub.docker.com/repository/docker/cford38/flowdock): `docker pull cford38/flowdock:latest` + + + +Alternatively, build the Docker image locally: ```bash docker build --platform linux/amd64 -t flowdock . ``` -Run the Docker container (and mount your local `checkpoints/` directory). +Then, run the Docker container (and mount your local `checkpoints/` directory) ```bash docker run --gpus all -v ./checkpoints:/software/flowdock/checkpoints --rm --name flowdock -it flowdock /bin/bash + +# docker run --gpus all -v ./checkpoints:/software/flowdock/checkpoints --rm --name flowdock -it cford38/flowdock:latest /bin/bash ```