Conversation
marius-mather
requested changes
Jun 30, 2026
marius-mather
left a comment
Collaborator
There was a problem hiding this comment.
looks good, just a couple of minor code cleanups to suggest
marius-mather
approved these changes
Jun 30, 2026
marius-mather
left a comment
Collaborator
There was a problem hiding this comment.
good to go, thanks!
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Pull Request
Summary
SBP-361 Add bulk-prediction workflow support to the WISPS pipeline, including dataset upload, workflow launch, and result settings display. Refactors interaction-screening–specific schemas and services into shared WISPS abstractions reusable across both workflows.
Changes
New: bulk-prediction launch support — the
launch_workflowhandler now branches on"interaction-screening" | "bulk-prediction"and launches both vialaunch_wisps_workflow, using aWISPS_WORKFLOW_MODESlookup to setmode: g1-g2ormode: manualinparamsText.New: unified dataset upload endpoint —
POST /datasets/{workflow_name}/uploadreplaces the interaction-screening–specific endpoint. AcceptsLiteral["interaction-screening", "bulk-prediction"]as a path parameter and routes to the correct S3 base path (/g/data/yz52/sbp-service/input/interaction_screeningor.../bulk_prediction).Refactored schemas —
SequenceItem→WispsSequenceItem(group field is now optional to support bulk-prediction sequences without group);InteractionScreeningDatasetUploadRequest→WispsDatasetUploadRequest;InteractionScreeningFormData→WispsFormData.Refactored service —
upload_interaction_screening_csv_to_s3merged into singleupload_wisps_samplesheet_to_s3(sequences, run_id, base_path, label). Branches ongroupfield presence: interaction-screening CSVs includeid, sequence, group, typecolumns (query→g1, target→g2); bulk-prediction CSVs include onlyid, sequence, type.Result settings tab —
GET /{run_id}/settingParamsnow readsparamsTextandconfigProfilesfromqueued_jobs.launch_payload(parsed viayaml.safe_load) instead ofworkflow_runs.submitted_form_data, so the exact values sent to Seqera are always shown.Dynamic WISPS mode —
get_wisps_default_paramsnow accepts an explicitmodeargument; the executor derives mode fromform_data.workflowviaWISPS_WORKFLOW_MODESdict instead of hard-codingg1-g2.Tests and lint — updated all test imports (
SequenceItem→WispsSequenceItem, etc.), addedmodearg toget_wisps_default_paramscall sites in tests, applied ruff import-sort and black formatting across 17 files.No database migrations required for this change.
How to Test
Interaction-screening (regression) — submit an interaction-screening job as before; confirm the result settings tab shows
paramsTextwithmode: g1-g2.Bulk-prediction dataset upload:
Expect a response with
s3Key,s3Uri, andsplitOutputDirpointing to the bulk-prediction base path.Bulk-prediction launch — submit a bulk-prediction workflow; confirm the Seqera launch payload contains
mode: manualinparamsText.Result settings — open any completed WISPS job's settings tab;
paramsTextshould render as a structured object (not a raw YAML string), andconfigProfilesshould be present.Unit tests and lint:
Type of change
Checklist