class FlexStationData::ParseSampleMap

Attributes

plate_data[R]

Public Class Methods

new(plate_data) click to toggle source
# File lib/flex_station_data/services/parse_sample_map.rb, line 14
def initialize(plate_data)
  @plate_data = plate_data
end

Public Instance Methods

call() click to toggle source
# File lib/flex_station_data/services/parse_sample_map.rb, line 26
def call
  sample_map_rows.each_with_object([]) do |(label, well), memo|
    memo << [ label, [] ] if label.present?
    memo.last.last << well
  end.to_h
end
sample_map_rows() click to toggle source
# File lib/flex_station_data/services/parse_sample_map.rb, line 18
def sample_map_rows
  plate_data
    .drop_while { |row| !sample_map_header?(row) }
    .drop(1)
    .take_while { |row| !empty_row?(row) }
    .map(&method(:parse_row))
end

Private Instance Methods

empty_row?(row) click to toggle source
# File lib/flex_station_data/services/parse_sample_map.rb, line 39
def empty_row?(row)
  row.all?(&:blank?)
end
parse_row(row) click to toggle source
# File lib/flex_station_data/services/parse_sample_map.rb, line 35
def parse_row(row)
  row.take(2).map(&:presence)
end
sample_map_header?(row) click to toggle source
# File lib/flex_station_data/services/parse_sample_map.rb, line 43
def sample_map_header?(row)
  row[0].to_s =~ /\A\s*Sample\s*\z/i && row[1].to_s =~ /\A\s*Wells\s*\z/i
end