You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by mb...@apache.org on 2016/03/22 18:42:06 UTC

[2/3] incubator-systemml git commit: [SYSTEMML-559] Fix transformdecode over frames w/ ragged recode maps

[SYSTEMML-559] Fix transformdecode over frames w/ ragged recode maps

This patch fixes transformdecode to support frames of recodemaps with
different numbers of distinct items per column, which is the common case
in real scenarios. Furthermore, this also includes a cleanup of
unnecessarily verbose and memory-inefficient list creations.

Project: http://git-wip-us.apache.org/repos/asf/incubator-systemml/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-systemml/commit/ca3bc2e5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-systemml/tree/ca3bc2e5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-systemml/diff/ca3bc2e5

Branch: refs/heads/master
Commit: ca3bc2e55b202620bb7155689076a595d954585d
Parents: 96d17fc
Author: Matthias Boehm <mb...@us.ibm.com>
Authored: Mon Mar 21 21:29:37 2016 -0700
Committer: Matthias Boehm <mb...@us.ibm.com>
Committed: Tue Mar 22 10:37:06 2016 -0700

----------------------------------------------------------------------
 .../sysml/runtime/transform/decode/DecoderComposite.java       | 6 ++----
 .../apache/sysml/runtime/transform/decode/DecoderFactory.java  | 5 ++---
 .../apache/sysml/runtime/transform/decode/DecoderRecode.java   | 2 ++
 3 files changed, 6 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/ca3bc2e5/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderComposite.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderComposite.java b/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderComposite.java
index 627339b..4ad11ed 100644
--- a/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderComposite.java
+++ b/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderComposite.java
@@ -19,7 +19,7 @@
 
 package org.apache.sysml.runtime.transform.decode;
 
-import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 import org.apache.sysml.parser.Expression.ValueType;
@@ -43,9 +43,7 @@ public class DecoderComposite extends Decoder
 	
 	protected DecoderComposite(List<ValueType> schema, Decoder[] decoders) {
 		super(schema);
-		_decoders = new ArrayList<Decoder>(decoders.length);
-		for( Decoder decoder : decoders )
-			_decoders.add(decoder);
+		_decoders = Arrays.asList(decoders);
 	}
 
 	@Override

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/ca3bc2e5/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderFactory.java b/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderFactory.java
index 5331985..e6560c6 100644
--- a/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderFactory.java
+++ b/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderFactory.java
@@ -20,6 +20,7 @@
 package org.apache.sysml.runtime.transform.decode;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 
 import org.apache.sysml.parser.Expression.ValueType;
@@ -54,9 +55,7 @@ public class DecoderFactory
 		
 			//create default schema if unspecified
 			if( schema == null ) {
-				schema = new ArrayList<ValueType>();
-				for( int j=0; j<meta.getNumColumns(); j++ )
-					schema.add(ValueType.STRING);
+				schema = Collections.nCopies(meta.getNumColumns(), ValueType.STRING);
 			}
 			
 			//create decoder 'recode'

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/ca3bc2e5/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderRecode.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderRecode.java b/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderRecode.java
index e4d4f4d..85712f7 100644
--- a/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderRecode.java
+++ b/src/main/java/org/apache/sysml/runtime/transform/decode/DecoderRecode.java
@@ -48,6 +48,8 @@ public class DecoderRecode extends Decoder
 		for( int j=0; j<_rcCols.length; j++ ) {
 			HashMap<Long, Object> map = new HashMap<Long, Object>();
 			for( int i=0; i<meta.getNumRows(); i++ ) {
+				if( meta.get(i, _rcCols[j])==null )
+					break; //reached end of recode map
 				String[] tmp = meta.get(i, _rcCols[j]).toString().split(Lop.DATATYPE_PREFIX);				
 				Object obj = UtilFunctions.stringToObject(schema.get(_rcCols[j]), tmp[0]);
 				map.put(Long.parseLong(tmp[1]), obj);