Skip to content

feat: Add GUI, Windows installer, and Docker web server deployment#101

Open
RalfG wants to merge 10 commits into
release/4.0from
feat/gui
Open

feat: Add GUI, Windows installer, and Docker web server deployment#101
RalfG wants to merge 10 commits into
release/4.0from
feat/gui

Conversation

@RalfG

@RalfG RalfG commented Jul 1, 2026

Copy link
Copy Markdown
Member

feat: Add GUI, Windows installer, and Docker web server deployment

Adds a NiceGUI-based graphical interface, a Windows installer, and a Docker image for server deployment, building on the v4 API refactor.

Changes

  • GUI (deeplc gui): NiceGUI web interface for file upload, prediction, calibration, and results download. Optional native desktop window via --native flag (pywebview).
  • predict_and_calibrate() and finetune_and_predict(): new core functions with optional automatic calibration reference selection from input PSMs.
  • Windows installer: PyInstaller + Inno Setup, built and uploaded via the publish workflow.
  • Docker image: pushed to GHCR, installs from wheel using [web] extra (no pywebview).
  • Publish workflow: builds and tests installer and Docker image; supports dry_run dispatch input (default: true) to validate CI without publishing.
  • Tests: reference selection logic and predict_and_calibrate().

Trying the GUI

Browser (any platform):

pip install "deeplc[gui]"
deeplc gui
# Opens at http://localhost:8080

Native desktop window (Windows/macOS):

deeplc gui --native

Windows installer: Download DeepLC-<version>-Windows64bit.exe from the release assets and run it. Creates a Start Menu and optional desktop shortcut that launch the native window.

Docker (web server):

docker run -p 8080:8080 ghcr.io/compomics/deeplc:latest
# Open http://localhost:8080

RalfG added 8 commits April 13, 2026 14:27
Add NiceGUI-based web interface with dark mode support, file upload
with temp file cleanup, prediction visualization, and baseline
comparison plots. Inline psm_utils read_file to avoid cross-module
import. Use semantic CSS classes for dark-mode-aware text colors.

CLI improvements: swap short flags (-r for --reference, -rt for
--reference-filetype) and add callback validation for --finetune.
Add automatic reference PSM selection for calibration from the input
file itself, using q-values, target-decoy competition, or top scores.
Expose as --auto-calibrate CLI flag and radio toggle in GUI.

GUI improvements: dark mode, WebGL scatter plots with target/decoy
coloring, MAE/RMAE metrics on accepted targets, inline error display,
calibration mode selector, input format documentation, and smooth
scroll to results.
- Add NiceGUI-based web UI with file upload, prediction, calibration, and results download
- Add --native flag to launch as desktop window via pywebview
- Bundle DeepLC logo as package data; serve as static file and favicon
- Fix stdout/stderr for console=False PyInstaller builds (redirect to devnull)
- Add [gui] and [web] optional dependency groups
- Add Dockerfile for containerized web server deployment using [web] extra
- Add test_reference_selection.py covering filter_targets_with_rt, select_by_qvalue,
  select_by_score, and select_reference_psms dispatch logic
- Add test_core.py covering predict_and_calibrate with explicit and auto reference selection
- Fix None score/qvalue guards in _reference_selection.py
- Rewrite deeplc.spec: collect_all loop over all dependencies, explicit onnx2torch
  collection, console=False with app icon
- Remove legacy deeplc_pyinstaller.spec
- Update deeplc_innosetup.iss: add setup icon, launch with --native flag
…y-run mode

- Build and test Windows installer via PyInstaller + InnoSetup
- Build Docker image from wheel artifact (avoids PyPI propagation delay)
- Push to GHCR; run smoke test against published image
- Add dry_run workflow_dispatch input (default: true) to test full pipeline
  without publishing to PyPI, GHCR, or GitHub releases
@RalfG RalfG requested a review from paretje July 1, 2026 17:50
@RalfG

RalfG commented Jul 1, 2026

Copy link
Copy Markdown
Member Author

@paretje, can you check if anything else is necessary here for deploying the new GUI on our cluster, replacing the old streamlit app?

@RalfG RalfG added enhancement New feature or request packaging Everything related to packaging and publishing GUI Issues and PRs around GUI dependencies Pull requests that update a dependency file v4 labels Jul 1, 2026
@RalfG RalfG added this to the 4.0.0 milestone Jul 1, 2026
@RalfG RalfG requested a review from RobbinBouwmeester July 1, 2026 17:51
@RalfG RalfG changed the title Feat/gui feat: Add GUI, Windows installer, and Docker web server deployment Jul 1, 2026
@paretje

paretje commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

No, not really, I think this should be fine. I just need to change the proxy configuration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file enhancement New feature or request GUI Issues and PRs around GUI packaging Everything related to packaging and publishing v4

Development

Successfully merging this pull request may close these issues.

2 participants