You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@systemml.apache.org by du...@apache.org on 2016/05/09 17:37:35 UTC

incubator-systemml git commit: [SYSTEMML-508] Extend "executeScript" In MLContext To Accept PyDML.

Repository: incubator-systemml
Updated Branches:
  refs/heads/master 5bde577a2 -> a1f1cf5a1


[SYSTEMML-508] Extend "executeScript" In MLContext To Accept PyDML.

This adds the ability to run PyDML via `executeScript` from both Python and Scala.

NOTE:  This is simply a quick addition, as `MLContext` is receiving a major overhaul that will overwrite all of this.

Closes #139.


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

Branch: refs/heads/master
Commit: a1f1cf5a1774ada129a44fc8360581915d133f85
Parents: 5bde577
Author: Mike Dusenberry <mw...@us.ibm.com>
Authored: Mon May 9 10:37:21 2016 -0700
Committer: Mike Dusenberry <mw...@us.ibm.com>
Committed: Mon May 9 10:37:21 2016 -0700

----------------------------------------------------------------------
 .../java/org/apache/sysml/api/MLContext.java    | 41 +++++++++++++++++---
 .../org/apache/sysml/api/python/SystemML.py     |  4 +-
 2 files changed, 38 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/a1f1cf5a/src/main/java/org/apache/sysml/api/MLContext.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/MLContext.java b/src/main/java/org/apache/sysml/api/MLContext.java
index 41c5757..2600c35 100644
--- a/src/main/java/org/apache/sysml/api/MLContext.java
+++ b/src/main/java/org/apache/sysml/api/MLContext.java
@@ -1118,7 +1118,8 @@ public class MLContext {
 	}
 	
 	/**
-	 * Experimental API. Not supported in Python MLContext API.
+	 * Execute a script stored in a string.
+	 *
 	 * @param dmlScript
 	 * @return
 	 * @throws IOException
@@ -1127,12 +1128,22 @@ public class MLContext {
 	 */
 	public MLOutput executeScript(String dmlScript)
 			throws IOException, DMLException {
-		return compileAndExecuteScript(dmlScript, null, false, false, false, null);
+		return executeScript(dmlScript, false);
 	}
-	
+
+	public MLOutput executeScript(String dmlScript, boolean isPyDML)
+			throws IOException, DMLException {
+		return executeScript(dmlScript, isPyDML, null);
+	}
+
 	public MLOutput executeScript(String dmlScript, String configFilePath)
 			throws IOException, DMLException {
-		return compileAndExecuteScript(dmlScript, null, false, false, false, configFilePath);
+		return executeScript(dmlScript, false, configFilePath);
+	}
+
+	public MLOutput executeScript(String dmlScript, boolean isPyDML, String configFilePath)
+			throws IOException, DMLException {
+		return compileAndExecuteScript(dmlScript, null, false, false, isPyDML, configFilePath);
 	}
 
 	public MLOutput executeScript(String dmlScript, scala.collection.immutable.Map<String, String> namedArgs)
@@ -1140,18 +1151,38 @@ public class MLContext {
 		return executeScript(dmlScript, new HashMap<String, String>(scala.collection.JavaConversions.mapAsJavaMap(namedArgs)), null);
 	}
 
+	public MLOutput executeScript(String dmlScript, scala.collection.immutable.Map<String, String> namedArgs, boolean isPyDML)
+			throws IOException, DMLException {
+		return executeScript(dmlScript, new HashMap<String, String>(scala.collection.JavaConversions.mapAsJavaMap(namedArgs)), isPyDML, null);
+	}
+
 	public MLOutput executeScript(String dmlScript, scala.collection.immutable.Map<String, String> namedArgs, String configFilePath)
 			throws IOException, DMLException {
 		return executeScript(dmlScript, new HashMap<String, String>(scala.collection.JavaConversions.mapAsJavaMap(namedArgs)), configFilePath);
 	}
 
+	public MLOutput executeScript(String dmlScript, scala.collection.immutable.Map<String, String> namedArgs, boolean isPyDML, String configFilePath)
+			throws IOException, DMLException {
+		return executeScript(dmlScript, new HashMap<String, String>(scala.collection.JavaConversions.mapAsJavaMap(namedArgs)), isPyDML, configFilePath);
+	}
+
 	public MLOutput executeScript(String dmlScript, Map<String, String> namedArgs)
 			throws IOException, DMLException {
 		return executeScript(dmlScript, namedArgs, null);
 	}
 
+	public MLOutput executeScript(String dmlScript, Map<String, String> namedArgs, boolean isPyDML)
+			throws IOException, DMLException {
+		return executeScript(dmlScript, namedArgs, isPyDML, null);
+	}
+
 	public MLOutput executeScript(String dmlScript, Map<String, String> namedArgs, String configFilePath)
 			throws IOException, DMLException {
+		return executeScript(dmlScript, namedArgs, false, configFilePath);
+	}
+
+	public MLOutput executeScript(String dmlScript, Map<String, String> namedArgs, boolean isPyDML, String configFilePath)
+			throws IOException, DMLException {
 		String [] args = new String[namedArgs.size()];
 		int i = 0;
 		for(Entry<String, String> entry : namedArgs.entrySet()) {
@@ -1161,7 +1192,7 @@ public class MLContext {
 				args[i] = entry.getKey() + "=" + entry.getValue();
 			i++;
 		}
-		return compileAndExecuteScript(dmlScript, args, false, true, false, configFilePath);
+		return compileAndExecuteScript(dmlScript, args, false, true, isPyDML, configFilePath);
 	}
 
 	private void checkIfRegisteringInputAllowed() throws DMLRuntimeException {

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/a1f1cf5a/src/main/java/org/apache/sysml/api/python/SystemML.py
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/sysml/api/python/SystemML.py b/src/main/java/org/apache/sysml/api/python/SystemML.py
index 361d533..7b834c5 100644
--- a/src/main/java/org/apache/sysml/api/python/SystemML.py
+++ b/src/main/java/org/apache/sysml/api/python/SystemML.py
@@ -100,7 +100,7 @@ class MLContext(object):
         except Py4JJavaError:
             traceback.print_exc()
 
-    def executeScript(self, dmlScript, nargs=None, outputs=None, configFilePath=None):
+    def executeScript(self, dmlScript, nargs=None, outputs=None, isPyDML=False, configFilePath=None):
         """
         Executes the script in spark-mode by passing the arguments to the
         MLContext java class.
@@ -125,7 +125,7 @@ class MLContext(object):
                     self.registerOutput(out)
 
             # Execute script
-            jml_out = self.ml.executeScript(dmlScript, nargs, configFilePath)
+            jml_out = self.ml.executeScript(dmlScript, nargs, isPyDML, configFilePath)
             ml_out = MLOutput(jml_out, self.sc)
             return ml_out
         except Py4JJavaError: