lib/bayesnet/node.rb in bayesnet-0.1.0 vs lib/bayesnet/node.rb in bayesnet-0.6.0

- old
+ new

@@ -4,12 +4,14 @@ def initialize(name, parent_nodes) @name = name @parent_nodes = parent_nodes @values = [] + @factor = Factor.new end + # +++ Node DSL +++ def values(hash_or_array = nil, &block) case hash_or_array when NilClass @values when Hash @@ -26,10 +28,25 @@ @values = hash_or_array @factor = block end end + def distributions(&block) + instance_eval(&block) + end + # --- Node DSL --- + + def parameters + (values.size - 1) * parent_nodes.values.reduce(1) { |mul, n| mul * n.values.size } + end + + def as(distribution, given:) + @values.zip(distribution).each do |value, probability| + @factor.val [value] + given + [probability] + end + end + def resolve_factor(parent_nodes) @parent_nodes = parent_nodes if @factor.is_a?(Proc) proc = @factor node = self @@ -41,20 +58,7 @@ end instance_eval(&proc) end end - def distributions(&block) - instance_eval(&block) - end - - def parameters - (values.size - 1) * parent_nodes.values.reduce(1) { |mul, n| mul * n.values.size } - end - - def as(distribution, given:) - @values.zip(distribution).each do |value, probability| - @factor.val [value] + given + [probability] - end - end end end