Open1

bioemu-v1.1.0.def

_machine_machine
bioemu-v1.1.0.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 patch
  
  # 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}"
  
  # conda自身のアップデート 
  conda update -n base conda
  # conda環境bioemu-condaを作成
  conda create -n bioemu-conda python=3.10
  
  # conda関係のお掃除
  conda clean --all --force-pkgs-dirs --yes
  # conda環境bioemu-condaをアクティベート
  export BIOEMU_CONDA="${MINIFORGE3_ROOT}/envs/bioemu-conda"
  export PATH="${BIOEMU_CONDA}/bin:${PATH}"
  
  # pip自身のアップデート
  python3 -m pip install --no-cache-dir --upgrade pip
  # BioEmuのインストール
  python3 -m pip install --no-cache-dir bioemu[md] bioemu-benchmarks

  # conda環境bioemu-condaにインストールしたパッケージの由来 (channel) を確認する
  conda list -n bioemu-conda
  
  # BioEmuモデルパラメーター、ColabFold、H-Packerのインストール準備
  export HF_HOME="/usr/local/apps/hf_cache"
  export BIOEMU_COLABFOLD_DIR="/usr/local/apps/colabfold"   
  export XDG_CACHE_HOME="${BIOEMU_COLABFOLD_DIR}"           
  export HPACKER_REPO_DIR="/usr/local/apps/hpacker"
  export HPACKER_ENV_NAME="hpacker"
  export PATH="${MINIFORGE3_ROOT}/bin:${BIOEMU_CONDA}/bin:${PATH}"
  export CONDA_ROOT="${MINIFORGE3_ROOT}"
  mkdir -p "${HF_HOME}" "${BIOEMU_COLABFOLD_DIR}" "${HPACKER_REPO_DIR}" 
  
  # BioEmuモデルパラメーター、ColabFold、H-Packerのインストール
  ${BIOEMU_CONDA}/bin/python3 - <<'PYCODE'
import os, subprocess
from bioemu.model_utils import maybe_download_checkpoint
from bioemu.get_embeds import ensure_colabfold_install
from bioemu.hpacker_setup.setup_hpacker import ensure_hpacker_install

# BioEmuモデルパラメーターのダウンロード (to HF_HOME)
ckpt, cfg = maybe_download_checkpoint(model_name="bioemu-v1.1")
print("Model downloaded to:", ckpt, cfg, flush=True)

# ColabFoldのインストール
os.environ["BIOEMU_COLABFOLD_DIR"] = os.environ.get("BIOEMU_COLABFOLD_DIR", "")
bin_dir = ensure_colabfold_install()
py = os.path.join(bin_dir, "python")
print("ColabFold bin dir:", bin_dir, flush=True)
# AlphaFoldモデルパラメーターのダウンロード (to XDG_CACHE_HOME)
subprocess.check_call([py, "-m", "colabfold.download"])

# H-Packerのインストール
ensure_hpacker_install(
    envname=os.environ.get("HPACKER_ENV_NAME", "hpacker"),
    repo_dir=os.environ.get("HPACKER_REPO_DIR", os.path.expanduser("~/.hpacker"))
)
PYCODE

  # conda関係のお掃除
  conda clean --all --force-pkgs-dirs --yes

%environment
  # BioEmuのための環境設定
  export MINIFORGE3_ROOT="/usr/local/apps/pyenv/versions/miniforge3-24.11.3-2"
  export BIOEMU_CONDA="${MINIFORGE3_ROOT}/envs/bioemu-conda"
  export PATH="${BIOEMU_CONDA}/bin:${PATH}"
  export HF_HOME="/usr/local/apps/hf_cache"
  # ColabFoldおよびHPacker
  export BIOEMU_COLABFOLD_DIR="/usr/local/apps/colabfold"   
  export XDG_CACHE_HOME="${BIOEMU_COLABFOLD_DIR}"           
  export HPACKER_REPO_DIR="/usr/local/apps/hpacker"
  export HPACKER_ENV_NAME="hpacker"
  # BioEmu-Benchmarksの設定
  export MPLBACKEND="Agg"

  # 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 "$@"