graphkit 0.4.2 → 0.4.4
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/Gemfile +2 -1
- data/VERSION +1 -1
- data/graphkit.gemspec +9 -6
- data/lib/graphkit/csv.rb +128 -129
- data/lib/graphkit/gnuplot.rb +1 -1
- metadata +20 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 42653b3bfef9d5da9909f41a0e1479ac6c8fe81f
|
4
|
+
data.tar.gz: 43c78a693b7d77be9e8e5dbe9faf9c4ec46aa82d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a53fa37e5e9fe34502cb2b720dfb64bfd79e942c1d25e3b2b9f3309e49327a165e8a9109d6a284d245faabd8503a68091d3d8bea0b5fb6430d7dc8e54bd96c12
|
7
|
+
data.tar.gz: ffa158ec4f3af1ed8436d25de0a6dbdb294d5e1540994af618193742c6d8b39d5981dffbb59b89e7dab8dfe34f035d37c29adffaa11714aeb21ac3cc405b31a9
|
data/Gemfile
CHANGED
@@ -8,8 +8,9 @@ source "http://rubygems.org"
|
|
8
8
|
# Add dependencies to develop your gem here.
|
9
9
|
# Include everything needed to run rake, tests, features, etc.
|
10
10
|
group :development do
|
11
|
-
gem "shoulda", "
|
11
|
+
gem "shoulda", " 3.0.1"
|
12
12
|
gem "rdoc", "~> 3.12"
|
13
13
|
gem "bundler", "> 1.0.0"
|
14
14
|
gem "jeweler", ">= 2.0"
|
15
|
+
gem "minitest", "~> 4"
|
15
16
|
end
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.4.
|
1
|
+
0.4.4
|
data/graphkit.gemspec
CHANGED
@@ -2,16 +2,16 @@
|
|
2
2
|
# DO NOT EDIT THIS FILE DIRECTLY
|
3
3
|
# Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
|
4
4
|
# -*- encoding: utf-8 -*-
|
5
|
-
# stub: graphkit 0.4.
|
5
|
+
# stub: graphkit 0.4.4 ruby lib
|
6
6
|
|
7
7
|
Gem::Specification.new do |s|
|
8
8
|
s.name = "graphkit"
|
9
|
-
s.version = "0.4.
|
9
|
+
s.version = "0.4.4"
|
10
10
|
|
11
11
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.authors = ["Edmund Highcock"]
|
14
|
-
s.date = "
|
14
|
+
s.date = "2016-01-19"
|
15
15
|
s.description = "A GraphKit is a device independent intelligent data container that allows the easy sharing, combining and plotting of graphic data representations. Easily created from data, they can be output in a variety of formats using packages such as gnuplot. "
|
16
16
|
s.email = "edmundhighcock@sourceforge.net"
|
17
17
|
s.extra_rdoc_files = [
|
@@ -47,23 +47,26 @@ Gem::Specification.new do |s|
|
|
47
47
|
|
48
48
|
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
49
49
|
s.add_runtime_dependency(%q<rubyhacks>, [">= 0.1.0"])
|
50
|
-
s.add_development_dependency(%q<shoulda>, ["
|
50
|
+
s.add_development_dependency(%q<shoulda>, ["= 3.0.1"])
|
51
51
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
52
52
|
s.add_development_dependency(%q<bundler>, ["> 1.0.0"])
|
53
53
|
s.add_development_dependency(%q<jeweler>, [">= 2.0"])
|
54
|
+
s.add_development_dependency(%q<minitest>, ["~> 4"])
|
54
55
|
else
|
55
56
|
s.add_dependency(%q<rubyhacks>, [">= 0.1.0"])
|
56
|
-
s.add_dependency(%q<shoulda>, ["
|
57
|
+
s.add_dependency(%q<shoulda>, ["= 3.0.1"])
|
57
58
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
58
59
|
s.add_dependency(%q<bundler>, ["> 1.0.0"])
|
59
60
|
s.add_dependency(%q<jeweler>, [">= 2.0"])
|
61
|
+
s.add_dependency(%q<minitest>, ["~> 4"])
|
60
62
|
end
|
61
63
|
else
|
62
64
|
s.add_dependency(%q<rubyhacks>, [">= 0.1.0"])
|
63
|
-
s.add_dependency(%q<shoulda>, ["
|
65
|
+
s.add_dependency(%q<shoulda>, ["= 3.0.1"])
|
64
66
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
65
67
|
s.add_dependency(%q<bundler>, ["> 1.0.0"])
|
66
68
|
s.add_dependency(%q<jeweler>, [">= 2.0"])
|
69
|
+
s.add_dependency(%q<minitest>, ["~> 4"])
|
67
70
|
end
|
68
71
|
end
|
69
72
|
|
data/lib/graphkit/csv.rb
CHANGED
@@ -1,140 +1,139 @@
|
|
1
1
|
require 'matrix'
|
2
2
|
# Methods for writing graphkits to csv (comma separated value) files
|
3
3
|
|
4
|
-
|
5
|
-
|
6
4
|
class GraphKit
|
5
|
+
def to_csv(options={})
|
6
|
+
check_integrity
|
7
|
+
ep 'to_csv'
|
8
|
+
stringio = options[:io] || StringIO.new
|
9
|
+
data.each do |dk|
|
10
|
+
dk.to_csv(options)
|
11
|
+
stringio << "\n\n"
|
12
|
+
end
|
13
|
+
return stringio.string unless options[:io]
|
14
|
+
end
|
7
15
|
|
16
|
+
class DataKit
|
17
|
+
class TensorArray
|
18
|
+
def initialize(arr)
|
19
|
+
@arr=arr
|
20
|
+
end
|
21
|
+
def [](*args)
|
22
|
+
args.reverse.inject(@arr) do |arr,idx|
|
23
|
+
arr[idx]
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
def to_csv(options={})
|
28
|
+
io = options[:io] || StringIO.new
|
29
|
+
header = options[:header].to_s
|
30
|
+
csv_file = File.open(io, 'w')
|
31
|
+
if header
|
32
|
+
csv_file.write(header + "\n")
|
33
|
+
end
|
8
34
|
|
35
|
+
axs = self.axes.values_at(*AXES).compact
|
36
|
+
#ep 'axs', axs
|
37
|
+
dl = axs[-1].shape.product
|
38
|
+
dat = axs.map{|ax| ax.data}
|
39
|
+
sh = shapes
|
40
|
+
#cml_sh = sh.map do |sh1|
|
41
|
+
# cml = 1
|
42
|
+
# sh1.reverse.map{|dim| cml *= dim; cml}.reverse
|
43
|
+
#end
|
44
|
+
dat = dat.map do |d|
|
45
|
+
d.kind_of?(Array) ? TensorArray.new(d) : d
|
46
|
+
end
|
9
47
|
|
48
|
+
if self.errors
|
49
|
+
raise "Errors can only be plotted for 1D or 2D data" unless ranks == [1] or ranks == [1,1]
|
50
|
+
edat = self.errors.values_at(:x, :xmin, :xmax, :y, :ymin, :ymax).compact
|
51
|
+
#ep 'edat', edat
|
52
|
+
end
|
10
53
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
if self.errors
|
53
|
-
raise "Errors can only be plotted for 1D or 2D data" unless ranks == [1] or ranks == [1,1]
|
54
|
-
edat = self.errors.values_at(:x, :xmin, :xmax, :y, :ymin, :ymax).compact
|
55
|
-
#ep 'edat', edat
|
56
|
-
end
|
57
|
-
case ranks
|
58
|
-
when [1], [1,1], [1,1,1], [1,1,1,1]
|
59
|
-
dl.times do |n|
|
60
|
-
dat.each{|d| io << d[n] << " "}
|
61
|
-
io << " " << edat.map{|e| e[n].to_s}.join(", ") if self.errors
|
62
|
-
io << "\n"
|
63
|
-
end
|
64
|
-
when [1,1,2]
|
65
|
-
sh[-1][0].times do |i|
|
66
|
-
sh[-1][1].times do |j|
|
67
|
-
next unless dat[2][i,j]
|
68
|
-
d = [dat[0][i], dat[1][j], dat[2][i,j]]
|
69
|
-
io << d[0] << ", " << d[1] << ", " << d[2] << "\n"
|
70
|
-
end
|
71
|
-
io << "\n" unless sh[-1][1] == 1
|
72
|
-
end
|
73
|
-
when [2,2,2]
|
74
|
-
sh[-1][0].times do |i|
|
75
|
-
sh[-1][1].times do |j|
|
76
|
-
next unless dat[2][i,j]
|
77
|
-
d = [dat[0][i,j], dat[1][i,j], dat[2][i,j]]
|
78
|
-
io << d[0] << ", " << d[1] << ", " << d[2] << "\n"
|
79
|
-
end
|
80
|
-
io << "\n" unless sh[-1][1] == 1
|
81
|
-
end
|
82
|
-
when [1,1,2,2]
|
83
|
-
sh[-1][0].times do |i|
|
84
|
-
sh[-1][1].times do |j|
|
85
|
-
next unless dat[3][i,j]
|
86
|
-
d = [dat[0][i], dat[1][j], dat[2][i,j], dat[3][i,j]]
|
87
|
-
io << d[0] << ", " << d[1] << ", " << d[2] << ", " << d[3] << "\n"
|
88
|
-
end
|
89
|
-
io << "\n" unless sh[-1][1] == 1
|
90
|
-
end
|
91
|
-
when [1,1,1,3]
|
92
|
-
sh[-1][0].times do |i|
|
93
|
-
sh[-1][1].times do |j|
|
94
|
-
sh[-1][2].times do |k|
|
95
|
-
next unless dat[3][i,j,k]
|
96
|
-
|
97
|
-
d = [dat[0][i], dat[1][j], dat[2][k], dat[3][i,j,k]]
|
98
|
-
io << d[0] << ", " << d[1] << ", " << d[2] << ", " << d[3] << "\n"
|
99
|
-
end
|
100
|
-
io << "\n" unless sh[-1][2] == 1
|
101
|
-
end
|
102
|
-
io << "\n" unless sh[-1][1] == 1
|
103
|
-
end
|
104
|
-
when [2,2,2,2]
|
105
|
-
sh[-1][0].times do |i|
|
106
|
-
sh[-1][1].times do |j|
|
107
|
-
next unless dat[3][i,j]
|
108
|
-
d = [dat[0][i,j], dat[1][i,j], dat[2][i,j], dat[3][i,j]]
|
109
|
-
d.each{|dt| io << dt << " "}
|
110
|
-
io << "\n"
|
111
|
-
end
|
112
|
-
io << "\n" unless sh[-1][1] == 1
|
113
|
-
end
|
114
|
-
when [3,3,3,3]
|
115
|
-
#pp dat
|
116
|
-
#pp dat
|
117
|
-
#pp sh
|
118
|
-
sh[-1][0].times do |i|
|
119
|
-
sh[-1][1].times do |j|
|
120
|
-
sh[-1][2].times do |k|
|
121
|
-
next unless dat[3][i,j,k]
|
122
|
-
#p [i,j,k]
|
54
|
+
io = ''
|
55
|
+
case ranks
|
56
|
+
when [1], [1,1], [1,1,1], [1,1,1,1]
|
57
|
+
dl.times do |n|
|
58
|
+
dat.each{|d| io << d[n].to_s << ","}
|
59
|
+
io << " " << edat.map{|e| e[n].to_s}.join(", ") if self.errors
|
60
|
+
io << "\n"
|
61
|
+
end
|
62
|
+
when [1,1,2]
|
63
|
+
sh[-1][0].times do |i|
|
64
|
+
sh[-1][1].times do |j|
|
65
|
+
next unless dat[2][i,j]
|
66
|
+
d = [dat[0][i], dat[1][j], dat[2][i,j]]
|
67
|
+
io << d[0] << ", " << d[1] << ", " << d[2] << "\n"
|
68
|
+
end
|
69
|
+
io << "\n" unless sh[-1][1] == 1
|
70
|
+
end
|
71
|
+
when [2,2,2]
|
72
|
+
sh[-1][0].times do |i|
|
73
|
+
sh[-1][1].times do |j|
|
74
|
+
next unless dat[2][i,j]
|
75
|
+
d = [dat[0][i,j], dat[1][i,j], dat[2][i,j]]
|
76
|
+
io << d[0] << ", " << d[1] << ", " << d[2] << "\n"
|
77
|
+
end
|
78
|
+
io << "\n" unless sh[-1][1] == 1
|
79
|
+
end
|
80
|
+
when [1,1,2,2]
|
81
|
+
sh[-1][0].times do |i|
|
82
|
+
sh[-1][1].times do |j|
|
83
|
+
next unless dat[3][i,j]
|
84
|
+
d = [dat[0][i], dat[1][j], dat[2][i,j], dat[3][i,j]]
|
85
|
+
io << d[0] << ", " << d[1] << ", " << d[2] << ", " << d[3] << "\n"
|
86
|
+
end
|
87
|
+
io << "\n" unless sh[-1][1] == 1
|
88
|
+
end
|
89
|
+
when [1,1,1,3]
|
90
|
+
sh[-1][0].times do |i|
|
91
|
+
sh[-1][1].times do |j|
|
92
|
+
sh[-1][2].times do |k|
|
93
|
+
next unless dat[3][i,j,k]
|
123
94
|
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
95
|
+
d = [dat[0][i], dat[1][j], dat[2][k], dat[3][i,j,k]]
|
96
|
+
io << d[0] << ", " << d[1] << ", " << d[2] << ", " << d[3] << "\n"
|
97
|
+
end
|
98
|
+
io << "\n" unless sh[-1][2] == 1
|
99
|
+
end
|
100
|
+
io << "\n" unless sh[-1][1] == 1
|
101
|
+
end
|
102
|
+
when [2,2,2,2]
|
103
|
+
sh[-1][0].times do |i|
|
104
|
+
sh[-1][1].times do |j|
|
105
|
+
next unless dat[3][i,j]
|
106
|
+
d = [dat[0][i,j], dat[1][i,j], dat[2][i,j], dat[3][i,j]]
|
107
|
+
d.each{|dt| io << dt << " "}
|
108
|
+
io << "\n"
|
109
|
+
end
|
110
|
+
io << "\n" unless sh[-1][1] == 1
|
111
|
+
end
|
112
|
+
when [3,3,3,3]
|
113
|
+
#pp dat
|
114
|
+
#pp dat
|
115
|
+
#pp sh
|
116
|
+
sh[-1][0].times do |i|
|
117
|
+
sh[-1][1].times do |j|
|
118
|
+
sh[-1][2].times do |k|
|
119
|
+
next unless dat[3][i,j,k]
|
120
|
+
#p [i,j,k]
|
134
121
|
|
135
|
-
|
136
|
-
|
137
|
-
|
122
|
+
#d = [dat[0][i,j,k], dat[1][i,j,k], dat[2][i,j,k], dat[3][i,j,k]]
|
123
|
+
io << "#{dat[0][i,j,k]},#{dat[1][i,j,k]},#{dat[2][i,j,k]},#{dat[3][i,j,k]}\n"
|
124
|
+
#d.each{|dt| io << dt << " "}
|
125
|
+
#io << "\n"
|
126
|
+
end
|
127
|
+
io << "\n" unless sh[-1][2] == 1
|
128
|
+
end
|
129
|
+
io << "\n" unless sh[-1][1] == 1
|
130
|
+
end
|
131
|
+
end
|
138
132
|
|
139
|
-
|
140
|
-
|
133
|
+
return stringio.string unless options[:io]
|
134
|
+
|
135
|
+
csv_file.write(io)
|
136
|
+
csv_file.close()
|
137
|
+
end
|
138
|
+
end
|
139
|
+
end
|
data/lib/graphkit/gnuplot.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: graphkit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Edmund Highcock
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rubyhacks
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: shoulda
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version:
|
33
|
+
version: 3.0.1
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version:
|
40
|
+
version: 3.0.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rdoc
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +80,20 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: '2.0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: minitest
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '4'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '4'
|
83
97
|
description: 'A GraphKit is a device independent intelligent data container that allows
|
84
98
|
the easy sharing, combining and plotting of graphic data representations. Easily
|
85
99
|
created from data, they can be output in a variety of formats using packages such
|