trifle-stats 2.4.1 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Trifle
4
- module Stats
5
- class Transponder
6
- class Add
7
- include Trifle::Stats::Mixins::Packer
8
- Trifle::Stats::Series.register_transponder(:add, self)
9
-
10
- def transpond(series:, left:, right:, response: 'add') # rubocop:disable Metrics/MethodLength
11
- left_keys = left.to_s.split('.')
12
- right_keys = right.to_s.split('.')
13
-
14
- series[:values] = series[:values].map do |data|
15
- dleft = data.dig(*left_keys)
16
- dright = data.dig(*right_keys)
17
- next data unless dleft && dright
18
-
19
- dres = dleft + dright
20
- signal = {
21
- response => dres
22
- }
23
- self.class.deep_merge(data, self.class.unpack(hash: signal))
24
- end
25
- series
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Trifle
4
- module Stats
5
- class Transponder
6
- class Divide
7
- include Trifle::Stats::Mixins::Packer
8
- Trifle::Stats::Series.register_transponder(:divide, self)
9
-
10
- def transpond(series:, left:, right:, response: 'divide') # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
11
- left_keys = left.to_s.split('.')
12
- right_keys = right.to_s.split('.')
13
-
14
- series[:values] = series[:values].map do |data|
15
- dleft = data.dig(*left_keys)
16
- dright = data.dig(*right_keys)
17
- next data unless dleft && dright
18
-
19
- dres = (dleft / dright)
20
- signal = {
21
- response => dres.nan? ? BigDecimal(0) : dres
22
- }
23
- self.class.deep_merge(data, self.class.unpack(hash: signal))
24
- end
25
- series
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Trifle
4
- module Stats
5
- class Transponder
6
- class Max
7
- include Trifle::Stats::Mixins::Packer
8
- Trifle::Stats::Series.register_transponder(:max, self)
9
-
10
- def transpond(series:, paths:, response: 'max') # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/CyclomaticComplexity
11
- path_keys = paths.map { |path| path.to_s.split('.') }
12
-
13
- series[:values] = series[:values].map do |data|
14
- dvalues = path_keys.map { |path_key| data.dig(*path_key) }
15
- next data if dvalues.any?(&:nil?)
16
-
17
- numeric_values = dvalues.select { |v| v.is_a?(Numeric) }
18
- next data if numeric_values.empty?
19
-
20
- dres = numeric_values.max
21
- signal = {
22
- response => dres
23
- }
24
- self.class.deep_merge(data, self.class.unpack(hash: signal))
25
- end
26
- series
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Trifle
4
- module Stats
5
- class Transponder
6
- class Mean
7
- include Trifle::Stats::Mixins::Packer
8
- Trifle::Stats::Series.register_transponder(:mean, self)
9
-
10
- def transpond(series:, paths:, response: 'mean') # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
11
- path_keys = paths.map { |path| path.to_s.split('.') }
12
-
13
- series[:values] = series[:values].map do |data|
14
- dvalues = path_keys.map { |path_key| data.dig(*path_key) }
15
- next data if dvalues.any?(&:nil?)
16
-
17
- numeric_values = dvalues.select { |v| v.is_a?(Numeric) }
18
- next data if numeric_values.empty?
19
-
20
- dres = (numeric_values.sum.to_f / numeric_values.length)
21
- signal = {
22
- response => dres.nan? ? BigDecimal(0) : dres
23
- }
24
- self.class.deep_merge(data, self.class.unpack(hash: signal))
25
- end
26
- series
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,31 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Trifle
4
- module Stats
5
- class Transponder
6
- class Min
7
- include Trifle::Stats::Mixins::Packer
8
- Trifle::Stats::Series.register_transponder(:min, self)
9
-
10
- def transpond(series:, paths:, response: 'min') # rubocop:disable Metrics/AbcSize, Metrics/MethodLength, Metrics/CyclomaticComplexity
11
- path_keys = paths.map { |path| path.to_s.split('.') }
12
-
13
- series[:values] = series[:values].map do |data|
14
- dvalues = path_keys.map { |path_key| data.dig(*path_key) }
15
- next data if dvalues.any?(&:nil?)
16
-
17
- numeric_values = dvalues.select { |v| v.is_a?(Numeric) }
18
- next data if numeric_values.empty?
19
-
20
- dres = numeric_values.min
21
- signal = {
22
- response => dres
23
- }
24
- self.class.deep_merge(data, self.class.unpack(hash: signal))
25
- end
26
- series
27
- end
28
- end
29
- end
30
- end
31
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Trifle
4
- module Stats
5
- class Transponder
6
- class Multiply
7
- include Trifle::Stats::Mixins::Packer
8
- Trifle::Stats::Series.register_transponder(:multiply, self)
9
-
10
- def transpond(series:, left:, right:, response: 'multiply') # rubocop:disable Metrics/MethodLength
11
- left_keys = left.to_s.split('.')
12
- right_keys = right.to_s.split('.')
13
-
14
- series[:values] = series[:values].map do |data|
15
- dleft = data.dig(*left_keys)
16
- dright = data.dig(*right_keys)
17
- next data unless dleft && dright
18
-
19
- dres = dleft * dright
20
- signal = {
21
- response => dres
22
- }
23
- self.class.deep_merge(data, self.class.unpack(hash: signal))
24
- end
25
- series
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Trifle
4
- module Stats
5
- class Transponder
6
- class Ratio
7
- include Trifle::Stats::Mixins::Packer
8
- Trifle::Stats::Series.register_transponder(:ratio, self)
9
-
10
- def transpond(series:, left:, right:, response: 'ratio') # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
11
- left_keys = left.to_s.split('.')
12
- right_keys = right.to_s.split('.')
13
-
14
- series[:values] = series[:values].map do |data|
15
- dleft = data.dig(*left_keys)
16
- dright = data.dig(*right_keys)
17
- next data unless dleft && dright
18
-
19
- dres = (dleft / dright) * 100
20
- signal = {
21
- response => dres.nan? ? BigDecimal(0) : dres
22
- }
23
- self.class.deep_merge(data, self.class.unpack(hash: signal))
24
- end
25
- series
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Trifle
4
- module Stats
5
- class Transponder
6
- class StandardDeviation
7
- include Trifle::Stats::Mixins::Packer
8
- Trifle::Stats::Series.register_transponder(:standard_deviation, self)
9
-
10
- def transpond(series:, left:, right:, square:, response: 'sd') # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
11
- left_keys = left.to_s.split('.')
12
- right_keys = right.to_s.split('.')
13
- square_keys = square.to_s.split('.')
14
-
15
- series[:values] = series[:values].map do |data|
16
- dright = data.dig(*right_keys)
17
- dsquare = data.dig(*square_keys)
18
- dleft = data.dig(*left_keys)
19
- next data unless dright && dsquare && dleft
20
-
21
- dres = Math.sqrt(
22
- (dright * dsquare - dleft * dleft) / (dright * (dright - 1)) # rubocop:disable Lint/BinaryOperatorWithIdenticalOperands
23
- )
24
- signal = {
25
- response => dres.nan? ? BigDecimal(0) : dres
26
- }
27
- self.class.deep_merge(data, self.class.unpack(hash: signal))
28
- end
29
- series
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,30 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Trifle
4
- module Stats
5
- class Transponder
6
- class Subtract
7
- include Trifle::Stats::Mixins::Packer
8
- Trifle::Stats::Series.register_transponder(:subtract, self)
9
-
10
- def transpond(series:, left:, right:, response: 'subtract') # rubocop:disable Metrics/MethodLength
11
- left_keys = left.to_s.split('.')
12
- right_keys = right.to_s.split('.')
13
-
14
- series[:values] = series[:values].map do |data|
15
- dleft = data.dig(*left_keys)
16
- dright = data.dig(*right_keys)
17
- next data unless dleft && dright
18
-
19
- dres = dleft - dright
20
- signal = {
21
- response => dres
22
- }
23
- self.class.deep_merge(data, self.class.unpack(hash: signal))
24
- end
25
- series
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Trifle
4
- module Stats
5
- class Transponder
6
- class Sum
7
- include Trifle::Stats::Mixins::Packer
8
- Trifle::Stats::Series.register_transponder(:sum, self)
9
-
10
- def transpond(series:, paths:, response: 'sum') # rubocop:disable Metrics/MethodLength, Metrics/AbcSize, Metrics/CyclomaticComplexity
11
- path_keys = paths.map { |path| path.to_s.split('.') }
12
-
13
- series[:values] = series[:values].map do |data|
14
- dvalues = path_keys.map { |path_key| data.dig(*path_key) }
15
- next data if dvalues.any?(&:nil?)
16
-
17
- dres = dvalues.sum { |v| v.is_a?(Numeric) ? v : 0 }
18
- signal = {
19
- response => dres
20
- }
21
- self.class.deep_merge(data, self.class.unpack(hash: signal))
22
- end
23
- series
24
- end
25
- end
26
- end
27
- end
28
- end