Repository: incubator-systemml
Updated Branches:
  refs/heads/master 17aac2108 -> 71733fd1f


[SYSTEMML-688] Update dml file packaging in artifacts

Move dml to scripts dir for main, in-memory, sources, and standalone jars.
Include algorithms, datagen, and utils directories.
Exclude obsolete algorithms, perftest, and staging.
Update distrib.xml and standalone.xml to reflect similar packaging.
Update ScriptUtils.scala and LogisticRegression.scala for these changes.

Closes #167.


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

Branch: refs/heads/master
Commit: 71733fd1fb13d1c9ddb7c27da6f935547a3bc8ef
Parents: 17aac21
Author: Deron Eriksson <[email protected]>
Authored: Thu May 19 15:12:55 2016 -0700
Committer: Deron Eriksson <[email protected]>
Committed: Thu May 19 15:12:55 2016 -0700

----------------------------------------------------------------------
 pom.xml                                         | 27 +++++---
 src/assembly/distrib.xml                        | 68 +++---------------
 src/assembly/standalone.xml                     | 72 ++++----------------
 .../sysml/api/ml/LogisticRegression.scala       |  5 +-
 .../org/apache/sysml/api/ml/ScriptsUtils.scala  | 15 ++--
 5 files changed, 51 insertions(+), 136 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/71733fd1/pom.xml
----------------------------------------------------------------------
diff --git a/pom.xml b/pom.xml
index b66fd01..8f7bc4e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -73,15 +73,24 @@
        </properties>
 
        <build>
-       
-               <resources>
-               <resource>
-                       <directory>scripts/algorithms</directory>
-                       <includes>
-                         <include>**/*.dml</include>
-                       </includes>
-               </resource>
-       </resources>
+
+       <!-- Adds scripts to main jar, in-memory jar, sources jar, and 
standalone jar -->
+       <resources>
+               <resource>
+                       <directory>scripts</directory>
+                       <excludes>
+                               <exclude>algorithms/obsolete/*</exclude>
+                               <exclude>algorithms/obsolete</exclude>
+                               <exclude>perftest/*</exclude>
+                               <exclude>perftest</exclude>
+                               <exclude>staging/**/*</exclude>
+                               <exclude>staging</exclude>
+                               <!-- <exclude>*.sh</exclude> --> <!-- applies 
to sparkDML.sh -->
+                       </excludes>
+                       <targetPath>scripts</targetPath>
+               </resource>
+       </resources>
+
                <plugins>
 
                        <plugin>

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/71733fd1/src/assembly/distrib.xml
----------------------------------------------------------------------
diff --git a/src/assembly/distrib.xml b/src/assembly/distrib.xml
index b0d3a3e..67a476a 100644
--- a/src/assembly/distrib.xml
+++ b/src/assembly/distrib.xml
@@ -42,64 +42,16 @@
 
                <fileSet>
                        <directory>${basedir}/scripts</directory>
-                       <includes>
-                               <include>sparkDML.sh</include>
-                       </includes>
-                       <outputDirectory>.</outputDirectory>
-               </fileSet>
-
-               <fileSet>
-                       <directory>${basedir}/scripts/algorithms</directory>
-                       <includes>
-                               <include>ALS_predict.dml</include>
-                               <include>ALS_topk_predict.dml</include>
-                               <include>ALS.dml</include>
-                               <include>apply-transform.dml</include>
-                               <include>bivar-stats.dml</include>
-                               <include>Cox-predict.dml</include>
-                               <include>Cox.dml</include>
-                               <include>decision-tree-predict.dml</include>
-                               <include>decision-tree.dml</include>
-                               <include>GLM-predict.dml</include>
-                               <include>GLM.dml</include>
-                               <include>KM.dml</include>
-                               <include>Kmeans-predict.dml</include>
-                               <include>Kmeans.dml</include>
-                               <include>l2-svm-predict.dml</include>
-                               <include>l2-svm.dml</include>
-                               <include>LinearRegCG.dml</include>
-                               <include>LinearRegDS.dml</include>
-                               <include>m-svm-predict.dml</include>
-                               <include>m-svm.dml</include>
-                               <include>MultiLogReg.dml</include>
-                               <include>naive-bayes-predict.dml</include>
-                               <include>naive-bayes.dml</include>
-                               <include>PCA.dml</include>
-                               <include>random-forest-predict.dml</include>
-                               <include>random-forest.dml</include>
-                               <include>StepGLM.dml</include>
-                               <include>StepLinearRegDS.dml</include>
-                               <include>stratstats.dml</include>
-                               <include>transform.dml</include>
-                               <include>Univar-Stats.dml</include>
-                       </includes>
-                       <outputDirectory>./algorithms</outputDirectory>
-               </fileSet>
-
-               <fileSet>
-                       <directory>${basedir}/scripts/utils</directory>
-                       <includes>
-                               <include>cbind.dml</include>
-                               <include>csv2bin.dml</include>
-                               <include>head.dml</include>
-                               <include>project.dml</include>
-                               <include>rowIndexMax.dml</include>
-                               <include>sample.dml</include>
-                               <include>splitXY-dummy.dml</include>
-                               <include>splitXY.dml</include>
-                               <include>write.dml</include>
-                       </includes>
-                       <outputDirectory>./algorithms/utils</outputDirectory>
+                       <excludes>
+                               <exclude>algorithms/obsolete/*</exclude>
+                               <exclude>algorithms/obsolete</exclude>
+                               <exclude>perftest/*</exclude>
+                               <exclude>perftest</exclude>
+                               <exclude>staging/**/*</exclude>
+                               <exclude>staging</exclude>
+                               <!-- <exclude>*.sh</exclude> --> <!-- applies 
to sparkDML.sh -->
+                       </excludes>
+                       <outputDirectory>scripts</outputDirectory>
                </fileSet>
 
                <fileSet>

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/71733fd1/src/assembly/standalone.xml
----------------------------------------------------------------------
diff --git a/src/assembly/standalone.xml b/src/assembly/standalone.xml
index 01463a7..8c88cec 100644
--- a/src/assembly/standalone.xml
+++ b/src/assembly/standalone.xml
@@ -20,7 +20,7 @@
        
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2";
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
        
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.2
 http://maven.apache.org/xsd/assembly-1.1.2.xsd";>
-       <!-- Assembly file for the "standalone" SystemML release for running on 
a standalone machine. -->
+       <!-- Assembly file for the "standalone" tar.gz and zip SystemML 
releases for running on a standalone machine. -->
        <id>standalone</id>
 
        <formats>
@@ -33,65 +33,17 @@
 
        <fileSets>
                <fileSet>
-                       <directory>${basedir}/scripts/algorithms</directory>
-                       <includes>
-                               <include>ALS_predict.dml</include>
-                               <include>ALS_topk_predict.dml</include>
-                               <include>ALS.dml</include>
-                               <include>apply-transform.dml</include>
-                               <include>bivar-stats.dml</include>
-                               <include>Cox-predict.dml</include>
-                               <include>Cox.dml</include>
-                               <include>decision-tree-predict.dml</include>
-                               <include>decision-tree.dml</include>
-                               <include>GLM-predict.dml</include>
-                               <include>GLM.dml</include>
-                               <include>KM.dml</include>
-                               <include>Kmeans-predict.dml</include>
-                               <include>Kmeans.dml</include>
-                               <include>l2-svm-predict.dml</include>
-                               <include>l2-svm.dml</include>
-                               <include>LinearRegCG.dml</include>
-                               <include>LinearRegDS.dml</include>
-                               <include>m-svm-predict.dml</include>
-                               <include>m-svm.dml</include>
-                               <include>MultiLogReg.dml</include>
-                               <include>naive-bayes-predict.dml</include>
-                               <include>naive-bayes.dml</include>
-                               <include>PCA.dml</include>
-                               <include>random-forest-predict.dml</include>
-                               <include>random-forest.dml</include>
-                               <include>StepGLM.dml</include>
-                               <include>StepLinearRegDS.dml</include>
-                               <include>stratstats.dml</include>
-                               <include>transform.dml</include>
-                               <include>Univar-Stats.dml</include>
-                       </includes>
-                       <outputDirectory>./scripts/algorithms</outputDirectory>
-               </fileSet>
-
-               <fileSet>
-                       <directory>${basedir}/scripts/datagen</directory>
-                       <includes>
-                               <include>genLinearRegressionData.dml</include>
-                       </includes>
-                       <outputDirectory>./scripts/datagen</outputDirectory>
-               </fileSet>
-
-               <fileSet>
-                       <directory>${basedir}/scripts/utils</directory>
-                       <includes>
-                               <include>cbind.dml</include>
-                               <include>csv2bin.dml</include>
-                               <include>head.dml</include>
-                               <include>project.dml</include>
-                               <include>rowIndexMax.dml</include>
-                               <include>sample.dml</include>
-                               <include>splitXY-dummy.dml</include>
-                               <include>splitXY.dml</include>
-                               <include>write.dml</include>
-                       </includes>
-                       <outputDirectory>./scripts/utils</outputDirectory>
+                       <directory>${basedir}/scripts</directory>
+                       <excludes>
+                               <exclude>algorithms/obsolete/*</exclude>
+                               <exclude>algorithms/obsolete</exclude>
+                               <exclude>perftest/*</exclude>
+                               <exclude>perftest</exclude>
+                               <exclude>staging/**/*</exclude>
+                               <exclude>staging</exclude>
+                               <!-- <exclude>*.sh</exclude> --> <!-- applies 
to sparkDML.sh -->
+                       </excludes>
+                       <outputDirectory>scripts</outputDirectory>
                </fileSet>
 
                <fileSet>

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/71733fd1/src/main/scala/org/apache/sysml/api/ml/LogisticRegression.scala
----------------------------------------------------------------------
diff --git a/src/main/scala/org/apache/sysml/api/ml/LogisticRegression.scala 
b/src/main/scala/org/apache/sysml/api/ml/LogisticRegression.scala
index 2583088..2fabde1 100644
--- a/src/main/scala/org/apache/sysml/api/ml/LogisticRegression.scala
+++ b/src/main/scala/org/apache/sysml/api/ml/LogisticRegression.scala
@@ -19,6 +19,7 @@
 
 package org.apache.sysml.api.ml
 
+import java.io.File
 import org.apache.sysml.api.{ MLContext, MLOutput }
 import org.apache.sysml.runtime.matrix.MatrixCharacteristics
 import org.apache.sysml.runtime.instructions.spark.utils.{ 
RDDConverterUtilsExt => RDDConverterUtils }
@@ -60,7 +61,7 @@ trait HasRegParam extends Params {
   final def getRegParam: Double = $(regParam)
 }
 object LogisticRegression {
-  final val scriptPath = "MultiLogReg.dml"
+  final val scriptPath = "scripts" + File.separator + "algorithms" + 
File.separator + "MultiLogReg.dml"
 }
 
 /**
@@ -107,7 +108,7 @@ class LogisticRegression(override val uid: String, val sc: 
SparkContext) extends
   }
 }
 object LogisticRegressionModel {
-  final val scriptPath = "GLM-predict.dml"
+  final val scriptPath = "scripts" + File.separator + "algorithms" + 
File.separator + "GLM-predict.dml"
 }
 
 /**

http://git-wip-us.apache.org/repos/asf/incubator-systemml/blob/71733fd1/src/main/scala/org/apache/sysml/api/ml/ScriptsUtils.scala
----------------------------------------------------------------------
diff --git a/src/main/scala/org/apache/sysml/api/ml/ScriptsUtils.scala 
b/src/main/scala/org/apache/sysml/api/ml/ScriptsUtils.scala
index 0512287..fdf682d 100644
--- a/src/main/scala/org/apache/sysml/api/ml/ScriptsUtils.scala
+++ b/src/main/scala/org/apache/sysml/api/ml/ScriptsUtils.scala
@@ -37,23 +37,24 @@ object ScriptsUtils {
   /*
    * Internal function to get dml path
    */
-  private[sysml] def resolvePath(filename: String): String = {
+  private[sysml] def resolvePath(scriptPath: String): String = {
     import java.io.File
-    ScriptsUtils.systemmlHome + File.separator + "algorithms" + File.separator 
+ filename
+    ScriptsUtils.systemmlHome + File.separator + scriptPath
   }
 
-    /*
+  /*
    * Internal function to get dml string from jar
    */
-  private[sysml] def getDMLScript(algorithmFileName: String): String = {
+  private[sysml] def getDMLScript(scriptPath: String): String = {
     var reader: BufferedReader = null
     val out = new StringBuilder()
     try {
       val in = {
         if (systemmlHome == null || systemmlHome.equals("")) {
-          
classOf[LogisticRegression].getClassLoader().getResourceAsStream(algorithmFileName)
+          val resourcePath = "/" + scriptPath.replace("\\", "/")
+          classOf[LogisticRegression].getResourceAsStream(resourcePath)
         } else {
-          new java.io.FileInputStream(resolvePath(algorithmFileName))
+          new java.io.FileInputStream(resolvePath(scriptPath))
         }
       }
       var reader = new BufferedReader(new InputStreamReader(in))
@@ -65,7 +66,7 @@ object ScriptsUtils {
       }
     } catch {
       case ex: Exception =>
-        throw new DMLRuntimeException("Cannot read the algorithm file " + 
algorithmFileName, ex)
+        throw new DMLRuntimeException("Cannot read the script file " + 
scriptPath, ex)
     } finally {
       if (reader != null)
         reader.close();

Reply via email to