Class AbstractProcessWekaInstanceWithModel<T>

  • Type Parameters:
    T - the type of model to use
    All Implemented Interfaces:
    adams.core.AdditionalInformationHandler, adams.core.CleanUpHandler, adams.core.Destroyable, adams.core.GlobalInfoSupporter, adams.core.io.ModelFileHandler, 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.DynamicInitializer, adams.flow.core.DynamicModelLoaderSupporter, adams.flow.core.ErrorHandler, adams.flow.core.InputConsumer, adams.flow.core.ModelLoaderSupporter, adams.flow.core.OutputProducer, Serializable, Comparable
    Direct Known Subclasses:
    WekaClassifying, WekaClustering

    public abstract class AbstractProcessWekaInstanceWithModel<T>
    extends adams.flow.transformer.AbstractTransformer
    implements adams.flow.core.DynamicModelLoaderSupporter
    Ancestor for transformers that user models for processing Instance objects, e.g., classifiers making predictions.
    Author:
    fracpete (fracpete at waikato dot ac dot nz)
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      static String BACKUP_MODEL
      the key for storing the current model in the backup.
      protected T m_Model
      the model that was loaded from the model file.
      protected adams.flow.core.AbstractModelLoader m_ModelLoader
      the model loader.
      protected adams.core.VariableName m_ModelResetVariable
      the variable to monitor for changes, triggering resets of the model.
      protected boolean m_OnTheFly
      whether the model gets built on the fly and might not be present at the start.
      protected boolean m_ResetModel
      whether we need to reset the model.
      protected boolean m_UseModelResetVariable
      whether to use a variable to monitor for changes, triggering resets of the model.
      • 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
    • Method Summary

      All Methods Instance Methods Abstract Methods Concrete Methods 
      Modifier and Type Method Description
      Class[] accepts()
      Returns the class that the consumer accepts.
      protected Hashtable<String,​Object> backupState()
      Backs up the current state of the actor before update the variables.
      void defineOptions()
      Adds options to the internal list of options.
      protected String doExecute()
      Executes the flow item.
      abstract Class[] generates()
      Returns the class of objects that it generates.
      adams.flow.core.CallableActorReference getModelActor()
      Returns the filter source actor.
      protected Class getModelContainerClass()
      Returns the model container class that is supported.
      adams.core.io.PlaceholderFile getModelFile()
      Returns the file to load the model from.
      protected T getModelFromContainer​(adams.flow.container.AbstractContainer cont)
      Retrieves the model from the container.
      adams.flow.core.AbstractModelLoader.ModelLoadingType getModelLoadingType()
      Returns the loading type.
      adams.core.VariableName getModelResetVariable()
      Returns the variable to monitor for changes in order to reset the model.
      adams.flow.control.StorageName getModelStorage()
      Returns the filter storage item.
      boolean getOnTheFly()
      Returns whether the model file gets built on the fly and might not be present at start up time.
      String getQuickInfo()
      Returns a quick info about the actor, which will be displayed in the GUI.
      boolean getUseModelResetVariable()
      Returns the whether to use a variable to monitor for changes in order to reset the model.
      protected void initialize()  
      String modelActorTipText()
      Returns the tip text for this property.
      String modelFileTipText()
      Returns the tip text for this property.
      String modelLoadingTypeTipText()
      Returns the tip text for this property.
      String modelResetVariableTipText()
      Returns the tip text for this property.
      String modelStorageTipText()
      Returns the tip text for this property.
      protected abstract adams.flow.core.AbstractModelLoader newModelLoader()
      Instantiates the model loader to use.
      String onTheFlyTipText()
      Returns the tip text for this property.
      protected abstract adams.flow.core.Token processInstance​(weka.core.Instance inst)
      Processes the instance and generates the output token.
      protected void pruneBackup()
      Removes entries from the backup.
      protected void reset()
      Resets the scheme.
      protected void restoreState​(Hashtable<String,​Object> state)
      Restores the state of the actor before the variables got updated.
      void setLoggingLevel​(adams.core.logging.LoggingLevel value)
      Sets the logging level.
      void setModelActor​(adams.flow.core.CallableActorReference value)
      Sets the filter source actor.
      void setModelFile​(adams.core.io.PlaceholderFile value)
      Sets the file to load the model from.
      void setModelLoadingType​(adams.flow.core.AbstractModelLoader.ModelLoadingType value)
      Sets the loading type.
      void setModelResetVariable​(adams.core.VariableName value)
      Sets the variable to monitor for changes in order to reset the model.
      void setModelStorage​(adams.flow.control.StorageName value)
      Sets the filter storage item.
      void setOnTheFly​(boolean value)
      Sets whether the model file gets built on the fly and might not be present at start up time.
      String setUp()
      Initializes the item for flow execution.
      protected String setUpModel()
      Loads the model from the model file.
      void setUseModelResetVariable​(boolean value)
      Sets the whether to use a variable to monitor for changes in order to reset the model.
      String useModelResetVariableTipText()
      Returns the tip text for this property.
      void variableChanged​(adams.event.VariableChangeEvent e)
      Gets triggered when a variable changed (added, modified, removed).
      void wrapUp()
      Cleans up after the execution has finished.
      • Methods inherited from class adams.flow.transformer.AbstractTransformer

        currentInput, execute, hasInput, hasPendingOutput, input, output, postExecute
      • 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, isBackedUp, isExecuted, isExecuting, isFinished, isHeadless, isStopped, nameTipText, performSetUpChecks, performVariableChecks, preExecute, pruneBackup, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setVariables, shallowCopy, shallowCopy, silentTipText, sizeOf, skipTipText, stopExecution, stopExecution, stopFlowOnErrorTipText, updateDetectedVariables, updatePrefix, updateVariables
      • Methods inherited from class adams.core.option.AbstractOptionHandler

        cleanUpOptions, finishInit, getDefaultLoggingLevel, getOptionManager, globalInfo, loggingLevelTipText, newOptionManager, 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, execute, 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
      • Methods inherited from interface adams.core.AdditionalInformationHandler

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

        getLoggingLevel
      • 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

      • BACKUP_MODEL

        public static final String BACKUP_MODEL
        the key for storing the current model in the backup.
        See Also:
        Constant Field Values
      • m_Model

        protected T m_Model
        the model that was loaded from the model file.
      • m_OnTheFly

        protected boolean m_OnTheFly
        whether the model gets built on the fly and might not be present at the start.
      • m_UseModelResetVariable

        protected boolean m_UseModelResetVariable
        whether to use a variable to monitor for changes, triggering resets of the model.
      • m_ModelResetVariable

        protected adams.core.VariableName m_ModelResetVariable
        the variable to monitor for changes, triggering resets of the model.
      • m_ResetModel

        protected boolean m_ResetModel
        whether we need to reset the model.
      • m_ModelLoader

        protected adams.flow.core.AbstractModelLoader m_ModelLoader
        the model loader.
    • Constructor Detail

      • AbstractProcessWekaInstanceWithModel

        public AbstractProcessWekaInstanceWithModel()
    • Method Detail

      • defineOptions

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

        protected void initialize()
        Overrides:
        initialize in class adams.flow.core.AbstractActor
      • reset

        protected void reset()
        Resets the scheme.
        Overrides:
        reset in class adams.flow.core.AbstractActor
      • setLoggingLevel

        public void setLoggingLevel​(adams.core.logging.LoggingLevel value)
        Sets the logging level.
        Specified by:
        setLoggingLevel in interface adams.core.logging.LoggingLevelHandler
        Overrides:
        setLoggingLevel in class adams.core.option.AbstractOptionHandler
        Parameters:
        value - the level
      • newModelLoader

        protected abstract adams.flow.core.AbstractModelLoader newModelLoader()
        Instantiates the model loader to use.
        Returns:
        the model loader to use
      • setModelLoadingType

        public void setModelLoadingType​(adams.flow.core.AbstractModelLoader.ModelLoadingType value)
        Sets the loading type. In case of AbstractModelLoader.ModelLoadingType.AUTO, first file, then callable actor, then storage.
        Specified by:
        setModelLoadingType in interface adams.flow.core.ModelLoaderSupporter
        Parameters:
        value - the type
      • getModelLoadingType

        public adams.flow.core.AbstractModelLoader.ModelLoadingType getModelLoadingType()
        Returns the loading type. In case of AbstractModelLoader.ModelLoadingType.AUTO, first file, then callable actor, then storage.
        Specified by:
        getModelLoadingType in interface adams.flow.core.ModelLoaderSupporter
        Returns:
        the type
      • modelLoadingTypeTipText

        public String modelLoadingTypeTipText()
        Returns the tip text for this property.
        Specified by:
        modelLoadingTypeTipText in interface adams.flow.core.ModelLoaderSupporter
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setModelFile

        public void setModelFile​(adams.core.io.PlaceholderFile value)
        Sets the file to load the model from.
        Specified by:
        setModelFile in interface adams.core.io.ModelFileHandler
        Specified by:
        setModelFile in interface adams.flow.core.ModelLoaderSupporter
        Parameters:
        value - the model file
      • getModelFile

        public adams.core.io.PlaceholderFile getModelFile()
        Returns the file to load the model from.
        Specified by:
        getModelFile in interface adams.core.io.ModelFileHandler
        Specified by:
        getModelFile in interface adams.flow.core.ModelLoaderSupporter
        Returns:
        the model file
      • modelFileTipText

        public String modelFileTipText()
        Returns the tip text for this property.
        Specified by:
        modelFileTipText in interface adams.core.io.ModelFileHandler
        Specified by:
        modelFileTipText in interface adams.flow.core.ModelLoaderSupporter
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setModelActor

        public void setModelActor​(adams.flow.core.CallableActorReference value)
        Sets the filter source actor.
        Specified by:
        setModelActor in interface adams.flow.core.ModelLoaderSupporter
        Parameters:
        value - the source
      • getModelActor

        public adams.flow.core.CallableActorReference getModelActor()
        Returns the filter source actor.
        Specified by:
        getModelActor in interface adams.flow.core.ModelLoaderSupporter
        Returns:
        the source
      • modelActorTipText

        public String modelActorTipText()
        Returns the tip text for this property.
        Specified by:
        modelActorTipText in interface adams.flow.core.ModelLoaderSupporter
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setModelStorage

        public void setModelStorage​(adams.flow.control.StorageName value)
        Sets the filter storage item.
        Specified by:
        setModelStorage in interface adams.flow.core.ModelLoaderSupporter
        Parameters:
        value - the storage item
      • getModelStorage

        public adams.flow.control.StorageName getModelStorage()
        Returns the filter storage item.
        Specified by:
        getModelStorage in interface adams.flow.core.ModelLoaderSupporter
        Returns:
        the storage item
      • modelStorageTipText

        public String modelStorageTipText()
        Returns the tip text for this property.
        Specified by:
        modelStorageTipText in interface adams.flow.core.ModelLoaderSupporter
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setOnTheFly

        public void setOnTheFly​(boolean value)
        Sets whether the model file gets built on the fly and might not be present at start up time.
        Specified by:
        setOnTheFly in interface adams.flow.core.DynamicInitializer
        Parameters:
        value - if true then the model does not have to be present at start up time
      • getOnTheFly

        public boolean getOnTheFly()
        Returns whether the model file gets built on the fly and might not be present at start up time.
        Specified by:
        getOnTheFly in interface adams.flow.core.DynamicInitializer
        Returns:
        true if the model is not necessarily present at start up time
      • onTheFlyTipText

        public String onTheFlyTipText()
        Returns the tip text for this property.
        Specified by:
        onTheFlyTipText in interface adams.flow.core.DynamicInitializer
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • setUseModelResetVariable

        public void setUseModelResetVariable​(boolean value)
        Sets the whether to use a variable to monitor for changes in order to reset the model.
        Parameters:
        value - true if to use monitor variable
      • getUseModelResetVariable

        public boolean getUseModelResetVariable()
        Returns the whether to use a variable to monitor for changes in order to reset the model.
        Returns:
        true if to use monitor variable
      • useModelResetVariableTipText

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

        public void setModelResetVariable​(adams.core.VariableName value)
        Sets the variable to monitor for changes in order to reset the model.
        Parameters:
        value - the variable
      • getModelResetVariable

        public adams.core.VariableName getModelResetVariable()
        Returns the variable to monitor for changes in order to reset the model.
        Returns:
        the variable
      • modelResetVariableTipText

        public String modelResetVariableTipText()
        Returns the tip text for this property.
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • 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()
        Returns the class that the consumer accepts.
        Specified by:
        accepts in interface adams.flow.core.InputConsumer
        Returns:
        the accepted classes
      • generates

        public abstract Class[] generates()
        Returns the class of objects that it generates.
        Specified by:
        generates in interface adams.flow.core.OutputProducer
        Returns:
        the classes
      • pruneBackup

        protected void pruneBackup()
        Removes entries from the backup.
        Overrides:
        pruneBackup in class adams.flow.core.AbstractActor
      • backupState

        protected Hashtable<String,​Object> backupState()
        Backs up the current state of the actor before update the variables.
        Overrides:
        backupState in class adams.flow.transformer.AbstractTransformer
        Returns:
        the backup
      • restoreState

        protected void restoreState​(Hashtable<String,​Object> state)
        Restores the state of the actor before the variables got updated.
        Overrides:
        restoreState in class adams.flow.transformer.AbstractTransformer
        Parameters:
        state - the backup of the state to restore from
      • variableChanged

        public void variableChanged​(adams.event.VariableChangeEvent e)
        Gets triggered when a variable changed (added, modified, removed).
        Specified by:
        variableChanged in interface adams.flow.core.Actor
        Specified by:
        variableChanged in interface adams.event.VariableChangeListener
        Overrides:
        variableChanged in class adams.flow.core.AbstractActor
        Parameters:
        e - the event
      • getModelContainerClass

        protected Class getModelContainerClass()
        Returns the model container class that is supported.
        Returns:
        the class
      • getModelFromContainer

        protected T getModelFromContainer​(adams.flow.container.AbstractContainer cont)
        Retrieves the model from the container.
        Parameters:
        cont - the container to get the model from
        Returns:
        the model, null if not in container
      • setUpModel

        protected String setUpModel()
        Loads the model from the model file.
        Returns:
        null if everything worked, otherwise an error message
      • setUp

        public String setUp()
        Initializes the item for flow execution.
        Specified by:
        setUp in interface adams.flow.core.Actor
        Overrides:
        setUp in class adams.flow.core.AbstractActor
        Returns:
        null if everything is fine, otherwise error message
      • processInstance

        protected abstract adams.flow.core.Token processInstance​(weka.core.Instance inst)
                                                          throws Exception
        Processes the instance and generates the output token.
        Parameters:
        inst - the instance to process
        Returns:
        the generated output token (e.g., container)
        Throws:
        Exception - if processing fails
      • doExecute

        protected String doExecute()
        Executes the flow item.
        Specified by:
        doExecute in class adams.flow.core.AbstractActor
        Returns:
        null if everything is fine, otherwise error message
      • wrapUp

        public void wrapUp()
        Cleans up after the execution has finished.
        Specified by:
        wrapUp in interface adams.flow.core.Actor
        Overrides:
        wrapUp in class adams.flow.transformer.AbstractTransformer