You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by nt...@apache.org on 2017/11/23 14:25:57 UTC

[3/3] ignite git commit: IGNITE-6949: Cleanup OLS code. This closes #3063.

IGNITE-6949: Cleanup OLS code. This closes #3063.

Signed-off-by: nikolay_tikhonov <nt...@gridgain.com>


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

Branch: refs/heads/master
Commit: 34955be37cc2d9f889d182890f2a85d147877ead
Parents: 5a4c6e0
Author: zaleslaw <za...@gmail.com>
Authored: Thu Nov 23 17:25:07 2017 +0300
Committer: nikolay_tikhonov <nt...@gridgain.com>
Committed: Thu Nov 23 17:25:51 2017 +0300

----------------------------------------------------------------------
 .../java/org/apache/ignite/ml/FileExporter.java |  13 +-
 .../main/java/org/apache/ignite/ml/Trainer.java |   7 +
 .../clustering/KMeansDistributedClusterer.java  |   9 +-
 .../ignite/ml/clustering/KMeansModel.java       |   1 -
 .../java/org/apache/ignite/ml/math/Blas.java    |  28 +-
 .../java/org/apache/ignite/ml/math/Matrix.java  |   1 +
 .../apache/ignite/ml/math/MatrixStorage.java    |   2 -
 .../java/org/apache/ignite/ml/math/Vector.java  |   1 +
 .../ignite/ml/math/distributed/CacheUtils.java  | 266 ++++---
 .../math/distributed/keys/RowColMatrixKey.java  |   2 +-
 .../distributed/keys/impl/MatrixBlockKey.java   |  32 +-
 .../distributed/keys/impl/SparseMatrixKey.java  |  15 +-
 .../distributed/keys/impl/VectorBlockKey.java   |  31 +-
 .../ignite/ml/math/functions/Functions.java     |   6 +-
 .../math/functions/IgniteToDoubleFunction.java  |   1 +
 .../ml/math/functions/IgniteTriFunction.java    |   5 +-
 .../ml/math/impls/matrix/AbstractMatrix.java    |  28 +-
 .../matrix/SparseBlockDistributedMatrix.java    |  21 +-
 .../impls/matrix/SparseDistributedMatrix.java   |  31 +-
 .../storage/matrix/BlockMatrixStorage.java      |  58 +-
 .../storage/matrix/BlockVectorStorage.java      |  62 +-
 .../impls/storage/matrix/MapWrapperStorage.java |   7 +-
 .../matrix/SparseDistributedMatrixStorage.java  |  22 +-
 .../matrix/SparseLocalOnHeapMatrixStorage.java  |   3 +-
 .../vector/SparseDistributedVectorStorage.java  | 100 +--
 .../vector/SparseLocalOnHeapVectorStorage.java  |   2 +-
 .../ml/math/impls/vector/MapWrapperVector.java  |   1 -
 .../vector/SparseBlockDistributedVector.java    |  18 +-
 .../impls/vector/SparseDistributedVector.java   |  46 +-
 .../ml/math/impls/vector/VectorBlockEntry.java  |   2 -
 .../apache/ignite/ml/math/util/MatrixUtil.java  |   6 +-
 .../columnbased/caches/ProjectionsCache.java    |   8 +-
 .../org/apache/ignite/ml/util/MnistUtils.java   |  20 +-
 .../java/org/apache/ignite/ml/util/Utils.java   |   9 +-
 .../org/apache/ignite/ml/LocalModelsTest.java   |   4 +-
 ...KMeansDistributedClustererTestMultiNode.java |  13 +-
 .../org/apache/ignite/ml/math/BlasTest.java     |  11 +-
 .../ml/math/MathImplDistributedTestSuite.java   |  16 +-
 .../impls/matrix/MatrixImplementationsTest.java |   6 +-
 .../SparseDistributedBlockMatrixTest.java       |  85 ++-
 .../matrix/SparseDistributedMatrixTest.java     |  22 +-
 .../SparseDistributedVectorStorageTest.java     |  12 +-
 .../SparseBlockDistributedVectorTest.java       |  31 +-
 .../vector/SparseDistributedVectorTest.java     |  49 +-
 ...tedBlockOLSMultipleLinearRegressionTest.java | 733 +++++++++----------
 ...tributedOLSMultipleLinearRegressionTest.java |  57 +-
 .../OLSMultipleLinearRegressionTest.java        |   1 -
 .../trees/columntrees.manualrun.properties      |   3 +-
 48 files changed, 969 insertions(+), 938 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/FileExporter.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/FileExporter.java b/modules/ml/src/main/java/org/apache/ignite/ml/FileExporter.java
index 79bb71c..2fb73c0 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/FileExporter.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/FileExporter.java
@@ -42,11 +42,12 @@ public class FileExporter<D> implements Exporter<D, String> {
 
     /** {@inheritDoc} */
     @Override public void save(D d, String path) {
-        try (FileOutputStream fos = new FileOutputStream(path)){
-            try (ObjectOutputStream outStream = new ObjectOutputStream(fos)){
+        try (FileOutputStream fos = new FileOutputStream(path)) {
+            try (ObjectOutputStream outStream = new ObjectOutputStream(fos)) {
                 outStream.writeObject(d);
             }
-        } catch (IOException e) {
+        }
+        catch (IOException e) {
             if (log != null)
                 log.error("Error opening file.", e);
         }
@@ -56,13 +57,13 @@ public class FileExporter<D> implements Exporter<D, String> {
     @Override public D load(String path) {
         D mdl = null;
 
-        try (FileInputStream fis = new FileInputStream(path)){
+        try (FileInputStream fis = new FileInputStream(path)) {
             try (ObjectInputStream inputStream = new ObjectInputStream(fis)) {
                 mdl = (D)inputStream.readObject();
             }
             catch (ClassNotFoundException e) {
-            if (log != null)
-                log.error("Object creation failed.", e);
+                if (log != null)
+                    log.error("Object creation failed.", e);
             }
         }
         catch (IOException e) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/Trainer.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/Trainer.java b/modules/ml/src/main/java/org/apache/ignite/ml/Trainer.java
index 795e218..a95a1cc 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/Trainer.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/Trainer.java
@@ -22,9 +22,16 @@ import org.apache.ignite.ml.trees.trainers.columnbased.ColumnDecisionTreeTrainer
 /**
  * Interface for Trainers. Trainer is just a function which produces model from the data.
  * See for example {@link ColumnDecisionTreeTrainer}.
+ *
  * @param <M> Type of produced model.
  * @param <T> Type of data needed for model producing.
  */
 public interface Trainer<M extends Model, T> {
+    /**
+     * Returns model based on data
+     *
+     * @param data data to build model
+     * @return model
+     */
     M train(T data);
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/clustering/KMeansDistributedClusterer.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/clustering/KMeansDistributedClusterer.java b/modules/ml/src/main/java/org/apache/ignite/ml/clustering/KMeansDistributedClusterer.java
index 4286f42..24938bc 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/clustering/KMeansDistributedClusterer.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/clustering/KMeansDistributedClusterer.java
@@ -26,7 +26,6 @@ import java.util.concurrent.ConcurrentHashMap;
 import java.util.stream.Collectors;
 import javax.cache.Cache;
 import org.apache.ignite.lang.IgniteBiTuple;
-import org.apache.ignite.lang.IgniteUuid;
 import org.apache.ignite.ml.math.DistanceMeasure;
 import org.apache.ignite.ml.math.Vector;
 import org.apache.ignite.ml.math.VectorUtils;
@@ -205,7 +204,8 @@ public class KMeansDistributedClusterer extends BaseKMeansClusterer<SparseDistri
     }
 
     /** */
-    private ConcurrentHashMap<Integer, Double> getNewCosts(SparseDistributedMatrix points, List<Vector> newCenters, String cacheName) {
+    private ConcurrentHashMap<Integer, Double> getNewCosts(SparseDistributedMatrix points, List<Vector> newCenters,
+        String cacheName) {
         return distributedFold(cacheName,
             (IgniteBiFunction<Cache.Entry<SparseMatrixKey, ConcurrentHashMap<Integer, Double>>,
                 ConcurrentHashMap<Integer, Double>,
@@ -223,7 +223,8 @@ public class KMeansDistributedClusterer extends BaseKMeansClusterer<SparseDistri
     }
 
     /** */
-    private ConcurrentHashMap<Integer, Integer> weightCenters(UUID uid, List<Vector> distinctCenters, String cacheName) {
+    private ConcurrentHashMap<Integer, Integer> weightCenters(UUID uid, List<Vector> distinctCenters,
+        String cacheName) {
         return distributedFold(cacheName,
             (IgniteBiFunction<Cache.Entry<SparseMatrixKey, Map<Integer, Double>>,
                 ConcurrentHashMap<Integer, Integer>,
@@ -249,7 +250,7 @@ public class KMeansDistributedClusterer extends BaseKMeansClusterer<SparseDistri
             key -> key.dataStructureId().equals(uid),
             (map1, map2) -> MapUtil.mergeMaps(map1, map2, (integer, integer2) -> integer2 + integer,
                 ConcurrentHashMap::new),
-                ConcurrentHashMap::new);
+            ConcurrentHashMap::new);
     }
 
     /** */

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/clustering/KMeansModel.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/clustering/KMeansModel.java b/modules/ml/src/main/java/org/apache/ignite/ml/clustering/KMeansModel.java
index 7f6f877..c449b8b 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/clustering/KMeansModel.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/clustering/KMeansModel.java
@@ -110,5 +110,4 @@ public class KMeansModel implements ClusterizationModel<Vector, Integer>, Export
         return distance.equals(that.distance) && Arrays.deepEquals(centers, that.centers);
     }
 
-
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/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 4b83ede..9929725 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
@@ -43,7 +43,8 @@ public class Blas {
     /** F2J implementation of BLAS. */
     transient static private BLAS f2jBlas = new F2jBLAS();
 
-    /** Native implementation of BLAS. F2J implementation will be used as fallback if no native implementation is found
+    /**
+     * Native implementation of BLAS. F2J implementation will be used as fallback if no native implementation is found.
      */
     transient static private BLAS nativeBlas = BLAS.getInstance();
 
@@ -64,7 +65,7 @@ public class Blas {
             axpy(a, (SparseLocalVector)x, y.getStorage().data());
         else
             throw new MathIllegalArgumentException("Operation 'axpy' doesn't support this combination of parameters [x="
-                + x.getClass().getName() + ", y="+y.getClass().getName()+"].");
+                + x.getClass().getName() + ", y=" + y.getClass().getName() + "].");
     }
 
     /** */
@@ -83,7 +84,8 @@ public class Blas {
                 y[k] += x.getX(k);
                 k++;
             }
-        } else {
+        }
+        else {
             int k = 0;
 
             while (k < xSize) {
@@ -127,11 +129,11 @@ public class Blas {
                         yData[i] = x.getX(i);
                 }
             }
-        } else
+        }
+        else
             throw new IllegalArgumentException("Vector y must be array based in copy.");
     }
 
-
     /**
      * Performs in-place multiplication of vector x by a real scalar a. (x = a * x)
      *
@@ -146,7 +148,8 @@ public class Blas {
 
             for (Integer i : indexes)
                 x.compute(i, (ind, v) -> v * a);
-        } else
+        }
+        else
             throw new IllegalArgumentException();
     }
 
@@ -179,7 +182,8 @@ public class Blas {
     }
 
     /**
-     * A := alpha * x * x^T + A
+     * A := alpha * x * x^T + A.
+     *
      * @param alpha a real scalar that will be multiplied to x * x^T^.
      * @param x the vector x that contains the n elements.
      * @param a the symmetric matrix A. Size of n x n.
@@ -266,20 +270,20 @@ public class Blas {
     /**
      * Currently we support only local onheap matrices for BLAS.
      */
-    private static void checkMatrixType(Matrix a, String op){
+    private static void checkMatrixType(Matrix a, String op) {
         if (a instanceof DenseLocalOffHeapMatrix || a instanceof SparseDistributedMatrix
             || a instanceof SparseBlockDistributedMatrix)
             throw new IllegalArgumentException("Operation doesn't support for matrix [class="
-                + a.getClass().getName() + ", operation="+op+"].");
+                + a.getClass().getName() + ", operation=" + op + "].");
     }
 
     /**
      * Currently we support only local onheap vectors for BLAS.
      */
-    private static void checkVectorType(Vector a, String op){
+    private static void checkVectorType(Vector a, String op) {
         if (a instanceof DenseLocalOffHeapVector || a instanceof SparseLocalOffHeapVector || a instanceof CacheVector)
             throw new IllegalArgumentException("Operation doesn't support for vector [class="
-                + a.getClass().getName() + ", operation="+op+"].");
+                + a.getClass().getName() + ", operation=" + op + "].");
     }
 
     /**
@@ -321,6 +325,7 @@ public class Blas {
 
     /**
      * M := alpha * M.
+     *
      * @param m Matrix M.
      * @param alpha Alpha.
      */
@@ -333,6 +338,7 @@ public class Blas {
 
     /**
      * v := alpha * v.
+     *
      * @param v Vector v.
      * @param alpha Aplha.
      */

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/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 8c171a6..9d1ece4 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
@@ -557,6 +557,7 @@ public interface Matrix extends MetaAttributes, Externalizable, StorageOpsMetric
 
     /**
      * Replace matrix entry with value oldVal at (row, col) with result of computing f(row, col, oldVal).
+     *
      * @param row Row.
      * @param col Column.
      * @param f Function used for replacing.

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/MatrixStorage.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/MatrixStorage.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/MatrixStorage.java
index e4f9e40..9738857 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/MatrixStorage.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/MatrixStorage.java
@@ -49,14 +49,12 @@ public interface MatrixStorage extends Externalizable, StorageOpsMetrics, Destro
 
     /**
      * @return Matrix elements storage mode.
-     *
      * @see StorageConstants
      */
     public int storageMode();
 
     /**
      * @return Matrix access mode.
-     *
      * @see StorageConstants
      */
     public int accessMode();

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/Vector.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/Vector.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/Vector.java
index 5fd39af..391c5fe 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/Vector.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/Vector.java
@@ -500,6 +500,7 @@ public interface Vector extends MetaAttributes, Externalizable, StorageOpsMetric
 
     /**
      * Replace vector entry with value oldVal at i with result of computing f(i, oldVal).
+     *
      * @param i Position.
      * @param f Function used for replacing.
      **/

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/CacheUtils.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/CacheUtils.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/CacheUtils.java
index 37384b8..6baa865 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/CacheUtils.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/CacheUtils.java
@@ -17,6 +17,16 @@
 
 package org.apache.ignite.ml.math.distributed;
 
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Set;
+import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.function.BinaryOperator;
+import java.util.stream.Stream;
+import javax.cache.Cache;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.Ignition;
@@ -36,16 +46,16 @@ import org.apache.ignite.ml.math.distributed.keys.RowColMatrixKey;
 import org.apache.ignite.ml.math.distributed.keys.impl.MatrixBlockKey;
 import org.apache.ignite.ml.math.distributed.keys.impl.VectorBlockKey;
 import org.apache.ignite.ml.math.exceptions.UnsupportedOperationException;
-import org.apache.ignite.ml.math.functions.*;
+import org.apache.ignite.ml.math.functions.IgniteBiFunction;
+import org.apache.ignite.ml.math.functions.IgniteBinaryOperator;
+import org.apache.ignite.ml.math.functions.IgniteConsumer;
+import org.apache.ignite.ml.math.functions.IgniteDoubleFunction;
+import org.apache.ignite.ml.math.functions.IgniteFunction;
+import org.apache.ignite.ml.math.functions.IgniteSupplier;
+import org.apache.ignite.ml.math.functions.IgniteTriFunction;
 import org.apache.ignite.ml.math.impls.matrix.MatrixBlockEntry;
 import org.apache.ignite.ml.math.impls.vector.VectorBlockEntry;
 
-import javax.cache.Cache;
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.function.BinaryOperator;
-import java.util.stream.Stream;
-
 /**
  * Distribution-related misc. support.
  *
@@ -97,8 +107,8 @@ public class CacheUtils {
 
     /**
      * @param cacheName Cache name.
-     * @param k         Key into the cache.
-     * @param <K>       Key type.
+     * @param k Key into the cache.
+     * @param <K> Key type.
      * @return Cluster group for given key.
      */
     protected static <K> ClusterGroup getClusterGroupForGivenKey(String cacheName, K k) {
@@ -109,8 +119,8 @@ public class CacheUtils {
      * @param cacheName Cache name.
      * @param keyMapper {@link KeyMapper} to validate cache key.
      * @param valMapper {@link ValueMapper} to obtain double value for given cache key.
-     * @param <K>       Cache key object type.
-     * @param <V>       Cache value object type.
+     * @param <K> Cache key object type.
+     * @param <V> Cache value object type.
      * @return Sum of the values obtained for valid keys.
      */
     public static <K, V> double sum(String cacheName, KeyMapper<K> keyMapper, ValueMapper<V> valMapper) {
@@ -119,7 +129,8 @@ public class CacheUtils {
                 double v = valMapper.toDouble(ce.entry().getValue());
 
                 return acc == null ? v : acc + v;
-            } else
+            }
+            else
                 return acc;
         });
 
@@ -141,14 +152,16 @@ public class CacheUtils {
             double sum;
 
             if (v instanceof Map) {
-                Map<Integer, Double> map = (Map<Integer, Double>) v;
+                Map<Integer, Double> map = (Map<Integer, Double>)v;
 
                 sum = sum(map.values());
-            } else if (v instanceof MatrixBlockEntry) {
-                MatrixBlockEntry be = (MatrixBlockEntry) v;
+            }
+            else if (v instanceof MatrixBlockEntry) {
+                MatrixBlockEntry be = (MatrixBlockEntry)v;
 
                 sum = be.sum();
-            } else
+            }
+            else
                 throw new UnsupportedOperationException();
 
             return acc == null ? sum : acc + sum;
@@ -170,8 +183,8 @@ public class CacheUtils {
      * @param cacheName Cache name.
      * @param keyMapper {@link KeyMapper} to validate cache key.
      * @param valMapper {@link ValueMapper} to obtain double value for given cache key.
-     * @param <K>       Cache key object type.
-     * @param <V>       Cache value object type.
+     * @param <K> Cache key object type.
+     * @param <V> Cache value object type.
      * @return Minimum value for valid keys.
      */
     public static <K, V> double min(String cacheName, KeyMapper<K> keyMapper, ValueMapper<V> valMapper) {
@@ -183,7 +196,8 @@ public class CacheUtils {
                     return v;
                 else
                     return Math.min(acc, v);
-            } else
+            }
+            else
                 return acc;
         });
 
@@ -205,14 +219,16 @@ public class CacheUtils {
             double min;
 
             if (v instanceof Map) {
-                Map<Integer, Double> map = (Map<Integer, Double>) v;
+                Map<Integer, Double> map = (Map<Integer, Double>)v;
 
                 min = Collections.min(map.values());
-            } else if (v instanceof MatrixBlockEntry) {
-                MatrixBlockEntry be = (MatrixBlockEntry) v;
+            }
+            else if (v instanceof MatrixBlockEntry) {
+                MatrixBlockEntry be = (MatrixBlockEntry)v;
 
                 min = be.minValue();
-            } else
+            }
+            else
                 throw new UnsupportedOperationException();
 
             if (acc == null)
@@ -240,14 +256,16 @@ public class CacheUtils {
             double max;
 
             if (v instanceof Map) {
-                Map<Integer, Double> map = (Map<Integer, Double>) v;
+                Map<Integer, Double> map = (Map<Integer, Double>)v;
 
                 max = Collections.max(map.values());
-            } else if (v instanceof MatrixBlockEntry) {
-                MatrixBlockEntry be = (MatrixBlockEntry) v;
+            }
+            else if (v instanceof MatrixBlockEntry) {
+                MatrixBlockEntry be = (MatrixBlockEntry)v;
 
                 max = be.maxValue();
-            } else
+            }
+            else
                 throw new UnsupportedOperationException();
 
             if (acc == null)
@@ -264,8 +282,8 @@ public class CacheUtils {
      * @param cacheName Cache name.
      * @param keyMapper {@link KeyMapper} to validate cache key.
      * @param valMapper {@link ValueMapper} to obtain double value for given cache key.
-     * @param <K>       Cache key object type.
-     * @param <V>       Cache value object type.
+     * @param <K> Cache key object type.
+     * @param <V> Cache value object type.
      * @return Maximum value for valid keys.
      */
     public static <K, V> double max(String cacheName, KeyMapper<K> keyMapper, ValueMapper<V> valMapper) {
@@ -277,7 +295,8 @@ public class CacheUtils {
                     return v;
                 else
                     return Math.max(acc, v);
-            } else
+            }
+            else
                 return acc;
         });
 
@@ -288,12 +307,12 @@ public class CacheUtils {
      * @param cacheName Cache name.
      * @param keyMapper {@link KeyMapper} to validate cache key.
      * @param valMapper {@link ValueMapper} to obtain double value for given cache key.
-     * @param mapper    Mapping {@link IgniteFunction}.
-     * @param <K>       Cache key object type.
-     * @param <V>       Cache value object type.
+     * @param mapper Mapping {@link IgniteFunction}.
+     * @param <K> Cache key object type.
+     * @param <V> Cache value object type.
      */
     public static <K, V> void map(String cacheName, KeyMapper<K> keyMapper, ValueMapper<V> valMapper,
-                                  IgniteFunction<Double, Double> mapper) {
+        IgniteFunction<Double, Double> mapper) {
         foreach(cacheName, (CacheEntry<K, V> ce) -> {
             K k = ce.entry().getKey();
 
@@ -305,7 +324,7 @@ public class CacheUtils {
 
     /**
      * @param matrixUuid Matrix UUID.
-     * @param mapper     Mapping {@link IgniteFunction}.
+     * @param mapper Mapping {@link IgniteFunction}.
      */
     @SuppressWarnings("unchecked")
     public static <K, V> void sparseMap(UUID matrixUuid, IgniteDoubleFunction<Double> mapper, String cacheName) {
@@ -319,16 +338,18 @@ public class CacheUtils {
             V v = ce.entry().getValue();
 
             if (v instanceof Map) {
-                Map<Integer, Double> map = (Map<Integer, Double>) v;
+                Map<Integer, Double> map = (Map<Integer, Double>)v;
 
                 for (Map.Entry<Integer, Double> e : (map.entrySet()))
                     e.setValue(mapper.apply(e.getValue()));
 
-            } else if (v instanceof MatrixBlockEntry) {
-                MatrixBlockEntry be = (MatrixBlockEntry) v;
+            }
+            else if (v instanceof MatrixBlockEntry) {
+                MatrixBlockEntry be = (MatrixBlockEntry)v;
 
                 be.map(mapper);
-            } else
+            }
+            else
                 throw new UnsupportedOperationException();
 
             ce.cache().put(k, v);
@@ -343,15 +364,15 @@ public class CacheUtils {
     private static <K> IgnitePredicate<K> sparseKeyFilter(UUID matrixUuid) {
         return key -> {
             if (key instanceof DataStructureCacheKey)
-                return ((DataStructureCacheKey) key).dataStructureId().equals(matrixUuid);
+                return ((DataStructureCacheKey)key).dataStructureId().equals(matrixUuid);
             else if (key instanceof IgniteBiTuple)
-                return ((IgniteBiTuple<Integer, UUID>) key).get2().equals(matrixUuid);
+                return ((IgniteBiTuple<Integer, UUID>)key).get2().equals(matrixUuid);
             else if (key instanceof MatrixBlockKey)
-                return ((MatrixBlockKey) key).dataStructureId().equals(matrixUuid);
+                return ((MatrixBlockKey)key).dataStructureId().equals(matrixUuid);
             else if (key instanceof RowColMatrixKey)
-                return ((RowColMatrixKey) key).dataStructureId().equals(matrixUuid);
+                return ((RowColMatrixKey)key).dataStructureId().equals(matrixUuid);
             else if (key instanceof VectorBlockKey)
-                return ((VectorBlockKey) key).dataStructureId().equals(matrixUuid);
+                return ((VectorBlockKey)key).dataStructureId().equals(matrixUuid);
             else
                 throw new UnsupportedOperationException(); // TODO: handle my poor doubles
         };
@@ -359,9 +380,9 @@ public class CacheUtils {
 
     /**
      * @param cacheName Cache name.
-     * @param fun       An operation that accepts a cache entry and processes it.
-     * @param <K>       Cache key object type.
-     * @param <V>       Cache value object type.
+     * @param fun An operation that accepts a cache entry and processes it.
+     * @param <K> Cache key object type.
+     * @param <V> Cache value object type.
      */
     private static <K, V> void foreach(String cacheName, IgniteConsumer<CacheEntry<K, V>> fun) {
         foreach(cacheName, fun, null);
@@ -369,13 +390,13 @@ public class CacheUtils {
 
     /**
      * @param cacheName Cache name.
-     * @param fun       An operation that accepts a cache entry and processes it.
+     * @param fun An operation that accepts a cache entry and processes it.
      * @param keyFilter Cache keys filter.
-     * @param <K>       Cache key object type.
-     * @param <V>       Cache value object type.
+     * @param <K> Cache key object type.
+     * @param <V> Cache value object type.
      */
     protected static <K, V> void foreach(String cacheName, IgniteConsumer<CacheEntry<K, V>> fun,
-                                         IgnitePredicate<K> keyFilter) {
+        IgnitePredicate<K> keyFilter) {
         bcast(cacheName, () -> {
             Ignite ignite = Ignition.localIgnite();
             IgniteCache<K, V> cache = ignite.getOrCreateCache(cacheName);
@@ -393,7 +414,7 @@ public class CacheUtils {
                 // Iterate over given partition.
                 // Query returns an empty cursor if this partition is not stored on this node.
                 for (Cache.Entry<K, V> entry : cache.query(new ScanQuery<K, V>(part,
-                        (k, v) -> affinity.mapPartitionToNode(p) == locNode && (keyFilter == null || keyFilter.apply(k)))))
+                    (k, v) -> affinity.mapPartitionToNode(p) == locNode && (keyFilter == null || keyFilter.apply(k)))))
                     fun.accept(new CacheEntry<>(entry, cache));
             }
         });
@@ -401,14 +422,14 @@ public class CacheUtils {
 
     /**
      * @param cacheName Cache name.
-     * @param fun       An operation that accepts a cache entry and processes it.
-     * @param ignite    Ignite.
-     * @param keysGen   Keys generator.
-     * @param <K>       Cache key object type.
-     * @param <V>       Cache value object type.
+     * @param fun An operation that accepts a cache entry and processes it.
+     * @param ignite Ignite.
+     * @param keysGen Keys generator.
+     * @param <K> Cache key object type.
+     * @param <V> Cache value object type.
      */
     public static <K, V> void update(String cacheName, Ignite ignite,
-                                     IgniteBiFunction<Ignite, Cache.Entry<K, V>, Stream<Cache.Entry<K, V>>> fun, IgniteSupplier<Set<K>> keysGen) {
+        IgniteBiFunction<Ignite, Cache.Entry<K, V>, Stream<Cache.Entry<K, V>>> fun, IgniteSupplier<Set<K>> keysGen) {
         bcast(cacheName, ignite, () -> {
             Ignite ig = Ignition.localIgnite();
             IgniteCache<K, V> cache = ig.getOrCreateCache(cacheName);
@@ -435,14 +456,14 @@ public class CacheUtils {
 
     /**
      * @param cacheName Cache name.
-     * @param fun       An operation that accepts a cache entry and processes it.
-     * @param ignite    Ignite.
-     * @param keysGen   Keys generator.
-     * @param <K>       Cache key object type.
-     * @param <V>       Cache value object type.
+     * @param fun An operation that accepts a cache entry and processes it.
+     * @param ignite Ignite.
+     * @param keysGen Keys generator.
+     * @param <K> Cache key object type.
+     * @param <V> Cache value object type.
      */
     public static <K, V> void update(String cacheName, Ignite ignite, IgniteConsumer<Cache.Entry<K, V>> fun,
-                                     IgniteSupplier<Set<K>> keysGen) {
+        IgniteSupplier<Set<K>> keysGen) {
         bcast(cacheName, ignite, () -> {
             Ignite ig = Ignition.localIgnite();
             IgniteCache<K, V> cache = ig.getOrCreateCache(cacheName);
@@ -473,10 +494,10 @@ public class CacheUtils {
      * <b>Currently fold supports only commutative operations.<b/>
      *
      * @param cacheName Cache name.
-     * @param folder    Fold function operating over cache entries.
-     * @param <K>       Cache key object type.
-     * @param <V>       Cache value object type.
-     * @param <A>       Fold result type.
+     * @param folder Fold function operating over cache entries.
+     * @param <K> Cache key object type.
+     * @param <V> Cache value object type.
+     * @param <A> Fold result type.
      * @return Fold operation result.
      */
     public static <K, V, A> Collection<A> fold(String cacheName, IgniteBiFunction<CacheEntry<K, V>, A, A> folder) {
@@ -487,14 +508,14 @@ public class CacheUtils {
      * <b>Currently fold supports only commutative operations.<b/>
      *
      * @param cacheName Cache name.
-     * @param folder    Fold function operating over cache entries.
-     * @param <K>       Cache key object type.
-     * @param <V>       Cache value object type.
-     * @param <A>       Fold result type.
+     * @param folder Fold function operating over cache entries.
+     * @param <K> Cache key object type.
+     * @param <V> Cache value object type.
+     * @param <A> Fold result type.
      * @return Fold operation result.
      */
     public static <K, V, A> Collection<A> fold(String cacheName, IgniteBiFunction<CacheEntry<K, V>, A, A> folder,
-                                               IgnitePredicate<K> keyFilter) {
+        IgnitePredicate<K> keyFilter) {
         return bcast(cacheName, () -> {
             Ignite ignite = Ignition.localIgnite();
             IgniteCache<K, V> cache = ignite.getOrCreateCache(cacheName);
@@ -514,7 +535,7 @@ public class CacheUtils {
                 // Iterate over given partition.
                 // Query returns an empty cursor if this partition is not stored on this node.
                 for (Cache.Entry<K, V> entry : cache.query(new ScanQuery<K, V>(part,
-                        (k, v) -> affinity.mapPartitionToNode(p) == locNode && (keyFilter == null || keyFilter.apply(k)))))
+                    (k, v) -> affinity.mapPartitionToNode(p) == locNode && (keyFilter == null || keyFilter.apply(k)))))
                     a = folder.apply(new CacheEntry<>(entry, cache), a);
             }
 
@@ -525,34 +546,34 @@ public class CacheUtils {
     /**
      * Distributed version of fold operation.
      *
-     * @param cacheName   Cache name.
-     * @param folder      Folder.
-     * @param keyFilter   Key filter.
+     * @param cacheName Cache name.
+     * @param folder Folder.
+     * @param keyFilter Key filter.
      * @param accumulator Accumulator.
      * @param zeroValSupp Zero value supplier.
      */
     public static <K, V, A> A distributedFold(String cacheName, IgniteBiFunction<Cache.Entry<K, V>, A, A> folder,
-                                              IgnitePredicate<K> keyFilter, BinaryOperator<A> accumulator, IgniteSupplier<A> zeroValSupp) {
+        IgnitePredicate<K> keyFilter, BinaryOperator<A> accumulator, IgniteSupplier<A> zeroValSupp) {
         return sparseFold(cacheName, folder, keyFilter, accumulator, zeroValSupp, null, null, 0,
-                false);
+            false);
     }
 
     /**
      * Sparse version of fold. This method also applicable to sparse zeroes.
      *
-     * @param cacheName   Cache name.
-     * @param folder      Folder.
-     * @param keyFilter   Key filter.
+     * @param cacheName Cache name.
+     * @param folder Folder.
+     * @param keyFilter Key filter.
      * @param accumulator Accumulator.
      * @param zeroValSupp Zero value supplier.
-     * @param defVal      Default value.
-     * @param defKey      Default key.
-     * @param defValCnt   Def value count.
+     * @param defVal Default value.
+     * @param defKey Default key.
+     * @param defValCnt Def value count.
      * @param isNilpotent Is nilpotent.
      */
     private static <K, V, A> A sparseFold(String cacheName, IgniteBiFunction<Cache.Entry<K, V>, A, A> folder,
-                                          IgnitePredicate<K> keyFilter, BinaryOperator<A> accumulator, IgniteSupplier<A> zeroValSupp, V defVal, K defKey,
-                                          long defValCnt, boolean isNilpotent) {
+        IgnitePredicate<K> keyFilter, BinaryOperator<A> accumulator, IgniteSupplier<A> zeroValSupp, V defVal, K defKey,
+        long defValCnt, boolean isNilpotent) {
 
         A defRes = zeroValSupp.get();
 
@@ -579,7 +600,7 @@ public class CacheUtils {
                 // Iterate over given partition.
                 // Query returns an empty cursor if this partition is not stored on this node.
                 for (Cache.Entry<K, V> entry : cache.query(new ScanQuery<K, V>(part,
-                        (k, v) -> affinity.mapPartitionToNode(p) == locNode && (keyFilter == null || keyFilter.apply(k)))))
+                    (k, v) -> affinity.mapPartitionToNode(p) == locNode && (keyFilter == null || keyFilter.apply(k)))))
                     a = folder.apply(entry, a);
             }
 
@@ -588,11 +609,23 @@ public class CacheUtils {
         return totalRes.stream().reduce(defRes, accumulator);
     }
 
+    /**
+     * Distributed version of fold operation. This method also applicable to sparse zeroes.
+     *
+     * @param cacheName Cache name.
+     * @param ignite ignite
+     * @param acc Accumulator
+     * @param supp supplier
+     * @param entriesGen entries generator
+     * @param comb combiner
+     * @param zeroValSupp Zero value supplier.
+     * @return aggregated result
+     */
     public static <K, V, A, W> A reduce(String cacheName, Ignite ignite,
-                                        IgniteTriFunction<W, Cache.Entry<K, V>, A, A> acc,
-                                        IgniteSupplier<W> supp,
-                                        IgniteSupplier<Iterable<Cache.Entry<K, V>>> entriesGen, IgniteBinaryOperator<A> comb,
-                                        IgniteSupplier<A> zeroValSupp) {
+        IgniteTriFunction<W, Cache.Entry<K, V>, A, A> acc,
+        IgniteSupplier<W> supp,
+        IgniteSupplier<Iterable<Cache.Entry<K, V>>> entriesGen, IgniteBinaryOperator<A> comb,
+        IgniteSupplier<A> zeroValSupp) {
 
         A defRes = zeroValSupp.get();
 
@@ -611,16 +644,29 @@ public class CacheUtils {
         return totalRes.stream().reduce(defRes, comb);
     }
 
-    public static <K, V, A, W> A reduce(String cacheName, IgniteTriFunction<W, Cache.Entry<K, V>, A, A> acc,
-                                        IgniteSupplier<W> supp,
-                                        IgniteSupplier<Iterable<Cache.Entry<K, V>>> entriesGen, IgniteBinaryOperator<A> comb,
-                                        IgniteSupplier<A> zeroValSupp) {
+    /**
+     * Distributed version of fold operation.
+     *
+     * @param cacheName Cache name.
+     * @param acc Accumulator
+     * @param supp supplier
+     * @param entriesGen entries generator
+     * @param comb combiner
+     * @param zeroValSupp Zero value supplier
+     * @return aggregated result
+     */
+    public static <K, V, A, W> A reduce(String cacheName,
+        IgniteTriFunction<W, Cache.Entry<K, V>, A, A> acc,
+        IgniteSupplier<W> supp,
+        IgniteSupplier<Iterable<Cache.Entry<K, V>>> entriesGen,
+        IgniteBinaryOperator<A> comb,
+        IgniteSupplier<A> zeroValSupp) {
         return reduce(cacheName, Ignition.localIgnite(), acc, supp, entriesGen, comb, zeroValSupp);
     }
 
     /**
      * @param cacheName Cache name.
-     * @param run       {@link Runnable} to broadcast to cache nodes for given cache name.
+     * @param run {@link Runnable} to broadcast to cache nodes for given cache name.
      */
     public static void bcast(String cacheName, Ignite ignite, IgniteRunnable run) {
         ignite.compute(ignite.cluster().forDataNodes(cacheName)).broadcast(run);
@@ -630,7 +676,7 @@ public class CacheUtils {
      * Broadcast runnable to data nodes of given cache.
      *
      * @param cacheName Cache name.
-     * @param run       Runnable.
+     * @param run Runnable.
      */
     public static void bcast(String cacheName, IgniteRunnable run) {
         bcast(cacheName, ignite(), run);
@@ -638,8 +684,8 @@ public class CacheUtils {
 
     /**
      * @param cacheName Cache name.
-     * @param call      {@link IgniteCallable} to broadcast to cache nodes for given cache name.
-     * @param <A>       Type returned by the callable.
+     * @param call {@link IgniteCallable} to broadcast to cache nodes for given cache name.
+     * @param <A> Type returned by the callable.
      */
     public static <A> Collection<A> bcast(String cacheName, IgniteCallable<A> call) {
         return bcast(cacheName, ignite(), call);
@@ -649,9 +695,9 @@ public class CacheUtils {
      * Broadcast callable to data nodes of given cache.
      *
      * @param cacheName Cache name.
-     * @param ignite    Ignite instance.
-     * @param call      Callable to broadcast.
-     * @param <A>       Type of callable result.
+     * @param ignite Ignite instance.
+     * @param call Callable to broadcast.
+     * @param <A> Type of callable result.
      * @return Results of callable from each node.
      */
     public static <A> Collection<A> bcast(String cacheName, Ignite ignite, IgniteCallable<A> call) {
@@ -660,7 +706,7 @@ public class CacheUtils {
 
     /**
      * @param vectorUuid Matrix UUID.
-     * @param mapper     Mapping {@link IgniteFunction}.
+     * @param mapper Mapping {@link IgniteFunction}.
      */
     @SuppressWarnings("unchecked")
     public static <K, V> void sparseMapForVector(UUID vectorUuid, IgniteDoubleFunction<V> mapper, String cacheName) {
@@ -674,13 +720,15 @@ public class CacheUtils {
             V v = ce.entry().getValue();
 
             if (v instanceof VectorBlockEntry) {
-                VectorBlockEntry entry = (VectorBlockEntry) v;
+                VectorBlockEntry entry = (VectorBlockEntry)v;
 
-                for (int i = 0; i < entry.size(); i++) entry.set(i, (Double) mapper.apply(entry.get(i)));
+                for (int i = 0; i < entry.size(); i++)
+                    entry.set(i, (Double)mapper.apply(entry.get(i)));
 
-                ce.cache().put(k, (V) entry);
-            } else {
-                V mappingRes = mapper.apply((Double) v);
+                ce.cache().put(k, (V)entry);
+            }
+            else {
+                V mappingRes = mapper.apply((Double)v);
                 ce.cache().put(k, mappingRes);
             }
         }, sparseKeyFilter(vectorUuid));

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/RowColMatrixKey.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/RowColMatrixKey.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/RowColMatrixKey.java
index 78af2e8..05d8027 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/RowColMatrixKey.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/RowColMatrixKey.java
@@ -24,7 +24,7 @@ import org.apache.ignite.ml.math.impls.matrix.SparseDistributedMatrix;
  */
 public interface RowColMatrixKey extends DataStructureCacheKey {
     /**
-     *  Return index value(blockId, Row/Col index, etc.)
+     * Return index value(blockId, Row/Col index, etc.)
      */
     public int index();
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/MatrixBlockKey.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/MatrixBlockKey.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/MatrixBlockKey.java
index 9e8d81e..6e09499 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/MatrixBlockKey.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/MatrixBlockKey.java
@@ -17,34 +17,40 @@
 
 package org.apache.ignite.ml.math.distributed.keys.impl;
 
-import org.apache.ignite.binary.*;
-import org.apache.ignite.internal.binary.BinaryUtils;
-import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.lang.IgniteUuid;
-import org.apache.ignite.ml.math.impls.matrix.MatrixBlockEntry;
-import org.apache.ignite.ml.math.impls.matrix.SparseBlockDistributedMatrix;
-import org.jetbrains.annotations.Nullable;
-
 import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.util.UUID;
+import org.apache.ignite.binary.BinaryObjectException;
+import org.apache.ignite.binary.BinaryRawReader;
+import org.apache.ignite.binary.BinaryRawWriter;
+import org.apache.ignite.binary.BinaryReader;
+import org.apache.ignite.binary.BinaryWriter;
+import org.apache.ignite.binary.Binarylizable;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.ml.math.impls.matrix.MatrixBlockEntry;
+import org.apache.ignite.ml.math.impls.matrix.SparseBlockDistributedMatrix;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * Key implementation for {@link MatrixBlockEntry} using for {@link SparseBlockDistributedMatrix}.
  */
-public class MatrixBlockKey implements org.apache.ignite.ml.math.distributed.keys.MatrixBlockKey, Externalizable, Binarylizable {
+public class MatrixBlockKey implements org.apache.ignite.ml.math.distributed.keys.MatrixBlockKey,
+    Externalizable, Binarylizable {
     /** */
     private static final long serialVersionUID = 0L;
+
     /** Block row ID */
     private long blockIdRow;
+
     /** Block col ID */
     private long blockIdCol;
+
     /** Matrix ID */
     private UUID matrixUuid;
+
     /** Block affinity key. */
     private UUID affinityKey;
 
@@ -150,13 +156,11 @@ public class MatrixBlockKey implements org.apache.ignite.ml.math.distributed.key
         MatrixBlockKey that = (MatrixBlockKey)obj;
 
         return blockIdRow == that.blockIdRow && blockIdCol == that.blockIdCol && matrixUuid.equals(that.matrixUuid)
-                && F.eq(affinityKey, that.affinityKey);
+            && F.eq(affinityKey, that.affinityKey);
     }
 
     /** {@inheritDoc} */
     @Override public String toString() {
         return S.toString(MatrixBlockKey.class, this);
     }
-
-
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/SparseMatrixKey.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/SparseMatrixKey.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/SparseMatrixKey.java
index 980d433..cbd5208 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/SparseMatrixKey.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/SparseMatrixKey.java
@@ -17,17 +17,16 @@
 
 package org.apache.ignite.ml.math.distributed.keys.impl;
 
-import org.apache.ignite.cache.affinity.AffinityKeyMapped;
-import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.ml.math.distributed.keys.RowColMatrixKey;
-import org.apache.ignite.ml.math.impls.matrix.SparseDistributedMatrix;
-
 import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.util.UUID;
+import org.apache.ignite.cache.affinity.AffinityKeyMapped;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.ml.math.distributed.keys.RowColMatrixKey;
+import org.apache.ignite.ml.math.impls.matrix.SparseDistributedMatrix;
 
 /**
  * Key implementation for {@link SparseDistributedMatrix}.
@@ -35,8 +34,10 @@ import java.util.UUID;
 public class SparseMatrixKey implements RowColMatrixKey, Externalizable {
     /** */
     private int idx;
+
     /** */
     private UUID matrixId;
+
     /** */
     @AffinityKeyMapped
     private Object affinityKey;
@@ -44,7 +45,7 @@ public class SparseMatrixKey implements RowColMatrixKey, Externalizable {
     /**
      * Default constructor (required by Externalizable).
      */
-    public SparseMatrixKey(){
+    public SparseMatrixKey() {
 
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/VectorBlockKey.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/VectorBlockKey.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/VectorBlockKey.java
index 6052010..718897f 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/VectorBlockKey.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/distributed/keys/impl/VectorBlockKey.java
@@ -17,21 +17,22 @@
 
 package org.apache.ignite.ml.math.distributed.keys.impl;
 
-import org.apache.ignite.binary.*;
-import org.apache.ignite.internal.binary.BinaryUtils;
-import org.apache.ignite.internal.util.typedef.F;
-import org.apache.ignite.internal.util.typedef.internal.S;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.lang.IgniteUuid;
-import org.apache.ignite.ml.math.impls.vector.SparseBlockDistributedVector;
-import org.apache.ignite.ml.math.impls.vector.VectorBlockEntry;
-import org.jetbrains.annotations.Nullable;
-
 import java.io.Externalizable;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.util.UUID;
+import org.apache.ignite.binary.BinaryObjectException;
+import org.apache.ignite.binary.BinaryRawReader;
+import org.apache.ignite.binary.BinaryRawWriter;
+import org.apache.ignite.binary.BinaryReader;
+import org.apache.ignite.binary.BinaryWriter;
+import org.apache.ignite.binary.Binarylizable;
+import org.apache.ignite.internal.util.typedef.F;
+import org.apache.ignite.internal.util.typedef.internal.S;
+import org.apache.ignite.ml.math.impls.vector.SparseBlockDistributedVector;
+import org.apache.ignite.ml.math.impls.vector.VectorBlockEntry;
+import org.jetbrains.annotations.Nullable;
 
 /**
  * Key implementation for {@link VectorBlockEntry} using for {@link SparseBlockDistributedVector}.
@@ -39,10 +40,13 @@ import java.util.UUID;
 public class VectorBlockKey implements org.apache.ignite.ml.math.distributed.keys.VectorBlockKey, Externalizable, Binarylizable {
     /** */
     private static final long serialVersionUID = 0L;
+
     /** Block row ID */
     private long blockId;
+
     /** Vector ID */
     private UUID vectorUuid;
+
     /** Block affinity key. */
     private UUID affinityKey;
 
@@ -73,7 +77,6 @@ public class VectorBlockKey implements org.apache.ignite.ml.math.distributed.key
         return blockId;
     }
 
-
     /** {@inheritDoc} */
     @Override public UUID dataStructureId() {
         return vectorUuid;
@@ -138,7 +141,7 @@ public class VectorBlockKey implements org.apache.ignite.ml.math.distributed.key
 
         VectorBlockKey that = (VectorBlockKey)obj;
 
-        return blockId == that.blockId  && vectorUuid.equals(that.vectorUuid)
+        return blockId == that.blockId && vectorUuid.equals(that.vectorUuid)
             && F.eq(affinityKey, that.affinityKey);
     }
 
@@ -146,6 +149,4 @@ public class VectorBlockKey implements org.apache.ignite.ml.math.distributed.key
     @Override public String toString() {
         return S.toString(VectorBlockKey.class, this);
     }
-
-
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/Functions.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/Functions.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/Functions.java
index ce534bd..fa7ee76 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/Functions.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/Functions.java
@@ -17,11 +17,10 @@
 
 package org.apache.ignite.ml.math.functions;
 
-import org.apache.ignite.lang.IgniteBiTuple;
-
 import java.util.Comparator;
 import java.util.List;
 import java.util.function.BiFunction;
+import org.apache.ignite.lang.IgniteBiTuple;
 
 /**
  * Compatibility with Apache Mahout.
@@ -80,6 +79,7 @@ public final class Functions {
 
     /**
      * Generic 'max' function.
+     *
      * @param a First object to compare.
      * @param b Second object to compare.
      * @param f Comparator.
@@ -92,6 +92,7 @@ public final class Functions {
 
     /**
      * Generic 'min' function.
+     *
      * @param a First object to compare.
      * @param b Second object to compare.
      * @param f Comparator.
@@ -215,6 +216,7 @@ public final class Functions {
 
     /**
      * Curry bifunction.
+     *
      * @param f Bifunction to curry.
      * @param <A> Type of first argument of {@code f}.
      * @param <B> Type of second argument of {@code f}.

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/IgniteToDoubleFunction.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/IgniteToDoubleFunction.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/IgniteToDoubleFunction.java
index 59a8bf3..7fcb455 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/IgniteToDoubleFunction.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/IgniteToDoubleFunction.java
@@ -20,6 +20,7 @@ package org.apache.ignite.ml.math.functions;
 import java.io.Serializable;
 import java.util.function.ToDoubleFunction;
 
+/** */
 @FunctionalInterface
 public interface IgniteToDoubleFunction<T> extends ToDoubleFunction<T>, Serializable {
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/IgniteTriFunction.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/IgniteTriFunction.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/IgniteTriFunction.java
index 3284a00..4d8fd20 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/IgniteTriFunction.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/functions/IgniteTriFunction.java
@@ -23,13 +23,14 @@ import java.util.function.Function;
 
 /** Serializable TriFunction (A, B, C) -> R. */
 @FunctionalInterface
-public interface IgniteTriFunction<A,B,C,R> extends Serializable {
+public interface IgniteTriFunction<A, B, C, R> extends Serializable {
     /** */
     R apply(A a, B b, C c);
 
     /** */
     default <V> IgniteTriFunction<A, B, C, V> andThen(Function<? super R, ? extends V> after) {
         Objects.requireNonNull(after);
+
         return (A a, B b, C c) -> after.apply(apply(a, b, c));
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/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 89f567e..ef6bc05 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
@@ -332,7 +332,7 @@ public abstract class AbstractMatrix implements Matrix {
     /** {@inheritDoc} */
     @Override public Matrix assign(double val) {
         if (sto.isArrayBased())
-                Arrays.fill(sto.data(), val);
+            Arrays.fill(sto.data(), val);
         else {
             int rows = rowSize();
             int cols = columnSize();
@@ -717,7 +717,7 @@ public abstract class AbstractMatrix implements Matrix {
         Vector res = new DenseLocalOnHeapVector(columnSize());
 
         for (int i = 0; i < columnSize(); i++)
-            res.setX(i, getX(row,i));
+            res.setX(i, getX(row, i));
 
         return res;
     }
@@ -740,9 +740,13 @@ public abstract class AbstractMatrix implements Matrix {
     /** {@inheritDoc} */
     @Override public Vector getCol(int col) {
         checkColumnIndex(col);
+
         Vector res;
-        if (isDistributed()) res = MatrixUtil.likeVector(this, rowSize());
-        else res = new DenseLocalOnHeapVector(rowSize());
+
+        if (isDistributed())
+            res = MatrixUtil.likeVector(this, rowSize());
+        else
+            res = new DenseLocalOnHeapVector(rowSize());
 
         for (int i = 0; i < rowSize(); i++)
             res.setX(i, getX(i, col));
@@ -797,7 +801,7 @@ public abstract class AbstractMatrix implements Matrix {
 
         Vector res = likeVector(rows);
 
-        Blas.gemv(1,this,vec,0,res);
+        Blas.gemv(1, this, vec, 0, res);
 
         return res;
     }
@@ -977,13 +981,19 @@ public abstract class AbstractMatrix implements Matrix {
         setX(row, col, f.apply(row, col, getX(row, col)));
     }
 
-
+    /**
+     * Return max amount of columns in 2d array.
+     *
+     * TODO: why this in this class, mb some util class?
+     *
+     * @param data Data.
+     */
     protected int getMaxAmountOfColumns(double[][] data) {
-        int maxAmountOfColumns = 0;
+        int maxAmountOfCols = 0;
 
         for (int i = 0; i < data.length; i++)
-            maxAmountOfColumns = Math.max(maxAmountOfColumns, data[i].length);
+            maxAmountOfCols = Math.max(maxAmountOfCols, data[i].length);
 
-        return maxAmountOfColumns;
+        return maxAmountOfCols;
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseBlockDistributedMatrix.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseBlockDistributedMatrix.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseBlockDistributedMatrix.java
index ea9fb8c..2d822d2 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseBlockDistributedMatrix.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseBlockDistributedMatrix.java
@@ -17,6 +17,10 @@
 
 package org.apache.ignite.ml.math.impls.matrix;
 
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+import java.util.UUID;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.Ignition;
@@ -37,11 +41,6 @@ import org.apache.ignite.ml.math.impls.vector.SparseBlockDistributedVector;
 import org.apache.ignite.ml.math.impls.vector.SparseDistributedVector;
 import org.apache.ignite.ml.math.impls.vector.VectorBlockEntry;
 
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.UUID;
-
 /**
  * Sparse block distributed matrix. This matrix represented by blocks 32x32 {@link MatrixBlockEntry}.
  *
@@ -71,6 +70,7 @@ public class SparseBlockDistributedMatrix extends AbstractMatrix implements Stor
      */
     public SparseBlockDistributedMatrix(double[][] data) {
         assert data.length > 0;
+
         setStorage(new BlockMatrixStorage(data.length, getMaxAmountOfColumns(data)));
 
         for (int i = 0; i < data.length; i++)
@@ -117,7 +117,7 @@ public class SparseBlockDistributedMatrix extends AbstractMatrix implements Stor
             throw new CardinalityException(columnSize(), mtx.rowSize());
 
         SparseBlockDistributedMatrix matrixA = this;
-        SparseBlockDistributedMatrix matrixB = (SparseBlockDistributedMatrix) mtx;
+        SparseBlockDistributedMatrix matrixB = (SparseBlockDistributedMatrix)mtx;
 
         String cacheName = this.storage().cacheName();
         SparseBlockDistributedMatrix matrixC = new SparseBlockDistributedMatrix(matrixA.rowSize(), matrixB.columnSize());
@@ -166,7 +166,6 @@ public class SparseBlockDistributedMatrix extends AbstractMatrix implements Stor
         return matrixC;
     }
 
-
     /**
      * {@inheritDoc}
      */
@@ -179,8 +178,7 @@ public class SparseBlockDistributedMatrix extends AbstractMatrix implements Stor
             throw new CardinalityException(columnSize(), vec.size());
 
         SparseBlockDistributedMatrix matrixA = this;
-        SparseBlockDistributedVector vectorB = (SparseBlockDistributedVector) vec;
-
+        SparseBlockDistributedVector vectorB = (SparseBlockDistributedVector)vec;
 
         String cacheName = this.storage().cacheName();
         SparseBlockDistributedVector vectorC = new SparseBlockDistributedVector(matrixA.rowSize());
@@ -205,7 +203,6 @@ public class SparseBlockDistributedMatrix extends AbstractMatrix implements Stor
             locKeys.forEach(key -> {
                 long newBlockId = key.blockId();
 
-
                 IgnitePair<Long> newBlockIdForMtx = new IgnitePair<>(newBlockId, 0L);
 
                 VectorBlockEntry blockC = null;
@@ -296,7 +293,7 @@ public class SparseBlockDistributedMatrix extends AbstractMatrix implements Stor
 
     /** */
     private UUID getUUID() {
-        return ((BlockMatrixStorage) getStorage()).getUUID();
+        return ((BlockMatrixStorage)getStorage()).getUUID();
     }
 
     /**
@@ -313,6 +310,6 @@ public class SparseBlockDistributedMatrix extends AbstractMatrix implements Stor
      *
      */
     private BlockMatrixStorage storage() {
-        return (BlockMatrixStorage) getStorage();
+        return (BlockMatrixStorage)getStorage();
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedMatrix.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedMatrix.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedMatrix.java
index 497241d..3288724 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedMatrix.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/matrix/SparseDistributedMatrix.java
@@ -17,6 +17,9 @@
 
 package org.apache.ignite.ml.math.impls.matrix;
 
+import java.util.Collection;
+import java.util.Map;
+import java.util.UUID;
 import org.apache.ignite.Ignite;
 import org.apache.ignite.Ignition;
 import org.apache.ignite.cache.affinity.Affinity;
@@ -32,10 +35,6 @@ import org.apache.ignite.ml.math.impls.storage.matrix.SparseDistributedMatrixSto
 import org.apache.ignite.ml.math.impls.storage.vector.SparseDistributedVectorStorage;
 import org.apache.ignite.ml.math.impls.vector.SparseDistributedVector;
 
-import java.util.Collection;
-import java.util.Map;
-import java.util.UUID;
-
 /**
  * Sparse distributed matrix implementation based on data grid.
  * <p>
@@ -76,14 +75,13 @@ public class SparseDistributedMatrix extends AbstractMatrix implements StorageCo
      */
     public SparseDistributedMatrix(double[][] data) {
         assert data.length > 0;
-        setStorage(new SparseDistributedMatrixStorage(data.length, getMaxAmountOfColumns(data),  StorageConstants.ROW_STORAGE_MODE, StorageConstants.RANDOM_ACCESS_MODE));
+        setStorage(new SparseDistributedMatrixStorage(data.length, getMaxAmountOfColumns(data), StorageConstants.ROW_STORAGE_MODE, StorageConstants.RANDOM_ACCESS_MODE));
 
         for (int i = 0; i < data.length; i++)
             for (int j = 0; j < data[i].length; j++)
-                storage().set(i,j,data[i][j]);
+                storage().set(i, j, data[i][j]);
     }
 
-
     /**
      * @param rows Amount of rows in the matrix.
      * @param cols Amount of columns in the matrix.
@@ -124,7 +122,6 @@ public class SparseDistributedMatrix extends AbstractMatrix implements StorageCo
         return mapOverValues(v -> v * x);
     }
 
-
     /** {@inheritDoc} */
     @Override public Matrix times(Matrix mtx) {
         if (mtx == null)
@@ -160,15 +157,16 @@ public class SparseDistributedMatrix extends AbstractMatrix implements StorageCo
             // TODO: IGNITE:5114, exec in parallel
             locKeys.forEach(key -> {
                 int idx = key.index();
-                
-                if (isRowMode){
+
+                if (isRowMode) {
                     Vector Aik = matrixA.getRow(idx);
 
                     for (int i = 0; i < matrixB.columnSize(); i++) {
                         Vector Bkj = matrixB.getCol(i);
                         matrixC.set(idx, i, Aik.times(Bkj).sum());
                     }
-                } else {
+                }
+                else {
                     Vector Bkj = matrixB.getCol(idx);
 
                     for (int i = 0; i < matrixA.rowSize(); i++) {
@@ -182,7 +180,6 @@ public class SparseDistributedMatrix extends AbstractMatrix implements StorageCo
         return matrixC;
     }
 
-
     /** {@inheritDoc} */
     @Override public Vector times(Vector vec) {
         if (vec == null)
@@ -192,12 +189,12 @@ public class SparseDistributedMatrix extends AbstractMatrix implements StorageCo
             throw new CardinalityException(columnSize(), vec.size());
 
         SparseDistributedMatrix matrixA = this;
-        SparseDistributedVector vectorB = (SparseDistributedVector) vec;
+        SparseDistributedVector vectorB = (SparseDistributedVector)vec;
 
         String cacheName = storage().cacheName();
         int rows = this.rowSize();
 
-        SparseDistributedVector vectorC = (SparseDistributedVector) likeVector(rows);
+        SparseDistributedVector vectorC = (SparseDistributedVector)likeVector(rows);
 
         CacheUtils.bcast(cacheName, () -> {
             Ignite ignite = Ignition.localIgnite();
@@ -271,8 +268,10 @@ public class SparseDistributedMatrix extends AbstractMatrix implements StorageCo
 
     /** {@inheritDoc} */
     @Override public Matrix like(int rows, int cols) {
-        if(storage()==null) return new SparseDistributedMatrix(rows, cols);
-        else return new SparseDistributedMatrix(rows, cols, storage().storageMode(), storage().accessMode());
+        if (storage() == null)
+            return new SparseDistributedMatrix(rows, cols);
+        else
+            return new SparseDistributedMatrix(rows, cols, storage().storageMode(), storage().accessMode());
 
     }
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockMatrixStorage.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockMatrixStorage.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockMatrixStorage.java
index 411b038..e73ef22 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockMatrixStorage.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockMatrixStorage.java
@@ -17,6 +17,14 @@
 
 package org.apache.ignite.ml.math.impls.storage.matrix;
 
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.UUID;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.Ignition;
 import org.apache.ignite.cache.CacheAtomicityMode;
@@ -25,7 +33,6 @@ import org.apache.ignite.cache.CachePeekMode;
 import org.apache.ignite.cache.CacheWriteSynchronizationMode;
 import org.apache.ignite.configuration.CacheConfiguration;
 import org.apache.ignite.internal.util.lang.IgnitePair;
-import org.apache.ignite.lang.IgniteUuid;
 import org.apache.ignite.ml.math.MatrixStorage;
 import org.apache.ignite.ml.math.StorageConstants;
 import org.apache.ignite.ml.math.distributed.CacheUtils;
@@ -34,12 +41,6 @@ import org.apache.ignite.ml.math.distributed.keys.impl.MatrixBlockKey;
 import org.apache.ignite.ml.math.impls.matrix.MatrixBlockEntry;
 import org.apache.ignite.ml.math.impls.matrix.SparseBlockDistributedMatrix;
 
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.util.*;
-
 import static org.apache.ignite.ml.math.impls.matrix.MatrixBlockEntry.MAX_BLOCK_SIZE;
 
 /**
@@ -48,28 +49,32 @@ import static org.apache.ignite.ml.math.impls.matrix.MatrixBlockEntry.MAX_BLOCK_
 public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, StorageConstants, DistributedStorage<MatrixBlockKey> {
     /** Cache name used for all instances of {@link BlockMatrixStorage}. */
     private static final String CACHE_NAME = "ML_BLOCK_SPARSE_MATRICES_CONTAINER";
+
     /** */
     private int blocksInCol;
+
     /** */
     private int blocksInRow;
+
     /** Amount of rows in the matrix. */
     private int rows;
+
     /** Amount of columns in the matrix. */
     private int cols;
+
     /** Matrix uuid. */
     private UUID uuid;
+
     /** Block size about 8 KB of data. */
     private int maxBlockEdge = MAX_BLOCK_SIZE;
 
     /** Actual distributed storage. */
     private IgniteCache<
-            MatrixBlockKey /* Matrix block number with uuid. */,
-            MatrixBlockEntry /* Block of matrix, local sparse matrix. */
+        MatrixBlockKey /* Matrix block number with uuid. */,
+        MatrixBlockEntry /* Block of matrix, local sparse matrix. */
         > cache = null;
 
-    /**
-     *
-     */
+    /** */
     public BlockMatrixStorage() {
         // No-op.
     }
@@ -93,9 +98,7 @@ public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, Sto
         uuid = UUID.randomUUID();
     }
 
-    /**
-     *
-     */
+    /** */
     public IgniteCache<MatrixBlockKey, MatrixBlockEntry> cache() {
         return cache;
     }
@@ -215,9 +218,9 @@ public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, Sto
 
         Set<MatrixBlockKey> keyset = new HashSet<>();
 
-        for(int i = 0; i <= maxBlockId.get1(); i++)
-            for(int j = 0; j <= maxBlockId.get2(); j++)
-                keyset.add(getCacheKey(i,j));
+        for (int i = 0; i <= maxBlockId.get1(); i++)
+            for (int j = 0; j <= maxBlockId.get2(); j++)
+                keyset.add(getCacheKey(i, j));
 
         return keyset;
     }
@@ -237,8 +240,7 @@ public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, Sto
         List<MatrixBlockEntry> res = new LinkedList<>();
 
         for (int i = 0; i < blocksInCol; i++)
-            res.add(getEntryById(new IgnitePair<>(blockId.get1(), (long) i)));
-
+            res.add(getEntryById(new IgnitePair<>(blockId.get1(), (long)i)));
 
         return res;
     }
@@ -253,7 +255,7 @@ public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, Sto
         List<MatrixBlockEntry> res = new LinkedList<>();
 
         for (int i = 0; i < blocksInRow; i++)
-            res.add(getEntryById(new IgnitePair<>((long) i, blockId.get2())));
+            res.add(getEntryById(new IgnitePair<>((long)i, blockId.get2())));
 
         return res;
     }
@@ -288,7 +290,8 @@ public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, Sto
     }
 
     /**
-     * Returns cached or new BlockEntry by given blockId
+     * Returns cached or new BlockEntry by given blockId.
+     *
      * @param blockId blockId
      * @return BlockEntry
      */
@@ -305,7 +308,8 @@ public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, Sto
     }
 
     /**
-     * Builds empty BlockEntry with sizes based on blockId and BlockMatrixStorage fields' values
+     * Builds empty BlockEntry with sizes based on blockId and BlockMatrixStorage fields' values.
+     *
      * @param blockId blockId
      * @return Empty BlockEntry
      */
@@ -316,15 +320,14 @@ public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, Sto
 
         int rowSize;
 
-        if(rowMod == 0)
+        if (rowMod == 0)
             rowSize = maxBlockEdge;
         else
             rowSize = blockId.get1() != (blocksInRow - 1) ? maxBlockEdge : rowMod;
 
-
         int colSize;
 
-        if(colMod == 0)
+        if (colMod == 0)
             colSize = maxBlockEdge;
         else
             colSize = blockId.get2() != (blocksInCol - 1) ? maxBlockEdge : colMod;
@@ -368,7 +371,8 @@ public class BlockMatrixStorage extends CacheUtils implements MatrixStorage, Sto
     }
 
     /**
-     * Calculates blockId for given cell's coordinates
+     * Calculates blockId for given cell's coordinates.
+     *
      * @param x x1 attribute in (x1,x2) coordinates
      * @param y x2 attribute in (x1, x2) coordinates
      * @return blockId as an IgnitePair

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockVectorStorage.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockVectorStorage.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockVectorStorage.java
index a44ed8e..6400b4d 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockVectorStorage.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/BlockVectorStorage.java
@@ -17,6 +17,14 @@
 
 package org.apache.ignite.ml.math.impls.storage.matrix;
 
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Set;
+import java.util.UUID;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.Ignition;
 import org.apache.ignite.cache.CacheAtomicityMode;
@@ -24,9 +32,6 @@ import org.apache.ignite.cache.CacheMode;
 import org.apache.ignite.cache.CachePeekMode;
 import org.apache.ignite.cache.CacheWriteSynchronizationMode;
 import org.apache.ignite.configuration.CacheConfiguration;
-import org.apache.ignite.internal.util.lang.IgnitePair;
-import org.apache.ignite.internal.util.typedef.internal.U;
-import org.apache.ignite.lang.IgniteUuid;
 import org.apache.ignite.ml.math.StorageConstants;
 import org.apache.ignite.ml.math.VectorStorage;
 import org.apache.ignite.ml.math.distributed.CacheUtils;
@@ -36,11 +41,6 @@ import org.apache.ignite.ml.math.impls.vector.SparseBlockDistributedVector;
 import org.apache.ignite.ml.math.impls.vector.VectorBlockEntry;
 import org.jetbrains.annotations.NotNull;
 
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.util.*;
-
 import static org.apache.ignite.ml.math.impls.matrix.MatrixBlockEntry.MAX_BLOCK_SIZE;
 
 /**
@@ -49,20 +49,24 @@ import static org.apache.ignite.ml.math.impls.matrix.MatrixBlockEntry.MAX_BLOCK_
 public class BlockVectorStorage extends CacheUtils implements VectorStorage, StorageConstants, DistributedStorage<VectorBlockKey> {
     /** Cache name used for all instances of {@link BlockVectorStorage}. */
     private static final String CACHE_NAME = "ML_BLOCK_SPARSE_MATRICES_CONTAINER";
+
     /** */
     private int blocks;
+
     /** Amount of columns in the vector. */
     private int size;
+
     /** Matrix uuid. */
     private UUID uuid;
+
     /** Block size about 8 KB of data. */
     private int maxBlockEdge = MAX_BLOCK_SIZE;
 
     /** Actual distributed storage. */
     private IgniteCache<
-            VectorBlockKey /* Matrix block number with uuid. */,
-            VectorBlockEntry /* Block of matrix, local sparse matrix. */
-            > cache = null;
+        VectorBlockKey /* Matrix block number with uuid. */,
+        VectorBlockEntry /* Block of matrix, local sparse matrix. */
+        > cache = null;
 
     /**
      *
@@ -79,17 +83,13 @@ public class BlockVectorStorage extends CacheUtils implements VectorStorage, Sto
         assert size > 0;
 
         this.size = size;
-
         this.blocks = size % maxBlockEdge == 0 ? size / maxBlockEdge : size / maxBlockEdge + 1;
 
         cache = newCache();
-
         uuid = UUID.randomUUID();
     }
 
-    /**
-     *
-     */
+    /** */
     public IgniteCache<VectorBlockKey, VectorBlockEntry> cache() {
         return cache;
     }
@@ -109,14 +109,6 @@ public class BlockVectorStorage extends CacheUtils implements VectorStorage, Sto
         return size;
     }
 
-
-    /**
-     * @return Blocks in row.
-     */
-    public int blocksInRow() {
-        return blocks;
-    }
-
     /** {@inheritDoc} */
     @Override public void writeExternal(ObjectOutput out) throws IOException {
         out.writeInt(size);
@@ -129,7 +121,7 @@ public class BlockVectorStorage extends CacheUtils implements VectorStorage, Sto
     @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
         size = in.readInt();
         blocks = in.readInt();
-        uuid = (UUID) in.readObject();
+        uuid = (UUID)in.readObject();
 
         cache = ignite().getOrCreateCache(in.readUTF());
     }
@@ -182,11 +174,10 @@ public class BlockVectorStorage extends CacheUtils implements VectorStorage, Sto
         return new VectorBlockKey(blockId, uuid, getAffinityKey(blockId));
     }
 
-
     /** {@inheritDoc} */
     @Override public Set<VectorBlockKey> getAllKeys() {
-        int maxIndex = size - 1;
-        long maxBlockId = getBlockId(maxIndex);
+        int maxIdx = size - 1;
+        long maxBlockId = getBlockId(maxIdx);
 
         Set<VectorBlockKey> keyset = new HashSet<>();
 
@@ -201,7 +192,6 @@ public class BlockVectorStorage extends CacheUtils implements VectorStorage, Sto
         return CACHE_NAME;
     }
 
-
     /**
      * Get column for current block.
      *
@@ -236,10 +226,10 @@ public class BlockVectorStorage extends CacheUtils implements VectorStorage, Sto
         if (obj == null || getClass() != obj.getClass())
             return false;
 
-        BlockVectorStorage that = (BlockVectorStorage) obj;
+        BlockVectorStorage that = (BlockVectorStorage)obj;
 
         return size == that.size && uuid.equals(that.uuid)
-                && (cache != null ? cache.equals(that.cache) : that.cache == null);
+            && (cache != null ? cache.equals(that.cache) : that.cache == null);
     }
 
     /**
@@ -257,6 +247,9 @@ public class BlockVectorStorage extends CacheUtils implements VectorStorage, Sto
         return entry;
     }
 
+    /**
+     * Get empty block entry by the given block id.
+     */
     @NotNull
     private VectorBlockEntry getEmptyBlockEntry(long blockId) {
         VectorBlockEntry entry;
@@ -286,7 +279,7 @@ public class BlockVectorStorage extends CacheUtils implements VectorStorage, Sto
      * Distributed matrix set.
      *
      * @param idx Row or column index.
-     * @param v   New value to set.
+     * @param v New value to set.
      */
     private void matrixSet(int idx, double v) {
         long blockId = getBlockId(idx);
@@ -308,7 +301,7 @@ public class BlockVectorStorage extends CacheUtils implements VectorStorage, Sto
 
     /** */
     private long getBlockId(int x) {
-        return (long) x / maxBlockEdge;
+        return (long)x / maxBlockEdge;
     }
 
     /**
@@ -368,7 +361,8 @@ public class BlockVectorStorage extends CacheUtils implements VectorStorage, Sto
      */
     @Override public double[] data() {
         double[] res = new double[this.size];
-        for (int i = 0; i < this.size; i++) res[i] = this.get(i);
+        for (int i = 0; i < this.size; i++)
+            res[i] = this.get(i);
         return res;
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/MapWrapperStorage.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/MapWrapperStorage.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/MapWrapperStorage.java
index 91db30e..3a02e44 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/MapWrapperStorage.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/MapWrapperStorage.java
@@ -17,14 +17,13 @@
 
 package org.apache.ignite.ml.math.impls.storage.matrix;
 
-import org.apache.ignite.internal.util.GridArgumentCheck;
-import org.apache.ignite.ml.math.VectorStorage;
-
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.util.Map;
 import java.util.Set;
+import org.apache.ignite.internal.util.GridArgumentCheck;
+import org.apache.ignite.ml.math.VectorStorage;
 
 /**
  * Storage for wrapping given map.
@@ -53,7 +52,7 @@ public class MapWrapperStorage implements VectorStorage {
 
         assert min >= 0;
 
-        size =  (max - min) + 1;
+        size = (max - min) + 1;
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/SparseDistributedMatrixStorage.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/SparseDistributedMatrixStorage.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/SparseDistributedMatrixStorage.java
index e976899..9b4a189 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/SparseDistributedMatrixStorage.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/SparseDistributedMatrixStorage.java
@@ -19,6 +19,14 @@ package org.apache.ignite.ml.math.impls.storage.matrix;
 
 import it.unimi.dsi.fastutil.ints.Int2DoubleOpenHashMap;
 import it.unimi.dsi.fastutil.ints.Int2DoubleRBTreeMap;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
+import java.util.Map;
+import java.util.Set;
+import java.util.UUID;
+import java.util.stream.Collectors;
+import java.util.stream.IntStream;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.Ignition;
 import org.apache.ignite.cache.CacheAtomicityMode;
@@ -34,29 +42,25 @@ import org.apache.ignite.ml.math.distributed.keys.RowColMatrixKey;
 import org.apache.ignite.ml.math.distributed.keys.impl.SparseMatrixKey;
 import org.apache.ignite.ml.math.impls.matrix.SparseDistributedMatrix;
 
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectOutput;
-import java.util.Map;
-import java.util.Set;
-import java.util.UUID;
-import java.util.stream.Collectors;
-import java.util.stream.IntStream;
-
 /**
  * {@link MatrixStorage} implementation for {@link SparseDistributedMatrix}.
  */
 public class SparseDistributedMatrixStorage extends CacheUtils implements MatrixStorage, StorageConstants, DistributedStorage<RowColMatrixKey> {
     /** Cache name used for all instances of {@link SparseDistributedMatrixStorage}. */
     private static final String CACHE_NAME = "ML_SPARSE_MATRICES_CONTAINER";
+
     /** Amount of rows in the matrix. */
     private int rows;
+
     /** Amount of columns in the matrix. */
     private int cols;
+
     /** Row or column based storage mode. */
     private int stoMode;
+
     /** Random or sequential access mode. */
     private int acsMode;
+
     /** Matrix uuid. */
     private UUID uuid;
 

http://git-wip-us.apache.org/repos/asf/ignite/blob/34955be3/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/SparseLocalOnHeapMatrixStorage.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/SparseLocalOnHeapMatrixStorage.java b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/SparseLocalOnHeapMatrixStorage.java
index 5e68b6c..5b3c9c8 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/SparseLocalOnHeapMatrixStorage.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/math/impls/storage/matrix/SparseLocalOnHeapMatrixStorage.java
@@ -201,6 +201,7 @@ public class SparseLocalOnHeapMatrixStorage implements MatrixStorage, StorageCon
     }
 
     // TODO: IGNITE-5777, optimize this
+
     /** {@inheritDoc} */
     @Override public double[] data() {
         double[] res = new double[rows * cols];
@@ -214,7 +215,7 @@ public class SparseLocalOnHeapMatrixStorage implements MatrixStorage, StorageCon
                 else
                     res[fstIdx * cols + sndIdx] = val;
 
-        }));
+            }));
 
         return res;
     }