graphkit 0.4.2 → 0.4.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b1392606ad09e84551b517e9a7466597a1a2403e
4
- data.tar.gz: d43d0eeea0e3c2061687a17b1410512c616be383
3
+ metadata.gz: 42653b3bfef9d5da9909f41a0e1479ac6c8fe81f
4
+ data.tar.gz: 43c78a693b7d77be9e8e5dbe9faf9c4ec46aa82d
5
5
  SHA512:
6
- metadata.gz: 90edfa91cec525cfa891ef0d157a2c23359ff8807653b417b018cb3db9f9b659a8c475314f36ae28a1cc2f1c711e435bf46792973a0a0b4410b056de8cd459aa
7
- data.tar.gz: db84897ce19d6a1ef92f60a126cf4f686e3a12aa37df6f14bf150a4d5b038ad87fdc761e3b74011f063d407e14bff8b87fcba72434d1d22be1375b355604f531
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", ">= 0"
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.2
1
+ 0.4.4
@@ -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.2 ruby lib
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.2"
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 = "2015-02-02"
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>, [">= 0"])
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>, [">= 0"])
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>, [">= 0"])
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
 
@@ -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
- def to_csv(options={})
14
- check_integrity
15
- ep 'to_csv'
16
- stringio = options[:io] || StringIO.new
17
- data.each do |dk|
18
- dk.to_csv(io: stringio)
19
- stringio << "\n\n"
20
- end
21
- return stringio.string unless options[:io]
22
- end
23
-
24
-
25
- class DataKit
26
-
27
- class TensorArray
28
- def initialize(arr)
29
- @arr=arr
30
- end
31
- def [](*args)
32
- args.reverse.inject(@arr) do |arr,idx|
33
- arr[idx]
34
- end
35
- end
36
- end
37
- def to_csv(options={})
38
- io = options[:io] || StringIO.new
39
- axs = self.axes.values_at(*AXES).compact
40
- #ep 'axs', axs
41
- dl = data_length = axs[-1].shape.product
42
- dat = axs.map{|ax| ax.data}
43
- sh = shapes
44
- cml_sh = sh.map do |sh|
45
- cml = 1
46
- sh.reverse.map{|dim| cml *= dim; cml}.reverse
47
- end
48
- dat = dat.map do |d|
49
- d.kind_of?(Array) ? TensorArray.new(d) : d
50
- end
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
- #d = [dat[0][i,j,k], dat[1][i,j,k], dat[2][i,j,k], dat[3][i,j,k]]
125
- io << "#{dat[0][i,j,k]},#{dat[1][i,j,k]},#{dat[2][i,j,k]},#{dat[3][i,j,k]}\n"
126
- #d.each{|dt| io << dt << " "}
127
- #io << "\n"
128
- end
129
- io << "\n" unless sh[-1][2] == 1
130
- end
131
- io << "\n" unless sh[-1][1] == 1
132
- end
133
- end
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
- return stringio.string unless options[:io]
136
- end
137
- end
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
- end
140
-
133
+ return stringio.string unless options[:io]
134
+
135
+ csv_file.write(io)
136
+ csv_file.close()
137
+ end
138
+ end
139
+ end
@@ -42,7 +42,7 @@ module Gnuplot
42
42
  def Gnuplot.gnuplot( persist = true )
43
43
  cmd = which( ENV['RB_GNUPLOT'] || 'gnuplot' )
44
44
  #cmd = "gnuplot"
45
- cmd += " -background white"
45
+ #cmd += " -background white"
46
46
  cmd += " -persist" if persist
47
47
  cmd
48
48
  end
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.2
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: 2015-02-02 00:00:00.000000000 Z
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: '0'
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: '0'
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