From eb6ac80d3c88421dc6c0b82631d75d43b16d6255 Mon Sep 17 00:00:00 2001 From: Kimyen Date: Wed, 21 Feb 2018 12:06:18 -0800 Subject: [PATCH] init --- .Rbuildignore | 2 ++ .gitignore | 5 +++++ DESCRIPTION | 12 ++++++++++++ NAMESPACE | 1 + R/zzz.R | 37 +++++++++++++++++++++++++++++++++++++ 5 files changed, 57 insertions(+) create mode 100644 .Rbuildignore create mode 100644 .gitignore create mode 100644 DESCRIPTION create mode 100644 NAMESPACE create mode 100644 R/zzz.R diff --git a/.Rbuildignore b/.Rbuildignore new file mode 100644 index 0000000..91114bf --- /dev/null +++ b/.Rbuildignore @@ -0,0 +1,2 @@ +^.*\.Rproj$ +^\.Rproj\.user$ diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..f4f606b --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +.Rproj.user +.Rhistory +.RData +.Ruserdata +*.Rproj diff --git a/DESCRIPTION b/DESCRIPTION new file mode 100644 index 0000000..9bf5fc1 --- /dev/null +++ b/DESCRIPTION @@ -0,0 +1,12 @@ +Package: synapserutils +Type: Package +Title: What the Package Does (Title Case) +Version: 0.1.0 +Author: Who wrote it +Maintainer: The package maintainer +Description: More about what it does (maybe more than one line) + Use four spaces when indenting paragraphs within the Description. +License: What license is it under? +Encoding: UTF-8 +LazyData: true +Depends: synapser (>= 0.1.25) diff --git a/NAMESPACE b/NAMESPACE new file mode 100644 index 0000000..d75f824 --- /dev/null +++ b/NAMESPACE @@ -0,0 +1 @@ +exportPattern("^[[:alpha:]]+") diff --git a/R/zzz.R b/R/zzz.R new file mode 100644 index 0000000..452e49f --- /dev/null +++ b/R/zzz.R @@ -0,0 +1,37 @@ +.onLoad <- function(libname, pkgname) { + .defineUtilFunctions() +} + +.getSynapseUtilsFunctionInfo <- function(rootDir) { + pyImport("synapseutils") + pyExec("info = functionInfo.functionInfo(synapseutils)") + functionInfo <- pyGet("info") + result <- lapply(X = functionInfo, function(x) { + list(name = x$name, synName = x$name, functionContainerName = "synapseutils", args = x$args, doc = x$doc, title = x$name) + }) +} + +.defineFunction <- function(synName, pyName, functionContainerName) { + force(synName) + force(pyName) + force(functionContainerName) + assign(sprintf(".%s", synName), function(...) { + functionContainer <- pyGet(functionContainerName, simplify = FALSE) + argsAndKwArgs <- .determineArgsAndKwArgs(...) + functionAndArgs <- append(list(functionContainer, pyName), argsAndKwArgs$args) + .cleanUpStackTrace(pyCall, list("gateway.invoke", args = functionAndArgs, kwargs = argsAndKwArgs$kwargs, simplify = F)) + }) + setGeneric( + name = synName, + def = function(...) { + do.call(sprintf(".%s", synName), args = list(pyGet("syn"), ...)) + } + ) +} + +.defineUtilFunctions <- function() { + functionInfo <- .getSynapseUtilsFunctionInfo(system.file(package="synapser")) + for (f in functionInfo) { + .defineFunction(f$synName, f$name, f$functionContainerName) + } +}