Class: SequencescapeSubmission

Inherits:
Object
  • Object
show all
Includes:
ActiveModel::Model
Defined in:
app/models/sequencescape_submission.rb

Overview

Class Submission provides an easy means of creating submissions via the Sequencescape API

Author:

  • Genome Research Ltd.

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#allowed_extra_barcodesObject

Returns the value of attribute allowed_extra_barcodes.



37
38
39
# File 'app/models/sequencescape_submission.rb', line 37

def allowed_extra_barcodes
  @allowed_extra_barcodes
end

#apiSequencescape::Api

Sets the api through which objects will be created

Returns:

  • (Sequencescape::Api)

    api A functional Sequencescape::Api object



14
15
16
# File 'app/models/sequencescape_submission.rb', line 14

def api
  @api
end

#asset_groupsArray<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

Returns:

  • (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_barcodesObject

Returns the value of attribute extra_barcodes.



37
38
39
# File 'app/models/sequencescape_submission.rb', line 37

def extra_barcodes
  @extra_barcodes
end

#labware_barcodeObject

Returns the value of attribute labware_barcode.



37
38
39
# File 'app/models/sequencescape_submission.rb', line 37

def labware_barcode
  @labware_barcode
end

#num_extra_barcodesObject

Returns the value of attribute num_extra_barcodes.



37
38
39
# File 'app/models/sequencescape_submission.rb', line 37

def num_extra_barcodes
  @num_extra_barcodes
end

#request_optionsHash

A hash of valid request options for the submission

Returns:

  • (Hash)

    request_options: The request options to use



28
29
30
# File 'app/models/sequencescape_submission.rb', line 28

def request_options
  @request_options
end

#submission_uuidObject

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_uuidString

Returns template_uuid: The uuid of the submission template to use.

Returns:

  • (String)

    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

#userString

Controls the user who is recorded as having made the submission

Returns:

  • (String)

    user: The uuid of the user who is making the submission



18
19
20
# File 'app/models/sequencescape_submission.rb', line 18

def user
  @user
end

Instance Method Details

#asset_groups_for_orders_creationObject



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) && extra_barcodes

  [{ assets: [assets, extra_assets].flatten.compact, autodetect_studies: true, autodetect_projects: true }]
end

#assetsArray<String>

An array of all asset uuids that will be submitted

Returns:

  • (Array<String>)

    Array of asset uuids to submit



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

Parameters:

  • asset_uuids (Array<String>)

    Array of asset uuids to submit



63
64
65
# File 'app/models/sequencescape_submission.rb', line 63

def assets=(asset_uuids)
  @asset_groups = [{ assets: asset_uuids }]
end

#extra_assetsObject



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_trimmedObject



76
77
78
79
80
# File 'app/models/sequencescape_submission.rb', line 76

def extra_barcodes_trimmed
  return nil unless extra_barcodes

  extra_barcodes.map(&:strip).compact_blank
end

#extra_platesObject



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_barcodes_trimmed)
  @extra_plates ||= response
  raise "Barcodes not found #{extra_barcodes}" unless @extra_plates

  @extra_plates
end

#saveTrueClass

Sends the submission to Sequencescape

Returns:

  • (TrueClass)

    true Returns true on success



47
48
49
50
51
# File 'app/models/sequencescape_submission.rb', line 47

def save
  return false unless valid?

  generate_submissions
end