require File.expand_path(File.join(File.dirname(__FILE__), '..', 'fathom')) =begin A DataNode is a node generated from data itself. It stores the data and reveals some statistical measurements for the data. It expects an array or vector of values and generates a vector on demans. =end class Fathom::DataNode include NodeUtilities attr_reader :values, :name, :distribution, :confidence_interval def initialize(opts={}) @values = opts[:values] raise ArgumentError, "Must provided values: DataNode.new(:values => [...])" unless self.values @name = opts[:name] @distribution = opts[:distribution] end alias :ci :confidence_interval def vector @vector ||= GSL::Vector.ary_to_gv(self.values) end def standard_deviation @standard_deviation ||= vector.sd end alias :sd :standard_deviation alias :std :standard_deviation def mean @mean ||= vector.mean end def rand rng.gaussian(std) + mean end protected def rng @rng ||= GSL::Rng.alloc end end if __FILE__ == $0 include Fathom # TODO: Is there anything you want to do to run this file on its own? # DataNode.new end