feat: add batched local MMseqs2-GPU features - #637
Draft
DimaMolod wants to merge 15 commits into
Draft
Conversation
This was referenced Sep 3, 2026
A search that returns nothing produces an MSA holding only the query. That is legitimate for an orphan sequence but is also what a misconfigured, truncated or half-built database produces, and provenance alone cannot tell them apart. - record unpairedDepth/pairedDepth in each MSA bundle - warn per protein when a bundle contains only the query, and report them in MsaBatchResult.query_only - fail the MSA stage when every protein in a shard is query-only - include the database index size in the cache signature, so a database rebuilt under the same identifier invalidates cached artifacts Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The composed feature path shares MsaBatch with the MSA-only stage but dropped its query_only report, so a zero-hit search was guarded in one entry point and silent in the other. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Which databases supply unpaired hits and which supplies paired hits was encoded as DATABASE_NAMES[:3] and a literal "uniprot", repeated in both entry points, with the per-database defaults duplicated between _mmseqs2_cli and feature_batch. Reordering the tuple would have swapped paired for unpaired: a plausible-looking MSA, silently wrong species pairing, and no error anywhere. - feature_batch owns UNPAIRED_DATABASE_NAMES, PAIRED_DATABASE_NAME, DATABASE_NAMES and DEFAULT_MAX_SEQUENCES; the duplicate default table is gone - add DatabaseSelection and database_selection(), so both entry points ask for roles by name instead of slicing - validation messages derive from the same constants Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Both entry points constructed SubprocessMmseqsProcess with the default gpu=True, so the CPU search path existed but could only be reached from tests - a site without GPUs could not use this feature at all. - add --mmseqs_use_gpu (default true) and pass it through from both entry points - rename the CPU search mode from "cpu-contract" to "cpu": it is a supported mode, not a test fixture, and it stays distinct in bundle provenance so a cached CPU result is not reused for a GPU run Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
MMseqs2 sizes its target-database splits from 90% of the physical node memory via sysconf(_SC_PHYS_PAGES), which takes no account of the cgroup a batch scheduler put it in. On a 755 GB node with --mem=64G it therefore sizes for ~680 GB, declines to split, and is OOM-killed instead. - add --mmseqs_split_memory_limit and thread it into the search command - omit the option entirely when unset, preserving today's behaviour Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
MsaBatchResult/MsaArtifactversus feature results); the compatibility facade translates between the two deep interfacesmmseqs versionScientific status
This backend remains experimental. This PR does not establish prediction-accuracy equivalence with native AF3; a representative full-database matched inference/DockQ comparison remains a merge gate.
Validation
createdb -> makepaddedseqdb -> search -> result2msa -> unpackdbthrough the production adapter/opt/mmseqs/bin/mmseqs0.fasta05c582eeCompanion workflow PR: KosinskiLab/AlphaPulldownSnakemake#54.
Related resident inference core PR: #636.