heatgrid 0.0.1 → 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Rakefile +6 -0
- data/heatgrid.gemspec +4 -2
- data/lib/heatgrid.rb +2 -6
- data/lib/heatgrid/grid.rb +38 -0
- data/lib/heatgrid/version.rb +1 -1
- data/spec/grid_spec.rb +59 -0
- data/spec/spec_helper.rb +4 -1
- metadata +34 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ed2cbbef931c7150e0b4b89b132143304bfadeeb
|
|
4
|
+
data.tar.gz: f8f3385099930b4d43347c29a003d684a2f6d778
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: be561d8760943944f1b752517df6b91b951e988856b6086e8f1b3b43ca99eaa275b04843e1d8b213bd92c90205663837b8c01b0fd8df4f317dfd87442f8309d4
|
|
7
|
+
data.tar.gz: f238283ca36c5a6b2c7f07c001dcc442b5b5aee1f79a21df906974460312e474d1d3dc4088b1d740c35b9fe00bd92822ca55fb2ee73fcd93ce2747b32ff5ce24
|
data/Rakefile
CHANGED
data/heatgrid.gemspec
CHANGED
|
@@ -9,7 +9,7 @@ Gem::Specification.new do |spec|
|
|
|
9
9
|
spec.authors = ["Eugene Millerman"]
|
|
10
10
|
spec.email = ["e.v.millerman@gmail.com"]
|
|
11
11
|
spec.summary = %q{Generate a heatmap from a 2d array. }
|
|
12
|
-
spec.description = %q{Generate a heatmap from a 2d array
|
|
12
|
+
spec.description = %q{Generate a grid based heatmap from a 2d array using rmagick.}
|
|
13
13
|
spec.homepage = ""
|
|
14
14
|
spec.license = "MIT"
|
|
15
15
|
|
|
@@ -20,5 +20,7 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.5"
|
|
22
22
|
spec.add_development_dependency "rake"
|
|
23
|
-
|
|
23
|
+
spec.add_development_dependency "rspec", "~>2.5.0"
|
|
24
|
+
spec.add_development_dependency "pry"
|
|
25
|
+
|
|
24
26
|
end
|
data/lib/heatgrid.rb
CHANGED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
require 'pry'
|
|
2
|
+
module Heatgrid
|
|
3
|
+
class Grid
|
|
4
|
+
attr_accessor :original_grid, :normalized_grid
|
|
5
|
+
@max
|
|
6
|
+
|
|
7
|
+
def initialize(in_array)
|
|
8
|
+
self.original_grid = in_array
|
|
9
|
+
self.normalized_grid = normalize(in_array)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def rgb_grid
|
|
13
|
+
normalized_grid.map do |row|
|
|
14
|
+
row.map do |val|
|
|
15
|
+
normalized_to_rgb(val)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def normalized_to_rgb(num)
|
|
21
|
+
if (0..0.5).include?(num)
|
|
22
|
+
[0,(255 * (num*2)).to_i,(255*((0.5-num)*2)).to_i]
|
|
23
|
+
else
|
|
24
|
+
[(255 * (num-0.5)*2).to_i,(255*(1-2*(num-0.5))).to_i,0]
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def normalize(in_array)
|
|
29
|
+
max = max_value
|
|
30
|
+
in_array.map{|row| row.map{|v| v/max.to_f}}
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def max_value
|
|
34
|
+
@max ||= original_grid.map(&:max).max
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
end
|
|
38
|
+
end
|
data/lib/heatgrid/version.rb
CHANGED
data/spec/grid_spec.rb
ADDED
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
TEST = [
|
|
4
|
+
[1,2,3,4],
|
|
5
|
+
[2,3,4,5],
|
|
6
|
+
[3,4,5,6],
|
|
7
|
+
[4,5,6,7]
|
|
8
|
+
]
|
|
9
|
+
|
|
10
|
+
RESULT =
|
|
11
|
+
[
|
|
12
|
+
[0.14285714285714285,0.2857142857142857,0.42857142857142855,0.5714285714285714],
|
|
13
|
+
[0.2857142857142857,0.42857142857142855,0.5714285714285714,0.7142857142857143],
|
|
14
|
+
[0.42857142857142855,0.5714285714285714,0.7142857142857143,0.8571428571428571],
|
|
15
|
+
[0.5714285714285714, 0.7142857142857143, 0.8571428571428571, 1.0]
|
|
16
|
+
]
|
|
17
|
+
|
|
18
|
+
RGB = [
|
|
19
|
+
[[0, 72, 182], [0, 145, 109], [0, 218, 36], [36, 218, 0]],
|
|
20
|
+
[[0, 145, 109], [0, 218, 36], [36, 218, 0], [109, 145, 0]],
|
|
21
|
+
[[0, 218, 36], [36, 218, 0], [109, 145, 0], [182, 72, 0]],
|
|
22
|
+
[[36, 218, 0], [109, 145, 0], [182, 72, 0], [255, 0, 0]]
|
|
23
|
+
]
|
|
24
|
+
|
|
25
|
+
describe Heatgrid::Grid do
|
|
26
|
+
let(:grid) {Heatgrid::Grid.new(TEST)}
|
|
27
|
+
|
|
28
|
+
describe "#new" do
|
|
29
|
+
|
|
30
|
+
it "saves the original input" do
|
|
31
|
+
expect(grid.original_grid).to eq(TEST)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "finds the maximum value" do
|
|
35
|
+
expect(grid.max_value).to eq(7)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "calculates the normalized grid" do
|
|
39
|
+
expect(grid.normalized_grid).to eq(RESULT)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "converts normalized values to rgb" do
|
|
43
|
+
expect(grid.normalized_to_rgb(0.0)).to eq([0,0,255])
|
|
44
|
+
expect(grid.normalized_to_rgb(0.1)).to eq([0,51,204])
|
|
45
|
+
expect(grid.normalized_to_rgb(0.25)).to eq([0,127,127])
|
|
46
|
+
expect(grid.normalized_to_rgb(0.5)).to eq([0,255,0])
|
|
47
|
+
expect(grid.normalized_to_rgb(0.75)).to eq([127,127,0])
|
|
48
|
+
expect(grid.normalized_to_rgb(1.0)).to eq([255,0,0])
|
|
49
|
+
expect(grid.normalized_to_rgb(0.9)).to eq([204,50,0])
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "gets the rgb values" do
|
|
53
|
+
expect(grid.rgb_grid).to eq(RGB)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
|
data/spec/spec_helper.rb
CHANGED
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
# loaded once.
|
|
5
5
|
#
|
|
6
6
|
# See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
|
|
7
|
+
require_relative '../lib/heatgrid'
|
|
8
|
+
|
|
9
|
+
|
|
7
10
|
RSpec.configure do |config|
|
|
8
11
|
config.treat_symbols_as_metadata_keys_with_true_values = true
|
|
9
12
|
config.run_all_when_everything_filtered = true
|
|
@@ -13,5 +16,5 @@ RSpec.configure do |config|
|
|
|
13
16
|
# order dependency and want to debug it, you can fix the order by providing
|
|
14
17
|
# the seed, which is printed after each run.
|
|
15
18
|
# --seed 1234
|
|
16
|
-
config.order = '
|
|
19
|
+
config.order = 'default'
|
|
17
20
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: heatgrid
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.0.
|
|
4
|
+
version: 0.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Eugene Millerman
|
|
@@ -38,7 +38,35 @@ dependencies:
|
|
|
38
38
|
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
|
-
|
|
41
|
+
- !ruby/object:Gem::Dependency
|
|
42
|
+
name: rspec
|
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirements:
|
|
45
|
+
- - "~>"
|
|
46
|
+
- !ruby/object:Gem::Version
|
|
47
|
+
version: 2.5.0
|
|
48
|
+
type: :development
|
|
49
|
+
prerelease: false
|
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
51
|
+
requirements:
|
|
52
|
+
- - "~>"
|
|
53
|
+
- !ruby/object:Gem::Version
|
|
54
|
+
version: 2.5.0
|
|
55
|
+
- !ruby/object:Gem::Dependency
|
|
56
|
+
name: pry
|
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
|
58
|
+
requirements:
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
description: Generate a grid based heatmap from a 2d array using rmagick.
|
|
42
70
|
email:
|
|
43
71
|
- e.v.millerman@gmail.com
|
|
44
72
|
executables: []
|
|
@@ -53,7 +81,9 @@ files:
|
|
|
53
81
|
- Rakefile
|
|
54
82
|
- heatgrid.gemspec
|
|
55
83
|
- lib/heatgrid.rb
|
|
84
|
+
- lib/heatgrid/grid.rb
|
|
56
85
|
- lib/heatgrid/version.rb
|
|
86
|
+
- spec/grid_spec.rb
|
|
57
87
|
- spec/spec_helper.rb
|
|
58
88
|
homepage: ''
|
|
59
89
|
licenses:
|
|
@@ -80,4 +110,6 @@ signing_key:
|
|
|
80
110
|
specification_version: 4
|
|
81
111
|
summary: Generate a heatmap from a 2d array.
|
|
82
112
|
test_files:
|
|
113
|
+
- spec/grid_spec.rb
|
|
83
114
|
- spec/spec_helper.rb
|
|
115
|
+
has_rdoc:
|