Class AbstractRClient

java.lang.Object
ubic.basecode.util.r.AbstractRClient
All Implemented Interfaces:
RClient
Direct Known Subclasses:
JRIClient, RServeClient

public abstract class AbstractRClient extends Object implements RClient
Base class for RClients
Author:
Paul
  • Field Details

    • log

      protected static org.slf4j.Logger log
  • Constructor Details

    • AbstractRClient

      public AbstractRClient()
  • Method Details

    • variableIdentityNumber

      public static String variableIdentityNumber(Object ob)
      Parameters:
      ob -
      Returns:
    • assignFactor

      public String assignFactor(List<String> strings)
      Specified by:
      assignFactor in interface RClient
      Parameters:
      strings -
      Returns:
      the name of the factor generated.
    • assignFactor

      public String assignFactor(String factorName, List<String> list)
      Specified by:
      assignFactor in interface RClient
      Parameters:
      factorName -
      list -
      Returns:
      the factor name
    • assignMatrix

      public String assignMatrix(double[][] matrix)
      Description copied from interface: RClient
      Assign a 2-d matrix.
      Specified by:
      assignMatrix in interface RClient
      Parameters:
      matrix -
      Returns:
      the name of the variable by which the R matrix can be referred.
    • assignMatrix

      public String assignMatrix(DoubleMatrix<?,?> matrix)
      Description copied from interface: RClient
      Assign a 2-d matrix.
      Specified by:
      assignMatrix in interface RClient
      Parameters:
      matrix -
      Returns:
      the name of the variable by which the R matrix can be referred.
    • assignMatrix

      public String assignMatrix(DoubleMatrix<?,?> matrix, org.apache.commons.collections4.Transformer rowNameExtractor)
      Description copied from interface: RClient
      Assign a 2-d matrix.
      Specified by:
      assignMatrix in interface RClient
      Parameters:
      matrix -
      rowNameExtractor -
      Returns:
      the name of the variable by which the R matrix can be referred.
    • assignStringList

      public String assignStringList(List<?> strings)
      Description copied from interface: RClient
      Define a variable corresponding to a character array in the R context, given a List of Strings.
      Specified by:
      assignStringList in interface RClient
      Parameters:
      strings - , which will be stringified if they are not strings.
      Returns:
      the name of the variable in the R context.
    • booleanDoubleArrayEval

      public boolean booleanDoubleArrayEval(String command, String argName, double[] arg)
      Description copied from interface: RClient
      Run a command that takes a double array as an argument and returns a boolean.
      Specified by:
      booleanDoubleArrayEval in interface RClient
      Parameters:
      command -
      argName -
      arg -
      Returns:
    • dataFrame

      public String dataFrame(ObjectMatrix<String,String,Object> matrix)
      Description copied from interface: RClient
      Convert an object matrix into an R data frame. Columns that look numeric are treated as numbers. Booleans and Strings are treated as factors.
      Specified by:
      dataFrame in interface RClient
      Parameters:
      matrix -
      Returns:
      variable name in R-land.
    • dataFrameEval

      public ObjectMatrix<String,String,Object> dataFrameEval(String command)
      Description copied from interface: RClient
      Evaluate a command that returns a dataFrame
      Specified by:
      dataFrameEval in interface RClient
      Parameters:
      command -
      Returns:
      an ObjectMatrix representation of the data frame.
    • disconnect

      public abstract void disconnect()
    • doubleArrayDoubleArrayEval

      public double[] doubleArrayDoubleArrayEval(String command, String argName, double[] arg)
      Description copied from interface: RClient
      Run a command that has a single double array parameter, and returns a double array.
      Specified by:
      doubleArrayDoubleArrayEval in interface RClient
      Parameters:
      command -
      argName -
      arg -
      Returns:
    • doubleArrayEval

      public double[] doubleArrayEval(String command)
      Description copied from interface: RClient
      Run a command that returns a double array with no arguments.
      Specified by:
      doubleArrayEval in interface RClient
      Parameters:
      command -
      Returns:
    • doubleArrayTwoDoubleArrayEval

      public double[] doubleArrayTwoDoubleArrayEval(String command, String argName, double[] arg, String argName2, double[] arg2)
      Description copied from interface: RClient
      Run a command that takes two double array arguments and returns a double array.
      Specified by:
      doubleArrayTwoDoubleArrayEval in interface RClient
      Parameters:
      command -
      argName -
      arg -
      argName2 -
      arg2 -
      Returns:
    • doubleTwoDoubleArrayEval

      public double doubleTwoDoubleArrayEval(String command, String argName, double[] arg, String argName2, double[] arg2)
      Description copied from interface: RClient
      Run a command that takes two double arrays as arguments and returns a double value.
      Specified by:
      doubleTwoDoubleArrayEval in interface RClient
      Parameters:
      command -
      argName -
      arg -
      argName2 -
      arg2 -
      Returns:
    • intArrayEval

      public int[] intArrayEval(String command)
      Specified by:
      intArrayEval in interface RClient
    • linearModel

      public LinearModelSummary linearModel(double[] data, Map<String,List<?>> factors)
      Description copied from interface: RClient
      Lower level access to linear model. Fairly simple. Factors are assigned in turn.
      Specified by:
      linearModel in interface RClient
      Parameters:
      data -
      factors - Map of factorNames to factors (which can be expressed as Strings or Doubles). If you care about the order the factors are introduced into the model, use a LinkedHashMap.
    • linearModel

      public LinearModelSummary linearModel(double[] data, ObjectMatrix<String,String,Object> d)
      Specified by:
      linearModel in interface RClient
      Parameters:
      data -
      d - which will be converted to factors or continuous covariates depending on whether the columns are booleans, strings or numerical. Names of factors are the column names of the design matrix, and the rows are assumed to be in the same order as the data.
      Returns:
    • listEval

      public List<?> listEval(Class<?> listEntryType, String command)
      FIXME only partly implemented, possibly not going to stay.
      Specified by:
      listEval in interface RClient
      Parameters:
      listEntryType - a hint about what type of object you want the list to contain. If you set this to be null, the method will try to guess, but caution is advised.
      command - R command
      Returns:
    • loadLibrary

      public boolean loadLibrary(String libraryName)
      Specified by:
      loadLibrary in interface RClient
    • oneWayAnova

      public OneWayAnovaResult oneWayAnova(double[] data, List<String> factor)
      Description copied from interface: RClient
      Lower-level access to a simple one-way ANOVA
      Specified by:
      oneWayAnova in interface RClient
      Parameters:
      data -
      factor -
      Returns:
    • oneWayAnovaEval

      public Map<String,OneWayAnovaResult> oneWayAnovaEval(String command)
      Specified by:
      oneWayAnovaEval in interface RClient
    • remove

      public void remove(String variableName)
      Description copied from interface: RClient
      Remove a variable from the R namespace
      Specified by:
      remove in interface RClient
      Parameters:
      variableName -
    • rowApplyLinearModel

      public Map<String,LinearModelSummary> rowApplyLinearModel(String dataMatrixVarName, String modelFormula, String[] factorNames)
      Description copied from interface: RClient
      Run lm with anova on all the rows of a matrix
      Specified by:
      rowApplyLinearModel in interface RClient
      Parameters:
      dataMatrixVarName - from an assignment of a matrix
      modelFormula - and other options that will be passed as the argument to 'lm(...)', that refers to factor variables that have already been assigned, using x as the outcome. Example might be x ~ f1 + f2.
      Returns:
      map of row identifiers to populated LinearModelSummaries.
    • stringEval

      public String stringEval(String command)
      Description copied from interface: RClient
      Evaluate any command and return a string
      Specified by:
      stringEval in interface RClient
      Parameters:
      command -
      Returns:
      string
    • stringListEval

      public List<String> stringListEval(String command)
      Specified by:
      stringListEval in interface RClient
    • twoWayAnova

      public TwoWayAnovaResult twoWayAnova(double[] data, List<String> factor1, List<String> factor2, boolean includeInteraction)
      Description copied from interface: RClient
      Lower-level access to two-way ANOVA
      Specified by:
      twoWayAnova in interface RClient
      Parameters:
      data -
      factor1 -
      factor2 -
      includeInteraction -
      Returns:
      result with interaction term information null if includeInteraction = false
    • twoWayAnovaEval

      public Map<String,TwoWayAnovaResult> twoWayAnovaEval(String command, boolean withInteractions)
      Description copied from interface: RClient
      Evaluates two way anova commands of the form

      apply(matrix,1,function(x){anova(aov(x~farea+ftreat))}

      and

      apply(matrix,1,function(x){anova(aov(x~farea+ftreat+farea*ftreat))}

      where farea and ftreat have already been transposed and had factor called on them.
      Specified by:
      twoWayAnovaEval in interface RClient
      Parameters:
      command -
      Returns:
    • loadScript

      protected void loadScript(InputStream is)
      There is a pretty annoying limitation of this. The file must contain only one statement. You can get around this by using c(xinvalid input: '<'-1,xinvalid input: '<'-2). See testScript.R
      Parameters:
      is -