stair_car 0.1.1 → 0.1.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.
- data/lib/stair_car/pmatrix/compare.rb +11 -2
- data/lib/stair_car/pmatrix/pmatrix.rb +20 -4
- data/lib/stair_car/shared/errors.rb +4 -0
- data/lib/stair_car/shared/inspect.rb +3 -3
- data/lib/stair_car/shared/iteration.rb +2 -2
- data/lib/stair_car/umatrix/compare.rb +11 -2
- data/lib/stair_car/umatrix/umatrix.rb +32 -18
- data/stair_car.gemspec +1 -1
- metadata +1 -2
@@ -24,10 +24,19 @@ module StairCar
|
|
24
24
|
@data.cardinality > 0
|
25
25
|
end
|
26
26
|
|
27
|
-
|
28
27
|
# Compares this matrix to another to see if they are the same (in values)
|
29
28
|
def ==(matrix2)
|
30
|
-
|
29
|
+
if matrix2.is_a?(Fixnum) || matrix2.is_a?(Float)
|
30
|
+
# See if its a 1x1
|
31
|
+
if rows != 1 || cols != 1
|
32
|
+
return false
|
33
|
+
else
|
34
|
+
# Check if the value matches
|
35
|
+
return self.to_i == matrix2
|
36
|
+
end
|
37
|
+
else
|
38
|
+
return self.data.equals(matrix2.data)
|
39
|
+
end
|
31
40
|
end
|
32
41
|
|
33
42
|
end
|
@@ -71,17 +71,33 @@ module StairCar
|
|
71
71
|
end
|
72
72
|
end
|
73
73
|
|
74
|
+
# Takes a 1x1 matrix and converts it to an integer, raises an exception
|
75
|
+
# if the matrix is not 1x1
|
76
|
+
def to_i
|
77
|
+
if rows != 1 || cols != 1
|
78
|
+
raise IncorrectMatrixDimensions, "to_i should only be called on 1x1 matricies"
|
79
|
+
end
|
80
|
+
return value_at(0, 0)
|
81
|
+
end
|
82
|
+
|
83
|
+
# Gets the value at the row and column
|
84
|
+
def value_at(row, col)
|
85
|
+
row = convert_indicies(row, self.rows)
|
86
|
+
col = convert_indicies(col, self.cols)
|
87
|
+
return @data.get(row.first, col.first)
|
88
|
+
end
|
89
|
+
|
74
90
|
def [](rows, cols)
|
75
91
|
rows = convert_indicies(rows, self.rows)
|
76
92
|
cols = convert_indicies(cols, self.cols)
|
77
93
|
|
78
94
|
# Returns either the value in a cell or a subview
|
79
|
-
if rows && cols && rows.size == 1 && cols.size == 1 && rows.first.is_a?(Fixnum) && cols.first.is_a?(Fixnum)
|
80
|
-
|
81
|
-
else
|
95
|
+
# if rows && cols && rows.size == 1 && cols.size == 1 && rows.first.is_a?(Fixnum) && cols.first.is_a?(Fixnum)
|
96
|
+
# @data.get(rows.first, cols.first)
|
97
|
+
# else
|
82
98
|
# Get subview, also convert rows/cols to java arrays
|
83
99
|
self.class.new(@data.view_selection(rows && rows.to_java(:int), cols && cols.to_java(:int)))
|
84
|
-
end
|
100
|
+
# end
|
85
101
|
end
|
86
102
|
|
87
103
|
def []=(rows, cols, value)
|
@@ -76,7 +76,7 @@ module StairCar
|
|
76
76
|
max_cell_width = 0
|
77
77
|
rows.times do |row|
|
78
78
|
cols.times do |column|
|
79
|
-
cell_value = self
|
79
|
+
cell_value = self.value_at(row, column)
|
80
80
|
width = formatter.call(cell_value).size + 1
|
81
81
|
|
82
82
|
# Track the biggest cell width we've seen so far
|
@@ -97,11 +97,11 @@ module StairCar
|
|
97
97
|
def row_line_text(row_number, formatter, max_columns, screen_width, cell_width, hidden_columns)
|
98
98
|
line = ''
|
99
99
|
[self.cols-1, max_columns].min.times do |column|
|
100
|
-
cell_value = self
|
100
|
+
cell_value = self.value_at(row_number, column)
|
101
101
|
line << formatter.call(cell_value).ljust(cell_width)
|
102
102
|
end
|
103
103
|
|
104
|
-
last_cell = formatter.call(self
|
104
|
+
last_cell = formatter.call(self.value_at(row_number, -1)).ljust(cell_width-1)
|
105
105
|
padding_size = screen_width - line.size - last_cell.size - 1
|
106
106
|
line << ('.' * padding_size) + ' ' if hidden_columns
|
107
107
|
|
@@ -3,7 +3,7 @@ module StairCar
|
|
3
3
|
def each(&block)
|
4
4
|
rows.times do |row|
|
5
5
|
cols.times do |col|
|
6
|
-
yield(self
|
6
|
+
yield(self.value_at(row,col))
|
7
7
|
end
|
8
8
|
end
|
9
9
|
end
|
@@ -11,7 +11,7 @@ module StairCar
|
|
11
11
|
def each_with_index(&block)
|
12
12
|
rows.times do |row|
|
13
13
|
cols.times do |col|
|
14
|
-
yield(self
|
14
|
+
yield(self.value_at(row,col), row, col)
|
15
15
|
end
|
16
16
|
end
|
17
17
|
end
|
@@ -24,10 +24,19 @@ module StairCar
|
|
24
24
|
# @data.cardinality > 0
|
25
25
|
# end
|
26
26
|
|
27
|
-
|
28
27
|
# Compares this matrix to another to see if they are the same (in values)
|
29
28
|
def ==(matrix2)
|
30
|
-
|
29
|
+
if matrix2.is_a?(Fixnum) || matrix2.is_a?(Float)
|
30
|
+
# See if its a 1x1
|
31
|
+
if rows != 1 || cols != 1
|
32
|
+
return false
|
33
|
+
else
|
34
|
+
# Check if the value matches
|
35
|
+
return self.to_i == matrix2
|
36
|
+
end
|
37
|
+
else
|
38
|
+
self.data.equalsContent(matrix2.data)
|
39
|
+
end
|
31
40
|
end
|
32
41
|
|
33
42
|
end
|
@@ -87,29 +87,43 @@ module StairCar
|
|
87
87
|
return shape[1]
|
88
88
|
end
|
89
89
|
|
90
|
+
# Takes a 1x1 matrix and converts it to an integer, raises an exception
|
91
|
+
# if the matrix is not 1x1
|
92
|
+
def to_i
|
93
|
+
if rows != 1 || cols != 1
|
94
|
+
raise IncorrectMatrixDimensions, "to_i should only be called on 1x1 matricies"
|
95
|
+
end
|
96
|
+
return value_at(0, 0)
|
97
|
+
end
|
98
|
+
|
99
|
+
# Gets the value at the row and column
|
100
|
+
def value_at(row, col)
|
101
|
+
row = convert_indicies(row, self.rows)
|
102
|
+
col = convert_indicies(col, self.cols)
|
103
|
+
|
104
|
+
# Returns either the value in a cell or a subview
|
105
|
+
# From jruby we have to call this way for doubles
|
106
|
+
if @data.is_a?(Java::org.ujmp.core.objectmatrix.impl.ObjectCalculationMatrix)
|
107
|
+
@data.getObject(row.first.to_java(:int), col.first.to_java(:int)) || 0.0
|
108
|
+
else
|
109
|
+
# From jruby we have to call this way for doubles
|
110
|
+
@data.java_send(:getObject, [Java::long, Java::long], row.first, col.first) || 0.0
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
90
114
|
def [](rows, cols)
|
91
115
|
rows = convert_indicies(rows, self.rows)
|
92
116
|
cols = convert_indicies(cols, self.cols)
|
93
117
|
|
94
|
-
#
|
95
|
-
if rows && cols
|
96
|
-
|
97
|
-
@data.getObject(rows.first.to_java(:int), cols.first.to_java(:int)) || 0.0
|
98
|
-
else
|
99
|
-
# From jruby we have to call this way for doubles
|
100
|
-
@data.java_send(:getObject, [Java::long, Java::long], rows.first, cols.first) || 0.0
|
101
|
-
end
|
118
|
+
# Get subview, also convert rows/cols to java arrays
|
119
|
+
if !rows && !cols
|
120
|
+
return self.class.new(@data)
|
102
121
|
else
|
103
|
-
|
104
|
-
|
105
|
-
return self.class.new(@data)
|
122
|
+
if rows
|
123
|
+
return self.class.new(@data.select(Java::OrgUjmpCoreCalculation::Calculation.LINK, rows, cols))
|
106
124
|
else
|
107
|
-
|
108
|
-
|
109
|
-
else
|
110
|
-
# If row is nil, we need to lookup by columns directly
|
111
|
-
return self.class.new(@data.select_columns(Java::OrgUjmpCoreCalculation::Calculation.LINK, cols))
|
112
|
-
end
|
125
|
+
# If row is nil, we need to lookup by columns directly
|
126
|
+
return self.class.new(@data.select_columns(Java::OrgUjmpCoreCalculation::Calculation.LINK, cols))
|
113
127
|
end
|
114
128
|
end
|
115
129
|
end
|
@@ -156,7 +170,7 @@ module StairCar
|
|
156
170
|
# Loop through each non-zero value, pass in the value, row, column
|
157
171
|
def each_non_zero(&block)
|
158
172
|
@data.available_coordinates.each do |row, col|
|
159
|
-
val = self
|
173
|
+
val = self.value_at(row,col)
|
160
174
|
yield(val, row, col)
|
161
175
|
end
|
162
176
|
end
|
data/stair_car.gemspec
CHANGED
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = "stair_car"
|
7
|
-
gem.version = "0.1.
|
7
|
+
gem.version = "0.1.2"
|
8
8
|
gem.authors = ["Ryan Stout"]
|
9
9
|
gem.email = ["ryanstout@gmail.com"]
|
10
10
|
gem.description = "StairCar is a fully featured matrix library for jruby (think matlab or numpy)"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stair_car
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -136,4 +136,3 @@ test_files:
|
|
136
136
|
- spec/umatrix/matrix_math_spec.rb
|
137
137
|
- spec/umatrix/transform_spec.rb
|
138
138
|
- spec/umatrix/umatrix_spec.rb
|
139
|
-
has_rdoc:
|