pest 0.0.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.
@@ -0,0 +1,118 @@
1
+ require 'spec_helper'
2
+
3
+ class ProbabilityTestClass
4
+ include Pest::Estimator
5
+ include Pest::Function::Probability
6
+ end
7
+
8
+ describe Pest::Function::Probability do
9
+ before(:each) do
10
+ @v1 = Pest::Variable.new(:name => :foo)
11
+ @v2 = Pest::Variable.new(:name => :bar)
12
+ @v3 = Pest::Variable.new(:name => :baz)
13
+ @instance = ProbabilityTestClass.new
14
+ @instance.stub(:variables).and_return({:foo => @v1, :bar => @v2})
15
+ end
16
+
17
+ describe "#probability" do
18
+ it "returns a Builder" do
19
+ @instance.probability.should be_a(Pest::Function::Probability::Builder)
20
+ end
21
+
22
+ it "is aliased as p" do
23
+ @instance.p.should be_a(Pest::Function::Probability::Builder)
24
+ end
25
+ end
26
+
27
+ describe Pest::Function::Probability::Builder do
28
+ describe "::new" do
29
+ before(:each) { @builder = ProbabilityTestClass::Builder.new(@instance, [@v1, :bar]) }
30
+
31
+ it "sets estimator" do
32
+ @builder.estimator.should == @instance
33
+ end
34
+
35
+ it "sets event" do
36
+ @builder.event.should == [@v1, @v2].to_set
37
+ end
38
+
39
+ it "fails if variable undefined for estimator" do
40
+ lambda { ProbabilityTestClass::Builder.new(@instance, [@v1, @v3]) }.should raise_error(ArgumentError)
41
+ end
42
+
43
+ it "constructs dataset if passed hash"
44
+ end
45
+
46
+ describe "#given" do
47
+ before(:each) { @builder = ProbabilityTestClass::Builder.new(@instance, [:foo]) }
48
+
49
+ it "sets givens" do
50
+ @builder.given(:bar)
51
+ @builder.givens.should include(@v2)
52
+ end
53
+
54
+ it "returns self" do
55
+ @builder.given(:bar).should be_a(ProbabilityTestClass::Builder)
56
+ end
57
+
58
+ it "fails if variables aren't variables on the estimator" do
59
+ lambda { @builder.given(:baz) }.should raise_error(ArgumentError)
60
+ end
61
+
62
+ it "adds to dataset if passed hash"
63
+
64
+ it "raises error if passed hash with existing (non hash) dataset"
65
+ end
66
+
67
+ describe "#in" do
68
+ it "sets data source" do
69
+ data_set = double('DataSet')
70
+ ProbabilityTestClass::Builder.new(@instance,[:foo]).in(data_set).data_source.should == data_set
71
+ end
72
+
73
+ it "raises error if existing data source"
74
+ end
75
+
76
+ describe "#evaluate" do
77
+ it "generates dataset if not specified"
78
+
79
+ it "gets probability of event" do
80
+ event = double('EventDist')
81
+ @instance.distributions.stub(:[]).with([@v1].to_set).and_return(event)
82
+ event.should_receive(:probability).and_return 0.5
83
+
84
+ ProbabilityTestClass::Builder.new(@instance,[:foo]).evaluate
85
+ end
86
+
87
+ it "gets probability of givens" do
88
+ event = double('EventDist')
89
+ given = double('GivenDist')
90
+ @instance.distributions.stub(:[]).with([@v1].to_set).and_return(event)
91
+ @instance.distributions.stub(:[]).with([@v2].to_set).and_return(given)
92
+ event.stub(:probability).and_return 0.5
93
+ given.should_receive(:probability).and_return 0.5
94
+
95
+ ProbabilityTestClass::Builder.new(@instance,[:foo]).given(:bar).evaluate
96
+ end
97
+
98
+ it "returns Pr event / givens (if givens)" do
99
+ event = double('EventDist')
100
+ given = double('GivenDist')
101
+ @instance.distributions.stub(:[]).with([@v1].to_set).and_return(event)
102
+ @instance.distributions.stub(:[]).with([@v2].to_set).and_return(given)
103
+ event.stub(:probability).and_return 0.5
104
+ given.stub(:probability).and_return 0.5
105
+
106
+ ProbabilityTestClass::Builder.new(@instance,[:foo]).given(:bar).evaluate.should == 1.0
107
+ end
108
+
109
+ it "returns Pr event (if no givens)" do
110
+ event = double('EventDist')
111
+ @instance.distributions.stub(:[]).with([@v1].to_set).and_return(event)
112
+ event.stub(:probability).and_return 0.5
113
+
114
+ ProbabilityTestClass::Builder.new(@instance,[:foo]).evaluate.should == 0.5
115
+ end
116
+ end
117
+ end
118
+ end
@@ -0,0 +1,73 @@
1
+ require 'spec_helper'
2
+
3
+ describe Pest::Variable do
4
+ before(:each) { @class = Pest::Variable }
5
+
6
+ describe "#uuid" do
7
+ it "is generated if not specified" do
8
+ @class.new.uuid.should be_true
9
+ end
10
+
11
+ it "uses uuid passed at instantiation" do
12
+ @class.new(:uuid => 'foo').uuid.should == 'foo'
13
+ end
14
+ end
15
+
16
+ describe "#name" do
17
+ it "has it" do
18
+ @class.new(:name => 'foo').name.should == 'foo'
19
+ end
20
+ end
21
+
22
+ describe "#identifier" do
23
+ before(:each) do
24
+ @instance = @class.new(:name => 'foo', :uuid => 'bar')
25
+ end
26
+
27
+ it "concatenates name:uuid" do
28
+ @instance.identifier.should == 'foo:bar'
29
+ end
30
+
31
+ it "is aliased as serialize" do
32
+ @instance.serialize.should == 'foo:bar'
33
+ end
34
+ end
35
+
36
+ describe "#==" do
37
+ before(:each) do
38
+ @one = @class.new(:name => 'foo', :uuid => 'bar')
39
+ @two = @class.new(:name => 'foo', :uuid => 'bar')
40
+ @three = @class.new(:name => 'foo', :uuid => 'baz')
41
+ end
42
+
43
+ it "returns true if same identifier" do
44
+ @one.should == @two
45
+ end
46
+
47
+ it "returns false if identifier doesn't match" do
48
+ @one.should_not == @three
49
+ end
50
+
51
+ it "returns false if not a Variable instance" do
52
+ @one.should_not == 'hello'
53
+ end
54
+
55
+ it "works for sets" do
56
+ [@one].to_set.should == [@two].to_set
57
+ end
58
+ end
59
+
60
+ describe "::deserialize" do
61
+ before(:each) do
62
+ @instance = @class.deserialize('foo:4f9b5243-2e2e-4a90-8009-21079fad5855')
63
+ end
64
+
65
+ it "instantiates with name" do
66
+ @instance.name.should == 'foo'
67
+ end
68
+
69
+ it "instantiates with uuid" do
70
+ @instance.uuid.should == '4f9b5243-2e2e-4a90-8009-21079fad5855'
71
+ end
72
+ end
73
+ end
data/spec/pest_spec.rb ADDED
@@ -0,0 +1,4 @@
1
+ require 'spec_helper'
2
+
3
+ describe Pest do
4
+ end
@@ -0,0 +1,14 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+ require 'rspec'
4
+ require 'pest'
5
+ require 'pry'
6
+
7
+ # Requires supporting files with custom matchers and macros, etc,
8
+ # in ./support/ and its subdirectories.
9
+ Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
10
+
11
+ RSpec.configure do |config|
12
+ config.color_enabled = true
13
+ config.formatter = :documentation
14
+ end
metadata ADDED
@@ -0,0 +1,321 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pest
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Ryan Michael
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-06-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: pest
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: narray
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ type: :runtime
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ - !ruby/object:Gem::Dependency
47
+ name: uuidtools
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
63
+ name: jeweler
64
+ requirement: !ruby/object:Gem::Requirement
65
+ none: false
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ type: :development
71
+ prerelease: false
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
79
+ name: rake
80
+ requirement: !ruby/object:Gem::Requirement
81
+ none: false
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ type: :development
87
+ prerelease: false
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ - !ruby/object:Gem::Dependency
95
+ name: pry
96
+ requirement: !ruby/object:Gem::Requirement
97
+ none: false
98
+ requirements:
99
+ - - ! '>='
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :development
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ - !ruby/object:Gem::Dependency
111
+ name: rspec
112
+ requirement: !ruby/object:Gem::Requirement
113
+ none: false
114
+ requirements:
115
+ - - ! '>='
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
122
+ requirements:
123
+ - - ! '>='
124
+ - !ruby/object:Gem::Version
125
+ version: '0'
126
+ - !ruby/object:Gem::Dependency
127
+ name: jeweler
128
+ requirement: !ruby/object:Gem::Requirement
129
+ none: false
130
+ requirements:
131
+ - - ! '>='
132
+ - !ruby/object:Gem::Version
133
+ version: '0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
138
+ requirements:
139
+ - - ! '>='
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ - !ruby/object:Gem::Dependency
143
+ name: rake
144
+ requirement: !ruby/object:Gem::Requirement
145
+ none: false
146
+ requirements:
147
+ - - ! '>='
148
+ - !ruby/object:Gem::Version
149
+ version: '0'
150
+ type: :development
151
+ prerelease: false
152
+ version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
154
+ requirements:
155
+ - - ! '>='
156
+ - !ruby/object:Gem::Version
157
+ version: '0'
158
+ - !ruby/object:Gem::Dependency
159
+ name: pry
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: rspec
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :development
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ - !ruby/object:Gem::Dependency
191
+ name: jeweler
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ type: :development
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ - !ruby/object:Gem::Dependency
207
+ name: rake
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: pry
224
+ requirement: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: rspec
240
+ requirement: !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - ! '>='
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ! '>='
252
+ - !ruby/object:Gem::Version
253
+ version: '0'
254
+ description: Wrappers to facilitate different classes of probability estimators
255
+ email: kerinin@gmail.com
256
+ executables: []
257
+ extensions: []
258
+ extra_rdoc_files:
259
+ - README.md
260
+ files:
261
+ - .travis.yml
262
+ - Gemfile
263
+ - README.md
264
+ - Rakefile
265
+ - VERSION
266
+ - lib/pest.rb
267
+ - lib/pest/data_set.rb
268
+ - lib/pest/data_set/hash.rb
269
+ - lib/pest/data_set/narray.rb
270
+ - lib/pest/estimator.rb
271
+ - lib/pest/estimator/frequency.rb
272
+ - lib/pest/function.rb
273
+ - lib/pest/function/entropy.rb
274
+ - lib/pest/function/probability.rb
275
+ - lib/pest/variable.rb
276
+ - lib/pest/version.rb
277
+ - pest.gemspec
278
+ - spec/pest/data_set/hash_spec.rb
279
+ - spec/pest/data_set/narray_spec.rb
280
+ - spec/pest/data_set_spec.rb
281
+ - spec/pest/estimator/bernoulli_spec.rb
282
+ - spec/pest/estimator/frequency_spec.rb
283
+ - spec/pest/estimator/gaussian_spec.rb
284
+ - spec/pest/estimator/multinomial_spec.rb
285
+ - spec/pest/estimator/parzen_spec.rb
286
+ - spec/pest/estimator/svd_spec.rb
287
+ - spec/pest/estimator_spec.rb
288
+ - spec/pest/function/entropy_spec.rb
289
+ - spec/pest/function/probability_spec.rb
290
+ - spec/pest/variable_spec.rb
291
+ - spec/pest_spec.rb
292
+ - spec/spec_helper.rb
293
+ homepage: http://github.com/kerinin/pest
294
+ licenses:
295
+ - MIT
296
+ post_install_message:
297
+ rdoc_options: []
298
+ require_paths:
299
+ - lib
300
+ required_ruby_version: !ruby/object:Gem::Requirement
301
+ none: false
302
+ requirements:
303
+ - - ! '>='
304
+ - !ruby/object:Gem::Version
305
+ version: '0'
306
+ segments:
307
+ - 0
308
+ hash: 1228436893259632292
309
+ required_rubygems_version: !ruby/object:Gem::Requirement
310
+ none: false
311
+ requirements:
312
+ - - ! '>='
313
+ - !ruby/object:Gem::Version
314
+ version: '0'
315
+ requirements: []
316
+ rubyforge_project:
317
+ rubygems_version: 1.8.24
318
+ signing_key:
319
+ specification_version: 3
320
+ summary: Probability Estimation
321
+ test_files: []