diff --git a/CHANGELOG.md b/CHANGELOG.md index dc14ad8d..bce4fda1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,12 +10,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - [[#177](https://github.com/nf-core/proteinfold/issues/177)] - Fix typo in some instances of model preset `alphafold2_ptm`. - [[PR #178](https://github.com/nf-core/proteinfold/pull/178)] - Enable running multiple modes in parallel. - [[#179](https://github.com/nf-core/proteinfold/issues/179)] - Produce an interactive html report for the predicted structures. -- [[#180](https://github.com/nf-core/proteinfold/issues/180)] - Implement Fooldseek. +- [[#180](https://github.com/nf-core/proteinfold/issues/180)] - Implement Foldseek. - [[#188](https://github.com/nf-core/proteinfold/issues/188)] - Fix colabfold image to run in gpus. - [[PR ##205](https://github.com/nf-core/proteinfold/pull/205)] - Change input schema from `sequence,fasta` to `id,fasta`. - [[PR #210](https://github.com/nf-core/proteinfold/pull/210)] - Moving post-processing logic to a subworkflow, change wave images pointing to oras to point to https and refactor module to match nf-core folder structure. - [[#214](https://github.com/nf-core/proteinfold/issues/214)] - Fix colabfold image to run in cpus after [#188](https://github.com/nf-core/proteinfold/issues/188) fix. - [[#235](https://github.com/nf-core/proteinfold/issues/235)] - Update samplesheet to new version (switch from `sequence` column to `id`). +- [[#239](https://github.com/nf-core/proteinfold/issues/239)] - Update alphafold2 standard mode Dockerfile. ## [[1.1.1](https://github.com/nf-core/proteinfold/releases/tag/1.1.1)] - 2025-07-30 diff --git a/dockerfiles/Dockerfile_nfcore-proteinfold_alphafold2_standard b/dockerfiles/Dockerfile_nfcore-proteinfold_alphafold2_standard index 774d89f6..128ac8ac 100644 --- a/dockerfiles/Dockerfile_nfcore-proteinfold_alphafold2_standard +++ b/dockerfiles/Dockerfile_nfcore-proteinfold_alphafold2_standard @@ -1,22 +1,26 @@ -FROM nvidia/cuda:11.4.3-cudnn8-runtime-ubuntu18.04 +ARG CUDA=12.2.2 +FROM nvidia/cuda:${CUDA}-cudnn8-runtime-ubuntu20.04 +# FROM directive resets ARGS, so we specify again (the value is retained if +# previously set). +ARG CUDA LABEL authors="Athanasios Baltzis, Jose Espinosa-Carrasco, Leila Mansouri" \ title="nfcore/proteinfold_alphafold2_standard" \ - Version="1.1.0" \ + Version="dev" \ description="Docker image containing all software requirements to run the RUN_ALPHAFOLD2 module using the nf-core/proteinfold pipeline" # Use bash to support string substitution. SHELL ["/bin/bash", "-o", "pipefail", "-c"] # Add env variables -ENV LD_LIBRARY_PATH="/conda/lib:/usr/local/cuda-11.4/lib64:$LD_LIBRARY_PATH" -ENV PATH="/conda/bin:$PATH" +ENV LD_LIBRARY_PATH="/usr/local/cuda-12.2/lib64:$LD_LIBRARY_PATH" RUN apt-key adv --keyserver keyserver.ubuntu.com --recv-keys A4B469963BF863CC -RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y \ +RUN apt-get update --quiet \ + && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y --quiet \ build-essential \ cmake \ - cuda-command-line-tools-11-4 \ + cuda-command-line-tools-$(cut -f1,2 -d- <<< ${CUDA//./-}) \ git \ hmmer \ kalign \ @@ -33,27 +37,26 @@ RUN git clone https://github.com/deepmind/alphafold.git /app/alphafold && \ cd - # Compile HHsuite from source -RUN git clone --branch v3.3.0 https://github.com/soedinglab/hh-suite.git /tmp/hh-suite \ +RUN git clone --branch v3.3.0 --single-branch https://github.com/soedinglab/hh-suite.git /tmp/hh-suite \ && mkdir /tmp/hh-suite/build \ - && cd /tmp/hh-suite/build \ - && cmake -DCMAKE_INSTALL_PREFIX=/opt/hhsuite -DHAVE_AVX2=1 .. \ + && cd /tmp/hh-suite/build \ + && cmake -DCMAKE_INSTALL_PREFIX=/opt/hhsuite .. \ && make -j 4 && make install \ && ln -s /opt/hhsuite/bin/* /usr/bin \ && cd - && rm -rf /tmp/hh-suite -# Install Miniconda package manager +# Install Miniforge package manager RUN wget -q -P /tmp \ - https://repo.anaconda.com/miniconda/Miniconda3-latest-Linux-x86_64.sh \ - && bash /tmp/Miniconda3-latest-Linux-x86_64.sh -b -p /conda \ - && rm /tmp/Miniconda3-latest-Linux-x86_64.sh + "https://github.com/conda-forge/miniforge/releases/latest/download/Miniforge3-$(uname)-$(uname -m).sh" \ + && bash /tmp/Miniforge3-$(uname)-$(uname -m).sh -b -p /opt/conda \ + && rm /tmp/Miniforge3-$(uname)-$(uname -m).sh -# Install conda packages -RUN /conda/bin/conda install -y -c conda-forge \ - openmm=7.7.0 \ - cudatoolkit==11.1.1 \ - pdbfixer \ - pip \ - python=3.10 \ +# Install Conda packages. +ENV PATH="/opt/conda/bin:$PATH" +ENV LD_LIBRARY_PATH="/opt/conda/lib:$LD_LIBRARY_PATH" +RUN conda install --quiet --yes conda==24.11.1 pip python=3.11 \ + && conda install --quiet --yes --channel nvidia cuda=${CUDA_VERSION} \ + && conda install --quiet --yes --channel conda-forge openmm=8.0.0 pdbfixer \ && conda clean --all --force-pkgs-dirs --yes RUN wget -q -P /app/alphafold/alphafold/common/ \ @@ -63,8 +66,8 @@ RUN wget -q -P /app/alphafold/alphafold/common/ \ RUN pip3 install --upgrade pip --no-cache-dir \ && pip3 install -r /app/alphafold/requirements.txt --no-cache-dir \ && pip3 install --upgrade --no-cache-dir \ - jax==0.3.25 \ - jaxlib==0.3.25+cuda11.cudnn805 \ + jax==0.4.26 \ + jaxlib==0.4.26+cuda12.cudnn89 \ -f https://storage.googleapis.com/jax-releases/jax_cuda_releases.html RUN sed -i "s|alphafold/common/stereo_chemical_props.txt|/app/alphafold/alphafold/common/stereo_chemical_props.txt|g" /app/alphafold/alphafold/common/residue_constants.py @@ -72,8 +75,17 @@ RUN sed -i "s|alphafold/common/stereo_chemical_props.txt|/app/alphafold/alphafol # Add SETUID bit to the ldconfig binary so that non-root users can run it. RUN chmod u+s /sbin/ldconfig.real +# Currently needed to avoid undefined_symbol error. +RUN ln -sf /usr/lib/x86_64-linux-gnu/libffi.so.7 /opt/conda/lib/libffi.so.7 + # We need to run `ldconfig` first to ensure GPUs are visible, due to some quirk # with Debian. See https://github.com/NVIDIA/nvidia-docker/issues/1399 for # details. -RUN cd /app/alphafold -RUN ldconfig +# ENTRYPOINT does not support easily running multiple commands, so instead we +# write a shell script to wrap them up. +WORKDIR /app/alphafold +RUN echo $'#!/bin/bash\n\ +ldconfig\n\ +python /app/alphafold/run_alphafold.py "$@"' > /app/run_alphafold.sh \ + && chmod +x /app/run_alphafold.sh +ENTRYPOINT ["/app/run_alphafold.sh"]