sooth 2.1.2 → 2.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: d52d3347ee6806fdb75d4ede666c0c6571fb8f32393f459765b45660adc79e13
4
- data.tar.gz: 2571b62383a6751b6709814b262779d73e3259853644856f3ff20d34f44f7698
3
+ metadata.gz: 5c3224ec93d2ffe574a622e8d52da2e1c24462314fb935cab6b9382f89cdd0aa
4
+ data.tar.gz: b173586c080c6fc9d905c16ab73a192f003203f4300c9a92a8245b1c0893c403
5
5
  SHA512:
6
- metadata.gz: 3069f1da2d2bbdb6a856704503be13b92f1998d1c8fda7cdfc75fe0ca8c700d67c47de97c0590425dbd83a78b895ab0fa45dd576851e492ec3320c2454b03de1
7
- data.tar.gz: dac4c0bad6f63069b59e9665e33a0cae791271d649c507da0e19811e2841d42fac4c361bdc6915b0320897ea9d50d4b37046a90991b00e8882f1463c2b2b7c56
6
+ metadata.gz: b80c93d0622c983af52e91c019136fec95fdfa1e4f94044c7c0608f46f4c5e877921edf7e8644259e5e5ab1f9adbd84186cc31f8cd9ca2100003f27fb339db46
7
+ data.tar.gz: bd16cbbb0fb6fa122709213303e5906a9aa193e85f0ef3e2da10a89d3ce815412abfbc66b24dce360b27f6bd787c91ec4169f14c6fa695781bce05544c83ef67
data/Gemfile CHANGED
@@ -1,12 +1,12 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  group :development do
4
- gem 'rspec', '~> 3.7'
4
+ gem 'rspec', '~> 3.10'
5
5
  gem 'yard', '~> 0.9'
6
- gem 'rdoc', '~> 6.0'
7
- gem 'jeweler', '~> 2.3'
8
- gem 'simplecov', '~> 0.15'
9
- gem 'byebug', '~> 10.0'
10
- gem 'rake-compiler', '~> 1.0'
11
- gem 'github_changelog_generator', '~> 1.14'
6
+ gem 'rdoc', '~> 6.3'
7
+ gem 'juwelier', '~> 2.4'
8
+ gem 'simplecov', '~> 0.21'
9
+ gem 'byebug', '~> 11.1'
10
+ gem 'rake-compiler', '~> 1.1'
11
+ gem 'github_changelog_generator', '~> 1.15'
12
12
  end
data/Gemfile.lock CHANGED
@@ -1,119 +1,175 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- activesupport (5.1.5)
4
+ activesupport (6.1.4)
5
5
  concurrent-ruby (~> 1.0, >= 1.0.2)
6
- i18n (~> 0.7)
7
- minitest (~> 5.1)
8
- tzinfo (~> 1.1)
9
- addressable (2.4.0)
10
- builder (3.2.3)
11
- byebug (10.0.0)
12
- concurrent-ruby (1.0.5)
6
+ i18n (>= 1.6, < 2)
7
+ minitest (>= 5.1)
8
+ tzinfo (~> 2.0)
9
+ zeitwerk (~> 2.3)
10
+ addressable (2.8.0)
11
+ public_suffix (>= 2.0.2, < 5.0)
12
+ async (1.29.2)
13
+ console (~> 1.10)
14
+ nio4r (~> 2.3)
15
+ timers (~> 4.1)
16
+ async-http (0.56.5)
17
+ async (>= 1.25)
18
+ async-io (>= 1.28)
19
+ async-pool (>= 0.2)
20
+ protocol-http (~> 0.22.0)
21
+ protocol-http1 (~> 0.14.0)
22
+ protocol-http2 (~> 0.14.0)
23
+ async-http-faraday (0.11.0)
24
+ async-http (~> 0.42)
25
+ faraday
26
+ async-io (1.32.2)
27
+ async
28
+ async-pool (0.3.8)
29
+ async (>= 1.25)
30
+ builder (3.2.4)
31
+ byebug (11.1.3)
32
+ concurrent-ruby (1.1.9)
33
+ console (1.13.1)
34
+ fiber-local
13
35
  descendants_tracker (0.0.4)
14
36
  thread_safe (~> 0.3, >= 0.3.1)
15
- diff-lcs (1.3)
16
- docile (1.1.5)
17
- faraday (0.9.2)
37
+ diff-lcs (1.4.4)
38
+ docile (1.4.0)
39
+ faraday (1.5.1)
40
+ faraday-em_http (~> 1.0)
41
+ faraday-em_synchrony (~> 1.0)
42
+ faraday-excon (~> 1.1)
43
+ faraday-httpclient (~> 1.0.1)
44
+ faraday-net_http (~> 1.0)
45
+ faraday-net_http_persistent (~> 1.1)
46
+ faraday-patron (~> 1.0)
18
47
  multipart-post (>= 1.2, < 3)
19
- faraday-http-cache (2.0.0)
20
- faraday (~> 0.8)
21
- git (1.3.0)
22
- github_api (0.16.0)
23
- addressable (~> 2.4.0)
48
+ ruby2_keywords (>= 0.0.4)
49
+ faraday-em_http (1.0.0)
50
+ faraday-em_synchrony (1.0.0)
51
+ faraday-excon (1.1.0)
52
+ faraday-http-cache (2.2.0)
53
+ faraday (>= 0.8)
54
+ faraday-httpclient (1.0.1)
55
+ faraday-net_http (1.0.1)
56
+ faraday-net_http_persistent (1.2.0)
57
+ faraday-patron (1.0.0)
58
+ fiber-local (1.0.0)
59
+ git (1.9.1)
60
+ rchardet (~> 1.8)
61
+ github_api (0.19.0)
62
+ addressable (~> 2.4)
24
63
  descendants_tracker (~> 0.0.4)
25
- faraday (~> 0.8, < 0.10)
26
- hashie (>= 3.4)
27
- mime-types (>= 1.16, < 3.0)
64
+ faraday (>= 0.8, < 2)
65
+ hashie (~> 3.5, >= 3.5.2)
28
66
  oauth2 (~> 1.0)
29
- github_changelog_generator (1.14.3)
67
+ github_changelog_generator (1.16.4)
30
68
  activesupport
69
+ async (>= 1.25.0)
70
+ async-http-faraday
31
71
  faraday-http-cache
32
72
  multi_json
33
73
  octokit (~> 4.6)
34
- rainbow (>= 2.1)
74
+ rainbow (>= 2.2.1)
35
75
  rake (>= 10.0)
36
- retriable (~> 2.1)
37
- hashie (3.5.7)
38
- highline (1.7.10)
39
- i18n (0.9.5)
76
+ hashie (3.6.0)
77
+ highline (2.0.3)
78
+ i18n (1.8.10)
40
79
  concurrent-ruby (~> 1.0)
41
- jeweler (2.3.9)
80
+ juwelier (2.4.9)
42
81
  builder
43
82
  bundler
44
- git (>= 1.2.5)
45
- github_api (~> 0.16.0)
46
- highline (>= 1.6.15)
47
- nokogiri (>= 1.5.10)
83
+ git
84
+ github_api
85
+ highline
86
+ kamelcase (~> 0)
87
+ nokogiri
48
88
  psych
49
89
  rake
50
90
  rdoc
51
91
  semver2
52
- json (2.1.0)
53
- jwt (1.5.6)
54
- mime-types (2.99.3)
55
- mini_portile2 (2.3.0)
56
- minitest (5.11.3)
57
- multi_json (1.13.1)
92
+ jwt (2.2.3)
93
+ kamelcase (0.0.2)
94
+ semver2 (~> 3)
95
+ mini_portile2 (2.5.3)
96
+ minitest (5.14.4)
97
+ multi_json (1.15.0)
58
98
  multi_xml (0.6.0)
59
- multipart-post (2.0.0)
60
- nokogiri (1.8.2)
61
- mini_portile2 (~> 2.3.0)
62
- oauth2 (1.4.0)
63
- faraday (>= 0.8, < 0.13)
64
- jwt (~> 1.0)
99
+ multipart-post (2.1.1)
100
+ nio4r (2.5.7)
101
+ nokogiri (1.11.7)
102
+ mini_portile2 (~> 2.5.0)
103
+ racc (~> 1.4)
104
+ oauth2 (1.4.7)
105
+ faraday (>= 0.8, < 2.0)
106
+ jwt (>= 1.0, < 3.0)
65
107
  multi_json (~> 1.3)
66
108
  multi_xml (~> 0.5)
67
109
  rack (>= 1.2, < 3)
68
- octokit (4.8.0)
110
+ octokit (4.21.0)
111
+ faraday (>= 0.9)
69
112
  sawyer (~> 0.8.0, >= 0.5.3)
70
- psych (3.0.2)
71
- rack (2.0.4)
113
+ protocol-hpack (1.4.2)
114
+ protocol-http (0.22.5)
115
+ protocol-http1 (0.14.1)
116
+ protocol-http (~> 0.22)
117
+ protocol-http2 (0.14.2)
118
+ protocol-hpack (~> 1.4)
119
+ protocol-http (~> 0.18)
120
+ psych (4.0.1)
121
+ public_suffix (4.0.6)
122
+ racc (1.5.2)
123
+ rack (2.2.3)
72
124
  rainbow (3.0.0)
73
- rake (12.3.0)
74
- rake-compiler (1.0.4)
125
+ rake (13.0.6)
126
+ rake-compiler (1.1.1)
75
127
  rake
76
- rdoc (6.0.1)
77
- retriable (2.1.0)
78
- rspec (3.7.0)
79
- rspec-core (~> 3.7.0)
80
- rspec-expectations (~> 3.7.0)
81
- rspec-mocks (~> 3.7.0)
82
- rspec-core (3.7.1)
83
- rspec-support (~> 3.7.0)
84
- rspec-expectations (3.7.0)
128
+ rchardet (1.8.0)
129
+ rdoc (6.3.2)
130
+ rspec (3.10.0)
131
+ rspec-core (~> 3.10.0)
132
+ rspec-expectations (~> 3.10.0)
133
+ rspec-mocks (~> 3.10.0)
134
+ rspec-core (3.10.1)
135
+ rspec-support (~> 3.10.0)
136
+ rspec-expectations (3.10.1)
85
137
  diff-lcs (>= 1.2.0, < 2.0)
86
- rspec-support (~> 3.7.0)
87
- rspec-mocks (3.7.0)
138
+ rspec-support (~> 3.10.0)
139
+ rspec-mocks (3.10.2)
88
140
  diff-lcs (>= 1.2.0, < 2.0)
89
- rspec-support (~> 3.7.0)
90
- rspec-support (3.7.1)
91
- sawyer (0.8.1)
92
- addressable (>= 2.3.5, < 2.6)
93
- faraday (~> 0.8, < 1.0)
141
+ rspec-support (~> 3.10.0)
142
+ rspec-support (3.10.2)
143
+ ruby2_keywords (0.0.5)
144
+ sawyer (0.8.2)
145
+ addressable (>= 2.3.5)
146
+ faraday (> 0.8, < 2.0)
94
147
  semver2 (3.4.2)
95
- simplecov (0.15.1)
96
- docile (~> 1.1.0)
97
- json (>= 1.8, < 3)
98
- simplecov-html (~> 0.10.0)
99
- simplecov-html (0.10.2)
148
+ simplecov (0.21.2)
149
+ docile (~> 1.1)
150
+ simplecov-html (~> 0.11)
151
+ simplecov_json_formatter (~> 0.1)
152
+ simplecov-html (0.12.3)
153
+ simplecov_json_formatter (0.1.3)
100
154
  thread_safe (0.3.6)
101
- tzinfo (1.2.5)
102
- thread_safe (~> 0.1)
103
- yard (0.9.12)
155
+ timers (4.3.3)
156
+ tzinfo (2.0.4)
157
+ concurrent-ruby (~> 1.0)
158
+ yard (0.9.26)
159
+ zeitwerk (2.4.2)
104
160
 
105
161
  PLATFORMS
106
162
  ruby
107
163
 
108
164
  DEPENDENCIES
109
- byebug (~> 10.0)
110
- github_changelog_generator (~> 1.14)
111
- jeweler (~> 2.3)
112
- rake-compiler (~> 1.0)
113
- rdoc (~> 6.0)
114
- rspec (~> 3.7)
115
- simplecov (~> 0.15)
165
+ byebug (~> 11.1)
166
+ github_changelog_generator (~> 1.15)
167
+ juwelier (~> 2.4)
168
+ rake-compiler (~> 1.1)
169
+ rdoc (~> 6.3)
170
+ rspec (~> 3.10)
171
+ simplecov (~> 0.21)
116
172
  yard (~> 0.9)
117
173
 
118
174
  BUNDLED WITH
119
- 1.16.1
175
+ 1.17.3
data/README.md CHANGED
@@ -1,5 +1,4 @@
1
1
  [![Gem Version](https://badge.fury.io/rb/sooth.svg)](http://badge.fury.io/rb/sooth)
2
- [![Dependency Status](https://gemnasium.com/kranzky/sooth.png)](https://gemnasium.com/kranzky/sooth)
3
2
  [![Codeship Status for jasonhutchens/sooth](https://codeship.com/projects/24d68130-e5b3-0132-369b-0addec64e5bc/status?branch=master)](https://codeship.com/projects/82075)
4
3
 
5
4
  Sooth
data/Rakefile CHANGED
@@ -11,8 +11,8 @@ rescue Bundler::BundlerError => e
11
11
  end
12
12
  require 'rake'
13
13
 
14
- require 'jeweler'
15
- Jeweler::Tasks.new do |gem|
14
+ require 'juwelier'
15
+ Juwelier::Tasks.new do |gem|
16
16
  # gem is a Gem::Specification... see http://guides.rubygems.org/specification-reference/ for more options
17
17
  gem.name = "sooth"
18
18
  gem.homepage = "http://github.com/jasonhutchens/sooth"
@@ -21,10 +21,10 @@ Jeweler::Tasks.new do |gem|
21
21
  gem.description = %Q{Sooth is a simple stochastic predictive model.}
22
22
  gem.email = "jasonhutchens@gmail.com"
23
23
  gem.authors = ["Jason Hutchens"]
24
- gem.required_ruby_version = "~> 2.1"
24
+ gem.required_ruby_version = ">= 2.1"
25
25
  # dependencies defined in Gemfile
26
26
  end
27
- Jeweler::RubygemsDotOrgTasks.new
27
+ Juwelier::RubygemsDotOrgTasks.new
28
28
 
29
29
  require 'rake/extensiontask'
30
30
  Rake::ExtensionTask.new('sooth_native')
data/VERSION CHANGED
@@ -1 +1 @@
1
- 2.1.2
1
+ 2.3.1
@@ -43,7 +43,10 @@ void method_sooth_native_deallocate(void * predictor);
43
43
  * def uncertainty(context)
44
44
  * # (native code)
45
45
  * end
46
- * def surprise(context, evemt)
46
+ * def surprise(context, event)
47
+ * # (native code)
48
+ * end
49
+ * def frequency(context, event)
47
50
  * # (native code)
48
51
  * end
49
52
  * end
@@ -159,6 +162,16 @@ VALUE method_sooth_native_uncertainty(VALUE self, VALUE context);
159
162
  */
160
163
  VALUE method_sooth_native_surprise(VALUE self, VALUE bigram, VALUE limit);
161
164
 
165
+ /*
166
+ * Return a number indicating the frequency that the event has been observed
167
+ * within the given context.
168
+ *
169
+ * @param [Fixnum] context A number that provides a context for observations.
170
+ * @param [Fixnum] event A number representing the observed event.
171
+ * @return [Float] The frequency, as a number between 0.0 and 1.0
172
+ */
173
+ VALUE method_sooth_native_frequency(VALUE self, VALUE bigram, VALUE limit);
174
+
162
175
  //------------------------------------------------------------------------------
163
176
 
164
177
  void Init_sooth_native()
@@ -181,6 +194,7 @@ void Init_sooth_native()
181
194
  rb_define_method(SoothNative, "distribution", method_sooth_native_distribution, 1);
182
195
  rb_define_method(SoothNative, "uncertainty", method_sooth_native_uncertainty, 1);
183
196
  rb_define_method(SoothNative, "surprise", method_sooth_native_surprise, 2);
197
+ rb_define_method(SoothNative, "frequency", method_sooth_native_frequency, 2);
184
198
  }
185
199
 
186
200
  //------------------------------------------------------------------------------
@@ -368,4 +382,16 @@ method_sooth_native_surprise(VALUE self, VALUE context, VALUE event)
368
382
  return DBL2NUM(surprise);
369
383
  }
370
384
 
385
+ //------------------------------------------------------------------------------
386
+
387
+ VALUE
388
+ method_sooth_native_frequency(VALUE self, VALUE context, VALUE event)
389
+ {
390
+ SoothPredictor * predictor = NULL;
391
+ Check_Type(context, T_FIXNUM);
392
+ Check_Type(event, T_FIXNUM);
393
+ Data_Get_Struct(self, SoothPredictor, predictor);
394
+ return DBL2NUM(sooth_predictor_frequency(predictor, NUM2UINT(context), NUM2UINT(event)));
395
+ }
396
+
371
397
  //==============================================================================
@@ -406,4 +406,26 @@ sooth_predictor_surprise(SoothPredictor * predictor, uint32_t id, uint32_t event
406
406
  return -log2(frequency);
407
407
  }
408
408
 
409
+ //------------------------------------------------------------------------------
410
+
411
+ double
412
+ sooth_predictor_frequency(SoothPredictor * predictor, uint32_t id, uint32_t event)
413
+ {
414
+ SoothContext * context = sooth_predictor_find_context(predictor, id);
415
+
416
+ if (context == NULL || context->count == 0)
417
+ {
418
+ return 0.0;
419
+ }
420
+
421
+ SoothStatistic * statistic = sooth_predictor_find_statistic(context, event);
422
+
423
+ if (statistic == NULL || statistic->count == 0)
424
+ {
425
+ return 0.0;
426
+ }
427
+
428
+ return (double)statistic->count / (double)context->count;
429
+ }
430
+
409
431
  //==============================================================================
@@ -30,6 +30,7 @@ uint32_t sooth_predictor_select(SoothPredictor * predictor, uint32_t id, uint32_
30
30
  SoothStatistic * sooth_predictor_distribution(SoothPredictor * predictor, uint32_t id);
31
31
  double sooth_predictor_uncertainty(SoothPredictor * predictor, uint32_t id);
32
32
  double sooth_predictor_surprise(SoothPredictor * predictor, uint32_t id, uint32_t symbol);
33
+ double sooth_predictor_frequency(SoothPredictor * predictor, uint32_t id, uint32_t symbol);
33
34
 
34
35
  //==============================================================================
35
36
 
data/sooth.gemspec CHANGED
@@ -1,22 +1,23 @@
1
- # Generated by jeweler
1
+ # Generated by juwelier
2
2
  # DO NOT EDIT THIS FILE DIRECTLY
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
3
+ # Instead, edit Juwelier::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
- # stub: sooth 2.1.2 ruby lib
5
+ # stub: sooth 2.3.1 ruby lib
6
6
  # stub: ext/sooth_native/extconf.rb
7
7
 
8
8
  Gem::Specification.new do |s|
9
9
  s.name = "sooth".freeze
10
- s.version = "2.1.2"
10
+ s.version = "2.3.1"
11
11
 
12
12
  s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
13
13
  s.require_paths = ["lib".freeze]
14
14
  s.authors = ["Jason Hutchens".freeze]
15
- s.date = "2018-03-15"
15
+ s.date = "2021-07-20"
16
16
  s.description = "Sooth is a simple stochastic predictive model.".freeze
17
17
  s.email = "jasonhutchens@gmail.com".freeze
18
18
  s.extensions = ["ext/sooth_native/extconf.rb".freeze]
19
19
  s.extra_rdoc_files = [
20
+ "CHANGELOG.md",
20
21
  "README.md"
21
22
  ]
22
23
  s.files = [
@@ -41,41 +42,41 @@ Gem::Specification.new do |s|
41
42
  ]
42
43
  s.homepage = "http://github.com/jasonhutchens/sooth".freeze
43
44
  s.licenses = ["UNLICENSE".freeze]
44
- s.required_ruby_version = Gem::Requirement.new("~> 2.1".freeze)
45
- s.rubygems_version = "2.7.3".freeze
45
+ s.required_ruby_version = Gem::Requirement.new(">= 2.1".freeze)
46
+ s.rubygems_version = "3.0.9".freeze
46
47
  s.summary = "Sooth is a simple stochastic predictive model.".freeze
47
48
 
48
49
  if s.respond_to? :specification_version then
49
50
  s.specification_version = 4
50
51
 
51
52
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
52
- s.add_development_dependency(%q<rspec>.freeze, ["~> 3.7"])
53
+ s.add_development_dependency(%q<rspec>.freeze, ["~> 3.10"])
53
54
  s.add_development_dependency(%q<yard>.freeze, ["~> 0.9"])
54
- s.add_development_dependency(%q<rdoc>.freeze, ["~> 6.0"])
55
- s.add_development_dependency(%q<jeweler>.freeze, ["~> 2.3"])
56
- s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.15"])
57
- s.add_development_dependency(%q<byebug>.freeze, ["~> 10.0"])
58
- s.add_development_dependency(%q<rake-compiler>.freeze, ["~> 1.0"])
59
- s.add_development_dependency(%q<github_changelog_generator>.freeze, ["~> 1.14"])
55
+ s.add_development_dependency(%q<rdoc>.freeze, ["~> 6.3"])
56
+ s.add_development_dependency(%q<juwelier>.freeze, ["~> 2.4"])
57
+ s.add_development_dependency(%q<simplecov>.freeze, ["~> 0.21"])
58
+ s.add_development_dependency(%q<byebug>.freeze, ["~> 11.1"])
59
+ s.add_development_dependency(%q<rake-compiler>.freeze, ["~> 1.1"])
60
+ s.add_development_dependency(%q<github_changelog_generator>.freeze, ["~> 1.15"])
60
61
  else
61
- s.add_dependency(%q<rspec>.freeze, ["~> 3.7"])
62
+ s.add_dependency(%q<rspec>.freeze, ["~> 3.10"])
62
63
  s.add_dependency(%q<yard>.freeze, ["~> 0.9"])
63
- s.add_dependency(%q<rdoc>.freeze, ["~> 6.0"])
64
- s.add_dependency(%q<jeweler>.freeze, ["~> 2.3"])
65
- s.add_dependency(%q<simplecov>.freeze, ["~> 0.15"])
66
- s.add_dependency(%q<byebug>.freeze, ["~> 10.0"])
67
- s.add_dependency(%q<rake-compiler>.freeze, ["~> 1.0"])
68
- s.add_dependency(%q<github_changelog_generator>.freeze, ["~> 1.14"])
64
+ s.add_dependency(%q<rdoc>.freeze, ["~> 6.3"])
65
+ s.add_dependency(%q<juwelier>.freeze, ["~> 2.4"])
66
+ s.add_dependency(%q<simplecov>.freeze, ["~> 0.21"])
67
+ s.add_dependency(%q<byebug>.freeze, ["~> 11.1"])
68
+ s.add_dependency(%q<rake-compiler>.freeze, ["~> 1.1"])
69
+ s.add_dependency(%q<github_changelog_generator>.freeze, ["~> 1.15"])
69
70
  end
70
71
  else
71
- s.add_dependency(%q<rspec>.freeze, ["~> 3.7"])
72
+ s.add_dependency(%q<rspec>.freeze, ["~> 3.10"])
72
73
  s.add_dependency(%q<yard>.freeze, ["~> 0.9"])
73
- s.add_dependency(%q<rdoc>.freeze, ["~> 6.0"])
74
- s.add_dependency(%q<jeweler>.freeze, ["~> 2.3"])
75
- s.add_dependency(%q<simplecov>.freeze, ["~> 0.15"])
76
- s.add_dependency(%q<byebug>.freeze, ["~> 10.0"])
77
- s.add_dependency(%q<rake-compiler>.freeze, ["~> 1.0"])
78
- s.add_dependency(%q<github_changelog_generator>.freeze, ["~> 1.14"])
74
+ s.add_dependency(%q<rdoc>.freeze, ["~> 6.3"])
75
+ s.add_dependency(%q<juwelier>.freeze, ["~> 2.4"])
76
+ s.add_dependency(%q<simplecov>.freeze, ["~> 0.21"])
77
+ s.add_dependency(%q<byebug>.freeze, ["~> 11.1"])
78
+ s.add_dependency(%q<rake-compiler>.freeze, ["~> 1.1"])
79
+ s.add_dependency(%q<github_changelog_generator>.freeze, ["~> 1.15"])
79
80
  end
80
81
  end
81
82
 
@@ -213,4 +213,25 @@ describe Sooth::Predictor do
213
213
  expect(predictor.surprise(1, 3)).to eq(8)
214
214
  end
215
215
  end
216
+
217
+ describe "#frequency" do
218
+ it "returns zero for a new context" do
219
+ expect(predictor.frequency(1, 3)).to eq(0)
220
+ end
221
+
222
+ it "returns zero for a new event" do
223
+ predictor.observe(1, 3)
224
+ expect(predictor.frequency(1, 4)).to eq(0)
225
+ end
226
+
227
+ it "is one for a lone event" do
228
+ predictor.observe(1, 3)
229
+ expect(predictor.frequency(1, 3)).to eq(1)
230
+ end
231
+
232
+ it "is uniform for a uniform distribution" do
233
+ (1..100).each { |i| predictor.observe(1, i) }
234
+ expect(predictor.frequency(1, 3)).to eq(0.01)
235
+ end
236
+ end
216
237
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sooth
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.2
4
+ version: 2.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Hutchens
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-15 00:00:00.000000000 Z
11
+ date: 2021-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '3.7'
19
+ version: '3.10'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '3.7'
26
+ version: '3.10'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: yard
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -44,90 +44,91 @@ dependencies:
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '6.0'
47
+ version: '6.3'
48
48
  type: :development
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '6.0'
54
+ version: '6.3'
55
55
  - !ruby/object:Gem::Dependency
56
- name: jeweler
56
+ name: juwelier
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '2.3'
61
+ version: '2.4'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '2.3'
68
+ version: '2.4'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: simplecov
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '0.15'
75
+ version: '0.21'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '0.15'
82
+ version: '0.21'
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: byebug
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '10.0'
89
+ version: '11.1'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '10.0'
96
+ version: '11.1'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rake-compiler
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '1.0'
103
+ version: '1.1'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '1.0'
110
+ version: '1.1'
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: github_changelog_generator
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '1.14'
117
+ version: '1.15'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '1.14'
124
+ version: '1.15'
125
125
  description: Sooth is a simple stochastic predictive model.
126
126
  email: jasonhutchens@gmail.com
127
127
  executables: []
128
128
  extensions:
129
129
  - ext/sooth_native/extconf.rb
130
130
  extra_rdoc_files:
131
+ - CHANGELOG.md
131
132
  - README.md
132
133
  files:
133
134
  - CHANGELOG.md
@@ -152,13 +153,13 @@ homepage: http://github.com/jasonhutchens/sooth
152
153
  licenses:
153
154
  - UNLICENSE
154
155
  metadata: {}
155
- post_install_message:
156
+ post_install_message:
156
157
  rdoc_options: []
157
158
  require_paths:
158
159
  - lib
159
160
  required_ruby_version: !ruby/object:Gem::Requirement
160
161
  requirements:
161
- - - "~>"
162
+ - - ">="
162
163
  - !ruby/object:Gem::Version
163
164
  version: '2.1'
164
165
  required_rubygems_version: !ruby/object:Gem::Requirement
@@ -167,9 +168,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
167
168
  - !ruby/object:Gem::Version
168
169
  version: '0'
169
170
  requirements: []
170
- rubyforge_project:
171
- rubygems_version: 2.7.3
172
- signing_key:
171
+ rubygems_version: 3.0.9
172
+ signing_key:
173
173
  specification_version: 4
174
174
  summary: Sooth is a simple stochastic predictive model.
175
175
  test_files: []