You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by de...@apache.org on 2017/05/10 19:52:35 UTC

incubator-systemml git commit: [SYSTEMML-1584] Update Script out methods to accept Lists and Seqs

Repository: incubator-systemml
Updated Branches:
  refs/heads/master 0651967b9 -> 9bf4154c4


[SYSTEMML-1584] Update Script out methods to accept Lists and Seqs

Overload Script out methods to accept Java Lists and Scala Seqs.
Add corresponding test cases.

Closes #488.


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

Branch: refs/heads/master
Commit: 9bf4154c4f97424c189411d5d25672dba3cba749
Parents: 0651967
Author: Deron Eriksson <de...@us.ibm.com>
Authored: Wed May 10 12:48:27 2017 -0700
Committer: Deron Eriksson <de...@us.ibm.com>
Committed: Wed May 10 12:48:27 2017 -0700

----------------------------------------------------------------------
 .../org/apache/sysml/api/mlcontext/Script.java  | 25 ++++++++++
 .../integration/mlcontext/MLContextTest.java    | 49 ++++++++++++++++++++
 2 files changed, 74 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/9bf4154c/src/main/java/org/apache/sysml/api/mlcontext/Script.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/mlcontext/Script.java b/src/main/java/org/apache/sysml/api/mlcontext/Script.java
index 27ef5af..7b2b475 100644
--- a/src/main/java/org/apache/sysml/api/mlcontext/Script.java
+++ b/src/main/java/org/apache/sysml/api/mlcontext/Script.java
@@ -386,6 +386,31 @@ public class Script {
 	}
 
 	/**
+	 * Register output variables.
+	 * 
+	 * @param outputNames
+	 *            names of the output variables
+	 * @return {@code this} Script object to allow chaining of methods
+	 */
+	public Script out(scala.collection.Seq<String> outputNames) {
+		List<String> list = JavaConversions.seqAsJavaList(outputNames);
+		outputVariables.addAll(list);
+		return this;
+	}
+
+	/**
+	 * Register output variables.
+	 * 
+	 * @param outputNames
+	 *            names of the output variables
+	 * @return {@code this} Script object to allow chaining of methods
+	 */
+	public Script out(List<String> outputNames) {
+		outputVariables.addAll(outputNames);
+		return this;
+	}
+
+	/**
 	 * Clear the inputs, outputs, and symbol table.
 	 */
 	public void clearIOS() {

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/9bf4154c/src/test/java/org/apache/sysml/test/integration/mlcontext/MLContextTest.java
----------------------------------------------------------------------
diff --git a/src/test/java/org/apache/sysml/test/integration/mlcontext/MLContextTest.java b/src/test/java/org/apache/sysml/test/integration/mlcontext/MLContextTest.java
index 90c9050..c1d44b7 100644
--- a/src/test/java/org/apache/sysml/test/integration/mlcontext/MLContextTest.java
+++ b/src/test/java/org/apache/sysml/test/integration/mlcontext/MLContextTest.java
@@ -38,6 +38,7 @@ import java.io.InputStream;
 import java.net.MalformedURLException;
 import java.net.URL;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -2715,6 +2716,54 @@ public class MLContextTest extends AutomatedTestBase {
 		ml.execute(script);
 	}
 
+	@Test
+	public void testOutputListDML() {
+		System.out.println("MLContextTest - output specified as List DML");
+
+		List<String> outputs = Arrays.asList("x","y");
+		Script script = dml("a=1;x=a+1;y=x+1").out(outputs);
+		MLResults results = ml.execute(script);
+		Assert.assertEquals(2, results.getLong("x"));
+		Assert.assertEquals(3, results.getLong("y"));
+	}
+
+	@Test
+	public void testOutputListPYDML() {
+		System.out.println("MLContextTest - output specified as List PYDML");
+
+		List<String> outputs = Arrays.asList("x","y");
+		Script script = pydml("a=1\nx=a+1\ny=x+1").out(outputs);
+		MLResults results = ml.execute(script);
+		Assert.assertEquals(2, results.getLong("x"));
+		Assert.assertEquals(3, results.getLong("y"));
+	}
+
+	@SuppressWarnings({ "unchecked", "rawtypes" })
+	@Test
+	public void testOutputScalaSeqDML() {
+		System.out.println("MLContextTest - output specified as Scala Seq DML");
+
+		List outputs = Arrays.asList("x","y");
+		Seq seq = JavaConversions.asScalaBuffer(outputs).toSeq();
+		Script script = dml("a=1;x=a+1;y=x+1").out(seq);
+		MLResults results = ml.execute(script);
+		Assert.assertEquals(2, results.getLong("x"));
+		Assert.assertEquals(3, results.getLong("y"));
+	}
+
+	@SuppressWarnings({ "unchecked", "rawtypes" })
+	@Test
+	public void testOutputScalaSeqPYDML() {
+		System.out.println("MLContextTest - output specified as Scala Seq PYDML");
+
+		List outputs = Arrays.asList("x","y");
+		Seq seq = JavaConversions.asScalaBuffer(outputs).toSeq();
+		Script script = pydml("a=1\nx=a+1\ny=x+1").out(seq);
+		MLResults results = ml.execute(script);
+		Assert.assertEquals(2, results.getLong("x"));
+		Assert.assertEquals(3, results.getLong("y"));
+	}
+
 	// NOTE: Uncomment these tests once they work
 
 	// @SuppressWarnings({ "rawtypes", "unchecked" })