Class MultiFilter

  • All Implemented Interfaces:
    adams.core.CleanUpHandler, adams.core.Destroyable, adams.core.GlobalInfoSupporter, adams.core.logging.LoggingLevelHandler, adams.core.logging.LoggingSupporter, adams.core.option.OptionHandler, adams.core.ShallowCopySupporter<adams.data.filter.Filter>, adams.core.SizeOfHandler, adams.data.filter.Filter<ThreeWayData>, adams.db.DatabaseConnectionHandler, adams.db.DatabaseConnectionProvider, adams.db.DatabaseConnectionUser, Serializable, Comparable

    public class MultiFilter
    extends adams.data.filter.MultiFilter<ThreeWayData>
    A meta-filter that runs multiple filters over the data.
    The filter can be executed in two ways:
    1. in series (the default):
    Each filter runs on the data the previous filter generated.
    2. in parallel:
    Each filter is run on the original input data and the generated
    outputs are merged into a single 3-way data structure again. Already existing
    data points don't get overwritten.

    -logging-level <OFF|SEVERE|WARNING|INFO|CONFIG|FINE|FINER|FINEST> (property: loggingLevel)
        The logging level for outputting errors and debugging output.
        default: WARNING
     
    -no-id-update <boolean> (property: dontUpdateID)
        If enabled, suppresses updating the ID of adams.data.id.IDHandler data containers.
        default: false
     
    -filter <adams.data.filter.Filter> [-filter ...] (property: subFilters)
        The array of filters to use.
        default: adams.data.filter.PassThrough
     
    -parallel <boolean> (property: parallelAndMerge)
        If set to true, each of the filters will run on the original input data
        and the results merged into a single spectrum again; otherwise the filters
        will be applied subsequently, each using the output of the previous one
        as input.
        default: false
     
    Author:
    fracpete (fracpete at waikato dot ac dot nz)
    See Also:
    Serialized Form
    • Nested Class Summary

      • Nested classes/interfaces inherited from class adams.data.filter.AbstractFilter

        adams.data.filter.AbstractFilter.FilterJob<T extends adams.data.container.DataContainer>
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected boolean m_ParallelAndMerge
      whether to execute the filters in parallel and merge the outputs or run them in series.
      • Fields inherited from class adams.data.filter.MultiFilter

        m_Filters
      • Fields inherited from class adams.data.filter.AbstractDatabaseConnectionFilter

        m_DatabaseConnection
      • Fields inherited from class adams.data.filter.AbstractFilter

        m_DontUpdateID
      • Fields inherited from class adams.core.option.AbstractOptionHandler

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

        m_Logger, m_LoggingIsEnabled, m_LoggingLevel
    • Constructor Summary

      Constructors 
      Constructor Description
      MultiFilter()  
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void defineOptions()
      Adds options to the internal list of options.
      boolean getParallelAndMerge()
      Returns whether the filters are executed in parallel or series.
      String globalInfo()
      Returns a string describing the object.
      String parallelAndMergeTipText()
      Returns the tip text for this property.
      protected ThreeWayData processData​(ThreeWayData data)
      Performs the actual filtering.
      protected ThreeWayData processDataParallel​(ThreeWayData data)
      Performs the actual filtering - parallel application of filters and merging of results.
      void setParallelAndMerge​(boolean value)
      Sets whether filters are executed in series or parallel.
      • Methods inherited from class adams.data.filter.MultiFilter

        getDefaultDatabaseConnection, getSubFilters, setSubFilters, subFiltersTipText, updateDatabaseConnection
      • Methods inherited from class adams.data.filter.AbstractDatabaseConnectionFilter

        getDatabaseConnection, initialize, setDatabaseConnection
      • Methods inherited from class adams.data.filter.AbstractFilter

        checkData, cleanUp, compareTo, destroy, dontUpdateIDTipText, equals, filter, forCommandLine, getDontUpdateID, reset, setDontUpdateID, shallowCopy, shallowCopy
      • 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

        configureLogger, getLogger, getLoggingLevel, initializeLogging, isLoggingEnabled, sizeOf
      • 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, toCommandLine
    • Field Detail

      • m_ParallelAndMerge

        protected boolean m_ParallelAndMerge
        whether to execute the filters in parallel and merge the outputs or run them in series.
    • Constructor Detail

      • MultiFilter

        public MultiFilter()
    • Method Detail

      • globalInfo

        public String globalInfo()
        Returns a string describing the object.
        Specified by:
        globalInfo in interface adams.core.GlobalInfoSupporter
        Overrides:
        globalInfo in class adams.data.filter.MultiFilter<ThreeWayData>
        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.data.filter.MultiFilter<ThreeWayData>
      • setParallelAndMerge

        public void setParallelAndMerge​(boolean value)
        Sets whether filters are executed in series or parallel.
        Parameters:
        value - true if filters are to be executed in parallel
      • getParallelAndMerge

        public boolean getParallelAndMerge()
        Returns whether the filters are executed in parallel or series.
        Returns:
        true if executed in parallel
      • parallelAndMergeTipText

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

        protected ThreeWayData processDataParallel​(ThreeWayData data)
        Performs the actual filtering - parallel application of filters and merging of results.
        Parameters:
        data - the data to process
        Returns:
        the merged dta
      • processData

        protected ThreeWayData processData​(ThreeWayData data)
        Performs the actual filtering.
        Overrides:
        processData in class adams.data.filter.MultiFilter<ThreeWayData>
        Parameters:
        data - the data to filter
        Returns:
        the filtered data