Class RTransformer

  • All Implemented Interfaces:
    adams.core.AdditionalInformationHandler, adams.core.CleanUpHandler, adams.core.Destroyable, adams.core.GlobalInfoSupporter, adams.core.io.EncodingSupporter, adams.core.logging.LoggingLevelHandler, adams.core.logging.LoggingSupporter, adams.core.option.OptionHandler, adams.core.QuickInfoSupporter, adams.core.ShallowCopySupporter<adams.flow.core.Actor>, adams.core.SizeOfHandler, adams.core.Stoppable, adams.core.StoppableWithFeedback, adams.core.VariablesInspectionHandler, adams.event.VariableChangeListener, adams.flow.core.Actor, adams.flow.core.ErrorHandler, adams.flow.core.InputConsumer, adams.flow.core.OutputProducer, Serializable, Comparable

    public class RTransformer
    extends adams.flow.transformer.AbstractTransformer
    implements adams.core.io.EncodingSupporter
    Carries out an r command on the token passed in. The input can be accessed via 'X'.
    Variables are supported as well, e.g. pow(X,@{exp}) with '@{exp}' being a variable available at execution time.
    Returns a result from R.

    Input/output:
    - accepts:
       java.lang.Integer
       java.lang.String
       java.lang.Double
       java.lang.Double[]
       java.lang.Double[][]
       adams.data.spreadsheet.SpreadSheet
    - generates:
       java.lang.Integer


    -logging-level <OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST> (property: loggingLevel)
        The logging level for outputting errors and debugging output.
        default: WARNING
     
    -name <java.lang.String> (property: name)
        The name of the actor.
        default: RTransformer
     
    -annotation <adams.core.base.BaseAnnotation> (property: annotations)
        The annotations to attach to this actor.
        default:
     
    -skip <boolean> (property: skip)
        If set to true, transformation is skipped and the input token is just forwarded
        as it is.
        default: false
     
    -stop-flow-on-error <boolean> (property: stopFlowOnError)
        If set to true, the flow execution at this level gets stopped in case this
        actor encounters an error; the error gets propagated; useful for critical
        actors.
        default: false
     
    -silent <boolean> (property: silent)
        If enabled, then no errors are output in the console; Note: the enclosing
        actor handler must have this enabled as well.
        default: false
     
    -script-file <adams.core.io.PlaceholderFile> (property: scriptFile)
        The script file to load and execute.
        default: ${CWD}
     
    -encoding <adams.core.base.BaseCharset> (property: encoding)
        The type of encoding to use when loading the script file.
        default: Default
     
    -script <adams.core.scripting.RScript> (property: inlineScript)
        Script to pass into r. The input value can be accessed via 'X'.
        default:
     
    -placeholder <boolean> (property: scriptContainsPlaceholder)
        Set this to true to enable automatic placeholder expansion in the script.
        default: false
     
    -variable <boolean> (property: scriptContainsVariable)
        Set this to true to enable automatic variable expansion in the script.
        default: false
     
    -line-by-line <boolean> (property: lineByLine)
        If enabled, the script gets split into lines and evaluated one line at a
        time (useful for debugging).
        default: true
     
    -return-type <Integer|Double|DoubleArray|DoubleMatrix|String|DataFrame> (property: returnType)
        Data type of returned object
        default: Integer
     
    -data-frame-columns <java.lang.String> (property: dataFrameColumns)
        The comma-separated list of dataframe column names to return only (if return 
        type is DataFrame)
        default: 
     
    Author:
    rsmith, FracPete (fracpete at waikato dot ac dot nz)
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static String INPUT
      the placeholder for the input value.
      protected String m_DataFrameColumns
      the comma-separated list of dataframe column names in case of {@see RDataType#DataFrame}.
      protected adams.core.base.BaseCharset m_Encoding
      the encoding to use.
      protected RScript m_InlineScript
      Script to pass to r
      protected boolean m_LineByLine
      whether to evaluate line by line.
      protected org.rosuda.REngine.Rserve.RConnection m_RConn
      Connection to Rserve
      protected Object m_returnedObject
      Object returned from r
      protected RDataType m_returnType
      Data type of object returned from r script
      protected Rserve m_Rserve
      the Rserve actor.
      protected boolean m_ScriptContainsPlaceholder
      whether the script contains a placeholder, which needs to be expanded first.
      protected boolean m_ScriptContainsVariable
      whether the script contains a variable, which needs to be expanded first.
      protected adams.core.io.PlaceholderFile m_ScriptFile
      the script.
      • Fields inherited from class adams.flow.transformer.AbstractTransformer

        BACKUP_INPUT, BACKUP_OUTPUT, m_InputToken, m_OutputToken
      • Fields inherited from class adams.flow.core.AbstractActor

        m_Annotations, m_BackupState, m_DetectedObjectVariables, m_DetectedVariables, m_ErrorHandler, m_Executed, m_Executing, m_ExecutionListeningSupporter, m_FullName, m_LoggingPrefix, m_Name, m_Parent, m_ScopeHandler, m_Self, m_Silent, m_Skip, m_StopFlowOnError, m_StopMessage, m_Stopped, m_StorageHandler, m_VariablesUpdated
      • Fields inherited from class adams.core.option.AbstractOptionHandler

        m_OptionManager
      • Fields inherited from class adams.core.logging.LoggingObject

        m_Logger, m_LoggingIsEnabled, m_LoggingLevel
      • Fields inherited from interface adams.flow.core.Actor

        FILE_EXTENSION, FILE_EXTENSION_GZ
    • Constructor Summary

      Constructors 
      Constructor Description
      RTransformer()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Class[] accepts()
      List of classes that can be used as input.
      String dataFrameColumnsTipText()
      A description of the return type.
      void defineOptions()
      Adds to the internal list of options.
      protected String doExecute()
      Executes the flow, including reading the input and returning R's output.
      String encodingTipText()
      Returns the tip text for this property.
      Class[] generates()
      List of classes this flow can return.
      String getDataFrameColumns()
      Returns the comma-separated list of dataframe column names to retrieve only.
      adams.core.base.BaseCharset getEncoding()
      Returns the encoding to use for the script file.
      RScript getInlineScript()
      Gets the script.
      boolean getLineByLine()
      Returns whether to evaluate the script line by line.
      String getQuickInfo()
      Returns a quick info about the actor, which will be displayed in the GUI.
      RDataType getReturnType()
      Gets the type of object this flow returns.
      boolean getScriptContainsPlaceholder()
      Returns whether the scripts contains a placeholder which needs to be expanded first.
      boolean getScriptContainsVariable()
      Returns whether the script contains a variable which needs to be expanded first.
      adams.core.io.PlaceholderFile getScriptFile()
      Gets the script file.
      String globalInfo()
      Info about this flow.
      boolean hasPendingOutput()
      Returns true if the is pending output.
      String inlineScriptTipText()
      Tool tip about the script.
      String lineByLineTipText()
      Returns the tip text for this property.
      adams.flow.core.Token output()
      Turns the returned object into a token to be passed through the system.
      String returnTypeTipText()
      Tool tip about the return type.
      String scriptContainsPlaceholderTipText()
      Returns the tip text for this property.
      String scriptContainsVariableTipText()
      Returns the tip text for this property.
      String scriptFileTipText()
      Returns the tip text for this property.
      void setDataFrameColumns​(String value)
      Sets the comma-separated list of dataframe column names to retrieve only.
      void setEncoding​(adams.core.base.BaseCharset value)
      Sets the encoding to use for the script file.
      void setInlineScript​(RScript val)
      Sets the script.
      void setLineByLine​(boolean value)
      Sets whether to evaluate the script line by line.
      void setReturnType​(RDataType val)
      Sets the type of object this flow returns.
      void setScriptContainsPlaceholder​(boolean value)
      Sets whether the script contains a placeholder which needs to be expanded first.
      void setScriptContainsVariable​(boolean value)
      Sets whether the script contains a variable which needs to be expanded first.
      void setScriptFile​(adams.core.io.PlaceholderFile value)
      Sets the script file.
      String setUp()
      Sets up the connection to Rserve.
      void wrapUp()
      Closes the Rserve connection as the flow finishes.
      • Methods inherited from class adams.flow.transformer.AbstractTransformer

        backupState, currentInput, execute, hasInput, input, postExecute, restoreState
      • Methods inherited from class adams.flow.core.AbstractActor

        annotationsTipText, canInspectOptions, canPerformSetUpCheck, cleanUp, compareTo, configureLogger, destroy, equals, finalUpdateVariables, findVariables, findVariables, forceVariables, forCommandLine, forName, forName, getAdditionalInformation, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowActors, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getParentComponent, getPreviousSibling, getRoot, getScopeHandler, getSilent, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, handleException, hasErrorHandler, hasStopMessage, index, initialize, isBackedUp, isExecuted, isExecuting, isFinished, isHeadless, isStopped, nameTipText, performSetUpChecks, performVariableChecks, preExecute, pruneBackup, pruneBackup, reset, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setVariables, shallowCopy, shallowCopy, silentTipText, sizeOf, skipTipText, stopExecution, stopExecution, stopFlowOnErrorTipText, updateDetectedVariables, updatePrefix, updateVariables, variableChanged
      • Methods inherited from class adams.core.option.AbstractOptionHandler

        cleanUpOptions, finishInit, getDefaultLoggingLevel, getOptionManager, loggingLevelTipText, newOptionManager, setLoggingLevel, toCommandLine, toString
      • Methods inherited from class adams.core.logging.LoggingObject

        getLogger, getLoggingLevel, initializeLogging, isLoggingEnabled
      • Methods inherited from interface adams.flow.core.Actor

        cleanUp, compareTo, destroy, equals, findVariables, getAnnotations, getDefaultName, getDetectedVariables, getErrorHandler, getFlowExecutionListeningSupporter, getFullName, getName, getNextSibling, getParent, getParentComponent, getPreviousSibling, getRoot, getScopeHandler, getSilent, getSkip, getStopFlowOnError, getStopMessage, getStorageHandler, getVariables, handleError, hasErrorHandler, hasStopMessage, index, isExecuted, isFinished, isHeadless, isStopped, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setVariables, shallowCopy, shallowCopy, sizeOf, stopExecution, stopExecution, toCommandLine, variableChanged
      • Methods inherited from interface adams.core.AdditionalInformationHandler

        getAdditionalInformation
      • Methods inherited from interface adams.core.logging.LoggingLevelHandler

        getLoggingLevel, setLoggingLevel
      • Methods inherited from interface adams.core.logging.LoggingSupporter

        getLogger, isLoggingEnabled
      • Methods inherited from interface adams.core.option.OptionHandler

        cleanUpOptions, getOptionManager
      • Methods inherited from interface adams.core.VariablesInspectionHandler

        canInspectOptions
    • Field Detail

      • m_ScriptFile

        protected adams.core.io.PlaceholderFile m_ScriptFile
        the script.
      • m_Encoding

        protected adams.core.base.BaseCharset m_Encoding
        the encoding to use.
      • m_InlineScript

        protected RScript m_InlineScript
        Script to pass to r
      • m_returnType

        protected RDataType m_returnType
        Data type of object returned from r script
      • m_DataFrameColumns

        protected String m_DataFrameColumns
        the comma-separated list of dataframe column names in case of {@see RDataType#DataFrame}.
      • m_ScriptContainsPlaceholder

        protected boolean m_ScriptContainsPlaceholder
        whether the script contains a placeholder, which needs to be expanded first.
      • m_ScriptContainsVariable

        protected boolean m_ScriptContainsVariable
        whether the script contains a variable, which needs to be expanded first.
      • m_LineByLine

        protected boolean m_LineByLine
        whether to evaluate line by line.
      • m_returnedObject

        protected Object m_returnedObject
        Object returned from r
      • m_RConn

        protected org.rosuda.REngine.Rserve.RConnection m_RConn
        Connection to Rserve
      • m_Rserve

        protected Rserve m_Rserve
        the Rserve actor.
    • Constructor Detail

      • RTransformer

        public RTransformer()
    • Method Detail

      • globalInfo

        public String globalInfo()
        Info about this flow.
        Specified by:
        globalInfo in interface adams.core.GlobalInfoSupporter
        Specified by:
        globalInfo in class adams.core.option.AbstractOptionHandler
      • defineOptions

        public void defineOptions()
        Adds to the internal list of options.
        Specified by:
        defineOptions in interface adams.core.option.OptionHandler
        Overrides:
        defineOptions in class adams.flow.core.AbstractActor
      • setScriptFile

        public void setScriptFile​(adams.core.io.PlaceholderFile value)
        Sets the script file.
        Parameters:
        value - the script
      • getScriptFile

        public adams.core.io.PlaceholderFile getScriptFile()
        Gets the script file.
        Returns:
        the script
      • scriptFileTipText

        public String scriptFileTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the explorer/experimenter gui
      • setEncoding

        public void setEncoding​(adams.core.base.BaseCharset value)
        Sets the encoding to use for the script file.
        Specified by:
        setEncoding in interface adams.core.io.EncodingSupporter
        Parameters:
        value - the encoding, e.g. "UTF-8" or "UTF-16", empty string for default
      • getEncoding

        public adams.core.base.BaseCharset getEncoding()
        Returns the encoding to use for the script file.
        Specified by:
        getEncoding in interface adams.core.io.EncodingSupporter
        Returns:
        the encoding, e.g. "UTF-8" or "UTF-16", empty string for default
      • encodingTipText

        public String encodingTipText()
        Returns the tip text for this property.
        Specified by:
        encodingTipText in interface adams.core.io.EncodingSupporter
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setInlineScript

        public void setInlineScript​(RScript val)
        Sets the script.
        Parameters:
        val - the script
      • getInlineScript

        public RScript getInlineScript()
        Gets the script.
        Returns:
        the script
      • inlineScriptTipText

        public String inlineScriptTipText()
        Tool tip about the script.
        Returns:
        tool tip message
      • setScriptContainsPlaceholder

        public void setScriptContainsPlaceholder​(boolean value)
        Sets whether the script contains a placeholder which needs to be expanded first.
        Parameters:
        value - true if script contains a placeholder
      • getScriptContainsPlaceholder

        public boolean getScriptContainsPlaceholder()
        Returns whether the scripts contains a placeholder which needs to be expanded first.
        Returns:
        true if script contains a placeholder
      • scriptContainsPlaceholderTipText

        public String scriptContainsPlaceholderTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setScriptContainsVariable

        public void setScriptContainsVariable​(boolean value)
        Sets whether the script contains a variable which needs to be expanded first.
        Parameters:
        value - true if script contains a variable
      • getScriptContainsVariable

        public boolean getScriptContainsVariable()
        Returns whether the script contains a variable which needs to be expanded first.
        Returns:
        true if script contains a variable
      • scriptContainsVariableTipText

        public String scriptContainsVariableTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setLineByLine

        public void setLineByLine​(boolean value)
        Sets whether to evaluate the script line by line.
        Parameters:
        value - true if line-by-line
      • getLineByLine

        public boolean getLineByLine()
        Returns whether to evaluate the script line by line.
        Returns:
        true if line-by-line
      • lineByLineTipText

        public String lineByLineTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setReturnType

        public void setReturnType​(RDataType val)
        Sets the type of object this flow returns.
        Parameters:
        val - the type of object
      • getReturnType

        public RDataType getReturnType()
        Gets the type of object this flow returns.
        Returns:
        the type of object
      • returnTypeTipText

        public String returnTypeTipText()
        Tool tip about the return type.
        Returns:
        the tip
      • setDataFrameColumns

        public void setDataFrameColumns​(String value)
        Sets the comma-separated list of dataframe column names to retrieve only.
        Parameters:
        value - the comma-separated list
      • getDataFrameColumns

        public String getDataFrameColumns()
        Returns the comma-separated list of dataframe column names to retrieve only.
        Returns:
        the comma-separated list
      • dataFrameColumnsTipText

        public String dataFrameColumnsTipText()
        A description of the return type.
        Returns:
        string description
      • getQuickInfo

        public String getQuickInfo()
        Returns a quick info about the actor, which will be displayed in the GUI.
        Specified by:
        getQuickInfo in interface adams.flow.core.Actor
        Specified by:
        getQuickInfo in interface adams.core.QuickInfoSupporter
        Overrides:
        getQuickInfo in class adams.flow.core.AbstractActor
        Returns:
        null if no info available, otherwise short string
      • accepts

        public Class[] accepts()
        List of classes that can be used as input.
        Specified by:
        accepts in interface adams.flow.core.InputConsumer
      • generates

        public Class[] generates()
        List of classes this flow can return.
        Specified by:
        generates in interface adams.flow.core.OutputProducer
      • output

        public adams.flow.core.Token output()
        Turns the returned object into a token to be passed through the system.
        Specified by:
        output in interface adams.flow.core.OutputProducer
        Overrides:
        output in class adams.flow.transformer.AbstractTransformer
      • hasPendingOutput

        public boolean hasPendingOutput()
        Returns true if the is pending output.
        Specified by:
        hasPendingOutput in interface adams.flow.core.OutputProducer
        Overrides:
        hasPendingOutput in class adams.flow.transformer.AbstractTransformer
      • setUp

        public String setUp()
        Sets up the connection to Rserve.
        Specified by:
        setUp in interface adams.flow.core.Actor
        Overrides:
        setUp in class adams.flow.core.AbstractActor
      • doExecute

        protected String doExecute()
        Executes the flow, including reading the input and returning R's output.
        Specified by:
        doExecute in class adams.flow.core.AbstractActor
      • wrapUp

        public void wrapUp()
        Closes the Rserve connection as the flow finishes.
        Specified by:
        wrapUp in interface adams.flow.core.Actor
        Overrides:
        wrapUp in class adams.flow.transformer.AbstractTransformer