Skip to content

Feat alternative generation - #114

Draft
eladrion wants to merge 29 commits into
mainfrom
feat_alternative_generation
Draft

Feat alternative generation#114
eladrion wants to merge 29 commits into
mainfrom
feat_alternative_generation

Conversation

@eladrion

@eladrion eladrion commented Jul 3, 2026

Copy link
Copy Markdown
Contributor

Overview

Changes

Testing

Checklist

  • Code follows project standards.
  • Self-reviewed and commented where needed.
  • Documentation updated if needed.
  • No new warnings or errors.

aaronstrachardt and others added 29 commits April 19, 2026 16:32
Translates node status (Keep/Ban/Vary) and edge status (chain/break)
into APE constraint objects and assembles the full synthesis config
JSON including I/O EDAM tuples, tool taxonomy paths, and generation
parameters.
…e initialization

Handles CWL file upload via POST /alternatives/parse, builds the
ReactFlow graph from the parsed DAG, and initialises all tool nodes
to Keep status (§4.3 conservative strategy). Node clicks cycle through
Keep/Vary/Ban; edge clicks toggle chain/break constraints.
… modal

Shows active Keep/Ban/Chain/Break constraints, APE synthesis parameters
(min/max length, timeout, solutions), a generate button with loading
state, and a modal to inspect the generated APE config JSON.
…w, and synthesis

Shows a drag-and-drop CWL upload zone before a file is loaded, then
switches to a ReactFlow graph with a filename pill overlay. Builds the
APE synthesis config from the current constraint state and navigates
to /explore/results after successful synthesis.
…aStore

Accepts a pre-built APE config object and an optional input tool
sequence string. After synthesis, filters out any solution whose
descriptive_name matches the input workflow's tool sequence to ensure
all returned alternatives genuinely differ from the uploaded workflow.
Call GET /ape/alternatives/warm when GenerateAlternatives mounts.
Show a full-page spinner while the backend loads the EDAM ontology;
show an error state if loading fails. Upload zone renders only after
warm-up completes.
EDAM loading is handled transparently by the backend on the first
/parse request. No explicit frontend warm-up needed.
APE generates step names from a tool's label, but use_m/not_use_m/connected_op
constraints must reference the taxonomy id, which differs for some tools
(e.g. mzRecal -> mzrecal1, Sage -> Sage-proteomics, idconvert -> two ids).
Add LABEL_TO_TOOL_IDS to map each label to its id(s); unknown labels fall back
to the label itself.
Convert runSynthesisWithRawConfig to async/await, retry the synthesis call
once on failure (1.5s delay), and include the response body in the error so
transient backend issues surface clearly. Add ExploreDataStore tests for the
post-filtering of identical tool sequences.
Two-line tool cards with a clipped accent bar for status; compact dashed
data nodes for inputs/outputs. Dagre now uses separate dimensions per node
type (tool 210x70, data 180x38) for correct automatic layout.
InfoTooltip renders configurable contextual help on the graph canvas, the
active-constraints panel, and the APE-settings panel. The Show-JSON modal
highlights the generated config without an external dependency. Canvas height
now scales with the viewport.
Frontend functionality  for generating workflow alternatives, currently restricted to proteomics
@eladrion
eladrion marked this pull request as draft July 3, 2026 10:45
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