From f2ae7f02c59366b32bcc24634cbb4b6825ff4324 Mon Sep 17 00:00:00 2001 From: Kim Yang Date: Sun, 1 Mar 2026 14:58:42 +0800 Subject: [PATCH] Enable GPU-accelerated translated search (blastx, tblastn, tblastx) Pass GPU and MAKEPADDEDSEQDB_PAR variables to the translated search workflow. When GPU is enabled and the target is nucleotide, automatically create a padded database from the translated ORFs before the inner protein search. Co-Authored-By: Claude Opus 4.6 --- data/workflow/translated_search.sh | 14 ++++++++++++++ src/workflow/Search.cpp | 2 ++ 2 files changed, 16 insertions(+) diff --git a/data/workflow/translated_search.sh b/data/workflow/translated_search.sh index f39c5978f..49e2f51f8 100755 --- a/data/workflow/translated_search.sh +++ b/data/workflow/translated_search.sh @@ -58,6 +58,14 @@ if [ -n "$NO_TARGET_INDEX" ]; then fi TARGET="${TMP_PATH}/t_orfs_aa" TARGET_ORF="${TMP_PATH}/t_orfs_aa" + if [ -n "$GPU" ]; then + if notExists "${TMP_PATH}/t_orfs_aa_pad.dbtype"; then + # shellcheck disable=SC2086 + "$MMSEQS" makepaddedseqdb "${TMP_PATH}/t_orfs_aa" "${TMP_PATH}/t_orfs_aa_pad" ${MAKEPADDEDSEQDB_PAR} \ + || fail "makepaddedseqdb target ORFs died" + fi + TARGET="${TMP_PATH}/t_orfs_aa_pad" + fi fi fi @@ -96,6 +104,12 @@ if [ -n "$REMOVE_TMP" ]; then "$MMSEQS" rmdb "${TMP_PATH}/q_orfs_aa" ${VERBOSITY} # shellcheck disable=SC2086 "$MMSEQS" rmdb "${TMP_PATH}/t_orfs_aa" ${VERBOSITY} + if [ -f "${TMP_PATH}/t_orfs_aa_pad.dbtype" ]; then + # shellcheck disable=SC2086 + "$MMSEQS" rmdb "${TMP_PATH}/t_orfs_aa_pad" ${VERBOSITY} + # shellcheck disable=SC2086 + "$MMSEQS" rmdb "${TMP_PATH}/t_orfs_aa_pad_h" ${VERBOSITY} + fi # shellcheck disable=SC2086 "$MMSEQS" rmdb "${TMP_PATH}/aln" ${VERBOSITY} if [ -n "${REFERENCE_FILTER}" ]; then diff --git a/src/workflow/Search.cpp b/src/workflow/Search.cpp index 0e5ef3c43..7696f7802 100644 --- a/src/workflow/Search.cpp +++ b/src/workflow/Search.cpp @@ -588,6 +588,8 @@ int search(int argc, const char **argv, const Command& command) { } else { cmd.addVariable("ORF_PAR", par.createParameterString(par.extractorfs).c_str()); } + cmd.addVariable("GPU", par.gpu ? "TRUE" : NULL); + cmd.addVariable("MAKEPADDEDSEQDB_PAR", par.createParameterString(par.makepaddedseqdb).c_str()); cmd.addVariable("SEARCH", program.c_str()); program = std::string(tmpDir + "/translated_search.sh"); FileUtil::writeFile(program.c_str(), translated_search_sh, translated_search_sh_len);