Skip to content

[WIP] Add GA4GH WES execution path to planemo run#1652

Open
jmchilton wants to merge 2 commits into
galaxyproject:masterfrom
jmchilton:wes
Open

[WIP] Add GA4GH WES execution path to planemo run#1652
jmchilton wants to merge 2 commits into
galaxyproject:masterfrom
jmchilton:wes

Conversation

@jmchilton

Copy link
Copy Markdown
Member

🤖 PR opened by Claude (AI assistant) on behalf of @jmchilton.

[WIP] — opening early for visibility; not ready for merge.

What

Adds a --wes flag to planemo run that submits Galaxy workflows to the target Galaxy's GA4GH WES endpoint instead of the native invocation API.

--wes is a modifier on the Galaxy execution path, not a separate engine — it reuses the existing Galaxy connection options and targets whichever server you're already pointing at (planemo-managed, or external via --galaxy_url).

planemo run tutorial.ga tutorial-job.yml --wes --galaxy_url SERVER_URL --galaxy_user_key YOUR_API_KEY

Phase 1 scope

WES has no data-staging or output-download endpoint, so initial support is intentionally limited:

  • Workflows only (not single tools).
  • Inputs must be parameters or data already on the target Galaxy ({"src": "hda", "id": ...}). Local file inputs (class: File with path/location) are rejected.
  • --download_outputs still works but downloads via the native Galaxy API (with a warning), since WES defines no download mechanism.

Run success is derived from the terminal WES state.

Changes

  • planemo/galaxy/wes.py — thin requests-only WES client (submit run, poll to terminal state) + state helpers.
  • planemo/galaxy/activity.pywes_execute / _wes_execute, param validation, polling, and WesRunResponse.
  • planemo/engine/galaxy.py — route to wes_execute when --wes is set.
  • planemo/commands/cmd_run.py--wes validation (Galaxy workflows + galaxy/external_galaxy engines only).
  • planemo/options.pywes_option.
  • docs/_running_external.rst — usage docs.
  • tests/test_wes.py — client + plumbing tests.

🤖 Generated with Claude Code

jmchilton and others added 2 commits June 6, 2026 16:02
--wes submits Galaxy workflows to the target Galaxy's WES endpoint instead
of the native invocation API. Works for both planemo-managed and external
(--galaxy_url) Galaxy servers, reusing the existing Galaxy connection options.

Phase 1 scope: workflows only; inputs must be params or data already on the
target Galaxy (local file inputs rejected - WES has no staging endpoint).
Output download still goes through the native Galaxy API with a warning.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- Document WES as a GA4GH compatibility checkbox; native execute is more
  functional/performant.
- Drop dead workflow-type detection (Galaxy ignores workflow_type for
  gxworkflow:// refs); use a constant placeholder.
- Reuse io.wait_on for WES polling (add back-compatible interval kwarg);
  remove hand-rolled loop.
- Stop conflating WES state with Galaxy invocation_state: leave Galaxy
  states untracked, surface wes_state separately in invocation details.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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.

1 participant