daru 0.0.1 → 0.0.2
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 +4 -4
- data/Gemfile.lock +1 -1
- data/README.md +32 -0
- data/daru.gemspec +5 -4
- data/lib/daru.rb +1 -0
- data/lib/daru/dataframe.rb +175 -2
- data/lib/daru/vector.rb +104 -13
- data/lib/version.rb +1 -1
- data/spec/fixtures/matrix_test.csv +100 -0
- data/spec/jruby/vector_spec.rb +15 -14
- data/spec/mri/dataframe_spec.rb +100 -2
- data/spec/mri/vector_spec.rb +37 -12
- data/spec/spec_helper.rb +6 -1
- metadata +11 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e40b5dd9b236c4f7bbc3e96e0d97f73fe6d940b4
|
4
|
+
data.tar.gz: 377d3ddb6826c72179e84eb2f9cf66cc120b1236
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e42d5fb359945d2ccab1f19062c1cc2e5123e4a33af54d0aeeda6db966d4d53444f50a40e8af2fbdffdf42e3416dcddf3421815b5e787567e73032365a59f62
|
7
|
+
data.tar.gz: 089564afd6be1eef4f01060b064273ea2ca5efb2dd60d2b63019d2f324bb560e814e1dde855838e54b28cf04b55be8fc02a821bf48adc7e8e65830005618e900
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -2,3 +2,35 @@ daru
|
|
2
2
|
====
|
3
3
|
|
4
4
|
Data Analysis in RUby
|
5
|
+
|
6
|
+
## Introduction
|
7
|
+
|
8
|
+
daru (Data Analysis in RUby) is a library for storage, analysis and manipulation of data. It aims to be the preferred data analysis library for Ruby.
|
9
|
+
|
10
|
+
Development of daru was started to address the fragmentation of Dataframe-like classes which were created in many ruby gems as per their own needs.
|
11
|
+
|
12
|
+
This creates a hurdle in using these gems together to solve a problem. For example, calculating something in [statsample](https://github.com/clbustos/statsample) and plotting the results in [Nyaplot](https://github.com/domitry/nyaplot).
|
13
|
+
|
14
|
+
daru is heavily inspired by `Statsample::Dataset`, `Nyaplot::DataFrame` and the super-awesome pandas, a very mature solution in Python.
|
15
|
+
|
16
|
+
## Data Structures
|
17
|
+
|
18
|
+
daru employs several data structures for storing and manipulating data:
|
19
|
+
* Vector - A basic 1-D vector.
|
20
|
+
* DataFrame - A 2-D matrix-like structure which is internally composed of named `Vector` classes.
|
21
|
+
|
22
|
+
daru data structures can be constructed by using several Ruby classes. These include `Array`, `Hash`, `Matrix`, [NMatrix](https://github.com/SciRuby/nmatrix) and [MDArray](https://github.com/rbotafogo/mdarray). daru brings a uniform API for handling and manipulating data represented in any of the above Ruby classes.
|
23
|
+
|
24
|
+
## Testing
|
25
|
+
|
26
|
+
Install jruby using `rvm install jruby`, then run `jruby -S gem install mdarray`, followed by `bundle install`. You will need to install `mdarray` manually because of strange gemspec file behaviour. If anyone can automate this then I'd greatly appreciate it! Then run `rspec` in JRuby to test for MDArray functionality.
|
27
|
+
|
28
|
+
Then switch to MRI, do a normal `bundle install` followed by `rspec` for testing everything else with NMatrix functionality.
|
29
|
+
|
30
|
+
## Roadmap
|
31
|
+
|
32
|
+
* Automate testing for both MRI and JRuby.
|
33
|
+
* Enable creation of DataFrame by only specifying an NMatrix/MDArray in initialize. Vector naming happens automatically (alphabetic) or is specified in an Array.
|
34
|
+
* Add support for missing values in vectors.
|
35
|
+
* Add normal and destructive map iterators.
|
36
|
+
* Completely test all functionality for NMatrix and MDArray.
|
data/daru.gemspec
CHANGED
@@ -5,8 +5,7 @@ require 'version.rb'
|
|
5
5
|
|
6
6
|
DESCRIPTION = <<MSG
|
7
7
|
Daru (Data Analysis in RUby) is a library for storage, analysis and manipulation
|
8
|
-
of data.
|
9
|
-
interoperability and easy of use between various ruby packages.
|
8
|
+
of data.
|
10
9
|
MSG
|
11
10
|
|
12
11
|
Gem::Specification.new do |spec|
|
@@ -25,6 +24,8 @@ Gem::Specification.new do |spec|
|
|
25
24
|
spec.require_paths = ["lib"]
|
26
25
|
|
27
26
|
spec.add_development_dependency 'bundler'
|
28
|
-
spec.add_development_dependency 'rspec'
|
29
|
-
|
27
|
+
spec.add_development_dependency 'rspec'
|
28
|
+
if RUBY_ENGINE != 'jruby'
|
29
|
+
spec.add_development_dependency 'nmatrix', '~> 0.1.0.rc5'
|
30
|
+
end
|
30
31
|
end
|
data/lib/daru.rb
CHANGED
data/lib/daru/dataframe.rb
CHANGED
@@ -1,7 +1,180 @@
|
|
1
1
|
module Daru
|
2
2
|
class DataFrame
|
3
|
-
|
4
|
-
|
3
|
+
|
4
|
+
attr_reader :vectors
|
5
|
+
|
6
|
+
attr_reader :fields
|
7
|
+
|
8
|
+
attr_reader :size
|
9
|
+
|
10
|
+
attr_reader :name
|
11
|
+
|
12
|
+
def initialize source, fields=[], name=SecureRandom.uuid
|
13
|
+
if source.empty?
|
14
|
+
@vectors = fields.inject({}){ |a,x| a[x]=Daru::Vector.new; a}
|
15
|
+
else
|
16
|
+
@vectors = source
|
17
|
+
end
|
18
|
+
|
19
|
+
@fields = fields.empty? ? source.keys.sort : fields
|
20
|
+
@name = name
|
21
|
+
|
22
|
+
check_length
|
23
|
+
set_fields_order if @vectors.keys.sort != @fields.sort
|
24
|
+
set_vector_names
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.from_csv file, opts={}
|
28
|
+
opts[:col_sep] ||= ','
|
29
|
+
opts[:headers] ||= true
|
30
|
+
opts[:converters] ||= :numeric
|
31
|
+
opts[:header_converters] ||= :symbol
|
32
|
+
|
33
|
+
csv = CSV.open file, 'r', opts
|
34
|
+
|
35
|
+
yield csv if block_given?
|
36
|
+
|
37
|
+
first = true
|
38
|
+
df = nil
|
39
|
+
|
40
|
+
csv.each do |row|
|
41
|
+
if first
|
42
|
+
df = Daru::DataFrame.new({}, csv.headers)
|
43
|
+
first = false
|
44
|
+
end
|
45
|
+
|
46
|
+
df.insert_row row
|
47
|
+
end
|
48
|
+
|
49
|
+
df
|
50
|
+
end
|
51
|
+
|
52
|
+
def column name
|
53
|
+
@vectors[name]
|
54
|
+
end
|
55
|
+
|
56
|
+
def delete name
|
57
|
+
@vectors.delete name
|
58
|
+
@fields.delete name
|
59
|
+
end
|
60
|
+
|
61
|
+
def [](name)
|
62
|
+
column name
|
63
|
+
end
|
64
|
+
|
65
|
+
def []=(name, vector)
|
66
|
+
insert_vector name, vector
|
67
|
+
end
|
68
|
+
|
69
|
+
def row index
|
70
|
+
raise Exception, "Expected index to be within bounds" if index > @size
|
71
|
+
|
72
|
+
row = []
|
73
|
+
self.each_column do |column|
|
74
|
+
row << column[index]
|
75
|
+
end
|
76
|
+
|
77
|
+
row
|
78
|
+
end
|
79
|
+
|
80
|
+
def has_vector? vector
|
81
|
+
!!@vectors[vector]
|
82
|
+
end
|
83
|
+
|
84
|
+
def each_row
|
85
|
+
0.upto(@size) do |index|
|
86
|
+
yield row(index)
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
90
|
+
def each_row_with_index
|
91
|
+
0.upto(@size) do |index|
|
92
|
+
yield row(index), index
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def each_column
|
97
|
+
@vectors.values.each do |column|
|
98
|
+
yield column
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def insert_vector name, vector
|
103
|
+
raise Exeception, "Expected vector size to be same as DataFrame\
|
104
|
+
size." if vector.size != self.size
|
105
|
+
|
106
|
+
@vectors.merge({name => vector})
|
107
|
+
@fields << name
|
108
|
+
end
|
109
|
+
|
110
|
+
def insert_row row
|
111
|
+
raise Exception, "Expected new row to same as the number of rows \
|
112
|
+
in the DataFrame" if row.size != @fields.size
|
113
|
+
|
114
|
+
@fields.each_with_index do |field, index|
|
115
|
+
@vectors[field] << row[index]
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
119
|
+
def to_html(threshold=15)
|
120
|
+
html = '<table>'
|
121
|
+
|
122
|
+
self.each_row_with_index do |row, index|
|
123
|
+
break if index > threshold and index <= @size
|
124
|
+
html += '<tr>'
|
125
|
+
row.each{ |val| html.concat('<td>' + val.to_s + '</td>') }
|
126
|
+
html += '</tr>'
|
127
|
+
if i == threshold
|
128
|
+
html += '<tr>'
|
129
|
+
row.size.times { html.concat('<td>...</td>') }
|
130
|
+
html += '</tr>'
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
html += '</table>'
|
135
|
+
end
|
136
|
+
|
137
|
+
def to_s
|
138
|
+
to_html
|
139
|
+
end
|
140
|
+
|
141
|
+
def method_missing(name, *args)
|
142
|
+
if md = name.match(/(.+)\=/)
|
143
|
+
insert_vector name[/(.+)\=/].delete("="), args[0]
|
144
|
+
elsif self.has_vector? name
|
145
|
+
column name
|
146
|
+
else
|
147
|
+
super(name, *args)
|
148
|
+
end
|
149
|
+
end
|
150
|
+
|
151
|
+
private
|
152
|
+
def check_length
|
153
|
+
size = nil
|
154
|
+
|
155
|
+
@vectors.each_value do |vector|
|
156
|
+
if size.nil?
|
157
|
+
size = vector.size
|
158
|
+
elsif size != vector.size
|
159
|
+
raise Exception, "Expected all vectors to be of the same size. Vector \
|
160
|
+
#{vector.name} is of size #{vector.size} and another one of size #{size}"
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
@size = size
|
165
|
+
end
|
166
|
+
|
167
|
+
def set_fields_order
|
168
|
+
@fields = @vectors.keys & @fields
|
169
|
+
@fields += @vecorts.keys.sort - @fields
|
170
|
+
end
|
171
|
+
|
172
|
+
# Writes names specified in the hash to the actual name of the vector.
|
173
|
+
# Will over-ride any previous name assigned to the vector.
|
174
|
+
def set_vector_names
|
175
|
+
@fields.each do |name|
|
176
|
+
@vectors[name].name = name
|
177
|
+
end
|
5
178
|
end
|
6
179
|
end
|
7
180
|
end
|
data/lib/daru/vector.rb
CHANGED
@@ -1,3 +1,43 @@
|
|
1
|
+
class Array
|
2
|
+
def daru_vector
|
3
|
+
Daru::Vector.new self
|
4
|
+
end
|
5
|
+
|
6
|
+
alias_method :dv, :daru_vector
|
7
|
+
end
|
8
|
+
|
9
|
+
class Range
|
10
|
+
def daru_vector
|
11
|
+
Daru::Vector.new self
|
12
|
+
end
|
13
|
+
|
14
|
+
alias_method :dv, :daru_vector
|
15
|
+
end
|
16
|
+
|
17
|
+
class Hash
|
18
|
+
def daru_vector
|
19
|
+
Daru::Vector.new self.values[0], self.keys[0]
|
20
|
+
end
|
21
|
+
|
22
|
+
alias_method :dv, :daru_vector
|
23
|
+
end
|
24
|
+
|
25
|
+
class NMatrix
|
26
|
+
def daru_vector
|
27
|
+
Daru::Vector.new self
|
28
|
+
end
|
29
|
+
|
30
|
+
alias_method :dv, :daru_vector
|
31
|
+
end
|
32
|
+
|
33
|
+
class MDArray
|
34
|
+
def daru_vector
|
35
|
+
Daru::Vector.new self
|
36
|
+
end
|
37
|
+
|
38
|
+
alias_method :dv, :daru_vector
|
39
|
+
end
|
40
|
+
|
1
41
|
module Daru
|
2
42
|
class Vector
|
3
43
|
include Enumerable
|
@@ -6,27 +46,78 @@ module Daru
|
|
6
46
|
@vector.each(&block)
|
7
47
|
end
|
8
48
|
|
9
|
-
|
10
|
-
|
11
|
-
attr_reader :size
|
49
|
+
attr_accessor :name
|
12
50
|
|
13
|
-
|
14
|
-
@name = source.is_a?(Hash) ? source.keys[0] : name
|
51
|
+
attr_reader :size
|
15
52
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
source.
|
53
|
+
attr_reader :vector
|
54
|
+
|
55
|
+
def initialize source=[], name=nil
|
56
|
+
if source.is_a?(Hash)
|
57
|
+
initialize source.values[0], source.keys[0]
|
21
58
|
else
|
22
|
-
|
23
|
-
|
59
|
+
@name = name || SecureRandom.uuid
|
60
|
+
|
61
|
+
@vector =
|
62
|
+
case source
|
63
|
+
when Range, Matrix
|
64
|
+
source.to_a.flatten
|
65
|
+
else
|
66
|
+
source
|
67
|
+
end
|
24
68
|
|
25
|
-
|
69
|
+
@size = @vector.size
|
70
|
+
end
|
26
71
|
end
|
27
72
|
|
28
73
|
def [](index)
|
29
74
|
@vector[index]
|
30
75
|
end
|
76
|
+
|
77
|
+
def []=(index, value)
|
78
|
+
@vector[index] = value
|
79
|
+
end
|
80
|
+
|
81
|
+
def ==(other)
|
82
|
+
other.vector == @vector and other.name == @name
|
83
|
+
end
|
84
|
+
|
85
|
+
def <<(element)
|
86
|
+
@vector << element
|
87
|
+
end
|
88
|
+
|
89
|
+
def to_json
|
90
|
+
self.to_a.to_json
|
91
|
+
end
|
92
|
+
|
93
|
+
def to_a
|
94
|
+
@vector.to_a
|
95
|
+
end
|
96
|
+
|
97
|
+
def to_nmatrix
|
98
|
+
@vector.to_nm
|
99
|
+
end
|
100
|
+
|
101
|
+
alias_method :to_nm, :to_nmatrix
|
102
|
+
|
103
|
+
def first lim=1
|
104
|
+
lim == 1 ? @vector.first : @vector.first(lim)
|
105
|
+
end
|
106
|
+
|
107
|
+
def to_html threshold=15
|
108
|
+
html = '<table><tr><th>' + @name.to_s + '</th></tr>>'
|
109
|
+
|
110
|
+
@vector.to_a.each_with_index do |el,i|
|
111
|
+
next if threshold < i and i < @arr.length-1
|
112
|
+
content = i == threshold ? '...' : el.to_s
|
113
|
+
html.concat('<tr><td>' + content + '</td></tr>')
|
114
|
+
end
|
115
|
+
|
116
|
+
html += '</table>'
|
117
|
+
end
|
118
|
+
|
119
|
+
def dup
|
120
|
+
Daru::Vector.new @vector.dup, @name.dup
|
121
|
+
end
|
31
122
|
end
|
32
123
|
end
|
data/lib/version.rb
CHANGED
@@ -0,0 +1,100 @@
|
|
1
|
+
image_resolution true_transform mls
|
2
|
+
6.55779 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,4262.65,0,0,0,1 0
|
3
|
+
2.14746 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,1278.86,0,0,0,1 0
|
4
|
+
8.31104 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,5448.81,0,0,0,1 0
|
5
|
+
3.47872 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,2179.52,0,0,0,1 0
|
6
|
+
4.16725 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,2645.34,0,0,0,1 0
|
7
|
+
5.79983 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,3749.86,0,0,0,1 0
|
8
|
+
1.9058 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,1115.36,0,0,0,1 0
|
9
|
+
1.9058 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,1115.36,0,0,0,1 0
|
10
|
+
4.11806 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,2612.06,0,0,0,1 0
|
11
|
+
6.26622 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,4065.39,0,0,0,1 0
|
12
|
+
2.57805 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,1570.18,0,0,0,1 0
|
13
|
+
4.76151 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,3047.39,0,0,0,1 0
|
14
|
+
7.11002 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,4636.26,0,0,0,1 0
|
15
|
+
5.40811 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,3484.84,0,0,0,1 0
|
16
|
+
8.19567 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,5370.75,0,0,0,1 0
|
17
|
+
3.47872 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,2179.52,0,0,0,1 0
|
18
|
+
2.91762 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,1799.91,0,0,0,1 0
|
19
|
+
4.76151 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,3047.39,0,0,0,1 0
|
20
|
+
8.19567 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,5370.75,0,0,0,1 0
|
21
|
+
2.91762 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,1799.91,0,0,0,1 0
|
22
|
+
6.26622 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,4065.39,0,0,0,1 0
|
23
|
+
4.16725 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,2645.34,0,0,0,1 0
|
24
|
+
3.78516 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,2386.84,0,0,0,1 0
|
25
|
+
3.78516 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,2386.84,0,0,0,1 0
|
26
|
+
7.47603 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,4883.89,0,0,0,1 0
|
27
|
+
5.79983 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,3749.86,0,0,0,1 0
|
28
|
+
2.57805 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,1570.18,0,0,0,1 0
|
29
|
+
8.31104 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,5448.81,0,0,0,1 0
|
30
|
+
1.77097 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,1024.14,0,0,0,1 0
|
31
|
+
5.9596 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,3857.95,0,0,0,1 0
|
32
|
+
5.40811 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,3484.84,0,0,0,1 0
|
33
|
+
4.16725 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,2645.34,0,0,0,1 0
|
34
|
+
7.11002 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,4636.26,0,0,0,1 0
|
35
|
+
7.47603 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,4883.89,0,0,0,1 0
|
36
|
+
13.6304 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,9047.63,0,0,0,1 0
|
37
|
+
5.9596 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,3857.95,0,0,0,1 0
|
38
|
+
4.76151 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,3047.39,0,0,0,1 0
|
39
|
+
5.40811 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,3484.84,0,0,0,1 0
|
40
|
+
12.4066 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,8219.63,0,0,0,1 0
|
41
|
+
5.79983 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,3749.86,0,0,0,1 0
|
42
|
+
7.11002 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,4636.26,0,0,0,1 0
|
43
|
+
7.11002 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,4636.26,0,0,0,1 0
|
44
|
+
2.58728 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,1576.42,0,0,0,1 0
|
45
|
+
12.4066 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,8219.63,0,0,0,1 0
|
46
|
+
3.78516 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,2386.84,0,0,0,1 0
|
47
|
+
2.58728 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,1576.42,0,0,0,1 0
|
48
|
+
5.03378 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,3231.59,0,0,0,1 0
|
49
|
+
5.40811 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,3484.84,0,0,0,1 0
|
50
|
+
6.26622 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,4065.39,0,0,0,1 0
|
51
|
+
2.58728 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,1576.42,0,0,0,1 0
|
52
|
+
2.91762 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,1799.91,0,0,0,1 0
|
53
|
+
5.9596 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,3857.95,0,0,0,1 0
|
54
|
+
1.77097 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,1024.14,0,0,0,1 0
|
55
|
+
7.47603 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,4883.89,0,0,0,1 0
|
56
|
+
5.03378 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,3231.59,0,0,0,1 0
|
57
|
+
1.81745 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,1055.59,0,0,0,1 0
|
58
|
+
1.77097 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,1024.14,0,0,0,1 0
|
59
|
+
2.14746 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,1278.86,0,0,0,1 0
|
60
|
+
8.19567 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,5370.75,0,0,0,1 0
|
61
|
+
2.91762 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,1799.91,0,0,0,1 0
|
62
|
+
1.81745 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,1055.59,0,0,0,1 0
|
63
|
+
8.31104 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,5448.81,0,0,0,1 0
|
64
|
+
1.81745 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,1055.59,0,0,0,1 0
|
65
|
+
1.77097 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,1024.14,0,0,0,1 0
|
66
|
+
2.57805 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,1570.18,0,0,0,1 0
|
67
|
+
5.03378 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,3231.59,0,0,0,1 0
|
68
|
+
6.55779 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,4262.65,0,0,0,1 0
|
69
|
+
6.55779 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,4262.65,0,0,0,1 0
|
70
|
+
3.47872 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,2179.52,0,0,0,1 0
|
71
|
+
4.11806 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,2612.06,0,0,0,1 0
|
72
|
+
6.55779 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,4262.65,0,0,0,1 0
|
73
|
+
8.31104 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,5448.81,0,0,0,1 0
|
74
|
+
2.14746 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,1278.86,0,0,0,1 0
|
75
|
+
2.32632 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,1399.86,0,0,0,1 0
|
76
|
+
1.9058 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,1115.36,0,0,0,1 0
|
77
|
+
6.26622 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,4065.39,0,0,0,1 0
|
78
|
+
2.32632 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,1399.86,0,0,0,1 0
|
79
|
+
7.47603 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,4883.89,0,0,0,1 0
|
80
|
+
4.11806 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,2612.06,0,0,0,1 0
|
81
|
+
13.6304 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,9047.63,0,0,0,1 0
|
82
|
+
2.14746 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,1278.86,0,0,0,1 0
|
83
|
+
1.9058 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,1115.36,0,0,0,1 0
|
84
|
+
5.03378 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,3231.59,0,0,0,1 0
|
85
|
+
5.9596 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,3857.95,0,0,0,1 0
|
86
|
+
4.76151 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,3047.39,0,0,0,1 0
|
87
|
+
1.81745 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,1055.59,0,0,0,1 0
|
88
|
+
3.47872 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,2179.52,0,0,0,1 0
|
89
|
+
2.32632 -0.2362347,0.6308649,0.7390552,0,0.6523478,-0.4607318,0.6018043,0,0.7201635,0.6242881,-0.3027024,1399.86,0,0,0,1 0
|
90
|
+
12.4066 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,8219.63,0,0,0,1 0
|
91
|
+
12.4066 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,8219.63,0,0,0,1 0
|
92
|
+
2.32632 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,1399.86,0,0,0,1 0
|
93
|
+
8.19567 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,5370.75,0,0,0,1 0
|
94
|
+
4.11806 0.3832846,0.8818775,-0.2745634,0,0.8566163,-0.4505714,-0.2513841,0,-0.3454004,-0.1388438,-0.9281277,2612.06,0,0,0,1 0
|
95
|
+
2.58728 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,1576.42,0,0,0,1 0
|
96
|
+
5.79983 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,3749.86,0,0,0,1 0
|
97
|
+
2.57805 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,1570.18,0,0,0,1 0
|
98
|
+
13.6304 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,9047.63,0,0,0,1 0
|
99
|
+
3.78516 -0.1539447,-0.2832125,-0.9466212,0,-0.1585857,0.9527035,-0.2592422,0,0.9752699,0.1102116,-0.1915772,2386.84,0,0,0,1 0
|
100
|
+
4.16725 -0.895577,-0.4178617,0.152753,0,-0.1004795,-0.1445008,-0.9843898,0,0.4334117,-0.8969454,0.08742505,2645.34,0,0,0,1 0
|
data/spec/jruby/vector_spec.rb
CHANGED
@@ -1,19 +1,20 @@
|
|
1
|
+
require 'spec_helper.rb'
|
1
2
|
# Tests if interpreter is JRuby
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
describe Daru::Vector do
|
5
|
+
context ".initialize" do
|
6
|
+
it "creates a vector object with an MDArray" do
|
7
|
+
vector = Daru::Vector.new(MDArray.double([5], [1,2,3,4,5]), :uhura)
|
7
8
|
|
8
|
-
|
9
|
-
|
10
|
-
|
9
|
+
expect(vector[1]) .to eq(2)
|
10
|
+
expect(vector.name).to eq(:uhura)
|
11
|
+
end
|
11
12
|
|
12
|
-
|
13
|
-
|
13
|
+
it "creates a vector object with a Hash with different values" do
|
14
|
+
vector = Daru::Vector.new({ sulu: MDArray.double([5], [1,2,3,4,5])})
|
14
15
|
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
16
|
+
expect(vector[1]) .to eq(2)
|
17
|
+
expect(vector.name).to eq(:sulu)
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end if RUBY_ENGINE == 'jruby'
|
data/spec/mri/dataframe_spec.rb
CHANGED
@@ -1,5 +1,103 @@
|
|
1
1
|
require 'spec_helper.rb'
|
2
2
|
|
3
3
|
describe Daru::DataFrame do
|
4
|
-
|
5
|
-
|
4
|
+
context "DataFrame from normal array vectors" do
|
5
|
+
|
6
|
+
before :each do
|
7
|
+
@df = Daru::DataFrame.new({a: Daru::Vector.new(1..3),
|
8
|
+
b: (50..52).daru_vector, b_bad: ['Jesse', 'Walter', 'Hank'].daru_vector})
|
9
|
+
|
10
|
+
@vector = Daru::Vector.new 1..3, :a
|
11
|
+
end
|
12
|
+
|
13
|
+
it "checks for the size of DataFrame" do
|
14
|
+
expect(@df.size).to eq(3)
|
15
|
+
end
|
16
|
+
|
17
|
+
it "raises exception for uneven vectors" do
|
18
|
+
expect do
|
19
|
+
df = Daru::DataFrame.new({a: (1..5).dv, b: [1,2,3].daru_vector})
|
20
|
+
end.to raise_error
|
21
|
+
end
|
22
|
+
|
23
|
+
it "returns vector by specifying as method" do
|
24
|
+
expect(@df.a).to eq(@vector)
|
25
|
+
end
|
26
|
+
|
27
|
+
it "returns vector by specifying as index" do
|
28
|
+
expect(@df[:a]).to eq(@vector)
|
29
|
+
end
|
30
|
+
|
31
|
+
it "returns vector by specifying as a column argument" do
|
32
|
+
expect(@df.column(:a)).to eq(@vector)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "returns a row" do
|
36
|
+
r = @df.row 0
|
37
|
+
|
38
|
+
expect(r).to eq([1,50,'Jesse'])
|
39
|
+
end
|
40
|
+
|
41
|
+
it "iterates over columns" do
|
42
|
+
@df.each_column do |col|
|
43
|
+
expect(col.is_a?(Daru::Vector)).to be(true)
|
44
|
+
expect([:a, :b, :b_bad].include? col.name).to be(true)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
it "iterates over rows" do
|
49
|
+
@df.each_row do |row|
|
50
|
+
expect(row.size).to be(@df.fields.size)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
it "shows column fields" do
|
55
|
+
expect(@df.fields).to eq([:a, :b, :b_bad])
|
56
|
+
end
|
57
|
+
|
58
|
+
it "inserts a new vector" do
|
59
|
+
@df.insert_vector :c, Daru::Vector.new([3,6,9])
|
60
|
+
|
61
|
+
expect(@df.fields.include?(:c)).to be(true)
|
62
|
+
end
|
63
|
+
|
64
|
+
it "inserts a new row" do
|
65
|
+
@df.insert_row [6,6,"Fred"]
|
66
|
+
|
67
|
+
expect(@df.a.vector) .to eq([1,2,3,6])
|
68
|
+
expect(@df.b.vector) .to eq([50,51,52,6])
|
69
|
+
expect(@df.b_bad.vector).to eq(['Jesse', 'Walter', 'Hank', 'Fred'])
|
70
|
+
end
|
71
|
+
|
72
|
+
it "raises an error for inappropriate row insertion" do
|
73
|
+
expect { @df.insert_row [1,1] }.to raise_error
|
74
|
+
end
|
75
|
+
|
76
|
+
it "deletes a vector" do
|
77
|
+
@df.delete :a
|
78
|
+
|
79
|
+
expect(@df.fields.include? :a).to be(false)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
83
|
+
context "DataFrame loads from files" do
|
84
|
+
|
85
|
+
it "loads a DataFrame from CSV" do
|
86
|
+
df = Daru::DataFrame.from_csv('spec/fixtures/matrix_test.csv',
|
87
|
+
{col_sep: ' ', headers: true}) do |csv|
|
88
|
+
csv.convert do |field, info|
|
89
|
+
case info[:header]
|
90
|
+
when :true_transform
|
91
|
+
field.split(',').map { |s| s.to_f }
|
92
|
+
else
|
93
|
+
field
|
94
|
+
end
|
95
|
+
end
|
96
|
+
end
|
97
|
+
|
98
|
+
expect(df.fields).to eq([:image_resolution, :true_transform, :mls])
|
99
|
+
expect(df[:image_resolution].first).to eq(6.55779)
|
100
|
+
expect(df.column(:true_transform).first[15]).to eq(1.0)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end if RUBY_ENGINE == 'ruby'
|
data/spec/mri/vector_spec.rb
CHANGED
@@ -57,23 +57,48 @@ describe Daru::Vector do
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
context "
|
61
|
-
|
62
|
-
|
63
|
-
|
60
|
+
context "tests for methods" do # TODO: Name this better
|
61
|
+
before do
|
62
|
+
@anakin = Daru::Vector.new NMatrix.new([5], [1,2,3,4,5]), :anakin
|
63
|
+
@luke = Daru::Vector.new NMatrix.new([3], [3,4,5,6]) , :luke
|
64
|
+
end
|
64
65
|
|
65
|
-
|
66
|
+
it "checks for an each block" do
|
67
|
+
sum = 0
|
66
68
|
|
69
|
+
@anakin.each{ |e| sum += e}
|
67
70
|
expect(sum).to eq(15)
|
68
71
|
end
|
69
|
-
end
|
70
72
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
73
|
+
it "checks for inequality of vectors" do
|
74
|
+
expect(@anakin == @luke).to be(false)
|
75
|
+
end
|
76
|
+
|
77
|
+
it "calculates maximum value" do
|
78
|
+
expect(@anakin.max).to eq(5)
|
79
|
+
end
|
80
|
+
|
81
|
+
it "calculates minimmum value" do
|
82
|
+
expect(@anakin.min).to eq(1)
|
83
|
+
end
|
84
|
+
|
85
|
+
it "delegates to the internal array storage" do
|
86
|
+
expect(@anakin.size).to eq(@anakin.to_a.size)
|
87
|
+
end
|
88
|
+
|
89
|
+
it "assigns on index" do
|
90
|
+
@anakin[0] = 666
|
91
|
+
expect(@anakin[0]).to eq(666)
|
92
|
+
end
|
93
|
+
|
94
|
+
it "returns only the vector object" do
|
95
|
+
expect(@anakin.vector == NMatrix.new([5], [1,2,3,4,5])).to be(true)
|
96
|
+
end
|
97
|
+
|
98
|
+
it "tests for equality" do
|
99
|
+
clone = Daru::Vector.new NMatrix.new([5], [1,2,3,4,5]), :clone
|
75
100
|
|
76
|
-
expect(anakin ==
|
101
|
+
expect(@anakin == clone).to be(false)
|
77
102
|
end
|
78
103
|
end
|
79
|
-
end
|
104
|
+
end if RUBY_ENGINE == 'ruby'
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daru
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sameer Deshmukh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -28,16 +28,16 @@ dependencies:
|
|
28
28
|
name: rspec
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '0'
|
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: '
|
40
|
+
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: nmatrix
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,9 +52,9 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.1.0.rc5
|
55
|
-
description:
|
56
|
-
|
57
|
-
|
55
|
+
description: |
|
56
|
+
Daru (Data Analysis in RUby) is a library for storage, analysis and manipulation
|
57
|
+
of data.
|
58
58
|
email:
|
59
59
|
- sameer.deshmukh93@gmail.com
|
60
60
|
executables: []
|
@@ -71,6 +71,7 @@ files:
|
|
71
71
|
- lib/daru/dataframe.rb
|
72
72
|
- lib/daru/vector.rb
|
73
73
|
- lib/version.rb
|
74
|
+
- spec/fixtures/matrix_test.csv
|
74
75
|
- spec/jruby/dataframe_spec.rb
|
75
76
|
- spec/jruby/vector_spec.rb
|
76
77
|
- spec/mri/dataframe_spec.rb
|
@@ -101,6 +102,7 @@ signing_key:
|
|
101
102
|
specification_version: 4
|
102
103
|
summary: Data Analysis in RUby
|
103
104
|
test_files:
|
105
|
+
- spec/fixtures/matrix_test.csv
|
104
106
|
- spec/jruby/dataframe_spec.rb
|
105
107
|
- spec/jruby/vector_spec.rb
|
106
108
|
- spec/mri/dataframe_spec.rb
|