max-seqs parameter#57
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces the ability to configure the mmseqs2 --max-seqs parameter, allowing users to control the maximum number of similar clonotypes examined per sequence or remove the limit entirely to improve recall. It updates the data model, UI (adding a checkbox and number field), and Tengo workflow templates to propagate and apply this parameter. Additionally, several SDK and internal dependencies are updated. A review comment points out that maxSeqs is hardcoded to 10000 when initializing the block data model from existing arguments, which ignores any previously saved value.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
Allow to configure mmseqs2 --max-seqs parameter to improve recall res…ults
Greptile Summary
This PR introduces a configurable
--max-seqsparameter for MMseqs2 to improve recall when many highly similar clonotypes exist. The value is exposed in the UI as both a numeric field and a "Find all matching clonotypes" checkbox (which stores0as a sentinel that the workflow converts to 1,000,000,000).BlockData/BlockArgs:maxSeqs?: numberadded toBlockData(optional, for existing-data compat) andmaxSeqs: numberadded toBlockArgs(required, always has a concrete value by the time args are projected). Theargs()projection pins it to10000in exact-match mode and applies a?? 10000fallback otherwise.main.tpl.tengopassesargs.maxSeqstoanalysis.tpl.tengo, which forwards it to both MMseqs2 chunk invocations inrun-alignment.tpl.tengo; the run-alignment template handles the<= 0sentinel by substituting 1,000,000,000.@platforma-sdkand@milaboratoriespackages are bumped to recent patch/minor versions, andbuild:dev-remoteconvenience script is added topackage.json.Confidence Score: 4/5
The max-seqs plumbing is correct end-to-end and the 0-sentinel for no-limit is handled consistently in the workflow; the only roughness is a missing upper bound on the manual number field in the UI.
The feature is well-scoped: the new field is optional in BlockData (backward-compatible with existing saved data), always resolved to a concrete number before reaching the workflow, and the ≤ 0 sentinel is reliably converted to 1 billion inside run-alignment. Both MMseqs2 chunk invocations receive the same value. The one gap is the PlNumberField having no max-value constraint, meaning a user typing a very large number manually bypasses the intended Find all matching clonotypes checkbox path, though it produces no incorrect computation.
ui/src/pages/MainPage.vue — the PlNumberField for maxSeqs lacks a max-value, making the numeric input and the no-limit checkbox partially redundant for large values.
Important Files Changed
Sequence Diagram
%%{init: {'theme': 'neutral'}}%% sequenceDiagram participant UI as MainPage.vue participant Model as model/index.ts participant Main as main.tpl.tengo participant Analysis as analysis.tpl.tengo participant RunAlign as run-alignment.tpl.tengo participant MMseqs2 UI->>UI: maxSeqsNoLimit checkbox (stores 0 for no-limit) UI->>Model: "data.maxSeqs (0 | number | undefined)" Model->>Model: args() projection exact? 10000 : (maxSeqs ?? 10000) Model->>Main: BlockArgs.maxSeqs (number) Main->>Analysis: maxSeqs: args.maxSeqs Analysis->>RunAlign: maxSeqs (chunk 1) Analysis->>RunAlign: maxSeqs (chunk 2) RunAlign->>RunAlign: "if maxSeqs <= 0 → 1_000_000_000" RunAlign->>MMseqs2: --max-seqs value%%{init: {'theme': 'base', 'themeVariables': {"darkMode": true, "background": "#0d1117", "primaryColor": "#21262d", "primaryTextColor": "#e6edf3", "primaryBorderColor": "#8b949e", "lineColor": "#8b949e", "textColor": "#e6edf3", "edgeLabelBackground": "#161b22", "actorBkg": "#21262d", "actorBorder": "#8b949e", "actorTextColor": "#e6edf3", "actorLineColor": "#8b949e", "signalColor": "#8b949e", "signalTextColor": "#e6edf3", "noteBkgColor": "#373320", "noteBorderColor": "#d4a72c", "noteTextColor": "#f0e6c0", "labelBoxBkgColor": "#21262d", "labelBoxBorderColor": "#8b949e", "labelTextColor": "#e6edf3", "loopTextColor": "#e6edf3", "activationBkgColor": "#30363d", "activationBorderColor": "#8b949e"}}}%% sequenceDiagram participant UI as MainPage.vue participant Model as model/index.ts participant Main as main.tpl.tengo participant Analysis as analysis.tpl.tengo participant RunAlign as run-alignment.tpl.tengo participant MMseqs2 UI->>UI: maxSeqsNoLimit checkbox (stores 0 for no-limit) UI->>Model: "data.maxSeqs (0 | number | undefined)" Model->>Model: args() projection exact? 10000 : (maxSeqs ?? 10000) Model->>Main: BlockArgs.maxSeqs (number) Main->>Analysis: maxSeqs: args.maxSeqs Analysis->>RunAlign: maxSeqs (chunk 1) Analysis->>RunAlign: maxSeqs (chunk 2) RunAlign->>RunAlign: "if maxSeqs <= 0 → 1_000_000_000" RunAlign->>MMseqs2: --max-seqs valuePrompt To Fix All With AI
Reviews (1): Last reviewed commit: "Allow to configure mmseqs2 --max-seqs pa..." | Re-trigger Greptile
Context used: