Sha256: bd3f02447a6390961996cfb6a8bb21677eb49bbdfc7d0dd6d71179b43a4c8ce1

Contents?: true

Size: 1.22 KB

Versions: 1

Compression:

Stored size: 1.22 KB

Contents

require "flex_station_data/presenters/sample_csv"
require "flex_station_data/presenters/linear_regression/sample_regression_hash"

module FlexStationData
  module Presenters
    module LinearRegression
      class SampleHash
        include Concerns::Presenter

        attr_reader :times, :sample, :quality_control, :options

        def initialize(times, sample, quality_control: SampleQuality, **options)
          @times = times
          @sample = sample
          @quality_control = quality_control
          @options = options
        end

        def errors
          @errors ||= quality_control.call(sample, **options).reject(&:good?)
        end

        def errors?
          errors.present?
        end

        def errors_hash
          { "error" => errors.first&.to_s }
        end

        def wells_hash
          { "wells" => sample.wells.join(", ") }
        end

        def regression_hash
          return SampleRegressionHash.headers.zip([]).to_h if errors?

          SampleRegressionHash.present(times, sample.mean, **options).transform_values(&:first)
        end

        def present
          { "sample" => sample.label }.merge(wells_hash).merge(errors_hash).merge(regression_hash)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
flex-station-data-0.3.2 lib/flex_station_data/presenters/linear_regression/sample_hash.rb