GenScore / scripts /run_genscore_benchmarks.sh
anzhi2710gmailcom's picture
Upload folder using huggingface_hub
9d6a2a3 verified
Raw
History Blame Contribute Delete
5 kB
#!/usr/bin/env bash
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
ROOT_DIR="$(cd "${SCRIPT_DIR}/../../.." && pwd)"
cd "${ROOT_DIR}"
if [[ -n "${ROCM_PATH:-}" && -f "${ROCM_PATH}/cuda/env.sh" ]]; then
source "${ROCM_PATH}/cuda/env.sh"
fi
source "${ROOT_DIR}/env.sh"
export PYTHONPATH="${ROOT_DIR}/src:${PYTHONPATH:-}"
if [[ -n "${CONDA_PREFIX:-}" ]]; then
export LD_LIBRARY_PATH="${CONDA_PREFIX}/lib:${CONDA_PREFIX}/lib/python3.11/site-packages/torch/lib:${CONDA_PREFIX}/lib/python3.11/site-packages/fastpt/torch/lib:${LD_LIBRARY_PATH:-}"
fi
if [[ -n "${ROCM_PATH:-}" && -d "${ROCM_PATH}/opencl/lib" ]]; then
export LD_LIBRARY_PATH="${ROCM_PATH}/opencl/lib:${LD_LIBRARY_PATH:-}"
fi
TASK="${1:-all}"
GENSCORE_DIR="$(cd "${SCRIPT_DIR}/.." && pwd)"
BENCHMARK_DIR="${GENSCORE_DIR}/benchmarks"
MODEL_PATH="${MODEL_PATH:-${ONESCIENCE_DATASETS_DIR}/GenScore/trained_models/GatedGCN_ft_1.0_1.pth}"
OUT_ROOT="${OUT_ROOT:-${GENSCORE_DIR}/benchmark_outputs}"
GENSCORE_DATA_ROOT="${GENSCORE_DATA_ROOT:-${ONESCIENCE_DATASETS_DIR}/GenScore/genscore_data}"
CASF_DIR="${CASF_DIR:-${GENSCORE_DATA_ROOT}/CASF-2016}"
PDBBIND_DIR="${PDBBIND_DIR:-${GENSCORE_DATA_ROOT}/PDBbind_v2020}"
PDBBIND_NATIVE_LIGAND_DIR="${PDBBIND_NATIVE_LIGAND_DIR:-${PDBBIND_DIR}/mol2}"
PDBBIND_REFINED_SUBDIR="${PDBBIND_REFINED_SUBDIR:-refined-set}"
PDBBIND_OTHER_PL_SUBDIR="${PDBBIND_OTHER_PL_SUBDIR:-v2020-other-PL}"
CASF_PREPROCESSED_DIR="${CASF_PREPROCESSED_DIR:-${GENSCORE_DATA_ROOT}/rtmscore_s}"
CASF_TEST_PREFIX="${CASF_TEST_PREFIX:-v2020_casf}"
CASF_CORESET_FILE="${CASF_CORESET_FILE:-${CASF_PREPROCESSED_DIR}/v2020_casf_coreset.csv}"
ENCODER="${ENCODER:-gatedgcn}"
CUTOFF="${CUTOFF:-10.0}"
BATCH_SIZE="${BATCH_SIZE:-128}"
NUM_WORKERS="${NUM_WORKERS:-0}"
OUTPREFIX="${OUTPREFIX:-gatedgcn1x5}"
require_dir() {
local name="$1"
local path="$2"
if [[ ! -d "${path}" ]]; then
echo "Missing required directory ${name}: ${path}" >&2
exit 1
fi
}
require_file() {
local name="$1"
local path="$2"
if [[ ! -f "${path}" ]]; then
echo "Missing required file ${name}: ${path}" >&2
exit 1
fi
}
run_scoring_ranking() {
require_dir "CASF_PREPROCESSED_DIR" "${CASF_PREPROCESSED_DIR}"
require_file "CASF_CORESET_FILE" "${CASF_CORESET_FILE}"
require_file "MODEL_PATH" "${MODEL_PATH}"
echo "[run] CASF-2016 scoring/ranking"
python "${BENCHMARK_DIR}/casf2016_scoring_ranking.py" \
--data-dir "${CASF_PREPROCESSED_DIR}" \
--test-prefix "${CASF_TEST_PREFIX}" \
--coreset-file "${CASF_CORESET_FILE}" \
--model-path "${MODEL_PATH}" \
--encoder "${ENCODER}" \
--cutoff "${CUTOFF}" \
--batch-size "${BATCH_SIZE}" \
--num-workers "${NUM_WORKERS}" \
--outprefix "${OUTPREFIX}" \
--outdir "${OUT_ROOT}/power_ranking/examples"
echo "[done] CASF-2016 scoring/ranking"
}
run_docking() {
require_dir "CASF_DIR" "${CASF_DIR}"
require_dir "PDBBIND_DIR" "${PDBBIND_DIR}"
require_dir "PDBBIND_NATIVE_LIGAND_DIR" "${PDBBIND_NATIVE_LIGAND_DIR}"
require_dir "PDBbind refined subset" "${PDBBIND_DIR}/${PDBBIND_REFINED_SUBDIR}"
require_dir "PDBbind other-PL subset" "${PDBBIND_DIR}/${PDBBIND_OTHER_PL_SUBDIR}"
require_file "MODEL_PATH" "${MODEL_PATH}"
echo "[run] CASF-2016 docking"
python "${BENCHMARK_DIR}/casf2016_docking.py" \
--casf-dir "${CASF_DIR}" \
--pdbbind-dir "${PDBBIND_DIR}" \
--native-ligand-dir "${PDBBIND_NATIVE_LIGAND_DIR}" \
--refined-subdir "${PDBBIND_REFINED_SUBDIR}" \
--other-pl-subdir "${PDBBIND_OTHER_PL_SUBDIR}" \
--model-path "${MODEL_PATH}" \
--encoder "${ENCODER}" \
--cutoff "${CUTOFF}" \
--batch-size "${BATCH_SIZE}" \
--num-workers "${NUM_WORKERS}" \
--outprefix "${OUTPREFIX}" \
--outdir "${OUT_ROOT}/power_docking/examples/${OUTPREFIX}"
echo "[done] CASF-2016 docking"
}
run_screening() {
require_dir "CASF_DIR" "${CASF_DIR}"
require_dir "PDBBIND_DIR" "${PDBBIND_DIR}"
require_dir "PDBbind refined subset" "${PDBBIND_DIR}/${PDBBIND_REFINED_SUBDIR}"
require_dir "PDBbind other-PL subset" "${PDBBIND_DIR}/${PDBBIND_OTHER_PL_SUBDIR}"
require_file "MODEL_PATH" "${MODEL_PATH}"
echo "[run] CASF-2016 screening"
python "${BENCHMARK_DIR}/casf2016_screening.py" \
--casf-dir "${CASF_DIR}" \
--pdbbind-dir "${PDBBIND_DIR}" \
--refined-subdir "${PDBBIND_REFINED_SUBDIR}" \
--other-pl-subdir "${PDBBIND_OTHER_PL_SUBDIR}" \
--model-path "${MODEL_PATH}" \
--encoder "${ENCODER}" \
--cutoff "${CUTOFF}" \
--batch-size "${BATCH_SIZE}" \
--num-workers "${NUM_WORKERS}" \
--outprefix "${OUTPREFIX}" \
--outdir "${OUT_ROOT}/power_screening/examples/${OUTPREFIX}"
echo "[done] CASF-2016 screening"
}
case "${TASK}" in
scoring|scoring_ranking)
run_scoring_ranking
;;
docking)
run_docking
;;
screening)
run_screening
;;
all)
run_scoring_ranking
run_docking
run_screening
;;
*)
echo "Usage: $0 [scoring|docking|screening|all]" >&2
exit 1
;;
esac