You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by sb...@apache.org on 2017/08/21 08:40:54 UTC

[45/50] [abbrv] ignite git commit: IGNITE-5925: Implemented get row/col for matrices.

IGNITE-5925: Implemented get row/col for matrices.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/45708b97
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/45708b97
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/45708b97

Branch: refs/heads/ignite-5578
Commit: 45708b9725b2d94d54380abf635508358a288a66
Parents: f00449f
Author: Yury Babak <yb...@gridgain.com>
Authored: Fri Aug 18 16:12:05 2017 +0300
Committer: Igor Sapego <is...@gridgain.com>
Committed: Fri Aug 18 16:12:05 2017 +0300

----------------------------------------------------------------------
 .../java/org/apache/ignite/ml/math/Blas.java    |  4 ++--
 .../java/org/apache/ignite/ml/math/Matrix.java  | 16 +++++++++++++
 .../ml/math/impls/matrix/AbstractMatrix.java    | 25 ++++++++++++++++++++
 .../impls/matrix/MatrixImplementationsTest.java | 17 +++++++++++++
 4 files changed, 60 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/45708b97/modules/ml/src/main/java/org/apache/ignite/ml/math/Blas.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/Blas.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/Blas.java
index a61d796..4b83ede 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/Blas.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/Blas.java
@@ -298,7 +298,7 @@ public class Blas {
             throw new CardinalityException(a.columnSize(), y.size());
 
         checkMatrixType(a, "gemv");
-        checkVectorType(x,"gemv");
+        checkVectorType(x, "gemv");
         checkVectorType(y, "gemv");
 
         if (alpha == 0.0 && beta == 1.0)
@@ -322,7 +322,7 @@ public class Blas {
     /**
      * M := alpha * M.
      * @param m Matrix M.
-     * @param alpha Aplha.
+     * @param alpha Alpha.
      */
     private static void scal(Matrix m, double alpha) {
         if (alpha != 1.0)

http://git-wip-us.apache.org/repos/asf/ignite/blob/45708b97/modules/ml/src/main/java/org/apache/ignite/ml/math/Matrix.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/Matrix.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/Matrix.java
index 66de1a1..8c171a6 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/Matrix.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/Matrix.java
@@ -414,6 +414,14 @@ public interface Matrix extends MetaAttributes, Externalizable, StorageOpsMetric
     public Matrix setRow(int row, double[] data);
 
     /**
+     * Get a specific row from matrix.
+     *
+     * @param row Row index.
+     * @return row.
+     */
+    public Vector getRow(int row);
+
+    /**
      * Sets values for given column.
      *
      * @param col Column index.
@@ -425,6 +433,14 @@ public interface Matrix extends MetaAttributes, Externalizable, StorageOpsMetric
     public Matrix setColumn(int col, double[] data);
 
     /**
+     * Get a specific row from matrix.
+     *
+     * @param col Col index.
+     * @return Col.
+     */
+    public Vector getCol(int col);
+
+    /**
      * Sets given value without checking for index bounds. This method is marginally faster
      * than its {@link #set(int, int, double)} sibling.
      *

http://git-wip-us.apache.org/repos/asf/ignite/blob/45708b97/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/AbstractMatrix.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/AbstractMatrix.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/AbstractMatrix.java
index 2195a70..06fb34c 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/AbstractMatrix.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/AbstractMatrix.java
@@ -41,6 +41,7 @@ import org.apache.ignite.ml.math.functions.IgniteDoubleFunction;
 import org.apache.ignite.ml.math.functions.IgniteFunction;
 import org.apache.ignite.ml.math.functions.IgniteTriFunction;
 import org.apache.ignite.ml.math.functions.IntIntToDoubleFunction;
+import org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector;
 import org.apache.ignite.ml.math.impls.vector.MatrixVectorView;
 
 /**
@@ -709,6 +710,18 @@ public abstract class AbstractMatrix implements Matrix {
     }
 
     /** {@inheritDoc} */
+    @Override public Vector getRow(int row) {
+        checkRowIndex(row);
+
+        Vector res = new DenseLocalOnHeapVector(columnSize());
+
+        for (int i = 0; i < columnSize(); i++)
+            res.setX(i, getX(row,i));
+
+        return res;
+    }
+
+    /** {@inheritDoc} */
     @Override public Matrix setColumn(int col, double[] data) {
         checkColumnIndex(col);
 
@@ -724,6 +737,18 @@ public abstract class AbstractMatrix implements Matrix {
     }
 
     /** {@inheritDoc} */
+    @Override public Vector getCol(int col) {
+        checkColumnIndex(col);
+
+        Vector res = new DenseLocalOnHeapVector(rowSize());
+
+        for (int i = 0; i < rowSize(); i++)
+            res.setX(i, getX(i,col));
+
+        return res;
+    }
+
+    /** {@inheritDoc} */
     @Override public Matrix setX(int row, int col, double val) {
         storageSet(row, col, val);
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/45708b97/modules/ml/src/test/java/org/apache/ignite/ml/math/impls/matrix/MatrixImplementationsTest.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/test/java/org/apache/ignite/ml/math/impls/matrix/MatrixImplementationsTest.java b/modules/ml/src/test/java/org/apache/ignite/ml/math/impls/matrix/MatrixImplementationsTest.java
index 89b6224..8270da1 100644
--- a/modules/ml/src/test/java/org/apache/ignite/ml/math/impls/matrix/MatrixImplementationsTest.java
+++ b/modules/ml/src/test/java/org/apache/ignite/ml/math/impls/matrix/MatrixImplementationsTest.java
@@ -927,6 +927,23 @@ public class MatrixImplementationsTest extends ExternalizeTest<Matrix> {
     }
 
     /** */
+    @Test
+    public void testGetRowCol(){
+        consumeSampleMatrix((m,desc)-> {
+            if (! (m instanceof RandomMatrix))
+                for (int i = 0; i < m.rowSize(); i++)
+                    for (int j = 0; j < m.columnSize(); j++)
+                        m.setX(i, j, i + j);
+
+            for (int i = 0; i < m.rowSize(); i++)
+                assertNotNull("Unexpected value for " + desc + " at row " + i, m.getRow(i));
+
+            for (int i = 0; i < m.columnSize(); i++)
+                assertNotNull("Unexpected value for " + desc + " at col " + i, m.getCol(i));
+        });
+    }
+
+    /** */
     private double[] fillArray(int len) {
         double[] newValues = new double[len];