mdarray-jcsv 0.6.3-java
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 +7 -0
- data/LICENSE.txt +23 -0
- data/README.md +2 -0
- data/Rakefile +46 -0
- data/config.rb +104 -0
- data/lib/constraints.rb +205 -0
- data/lib/date_filters.rb +252 -0
- data/lib/dimensions.rb +276 -0
- data/lib/filters.rb +332 -0
- data/lib/jcsv.rb +107 -0
- data/lib/list_reader.rb +200 -0
- data/lib/locale.rb +192 -0
- data/lib/map_reader.rb +192 -0
- data/lib/mdarray-jcsv.rb +24 -0
- data/lib/mdarray_reader.rb +110 -0
- data/lib/numeric_filters.rb +225 -0
- data/lib/reader.rb +547 -0
- data/lib/supercsv_interface.rb +231 -0
- data/test/test_complete.rb +37 -0
- data/test/test_critbit.rb +442 -0
- data/test/test_customer_list.rb +436 -0
- data/test/test_customer_map.rb +209 -0
- data/test/test_customer_nhlist.rb +161 -0
- data/test/test_deep_map.rb +264 -0
- data/test/test_del.rb +73 -0
- data/test/test_dimensions.rb +231 -0
- data/test/test_example.rb +79 -0
- data/test/test_filters.rb +374 -0
- data/test/test_list_dimensions.rb +110 -0
- data/test/test_mdarray.rb +227 -0
- data/test/test_missing_data.rb +57 -0
- data/vendor/commons-beanutils-1.8.3.jar +0 -0
- data/vendor/commons-lang3-3.1.jar +0 -0
- data/vendor/dozer-5.4.0.jar +0 -0
- data/vendor/jcl-over-slf4j-1.6.6.jar +0 -0
- data/vendor/joda-time-2.7.jar +0 -0
- data/vendor/slf4j-api-1.7.5.jar +0 -0
- data/vendor/snakeyaml-1.14.jar +0 -0
- data/vendor/super-csv-2.4.0.jar +0 -0
- data/vendor/super-csv-dozer-2.4.0.jar +0 -0
- data/vendor/super-csv-java8-2.4.0.jar +0 -0
- data/vendor/super-csv-joda-2.4.0.jar +0 -0
- data/version.rb +2 -0
- metadata +196 -0
@@ -0,0 +1,110 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
##########################################################################################
|
4
|
+
# Copyright © 2015 Rodrigo Botafogo. All Rights Reserved. Permission to use, copy, modify,
|
5
|
+
# and distribute this software and its documentation for educational, research, and
|
6
|
+
# not-for-profit purposes, without fee and without a signed licensing agreement, is hereby
|
7
|
+
# granted, provided that the above copyright notice, this paragraph and the following two
|
8
|
+
# paragraphs appear in all copies, modifications, and distributions. Contact Rodrigo
|
9
|
+
# Botafogo - rodrigo.a.botafogo@gmail.com for commercial licensing opportunities.
|
10
|
+
#
|
11
|
+
# IN NO EVENT SHALL RODRIGO BOTAFOGO BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
|
12
|
+
# INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF
|
13
|
+
# THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RODRIGO BOTAFOGO HAS BEEN ADVISED OF THE
|
14
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
15
|
+
#
|
16
|
+
# RODRIGO BOTAFOGO SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
17
|
+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
18
|
+
# SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS".
|
19
|
+
# RODRIGO BOTAFOGO HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
|
20
|
+
# OR MODIFICATIONS.
|
21
|
+
##########################################################################################
|
22
|
+
|
23
|
+
require 'test/unit'
|
24
|
+
require 'shoulda'
|
25
|
+
|
26
|
+
require_relative '../config'
|
27
|
+
|
28
|
+
require 'jcsv'
|
29
|
+
|
30
|
+
class CSVTest < Test::Unit::TestCase
|
31
|
+
|
32
|
+
context "CSV test" do
|
33
|
+
|
34
|
+
setup do
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
#-------------------------------------------------------------------------------------
|
39
|
+
# Read data into a list.
|
40
|
+
#-------------------------------------------------------------------------------------
|
41
|
+
|
42
|
+
should "read panel data into a list" do
|
43
|
+
|
44
|
+
reader = Jcsv.reader("../data/epilepsy.csv",
|
45
|
+
dimensions: [:treatment, :subject, :period],
|
46
|
+
default_filter: Jcsv.int)
|
47
|
+
|
48
|
+
# remove the :patient field from the data, as this field is already given by the
|
49
|
+
# :subject field.
|
50
|
+
reader.mapping = {:patient => false}
|
51
|
+
|
52
|
+
# read all the data into a flat map (hash) with keys the dimensions values
|
53
|
+
# concatenated with '.'.
|
54
|
+
treatment = reader.read
|
55
|
+
# p treatment
|
56
|
+
|
57
|
+
assert_equal(["placebo", "1", "1"], treatment[0][0])
|
58
|
+
assert_equal([1, 11, 31, 5], treatment[0][1..-1])
|
59
|
+
assert_equal(["placebo", "2", "2"], treatment[5][0])
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
#-------------------------------------------------------------------------------------
|
64
|
+
# Read data into a list with chunk_size
|
65
|
+
#-------------------------------------------------------------------------------------
|
66
|
+
|
67
|
+
should "read panel data into a list with chunk size" do
|
68
|
+
|
69
|
+
# deep_map is ignored if reading into a list
|
70
|
+
reader = Jcsv.reader("../data/epilepsy.csv", chunk_size: 20, deep_map: true,
|
71
|
+
dimensions: [:treatment, :subject, :period],
|
72
|
+
default_filter: Jcsv.int)
|
73
|
+
|
74
|
+
# remove the :patient field from the data, as this field is already given by the
|
75
|
+
# :subject field.
|
76
|
+
reader.mapping = {:patient => false}
|
77
|
+
|
78
|
+
# read all the data into a flat map (hash) with keys the dimensions values
|
79
|
+
# concatenated with '.'.
|
80
|
+
treatment = reader.read
|
81
|
+
# p treatment[0]
|
82
|
+
# p treatment[10]
|
83
|
+
|
84
|
+
assert_equal(["placebo", "1", "1"], treatment[0][0][0])
|
85
|
+
assert_equal(["placebo", "2", "2"], treatment[0][5][0])
|
86
|
+
assert_equal(["placebo", "16", "1"], treatment[3][0][0])
|
87
|
+
assert_equal(["Progabide", "52", "4"], treatment[10][7][0])
|
88
|
+
|
89
|
+
end
|
90
|
+
|
91
|
+
#-------------------------------------------------------------------------------------
|
92
|
+
# Read data into a list.
|
93
|
+
#-------------------------------------------------------------------------------------
|
94
|
+
|
95
|
+
should "read more panel data" do
|
96
|
+
|
97
|
+
reader = Jcsv.reader("../data/GoodOrder.csv", col_sep: ";",
|
98
|
+
dimensions: [:dim_1, :dim_2, :dim_3])
|
99
|
+
reader.filters = {
|
100
|
+
:data => Jcsv.int,
|
101
|
+
}
|
102
|
+
|
103
|
+
table = reader.read
|
104
|
+
# p table
|
105
|
+
|
106
|
+
end
|
107
|
+
|
108
|
+
end
|
109
|
+
|
110
|
+
end
|
@@ -0,0 +1,227 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
##########################################################################################
|
4
|
+
# Copyright © 2015 Rodrigo Botafogo. All Rights Reserved. Permission to use, copy, modify,
|
5
|
+
# and distribute this software and its documentation for educational, research, and
|
6
|
+
# not-for-profit purposes, without fee and without a signed licensing agreement, is hereby
|
7
|
+
# granted, provided that the above copyright notice, this paragraph and the following two
|
8
|
+
# paragraphs appear in all copies, modifications, and distributions. Contact Rodrigo
|
9
|
+
# Botafogo - rodrigo.a.botafogo@gmail.com for commercial licensing opportunities.
|
10
|
+
#
|
11
|
+
# IN NO EVENT SHALL RODRIGO BOTAFOGO BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
|
12
|
+
# INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF
|
13
|
+
# THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RODRIGO BOTAFOGO HAS BEEN ADVISED OF THE
|
14
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
15
|
+
#
|
16
|
+
# RODRIGO BOTAFOGO SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
17
|
+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
18
|
+
# SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS".
|
19
|
+
# RODRIGO BOTAFOGO HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
|
20
|
+
# OR MODIFICATIONS.
|
21
|
+
##########################################################################################
|
22
|
+
|
23
|
+
require 'rubygems'
|
24
|
+
require 'test/unit'
|
25
|
+
require 'shoulda'
|
26
|
+
require 'matrix'
|
27
|
+
require 'mdarray'
|
28
|
+
|
29
|
+
require_relative '../config'
|
30
|
+
|
31
|
+
require 'mdarray-jcsv'
|
32
|
+
|
33
|
+
class CSVTest < Test::Unit::TestCase
|
34
|
+
|
35
|
+
context "CSV test" do
|
36
|
+
|
37
|
+
setup do
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
#-------------------------------------------------------------------------------------
|
42
|
+
#
|
43
|
+
#-------------------------------------------------------------------------------------
|
44
|
+
|
45
|
+
should "read data without dimensions" do
|
46
|
+
|
47
|
+
vale = Jcsv.reader("../data/VALE_2014.csv", format: :mdarray, dtype: :double)
|
48
|
+
# need to drop date, as this is not a double and we did not make it a
|
49
|
+
# dimension
|
50
|
+
vale.mapping = {:date => false}
|
51
|
+
data = vale.read
|
52
|
+
assert_equal(8.24, data[0, 0])
|
53
|
+
assert_equal(7.79, data[15, 2])
|
54
|
+
assert_equal(13.512299, data[251, 5])
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
#-------------------------------------------------------------------------------------
|
59
|
+
#
|
60
|
+
#-------------------------------------------------------------------------------------
|
61
|
+
|
62
|
+
should "read data with one dimension" do
|
63
|
+
|
64
|
+
vale = Jcsv.reader("../data/VALE_2014.csv", format: :mdarray, dtype: :double,
|
65
|
+
dimensions: [:date])
|
66
|
+
data = vale.read
|
67
|
+
assert_equal(8.24, data[0, 0])
|
68
|
+
assert_equal(7.79, data[15, 2])
|
69
|
+
assert_equal(13.512299, data[251, 5])
|
70
|
+
|
71
|
+
end
|
72
|
+
|
73
|
+
|
74
|
+
#-------------------------------------------------------------------------------------
|
75
|
+
#
|
76
|
+
#-------------------------------------------------------------------------------------
|
77
|
+
|
78
|
+
should "read balanced panel data" do
|
79
|
+
|
80
|
+
# person,year,income,age,sex
|
81
|
+
# 1,2001,1300,27,1
|
82
|
+
# 1,2002,1600,28,1
|
83
|
+
# 1,2003,2000,29,1
|
84
|
+
# 2,2001,2000,38,2
|
85
|
+
# 2,2002,2300,39,2
|
86
|
+
# 2,2003,2400,40,2
|
87
|
+
|
88
|
+
reader = Jcsv.reader("../data/balanced_panel.csv", format: :mdarray, dtype: :double,
|
89
|
+
dimensions: [:person, :year])
|
90
|
+
balanced_panel = reader.read
|
91
|
+
|
92
|
+
# method [] of reader returns the labels of the given dimension. Headers can be
|
93
|
+
# obtained by doing reader[:_data_], _data_ is the header dimension
|
94
|
+
assert_equal(["1", "2"], reader[:person])
|
95
|
+
assert_equal(["2001", "2002", "2003"], reader[:year])
|
96
|
+
assert_equal([:income, :age, :sex], reader[:_data_])
|
97
|
+
|
98
|
+
# Take a section of the MDArray. Get all data values from person 1
|
99
|
+
balanced_panel.section([0, 0, 0],
|
100
|
+
[1, reader[:year].size, reader[:_data_].size]).print
|
101
|
+
|
102
|
+
# Get the income for both persons for year 2001 and calculate their mean
|
103
|
+
puts balanced_panel.section([0, 0, 0],
|
104
|
+
[reader[:person].size, 1, 1], true).
|
105
|
+
reset_statistics.mean
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
#-------------------------------------------------------------------------------------
|
110
|
+
#
|
111
|
+
#-------------------------------------------------------------------------------------
|
112
|
+
|
113
|
+
should "read unbalanced panel data" do
|
114
|
+
|
115
|
+
# Note that in this case the data is unbalanced, i.e., there are two entries for
|
116
|
+
# person 1, 3 entries for person 2 and one entry for person 3. jCSV will
|
117
|
+
# automatically fill the missing data with NaN.
|
118
|
+
|
119
|
+
# person,year,income,age,sex
|
120
|
+
# 1,2001,1600,23,1
|
121
|
+
# 1,2002,1500,24,1
|
122
|
+
# 2,2001,1900,41,2
|
123
|
+
# 2,2002,2000,42,2
|
124
|
+
# 2,2003,2100,43,2
|
125
|
+
# 3,2002,3300,34,1
|
126
|
+
|
127
|
+
reader = Jcsv.reader("../data/unbalanced_panel.csv", format: :mdarray,
|
128
|
+
dtype: :double, dimensions: [:person, :year])
|
129
|
+
ub_panel = reader.read
|
130
|
+
|
131
|
+
assert_equal(["1", "2", "3"], reader[:person])
|
132
|
+
assert_equal(["2001", "2002", "2003"], reader[:year])
|
133
|
+
assert_equal([:income, :age, :sex], reader[:_data_])
|
134
|
+
|
135
|
+
# The following data is expected after reading the unbalanced data
|
136
|
+
|
137
|
+
# person,year,income,age,sex
|
138
|
+
# 1,2001,1600,23,1
|
139
|
+
# 1,2002,1500,24,1
|
140
|
+
# 1,2003,NaN,NaN,NaN
|
141
|
+
# 2,2001,1900,41,2
|
142
|
+
# 2,2002,2000,42,2
|
143
|
+
# 2,2003,2100,43,2
|
144
|
+
# 3,2001,NaN,NaN,NaN
|
145
|
+
# 3,2002,3300,34,1
|
146
|
+
# 3,2003,NaN,NaN,NaN
|
147
|
+
|
148
|
+
assert_equal(1600, ub_panel[0, 0, 0])
|
149
|
+
assert_equal(true, ub_panel[0, 2, 0].nan?)
|
150
|
+
assert_equal(34, ub_panel[2, 1, 1])
|
151
|
+
assert_equal(true, ub_panel[2, 2, 2].nan?)
|
152
|
+
|
153
|
+
end
|
154
|
+
|
155
|
+
|
156
|
+
#-------------------------------------------------------------------------------------
|
157
|
+
#
|
158
|
+
#-------------------------------------------------------------------------------------
|
159
|
+
|
160
|
+
should "convert to MDArray" do
|
161
|
+
|
162
|
+
# Data which show the effect of two soporific drugs (increase in hours of sleep
|
163
|
+
# compared to control) on 10 patients.
|
164
|
+
|
165
|
+
reader = Jcsv.reader("../data/sleep.csv", format: :mdarray, col_sep: ";",
|
166
|
+
comment_starts: "#", dtype: :float,
|
167
|
+
dimensions: [:group, :id])
|
168
|
+
reader.mapping = {:row => false}
|
169
|
+
ssleep = reader.read
|
170
|
+
# ssleep.print
|
171
|
+
|
172
|
+
group1 = ssleep.slice(0, 0)
|
173
|
+
group2 = ssleep.slice(0, 1)
|
174
|
+
|
175
|
+
# Print many statistics about group1. Need to call reset_statistics on group1 to
|
176
|
+
# prepare it for calculations and clear all the caches. Calculations are
|
177
|
+
# cached, for example, when the mean is calculated it will be cached. When the
|
178
|
+
# standard deviation is calculated, there is no need to calculate the mean again,
|
179
|
+
# since it has already been calculated. Thre problem with this approach is that
|
180
|
+
# if the array is changed in any way, then reset_statistics needs to be called
|
181
|
+
# again or all cached values will be returned again.
|
182
|
+
group1.reset_statistics
|
183
|
+
|
184
|
+
puts "correlation group1 vs group2: " + group1.correlation(group2).to_s
|
185
|
+
puts "auto correlation: " + group1.auto_correlation(1).to_s
|
186
|
+
puts "durbin watson: " + group1.durbin_watson.to_s
|
187
|
+
puts "geometric mean: " + group1.geometric_mean.to_s
|
188
|
+
puts "harmonic mean: " + group1.harmonic_mean.to_s
|
189
|
+
puts "kurtosis: " + group1.kurtosis.to_s
|
190
|
+
puts "lag1: " + group1.lag1.to_s
|
191
|
+
puts "max: " + group1.max.to_s
|
192
|
+
puts "mean: " + group1.mean.to_s
|
193
|
+
puts "mean deviation: " + group1.mean_deviation.to_s
|
194
|
+
puts "median: " + group1.median.to_s
|
195
|
+
puts "min: " + group1.min.to_s
|
196
|
+
puts "moment3: " + group1.moment3.to_s
|
197
|
+
puts "moment4: " + group1.moment4.to_s
|
198
|
+
puts "product: " + group1.product.to_s
|
199
|
+
puts "quantile(0.2): " + group1.quantile(0.2).to_s
|
200
|
+
puts "quantile inverse(35.0): " + group1.quantile_inverse(35.0).to_s
|
201
|
+
puts "rank interpolated(33.0): " + group1.rank_interpolated(33.0).to_s
|
202
|
+
puts "rms: " + group1.rms.to_s
|
203
|
+
puts "sample kurtosis: " + group1.sample_kurtosis.to_s
|
204
|
+
puts "sample kurtosis standard error: " + group1.sample_kurtosis_standard_error.to_s
|
205
|
+
puts "sample skew: " + group1.sample_skew.to_s
|
206
|
+
puts "sample skew standard error: " + group1.sample_skew_standard_error.to_s
|
207
|
+
puts "sample standard deviation: " + group1.sample_standard_deviation.to_s
|
208
|
+
puts "sample variance: " + group1.sample_variance.to_s
|
209
|
+
puts "skew: " + group1.skew.to_s
|
210
|
+
puts "standard deviation: " + group1.standard_deviation.to_s
|
211
|
+
puts "standard error: " + group1.standard_error.to_s
|
212
|
+
puts "sum: " + group1.sum.to_s
|
213
|
+
puts "sum of inversions: " + group1.sum_of_inversions.to_s
|
214
|
+
puts "sum of logarithms: " + group1.sum_of_logarithms.to_s
|
215
|
+
puts "sum of power deviations: " + group1.sum_of_power_deviations(2, group1.mean).to_s
|
216
|
+
puts "sum of powers(3): " + group1.sum_of_powers(3).to_s
|
217
|
+
puts "sum of squares: " + group1.sum_of_squares.to_s
|
218
|
+
puts "sum of squared deviations: " + group1.sum_of_squared_deviations.to_s
|
219
|
+
puts "trimmed_mean(2, 2): " + group1.trimmed_mean(2, 2).to_s
|
220
|
+
puts "variance: " + group1.variance.to_s
|
221
|
+
puts "winsorized mean: " + group1.winsorized_mean(1, 1).to_s
|
222
|
+
|
223
|
+
end
|
224
|
+
|
225
|
+
end
|
226
|
+
|
227
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
##########################################################################################
|
4
|
+
# Copyright © 2015 Rodrigo Botafogo. All Rights Reserved. Permission to use, copy, modify,
|
5
|
+
# and distribute this software and its documentation for educational, research, and
|
6
|
+
# not-for-profit purposes, without fee and without a signed licensing agreement, is hereby
|
7
|
+
# granted, provided that the above copyright notice, this paragraph and the following two
|
8
|
+
# paragraphs appear in all copies, modifications, and distributions. Contact Rodrigo
|
9
|
+
# Botafogo - rodrigo.a.botafogo@gmail.com for commercial licensing opportunities.
|
10
|
+
#
|
11
|
+
# IN NO EVENT SHALL RODRIGO BOTAFOGO BE LIABLE TO ANY PARTY FOR DIRECT, INDIRECT, SPECIAL,
|
12
|
+
# INCIDENTAL, OR CONSEQUENTIAL DAMAGES, INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF
|
13
|
+
# THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF RODRIGO BOTAFOGO HAS BEEN ADVISED OF THE
|
14
|
+
# POSSIBILITY OF SUCH DAMAGE.
|
15
|
+
#
|
16
|
+
# RODRIGO BOTAFOGO SPECIFICALLY DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
17
|
+
# THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE
|
18
|
+
# SOFTWARE AND ACCOMPANYING DOCUMENTATION, IF ANY, PROVIDED HEREUNDER IS PROVIDED "AS IS".
|
19
|
+
# RODRIGO BOTAFOGO HAS NO OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS,
|
20
|
+
# OR MODIFICATIONS.
|
21
|
+
##########################################################################################
|
22
|
+
|
23
|
+
require 'rubygems'
|
24
|
+
require 'test/unit'
|
25
|
+
require 'shoulda'
|
26
|
+
require 'matrix'
|
27
|
+
|
28
|
+
require_relative '../config'
|
29
|
+
|
30
|
+
require 'jcsv'
|
31
|
+
|
32
|
+
class CSVTest < Test::Unit::TestCase
|
33
|
+
|
34
|
+
context "CSV test" do
|
35
|
+
|
36
|
+
setup do
|
37
|
+
|
38
|
+
end
|
39
|
+
|
40
|
+
#-------------------------------------------------------------------------------------
|
41
|
+
#
|
42
|
+
#-------------------------------------------------------------------------------------
|
43
|
+
|
44
|
+
should "identify missing data" do
|
45
|
+
|
46
|
+
reader = Jcsv.reader("VALE_PETRA.csv", format: :map, chunk_size: :all, col_sep: ';',
|
47
|
+
comment_starts: '#', default_filter: Jcsv.double,
|
48
|
+
dimensions: [:symbol, :date], deep: true)
|
49
|
+
|
50
|
+
ticks = reader.read[0]
|
51
|
+
# p ticks
|
52
|
+
|
53
|
+
end
|
54
|
+
|
55
|
+
end
|
56
|
+
|
57
|
+
end
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
data/version.rb
ADDED
metadata
ADDED
@@ -0,0 +1,196 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: mdarray-jcsv
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.6.3
|
5
|
+
platform: java
|
6
|
+
authors:
|
7
|
+
- Rodrigo Botafogo
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-06-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
15
|
+
requirements:
|
16
|
+
- - "~>"
|
17
|
+
- !ruby/object:Gem::Version
|
18
|
+
version: '0.5'
|
19
|
+
name: mdarray
|
20
|
+
prerelease: false
|
21
|
+
type: :runtime
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
29
|
+
requirements:
|
30
|
+
- - "~>"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0.5'
|
33
|
+
name: critbit
|
34
|
+
prerelease: false
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
43
|
+
requirements:
|
44
|
+
- - "~>"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '0.1'
|
47
|
+
name: CodeWriter
|
48
|
+
prerelease: false
|
49
|
+
type: :development
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - "~>"
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '3.5'
|
61
|
+
name: shoulda
|
62
|
+
prerelease: false
|
63
|
+
type: :development
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.5'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
71
|
+
requirements:
|
72
|
+
- - "~>"
|
73
|
+
- !ruby/object:Gem::Version
|
74
|
+
version: '0.11'
|
75
|
+
name: simplecov
|
76
|
+
prerelease: false
|
77
|
+
type: :development
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.11'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
85
|
+
requirements:
|
86
|
+
- - "~>"
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: '0.8'
|
89
|
+
name: yard
|
90
|
+
prerelease: false
|
91
|
+
type: :development
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.8'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '1.0'
|
103
|
+
name: kramdown
|
104
|
+
prerelease: false
|
105
|
+
type: :development
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.0'
|
111
|
+
description: "\n"
|
112
|
+
email: rodrigo.a.botafogo@gmail.com
|
113
|
+
executables: []
|
114
|
+
extensions: []
|
115
|
+
extra_rdoc_files: []
|
116
|
+
files:
|
117
|
+
- LICENSE.txt
|
118
|
+
- README.md
|
119
|
+
- Rakefile
|
120
|
+
- config.rb
|
121
|
+
- lib/constraints.rb
|
122
|
+
- lib/date_filters.rb
|
123
|
+
- lib/dimensions.rb
|
124
|
+
- lib/filters.rb
|
125
|
+
- lib/jcsv.rb
|
126
|
+
- lib/list_reader.rb
|
127
|
+
- lib/locale.rb
|
128
|
+
- lib/map_reader.rb
|
129
|
+
- lib/mdarray-jcsv.rb
|
130
|
+
- lib/mdarray_reader.rb
|
131
|
+
- lib/numeric_filters.rb
|
132
|
+
- lib/reader.rb
|
133
|
+
- lib/supercsv_interface.rb
|
134
|
+
- test/test_complete.rb
|
135
|
+
- test/test_critbit.rb
|
136
|
+
- test/test_customer_list.rb
|
137
|
+
- test/test_customer_map.rb
|
138
|
+
- test/test_customer_nhlist.rb
|
139
|
+
- test/test_deep_map.rb
|
140
|
+
- test/test_del.rb
|
141
|
+
- test/test_dimensions.rb
|
142
|
+
- test/test_example.rb
|
143
|
+
- test/test_filters.rb
|
144
|
+
- test/test_list_dimensions.rb
|
145
|
+
- test/test_mdarray.rb
|
146
|
+
- test/test_missing_data.rb
|
147
|
+
- vendor/commons-beanutils-1.8.3.jar
|
148
|
+
- vendor/commons-lang3-3.1.jar
|
149
|
+
- vendor/dozer-5.4.0.jar
|
150
|
+
- vendor/jcl-over-slf4j-1.6.6.jar
|
151
|
+
- vendor/joda-time-2.7.jar
|
152
|
+
- vendor/slf4j-api-1.7.5.jar
|
153
|
+
- vendor/snakeyaml-1.14.jar
|
154
|
+
- vendor/super-csv-2.4.0.jar
|
155
|
+
- vendor/super-csv-dozer-2.4.0.jar
|
156
|
+
- vendor/super-csv-java8-2.4.0.jar
|
157
|
+
- vendor/super-csv-joda-2.4.0.jar
|
158
|
+
- version.rb
|
159
|
+
homepage: http://github.com/rbotafogo/jCSV/wiki
|
160
|
+
licenses:
|
161
|
+
- BSD-2-Clause
|
162
|
+
metadata: {}
|
163
|
+
post_install_message:
|
164
|
+
rdoc_options: []
|
165
|
+
require_paths:
|
166
|
+
- lib
|
167
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
168
|
+
requirements:
|
169
|
+
- - ">="
|
170
|
+
- !ruby/object:Gem::Version
|
171
|
+
version: '0'
|
172
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
173
|
+
requirements:
|
174
|
+
- - ">="
|
175
|
+
- !ruby/object:Gem::Version
|
176
|
+
version: '0'
|
177
|
+
requirements: []
|
178
|
+
rubyforge_project:
|
179
|
+
rubygems_version: 2.6.6
|
180
|
+
signing_key:
|
181
|
+
specification_version: 4
|
182
|
+
summary: MDArray-jCSV (jCSV for short) is the first and only (as far as I know) multidimensional CSV reader. Multidimensional? Yes... jCSV can read multidimensional data, also known sometimes as 'panel data'. jCSV is based on Super CSV (http://super-csv.github.io/super-csv/index.html), a java CSV library. According to Super CSV web page its motivation is 'for Super CSV is to be the foremost, fastest, and most programmer-friendly, free CSV package for Java'. jCSV motivation is to bring this view to the Ruby world, and since we are in Ruby, make it even easier and more programmer-friendly.
|
183
|
+
test_files:
|
184
|
+
- test/test_complete.rb
|
185
|
+
- test/test_critbit.rb
|
186
|
+
- test/test_customer_list.rb
|
187
|
+
- test/test_customer_map.rb
|
188
|
+
- test/test_customer_nhlist.rb
|
189
|
+
- test/test_deep_map.rb
|
190
|
+
- test/test_del.rb
|
191
|
+
- test/test_dimensions.rb
|
192
|
+
- test/test_example.rb
|
193
|
+
- test/test_filters.rb
|
194
|
+
- test/test_list_dimensions.rb
|
195
|
+
- test/test_mdarray.rb
|
196
|
+
- test/test_missing_data.rb
|