Open1

LocalColabFold (ver. 1.5.5) のための.defファイル

_machine_machine
localcolabfold-v1.5.5.def
BootStrap: docker
From: nvidia/cuda:12.4.1-cudnn-devel-ubuntu22.04

%post
  # localtime関係のWARNINGに対処
  touch /etc/localtime

  # 必要なパッケージのインストール (冗長)
  apt update && apt upgrade -y
  apt install -y build-essential gcc-12 g++-12 git curl wget aria2 zip unzip
  
  # localeにen_US.UTF-8を追加する (WSL2だけで使用するなら不要)
  apt install -y locales
  locale-gen en_US.UTF-8
  
  # apt関係のお掃除
  rm -rf /var/lib/apt/lists/* && apt autoremove -y && apt clean

  # gcc-12およびg++-12をデフォルトのgccおよびg++に設定
  update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-12 1
  gcc --version
  update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-12 1
  g++ --version

  # Pyenvを/usr/local/appsにインストール
  git clone https://github.com/pyenv/pyenv.git /usr/local/apps/pyenv
  export PYENV_ROOT="/usr/local/apps/pyenv"
  export PATH="${PYENV_ROOT}/bin:${PATH}"

  # PyenvでMiniforgeをインストールし、MiniforgeにPATHを通す
  pyenv install --list
  pyenv install miniforge3-24.11.3-2
  pyenv global miniforge3-24.11.3-2
  pyenv versions
  export MINIFORGE3_ROOT="${PYENV_ROOT}/versions/miniforge3-24.11.3-2"
  export PATH="${MINIFORGE3_ROOT}/bin:${PATH}"
  
  # COLABFOLDDIRの作成
  mkdir -p /usr/local/apps/localcolabfold
  export COLABFOLDDIR="/usr/local/apps/localcolabfold"
  cd "${COLABFOLDDIR}"

  # conda自身のアップデート 
  conda update -n base conda
  # conda環境colabfold-condaを作成
  conda create -p "${COLABFOLDDIR}/colabfold-conda" -c conda-forge -c bioconda \
    python=3.10 openmm==8.2.0 pdbfixer kalign2=2.04 hhsuite=3.3.0 mmseqs2
  
  # conda関係のお掃除
  conda clean --all --force-pkgs-dirs --yes
  # conda環境colabfold-condaをアクティベート
  export COLABFOLD_CONDA="${COLABFOLDDIR}/colabfold-conda"
  export PATH="${COLABFOLD_CONDA}/bin:${PATH}"
  
  # pip自身のアップデート
  python3 -m pip install --no-cache-dir --upgrade pip
  # ColabFoldのインストール
  python3 -m pip install --no-cache-dir --no-warn-conflicts \
    "colabfold[alphafold-minus-jax] @ git+https://github.com/sokrypton/ColabFold"
  python3 -m pip install --no-cache-dir "colabfold[alphafold]"
  python3 -m pip install --no-cache-dir --upgrade "jax[cuda12]==0.5.3"
  python3 -m pip install --no-cache-dir --upgrade tensorflow
  python3 -m pip install --no-cache-dir silence_tensorflow
  
  cd ${COLABFOLD_CONDA}/lib/python3.10/site-packages/colabfold
  # Use 'Agg' for non-GUI backend
  sed -i -e "s#from matplotlib import pyplot as plt#import matplotlib\nmatplotlib.use('Agg')\nimport matplotlib.pyplot as plt#g" plot.py
  # modify the default params directory
  sed -i -e "s#appdirs.user_cache_dir(__package__ or \"colabfold\")#\"${COLABFOLDDIR}/colabfold\"#g" download.py
  # suppress warnings related to tensorflow
  sed -i -e "s#from io import StringIO#from io import StringIO\nfrom silence_tensorflow import silence_tensorflow\nsilence_tensorflow()#g" batch.py
  # remove cache directory
  rm -rf __pycache__
  
  # weightsのダウンロード
  cd "${COLABFOLDDIR}"
  python3 -m colabfold.download 
  
  # conda環境colabfold-condaにインストールしたパッケージの由来 (channel) を確認する
  conda list -p "${COLABFOLD_CONDA}"

%environment
  # ColabFoldのための環境設定
  export COLABFOLDDIR="/usr/local/apps/localcolabfold"
  export COLABFOLD_CONDA="${COLABFOLDDIR}/colabfold-conda"
  export PATH="${COLABFOLD_CONDA}/bin:${PATH}"
  # for WSL2 (?)
  export TF_FORCE_UNIFIED_MEMORY="1"
  export XLA_PYTHON_CLIENT_MEM_FRACTION="4.0"
  export XLA_PYTHON_CLIENT_ALLOCATOR="platform"
  export TF_FORCE_GPU_ALLOW_GROWTH="true"

%runscript
  # コンテナ実行時のスクリプトを定義
  # "$@"は追加の引数を利用するための設定
  exec "$@"