carray 1.3.7 → 1.4.0

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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -7
  3. data/Rakefile +31 -0
  4. data/carray.gemspec +9 -14
  5. data/carray.h +4 -0
  6. data/carray_access.c +50 -8
  7. data/carray_conversion.c +3 -3
  8. data/carray_generate.c +67 -1
  9. data/carray_math.rb +22 -22
  10. data/carray_operator.c +23 -0
  11. data/devel/im2col.rb +17 -0
  12. data/lib/carray.rb +32 -1
  13. data/lib/carray/autoload/autoload_base.rb +0 -4
  14. data/lib/carray/autoload/autoload_gem_cairo.rb +9 -0
  15. data/lib/carray/autoload/autoload_gem_ffi.rb +9 -0
  16. data/lib/carray/autoload/autoload_gem_gnuplot.rb +2 -0
  17. data/lib/carray/autoload/autoload_gem_io_csv.rb +14 -0
  18. data/lib/carray/autoload/autoload_gem_io_pg.rb +6 -0
  19. data/lib/carray/autoload/autoload_gem_io_sqlite3.rb +12 -0
  20. data/lib/carray/autoload/autoload_gem_narray.rb +10 -0
  21. data/lib/carray/autoload/autoload_gem_numo_narray.rb +14 -0
  22. data/lib/carray/autoload/autoload_gem_opencv.rb +16 -0
  23. data/lib/carray/autoload/autoload_gem_rmagick.rb +23 -0
  24. data/lib/carray/autoload/{autoload_graphics_zimg.rb → autoload_gem_zimg.rb} +0 -0
  25. data/lib/carray/base/autoload.rb +47 -5
  26. data/lib/carray/base/basic.rb +58 -2
  27. data/lib/carray/base/math.rb +1 -1
  28. data/lib/carray/base/string.rb +242 -0
  29. data/mkmath.rb +12 -2
  30. data/version.h +5 -5
  31. metadata +29 -109
  32. data/Gemfile +0 -8
  33. data/Gemfile.lock +0 -33
  34. data/ext/calculus/lib/autoload/autoload_math_calculus.rb +0 -2
  35. data/ext/fortio/extconf.rb +0 -3
  36. data/ext/fortio/lib/carray/autoload/autoload_fortran_format.rb +0 -5
  37. data/ext/fortio/lib/carray/io/fortran_format.rb +0 -43
  38. data/ext/fortio/lib/fortio.rb +0 -3
  39. data/ext/fortio/lib/fortio/fortran_format.rb +0 -605
  40. data/ext/fortio/lib/fortio/fortran_format.tab.rb +0 -536
  41. data/ext/fortio/lib/fortio/fortran_format.y +0 -215
  42. data/ext/fortio/lib/fortio/fortran_namelist.rb +0 -151
  43. data/ext/fortio/lib/fortio/fortran_namelist.tab.rb +0 -470
  44. data/ext/fortio/lib/fortio/fortran_namelist.y +0 -213
  45. data/ext/fortio/lib/fortio/fortran_sequential.rb +0 -345
  46. data/ext/fortio/ruby_fortio.c +0 -182
  47. data/ext/fortio/test/test_H.rb +0 -5
  48. data/ext/fortio/test/test_T.rb +0 -7
  49. data/ext/fortio/test/test_fortran_format.rb +0 -86
  50. data/ext/fortio/test/test_namelist.rb +0 -25
  51. data/ext/fortio/test/test_namelist_write.rb +0 -10
  52. data/ext/fortio/test/test_sequential.rb +0 -13
  53. data/ext/fortio/test/test_sequential2.rb +0 -13
  54. data/ext/fortio/work/test.rb +0 -10
  55. data/ext/fortio/work/test_e.rb +0 -19
  56. data/ext/fortio/work/test_ep.rb +0 -10
  57. data/ext/fortio/work/test_parse.rb +0 -12
  58. data/ext/mathfunc/lib/autoload/autoload_math_mathfunc.rb +0 -1
  59. data/ext/mathfunc/lib/math/mathfunc.rb +0 -15
  60. data/ext/narray/README +0 -22
  61. data/ext/narray/ca_wrap_narray.c +0 -500
  62. data/ext/narray/carray_narray.c +0 -21
  63. data/ext/narray/extconf.rb +0 -57
  64. data/ext/narray/lib/autoload/autoload_math_narray.rb +0 -1
  65. data/ext/narray/lib/autoload/autoload_math_narray_miss.rb +0 -11
  66. data/ext/narray/lib/math/narray.rb +0 -17
  67. data/ext/narray/lib/math/narray_miss.rb +0 -45
  68. data/lib/carray/autoload/autoload_graphics_gnuplot.rb +0 -2
  69. data/lib/carray/autoload/autoload_io_csv.rb +0 -14
  70. data/lib/carray/autoload/autoload_io_numo.rb +0 -9
  71. data/lib/carray/autoload/autoload_io_pg.rb +0 -6
  72. data/lib/carray/autoload/autoload_io_sqlite3.rb +0 -12
  73. data/lib/carray/graphics/gnuplot.rb +0 -2141
  74. data/lib/carray/graphics/zimg.rb +0 -296
  75. data/lib/carray/io/csv.rb +0 -572
  76. data/lib/carray/io/numo.rb +0 -52
  77. data/lib/carray/io/pg.rb +0 -101
  78. data/lib/carray/io/sqlite3.rb +0 -215
@@ -0,0 +1,17 @@
1
+ #require "numo/narray"
2
+ require "carray"
3
+ require "carray-narray"
4
+ require "carray-numo-narray"
5
+
6
+ im = CArray.int(5,5).seq
7
+
8
+ col = CArray.int(9,25)
9
+
10
+ x = col.to_na
11
+
12
+ y = x.ca.numo
13
+
14
+ x[1,nil] = 1
15
+
16
+ p x
17
+ p y
@@ -24,5 +24,36 @@ require 'carray/base/math'
24
24
  require 'carray/base/iterator'
25
25
  require 'carray/base/struct'
26
26
  require 'carray/base/inspect'
27
- require 'carray/base/autoload'
28
27
  require 'carray/base/obsolete'
28
+ require 'carray/base/string'
29
+
30
+ require "carray/carray_mathfunc"
31
+ require "carray/carray_calculus"
32
+ require "carray/math/calculus"
33
+
34
+ require 'carray/base/autoload'
35
+ require 'carray/autoload/autoload_base'
36
+ require 'carray/autoload/autoload_io_imagemagick'
37
+ require 'carray/autoload/autoload_io_table'
38
+ require 'carray/autoload/autoload_math_histogram'
39
+ require 'carray/autoload/autoload_math_interp'
40
+ require 'carray/autoload/autoload_math_recurrence'
41
+ require 'carray/autoload/autoload_object_iterator'
42
+ require 'carray/autoload/autoload_object_link'
43
+ require 'carray/autoload/autoload_object_pack'
44
+
45
+ require 'carray/autoload/autoload_gem_gnuplot'
46
+ require 'carray/autoload/autoload_gem_narray'
47
+ require 'carray/autoload/autoload_gem_numo_narray'
48
+ require 'carray/autoload/autoload_gem_io_csv'
49
+ require 'carray/autoload/autoload_gem_io_sqlite3'
50
+ require 'carray/autoload/autoload_gem_rmagick'
51
+ require 'carray/autoload/autoload_gem_cairo'
52
+ require 'carray/autoload/autoload_gem_opencv'
53
+ require 'carray/autoload/autoload_gem_ffi'
54
+
55
+ #require 'carray/autoload/autoload_gem_io_pg'
56
+ #require 'carray/autoload/autoload_gem_zimg'
57
+
58
+ undef autoload_method
59
+
@@ -17,7 +17,3 @@ end
17
17
  class Rational < Numeric
18
18
  include FloatFunction
19
19
  end
20
-
21
- module CA
22
- autoload :NumPy, "carray/base/numpysh.rb"
23
- end
@@ -0,0 +1,9 @@
1
+
2
+ module Cairo
3
+ class Surface
4
+ end
5
+ class ImageSurface < Surface
6
+ autoload_method "self.new_from_ca", "carray-cairo"
7
+ autoload_method "ca", "carray-cairo"
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ class CArray
2
+ autoload_method "mp", "carray-ffi"
3
+ end
4
+
5
+ module FFI
6
+ class MemoryPointer
7
+ autoload_method "ca", "carray-ffi"
8
+ end
9
+ end
@@ -0,0 +1,2 @@
1
+ autoload_method "CA.gnuplot", "carray-gnuplot"
2
+
@@ -0,0 +1,14 @@
1
+ autoload_method "CArray.load_csv", "carray-io-csv"
2
+ autoload_method "CArray.from_csv", "carray-io-csv"
3
+
4
+ class CArray
5
+ autoload_method "save_csv", "carray-io-csv"
6
+ autoload_method "to_csv", "carray-io-csv"
7
+ autoload_method "to_tabular", "carray-io-csv"
8
+ end
9
+
10
+ module CA
11
+ autoload :CSVReader, "carray-io-csv"
12
+ autoload :CSVWriter, "carray-io-csv"
13
+ end
14
+
@@ -0,0 +1,6 @@
1
+ autoload_method "CArray.load_pg", "carray-io-pg"
2
+
3
+ class CArray
4
+ autoload_method "unescape_bytea", "carray-io-pg"
5
+ autoload_method "escape_bytea", "carray-io-pg"
6
+ end
@@ -0,0 +1,12 @@
1
+ autoload_method "CArray.load_sqlite3", "carray-io-sqlite3"
2
+
3
+ class CArray
4
+ autoload_method "unblob", "carray-io-sqlite3"
5
+ autoload_method "to_sqlite3", "carray-io-sqlite3"
6
+ end
7
+
8
+ if Object.const_defined?(:SQLite3)
9
+ require "carray-io-sqlite3"
10
+ else
11
+ autoload :SQLite3, "carray-io-sqlite3"
12
+ end
@@ -0,0 +1,10 @@
1
+ class CArray
2
+ autoload_method :na, "carray-narray"
3
+ autoload_method :to_na, "carray-narray"
4
+ end
5
+
6
+ class NArray
7
+ autoload_method :ca, "carray-narray"
8
+ autoload_method :to_ca, "carray-narray"
9
+ end
10
+
@@ -0,0 +1,14 @@
1
+ #autoload :Numo, "carray-numo-narray"
2
+
3
+ class CArray
4
+ autoload_method :to_numo, "carray-numo-narray"
5
+ autoload_method :numo, "carray-numo-narray"
6
+ end
7
+
8
+ module Numo
9
+ class NArray
10
+ autoload_method :to_ca, "carray-numo-narray"
11
+ autoload_method :ca, "carray-numo-narray"
12
+ end
13
+ end
14
+
@@ -0,0 +1,16 @@
1
+ module OpenCV
2
+ class CvMat
3
+ autoload_method "ca", "carray-opencv"
4
+ autoload_method "to_ca", "carray-opencv"
5
+ autoload_method "from_ca", "carray-opencv"
6
+ autoload_method "image", "carray-opencv"
7
+ end
8
+ class IplImage < CvMat
9
+ autoload_method "ca", "carray-opencv"
10
+ end
11
+ end
12
+
13
+ class CArray
14
+ autoload_method "to_cvmat", "carray-opencv"
15
+ autoload_method "to_iplimage", "carray-opencv"
16
+ end
@@ -0,0 +1,23 @@
1
+ module Magick
2
+ class Image
3
+ autoload_method "export_pixels_to_ca", "carray-rmagick"
4
+ autoload_method "import_pixels_from_ca", "carray-rmagick"
5
+ end
6
+ end
7
+
8
+ class CArray
9
+ autoload_method "self.load_image", "carray-rmagick"
10
+ autoload_method "save_image", "carray-rmagick"
11
+ autoload_method "display_image", "carray-rmagick"
12
+ autoload_method "to_image", "carray-rmagick"
13
+ end
14
+
15
+ autoload :CAMagickImage, "carray-rmagick"
16
+
17
+ module Magick
18
+ class Image
19
+ autoload_method "ca", "carray-rmagick"
20
+ autoload_method "to_ca", "carray-rmagick"
21
+ end
22
+ end
23
+
@@ -13,7 +13,11 @@
13
13
  def autoload_method (method, library)
14
14
  eval %{
15
15
  def #{method} (*argv, &block)
16
- require "#{library}"
16
+ begin
17
+ require "#{library}"
18
+ rescue LoadError
19
+ raise "error in autoloading '#{library}' hooked by method '#{method}', check gem installation."
20
+ end
17
21
  #{method}(*argv, &block)
18
22
  end
19
23
  }
@@ -23,7 +27,11 @@ class Class
23
27
  def autoload_method (method, library)
24
28
  class_eval %{
25
29
  def #{method} (*argv, &block)
26
- require "#{library}"
30
+ begin
31
+ require "#{library}"
32
+ rescue LoadError
33
+ raise "error in autoloading '#{library}' hooked by method '#{method}', check gem installation."
34
+ end
27
35
  #{method}(*argv, &block)
28
36
  end
29
37
  }
@@ -34,7 +42,11 @@ class Module
34
42
  def autoload_method (method, library)
35
43
  class_eval %{
36
44
  def #{method} (*argv, &block)
37
- require "#{library}"
45
+ begin
46
+ require "#{library}"
47
+ rescue LoadError
48
+ raise "error in autoloading '#{library}' hooked by method '#{method}', check gem installation."
49
+ end
38
50
  #{method}(*argv, &block)
39
51
  end
40
52
  }
@@ -46,7 +58,11 @@ class Module
46
58
  class_eval %{
47
59
  module_function
48
60
  def #{method} (*argv, &block)
49
- require "#{library}"
61
+ begin
62
+ require "#{library}"
63
+ rescue LoadError
64
+ raise "error in autoloading '#{library}' hooked by method '#{method}', check gem installation."
65
+ end
50
66
  #{method}(*argv, &block)
51
67
  end
52
68
  }
@@ -87,6 +103,33 @@ module CA
87
103
 
88
104
  end
89
105
 
106
+ __END__
107
+ names = {"carray" => true}
108
+ Gem.path.each do |path|
109
+ gems = File.join(path, "gems")
110
+ if File.directory?(gems)
111
+ Dir.chdir(gems) {
112
+ Dir["carray-*"].sort.reverse.each do |dir|
113
+ name = dir.sub(/\-\d+\.\d+\.\d+\z/, '')
114
+ next if names[name]
115
+ lib = File.join(dir, "lib")
116
+ if File.directory?(lib)
117
+ Dir.chdir(lib) {
118
+ Dir["carray/autoload/autoload_*"].each do |loader|
119
+ begin
120
+ load File.expand_path(File.join(gems, dir, lib, loader.sub(/\.rb\z/, "")))
121
+ rescue LoadError
122
+ end
123
+ end
124
+ }
125
+ end
126
+ names[name] = true
127
+ end
128
+ }
129
+ end
130
+ end
131
+
132
+ __END__
90
133
  CA.each_load_path("carray/autoload") {
91
134
  Dir["autoload_*.rb"].each do |basename|
92
135
  if basename =~ /\A(autoload_.+)\.rb\Z/
@@ -98,4 +141,3 @@ CA.each_load_path("carray/autoload") {
98
141
  end
99
142
  }
100
143
 
101
- undef autoload_method
@@ -429,6 +429,50 @@ class CArray
429
429
  end
430
430
  end
431
431
 
432
+ def nlargest (n)
433
+ obj = self.to_ca
434
+ list = []
435
+ n.times do |i|
436
+ k = obj.max_addr
437
+ list << obj[k]
438
+ obj[k] = UNDEF
439
+ end
440
+ list.to_ca.to_type(data_type)
441
+ end
442
+
443
+ def nlargest_addr (n)
444
+ obj = self.to_ca
445
+ list = []
446
+ n.times do |i|
447
+ k = obj.max_addr
448
+ list << k
449
+ obj[k] = UNDEF
450
+ end
451
+ CA_INT64(list)
452
+ end
453
+
454
+ def nsmallest (n)
455
+ obj = self.to_ca
456
+ list = []
457
+ n.times do |i|
458
+ k = obj.min_addr
459
+ list << obj[k]
460
+ obj[k] = UNDEF
461
+ end
462
+ list.to_ca.to_type(data_type)
463
+ end
464
+
465
+ def nsmallest_addr (n)
466
+ obj = self.to_ca
467
+ list = []
468
+ n.times do |i|
469
+ k = obj.min_addr
470
+ list << k
471
+ obj[k] = UNDEF
472
+ end
473
+ CA_INT64(list)
474
+ end
475
+
432
476
  # Returns (1,n) array from 1-dimensional array
433
477
  def to_row
434
478
  if rank != 1
@@ -696,7 +740,7 @@ class CArray
696
740
  return CArray.int32(*dim).seq!
697
741
  end
698
742
 
699
- def index (n)
743
+ def index (n = 0)
700
744
  unless n.is_a?(Integer)
701
745
  raise ArgumentError, "argument should be an integer"
702
746
  end
@@ -743,6 +787,18 @@ class CArray
743
787
  return template(:boolean) { 1 }
744
788
  end
745
789
 
790
+ def contains (*list)
791
+ result = self.false()
792
+ list.each do |item|
793
+ result = result | self.eq(item)
794
+ end
795
+ return result
796
+ end
797
+
798
+ def between (a, b)
799
+ return (self >= a) & (self <= b)
800
+ end
801
+
746
802
  # Returns map
747
803
  def map (&block)
748
804
  return self.convert(CA_OBJECT, &block).to_a
@@ -802,8 +858,8 @@ class CArray
802
858
  return obj
803
859
  end
804
860
 
805
- end
806
861
 
862
+ end
807
863
 
808
864
  class CArray
809
865
 
@@ -148,7 +148,7 @@ class CArray
148
148
  def quo (other)
149
149
  case
150
150
  when integer?
151
- return double/other
151
+ return object.quo_i(other)
152
152
  when object?
153
153
  return quo_i(other)
154
154
  else
@@ -0,0 +1,242 @@
1
+ require "date"
2
+
3
+ class CArray
4
+
5
+ def test (&block)
6
+ return convert(:boolean) {|v| yield(v) ? true : false }
7
+ end
8
+
9
+ def str_len ()
10
+ return convert(:int, &:length)
11
+ end
12
+
13
+ def str_size ()
14
+ return convert(:int, &:size)
15
+ end
16
+
17
+ def str_bytesize ()
18
+ return convert(:int, &:bytesize)
19
+ end
20
+
21
+ def str_gsub (*args, &block)
22
+ return convert() {|s| s.gsub(*args, &block) }
23
+ end
24
+
25
+ def str_sub (*args, &block)
26
+ return convert() {|s| s.sub(*args, &block) }
27
+ end
28
+
29
+ def str_encode (*args)
30
+ return convert() {|s| s.encode(*args) }
31
+ end
32
+
33
+ def str_force_encoding (encoding)
34
+ return convert() {|s| s.force_encoding(encoding) }
35
+ end
36
+
37
+ def str_encoding ()
38
+ return convert(&:encoding)
39
+ end
40
+
41
+ def str_is_end_with (*args)
42
+ return test {|s| s.end_with?(*args) }
43
+ end
44
+
45
+ def str_is_start_with (*args)
46
+ return test {|s| s.start_with?(*args) }
47
+ end
48
+
49
+ def str_includes (substr)
50
+ return test {|s| s.include?(substr) }
51
+ end
52
+
53
+ alias str_contains str_includes
54
+
55
+ def str_index (*args)
56
+ return convert(:int) {|s| s.index(*args) }
57
+ end
58
+
59
+ def str_rindex (*args)
60
+ return convert(:int) {|s| s.rindex(*args) }
61
+ end
62
+
63
+ def str_intern ()
64
+ return convert(&:intern)
65
+ end
66
+
67
+ def str_scrub ()
68
+ return convert(&:scrub)
69
+ end
70
+
71
+ def str_downcase ()
72
+ return convert(&:downcase)
73
+ end
74
+
75
+ def str_upcase ()
76
+ return convert(&:upcase)
77
+ end
78
+
79
+ def str_capitalize ()
80
+ return convert(&:capitalize)
81
+ end
82
+
83
+ def str_swapcase ()
84
+ return convert(&:swapcase)
85
+ end
86
+
87
+ def str_chomp (*args)
88
+ return convert() {|s| s.chomp(*args) }
89
+ end
90
+
91
+ def str_chop ()
92
+ return convert(&:chop)
93
+ end
94
+
95
+ def str_chr ()
96
+ return convert(&:chr)
97
+ end
98
+
99
+ def str_clear ()
100
+ return convert(&:clear)
101
+ end
102
+
103
+ def str_count (*args)
104
+ return convert(:int) {|s| s.count(*args) }
105
+ end
106
+
107
+ def str_delete (*args)
108
+ return convert() {|s| s.delete(*args) }
109
+ end
110
+
111
+ def str_delete_prefix (prefix)
112
+ return convert() {|s| s.delete_prefix(prefix) }
113
+ end
114
+
115
+ def str_delete_suffix (suffix)
116
+ return convert() {|s| s.delete_suffix(suffix) }
117
+ end
118
+
119
+ def str_dump ()
120
+ return convert(&:dump)
121
+ end
122
+
123
+ def str_center (*args)
124
+ return convert() {|s| s.center(*args) }
125
+ end
126
+
127
+ def str_ljust (*args)
128
+ return convert() {|s| s.ljust(*args) }
129
+ end
130
+
131
+ def str_rjust (*args)
132
+ return convert() {|s| s.rjust(*args) }
133
+ end
134
+
135
+ def str_to_i ()
136
+ return convert(&:to_i)
137
+ end
138
+
139
+ def str_to_f ()
140
+ return convert(&:to_f)
141
+ end
142
+
143
+ def str_to_r ()
144
+ return convert(&:to_r)
145
+ end
146
+
147
+ def str_strip ()
148
+ return convert(&:strip)
149
+ end
150
+
151
+ def str_rstrip ()
152
+ return convert(&:rstrip)
153
+ end
154
+
155
+ def str_lstrip ()
156
+ return convert(&:lstrip)
157
+ end
158
+
159
+ def str_is_empty ()
160
+ return test(&:empty?)
161
+ end
162
+
163
+ def str_matches (*args)
164
+ if args.size == 1 && args.first.is_a?(Regexp)
165
+ regexp = args.first
166
+ return test {|v| v =~ regexp }
167
+ else
168
+ mask = template(:boolean) { false }
169
+ args.each do |str|
170
+ addr = search(str)
171
+ mask[addr] = true if addr
172
+ end
173
+ return mask
174
+ end
175
+ end
176
+
177
+ def str_extract (regexp, replace = '\0')
178
+ return convert {|s| regexp.match(s) {|m| m[0].sub(regexp, replace) } || "" }
179
+ end
180
+
181
+ def str_to_datetime (template = nil)
182
+ if template
183
+ return convert() {|v| DateTime.strptime(v, template) }
184
+ else
185
+ return convert() {|v| DateTime.parse(v) }
186
+ end
187
+ end
188
+
189
+ def str_to_time (template = nil)
190
+ if template
191
+ return str_strptime(template)
192
+ else
193
+ return convert() {|v| Time.parse(v) }
194
+ end
195
+ end
196
+
197
+ def time_format (template = nil)
198
+ if template
199
+ return str_strftime(template)
200
+ else
201
+ return convert(&:to_s)
202
+ end
203
+ end
204
+
205
+ def time_year
206
+ return convert(:int, &:year)
207
+ end
208
+
209
+ def time_month
210
+ return convert(:int, &:month)
211
+ end
212
+
213
+ def time_day
214
+ return convert(:int, &:day)
215
+ end
216
+
217
+ def time_hour
218
+ return convert(:int, &:hour)
219
+ end
220
+
221
+ def time_minute
222
+ return convert(:int, &:minute)
223
+ end
224
+
225
+ def time_second
226
+ return convert(:double) {|d| d.second + d.second_fraction }
227
+ end
228
+
229
+ def time_jd
230
+ return convert(:int, &:jd)
231
+ end
232
+
233
+ def time_ajd
234
+ return convert(:double, &:ajd)
235
+ end
236
+
237
+ def time_is_leap
238
+ return test(&:leap?)
239
+ end
240
+
241
+ end
242
+