#!/bin/bash set -euo pipefail export LD_LIBRARY_PATH="$CONDA_PREFIX/lib/:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH="$CONDA_PREFIX/lib/python3.11/site-packages/fastpt/torch/lib:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH=${ROCM_PATH}/opencl/lib:$LD_LIBRARY_PATH SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) EXAMPLE_DIR=$(cd "${SCRIPT_DIR}/.." && pwd) REPO_ROOT=$(cd "${SCRIPT_DIR}/../../../.." && pwd) #source "${REPO_ROOT}/env.sh" if [[ -n "${ROCM_PATH:-}" && -f "${ROCM_PATH}/cuda/env.sh" ]]; then source "${ROCM_PATH}/cuda/env.sh" fi export PYTHONPATH="${REPO_ROOT}/src:${REPO_ROOT}:${PYTHONPATH:-}" export HIP_VISIBLE_DEVICES="${HIP_VISIBLE_DEVICES:-0}" export CUDA_VISIBLE_DEVICES="${CUDA_VISIBLE_DEVICES:-${HIP_VISIBLE_DEVICES}}" export OMP_NUM_THREADS="${OMP_NUM_THREADS:-4}" DIFFDOCK_DATA_ROOT="${DIFFDOCK_DATA_ROOT:-${ONESCIENCE_DATASETS_DIR}/diffdock}" DIFFDOCK_DATASETS_DIR="${DIFFDOCK_DATASETS_DIR:-${DIFFDOCK_DATA_ROOT}/datasets}" export TORCH_HOME="${TORCH_HOME:-${DIFFDOCK_DATA_ROOT}/torch_home}" DATASET="${DATASET:-pdbbind}" RUN_NAME="${RUN_NAME:-diffdock_${DATASET}_scnet}" LOG_DIR="${LOG_DIR:-${EXAMPLE_DIR}/outputs/train}" CACHE_PATH="${CACHE_PATH:-${EXAMPLE_DIR}/outputs/cache}" CONFIG_PATH="${CONFIG_PATH:-${LOG_DIR}/${RUN_NAME}_train_config.yml}" mkdir -p "${LOG_DIR}" "${CACHE_PATH}" LOG_DIR=$(cd "${LOG_DIR}" && pwd) CACHE_PATH=$(cd "${CACHE_PATH}" && pwd) CONFIG_DIR=$(dirname "${CONFIG_PATH}") CONFIG_NAME=$(basename "${CONFIG_PATH}") mkdir -p "${CONFIG_DIR}" CONFIG_PATH=$(cd "${CONFIG_DIR}" && pwd)/"${CONFIG_NAME}" PDBBIND_DIR="${PDBBIND_DIR:-${DIFFDOCK_DATASETS_DIR}/PDBBind_processed}" MOAD_DIR="${MOAD_DIR:-${DIFFDOCK_DATASETS_DIR}/BindingMOAD_2020_processed}" SPLIT_TRAIN="${SPLIT_TRAIN:-${DIFFDOCK_DATASETS_DIR}/splits/timesplit_no_lig_overlap_train}" SPLIT_VAL="${SPLIT_VAL:-${DIFFDOCK_DATASETS_DIR}/splits/timesplit_no_lig_overlap_val}" DEVICE="${DEVICE:-auto}" if [[ "$DEVICE" == "auto" ]]; then if python -c "import torch; print(torch.cuda.is_available())" | grep -q True; then DEVICE="cuda" else DEVICE="cpu" fi fi echo "****** DEVICE ******: $DEVICE" SEED="${SEED:-0}" BATCH_SIZE="${BATCH_SIZE:-4}" N_EPOCHS="${N_EPOCHS:-10}" LR="${LR:-0.001}" NUM_WORKERS="${NUM_WORKERS:-1}" NUM_DATALOADER_WORKERS="${NUM_DATALOADER_WORKERS:-0}" LIMIT_COMPLEXES="${LIMIT_COMPLEXES:-null}" SAVE_MODEL_FREQ="${SAVE_MODEL_FREQ:-null}" VAL_INFERENCE_FREQ="${VAL_INFERENCE_FREQ:-null}" TRAIN_INFERENCE_FREQ="${TRAIN_INFERENCE_FREQ:-null}" WANDB="${WANDB:-false}" NO_TORSION="${NO_TORSION:-false}" NO_BATCH_NORM="${NO_BATCH_NORM:-true}" PDBBIND_ESM_EMBEDDINGS_PATH="${PDBBIND_ESM_EMBEDDINGS_PATH:-}" MOAD_ESM_EMBEDDINGS_PATH="${MOAD_ESM_EMBEDDINGS_PATH:-}" MOAD_ESM_EMBEDDINGS_SEQUENCES_PATH="${MOAD_ESM_EMBEDDINGS_SEQUENCES_PATH:-}" ESM_EMBEDDINGS_MODEL="${ESM_EMBEDDINGS_MODEL:-}" yaml_value() { if [[ -z "${1:-}" || "${1}" == "null" ]]; then printf "null" else local value value=$(printf "%s" "$1" | sed "s/'/''/g") printf "'%s'" "$value" fi } yaml_bool() { if [[ "${1,,}" == "true" ]]; then printf "true" else printf "false" fi } cat > "${CONFIG_PATH}" <