Class: ConditionalProbabilityMatrix

Inherits:
Object
  • Object
show all
Defined in:
lib/fathom/archive/conditional_probability_matrix.rb

Direct Known Subclasses

CPM

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(parent, child) ⇒ ConditionalProbabilityMatrix

Returns a new instance of ConditionalProbabilityMatrix.



87
88
89
90
91
# File 'lib/fathom/archive/conditional_probability_matrix.rb', line 87

def initialize(parent, child)
  @parent, @child = parent, child
  @matrix = @parent.probabilities.col * @child.probabilities
  assert_name_access
end

Instance Attribute Details

#childObject (readonly)

Returns the value of attribute child.



85
86
87
# File 'lib/fathom/archive/conditional_probability_matrix.rb', line 85

def child
  @child
end

#matrixObject (readonly)

Returns the value of attribute matrix.



85
86
87
# File 'lib/fathom/archive/conditional_probability_matrix.rb', line 85

def matrix
  @matrix
end

#parentObject (readonly)

Returns the value of attribute parent.



85
86
87
# File 'lib/fathom/archive/conditional_probability_matrix.rb', line 85

def parent
  @parent
end

Class Method Details

.define_node_accessor(node, cpm) ⇒ Object



78
79
80
81
82
# File 'lib/fathom/archive/conditional_probability_matrix.rb', line 78

def define_node_accessor(node, cpm)
  define_method(node.name.to_sym) do
    NodeAccessor.new(cpm)
  end
end

Instance Method Details

#inspectObject



103
104
105
# File 'lib/fathom/archive/conditional_probability_matrix.rb', line 103

def inspect
  "ConditionalProbabilityMatrix: #{matrix.to_a.inspect}"
end

#probability(opts = {}) ⇒ Object Also known as: p

Raises:

  • (ArgumentError)


93
94
95
96
97
98
99
100
# File 'lib/fathom/archive/conditional_probability_matrix.rb', line 93

def probability(opts={})
  child_label = opts[:child]
  parent_label = opts[:parent]
  raise ArgumentError, "Must provide a child and parent label.  E.g., probability(:child => true, :parent => false)" unless child_label and parent_label
  child_label_index = get_index(child, child_label)
  parent_label_index = get_index(parent, parent_label)
  self.matrix[parent_label_index, child_label_index]
end