sooth 2.1.2 → 2.3.1

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.
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: []