-
Notifications
You must be signed in to change notification settings - Fork 34
Y26-085 submission template for ultima ug200 sequencing #5645
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
yoldas
merged 34 commits into
develop
from
Y26-085-submission_template-for-ultima-ug200-sequencing
Apr 13, 2026
Merged
Changes from all commits
Commits
Show all changes
34 commits
Select commit
Hold shift + click to select a range
af8d255
added wafer size to ultima requests and pipeline
andrewsparkes ede2885
adding ug200 request type
andrewsparkes 5ab4f98
change to schema
andrewsparkes 9b57642
Added inflection for UG200
andrewsparkes 2d737b3
added UG200 task descriptors (draft may change)
andrewsparkes 4a746a7
fixed tests
andrewsparkes 16e939c
fixed tests
andrewsparkes a988ce7
modified ug200 sequencing request to remove read length and add ot re…
andrewsparkes 72a640d
wip the submission template yml
andrewsparkes 7a1a074
Merge branch 'develop' into Y26-085-submission_template-for-ultima-ug…
andrewsparkes ac9574d
for ug200 changed readlength for ot recipe
andrewsparkes 573135f
fixed incorrect it text
andrewsparkes 5dbd4a9
test(validators): split UG200 checks into dedicated ultima_ug200 vali…
yoldas e8b64f2
fix(submissions): apply selection defaults for blank values
yoldas fcbcd9c
docs(remove todo commit about selection defaults)
yoldas bd33b3a
test(submissions): apply selection defaults for blank values
yoldas ac0602b
fix(records): correct OTRecipeInformationTypeForUltimaUG200 association
yoldas 7a2d52d
chore(records): rename ultima_ug200 files to wip
yoldas 9e6b11e
fix(records): make task section names unique insider record loader fo…
yoldas db7c961
fix(records): make descriptor section names unique within the record …
yoldas 42f363d
feat(config): add UG200 specific request types because of purpose dep…
yoldas 9e1df90
feat(config): update request type keys of the Limber-Htp - Ultima PCR…
yoldas 82926a0
style(config): prettier format spacing and indentation
yoldas 83e3f30
feat(config): add UPF2 Cherrypicked purpose required by Limber Ultima…
yoldas 7c27119
feat(config): add ultima ug200 tube purposes
yoldas 3a8b09a
test(ci): fix flaky tests and add missing assertions
yoldas 54ca292
Merge branch 'develop' into Y26-085-submission_template-for-ultima-ug…
yoldas f8397ad
Update config/default_records/request_types/026_ultima_ug200_request_…
yoldas e429b98
refactor: remove redundant method and constant from UltimaUG200Validator
yoldas 72bbf8b
Merge branch 'develop' into Y26-085-submission_template-for-ultima-ug…
yoldas 2d2137b
remove UPF2 Balanced Pool and UPF2 Balanced Norm from sequencescape …
yoldas 084c97f
Merge remote-tracking branch 'refs/remotes/origin/Y26-085-submission_…
yoldas b5e7c9c
add UG200 to the submission template names
yoldas 489243c
Merge branch 'develop' into Y26-085-submission_template-for-ultima-ug…
yoldas File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,13 @@ | ||
| # frozen_string_literal: true | ||
|
|
||
| # Specialized sequencing pipeline for Ultima UG200 | ||
| class UltimaUG200SequencingPipeline < UltimaSequencingPipeline | ||
| def wafer_size_consistent_for_batch?(batch) | ||
| wafer_size_list = batch.requests.filter_map { |request| request.request_metadata.wafer_size } | ||
|
|
||
| # There are some requests that don't have the wafer_size attribute | ||
| return false if wafer_size_list.size != batch.requests.size | ||
|
|
||
| (wafer_size_list.uniq.size == 1) | ||
| end | ||
| end |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,43 @@ | ||
| # frozen_string_literal: true | ||
|
|
||
| # Request class specific to the Ultima UG200 sequencing platform. | ||
| # Includes wafer size and OT recipe. | ||
| class UltimaUG200SequencingRequest < SequencingRequest | ||
| include Api::Messages::UseqWaferIo::LaneExtensions | ||
|
|
||
| FREE = 'Free' | ||
| FLEX = 'Flex' | ||
| OT_RECIPE_OPTIONS = [FREE, FLEX].freeze | ||
|
|
||
| has_metadata as: Request do | ||
| # Defining the sequencing request metadata here again, as 'has_metadata' | ||
| # does not automatically append these custom attributes to the request. | ||
| # | ||
| # The has_metadata call dynamically defines an inner Metadata class and | ||
| # takes the attributes from the block and adds them to the Metadata class. | ||
| # There is an assumption that the inner Metadata class is available in a | ||
| # sequencing request class defintion. Calling has_metadata again does not | ||
| # inherit the attributes given in the block supplied in the superclass. | ||
| # They need to be supplied again for this class for a proper inner Metadata | ||
| # class definition. In a future refactoring these attributes can be moved a | ||
| # class attribute and subclasses can merge its own attibutes to that. A | ||
| # common method can set up the inner Metadata class in the subclasses. | ||
| custom_attribute(:fragment_size_required_from, integer: true, minimum: 1) | ||
| custom_attribute(:fragment_size_required_to, integer: true, minimum: 1) | ||
|
|
||
| custom_attribute(:ot_recipe, default: FREE, in: OT_RECIPE_OPTIONS, required: true) | ||
| enum :ot_recipe, { Free: 0, Flex: 1 } | ||
| custom_attribute(:wafer_size, default: '10TB', validator: true, required: true, selection: true) | ||
| end | ||
|
|
||
| # Delegate to request_metadata so the attributes are visible to the validator in the RSpec tests. | ||
| # This delegation has no real effect outside of the tests. | ||
| delegate :wafer_size, :ot_recipe, to: :request_metadata | ||
|
|
||
| # Generates unique wafer ID, concatenation of batch_for_opentrons, | ||
| # id_pool_lims, and request_order. | ||
| # @return [String] unique wafer ID for LIMS | ||
| def id_wafer_lims | ||
| "#{batch.id}_#{source_labware.human_barcode}_#{position}" | ||
| end | ||
| end |
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| # frozen_string_literal: true | ||
| class UltimaUG200Validator < UltimaValidator | ||
| WAFER_SIZE_CONSISTENT_MSG = 'Wafer size must be the same for both requests.' | ||
|
|
||
| # Used in _pipeline_limit.html to display custom validation warnings | ||
| def self.validation_info | ||
| 'Wafer Size and OT Recipe must be the same for both requests.' | ||
| end | ||
|
|
||
| # Validates that a batch contains the two requests. | ||
| def validate(record) | ||
| validate_exactly_two_requests(record) | ||
| requests_have_same_ot_recipe(record) | ||
| requests_have_same_wafer_size(record) | ||
| end | ||
|
|
||
| private | ||
|
|
||
| def requests_have_same_wafer_size(record) | ||
| return if record.pipeline.wafer_size_consistent_for_batch?(record) | ||
|
|
||
| record.errors.add(:base, WAFER_SIZE_CONSISTENT_MSG) | ||
| end | ||
| end |
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
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -27,3 +27,8 @@ ot_recipe: | |
| options: | ||
| - "Free" | ||
| - "Flex" | ||
| wafer_size: | ||
| options: | ||
| - "5TB" | ||
| - "10TB" | ||
| - "20TB" | ||
86 changes: 86 additions & 0 deletions
86
config/default_records/descriptors/005_ultima_ug200_descriptors.wip.yml
|
yoldas marked this conversation as resolved.
|
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,86 @@ | ||
| --- | ||
| # Section names must be unique inside the record loader folder. | ||
| "OTR carrier Lot # UG200": | ||
| name: "OTR carrier Lot #" | ||
| task: Opentrons | ||
| workflow: Ultima UG200 | ||
| kind: Text | ||
| required: false | ||
| sorter: 0 | ||
| OTR carrier expiry UG200: | ||
| name: OTR carrier expiry | ||
| task: Opentrons | ||
| workflow: Ultima UG200 | ||
| kind: Date | ||
| required: false | ||
| sorter: 1 | ||
| "Reaction Mix 7 Lot # UG200": | ||
| name: "Reaction Mix 7 Lot #" | ||
| task: Opentrons | ||
| workflow: Ultima UG200 | ||
| kind: Text | ||
| required: false | ||
| sorter: 2 | ||
| Reaction Mix 7 expiry UG200: | ||
| name: Reaction Mix 7 expiry | ||
| task: Opentrons | ||
| workflow: Ultima UG200 | ||
| kind: Date | ||
| required: false | ||
| sorter: 3 | ||
| "NFW Lot # UG200": | ||
| name: "NFW Lot #" | ||
| task: Opentrons | ||
| workflow: Ultima UG200 | ||
| kind: Text | ||
| required: false | ||
| sorter: 4 | ||
| NFW expiry UG200: | ||
| name: NFW expiry | ||
| task: Opentrons | ||
| workflow: Ultima UG200 | ||
| kind: Date | ||
| required: false | ||
| sorter: 5 | ||
| "Oil Lot # UG200": | ||
| name: "Oil Lot #" | ||
| task: Opentrons | ||
| workflow: Ultima UG200 | ||
| kind: Text | ||
| required: false | ||
| sorter: 6 | ||
| Oil expiry UG200: | ||
| name: Oil expiry | ||
| task: Opentrons | ||
| workflow: Ultima UG200 | ||
| kind: Date | ||
| required: false | ||
| sorter: 7 | ||
| Pipette carousel UG200: | ||
| name: Pipette carousel | ||
| task: Opentrons | ||
| workflow: Ultima UG200 | ||
| kind: Text | ||
| required: false | ||
| sorter: 8 | ||
| Opentrons Inst. Name UG200: | ||
| name: Opentrons Inst. Name | ||
| task: Opentrons | ||
| workflow: Ultima UG200 | ||
| kind: Text | ||
| required: true | ||
| sorter: 9 | ||
| Assign Control Bead Tube UG200: | ||
| name: Assign Control Bead Tube | ||
| task: Amp | ||
| workflow: Ultima UG200 | ||
| kind: Text | ||
| required: false | ||
| sorter: 0 | ||
| UG AMP Inst. Name UG200: | ||
| name: UG AMP Inst. Name | ||
| task: Amp | ||
| workflow: Ultima UG200 | ||
| kind: Text | ||
| required: true | ||
| sorter: 1 |
16 changes: 16 additions & 0 deletions
16
...ine_request_information_types/004_ultima_ug200_pipeline_request_information_types.wip.yml
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,16 @@ | ||
| --- | ||
| FragmentSizeRequiredFromInformationTypeForUltimaUG200: | ||
| pipeline_name: Ultima UG200 | ||
| request_information_type_key: fragment_size_required_from | ||
|
|
||
| FragmentSizeRequiredToInformationTypeForUltimaUG200: | ||
| pipeline_name: Ultima UG200 | ||
| request_information_type_key: fragment_size_required_to | ||
|
|
||
| WaferSizeInformationTypeForUltimaUG200: | ||
| pipeline_name: Ultima UG200 | ||
| request_information_type_key: wafer_size | ||
|
|
||
| OTRecipeInformationTypeForUltimaUG200: | ||
| pipeline_name: Ultima UG200 | ||
| request_information_type_key: ot_recipe |
17 changes: 17 additions & 0 deletions
17
config/default_records/pipelines/004_ultima_ug200_pipelines.wip.yml
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| --- | ||
| Ultima UG200: | ||
| name: Ultima UG200 Sequencing | ||
| sti_type: UltimaUG200SequencingPipeline | ||
| validator_class_name: UltimaUG200Validator | ||
| sorter: 10 | ||
| max_size: 2 | ||
| summary: 1 | ||
| externally_managed: 0 | ||
| group_name: Sequencing | ||
| control_request_type_id: 0 | ||
| min_size: 1 | ||
| request_type_keys: | ||
| - ultima_ug200_sequencing | ||
| workflow: | ||
| name: Ultima UG200 | ||
| item_limit: 2 |
9 changes: 9 additions & 0 deletions
9
config/default_records/plate_purposes/017_ultima_ug200_purposes.wip.yml
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| --- | ||
| # 96 well input plates | ||
| UPF2 Cherrypicked: | ||
| type: PlatePurpose::Input | ||
| stock_plate: true | ||
| default_state: passed | ||
| cherrypickable_target: true | ||
| target_type: Plate | ||
| size: 96 |
7 changes: 7 additions & 0 deletions
7
...ault_records/request_information_types/004_ultima_ug200_request_information_types.wip.yml
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,7 @@ | ||
| --- | ||
| wafer_size: | ||
| name: Wafer size | ||
| key: wafer_size | ||
| label: Wafer size | ||
| width: 5 | ||
| hide_in_inbox: 0 |
8 changes: 8 additions & 0 deletions
8
.../default_records/request_type_validators/003_ultima_ug200_request_type_validators.wip.yml
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| --- | ||
| WaferSizeRequestedUltimaUG200Sequencing: | ||
| request_type_key: ultima_ug200_sequencing | ||
| request_option: wafer_size | ||
| valid_options: | ||
| - 5TB | ||
| - 10TB | ||
| - 20TB |
31 changes: 31 additions & 0 deletions
31
config/default_records/request_types/026_ultima_ug200_request_types.wip.yml
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,31 @@ | ||
| # Request types for Ultima UG200 sequencing platform. | ||
| --- | ||
| limber_ultima_ug200_htp_pcr_free: | ||
| name: Limber Ultima UG200 HTP PCR Free | ||
| order: 1 | ||
| request_class_name: IlluminaHtp::Requests::StdLibraryRequest | ||
| asset_type: Well | ||
| for_multiplexing: false | ||
| billable: true | ||
| product_line_name: Ultima # same as UG100 | ||
| acceptable_purposes: | ||
| - UPF2 Cherrypicked | ||
| library_types: | ||
| - Ultima High Throughput PCR Free 96 # same as UG100 | ||
| limber_multiplexing_ultima_ug200: | ||
| name: Limber Multiplexing Ultima UG200 | ||
| asset_type: Well | ||
| order: 2 | ||
| request_class_name: Request::Multiplexing | ||
| for_multiplexing: true | ||
| product_line_name: Ultima # same as UG100 | ||
| target_purpose_name: UPF2 EqVol Norm | ||
| ultima_ug200_sequencing: | ||
| name: Ultima UG200 sequencing | ||
| asset_type: LibraryTube | ||
| order: 2 | ||
| initial_state: pending | ||
| billable: true | ||
| product_line_name: Ultima # same as UG100 | ||
| request_class_name: UltimaUG200SequencingRequest | ||
| request_purpose: standard |
18 changes: 18 additions & 0 deletions
18
config/default_records/submission_templates/021_ultima_ug200_submission_templates.wip.yml
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| # This submission template is associated with the Ultima PCR Free Library preparation pipeline | ||
| # and the Ultima UG200 sequencing platform. | ||
| --- | ||
| Limber-Htp - Ultima UG200 PCR Free - Ultima UG200 sequencing: | ||
| submission_class_name: "LinearSubmission" | ||
| related_records: | ||
| request_type_keys: | ||
| ["limber_ultima_ug200_htp_pcr_free", "limber_multiplexing_ultima_ug200", "ultima_ug200_sequencing"] | ||
| order_role: PCR Free | ||
| product_line_name: Ultima # same as UG100 | ||
| product_catalogue_name: GenericNoPCR | ||
| Limber-Htp - Ultima UG200 PCR Free - Ultima UG200 sequencing Automated: | ||
| submission_class_name: "LinearSubmission" | ||
| related_records: | ||
| request_type_keys: ["ultima_ug200_sequencing"] | ||
| order_role: PCR Free | ||
| product_line_name: Ultima # same as UG100 | ||
| product_catalogue_name: GenericNoPCR |
14 changes: 14 additions & 0 deletions
14
config/default_records/tasks/005_ultima_ug200_tasks.wip.yml
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| --- | ||
| # Section names must be unique inside the record loader folder. | ||
| Opentrons UG200: | ||
| name: Opentrons | ||
| workflow: Ultima UG200 | ||
| sorted: 0 | ||
| lab_activity: true | ||
| sti_type: SetDescriptorsTask | ||
| Amp UG200: | ||
| name: Amp | ||
| workflow: Ultima UG200 | ||
| sorted: 1 | ||
| lab_activity: true | ||
| sti_type: SetDescriptorsTask |
6 changes: 6 additions & 0 deletions
6
config/default_records/tube_purposes/011_ultima_ug200_tube_purposes.wip.yml
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| --- | ||
| UPF2 EqVol Norm: | ||
| # Even though this is Ultima, not Illumina, the MX tube has the same behaviour | ||
| type: IlluminaHtp::MxTubePurpose | ||
| target_type: MultiplexedLibraryTube | ||
| stock_plate: false |
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
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.