| #!/usr/bin/env bash |
| set -euo pipefail |
|
|
| |
| |
| |
|
|
| PROJECT_DIR="${PROJECT_DIR:-/public/home/scnb9biwet/jiangqq/CodonTransformer-main}" |
| CONDA_ENV="${CONDA_ENV:-struct-evo}" |
|
|
| TOKENIZER_PATH="${TOKENIZER_PATH:-${PROJECT_DIR}/model/src/CodonTransformerTokenizer.json}" |
| MODEL_PATH="${MODEL_PATH:-${PROJECT_DIR}/weight/checkpoints/finetune/finetuned_model.pt}" |
| PROTEIN="${PROTEIN:-MFWY}" |
| ORGANISM="${ORGANISM:-Escherichia coli general}" |
| MATCH_PROTEIN="${MATCH_PROTEIN:-1}" |
|
|
| cd "${PROJECT_DIR}" |
|
|
| export PYTHONPATH="${PROJECT_DIR}/model:${PYTHONPATH:-}" |
| export TOKENIZER_PATH |
| export MODEL_PATH |
| export PROTEIN |
| export ORGANISM |
| export MATCH_PROTEIN |
| export PYTHONFAULTHANDLER=1 |
|
|
| if [[ -n "${CONDA_ENV}" ]] && command -v conda >/dev/null 2>&1; then |
| |
| source "$(conda info --base)/etc/profile.d/conda.sh" |
| conda activate "${CONDA_ENV}" |
| fi |
|
|
| if [[ ! -f "${TOKENIZER_PATH}" ]]; then |
| echo "Missing TOKENIZER_PATH: ${TOKENIZER_PATH}" >&2 |
| exit 1 |
| fi |
|
|
| if [[ ! -f "${MODEL_PATH}" ]]; then |
| echo "Missing MODEL_PATH: ${MODEL_PATH}" >&2 |
| exit 1 |
| fi |
|
|
| python - <<'PY' |
| import os |
|
|
| import torch |
|
|
| from CodonTransformer.CodonJupyter import format_model_output |
| from CodonTransformer.CodonPrediction import predict_dna_sequence |
|
|
| device = torch.device("cuda" if torch.cuda.is_available() else "cpu") |
| match_protein = os.environ.get("MATCH_PROTEIN", "1") == "1" |
|
|
| print(f"Device: {device}") |
| print(f"Tokenizer: {os.environ['TOKENIZER_PATH']}") |
| print(f"Model: {os.environ['MODEL_PATH']}") |
|
|
| output = predict_dna_sequence( |
| protein=os.environ["PROTEIN"], |
| organism=os.environ["ORGANISM"], |
| device=device, |
| tokenizer=os.environ["TOKENIZER_PATH"], |
| model=os.environ["MODEL_PATH"], |
| attention_type="original_full", |
| deterministic=True, |
| match_protein=match_protein, |
| ) |
|
|
| print(format_model_output(output)) |
| PY |
|
|