Class WekaChooseAttributes

  • All Implemented Interfaces:
    adams.core.AdditionalInformationHandler, adams.core.CleanUpHandler, adams.core.Destroyable, adams.core.GlobalInfoSupporter, 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.AutomatableInteraction, adams.flow.core.AutomatableInteractiveActor, adams.flow.core.ErrorHandler, adams.flow.core.InputConsumer, adams.flow.core.InteractiveActor, adams.flow.core.InteractiveActorWithCustomParentComponent, adams.flow.core.OutputProducer, adams.flow.core.StopModeSupporter, Serializable, Comparable

    public class WekaChooseAttributes
    extends adams.flow.transformer.AbstractInteractiveTransformer
    implements adams.flow.core.AutomatableInteractiveActor
    Lets the user select attributes interactively to use down the track.
    Internally, a weka.filters.unsupervised.attribute.Remove WEKA filter is constructed from the selection, to remove the attributes that the user didn't select.

    Input/output:
    - accepts:
       weka.core.Instances
    - generates:
       weka.core.Instances


    -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: WekaChooseAttributes
     
    -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 gets stopped in case this actor encounters an error;
         useful for critical actors.
        default: false
     
    -silent <boolean> (property: silent)
        If enabled, then no errors are output in the console.
        default: false
     
    -stop-if-canceled <boolean> (property: stopFlowIfCanceled)
        If enabled, the flow gets stopped in case the user cancels the dialog.
        default: false
     
    -custom-stop-message <java.lang.String> (property: customStopMessage)
        The custom stop message to use in case a user cancelation stops the flow
        (default is the full name of the actor)
        default:
     
    -message <java.lang.String> (property: message)
        The message to display to the user (variables get expanded).
        default: Choose attributes to use
     
    -pre-selection <adams.core.base.BaseRegExp> (property: preSelection)
        The regular expression to use for pre-selecting attributes.
        default: .*
     
    -non-interactive <boolean> (property: nonInteractive)
        If enabled, attributes that match the 'pre-selection' pattern get selected
        automatically.
        default: false
     
    Author:
    fracpete (fracpete at waikato dot ac dot nz)
    See Also:
    Serialized Form
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected String m_Message
      the message to display to the user.
      protected boolean m_NonInteractive
      whether to automate the actor.
      protected adams.core.base.BaseRegExp m_PreSelection
      the regular expression for pre-selecting attributes by name.
      protected weka.filters.unsupervised.attribute.Remove m_Remove
      the Remove filter in use.
      • Fields inherited from class adams.flow.transformer.AbstractInteractiveTransformer

        m_CallableActor, m_CustomStopMessage, m_Helper, m_ParentComponentActor, m_ParentComponentActorConfigured, m_StopFlowIfCanceled, m_StopMode, m_UseOuterWindow
      • 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
      • Fields inherited from interface adams.flow.core.InteractiveActor

        INTERACTION_CANCELED
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Class[] accepts()
      Returns the class that the consumer accepts.
      void defineOptions()
      Adds options to the internal list of options.
      protected String doExecute()
      Executes the flow item.
      String doInteract()
      Performs the interaction with the user.
      protected weka.core.Instances filter​(weka.core.Instances inst, List<Integer> selected)
      Filters the data.
      protected boolean generateOutput​(weka.core.Instances inst, List<Integer> selected)
      Creates the output token with the subset of data.
      Class[] generates()
      Returns the class of objects that it generates.
      String getMessage()
      Returns the message to display to the user (variables get expanded).
      protected List<Integer> getPreSelectedIndices​(weka.core.Instances inst)
      Returns the pre-selected indices.
      String getQuickInfo()
      Returns a quick info about the actor, which will be displayed in the GUI.
      String globalInfo()
      Returns a string describing the object.
      protected void initialize()
      Initializes the members.
      boolean isNonInteractive()
      Returns whether interactiveness is enabled/disabled.
      adams.core.base.BaseRegExp isPreSelection()
      Returns the regular expression to pre-select attributes for the dialog.
      String messageTipText()
      Returns the tip text for this property.
      String nonInteractiveTipText()
      Returns the tip text for this property.
      String preSelectionTipText()
      Returns the tip text for this property.
      protected List<Integer> selectAttributes​(weka.core.Instances inst, List<Integer> preSelected)
      Prompts the user to select attributes.
      void setMessage​(String value)
      Sets the message to display to the user (variables get expanded).
      void setNonInteractive​(boolean value)
      Sets whether to enable/disable interactiveness.
      void setPreSelection​(adams.core.base.BaseRegExp value)
      Sets the regular expression to pre-select attributes for the dialog.
      • Methods inherited from class adams.flow.transformer.AbstractInteractiveTransformer

        customStopMessageTipText, deregisterWindow, doInteractHeadless, findCallableActor, getActualParentComponent, getCustomStopMessage, getParentComponentActor, getStopFlowIfCanceled, getStopMode, getUseOuterWindow, parentComponentActorTipText, registerWindow, reset, setCustomStopMessage, setParentComponentActor, setStopFlowIfCanceled, setStopMode, setUseOuterWindow, stopFlowIfCanceledTipText, stopModeTipText, supportsHeadlessInteraction, useOuterWindowTipText
      • Methods inherited from class adams.flow.transformer.AbstractTransformer

        backupState, currentInput, execute, hasInput, hasPendingOutput, input, output, postExecute, restoreState, wrapUp
      • 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, pruneBackup, setAnnotations, setErrorHandler, setName, setParent, setSilent, setSkip, setStopFlowOnError, setUp, 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, 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, setUp, setVariables, shallowCopy, shallowCopy, sizeOf, stopExecution, stopExecution, toCommandLine, variableChanged, wrapUp
      • Methods inherited from interface adams.core.AdditionalInformationHandler

        getAdditionalInformation
      • Methods inherited from interface adams.flow.core.InteractiveActor

        customStopMessageTipText, doInteractHeadless, getCustomStopMessage, getStopFlowIfCanceled, setCustomStopMessage, setStopFlowIfCanceled, stopFlowIfCanceledTipText, supportsHeadlessInteraction
      • 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.flow.core.StopModeSupporter

        getStopMode, setStopMode, stopModeTipText
      • Methods inherited from interface adams.core.VariablesInspectionHandler

        canInspectOptions
    • Field Detail

      • m_Message

        protected String m_Message
        the message to display to the user.
      • m_PreSelection

        protected adams.core.base.BaseRegExp m_PreSelection
        the regular expression for pre-selecting attributes by name.
      • m_NonInteractive

        protected boolean m_NonInteractive
        whether to automate the actor.
      • m_Remove

        protected weka.filters.unsupervised.attribute.Remove m_Remove
        the Remove filter in use.
    • Constructor Detail

      • WekaChooseAttributes

        public WekaChooseAttributes()
    • Method Detail

      • globalInfo

        public String globalInfo()
        Returns a string describing the object.
        Specified by:
        globalInfo in interface adams.core.GlobalInfoSupporter
        Specified by:
        globalInfo in class adams.core.option.AbstractOptionHandler
        Returns:
        a description suitable for displaying in the gui
      • 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.transformer.AbstractInteractiveTransformer
      • initialize

        protected void initialize()
        Initializes the members.
        Overrides:
        initialize in class adams.flow.transformer.AbstractInteractiveTransformer
      • 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
      • setMessage

        public void setMessage​(String value)
        Sets the message to display to the user (variables get expanded).
        Parameters:
        value - the message
      • getMessage

        public String getMessage()
        Returns the message to display to the user (variables get expanded).
        Returns:
        the message
      • messageTipText

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

        public void setPreSelection​(adams.core.base.BaseRegExp value)
        Sets the regular expression to pre-select attributes for the dialog.
        Parameters:
        value - the expression
      • isPreSelection

        public adams.core.base.BaseRegExp isPreSelection()
        Returns the regular expression to pre-select attributes for the dialog.
        Returns:
        the expression
      • preSelectionTipText

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

        public void setNonInteractive​(boolean value)
        Sets whether to enable/disable interactiveness.
        Specified by:
        setNonInteractive in interface adams.flow.core.AutomatableInteraction
        Specified by:
        setNonInteractive in interface adams.flow.core.AutomatableInteractiveActor
        Parameters:
        value - if true actor is not interactive, but automated
      • isNonInteractive

        public boolean isNonInteractive()
        Returns whether interactiveness is enabled/disabled.
        Specified by:
        isNonInteractive in interface adams.flow.core.AutomatableInteraction
        Specified by:
        isNonInteractive in interface adams.flow.core.AutomatableInteractiveActor
        Returns:
        true if actor is not interactive i.e., automated
      • nonInteractiveTipText

        public String nonInteractiveTipText()
        Returns the tip text for this property.
        Specified by:
        nonInteractiveTipText in interface adams.flow.core.AutomatableInteraction
        Specified by:
        nonInteractiveTipText in interface adams.flow.core.AutomatableInteractiveActor
        Returns:
        tip text for this property suitable for displaying in the GUI or for listing the options.
      • accepts

        public Class[] accepts()
        Returns the class that the consumer accepts.
        Specified by:
        accepts in interface adams.flow.core.InputConsumer
        Returns:
        the Class of objects that can be processed
      • generates

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

        protected List<Integer> selectAttributes​(weka.core.Instances inst,
                                                 List<Integer> preSelected)
        Prompts the user to select attributes.
        Parameters:
        inst - the data to present
        preSelected - the indices of the attributes to use by default
        Returns:
        the list of selected attributes to keep, null if cancelled
      • getPreSelectedIndices

        protected List<Integer> getPreSelectedIndices​(weka.core.Instances inst)
        Returns the pre-selected indices.
        Parameters:
        inst - the dataset to work on
        Returns:
        the indices
      • filter

        protected weka.core.Instances filter​(weka.core.Instances inst,
                                             List<Integer> selected)
                                      throws Exception
        Filters the data.
        Parameters:
        inst - the data to filter
        selected - the selected attributes
        Returns:
        the new dataset
        Throws:
        Exception - in case filtering fails
      • generateOutput

        protected boolean generateOutput​(weka.core.Instances inst,
                                         List<Integer> selected)
        Creates the output token with the subset of data.
        Parameters:
        inst - the instances to process
        selected - the indices to select
        Returns:
        true if successfully generated
      • doInteract

        public String doInteract()
        Performs the interaction with the user.
        Specified by:
        doInteract in interface adams.flow.core.InteractiveActor
        Specified by:
        doInteract in class adams.flow.transformer.AbstractInteractiveTransformer
        Returns:
        null if successfully interacted, otherwise error message
      • doExecute

        protected String doExecute()
        Executes the flow item.
        Overrides:
        doExecute in class adams.flow.transformer.AbstractInteractiveTransformer
        Returns:
        null if everything is fine, otherwise error message