togezo 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +9 -0
- data/.rspec +2 -0
- data/.travis.yml +4 -0
- data/Gemfile +4 -0
- data/README.md +18 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/lib/togezo.rb +102 -0
- data/lib/togezo/version.rb +3 -0
- data/sample/sample.dat +261 -0
- data/sample/sample.rb +7 -0
- data/togezo-0.1.0.gem +0 -0
- data/togezo.gemspec +31 -0
- metadata +85 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9c6a839255715bf9c7c9d7b558220ae81f4d85ea
|
4
|
+
data.tar.gz: 84f3ad8e1f6758e01f44812afbc2f12e6b15980d
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 3c69585db2d9db500f4b477dc7b56be8fadd5106b18e2e1acf97eb7b6c303d6623394ee11e910faa7e14ad4561923bb13d35b0163a30bf20587b5c286a83d0b1
|
7
|
+
data.tar.gz: 05e0fcc25e0025f8bf0315f02230696fbbdba4f1d5a75a9cf0683dfc6c83043eb951fc825cfe7d79359a04db3ce77a088b7ac45581484d939b81d340cc74fc07
|
data/.gitignore
ADDED
data/.rspec
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
# Togezo
|
2
|
+
|
3
|
+
This is a gem for getting extreme values on a chart via Gaussian/Pearson.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
$ gem install togezo
|
8
|
+
|
9
|
+
## Usage
|
10
|
+
|
11
|
+
togezo = Togezo.init("hoge.dat")
|
12
|
+
peaks = togezo.fit
|
13
|
+
p peaks
|
14
|
+
|
15
|
+
## Contributing
|
16
|
+
|
17
|
+
Bug reports and pull requests are welcome on GitHub at https://github.com/deepneko/togezo.
|
18
|
+
|
data/Rakefile
ADDED
data/bin/console
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require "bundler/setup"
|
4
|
+
require "togezo"
|
5
|
+
|
6
|
+
# You can add fixtures and/or initialization code here to make experimenting
|
7
|
+
# with your gem easier. You can also use a different console, if you like.
|
8
|
+
|
9
|
+
# (If you use this, don't forget to add pry to your Gemfile!)
|
10
|
+
# require "pry"
|
11
|
+
# Pry.start
|
12
|
+
|
13
|
+
require "irb"
|
14
|
+
IRB.start
|
data/bin/setup
ADDED
data/lib/togezo.rb
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
require 'pty'
|
2
|
+
require 'expect'
|
3
|
+
require 'tempfile'
|
4
|
+
|
5
|
+
module Togezo
|
6
|
+
GAUSSIAN = 0
|
7
|
+
PEARSON = 1
|
8
|
+
|
9
|
+
def self.init(filename, debug=false)
|
10
|
+
Togezo.new(filename, debug)
|
11
|
+
end
|
12
|
+
|
13
|
+
class Togezo
|
14
|
+
attr_accessor :debug
|
15
|
+
attr_reader :positives, :negatives, :peaks
|
16
|
+
|
17
|
+
def initialize(filename, debug=false)
|
18
|
+
@datafile = File.open(filename)
|
19
|
+
@constant = nil
|
20
|
+
@positives = []
|
21
|
+
@negatives = []
|
22
|
+
@peaks = []
|
23
|
+
end
|
24
|
+
|
25
|
+
def fit(function=GAUSSIAN, times=1)
|
26
|
+
if function = GAUSSIAN
|
27
|
+
guess = "Gaussian"
|
28
|
+
elsif function = @PEARSON
|
29
|
+
guess = "Pearson"
|
30
|
+
end
|
31
|
+
|
32
|
+
PTY.spawn("cfityk") do |r, w, pid|
|
33
|
+
w.puts "@0 < #{@datafile.path};"
|
34
|
+
w.puts "guess Constant;"
|
35
|
+
w.puts "info peaks;"
|
36
|
+
|
37
|
+
r.sync = true
|
38
|
+
r.expect(/\%_1\s+Constant(\sx){4}\s+(\d+(\.\d+)*)\s/, 3) do |line|
|
39
|
+
@constant = line[2].to_f
|
40
|
+
end
|
41
|
+
|
42
|
+
1.upto(times) do |i|
|
43
|
+
w.puts "guess #{guess}"
|
44
|
+
end
|
45
|
+
|
46
|
+
w.puts "info peaks"
|
47
|
+
2.upto(times+1) do |i|
|
48
|
+
r.expect(/\%_#{i}\s+#{guess}(\s+\d+(\.\d+)*)(\s+\d+(\.\d+)*)\s/, 3) do |line|
|
49
|
+
x = line[1].to_f
|
50
|
+
y = line[3].to_f
|
51
|
+
@positives << [x, y]
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
w.close
|
56
|
+
r.close
|
57
|
+
end
|
58
|
+
|
59
|
+
negatives = Tempfile.new("temp")
|
60
|
+
@datafile.each_line do |line|
|
61
|
+
x, y = line.split(/\s/).map{|m| m.to_f}
|
62
|
+
if y < @constant
|
63
|
+
new_y = (@constant - y) + @constant
|
64
|
+
negatives.puts "#{x} #{new_y}"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
negatives.flush
|
68
|
+
negatives.rewind
|
69
|
+
|
70
|
+
PTY.spawn("cfityk") do |r, w, pid|
|
71
|
+
w.puts "@0 < #{negatives.path};"
|
72
|
+
w.puts "guess Constant(a=#{@constant});"
|
73
|
+
|
74
|
+
1.upto(times) do |i|
|
75
|
+
w.puts "guess #{guess}"
|
76
|
+
end
|
77
|
+
|
78
|
+
w.puts "info peaks"
|
79
|
+
2.upto(times+1) do |i|
|
80
|
+
r.expect(/\%_#{i}\s+#{guess}(\s+\d+(\.\d+)*)(\s+\d+(\.\d+)*)\s/, 3) do |line|
|
81
|
+
x = line[1].to_f
|
82
|
+
y = line[3].to_f
|
83
|
+
@negatives << [x, y]
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
w.close
|
88
|
+
r.close
|
89
|
+
end
|
90
|
+
|
91
|
+
@positives.each do |x, y|
|
92
|
+
@peaks << [x, (y+@constant).round(5)]
|
93
|
+
end
|
94
|
+
|
95
|
+
@negatives.each do |x, y|
|
96
|
+
@peaks << [x, (@constant-y).round(5)]
|
97
|
+
end
|
98
|
+
|
99
|
+
@peaks.sort!
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
data/sample/sample.dat
ADDED
@@ -0,0 +1,261 @@
|
|
1
|
+
0 46.177
|
2
|
+
1 46.177
|
3
|
+
2 46.168
|
4
|
+
3 46.157
|
5
|
+
4 46.151
|
6
|
+
5 46.144
|
7
|
+
6 46.138
|
8
|
+
7 46.135
|
9
|
+
8 46.133
|
10
|
+
9 46.132
|
11
|
+
10 46.132
|
12
|
+
11 46.133
|
13
|
+
12 46.145
|
14
|
+
13 46.149
|
15
|
+
14 46.157
|
16
|
+
15 46.166
|
17
|
+
16 46.184
|
18
|
+
17 46.195
|
19
|
+
18 46.205
|
20
|
+
19 46.214
|
21
|
+
20 46.225
|
22
|
+
21 46.234
|
23
|
+
22 46.234
|
24
|
+
23 46.241
|
25
|
+
24 46.245
|
26
|
+
25 46.246
|
27
|
+
26 46.239
|
28
|
+
27 46.235
|
29
|
+
28 46.232
|
30
|
+
29 46.229
|
31
|
+
30 46.221
|
32
|
+
31 46.214
|
33
|
+
32 46.207
|
34
|
+
33 46.204
|
35
|
+
34 46.187
|
36
|
+
35 46.173
|
37
|
+
36 46.152
|
38
|
+
37 46.137
|
39
|
+
38 46.119
|
40
|
+
39 46.104
|
41
|
+
40 46.094
|
42
|
+
41 46.082
|
43
|
+
42 46.076
|
44
|
+
43 46.061
|
45
|
+
44 46.065
|
46
|
+
45 46.067
|
47
|
+
46 46.072
|
48
|
+
47 46.08
|
49
|
+
48 46.084
|
50
|
+
49 46.08
|
51
|
+
50 46.071
|
52
|
+
51 46.057
|
53
|
+
52 46.049
|
54
|
+
53 46.043
|
55
|
+
54 46.026
|
56
|
+
55 45.999
|
57
|
+
56 45.98
|
58
|
+
57 45.961
|
59
|
+
58 45.946
|
60
|
+
59 45.937
|
61
|
+
60 45.93
|
62
|
+
61 45.927
|
63
|
+
62 45.918
|
64
|
+
63 45.91
|
65
|
+
64 45.905
|
66
|
+
65 45.913
|
67
|
+
66 45.916
|
68
|
+
67 45.915
|
69
|
+
68 45.909
|
70
|
+
69 45.902
|
71
|
+
70 45.898
|
72
|
+
71 45.89
|
73
|
+
72 45.863
|
74
|
+
73 45.841
|
75
|
+
74 45.826
|
76
|
+
75 45.806
|
77
|
+
76 45.79
|
78
|
+
77 45.775
|
79
|
+
78 45.761
|
80
|
+
79 45.751
|
81
|
+
80 45.739
|
82
|
+
81 45.739
|
83
|
+
82 45.762
|
84
|
+
83 45.778
|
85
|
+
84 45.793
|
86
|
+
85 45.81
|
87
|
+
86 45.842
|
88
|
+
87 45.864
|
89
|
+
88 45.888
|
90
|
+
89 45.91
|
91
|
+
90 45.928
|
92
|
+
91 45.942
|
93
|
+
92 45.953
|
94
|
+
93 45.961
|
95
|
+
94 45.967
|
96
|
+
95 45.97
|
97
|
+
96 45.95
|
98
|
+
97 45.944
|
99
|
+
98 45.931
|
100
|
+
99 45.916
|
101
|
+
100 45.903
|
102
|
+
101 45.884
|
103
|
+
102 45.864
|
104
|
+
103 45.848
|
105
|
+
104 45.835
|
106
|
+
105 45.827
|
107
|
+
106 45.827
|
108
|
+
107 45.82
|
109
|
+
108 45.82
|
110
|
+
109 45.819
|
111
|
+
110 45.82
|
112
|
+
111 45.828
|
113
|
+
112 45.84
|
114
|
+
113 45.848
|
115
|
+
114 45.853
|
116
|
+
115 45.853
|
117
|
+
116 45.847
|
118
|
+
117 45.854
|
119
|
+
118 45.864
|
120
|
+
119 45.876
|
121
|
+
120 45.887
|
122
|
+
121 45.898
|
123
|
+
122 45.902
|
124
|
+
123 45.91
|
125
|
+
124 45.918
|
126
|
+
125 45.928
|
127
|
+
126 45.939
|
128
|
+
127 45.937
|
129
|
+
128 45.932
|
130
|
+
129 45.922
|
131
|
+
130 45.913
|
132
|
+
131 45.903
|
133
|
+
132 45.893
|
134
|
+
133 45.883
|
135
|
+
134 45.871
|
136
|
+
135 45.86
|
137
|
+
136 45.854
|
138
|
+
137 45.846
|
139
|
+
138 45.832
|
140
|
+
139 45.824
|
141
|
+
140 45.818
|
142
|
+
141 45.809
|
143
|
+
142 45.802
|
144
|
+
143 45.801
|
145
|
+
144 45.802
|
146
|
+
145 45.807
|
147
|
+
146 45.811
|
148
|
+
147 45.821
|
149
|
+
148 45.837
|
150
|
+
149 45.848
|
151
|
+
150 45.855
|
152
|
+
151 45.864
|
153
|
+
152 45.871
|
154
|
+
153 45.876
|
155
|
+
154 45.882
|
156
|
+
155 45.878
|
157
|
+
156 45.863
|
158
|
+
157 45.85
|
159
|
+
158 45.838
|
160
|
+
159 45.819
|
161
|
+
160 45.808
|
162
|
+
161 45.79
|
163
|
+
162 45.78
|
164
|
+
163 45.766
|
165
|
+
164 45.749
|
166
|
+
165 45.734
|
167
|
+
166 45.726
|
168
|
+
167 45.717
|
169
|
+
168 45.709
|
170
|
+
169 45.714
|
171
|
+
170 45.712
|
172
|
+
171 45.706
|
173
|
+
172 45.707
|
174
|
+
173 45.712
|
175
|
+
174 45.712
|
176
|
+
175 45.718
|
177
|
+
176 45.721
|
178
|
+
177 45.722
|
179
|
+
178 45.721
|
180
|
+
179 45.713
|
181
|
+
180 45.712
|
182
|
+
181 45.721
|
183
|
+
182 45.717
|
184
|
+
183 45.7
|
185
|
+
184 45.695
|
186
|
+
185 45.683
|
187
|
+
186 45.677
|
188
|
+
187 45.67
|
189
|
+
188 45.66
|
190
|
+
189 45.647
|
191
|
+
190 45.62
|
192
|
+
191 45.582
|
193
|
+
192 45.544
|
194
|
+
193 45.515
|
195
|
+
194 45.487
|
196
|
+
195 45.463
|
197
|
+
196 45.431
|
198
|
+
197 45.404
|
199
|
+
198 45.389
|
200
|
+
199 45.378
|
201
|
+
200 45.379
|
202
|
+
201 45.385
|
203
|
+
202 45.392
|
204
|
+
203 45.395
|
205
|
+
204 45.392
|
206
|
+
205 45.395
|
207
|
+
206 45.402
|
208
|
+
207 45.402
|
209
|
+
208 45.399
|
210
|
+
209 45.411
|
211
|
+
210 45.414
|
212
|
+
211 45.42
|
213
|
+
212 45.427
|
214
|
+
213 45.442
|
215
|
+
214 45.451
|
216
|
+
215 45.452
|
217
|
+
216 45.451
|
218
|
+
217 45.453
|
219
|
+
218 45.453
|
220
|
+
219 45.442
|
221
|
+
220 45.432
|
222
|
+
221 45.427
|
223
|
+
222 45.412
|
224
|
+
223 45.396
|
225
|
+
224 45.378
|
226
|
+
225 45.368
|
227
|
+
226 45.362
|
228
|
+
227 45.352
|
229
|
+
228 45.339
|
230
|
+
229 45.327
|
231
|
+
230 45.324
|
232
|
+
231 45.314
|
233
|
+
232 45.312
|
234
|
+
233 45.318
|
235
|
+
234 45.338
|
236
|
+
235 45.376
|
237
|
+
236 45.416
|
238
|
+
237 45.462
|
239
|
+
238 45.5
|
240
|
+
239 45.534
|
241
|
+
240 45.565
|
242
|
+
241 45.606
|
243
|
+
242 45.646
|
244
|
+
243 45.68
|
245
|
+
244 45.708
|
246
|
+
245 45.719
|
247
|
+
246 45.725
|
248
|
+
247 45.723
|
249
|
+
248 45.732
|
250
|
+
249 45.739
|
251
|
+
250 45.75
|
252
|
+
251 45.767
|
253
|
+
252 45.782
|
254
|
+
253 45.816
|
255
|
+
254 45.852
|
256
|
+
255 45.875
|
257
|
+
256 45.899
|
258
|
+
257 45.927
|
259
|
+
258 45.955
|
260
|
+
259 45.986
|
261
|
+
260 46.014
|
data/sample/sample.rb
ADDED
data/togezo-0.1.0.gem
ADDED
Binary file
|
data/togezo.gemspec
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'togezo/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "togezo"
|
8
|
+
spec.version = Togezo::VERSION
|
9
|
+
spec.authors = ["deepneko"]
|
10
|
+
spec.email = ["deep.inu@gmail.com"]
|
11
|
+
|
12
|
+
spec.summary = %q{Togezo provides extreme values on a chart via Gaussian/Pearson.}
|
13
|
+
spec.homepage = "https://github.com/deepneko/togezo"
|
14
|
+
|
15
|
+
# Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
|
16
|
+
# delete this section to allow pushing this gem to any host.
|
17
|
+
#if spec.respond_to?(:metadata)
|
18
|
+
# spec.metadata['allowed_push_host'] = "TODO: Set to 'http://mygemserver.com'"
|
19
|
+
#else
|
20
|
+
# raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
|
21
|
+
#end
|
22
|
+
|
23
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
24
|
+
spec.bindir = "exe"
|
25
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
26
|
+
spec.require_paths = ["lib"]
|
27
|
+
|
28
|
+
spec.add_development_dependency "bundler", "~> 1.10"
|
29
|
+
#spec.add_development_dependency "rake", "~> 10.0"
|
30
|
+
spec.add_development_dependency "rspec"
|
31
|
+
end
|
metadata
ADDED
@@ -0,0 +1,85 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: togezo
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- deepneko
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-11-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.10'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.10'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rspec
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description:
|
42
|
+
email:
|
43
|
+
- deep.inu@gmail.com
|
44
|
+
executables: []
|
45
|
+
extensions: []
|
46
|
+
extra_rdoc_files: []
|
47
|
+
files:
|
48
|
+
- ".gitignore"
|
49
|
+
- ".rspec"
|
50
|
+
- ".travis.yml"
|
51
|
+
- Gemfile
|
52
|
+
- README.md
|
53
|
+
- Rakefile
|
54
|
+
- bin/console
|
55
|
+
- bin/setup
|
56
|
+
- lib/togezo.rb
|
57
|
+
- lib/togezo/version.rb
|
58
|
+
- sample/sample.dat
|
59
|
+
- sample/sample.rb
|
60
|
+
- togezo-0.1.0.gem
|
61
|
+
- togezo.gemspec
|
62
|
+
homepage: https://github.com/deepneko/togezo
|
63
|
+
licenses: []
|
64
|
+
metadata: {}
|
65
|
+
post_install_message:
|
66
|
+
rdoc_options: []
|
67
|
+
require_paths:
|
68
|
+
- lib
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: '0'
|
74
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
75
|
+
requirements:
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: '0'
|
79
|
+
requirements: []
|
80
|
+
rubyforge_project:
|
81
|
+
rubygems_version: 2.4.8
|
82
|
+
signing_key:
|
83
|
+
specification_version: 4
|
84
|
+
summary: Togezo provides extreme values on a chart via Gaussian/Pearson.
|
85
|
+
test_files: []
|