Skip to content

OpenDDA: LFQ/TMT quickstart, decoy detection, PSM FDR level, installer link - #34

Draft
t0mdavid-m wants to merge 3 commits into
mainfrom
claude/project-thread-vf13ba
Draft

t0mdavid-m wants to merge 3 commits into
mainfrom
claude/project-thread-vf13ba

Conversation

@t0mdavid-m

@t0mdavid-m t0mdavid-m commented Sep 27, 2026 •

Copy link
Copy Markdown
Member

Requested by Tom · project thread

Before: the quickstart described only label-free quantification. The "Download for Windows" button served the streamlit-template installer, because the Docker images pulled OpenMS-App.zip from streamlit-template releases. Fragment tolerance could only be entered to two decimals. Local installs showed the browser upload widget. Decoy generation was always on, even for FASTA files that already contain decoys. The PSM FDR could only be set through IDFilter's raw score fields.

After:

  • Quickstart and app name present OpenDDA with LFQ and TMT workflows side by side.
  • Installer: all four Dockerfiles download from OpenMS/quantms-web releases (the OpenDDA-* releases carry OpenMS-App.zip). repository-name and the Windows Readme link point at quantms-web.
  • Decoys: "Generate Decoy Database" stays on by default, but turns off when the selected FASTA already has DECOY_, decoy_, rev_, REV_, XXX_ or reversed_ entries. The detected prefix becomes Comet's decoy_string. This happens once per database, so a user's own choice is kept. TMT Percolator and ProteinInference now receive the upstream decoy string as well; before, they hard-coded DECOY_ while the generated decoys used rev_.
  • New PSM FDR level (%) setting on the Filtering tab (LFQ and TMT). It sets IDFilter's q-value cutoff, and at 100% the filter is skipped so PSMs pass through unfiltered. The default is 1%; the previous IDFilter default was 10%. The ProteomicsLFQ and protein-level FDRs keep their own settings.
  • Ported from Full-precision float inputs; local installs pick files from disk streamlit-template#405: full-precision float inputs and local-only file picking.

The Abundance page's duplicated tab row, which made the PSM tab show the "Protein-Level" heading, is fixed in #36. That PR rewrites the page, so this PR leaves content/results_abundance.py alone to avoid a conflict. Both PRs share src/WorkflowTest.py, so whichever merges second may need a merge from main.

How: decoy detection is a cached scan of the FASTA headers (detect_decoy_prefix). apply_decoy_default() runs from configure(), and the FASTA selector is now reactive so it follows changes. filter_psms() wraps IDFilter for both modes.

Notes: repository-name also names the local workspace folder, which moves from ../workspaces-streamlit-template to ../workspaces-quantms-web. Workspaces from earlier local runs will not show up automatically.

Tests: python -m pytest test_gui.py tests/ passes (102). The upload and configure pages render under AppTest. Decoy auto-detection was checked with a FASTA containing DECOY_ entries: the checkbox turns off, decoy_string is set to DECOY_, and a later manual override is kept.

🤖 Generated with Claude Code

https://claude.ai/code/session_01C37vTrifAfq9uazSL7UUAR

…r link

- Quickstart presents OpenDDA with both LFQ and TMT workflows; app-name
  is now OpenDDA.
- Abundance page: remove the stray, empty tab row above the real tabs,
  which left the PSM tab showing the protein-level table heading.
- Installer: Docker images download OpenMS-App.zip from quantms-web
  releases instead of streamlit-template; repository-name and the
  Windows Readme link point at quantms-web.
- Decoys: generation stays on by default, but is switched off (once per
  selected database) when the FASTA already has DECOY_/rev_/... entries,
  and the detected prefix becomes Comet's decoy_string. TMT Percolator
  and ProteinInference now receive the upstream decoy string too.
- New "PSM FDR level (%)" setting drives IDFilter's q-value cutoff in
  LFQ and TMT; 100% skips the filter and passes PSMs through.
- Port from streamlit-template: full-precision float inputs (%g) and
  local-only file picking on local installs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C37vTrifAfq9uazSL7UUAR
@t0mdavid-m t0mdavid-m self-assigned this Sep 27, 2026
#36 rewrites content/results_abundance.py for insight tables and removes
the same duplicated tab row, so this PR no longer touches the file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C37vTrifAfq9uazSL7UUAR
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01C37vTrifAfq9uazSL7UUAR
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