mdarray 0.4.0-java → 0.4.2-java

Sign up to get free protection for your applications and to get access to all the features.
data/version.rb CHANGED
@@ -1,2 +1,2 @@
1
1
  $gem_name = "mdarray"
2
- $version="0.4.0"
2
+ $version="0.4.2"
metadata CHANGED
@@ -2,64 +2,44 @@
2
2
  name: mdarray
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.4.0
5
+ version: 0.4.2
6
6
  platform: java
7
7
  authors:
8
8
  - Rodrigo Botafogo
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-04-05 00:00:00.000000000 Z
12
+ date: 2013-04-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rake
15
+ name: map
16
16
  version_requirements: !ruby/object:Gem::Requirement
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: !binary |-
21
- MA==
20
+ version: 6.3.0
22
21
  none: false
23
22
  requirement: !ruby/object:Gem::Requirement
24
23
  requirements:
25
24
  - - ">="
26
25
  - !ruby/object:Gem::Version
27
- version: !binary |-
28
- MA==
26
+ version: 6.3.0
29
27
  none: false
30
28
  prerelease: false
31
29
  type: :runtime
32
- - !ruby/object:Gem::Dependency
33
- name: rspec
34
- version_requirements: !ruby/object:Gem::Requirement
35
- requirements:
36
- - - ">="
37
- - !ruby/object:Gem::Version
38
- version: 2.0.0
39
- none: false
40
- requirement: !ruby/object:Gem::Requirement
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- version: 2.0.0
45
- none: false
46
- prerelease: false
47
- type: :development
48
30
  - !ruby/object:Gem::Dependency
49
31
  name: simplecov
50
32
  version_requirements: !ruby/object:Gem::Requirement
51
33
  requirements:
52
34
  - - ">="
53
35
  - !ruby/object:Gem::Version
54
- version: !binary |-
55
- MA==
36
+ version: 0.7.1
56
37
  none: false
57
38
  requirement: !ruby/object:Gem::Requirement
58
39
  requirements:
59
40
  - - ">="
60
41
  - !ruby/object:Gem::Version
61
- version: !binary |-
62
- MA==
42
+ version: 0.7.1
63
43
  none: false
64
44
  prerelease: false
65
45
  type: :development
@@ -69,15 +49,13 @@ dependencies:
69
49
  requirements:
70
50
  - - ">="
71
51
  - !ruby/object:Gem::Version
72
- version: !binary |-
73
- MA==
52
+ version: 0.8.5.2
74
53
  none: false
75
54
  requirement: !ruby/object:Gem::Requirement
76
55
  requirements:
77
56
  - - ">="
78
57
  - !ruby/object:Gem::Version
79
- version: !binary |-
80
- MA==
58
+ version: 0.8.5.2
81
59
  none: false
82
60
  prerelease: false
83
61
  type: :development
@@ -87,15 +65,13 @@ dependencies:
87
65
  requirements:
88
66
  - - ">="
89
67
  - !ruby/object:Gem::Version
90
- version: !binary |-
91
- MA==
68
+ version: 1.0.1
92
69
  none: false
93
70
  requirement: !ruby/object:Gem::Requirement
94
71
  requirements:
95
72
  - - ">="
96
73
  - !ruby/object:Gem::Version
97
- version: !binary |-
98
- MA==
74
+ version: 1.0.1
99
75
  none: false
100
76
  prerelease: false
101
77
  type: :development
@@ -114,21 +90,20 @@ files:
114
90
  - lib/mdarray/access.rb
115
91
  - lib/mdarray/counter.rb
116
92
  - lib/mdarray/creation.rb
117
- - lib/mdarray/fast_non_numerical.rb
118
93
  - lib/mdarray/function_creation.rb
119
94
  - lib/mdarray/function_map.rb
120
95
  - lib/mdarray/hierarchy.rb
121
96
  - lib/mdarray/operators.rb
122
97
  - lib/mdarray/printing.rb
123
98
  - lib/mdarray/proc_util.rb
99
+ - lib/mdarray/ruby_boolean_functions.rb
124
100
  - lib/mdarray/ruby_functions.rb
125
101
  - lib/mdarray/ruby_generic_functions.rb
126
102
  - lib/mdarray/ruby_math.rb
127
103
  - lib/mdarray/ruby_numeric_functions.rb
128
104
  - lib/mdarray/ruby_operators.rb
129
105
  - lib/mdarray/ruby_stats.rb
130
- - lib/mdarray/slices.rb
131
- - lib/mdarray/statistics.rb
106
+ - lib/mdarray/views.rb
132
107
  - test/arithmetic_casting.rb
133
108
  - test/env.rb
134
109
  - test/test_access.rb
@@ -142,15 +117,15 @@ files:
142
117
  - test/test_operator.rb
143
118
  - test/test_printing.rb
144
119
  - test/test_shape.rb
145
- - test/test_slices.rb
146
120
  - test/test_speed.rb
147
121
  - test/test_statistics.rb
148
122
  - test/test_trigonometry.rb
123
+ - test/test_views.rb
149
124
  - vendor/netcdfAll-4.3.16.jar
150
125
  - README.md
151
126
  - LICENSE.txt
152
127
  - LICENSE.txt~
153
- homepage: http://github.com/rbotafogo/mdarray
128
+ homepage: http://github.com/rbotafogo/mdarray/wiki
154
129
  licenses: []
155
130
  post_install_message:
156
131
  rdoc_options: []
@@ -190,8 +165,8 @@ test_files:
190
165
  - test/test_operator.rb
191
166
  - test/test_printing.rb
192
167
  - test/test_shape.rb
193
- - test/test_slices.rb
194
168
  - test/test_speed.rb
195
169
  - test/test_statistics.rb
196
170
  - test/test_trigonometry.rb
171
+ - test/test_views.rb
197
172
  has_rdoc:
@@ -1,102 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- ##########################################################################################
4
- # Copyright © 2013 Rodrigo Botafogo. All Rights Reserved. Permission to use, copy, modify,
5
- # and distribute this software and its documentation, without fee and without a signed
6
- # licensing agreement, is hereby granted, provided that the above copyright notice, this
7
- # paragraph and the following two paragraphs appear in all copies, modifications, and
8
- # distributions.
9
- #
10
- # IN NO EVENT SHALL RODRIGO BOTAFOGO BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
11
- # INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF
12
- # THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RODRIGO BOTAFOGO HAS BEEN ADVISED OF THE
13
- # POSSIBILITY OF SUCH DAMAGE.
14
- #
15
- # RODRIGO BOTAFOGO SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
16
- # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
17
- # SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS".
18
- # RODRIGO BOTAFOGO HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
19
- # OR MODIFICATIONS.
20
- ##########################################################################################
21
-
22
- ##########################################################################################
23
- #
24
- ##########################################################################################
25
-
26
- class FastBoolean < BooleanMDArray
27
-
28
-
29
- #---------------------------------------------------------------------------------------
30
- #
31
- #---------------------------------------------------------------------------------------
32
-
33
- def initialize(storage, section = false)
34
- super("boolean", storage, section)
35
- end
36
-
37
- #---------------------------------------------------------------------------------------
38
- # Executes a boolean operator. Valid boolean operators are: and, or. Only applicable
39
- # to boolean operands
40
- #---------------------------------------------------------------------------------------
41
-
42
- def exec_boolean_op(dest, other_val, method)
43
-
44
- proc = Proc.new { |elmt, value| method.call(elmt, value) }
45
-
46
- if ((other_val.is_a? TrueClass) || (other_val.is_a? FalseClass))
47
- @helper.send("booleanOperationWithBool", dest.nc_array, @nc_array, other_val, proc)
48
- elsif (other_val.is_a? MDArray)
49
- if (compatible(other_val))
50
- @helper.send("booleanOperationWithArray", dest.nc_array, @nc_array,
51
- other_val.nc_array, proc)
52
- else
53
- raise "Invalid operation - arrays are incompatible"
54
- end
55
- else
56
- raise "Invalid operation with: #{other_val}"
57
- end
58
-
59
- return dest
60
-
61
- end
62
-
63
- #---------------------------------------------------------------------------------------
64
- # Executes a boolean operator. Valid boolean operators are: and, or. Only applicable
65
- # to boolean operands
66
- #---------------------------------------------------------------------------------------
67
-
68
- def exec_bin_op(op1, op2, proc, base)
69
-
70
- args = Array.new
71
- args << @nc_array
72
- (op1)? args << op1.nc_array : nil
73
-
74
- if (op2.is_a? Numeric)
75
- name = base + "WithNumber"
76
- args << op2
77
- elsif (op2.is_a? NumericalMDArray)
78
- if (compatible(op2))
79
- name = base + "WithArray"
80
- args << op2.nc_array
81
- else
82
- raise "Invalid operation - arrays are incompatible"
83
- end
84
- else
85
- raise "Invalid operation with: #{op2}"
86
- =begin
87
- # *TODO: make it more general using coerce if other_val type is not recognized
88
- if (arg is not recognized)
89
- self_equiv, arg_equiv = arg.coerce(self)
90
- self_equiv * arg_equiv
91
- end
92
- =end
93
- end
94
-
95
- args << proc
96
- @helper.send(make_function_name(name), *args)
97
- return self
98
-
99
- end
100
-
101
- end # FastBoolean
102
-
@@ -1,86 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- ##########################################################################################
4
- # Copyright © 2013 Rodrigo Botafogo. All Rights Reserved. Permission to use, copy, modify,
5
- # and distribute this software and its documentation, without fee and without a signed
6
- # licensing agreement, is hereby granted, provided that the above copyright notice, this
7
- # paragraph and the following two paragraphs appear in all copies, modifications, and
8
- # distributions.
9
- #
10
- # IN NO EVENT SHALL RODRIGO BOTAFOGO BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
11
- # INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF
12
- # THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RODRIGO BOTAFOGO HAS BEEN ADVISED OF THE
13
- # POSSIBILITY OF SUCH DAMAGE.
14
- #
15
- # RODRIGO BOTAFOGO SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
16
- # THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
17
- # SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS".
18
- # RODRIGO BOTAFOGO HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
19
- # OR MODIFICATIONS.
20
- ##########################################################################################
21
-
22
- class MDArray
23
-
24
- #---------------------------------------------------------------------------------------
25
- #
26
- #---------------------------------------------------------------------------------------
27
-
28
- def stdev
29
- return Math.sqrt(variance)
30
- end
31
-
32
- alias standard_deviation :stdev
33
-
34
- #---------------------------------------------------------------------------------------
35
- #
36
- #---------------------------------------------------------------------------------------
37
-
38
- def error_estimate
39
- Math.sqrt(variance/size)
40
- end
41
-
42
- #---------------------------------------------------------------------------------------
43
- #
44
- #---------------------------------------------------------------------------------------
45
-
46
- def skewness
47
-
48
- n = size
49
-
50
- if (n <= 2)
51
- raise "Cannot calculate skewness on array with less than 3 elements"
52
- end
53
-
54
- x = expectation_value(MDArray.method(:cube).to_proc *
55
- MDArray.method(:sub).to_proc.bind2nd(mean),
56
- Proc.everywhere)[0]
57
- sigma = stdev
58
-
59
- return (x/(sigma*sigma*sigma)) * (n/(n-1)) * (n/(n-2))
60
-
61
- end
62
-
63
- #---------------------------------------------------------------------------------------
64
- #
65
- #---------------------------------------------------------------------------------------
66
-
67
- def kurtosis
68
-
69
- n = size
70
-
71
- if (n <= 3)
72
- raise "Cannot calculate kurtosis on array with less than 4 elements"
73
- end
74
-
75
- x = expectation_value(MDArray.method(:fourth).to_proc *
76
- MDArray.method(:sub).to_proc.bind2nd(mean),
77
- Proc.everywhere)[0]
78
-
79
- sigma2 = variance
80
- c1 = (n/(n-1)) * (n/(n-2)) * ((n+1)/(n-3))
81
- c2 = 3 * ((n-1)/(n-2)) * ((n-1)/(n-3))
82
- return c1 * (x/(sigma2*sigma2)) - c2
83
-
84
- end
85
-
86
- end
data/test/test_slices.rb DELETED
@@ -1,146 +0,0 @@
1
- require 'rubygems'
2
- require "test/unit"
3
- require 'shoulda'
4
-
5
- require 'env'
6
- require 'mdarray'
7
-
8
- class MDArrayTest < Test::Unit::TestCase
9
-
10
- context "Slice Tests" do
11
-
12
- setup do
13
-
14
- # creates an array from a function (actually a block). The name fromfunction
15
- # is preserved to maintain API compatibility with NumPy (is it necessary?)
16
-
17
- # simulating financial data: 1 year, 20 days, 10 securities, 7 values (open,
18
- # close, high, low, volume, e1, e2)
19
- @a = MDArray.fromfunction("double", [1, 20, 10, 7]) do |x, y, z, k|
20
- 0.5 * x + y + 10 * (z + 1) + Math.sin(k + x)
21
- end
22
-
23
- @b = MDArray.int([2, 2])
24
-
25
- end
26
-
27
- #-------------------------------------------------------------------------------------
28
- #
29
- #-------------------------------------------------------------------------------------
30
- =begin
31
- should "get section with range" do
32
-
33
- @b[/1:2:3/, /1:5/, /3:4/, 1]
34
-
35
- end
36
- =end
37
-
38
- #-------------------------------------------------------------------------------------
39
- #
40
- #-------------------------------------------------------------------------------------
41
-
42
- should "slice array along axes" do
43
-
44
- @a.each_along_axes([3]) do |slice|
45
- slice.print
46
- print "\n"
47
- end
48
-
49
- # each_along_axes returns sub-arrays (sections) of the original array. Each section
50
- # is taken by walking along the given axis and getting the all elements of the
51
- # axis that were not given. For instance, array @a shape is [1, 20, 10, 7]. Slicing
52
- # along axes [0, 2] will get the following sections of @a:
53
- # section([0, 0, 0, 0], [1, 20, 1, 7]), section ([0, 0, 1, 0], [1, 20, 1, 7]),
54
- # section([0, 0, 2, 0], [1, 20, 1, 7])...
55
- # This is actually getting all values for every security for the 20 days.
56
-
57
- @a.each_along_axes([0, 2]) do |slice|
58
- slice.print
59
- p slice.cum_op(MDArray.method(:add))
60
- print "\n"
61
- end
62
-
63
- # Here we are getting 7 arrays for "open", "close", "High", "Low", etc. each
64
- # containing all the 20 days for each security. So, the first array has 20 elements
65
- # each with the "open" value for the first security. The second array returns
66
- # has 20 elements, each with the "close" value for the first security.
67
- @a.each_along_axes([2, 3]) do |slice|
68
- slice.print
69
- print "\n"
70
- end
71
-
72
- end
73
-
74
- #-------------------------------------------------------------------------------------
75
- #
76
- #-------------------------------------------------------------------------------------
77
-
78
- should "get array section" do
79
-
80
- # 1 -> first year (only 1 year)
81
- # 20 -> 20 days
82
- # 10 -> number os secs
83
- # 7 - > number of values
84
-
85
- # b is a section of @a, starting a position (0) and taking only the first two
86
- # elements of the first dimension. Getting all values, for all secs for the first
87
- # 2 days
88
- b = @a.section([0, 0, 0, 0], [1, 2, 10, 7])
89
- assert_equal(true, b.section?)
90
- assert_equal([1, 2, 10, 7], b.shape)
91
- ind = b.get_index
92
- ind.each do |elmt|
93
- assert_equal(@a.get(elmt), b.get(elmt))
94
- end
95
-
96
- # getting "open" for the first 2 days of the 3rd sec
97
- b = @a.section([0, 0, 3, 0], [1, 2, 1, 1])
98
- assert_equal(40.00, b[0, 0, 0, 0])
99
- assert_equal(41.00, b[0, 1, 0, 0])
100
-
101
- # getting "close" (2nd) value of the 3rd sec for the second day with
102
- # shape reduction. Note that in this case, with shape reduction, b is a
103
- # number and not an array any more
104
- b = @a.section([0, 1, 2, 1], [1, 1, 1, 1], true)
105
- assert_equal(@a[0, 1, 2, 1], b)
106
-
107
- # getting the "close" (2nd) value of the 3rd sec for the second day without
108
- # shape reduction
109
- b = @a.section([0, 1, 2, 1], [1, 1, 1, 1])
110
- assert_equal([1, 1, 1, 1], b.shape)
111
- assert_equal(@a[0, 1, 2, 1], b[0, 0, 0, 0])
112
-
113
- # getting the "open" (1rst) value of the second secs for two days
114
- b = @a.section([0, 0, 0, 0], [1, 2, 1, 1])
115
- assert_equal([1, 2, 1, 1], b.shape)
116
- assert_equal(@a[0, 0, 0, 0], b[0, 0, 0, 0])
117
- assert_equal(@a[0, 1, 0, 0], b[0, 1, 0, 0])
118
-
119
- # getting the "open" (1rst) value of the second secs for two days with rank
120
- # reduction
121
- b = @a.section([0, 0, 0, 0], [1, 2, 1, 1], true)
122
- assert_equal([2], b.shape)
123
- assert_equal(@a[0, 0, 0, 0], b[0])
124
- assert_equal(@a[0, 1, 0, 0], b[1])
125
-
126
- # getting the first security, all values
127
- b = @a.section([0, 0, 0, 0], [1, 1, 1, 7])
128
- # b.print
129
-
130
- # getting the 2 security, all values
131
- b = @a.section([0, 0, 1, 0], [1, 1, 1, 7])
132
- # b.print
133
-
134
- # getting the 1 day, all then secs
135
- b = @a.section([0, 0, 0, 0], [1, 1, 10, 7])
136
- # b.print
137
-
138
- # getting the "open" (1st) value of all secs for the first day
139
- b = @a.section([0, 0, 0, 0], [1, 1, 10, 1])
140
- # b.print
141
-
142
- end
143
-
144
- end
145
-
146
- end