mdarray 0.4.3.pre-java → 0.5.0-java
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +82 -14
- data/Rakefile +8 -2
- data/doc/BinaryOperator.html +227 -0
- data/doc/BitwiseOperators.html +135 -0
- data/doc/BooleanFunctions.html +135 -0
- data/doc/BooleanMDArray.html +193 -0
- data/doc/ByteMDArray.html +271 -0
- data/doc/Colt.html +269 -0
- data/doc/ComparisonOperators.html +135 -0
- data/doc/Const.html +490 -0
- data/doc/Csv.html +589 -0
- data/doc/DDescriptive.html +4373 -0
- data/doc/DoubleMDArray.html +555 -0
- data/doc/DoubleStatList.html +256 -0
- data/doc/FastBinaryOperator.html +743 -0
- data/doc/FastBoolean.html +512 -0
- data/doc/FastUnaryOperator.html +583 -0
- data/doc/FloatMDArray.html +237 -0
- data/doc/FunctionCreation.html +520 -0
- data/doc/FunctionMap.html +813 -0
- data/doc/GenericFunctions.html +135 -0
- data/doc/IntMDArray.html +259 -0
- data/doc/LongMDArray.html +257 -0
- data/doc/MDArray.html +9639 -0
- data/doc/MDArray/Counter.html +2767 -0
- data/doc/MDArray/IteratorFast.html +872 -0
- data/doc/MDArray/IteratorFastBoolean.html +384 -0
- data/doc/MDArray/IteratorFastByte.html +373 -0
- data/doc/MDArray/IteratorFastChar.html +384 -0
- data/doc/MDArray/IteratorFastDouble.html +384 -0
- data/doc/MDArray/IteratorFastFloat.html +384 -0
- data/doc/MDArray/IteratorFastInt.html +384 -0
- data/doc/MDArray/IteratorFastLong.html +384 -0
- data/doc/MDArray/IteratorFastShort.html +384 -0
- data/doc/MDArrayTest.html +125 -0
- data/doc/NonNumericalMDArray.html +177 -0
- data/doc/NumericFunctions.html +297 -0
- data/doc/NumericalMDArray.html +278 -0
- data/doc/Operator.html +826 -0
- data/doc/Proc.html +1097 -0
- data/doc/RubyBinaryOperator.html +526 -0
- data/doc/RubyFunctions.html +232 -0
- data/doc/RubyMath.html +135 -0
- data/doc/RubyStats.html +135 -0
- data/doc/RubyUnaryOperator.html +510 -0
- data/doc/ShortMDArray.html +267 -0
- data/doc/StatList.html +1176 -0
- data/doc/StringMDArray.html +181 -0
- data/doc/StructureMDArray.html +181 -0
- data/doc/UnaryOperator.html +227 -0
- data/doc/UserFunction.html +297 -0
- data/doc/_index.html +467 -0
- data/doc/class_list.html +53 -0
- data/doc/css/common.css +1 -0
- data/doc/css/full_list.css +57 -0
- data/doc/css/style.css +338 -0
- data/doc/file.README.html +173 -0
- data/doc/file_list.html +55 -0
- data/doc/frames.html +28 -0
- data/doc/index.html +173 -0
- data/doc/js/app.js +214 -0
- data/doc/js/full_list.js +173 -0
- data/doc/js/jquery.js +4 -0
- data/doc/method_list.html +2524 -0
- data/doc/top-level-namespace.html +114 -0
- data/lib/colt/colt.rb +56 -0
- data/lib/colt/colt_mdarray.rb +95 -0
- data/lib/colt/double_descriptive.rb +636 -0
- data/lib/colt/probability.rb +12 -0
- data/lib/colt/stat_list.rb +192 -0
- data/lib/env.rb +5 -1
- data/lib/mdarray.rb +5 -0
- data/lib/mdarray/access.rb +2 -2
- data/lib/mdarray/creation.rb +34 -19
- data/lib/mdarray/csv.rb +61 -0
- data/lib/mdarray/fast_operators.rb +241 -0
- data/lib/mdarray/operators.rb +18 -0
- data/lib/mdarray/ruby_operators.rb +2 -18
- data/lib/mdarray/ruby_stats.rb +1 -1
- data/lib/mdarray/views.rb +8 -8
- data/target/helper.jar +0 -0
- data/test/colt/VALE3.csv +3437 -0
- data/test/colt/VALE3.xlsx +0 -0
- data/test/colt/VALE3_short-err.csv +20 -0
- data/test/colt/VALE3_short.csv +20 -0
- data/test/colt/VALE3_short.xlsx +0 -0
- data/test/colt/test_complete.rb +25 -0
- data/test/colt/test_stat_list.rb +128 -0
- data/test/colt/test_statistics.rb +114 -0
- data/test/complete.rb +25 -0
- data/test/env.rb +54 -30
- data/test/{arithmetic_casting.rb → mdarray/arithmetic_casting.rb} +0 -0
- data/test/{test_access.rb → mdarray/test_access.rb} +0 -0
- data/test/{test_boolean.rb → mdarray/test_boolean.rb} +0 -2
- data/test/{test_comparison.rb → mdarray/test_comparison.rb} +0 -0
- data/test/{test_complete.rb → mdarray/test_complete.rb} +3 -14
- data/test/{test_counter.rb → mdarray/test_counter.rb} +0 -0
- data/test/{test_creation.rb → mdarray/test_creation.rb} +0 -0
- data/test/{test_error.rb → mdarray/test_error.rb} +8 -5
- data/test/{test_operator.rb → mdarray/test_operator.rb} +6 -2
- data/test/{test_speed.rb → mdarray/test_performance.rb} +74 -39
- data/test/{test_printing.rb → mdarray/test_printing.rb} +0 -1
- data/test/{test_shape.rb → mdarray/test_shape.rb} +0 -0
- data/test/mdarray/test_statistics.rb +80 -0
- data/test/{test_trigonometry.rb → mdarray/test_trigonometry.rb} +0 -0
- data/test/{test_views.rb → mdarray/test_views.rb} +0 -0
- data/vendor/parallelcolt-0.10.0.jar +0 -0
- data/version.rb +1 -1
- metadata +122 -39
- data/test/test_lazy.rb +0 -52
- data/test/test_statistics.rb +0 -38
Binary file
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Date,Open,High,Low,Close,Volume,Adj Close
|
2
|
+
2013-04-24,33.58,34.37,33.42,33.58,7022800,33.58
|
3
|
+
2013-04-23,32.53,33.54,32.07,33.40,3379500,33.40
|
4
|
+
2013-04-22,32.14,32.56,31.80,32.39,2287100,32.39
|
5
|
+
2013-04-19,32.34,32.54,31.54,32.10,4675200,32.10
|
6
|
+
2013-04-18,32.45,32.78,31.72,31.90,4258300,31.90
|
7
|
+
2013-04-17,31.70,32.50,31.07,32.46,9355000,32.46
|
8
|
+
2013-04-16,33.05,33.31,32.69,32.33,5677000,32.33
|
9
|
+
2013-04-15,33.55,33.86,32.05,32.46,4378700,32.46
|
10
|
+
2013-04-12,34.12,35.86,33.34,34.58,6132200,34.58
|
11
|
+
2013-04-11,35.15,35.29,33.89,34.14,5182600,34.14
|
12
|
+
2013-04-10,36.43,36.81,34.85,35.00,8489500,35.00
|
13
|
+
2013-04-09,35.00,36.60,35.00,36.19,7892300,36.19
|
14
|
+
2013-04-08,34.69,34.88,34.08,34.70,6448600,34.70
|
15
|
+
2013-04-05,33.74,34.83,33.44,34.56,4539600,34.56
|
16
|
+
2013-04-04,34.95,35.20,34.09,34.19,4226900,34.19
|
17
|
+
2013-04-03,33.18,35.35,33.06,35.16,6258100,35.16
|
18
|
+
2013-04-02,34.81,34.92,33.18,33.25,5340900,33.25
|
19
|
+
2013-04-01,34.81,34.92,33.94,34.00,1962600
|
20
|
+
2013-03-29,35.13,35.13,35.13,35.13,000,35.13
|
@@ -0,0 +1,20 @@
|
|
1
|
+
Date,Open,High,Low,Close,Volume,Adj Close
|
2
|
+
2013-04-24,33.58,34.37,33.42,33.58,7022800,33.58
|
3
|
+
2013-04-23,32.53,33.54,32.07,33.40,3379500,33.40
|
4
|
+
2013-04-22,32.14,32.56,31.80,32.39,2287100,32.39
|
5
|
+
2013-04-19,32.34,32.54,31.54,32.10,4675200,32.10
|
6
|
+
2013-04-18,32.45,32.78,31.72,31.90,4258300,31.90
|
7
|
+
2013-04-17,31.70,32.50,31.07,32.46,9355000,32.46
|
8
|
+
2013-04-16,33.05,33.31,32.69,32.33,5677000,32.33
|
9
|
+
2013-04-15,33.55,33.86,32.05,32.46,4378700,32.46
|
10
|
+
2013-04-12,34.12,35.86,33.34,34.58,6132200,34.58
|
11
|
+
2013-04-11,35.15,35.29,33.89,34.14,5182600,34.14
|
12
|
+
2013-04-10,36.43,36.81,34.85,35.00,8489500,35.00
|
13
|
+
2013-04-09,35.00,36.60,35.00,36.19,7892300,36.19
|
14
|
+
2013-04-08,34.69,34.88,34.08,34.70,6448600,34.70
|
15
|
+
2013-04-05,33.74,34.83,33.44,34.56,4539600,34.56
|
16
|
+
2013-04-04,34.95,35.20,34.09,34.19,4226900,34.19
|
17
|
+
2013-04-03,33.18,35.35,33.06,35.16,6258100,35.16
|
18
|
+
2013-04-02,34.81,34.92,33.18,33.25,5340900,33.25
|
19
|
+
2013-04-01,34.81,34.92,33.94,34.00,1962600,34.00
|
20
|
+
2013-03-29,35.13,35.13,35.13,35.13,000,35.13
|
Binary file
|
@@ -0,0 +1,25 @@
|
|
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
|
+
#=begin
|
23
|
+
require_relative 'test_statistics'
|
24
|
+
require_relative 'test_stat_list'
|
25
|
+
#=end
|
@@ -0,0 +1,128 @@
|
|
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
|
+
require 'rubygems'
|
23
|
+
require "test/unit"
|
24
|
+
require 'shoulda'
|
25
|
+
|
26
|
+
require 'mdarray'
|
27
|
+
|
28
|
+
class MDArrayTest < Test::Unit::TestCase
|
29
|
+
|
30
|
+
context "Parrallel Colt Integration" do
|
31
|
+
|
32
|
+
setup do
|
33
|
+
|
34
|
+
end # setup
|
35
|
+
|
36
|
+
#-------------------------------------------------------------------------------------
|
37
|
+
#
|
38
|
+
#-------------------------------------------------------------------------------------
|
39
|
+
|
40
|
+
should "work with stat_lists" do
|
41
|
+
|
42
|
+
# Creates a DoubleStatList of capacity 10
|
43
|
+
@list = DoubleStatList.new(10)
|
44
|
+
|
45
|
+
@list.add(2.25)
|
46
|
+
@list.add(5.0)
|
47
|
+
|
48
|
+
assert_equal(2.25, @list[0])
|
49
|
+
assert_equal(5.0, @list[1])
|
50
|
+
assert_equal(3.625, @list.mean)
|
51
|
+
|
52
|
+
# Search for element in the list
|
53
|
+
assert_equal(1, @list.binary_search(5))
|
54
|
+
assert_equal(1, @list.index_of(5.0))
|
55
|
+
|
56
|
+
@list.add(3.0)
|
57
|
+
@list.add(5.0)
|
58
|
+
|
59
|
+
assert_equal(3, @list.last_index_of(5.0))
|
60
|
+
|
61
|
+
list2 = @list.copy
|
62
|
+
# changing the value of @list
|
63
|
+
@list[0] = 10
|
64
|
+
assert_equal(10, @list[0])
|
65
|
+
# list2 is unchanged
|
66
|
+
assert_equal(2.25, list2[0])
|
67
|
+
|
68
|
+
@list.shuffle
|
69
|
+
@list.print
|
70
|
+
|
71
|
+
# mean is now wrong... we've added/changed elements in @list, but we still get the
|
72
|
+
assert_equal(3.625, @list.mean)
|
73
|
+
|
74
|
+
# to make it right we need to reset_statistics. Whenever an element on the
|
75
|
+
# list is changed it is required to call reset_statistics
|
76
|
+
@list.reset_statistics
|
77
|
+
assert_equal(5.75, @list.mean)
|
78
|
+
|
79
|
+
end
|
80
|
+
|
81
|
+
#-------------------------------------------------------------------------------------
|
82
|
+
#
|
83
|
+
#-------------------------------------------------------------------------------------
|
84
|
+
|
85
|
+
should "be memory efficient when possible" do
|
86
|
+
|
87
|
+
# read file VALE3. This file has a header that we need to discard. VALE3
|
88
|
+
# contains quote values from brazilian company VALE as obtained from Yahoo finance
|
89
|
+
# (quote vale3.SA)
|
90
|
+
vale3 = MDArray.double("#{$COLT_TEST_DIR}/VALE3_short.csv", true)
|
91
|
+
|
92
|
+
# calling reset_statistics on vale3, creates a stat_list for vale3
|
93
|
+
vale3.reset_statistics
|
94
|
+
|
95
|
+
# get vale3 stat_list. This should not copy any data... let's check it
|
96
|
+
list = vale3.stat_list
|
97
|
+
|
98
|
+
# let's change a value in list
|
99
|
+
list[0] = 10
|
100
|
+
assert_equal(10, list[0])
|
101
|
+
assert_equal(10, vale3[0, 0])
|
102
|
+
|
103
|
+
# Getting the open value
|
104
|
+
open = vale3.slice(1, 1)
|
105
|
+
|
106
|
+
# open and vale3 should use the same backing store
|
107
|
+
open[0] = 5
|
108
|
+
assert_equal(5, open[0])
|
109
|
+
assert_equal(5, vale3[0,1])
|
110
|
+
|
111
|
+
# now... doing reset_statistics on open will not use the same backing store
|
112
|
+
# as open is not contigous in memory and copying is necessary. This is the
|
113
|
+
# cost integrating NetCDF and Parallel Colt. It might actually be a good
|
114
|
+
# idea in some cases to make a copy and operate on contigous memory than using
|
115
|
+
# indexing to move over the array.
|
116
|
+
open.reset_statistics
|
117
|
+
open_list = open.stat_list
|
118
|
+
open_list[0] = 1000
|
119
|
+
assert_equal(1000, open_list[0])
|
120
|
+
assert_equal(5, open[0])
|
121
|
+
|
122
|
+
|
123
|
+
|
124
|
+
end
|
125
|
+
|
126
|
+
end
|
127
|
+
|
128
|
+
end
|
@@ -0,0 +1,114 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require "test/unit"
|
3
|
+
require 'shoulda'
|
4
|
+
|
5
|
+
require 'mdarray'
|
6
|
+
|
7
|
+
class MDArrayTest < Test::Unit::TestCase
|
8
|
+
|
9
|
+
context "Statistics Tests" do
|
10
|
+
|
11
|
+
setup do
|
12
|
+
|
13
|
+
end
|
14
|
+
|
15
|
+
#-------------------------------------------------------------------------------------
|
16
|
+
#
|
17
|
+
#-------------------------------------------------------------------------------------
|
18
|
+
|
19
|
+
should "do stats operations" do
|
20
|
+
|
21
|
+
# read file VALE3. This file has a header that we need to discard. VALE3
|
22
|
+
# contains quote values from brazilian company VALE as obtained from Yahoo finance
|
23
|
+
# (quote vale3.SA)
|
24
|
+
vale3 = MDArray.double("#{$COLT_TEST_DIR}/VALE3_short.csv", true)
|
25
|
+
|
26
|
+
# in order to use statistics we need to reset_statistics on array vale3. This
|
27
|
+
# breaks version 0.4.3 statistics that did not require a call to reset_statistics.
|
28
|
+
# In future version we will keep both methods with reset_statistics and without
|
29
|
+
# reset_statistics being required.
|
30
|
+
vale3.reset_statistics
|
31
|
+
|
32
|
+
# sum all values of vale3. This does not make sense from a financial point of view.
|
33
|
+
# suming all values including dates... Not doing anything with the value, just
|
34
|
+
# checking that it does not crash.
|
35
|
+
vale3.sum
|
36
|
+
|
37
|
+
# lets get only the open price for the whole period. We slice the vale3 on the
|
38
|
+
# second dimension and get the second column.
|
39
|
+
open = vale3.slice(1,1)
|
40
|
+
|
41
|
+
# lets also get the high value.
|
42
|
+
high = vale3.slice(1,2)
|
43
|
+
|
44
|
+
# weights to be used for weighted operations
|
45
|
+
weights = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14.0, 15, 16, 17, 18, 19]
|
46
|
+
|
47
|
+
# splitters to be used to split the list
|
48
|
+
splitters = [34.0, 36.0]
|
49
|
+
|
50
|
+
# quantiles to be used to split the list
|
51
|
+
percs = [0.20, 0.40, 0.60, 0.80, 1]
|
52
|
+
|
53
|
+
# getting descriptive statistics for the open value. open is a new MDArray, so
|
54
|
+
# we need to reset_statistics for open as well.
|
55
|
+
open.reset_statistics
|
56
|
+
|
57
|
+
assert_equal(-0.30204751376121775, open.auto_correlation(10))
|
58
|
+
assert_equal(0.8854362245369992, open.correlation(high))
|
59
|
+
assert_equal(1.4367963988919659, open.covariance(high))
|
60
|
+
assert_equal(0.00079607686762408, open.durbin_watson)
|
61
|
+
assert_equal(33.837262944797345, open.geometric_mean)
|
62
|
+
assert_equal(33.81400448777291, open.harmonic_mean)
|
63
|
+
assert_equal(-0.925644222523478, open.kurtosis)
|
64
|
+
assert_equal(0.681656774667894, open.lag1)
|
65
|
+
assert_equal(36.43, open.max)
|
66
|
+
assert_equal(33.86052631578948,open.mean)
|
67
|
+
assert_equal(1.0889750692520779,open.mean_deviation)
|
68
|
+
assert_equal(33.74,open.median)
|
69
|
+
assert_equal(31.7,open.min)
|
70
|
+
assert_equal(0.07736522466830013,open.moment3)
|
71
|
+
assert_equal(5.147382269264963,open.moment4)
|
72
|
+
assert_equal(34.17368421052632,open.pooled_mean(high))
|
73
|
+
assert_equal(1.623413296398882,open.pooled_variance(high))
|
74
|
+
assert_equal(1.1442193777839571e+29,open.product)
|
75
|
+
assert_equal(32.498000000000005,open.quantile(0.2))
|
76
|
+
assert_equal(0.8421052631578947,open.quantile_inverse(35.0))
|
77
|
+
assert_equal(5.903846153846159,open.rank_interpolated(33.0))
|
78
|
+
assert_equal(33.88377930514836,open.rms)
|
79
|
+
assert_equal(-0.8280585298104861,open.sample_kurtosis)
|
80
|
+
assert_equal(1.5166184210526306,open.sample_covariance(high))
|
81
|
+
assert_equal(1.0142698435367294,open.sample_kurtosis_standard_error)
|
82
|
+
assert_equal(0.042567930807996486,open.sample_skew)
|
83
|
+
assert_equal(0.5237666950104207,open.sample_skew_standard_error)
|
84
|
+
assert_equal(1.3075102994156926,open.sample_standard_deviation)
|
85
|
+
assert_equal(1.6627719298244807,open.sample_variance)
|
86
|
+
assert_equal(1.2035654385963137,open.sample_weighted_variance(weights))
|
87
|
+
assert_equal(0.039130771304858564,open.skew)
|
88
|
+
assert_equal(1.255092672964214,open.standard_deviation)
|
89
|
+
assert_equal(0.28793800664365016,open.standard_error)
|
90
|
+
assert_equal(643.35,open.sum)
|
91
|
+
assert_equal(0.561897364355954,open.sum_of_inversions)
|
92
|
+
assert_equal(66.90969033519778,open.sum_of_logarithms)
|
93
|
+
assert_equal(29.92989473684211,open.sum_of_power_deviations(2, open.mean))
|
94
|
+
assert_equal(740665.2440910001,open.sum_of_powers(3))
|
95
|
+
assert_equal(21814.099500000004,open.sum_of_squares)
|
96
|
+
assert_equal(28.354637119112198,open.sum_of_squared_deviations)
|
97
|
+
assert_equal(33.862, open.trimmed_mean(2, 2))
|
98
|
+
assert_equal(1.5752576177284554,open.variance)
|
99
|
+
assert_equal(34.31689473684211,open.weighted_mean(weights))
|
100
|
+
assert_equal(0.029110571117388302,open.weighted_rms(weights))
|
101
|
+
assert_equal(33.816315789473684,open.winsorized_mean(1, 1))
|
102
|
+
|
103
|
+
p "Distinct values: #{open.frequencies[:distinct_values]}"
|
104
|
+
p "Frequencies: #{open.frequencies[:frequencies]}"
|
105
|
+
p "Split: #{open.split(splitters)}"
|
106
|
+
p "Quantiles: #{open.quantiles(percs)}"
|
107
|
+
p "Sorted elements: #{open.sort}"
|
108
|
+
p "Standardized elements: #{open.standardize}"
|
109
|
+
|
110
|
+
end
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
end
|
data/test/complete.rb
ADDED
@@ -0,0 +1,25 @@
|
|
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
|
+
require 'env.rb'
|
23
|
+
|
24
|
+
require 'mdarray/test_complete'
|
25
|
+
require 'colt/test_complete'
|
data/test/env.rb
CHANGED
@@ -1,50 +1,74 @@
|
|
1
1
|
require 'rbconfig'
|
2
2
|
|
3
|
-
#
|
4
|
-
|
3
|
+
# Home directory for MDArray
|
4
|
+
$MDARRAY_HOME_DIR = ".."
|
5
5
|
|
6
|
-
#
|
7
|
-
|
6
|
+
# MDArray Test directory
|
7
|
+
$MDARRAY_TEST_DIR = "./mdarray"
|
8
8
|
|
9
|
-
#
|
10
|
-
|
11
|
-
`cygpath -p -m #{path}`.tr("\n", "")
|
12
|
-
end
|
9
|
+
# Colt Test directory
|
10
|
+
$COLT_TEST_DIR = "./colt"
|
13
11
|
|
14
|
-
|
15
|
-
|
12
|
+
##########################################################################################
|
13
|
+
# If we need to test for coverage
|
14
|
+
##########################################################################################
|
16
15
|
|
17
|
-
|
18
|
-
lib = path + "/lib"
|
19
|
-
else
|
20
|
-
lib = path
|
21
|
-
end
|
16
|
+
if ENV['COVERAGE'] == 'true'
|
22
17
|
|
23
|
-
|
18
|
+
require 'simplecov'
|
19
|
+
|
20
|
+
SimpleCov.start do
|
21
|
+
@filters = []
|
22
|
+
add_group "MDArray", "lib/mdarray"
|
23
|
+
add_group "Colt", "lib/colt"
|
24
|
+
end
|
24
25
|
|
25
26
|
end
|
26
27
|
|
27
|
-
|
28
|
-
|
29
|
-
|
28
|
+
##########################################################################################
|
29
|
+
# Prepare environment to work inside Cygwin
|
30
|
+
##########################################################################################
|
30
31
|
|
31
|
-
|
32
|
-
$MC_HOME_DIR = "/home/zxb3/Desenv/MultiCell"
|
33
|
-
mklib($MC_HOME_DIR)
|
32
|
+
if ENV['MDARRAY_ENV'] == 'cygwin'
|
34
33
|
|
35
|
-
#
|
36
|
-
|
37
|
-
|
34
|
+
# RbConfig::CONFIG['host_os'] # returns mswin32 on Windows, for example
|
35
|
+
# p Config::CONFIG
|
36
|
+
|
37
|
+
#---------------------------------------------------------------------------------------
|
38
|
+
# Return the cygpath of a path
|
39
|
+
#---------------------------------------------------------------------------------------
|
38
40
|
|
39
|
-
|
40
|
-
|
41
|
+
def cygpath(path)
|
42
|
+
`cygpath -a -p -m #{path}`.tr("\n", "")
|
43
|
+
end
|
44
|
+
|
45
|
+
#---------------------------------------------------------------------------------------
|
46
|
+
# Add path to load path
|
47
|
+
#---------------------------------------------------------------------------------------
|
48
|
+
|
49
|
+
def mklib(path, home_path = true)
|
50
|
+
|
51
|
+
if (home_path)
|
52
|
+
lib = path + "/lib"
|
53
|
+
else
|
54
|
+
lib = path
|
55
|
+
end
|
56
|
+
|
57
|
+
$LOAD_PATH << `cygpath -p -m #{lib}`.tr("\n", "")
|
58
|
+
|
59
|
+
end
|
60
|
+
|
61
|
+
mklib($MDARRAY_HOME_DIR)
|
41
62
|
|
42
|
-
|
43
|
-
$
|
63
|
+
$MDARRAY_TEST_DIR = cygpath($MDARRAY_TEST_DIR)
|
64
|
+
$COLT_TEST_DIR = cygpath($COLT_TEST_DIR)
|
65
|
+
|
66
|
+
end
|
44
67
|
|
45
68
|
=begin
|
46
69
|
# Build Jruby classpath from environment classpath
|
47
70
|
ENV['WCLASSPATH'].split(';').each do |path|
|
48
|
-
|
71
|
+
$CLASSPATH << cygpath(path)
|
49
72
|
end
|
50
73
|
=end
|
74
|
+
|