diff --git a/apps/protein_folding/helixfold3/Dockerfile b/apps/protein_folding/helixfold3/Dockerfile new file mode 100644 index 00000000..9b5cde31 --- /dev/null +++ b/apps/protein_folding/helixfold3/Dockerfile @@ -0,0 +1,40 @@ +ARG CUDA=12.8.1 +FROM nvidia/cuda:${CUDA}-cudnn-devel-ubuntu22.04 +# FROM directive resets ARGS, so we specify again (the value is retained if +# previously set). +ARG CUDA + +LABEL Author="j.caley@unsw.edu.au" \ + title="helixfold3" \ + description="Docker image containing all software requirements to run helixfold3" + +RUN apt-get update && DEBIAN_FRONTEND=noninteractive apt-get install --no-install-recommends -y wget git && \ + wget -q -P /tmp "https://github.com/conda-forge/miniforge/releases/download/24.11.0-0/Miniforge3-$(uname)-$(uname -m).sh" && \ + bash /tmp/Miniforge3-$(uname)-$(uname -m).sh -b -p /conda && \ + git clone --filter=blob:none --no-checkout https://github.com/PaddlePaddle/PaddleHelix.git /app/helixfold3 && \ + cd /app/helixfold3 && \ + git sparse-checkout init --cone && \ + git sparse-checkout set apps/protein_folding/helixfold3 && \ + git checkout dev && \ + mv apps/protein_folding/helixfold3/* . && \ + rm -rf /tmp/Miniforge3-$(uname)-$(uname -m).sh /var/lib/apt/lists/* /root/.cache apps && \ + apt-get remove --purge -y wget git && apt-get autoremove -y && apt-get clean -y + +COPY environment.yaml /app/helixfold3/environment.yaml + +ENV PATH="/conda/bin:$PATH" + +RUN mamba env create --file=/app/helixfold3/environment.yaml && \ + mamba install -y -c bioconda aria2 hmmer==3.3.2 kalign2==2.04 hhsuite==3.3.0 -n helixfold && \ + mamba install -y -c conda-forge openbabel -n helixfold && \ + mamba clean --all --force-pkgs-dirs -y && \ + rm -rf /root/.cache + +ENV PATH="/conda/bin:/app/helixfold3:./maxit_src/bin:/conda/envs/helixfold/bin:$PATH" \ + RCSBROOT="./maxit_src" \ + MAXIT_SRC="./maxit_src" \ + PYTHON_BIN="/conda/envs/helixfold/bin/python3.9" \ + ENV_BIN="/conda/envs/helixfold/bin" \ + OBABEL_BIN="/conda/envs/helixfold/bin" + +ENTRYPOINT ["mamba", "run", "--name", "helixfold"] diff --git a/apps/protein_folding/helixfold3/environment.yaml b/apps/protein_folding/helixfold3/environment.yaml new file mode 100644 index 00000000..82833a68 --- /dev/null +++ b/apps/protein_folding/helixfold3/environment.yaml @@ -0,0 +1,35 @@ +name: helixfold +channels: + - conda-forge + - bioconda + - nvidia + - biocore + +dependencies: + - python=3.9 + - cuda-toolkit=12.0 + - cudnn=8.4.0 + - nccl=2.14 + - libgcc=14.2.0 + - libgomp=14.2.0 + - pip=25.0.1 + - aria2=1.37.0 + - hmmer=3.4 + - kalign2=2.04 + - hhsuite=3.3.0 + - openbabel=3.1.1 + - pip: + - paddlepaddle-gpu==2.6.1 -f https://www.paddlepaddle.org.cn/whl/linux/mkl/avx/stable.html + - absl-py==0.13.0 + - biopython==1.79 + - chex==0.0.7 + - dm-haiku==0.0.4 + - dm-tree==0.1.6 + - docker==5.0.0 + - immutabledict==2.0.0 + - jax==0.2.14 + - ml-collections==0.1.0 + - pandas==1.3.4 + - scipy==1.9.0 + - rdkit-pypi==2022.9.5 + - posebusters==0.3.6 diff --git a/apps/protein_folding/helixfold3/helixfold3.def b/apps/protein_folding/helixfold3/helixfold3.def new file mode 100644 index 00000000..957ec44e --- /dev/null +++ b/apps/protein_folding/helixfold3/helixfold3.def @@ -0,0 +1,44 @@ +Bootstrap: docker +From: nvidia/cuda:12.8.1-cudnn-devel-ubuntu22.04 + +%labels + Author j.caley@unsw.edu.au + title="helixfold3" + description="Docker image containing all software requirements to run helixfold3" +%files + environment.yaml /app/helixfold3/environment.yaml + +%post + apt update && DEBIAN_FRONTEND=noninteractive apt install --no-install-recommends -y wget git + + wget -q -P /tmp "https://github.com/conda-forge/miniforge/releases/download/24.11.0-0/Miniforge3-$(uname)-$(uname -m).sh" + bash /tmp/Miniforge3-$(uname)-$(uname -m).sh -b -p /conda + rm /tmp/Miniforge3-$(uname)-$(uname -m).sh + export PATH="/conda/bin:$PATH" + + git clone --filter=blob:none --no-checkout https://github.com/PaddlePaddle/PaddleHelix.git /app/helixfold3 + cd /app/helixfold3 + git sparse-checkout init --cone + git sparse-checkout set apps/protein_folding/helixfold3 + git checkout dev + mv apps/protein_folding/helixfold3/* . + rm -rf apps + + mamba env create --file=/app/helixfold3/environment.yaml + mamba install -y -c bioconda aria2 hmmer==3.3.2 kalign2==2.04 hhsuite==3.3.0 -n helixfold + mamba install -y -c conda-forge openbabel -n helixfold + + apt autoremove -y && apt remove --purge -y wget git && apt clean -y + rm -rf /var/lib/apt/lists/* /root/.cache *.tar.gz + mamba clean --all --force-pkgs-dirs -y + +%environment + export PATH="/conda/bin:/app/helixfold3:./maxit_src/bin:/conda/envs/helixfold/bin:$PATH" + export RCSBROOT="./maxit_src" + export MAXIT_SRC="./maxit_src" + export PYTHON_BIN="/conda/envs/helixfold/bin/python3.9" + export ENV_BIN="/conda/envs/helixfold/bin" + export OBABEL_BIN="/conda/envs/helixfold/bin" + +%runscript + mamba run --name helixfold "$@"