weka.experiment
Class Experiment

java.lang.Object
  |
  +--weka.experiment.Experiment
All Implemented Interfaces:
OptionHandler, java.io.Serializable
Direct Known Subclasses:
RemoteExperiment

public class Experiment
extends java.lang.Object
implements java.io.Serializable, OptionHandler

Holds all the necessary configuration information for a standard type experiment. This object is able to be serialized for storage on disk.

Version:
$Revision: 1.19 $
Author:
Len Trigg (trigg@cs.waikato.ac.nz)
See Also:
Serialized Form

Field Summary
static java.lang.String FILE_EXTENSION
          The filename extension that should be used for experiment files
 
Constructor Summary
Experiment()
           
 
Method Summary
 void advanceCounters()
          Increments iteration counters appropriately.
 void classFirst(boolean flag)
          Sets whether the first attribute is treated as the class for all datasets involved in the experiment.
 boolean getAdvanceDataSetFirst()
          Get the value of m_DataSetFirstFirst.
 int getCurrentDatasetNumber()
          When an experiment is running, this returns the current dataset number.
 int getCurrentPropertyNumber()
          When an experiment is running, this returns the index of the current custom property value.
 int getCurrentRunNumber()
          When an experiment is running, this returns the current run number.
 javax.swing.DefaultListModel getDatasets()
          Gets the datasets in the experiment.
 java.lang.String getNotes()
          Get the user notes.
 java.lang.String[] getOptions()
          Gets the current settings of the experiment iterator.
 java.lang.Object getPropertyArray()
          Gets the array of values to set the custom property to.
 int getPropertyArrayLength()
          Gets the number of custom iterator values that have been defined for the experiment.
 java.lang.Object getPropertyArrayValue(int index)
          Gets a specified value from the custom property iterator array.
 PropertyNode[] getPropertyPath()
          Gets the path of properties taken to get to the custom property to iterate over.
 ResultListener getResultListener()
          Gets the result listener where results will be sent.
 ResultProducer getResultProducer()
          Get the result producer used for the current experiment.
 int getRunLower()
          Get the lower run number for the experiment.
 int getRunUpper()
          Get the upper run number for the experiment.
 boolean getUsePropertyIterator()
          Gets whether the custom property iterator should be used.
 boolean hasMoreIterations()
          Returns true if there are more iterations to carry out in the experiment.
 void initialize()
          Prepares an experiment for running, initializing current iterator settings.
 java.util.Enumeration listOptions()
          Returns an enumeration describing the available options..
static void main(java.lang.String[] args)
          Configures/Runs the Experiment from the command line.
 void nextIteration()
          Carries out the next iteration of the experiment.
 void postProcess()
          Signals that the experiment is finished running, so that cleanup can be done.
 void runExperiment()
          Runs all iterations of the experiment, continuing past errors.
 void setAdvanceDataSetFirst(boolean newAdvanceDataSetFirst)
          Set the value of m_AdvanceDataSetFirst.
 void setDatasets(javax.swing.DefaultListModel ds)
          Set the datasets to use in the experiment
 void setNotes(java.lang.String newNotes)
          Set the user notes.
 void setOptions(java.lang.String[] options)
          Parses a given list of options.
 void setPropertyArray(java.lang.Object newPropArray)
          Sets the array of values to set the custom property to.
 void setPropertyPath(PropertyNode[] newPropertyPath)
          Sets the path of properties taken to get to the custom property to iterate over.
 void setResultListener(ResultListener newResultListener)
          Sets the result listener where results will be sent.
 void setResultProducer(ResultProducer newResultProducer)
          Set the result producer used for the current experiment.
 void setRunLower(int newRunLower)
          Set the lower run number for the experiment.
 void setRunUpper(int newRunUpper)
          Set the upper run number for the experiment.
 void setUsePropertyIterator(boolean newUsePropertyIterator)
          Sets whether the custom property iterator should be used.
 java.lang.String toString()
          Gets a string representation of the experiment configuration.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

FILE_EXTENSION

public static java.lang.String FILE_EXTENSION
The filename extension that should be used for experiment files

Constructor Detail

Experiment

public Experiment()
Method Detail

classFirst

public void classFirst(boolean flag)
Sets whether the first attribute is treated as the class for all datasets involved in the experiment. This information is not output with the result of the experiments!


getAdvanceDataSetFirst

public boolean getAdvanceDataSetFirst()
Get the value of m_DataSetFirstFirst.

Returns:
Value of m_DataSetFirstFirst.

setAdvanceDataSetFirst

public void setAdvanceDataSetFirst(boolean newAdvanceDataSetFirst)
Set the value of m_AdvanceDataSetFirst.


getUsePropertyIterator

public boolean getUsePropertyIterator()
Gets whether the custom property iterator should be used.

Returns:
true if so

setUsePropertyIterator

public void setUsePropertyIterator(boolean newUsePropertyIterator)
Sets whether the custom property iterator should be used.

Parameters:
newUsePropertyIterator - true if so

getPropertyPath

public PropertyNode[] getPropertyPath()
Gets the path of properties taken to get to the custom property to iterate over.

Returns:
an array of PropertyNodes

setPropertyPath

public void setPropertyPath(PropertyNode[] newPropertyPath)
Sets the path of properties taken to get to the custom property to iterate over.

Parameters:
newPropertyPath - an array of PropertyNodes

setPropertyArray

public void setPropertyArray(java.lang.Object newPropArray)
Sets the array of values to set the custom property to.

Parameters:
newPropArray - a value of type Object which should be an array of the appropriate values.

getPropertyArray

public java.lang.Object getPropertyArray()
Gets the array of values to set the custom property to.

Returns:
a value of type Object which should be an array of the appropriate values.

getPropertyArrayLength

public int getPropertyArrayLength()
Gets the number of custom iterator values that have been defined for the experiment.

Returns:
the number of custom property iterator values.

getPropertyArrayValue

public java.lang.Object getPropertyArrayValue(int index)
Gets a specified value from the custom property iterator array.

Parameters:
index - the index of the value wanted
Returns:
the property array value

getCurrentRunNumber

public int getCurrentRunNumber()
When an experiment is running, this returns the current run number.

Returns:
the current run number.

getCurrentDatasetNumber

public int getCurrentDatasetNumber()
When an experiment is running, this returns the current dataset number.

Returns:
the current dataset number.

getCurrentPropertyNumber

public int getCurrentPropertyNumber()
When an experiment is running, this returns the index of the current custom property value.

Returns:
the index of the current custom property value.

initialize

public void initialize()
                throws java.lang.Exception
Prepares an experiment for running, initializing current iterator settings.

Throws:
java.lang.Exception - if an error occurs

hasMoreIterations

public boolean hasMoreIterations()
Returns true if there are more iterations to carry out in the experiment.

Returns:
true if so

nextIteration

public void nextIteration()
                   throws java.lang.Exception
Carries out the next iteration of the experiment.

Throws:
java.lang.Exception - if an error occurs

advanceCounters

public void advanceCounters()
Increments iteration counters appropriately.


runExperiment

public void runExperiment()
Runs all iterations of the experiment, continuing past errors.


postProcess

public void postProcess()
                 throws java.lang.Exception
Signals that the experiment is finished running, so that cleanup can be done.

Throws:
java.lang.Exception - if an error occurs

getDatasets

public javax.swing.DefaultListModel getDatasets()
Gets the datasets in the experiment.

Returns:
the datasets in the experiment.

setDatasets

public void setDatasets(javax.swing.DefaultListModel ds)
Set the datasets to use in the experiment

Parameters:
ds - the list of datasets to use

getResultListener

public ResultListener getResultListener()
Gets the result listener where results will be sent.

Returns:
the result listener where results will be sent.

setResultListener

public void setResultListener(ResultListener newResultListener)
Sets the result listener where results will be sent.

Parameters:
newResultListener - the result listener where results will be sent.

getResultProducer

public ResultProducer getResultProducer()
Get the result producer used for the current experiment.

Returns:
the result producer used for the current experiment.

setResultProducer

public void setResultProducer(ResultProducer newResultProducer)
Set the result producer used for the current experiment.

Parameters:
newResultProducer - result producer to use for the current experiment.

getRunUpper

public int getRunUpper()
Get the upper run number for the experiment.

Returns:
the upper run number for the experiment.

setRunUpper

public void setRunUpper(int newRunUpper)
Set the upper run number for the experiment.

Parameters:
newRunUpper - the upper run number for the experiment.

getRunLower

public int getRunLower()
Get the lower run number for the experiment.

Returns:
the lower run number for the experiment.

setRunLower

public void setRunLower(int newRunLower)
Set the lower run number for the experiment.

Parameters:
newRunLower - the lower run number for the experiment.

getNotes

public java.lang.String getNotes()
Get the user notes.

Returns:
User notes associated with the experiment.

setNotes

public void setNotes(java.lang.String newNotes)
Set the user notes.

Parameters:
newNotes - New user notes.

listOptions

public java.util.Enumeration listOptions()
Returns an enumeration describing the available options..

Specified by:
listOptions in interface OptionHandler
Returns:
an enumeration of all the available options.

setOptions

public void setOptions(java.lang.String[] options)
                throws java.lang.Exception
Parses a given list of options. Valid options are:

-L num
The lower run number to start the experiment from. (default 1)

-U num
The upper run number to end the experiment at (inclusive). (default 10)

-T arff_file
The dataset to run the experiment on. (required, may be specified multiple times)

-P class_name
The full class name of a ResultProducer (required). eg: weka.experiment.RandomSplitResultProducer

-D "class_name"
The full class name of a ResultListener followed by any options. If options are supplied then full string must be enclosed in quotes. (required). eg: "weka.experiment.CSVResultListener -O outfile.csv"

All option after -- will be passed to the result producer.

Specified by:
setOptions in interface OptionHandler
Parameters:
options - the list of options as an array of strings
Throws:
java.lang.Exception - if an option is not supported

getOptions

public java.lang.String[] getOptions()
Gets the current settings of the experiment iterator.

Specified by:
getOptions in interface OptionHandler
Returns:
an array of strings suitable for passing to setOptions

toString

public java.lang.String toString()
Gets a string representation of the experiment configuration.

Overrides:
toString in class java.lang.Object
Returns:
a value of type 'String'

main

public static void main(java.lang.String[] args)
Configures/Runs the Experiment from the command line.

Parameters:
args - command line arguments to the Experiment.


Copyright (c) 2003 David Lindsay, Computer Learning Research Centre, Dept. Computer Science, Royal Holloway, University of London