class TimeSeries
Attributes
data_points[R]
Public Class Methods
new(*args)
click to toggle source
# File lib/time_series/time_series.rb, line 6 def initialize(*args) case args.length when 1 then data_points = args[0] when 2 then data_points = args[0].zip(args[1]).collect { |dp| DataPoint.new(dp[0], dp[1]) } else data_points = [] end @data_points = {} self << data_points end
Public Instance Methods
<<(*data_points)
click to toggle source
# File lib/time_series/time_series.rb, line 17 def <<(*data_points) data_points.flatten.each do |data_point| @data_points[data_point.timestamp] = data_point end end
at(*timestamps)
click to toggle source
# File lib/time_series/time_series.rb, line 23 def at(*timestamps) results = @data_points.values_at(*timestamps) results = results[0] if results.length == 1 return results end
each(&block)
click to toggle source
# File lib/time_series/time_series.rb, line 44 def each(&block) Hash[@data_points.sort].values.each(&block) end
last(n = 1)
click to toggle source
# File lib/time_series/time_series.rb, line 48 def last(n = 1) Hash[@data_points.sort.last(n)].values end
length()
click to toggle source
# File lib/time_series/time_series.rb, line 52 def length @data_points.length end
slice(timeframe)
click to toggle source
# File lib/time_series/time_series.rb, line 30 def slice(timeframe) from, to = timeframe[:from], timeframe[:to] data_points = @data_points.select do |t, data| case [!from.nil?, !to.nil?] when [true, true] then t >= from and t <= to when [true, false] then t >= from when [false, true] then t <= to end end return self.class.new data_points.keys, data_points.values end
to_a()
click to toggle source
# File lib/time_series/time_series.rb, line 56 def to_a Hash[@data_points.sort].values end