Skip to content

Commit

Permalink
Added helper functions for Renjin compatibility layer
Browse files Browse the repository at this point in the history
  • Loading branch information
mandar2812 committed Dec 12, 2016
1 parent d751dd4 commit d2d62f2
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 9 deletions.
4 changes: 2 additions & 2 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ val baseSettings = Seq(

lazy val commonSettings = Seq(
libraryDependencies ++= (
baseDependencies ++ apacheSpark ++
baseDependencies ++ apacheSparkDependency ++
replDependency ++ loggingDependency ++
linearAlgebraDependencies ++ chartsDependencies ++
tinkerpopDependency ++ notebookInterfaceDependency ++
openMLDependency ++ rejinDependency)
openMLDependency ++ rejinDependency ++ rPackages)
)

lazy val pipes = (project in file("dynaml-pipes")).settings(baseSettings:_*)
Expand Down
36 changes: 31 additions & 5 deletions conf/DynaMLInit.scala
Original file line number Diff line number Diff line change
@@ -1,21 +1,47 @@
//External Imports
/*
* External Imports
* */

//Import breeze for linear algebra
import breeze.linalg._
//Apache Spark for big data support
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
//Load Wisp-Highcharts for plotting
import com.quantifind.charts.Highcharts._
//Import spire implicits for definition of
//fields, algebraic structures on primitive types
import spire.implicits._
//DynaML imports
/*
* DynaML imports
* */
import io.github.mandar2812.dynaml.analysis.VectorField
//The pipes API
import io.github.mandar2812.dynaml.pipes._
import io.github.mandar2812.dynaml.DynaMLPipe
import io.github.mandar2812.dynaml.DynaMLPipe._
//Load the DynaML model api members
import io.github.mandar2812.dynaml.models._
import io.github.mandar2812.dynaml.models.neuralnets._
import io.github.mandar2812.dynaml.models.svm._
import io.github.mandar2812.dynaml.models.lm._
//Utility functions
import io.github.mandar2812.dynaml.utils
//Kernels for GP,SVM models
import io.github.mandar2812.dynaml.kernels._
//Shell examples
import io.github.mandar2812.dynaml.examples._
import io.github.mandar2812.dynaml.pipes._
import io.github.mandar2812.dynaml.DynaMLPipe
import io.github.mandar2812.dynaml.DynaMLPipe._
//Load neural net primitives
import io.github.mandar2812.dynaml.models.neuralnets.TransferFunctions._
//The probability API
import io.github.mandar2812.dynaml.probability._
//OpenML support
import io.github.mandar2812.dynaml.openml.OpenML
//Renjin imports
import javax.script._
import org.renjin.script._
import org.renjin.sexp._
val r_engine_factory = new RenjinScriptEngineFactory()
implicit val renjin = r_engine_factory.getScriptEngine()
val r: String => SEXP = (s: String) => renjin.eval(s).asInstanceOf[SEXP]
val R: java.io.File => SEXP = (f: java.io.File) => renjin.eval(f).asInstanceOf[SEXP]
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,10 @@ import io.github.mandar2812.dynaml.models.ParameterizedLearner
import io.github.mandar2812.dynaml.models.gp.AbstractGPRegressionModel
import io.github.mandar2812.dynaml.optimization.{CoupledSimulatedAnnealing, GPMLOptimizer, GloballyOptWithGrad, GridSearch}
import io.github.mandar2812.dynaml.pipes.{DataPipe, ReversibleScaler, Scaler, StreamDataPipe}
import io.github.mandar2812.dynaml.utils.{GaussianScaler, MinMaxScaler, MVGaussianScaler}
import io.github.mandar2812.dynaml.utils.{GaussianScaler, MVGaussianScaler, MinMaxScaler}
import org.apache.log4j.Logger
import org.renjin.script.RenjinScriptEngine
import org.renjin.sexp._

/**
* @author mandar2812 datum 3/2/16.
Expand All @@ -52,6 +54,16 @@ object DynaMLPipe {
* */
val fileToStream = DataPipe(utils.textFileToStream _)

def csvToRDF(df: String, sep: Char)(implicit renjin: RenjinScriptEngine): DataPipe[String, ListVector] =
DataPipe((file: String) => renjin
.eval(df+""" <- read.csv(""""+file+"""", sep = '"""+sep+"""')""")
.asInstanceOf[ListVector])

def rdfToGLM(modelName: String, y: String, xs: Array[String])(implicit renjin: RenjinScriptEngine)
: DataPipe[String, ListVector] = DataPipe((df: String) => renjin
.eval(modelName+" <- lm("+y+" ~ "+xs.mkString(" + ")+", "+df+")")
.asInstanceOf[ListVector])

/**
* Writes a [[Stream]] of [[String]] to
* a file.
Expand Down
7 changes: 6 additions & 1 deletion project/Dependencies.scala
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@ object Dependencies {
"com.github.scopt" % "scopt_2.11" % "3.5.0"
)

val apacheSpark = Seq(
val apacheSparkDependency = Seq(
"javax.servlet" % "javax.servlet-api" % "3.1.0" % "test",
"org.apache.spark" % "spark-core_2.11" % "2.0.0" % "compile",
"org.apache.spark" % "spark-mllib_2.11" % "2.0.0" % "compile"
Expand Down Expand Up @@ -56,5 +56,10 @@ object Dependencies {
"org.renjin" % "renjin-script-engine" % "0.8.2297"
)

val rPackages = Seq(
"org.renjin.cran" % "plyr" % "1.8.3-renjin-10",
"org.renjin.cran" % "abc" % "2.1-b274"
)

val notebookInterfaceDependency = Seq()
}

0 comments on commit d2d62f2

Please sign in to comment.