Class: SequencescapeSubmission
- Inherits:
-
Object
- Object
- SequencescapeSubmission
- Includes:
- ActiveModel::Model
- Defined in:
- app/models/sequencescape_submission.rb
Overview
Class Submission provides an easy means of creating submissions via the Sequencescape API
Instance Attribute Summary collapse
-
#allowed_extra_barcodes ⇒ Object
Returns the value of attribute allowed_extra_barcodes.
-
#api ⇒ Sequencescape::Api
Sets the api through which objects will be created.
-
#asset_groups ⇒ Array<Hash>
Returns a nested array of asset_group object.
-
#extra_barcodes ⇒ Object
Returns the value of attribute extra_barcodes.
-
#labware_barcode ⇒ Object
Returns the value of attribute labware_barcode.
-
#num_extra_barcodes ⇒ Object
Returns the value of attribute num_extra_barcodes.
-
#request_options ⇒ Hash
A hash of valid request options for the submission.
-
#submission_uuid ⇒ Object
Returns the value of attribute submission_uuid.
-
#template_name ⇒ Object
writeonly
Selects the template to use by template name.
-
#template_uuid ⇒ String
Template_uuid: The uuid of the submission template to use.
-
#user ⇒ String
Controls the user who is recorded as having made the submission.
Instance Method Summary collapse
- #asset_groups_for_orders_creation ⇒ Object
-
#assets ⇒ Array<String>
An array of all asset uuids that will be submitted.
-
#assets=(asset_uuids) ⇒ Object
Sets up a single asset group containing the supplied assets.
- #extra_assets ⇒ Object
- #extra_barcodes_trimmed ⇒ Object
- #extra_plates ⇒ Object
-
#save ⇒ TrueClass
Sends the submission to Sequencescape.
Instance Attribute Details
#allowed_extra_barcodes ⇒ Object
Returns the value of attribute allowed_extra_barcodes.
37 38 39 |
# File 'app/models/sequencescape_submission.rb', line 37 def @allowed_extra_barcodes end |
#api ⇒ Sequencescape::Api
Sets the api through which objects will be created
14 15 16 |
# File 'app/models/sequencescape_submission.rb', line 14 def api @api end |
#asset_groups ⇒ Array<Hash>
Returns a nested array of asset_group object. Each asset group is a hash containing: assets: Array of asset uuids study: The study uuid project: The project uuid
35 36 37 |
# File 'app/models/sequencescape_submission.rb', line 35 def asset_groups @asset_groups end |
#extra_barcodes ⇒ Object
Returns the value of attribute extra_barcodes.
37 38 39 |
# File 'app/models/sequencescape_submission.rb', line 37 def @extra_barcodes end |
#labware_barcode ⇒ Object
Returns the value of attribute labware_barcode.
37 38 39 |
# File 'app/models/sequencescape_submission.rb', line 37 def @labware_barcode end |
#num_extra_barcodes ⇒ Object
Returns the value of attribute num_extra_barcodes.
37 38 39 |
# File 'app/models/sequencescape_submission.rb', line 37 def @num_extra_barcodes end |
#request_options ⇒ Hash
A hash of valid request options for the submission
28 29 30 |
# File 'app/models/sequencescape_submission.rb', line 28 def @request_options end |
#submission_uuid ⇒ Object
Returns the value of attribute submission_uuid.
37 38 39 |
# File 'app/models/sequencescape_submission.rb', line 37 def submission_uuid @submission_uuid end |
#template_name=(value) ⇒ Object (writeonly)
Selects the template to use by template name
24 25 26 |
# File 'app/models/sequencescape_submission.rb', line 24 def template_name=(value) @template_name = value end |
#template_uuid ⇒ String
Returns template_uuid: The uuid of the submission template to use.
54 55 56 |
# File 'app/models/sequencescape_submission.rb', line 54 def template_uuid @template_uuid ||= Settings.submission_templates[@template_name] end |
#user ⇒ String
Controls the user who is recorded as having made the submission
18 19 20 |
# File 'app/models/sequencescape_submission.rb', line 18 def user @user end |
Instance Method Details
#asset_groups_for_orders_creation ⇒ Object
110 111 112 113 114 |
# File 'app/models/sequencescape_submission.rb', line 110 def asset_groups_for_orders_creation return asset_groups unless (asset_groups.length == 1) && [{ assets: [assets, extra_assets].flatten.compact, autodetect_studies: true, autodetect_projects: true }] end |
#assets ⇒ Array<String>
An array of all asset uuids that will be submitted
72 73 74 |
# File 'app/models/sequencescape_submission.rb', line 72 def assets @asset_groups.pluck(:assets).flatten end |
#assets=(asset_uuids) ⇒ Object
Sets up a single asset group containing the supplied assets
63 64 65 |
# File 'app/models/sequencescape_submission.rb', line 63 def assets=(asset_uuids) @asset_groups = [{ assets: asset_uuids }] end |
#extra_assets ⇒ Object
92 93 94 95 96 |
# File 'app/models/sequencescape_submission.rb', line 92 def extra_assets return [] unless extra_plates @extra_assets ||= extra_plates.map { |labware| labware.wells.compact_blank.map(&:uuid) }.flatten.uniq end |
#extra_barcodes_trimmed ⇒ Object
76 77 78 79 80 |
# File 'app/models/sequencescape_submission.rb', line 76 def return nil unless .map(&:strip).compact_blank end |
#extra_plates ⇒ Object
82 83 84 85 86 87 88 89 90 |
# File 'app/models/sequencescape_submission.rb', line 82 def extra_plates return @extra_plates if @extra_plates response = Sequencescape::Api::V2.additional_plates_for_presenter(barcode: ) @extra_plates ||= response raise "Barcodes not found #{}" unless @extra_plates @extra_plates end |
#save ⇒ TrueClass
Sends the submission to Sequencescape
47 48 49 50 51 |
# File 'app/models/sequencescape_submission.rb', line 47 def save return false unless valid? generate_submissions end |