Class: PlateTemplate

Inherits:
Plate show all
Includes:
Lot::Template
Defined in:
app/models/plate_template.rb

Overview

Virtual plate used in Cherrypicking and GateKeeper to block out empty wells or layout pre-assigned samples.

See Also:

Constant Summary

Constants included from Metadata

Metadata::SECTION_FIELDS

Instance Attribute Summary

Attributes inherited from Labware

#storage_location_service

Instance Method Summary collapse

Methods included from Lot::Template

included

Methods inherited from Plate

#after_comment_addition, #all_submission_ids, #buffer_required?, #cherrypick_completed, #comments, #compatible_purposes, #convert_to, create_with_barcode!, #details, #find_well_by_name, #generate_barcode, #height, #invalid_positions, #iteration, #maps, #name_for_label, #number_of_blank_samples, #occupied_well_count, #pick_as_control?, #plate_columns, plate_ids_from_requests, #plate_rows, #plate_type, #plate_type=, #priority, #receptacles_with_position, #related_studies, #sanger_barcode=, #scored?, search_for_plates, #state, #stock_plate, #stock_plate?, #stock_wells, #subject_type, #submission_ids, #submission_ids_as_source, #submissions, #team, #unique_positions_on_plate, #update_qc_values_with_parser, #update_volume, #well_hash, #wells_in_column_order, #wells_in_row_order, #width

Methods included from QcFile::Associations

#has_qc_files

Methods included from Metadata

#has_metadata

Methods included from SubmissionPool::Association::Plate

included

Methods included from Barcode::Barcodeable

#any_barcode_matching?, #barcode_format, #barcode_number, #cgap_barcode, #cgap_barcode=, #external_barcode, #external_barcode=, #external_identifier, #fluidigm_barcode, #fluidigm_barcode=, #foreign_barcode=, #generate_barcode, included, #infinium_barcode, #infinium_barcode=, #prefix, #primary_barcode, #printable_target, #sanger_barcode

Methods included from PlateCreation::CreationChild

included

Methods included from Plate::PoolingMetadata

#pools

Methods included from Plate::FluidigmBehaviour

#apply_fluidigm_data, included, #retrieve_fluidigm_data

Methods included from Asset::Ownership::Owned

#change_owner_to, included

Methods included from Transfer::State::PlateState

included

Methods included from Transfer::Associations

included

Methods included from Api::PlateIo::Extensions

included, #json_root

Methods inherited from Labware

#ancestor_of_purpose, #ancestors_of_purpose, #child, #display_name, #external_identifier, find_by_barcode, find_from_any_barcode, #generate_name, #labware, #labwhere_location, labwhere_locations, #parent, #received_date, #retention_instructions, #role, #scanned_in_date, #source_plate, #source_plates, #spiked_in_buffer, #state, #storage_location

Methods included from SharedBehaviour::Named

included

Methods included from AssetLink::Associations

included

Methods included from Uuid::Uuidable

included, #unsaved_uuid!, #uuid

Methods included from Commentable

#after_comment_addition

Methods inherited from Asset

#ancestor_of_purpose, #asset_type_for_request_types, #barcode_number, #compatible_purposes, #contained_samples, #details, #generate_barcode, #get_qc_result_value_for, #has_stock_asset?, #label, #label=, #original_stock_plates, #prefix, #printable?, #printable_target, #register_stock!, #request_types, #type, #update_from_qc

Methods included from EventfulRecord

#has_many_events, #has_many_lab_events, #has_one_event_with_family

Methods included from Event::PlateEvents

#event_date, #fluidigm_stamp_date, #gel_qc_date, #pico_date, #qc_started_date, #sequenom_stamp_date

Methods inherited from ApplicationRecord

alias_association, convert_labware_to_receptacle_for, find_by_id_or_name, find_by_id_or_name!

Methods included from Squishify

extended

Instance Method Details

#add_well_by_map_description(well, map_description) ⇒ Object



22
23
24
25
26
# File 'app/models/plate_template.rb', line 22

def add_well_by_map_description(well, map_description)
  wells << well
  well.map = Map.find_by(description: map_description, asset_size: size)
  well.save!
end

#stamp_to(plate) ⇒ Object



28
29
30
31
32
# File 'app/models/plate_template.rb', line 28

def stamp_to(plate)
  ActiveRecord::Base.transaction do
    wells.each { |well| plate.wells.located_at(well.map_description).first.aliquots = well.aliquots.map(&:dup) }
  end
end

#update_params!(details = {}) ⇒ Object

rubocop:todo Metrics/AbcSize



10
11
12
13
14
15
16
17
18
19
20
# File 'app/models/plate_template.rb', line 10

def update_params!(details = {}) # rubocop:todo Metrics/AbcSize
  self.name = details[:name]
  wells.delete_all
  self.size = (details[:rows]).to_i * (details[:cols]).to_i
  save!

  unless details[:wells].nil?
    empty_wells = details[:wells].keys
    empty_wells.each { |well| add_well_by_map_description(Well.create!, well) }
  end
end