jAudioFeatureExtractor.Aggregators
Class Aggregator

java.lang.Object
  extended by jAudioFeatureExtractor.Aggregators.Aggregator
Direct Known Subclasses:
AreaMoments, AreaPolynomialApproximation, DummyAgg, Mean, MFCC, MultipleFeatureHistogram, StandardDeviation

public abstract class Aggregator
extends java.lang.Object

Aggregator is an interface for specifying the mechanism for collapsing frame-by-frame features into per-file data. There exists two types of aggregators - specific aggregators and generic aggregators.

Generic aggregators aggregate for each feature (seperately) that is to be saved and should override init and setSource methods. Specific aggregators can aggregate any number of features, but these features must be specified in advance.

Author:
Daniel McEnnis

Field Summary
static java.lang.String LINE_SEP
          Convenience variable containing the end of line characters for this system.
 
Constructor Summary
Aggregator()
           
 
Method Summary
 void aggregate(double[][][] values)
          Aggregates the values of the features specified by the init function accross all windows of the data recieved.
protected  int calculateOffset(double[][][] values, int[] featureList)
           
 java.lang.Object clone()
          Create a new aggregator of the same class
protected  int[][] collapseFeatures(double[][][] values, int[] indecis)
           
 AggregatorDefinition getAggregatorDefinition()
          Returns a description of this instantiation of this class of aggregator
 FeatureDefinition getFeatureDefinition()
          Description of a particular instantiation of an aggregate.
 java.lang.String[] getFeaturesToApply()
          Provide a list of features that are to be aggregated by this feature.
 java.lang.String[] getParamaters()
          Provide a list of the values of all parameters this aggregator uses.
 double[] getResults()
          Returns the results in a double array (more useful for embedding than an XML pipe solution).
 void init(int[] featureIndecis)
          Specifies which Features are to be extracted and the index of these features in the values array that will passed into the aggregate function
 void outputACEFeatureKeyEntries(java.io.DataOutputStream output)
          Output the feature definition entry (for an ACE feature definition file) for this particular instantiation of the aggreagtor.
 void outputACEValueEntries(java.io.DataOutputStream output)
          Output the data definition entries of a the ACE format
 void outputARFFHeaderEntries(java.io.DataOutputStream output)
          Output the header entries of a Weka ARFF file.
 void outputARFFValueEntries(java.io.DataOutputStream output)
          Output the data in the ARFF body.
 void setParameters(java.lang.String[] featureNames, java.lang.String[] params)
          Set parameters of the aggregator to the given values.
 void setSource(FeatureExtractor feature)
           
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

LINE_SEP

public static final java.lang.String LINE_SEP
Convenience variable containing the end of line characters for this system.

Constructor Detail

Aggregator

public Aggregator()
Method Detail

getFeaturesToApply

public java.lang.String[] getFeaturesToApply()
Provide a list of features that are to be aggregated by this feature. Returning null indicates that this aggregator accepts only one feature and every feature avaiable should be used.

Returns:
list of features to be used by this aggregator or null

getParamaters

public java.lang.String[] getParamaters()
Provide a list of the values of all parameters this aggregator uses. Aggregators without parameters return null.

Returns:
list of the values of parmeters or null.

clone

public java.lang.Object clone()
Create a new aggregator of the same class

Overrides:
clone in class java.lang.Object

getFeatureDefinition

public FeatureDefinition getFeatureDefinition()
Description of a particular instantiation of an aggregate. This should not be called until after the specific features have been specified by the init function.

Returns:
Feature Definition describing this instantiation of this aggregate object

getAggregatorDefinition

public AggregatorDefinition getAggregatorDefinition()
Returns a description of this instantiation of this class of aggregator


init

public void init(int[] featureIndecis)
          throws java.lang.Exception
Specifies which Features are to be extracted and the index of these features in the values array that will passed into the aggregate function

Parameters:
source - FeatureExtractor references used for this instantiation
featureIndecis - Indecis of these features in the array passed in aggregate
Throws:
java.lang.Exception - if either parameter is null, of dicffering lengths, or contain invalid index values.

setSource

public void setSource(FeatureExtractor feature)

aggregate

public void aggregate(double[][][] values)
               throws java.lang.Exception
Aggregates the values of the features specified by the init function accross all windows of the data recieved.

Parameters:
values - complete array of the extracted features. Indecis are window, feature, and then feature value.
Throws:
java.lang.Exception

outputACEFeatureKeyEntries

public void outputACEFeatureKeyEntries(java.io.DataOutputStream output)
                                throws java.lang.Exception
Output the feature definition entry (for an ACE feature definition file) for this particular instantiation of the aggreagtor.

Parameters:
output - output stream to be used.
Throws:
java.lang.Exception

outputACEValueEntries

public void outputACEValueEntries(java.io.DataOutputStream output)
                           throws java.lang.Exception
Output the data definition entries of a the ACE format

Parameters:
output - stream to write the data to
Throws:
java.lang.Exception

outputARFFHeaderEntries

public void outputARFFHeaderEntries(java.io.DataOutputStream output)
                             throws java.lang.Exception
Output the header entries of a Weka ARFF file. This should only be called once the full aggregator output has been calculated.

Parameters:
output - stream to write the data to
Throws:
java.lang.Exception

outputARFFValueEntries

public void outputARFFValueEntries(java.io.DataOutputStream output)
                            throws java.lang.Exception
Output the data in the ARFF body.

Parameters:
output -
Throws:
java.lang.Exception

setParameters

public void setParameters(java.lang.String[] featureNames,
                          java.lang.String[] params)
                   throws java.lang.Exception
Set parameters of the aggregator to the given values. For specific aggregators, the feature list is non-null and references currently loaded features. Throws exception if the feature list is null or contains invalid entries only if the aggregator is specific. Otherwise it is ignored. If the number of given parameters is greater (but not neccessarily less) than the number of actual paramaters, or if the parameters are in the wrong format, an aggregator that uses parameters may throw an exception. Both null and zero length array imply no parameters, but only null guarantees an exception if a parameter is present.

Parameters:
featureNames - strings matching features for specific aggregation.
params - strings that can be cast by toString to the appropriate parameter types.
Throws:
exceptions - for a number of format or null entry conditions (see above).
java.lang.Exception

calculateOffset

protected int calculateOffset(double[][][] values,
                              int[] featureList)

collapseFeatures

protected int[][] collapseFeatures(double[][][] values,
                                   int[] indecis)

getResults

public double[] getResults()
Returns the results in a double array (more useful for embedding than an XML pipe solution).