module ProbDSL
Constants
- PNil
Public Instance Methods
collect(pred, tree)
click to toggle source
# File lib/probdsl.rb, line 107 def collect(pred, tree) tmp = Hash.new(0) n = 0 while (pred.call) tmp[tree.eval_pick] += 1.0 n += 1 end [PDistribution.new(:MAP, tmp), n] end
collecting(pred, &blk)
click to toggle source
# File lib/probdsl.rb, line 117 def collecting(pred, &blk) collect(pred, run_prob(&blk)) end
dist(data)
click to toggle source
# File lib/probdsl.rb, line 145 def dist(data) shift do |cont| map = Hash.new 0 data.each do |prob, value| tmp = proc { cont.call value } map[tmp] = prob end PDistribution.new :MAP, map end end
flip(prob, *data)
click to toggle source
# File lib/probdsl.rb, line 161 def flip(prob, *data) case data.length when 0 dist [[prob, true], [1 - prob, false]] when 1 dist [[prob, data[0]], [1 - prob, nil]] when 2 dist [[prob, data[0]], [1 - prob, data[1]]] else raise 'illegal number of arguments' end end
guard(bool)
click to toggle source
# File lib/probdsl.rb, line 137 def guard(bool) if !bool shift do |cont| PNil end end end
loop_k(ktimes)
click to toggle source
# File lib/probdsl.rb, line 121 def loop_k(ktimes) tmp = ktimes proc { ret = tmp > 0 tmp-=1 ret } end
loop_t(seconds)
click to toggle source
# File lib/probdsl.rb, line 130 def loop_t(seconds) start = Time.now proc { (Time.now - start) < seconds } end
norm_prob(&blk)
click to toggle source
# File lib/probdsl.rb, line 99 def norm_prob(&blk) prob(&blk).normalize end
pick(&blk)
click to toggle source
# File lib/probdsl.rb, line 103 def pick(&blk) run_prob(&blk).eval_pick end
prob(&blk)
click to toggle source
# File lib/probdsl.rb, line 95 def prob(&blk) run_prob(&blk).eval end
run_prob(&blk)
click to toggle source
# File lib/probdsl.rb, line 84 def run_prob(&blk) reset { value = blk.call if value == nil PNil else PValue.new value end } end
uniform(data)
click to toggle source
# File lib/probdsl.rb, line 157 def uniform(data) dist(data.map {|x| [1, x]}) end