Class: Utils::Histogram

Inherits:
Object
  • Object
show all
Defined in:
lib/ruby_pager/histogram.rb

Instance Method Summary collapse

Constructor Details

#initialize(file_path, ex_type) ⇒ Histogram

Returns a new instance of Histogram.



7
8
9
10
11
12
13
14
15
16
# File 'lib/ruby_pager/histogram.rb', line 7

def initialize(file_path,ex_type)
     @logger = Utils::ApplicationLogger.instance
     @logger.level = Logger::INFO
  @limits= []
  @type = ex_type.to_sym
  @histogram= Hash.new{|h,key|h[key]=Array.new}
  @derivate= Hash.new{|h,key|h[key]=Array.new}
     @logger.info("Loading histogram")
  load_file(file_path)
end

Instance Method Details

#derivate_to_line(hist_index, row_index) ⇒ Object



77
78
79
# File 'lib/ruby_pager/histogram.rb', line 77

def derivate_to_line(hist_index,row_index)
	return [@limits[hist_index][:start],((@limits[hist_index][:end] - @limits[hist_index][:start])*@derivate[hist_index][row_index]*2000).to_i+ @limits[hist_index][:start]]
end

#each_derivateObject



91
92
93
94
95
96
97
98
99
# File 'lib/ruby_pager/histogram.rb', line 91

def each_derivate
	@buckets.times do |r|
		temp = []
		@num_histograms.times do |h|
			temp.push(derivate_to_line(h,r))
		end
		yield r,temp
	end
end

#each_lineObject



81
82
83
84
85
86
87
88
89
# File 'lib/ruby_pager/histogram.rb', line 81

def each_line
	@buckets.times do |r|
		temp = []
		@num_histograms.times do |h|
			temp.push(to_line(h,r))
		end
		yield r,temp
	end
end

#load_file(file_path) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
# File 'lib/ruby_pager/histogram.rb', line 18

def load_file(file_path)
	
	File.open(file_path, "r") do |file|
		while (line = file.gets)
			process_line(line)	
		end
	end
	puts "BUCKETS ARE  #{@buckets}"
	puts "HISTOGRAMS ARE #{@histogram.size}"
	puts "HISTOGRAMS ARE #{@histogram[0].size}"
end

#process_data_line(values) ⇒ Object



52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/ruby_pager/histogram.rb', line 52

def process_data_line(values)
	if @type == :basic
		values.each_index{|i| @histogram[i].push(values[i])}
	else
		values.each_index do |i|
			if i.even?
				@histogram[i/2].push(values[i])
			else
				@derivate[(i-1)/2].push(values[i])	
			end
		end

	end
end

#process_limit(values) ⇒ Object



47
48
49
50
# File 'lib/ruby_pager/histogram.rb', line 47

def process_limit(values)

	@limits.push({:start => values[0],:end => values[1]})	
end

#process_line(line) ⇒ Object



30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/ruby_pager/histogram.rb', line 30

def process_line(line)
	
	values = line.split
	@buckets = values[1].to_i if values[0] == "NumVect"
	
	if values[0]== "NumParam"
		@num_histograms = values[1].to_i
		@num_histograms/=2 if @type == :derivate
	end
	
	process_limit(values[1..2].map{|val| val.to_i}) if values[0] == "Limit"
     	@logger.info("Processing data") if values[0] == "Data"

	process_data_line(values.map{|val| val.to_f})if values[0] =~ /\d/  
	
end

#to_line(hist_index, row_index) ⇒ Object



67
68
69
70
71
72
73
74
# File 'lib/ruby_pager/histogram.rb', line 67

def to_line(hist_index,row_index)
#return [@limits[hist_index][:start],((@limits[hist_index][:end] - @limits[hist_index][:start])*@histogram[hist_index][row_index]*100).to_i+ @limits[hist_index][:start]]
    
	return [@limits[hist_index][:start],((@limits[hist_index][:end] - @limits[hist_index][:start])*(@histogram[hist_index][row_index])/100).to_i+ @limits[hist_index][:start]] if hist_index < 3
   return [@limits[hist_index][:start],((@limits[hist_index][:end] - @limits[hist_index][:start])*@histogram[hist_index][row_index]*200).to_i+ @limits[hist_index][:start]] if hist_index == 3
   return [@limits[hist_index][:start],((@limits[hist_index][:end] - @limits[hist_index][:start])*@histogram[hist_index][row_index]*2000).to_i+ @limits[hist_index][:start]] if hist_index > 3

end