spliner 1.0.4 → 1.0.5
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.
- data/lib/spliner.rb +1 -1
- data/lib/spliner/spliner.rb +8 -6
- data/spec/spliner_spec.rb +6 -1
- metadata +1 -1
data/lib/spliner.rb
CHANGED
data/lib/spliner/spliner.rb
CHANGED
@@ -70,12 +70,14 @@ module Spliner
|
|
70
70
|
options ||= {}
|
71
71
|
|
72
72
|
if options[:fix_invalid_x]
|
73
|
-
|
74
|
-
|
75
|
-
pp
|
76
|
-
|
77
|
-
|
78
|
-
|
73
|
+
begin
|
74
|
+
size_at_start = x.size
|
75
|
+
pp = Hash[x.zip y]
|
76
|
+
to_delete = pp.keys.each_cons(2).select {|a,b| b < a}.map(&:last)
|
77
|
+
to_delete.each {|k| pp.delete k }
|
78
|
+
x = pp.keys
|
79
|
+
y = pp.values
|
80
|
+
end while x.size < size_at_start
|
79
81
|
end
|
80
82
|
|
81
83
|
@sections = split_at_duplicates(x).map {|slice| SplinerSection.new x[slice], y[slice] }
|
data/spec/spliner_spec.rb
CHANGED
@@ -135,9 +135,14 @@ describe Spliner::Spliner do
|
|
135
135
|
end
|
136
136
|
|
137
137
|
it 'has the option :fix_invalid_x to delete invalid x values (not increasing)' do
|
138
|
-
s = Spliner::Spliner.new [0.0, -1.0, 1.0], [0.0, 1.0, 1.0], :extrapolate => '100%', :fix_invalid_x => true
|
138
|
+
s = Spliner::Spliner.new [0.0, -1.0, -1.1, 0.5, 0.4, 1.0], [0.0, 1.0, 1.0, 0.5, 1.0, 1.0], :extrapolate => '100%', :fix_invalid_x => true
|
139
139
|
expect(s[0.5]).to be_within(0.001).of(0.5)
|
140
140
|
expect(s[-0.5]).to be_within(0.001).of(-0.5)
|
141
|
+
|
142
|
+
# not sure why this one is more difficult
|
143
|
+
x = [ -0.2006675899028778, -0.15321242064237595, -0.1328744888305664, -0.09355448558926582, -0.055590344592928886, -0.01355862058699131, 0.0, -0.008135172538459301, 0.0, -0.005423448514193296 ]
|
144
|
+
y = [ -60.06944274902344, -53.81944274902344, -51.46846008300781, -46.78096008300781, -41.30497741699219, -35.9664306640625, -33.99884033203125, -32.79803466796875, -31.980606079101562, -31.163192749023438 ]
|
145
|
+
s2 = Spliner::Spliner.new x, y, :fix_invalid_x => true
|
141
146
|
end
|
142
147
|
|
143
148
|
end
|