Skip to content

Implement Sample Sheets #19305

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 24 commits into from
Jul 30, 2025
Merged

Implement Sample Sheets #19305

merged 24 commits into from
Jul 30, 2025

Conversation

jmchilton
Copy link
Member

@jmchilton jmchilton commented Dec 10, 2024

Implements #19085.

The Problem

Driving use cases - these complex data sample sheets that encode metadata not currently captured by simple list structures.

Screenshot 2025-06-16 at 9 46 42 AM

Problems with just uploading tabular files with list identifiers:

Screenshot 2025-06-16 at 9 48 13 AM Screenshot 2025-06-16 at 9 48 30 AM

The solution (this PR):

Screenshot 2025-06-16 at 9 49 33 AM

Using Sample Sheets

New Collections from URIs using Galaxy

Screenshot 2025-06-16 at 9 50 17 AM Screenshot 2025-06-16 at 9 50 22 AM Screenshot 2025-06-16 at 9 50 29 AM Screenshot 2025-06-16 at 9 50 43 AM

New Collections from URIs using External Spreadsheet Programs

Screenshot 2025-06-16 at 9 52 36 AM Screenshot 2025-06-16 at 9 52 44 AM Screenshot 2025-06-16 at 9 52 54 AM

Sample Sheet Collections from Existing Collections

(See slides - more of the same screenshots and description.)

Defining Sample Sheets

These are just defined in the workflow editor directly.

Screenshot 2025-06-16 at 9 55 36 AM

You can see what the sample sheet as a spreadsheet will look like - including cell validation and help with a preview from the workflow editor.

Screenshot 2025-06-16 at 9 56 01 AM

Using Sample Sheets from Workflows

There is a tool to convert it to a table so it can be used directly by workflows such as galaxyproject/iwc#581.

Screenshot 2025-06-16 at 9 57 57 AM

But it has also been baked into the Apply Rules tool so a lot of the complex operations that happen in cluster jobs in that workflow can work more efficiently, directly, and robustly using model objects.

Screenshot 2025-06-16 at 10 00 42 AM

Baking it into the Apply Rules tool also means it should be fairly straight forward to derive collections with group tags and nested collections from these inputs as part of workflows. The inputs have a lot more description and so should making using these advanced features in workflows much more straight-forward for Galaxy users.

The Model

Screenshot 2025-06-16 at 10 02 52 AM Screenshot 2025-06-16 at 10 02 59 AM

How to test the changes?

(Select all options that apply)

  • I've included appropriate automated tests.
  • This is a refactoring of components with existing test coverage.

License

  • I agree to license these and all my past contributions to the core galaxy codebase under the MIT license.

@jmchilton jmchilton force-pushed the sample_sheets branch 6 times, most recently from 8f6f5c3 to ee1f234 Compare July 28, 2025 16:52
@jmchilton
Copy link
Member Author

jmchilton commented Jul 28, 2025

I'm trying to distill the numerous comments into a checklist:

  • Workflow editor navigates away when clicking on template (fixed)
  • Collection type input sort of sucks - sample sheet into a new input and updated issue Add a dedicated interface for collection types in Workflow input field #19049.
  • Column definition validation errors -
    • frontend fixed to not produce these but…
    • Marius would still like more backend validation to prevent.
  • Indicate optional is okay in columns (unaddressed)
  • Descriptions in column headers (implemented)
  • Optional strings not allowed (I think this is fixed but this optional logic is tricky)
  • Wrong collection part IDs (dce vs had id) (fixed)
  • Various issues with keyboard input and AG Grid (@jmchilton argues we should push this off - framework is better than hardcoding something for now)
  • Just called nested lists in history panel (fixed - updated collection description in history panel)
  • No way to see columns in history panel (unaddressed)
  • Selection boxes do not do well with smaller width displays - certainly made strides with this at the cost of it being not quite as clean for larger widths.
  • Selection boxes are too verbose - reviewed language and shortened it up.
  • Pop-up collection selection when at that point in the wizard
  • Sort collections by HID descending (done in Sort collection dialog by HID descending. #20674 follow up in Dataset Collection Dialog does not do pagination #20682)
  • Incomplete job states in existing refactored code (addressed in Rework and expand client job state handling constants. #20675)
  • Better use of Vue/Typescript Implement Sample Sheets  #19305 (comment) - resolved.
  • POST vs Base64 GETs - addressed.
  • Various issues with how we’re watching jobs - should be mostly resolved now using resource watcher stuff.
  • Issues with validation in the worksheet in external apps (unaddressed).
  • CData in the new tool.

@jmchilton
Copy link
Member Author

In response to various issues with that landing set of selections being both too verbose and not dealing with small screen widths well - I shortened most of the options and swapped the BCardGroup from "stack" to "columns" - these seem to be the only levers the framework provides without breaking abstractions. I think it is a little better maybe.

Before:

Screenshot 2025-07-28 at 1 11 22 PM

After:

Screenshot 2025-07-28 at 1 47 41 PM
reviseoptions.mov

@mvdbeek
Copy link
Member

mvdbeek commented Jul 29, 2025

This looks relevant

FAILED lib/galaxy_test/selenium/test_workflow_run.py::TestWorkflowRun::test_collection_input_sample_sheet_chipseq_example_from_list_pairs - selenium.common.exceptions.ElementClickInterceptedException: Message: element click intercepted: Element <div data-v-78f582f4="" data-description="selection collection card" class="card wizard-selection-card border-primary">...</div> is not clickable at point (542, 526). Other element would receive the click: <div id="__BVID__492___BV_modal_body_" class="modal-body">...</div>

@jmchilton
Copy link
Member Author

8fe4518 seems to have fixed the Selenium test - thanks for that catch Marius!

@mvdbeek mvdbeek merged commit b48e975 into galaxyproject:dev Jul 30, 2025
51 of 64 checks passed
@mvdbeek
Copy link
Member

mvdbeek commented Jul 30, 2025

This is huge! Thanks a lot @jmchilton!

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

Successfully merging this pull request may close these issues.

4 participants