#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" cd "${PROJECT_ROOT}" ESM_WEIGHT_DIR="${ESM_WEIGHT_DIR:-${PROJECT_ROOT}/weight}" ESM_OUTPUT_DIR="${ESM_OUTPUT_DIR:-${PROJECT_ROOT}/outputs}" ESM_FASTA="${ESM_FASTA:-${PROJECT_ROOT}/data/fasta/few_proteins.fasta}" ESM2_8M_WEIGHT="${ESM2_8M_WEIGHT:-${ESM_WEIGHT_DIR}/esm2_t6_8M_UR50D.pt}" mkdir -p "${ESM_OUTPUT_DIR}" if [[ ! -f "${ESM2_8M_WEIGHT}" ]]; then echo "Missing ${ESM2_8M_WEIGHT}" echo "Run: bash scripts/download_weights.sh ${ESM_WEIGHT_DIR}" exit 1 fi python scripts/extract.py \ "${ESM2_8M_WEIGHT}" \ "${ESM_FASTA}" \ "${ESM_OUTPUT_DIR}/embeddings" \ --include mean per_tok \ --repr_layers 6 if [[ "${RUN_ESMFOLD:-0}" == "1" ]]; then python scripts/fold.py \ -i "${ESM_FASTA}" \ -o "${ESM_OUTPUT_DIR}/pdb" \ --model-dir "${ESM_WEIGHT_DIR}" \ --cpu-only fi if [[ "${RUN_VARIANT_PREDICTION:-0}" == "1" ]]; then python scripts/variant_prediction/predict.py \ --model-location "${ESM_WEIGHT_DIR}/esm1v_t33_650M_UR90S_1.pt" \ --sequence "${ESM_VARIANT_SEQUENCE:?Set ESM_VARIANT_SEQUENCE}" \ --dms-input data/variant_prediction/BLAT_ECOLX_Ranganathan2015.csv \ --mutation-col mutant \ --dms-output "${ESM_OUTPUT_DIR}/variant_prediction.csv" \ --offset-idx 24 \ --scoring-strategy wt-marginals fi