Class: Request::LibraryCreation

Inherits:
CustomerRequest show all
Includes:
CustomerResponsibility
Defined in:
app/models/request/library_creation.rb

Constant Summary

Constants included from Metadata

Metadata::SECTION_FIELDS

Constants included from Statemachine

Statemachine::ACTIVE, Statemachine::COMPLETED_STATE, Statemachine::INACTIVE, Statemachine::OPENED_STATE, Statemachine::SORT_ORDER

Class Method Summary collapse

Instance Method Summary collapse

Methods included from CustomerResponsibility

included

Methods inherited from CustomerRequest

#biffable?, #can_be_billed?, #create_billing_events, #customer_accepts_responsibility!, #generate_create_request_event, #generate_destroy_request_event, #generate_request_event, #update_responsibilities!

Methods inherited from Request

accessioning_required?, #add_comment, #associated_studies, #billing_product_identifier, #cancelable?, #copy, #current_request_event, #customer_accepts_responsibility!, delegate_validator, #event_with_key_value, #eventful_studies, for_study, #format_qc_information, #get_value, #has_passed, #lab_events_for_batch, #manifest_processed!, #next_request_type_id, #next_requests, #next_requests_via_asset, #next_requests_via_submission, number_expected_for_submission_id_and_request_type_id, #previous_failed_requests?, #priority, #product_line, #project=, #project_id=, #ready?, #request_type_updatable?, #return_pending_to_inbox!, #run_events, #source_labware, #study=, #study_id=, #submitted_at, #target_purpose, #target_tube, #update_priority, #update_responsibilities!, #value_for

Methods included from Metadata

#has_metadata, required_tags

Methods included from EventfulRecord

#has_many_events, #has_many_lab_events, #has_one_event_with_family

Methods included from Statistics

#asset_statistics, #progress_statistics, #sample_statistics_new

Methods included from Batch::RequestBehaviour

#create_batch_request!, included, #recycle_from_batch!, #return_for_inbox!, #with_batch_id

Methods included from Statemachine

#cancellable?, #change_decision!, #closed?, #failed_downstream!, #failed_upstream!, #finished?, included, #on_blocked, #on_cancelled, #on_failed, #on_hold, #on_passed, #open?, #terminated?, #transfer_aliquots, #transition_to

Methods included from StandardNamedScopes

included

Methods included from Commentable

#after_comment_addition

Methods included from Uuid::Uuidable

included, #unsaved_uuid!, #uuid

Methods included from Api::RequestIO::Extensions

included, #json_root

Methods included from Aliquot::DeprecatedBehaviours::Request

#sample_name, #tag, #tag_number

Methods inherited from ApplicationRecord

convert_labware_to_receptacle_for, find_by_id_or_name, find_by_id_or_name!

Methods included from Warren::BroadcastMessages

#broadcast, included, #queue_associated_for_broadcast, #queue_for_broadcast, #warren

Class Method Details

.fragment_size_details(minimum = :no_default, maximum = :no_default) ⇒ Object

Convenience helper for ensuring that the fragment size information is properly treated. The columns in the database are strings and we need them to be integers, hence we force that here.


22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# File 'app/models/request/library_creation.rb', line 22

def self.fragment_size_details(minimum = :no_default, maximum = :no_default)
  minimum_details = { required: true, integer: true, minimum: 1 }
  maximum_details = { required: true, integer: true, minimum: 1 }
  minimum_details[:default] = minimum unless minimum == :no_default
  maximum_details[:default] = maximum unless maximum == :no_default

  class_eval do
     as: Request do
      # Redefine the fragment size attributes as they are fixed
      custom_attribute(:fragment_size_required_from, minimum_details)
      custom_attribute(:fragment_size_required_to, maximum_details)
      custom_attribute(:gigabases_expected, positive_float: true)
    end
    include Request::LibraryManufacture
  end
  const_get(:Metadata).class_eval do
    def fragment_size_required_from
      super.try(:to_i)
    end

    def fragment_size_required_to
      super.try(:to_i)
    end
  end
end

Instance Method Details

#aliquot_attributesHash

Passed into cloned aliquots at the beginning of a pipeline to set appropriate options


58
59
60
61
62
63
64
65
66
# File 'app/models/request/library_creation.rb', line 58

def aliquot_attributes
  {
    study_id: initial_study_id,
    project_id: initial_project_id,
    library_type: library_type,
    insert_size: insert_size,
    request_id: id
  }
end

#on_startedObject

Override the behaviour of Request so that we do not copy the aliquots from our source asset to the target when we are passed. This is actually done by the TransferRequest from plate to plate as it goes through being processed.


7
8
9
# File 'app/models/request/library_creation.rb', line 7

def on_started
  # Override the default behaviour to not do the transfer
end

#update_pool_information(pool_information) ⇒ Object

Add common pool information, like insert size and library type


12
13
14
15
16
17
# File 'app/models/request/library_creation.rb', line 12

def update_pool_information(pool_information)
  pool_information.merge!(
    insert_size: { from: insert_size.from, to: insert_size.to },
    library_type: { name: library_type }
  )
end