Skip to content

FLASHApp 1.1.0: FLASHAnnotator step, current FLASHTnT/FLASHDeconv, Lysate/Native presets - #104

Open
t0mdavid-m wants to merge 4 commits into
developfrom
claude/project-thread-rgd897
Open

t0mdavid-m wants to merge 4 commits into
developfrom
claude/project-thread-rgd897

Conversation

@t0mdavid-m

@t0mdavid-m t0mdavid-m commented Oct 23, 2026 •

Copy link
Copy Markdown
Member

Requested by Tom · project thread

Updates the deployment to the FLASH* tools on t0mdavid-m/OpenMS FDmerge and adds FLASHAnnotator as the source of fragment ion annotations. Version is now 1.1.0.

Pipeline (TagWorkflow.execution)

  1. DecoyDatabase, only when needed: it is skipped when the FASTA already has DECOY_ entries or the database is PEFF. FLASHTnT now requires decoys.
  2. FLASHDeconv.
  3. FLASHTnT with -db and -in_raw. If FLASHTnT writes no protein or tag output, header-only TSVs are written so parsing and the viewer still work.
  4. FLASHAnnotator on the raw mzML plus the FLASHTnT proteoform file (-out, -out_annotation), using FLASHTnT's ion_type.

Each TOPP call now checks run_topp's return value, and execution() returns False when inputs are missing.

Configure

  • New FLASHAnnotator tab.
  • FLASHTnT's fd: section is hidden because the FLASHDeconv tab already covers it. This relies on the section-prefix exclude_parameters from streamlit-template #413, cherry-picked as the first commit.
  • Presets for the FLASHTnT workflow: Lysate (FLASHTnT native off, i.e. the default search) and Native (native on).
  • FLASHTnT's and FLASHAnnotator's boolean parameters (native, keep_decoy, tag:allow_gap, …) are valueless flags. They are now declared as flag_parameters. Before, switching one on passed -native true, and FLASHTnT aborts with "Trailing text argument(s) '[true]'". On develop only three were declared; the other eight would fail the same way.

Parsing and viewer

  • New src/parse/annotator.py. It converts FLASHAnnotator's terminal and internal envelopes into fragments in database-sequence coordinates, plus a per-proteoform summary. Both are stored in the sequence-data parquet as annotated_fragments / annotation_summary, and the schema is extended for them.
  • Manual upload accepts the two FLASHAnnotator outputs as optional files.
  • js-component/dist is rebuilt from Sequence view: FLASHAnnotator fragments and internal-ion visualization t0mdavid-m/openms-streamlit-vue-component#32, which adds the internal-ion visualization in the Sequence View. The Docker image builds the Vue bundle from FVdeploy, so that PR has to be merged before the deployed image includes it.

Deployment, version and data

  • Dockerfile and Dockerfile.arm: OPENMS_BRANCH changed from FVdeploy to FDmerge.
  • Version 1.0.1 → 1.1.0 in settings.json and in the Windows build name.
  • Added 8 new E. coli example spectra (ADHE, AqpZ, GapA, MALE, OMPA, OMPF, OMPX, TSX) and removed the old AqpZ demo spectrum. With the bundled E. coli database, each one identifies its target protein.
  • polars>=1.0,<2. Version 2.0 removed with_row_count, which broke parsing on a fresh install; the code now uses with_row_index.
  • The user guide documents the database, the three configure tabs, FLASHAnnotator and the internal-ion view.

Not changed: example-data/workspaces/default/flashtnt/cache still holds old results. The viewer reads <workspace>/cache, not that folder, so nothing uses it.

Testing

  • pytest tests/: 181 passed, including the new tests/test_annotator_parse.py.
  • pylint --errors-only: no new errors. The remaining ones are in files this PR doesn't touch, or are pyopenms name lookups that depend on the environment.
  • Ran the full pipeline on all 8 examples with tools built from FDmerge, and checked the FLASHTnT viewer (default layout) in headless Chromium.
  • FLASHTnT … -native runs; -native true aborts, which is what the flag declaration fixes.

🤖 Generated with Claude Code

https://claude.ai/code/session_01P4MTpJCZMdSHNRFixkxcnz

t0mdavid-m and others added 2 commits October 23, 2026 13:10
… ':' (#413)

A pattern such as "fd:" now selects every parameter under that top-level
section, so a workflow can hide a subsection that does not apply to it
without listing each parameter. Plain names keep their suffix matching.

Claude-Session: https://claude.ai/code/session_01P4MTpJCZMdSHNRFixkxcnz

Co-authored-by: Claude <noreply@anthropic.com>
(cherry picked from commit bf361e58baf6768d116d9abdc2aa95542ae404e6)
Pipeline (TagWorkflow): DecoyDatabase (skipped when the FASTA already has
decoys or is PEFF) -> FLASHDeconv -> FLASHTnT (-db, -in_raw) ->
FLASHAnnotator on the proteoform file. Every TOPP step is gated on success.

- configure(): FLASHAnnotator tab; FLASHTnT's fd: section excluded (the
  FLASHDeconv tab already covers it); FLASHTnT ion types passed on to
  FLASHAnnotator.
- New src/parse/annotator.py: FLASHAnnotator fragments (terminal and
  internal) in database coordinates, plus per-proteoform summary; stored
  as annotated_fragments / annotation_summary in sequence data.
- Manual upload accepts the FLASHAnnotator outputs.
- New example datasets (8 E. coli top-down spectra) replace the AqpZ demo.
- Docker: build OpenMS from FDmerge.
- polars pinned <2 (2.0 removed with_row_count); with_row_index used.
- Vue bundle rebuilt with the sequence-view internal-ion visualization.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P4MTpJCZMdSHNRFixkxcnz
@coderabbitai

coderabbitai Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Important

  • 🔍 Trigger review

This repository does not receive automatic reviews because it has fewer than 10 stars.

⚙️ Run configuration
  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 112b885c-dd8d-48b1-aafb-b8b3c10ec978
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@t0mdavid-m t0mdavid-m self-assigned this Oct 23, 2026
- presets.json: "Lysate" and "Native" for the FLASHTnT workflow (FLASHTnT
  -native off/on).
- FLASHTnT and FLASHAnnotator bool parameters are valueless flags; they are
  now declared as flag_parameters. Without it, switching one on passed
  "-native true", which FLASHTnT aborts on.
- Version 1.0.1 -> 1.1.0 (settings.json, Windows build name).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P4MTpJCZMdSHNRFixkxcnz
@t0mdavid-m t0mdavid-m changed the title FLASHTnT: add FLASHAnnotator step, update to current FLASHTnT/FLASHDeconv FLASHApp 1.1.0: FLASHAnnotator step, current FLASHTnT/FLASHDeconv, Lysate/Native presets Oct 23, 2026
FDmerge's create_cpp_extension.py still passes include_boost, which
autowrap 0.24 removed ("generate_code() got an unexpected keyword argument
'include_boost'" in make pyopenms). 0.23.0 is the version FDmerge's own
requirements history pins and what this Dockerfile used before the 0.24
bump; the Cython < 3.3 cap still applies.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01P4MTpJCZMdSHNRFixkxcnz
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants