New Search "Include taxonomy columns" toggle¶
Motivation¶
Issue #29 item #4. The
New Search Output-format control is an integer dropdown (form.outfmt: number)
and cannot express a field-level specifier, so a researcher who wanted the
subject taxid / scientific name columns had to hand-write
additional_options with the exact -outfmt 7 std staxids sscinames string and
know the YAML-quoting hazard. The multi-token outfmt runtime is now verified
end-to-end live (elb-openapi 4.22; see the finalizer rebuild note), so the UI can
expose it safely.
User-facing change¶
- The Algorithm Parameters section now has an "Include taxonomy columns (taxid + scientific name)" checkbox under Output format.
- When checked:
- It forces the Output format to
7 — Tabular + comments(and disables the dropdown, since the format is now fixed) so the visible format matches the emitted specifier. - The submit emits the verified canonical UNQUOTED specifier
-outfmt 7 std staxids sscinamesviaadditional_options.stdleads so theqseqidcolumn stays first (the shard merge groups by qseqid). - The integer
outfmtfield is omitted from the request so the options string carries exactly one-outfmtflag — a double flag would make the shard merge's parser read only the leading code and drop the staxids / sscinames columns. - A user-supplied
-outfmtin additional_options still wins (the helper de-dupes on the flag), so power users keep full control. - Works with sharding: the merged result keeps the extended
# Fields:header (taxid + scientific name reach the dashboard Scientific Name column / Taxonomy tab). Requires a database that ships taxonomy data (e.g.core_nt).
API / IaC diff summary¶
- web/src/pages/blastSubmitModel.ts
— new
outfmt_taxonomy_columns: booleanform field (defaultfalse). - web/src/pages/blastSubmit/AlgorithmParametersSection.tsx — the toggle checkbox; disables the Output-format dropdown when on.
- web/src/pages/blastSubmit/useSubmitMutation.ts
—
buildEffectiveAdditionalOptionsappends-outfmt 7 std staxids sscinameswhen the toggle is on; the submit request sendsoutfmt: undefinedin that case. - No backend behaviour change — the internal submit already accepts the
multi-token specifier via
additional_optionsand omits-outfmtwhen theoutfmtfield is absent. No IaC change.
Validation evidence¶
cd web && npm test -- --run src/pages/blastSubmit/taxonomyOutfmt.test.ts— 3 passed (off → no-outfmt; on → canonical unquoted specifier; user-outfmtnot doubled).cd web && npm test -- --run src/pages/blastSubmit/— 203 passed.cd web && npm run build— clean.uv run pytest -q api/tests/test_blast_config_sharding.py— 49 passed (newtest_taxonomy_columns_path_omits_integer_outfmt_field: omitted integeroutfmt+ multi-tokenadditional_options→ exactly one-outfmt, sharding gate engages).- The emitted
-outfmt 7 std staxids sscinameswire format is the same one verified live end-to-end onelb-cluster-01(merged# Fields:header carriedsubject tax ids/subject sci names, taxid562/Escherichia coli).