ptolemy.backtrack.automatic.ptolemy.actor.lib
Class ComputeHistogram

java.lang.Object
  extended by ptolemy.kernel.util.NamedObj
      extended by ptolemy.kernel.InstantiableNamedObj
          extended by ptolemy.kernel.Entity
              extended by ptolemy.kernel.ComponentEntity
                  extended by ptolemy.actor.AtomicActor
                      extended by ptolemy.actor.TypedAtomicActor
                          extended by ptolemy.backtrack.automatic.ptolemy.actor.lib.ComputeHistogram
All Implemented Interfaces:
java.io.Serializable, java.lang.Cloneable, Actor, Executable, FiringsRecordable, Initializable, TypedActor, Rollbackable, Changeable, Debuggable, DebugListener, Derivable, Instantiable, ModelErrorHandler, MoMLExportable, Moveable, Nameable

public class ComputeHistogram
extends TypedAtomicActor
implements Rollbackable

Compute a histogram.

The output array consists of a set of vertical bars, each representing a histogram bin. The height of the bar is the count of the number of inputs that have been observed that fall within that bin. The n-th bin represents values in the range (x - w/2 + o, x + w/2 + o), where w is the value of the binWidth parameter, and o is the value of the binOffset parameter. So for example, if o = w/2, then each bin represents values from nw to (n + 1)w for some integer n. The default offset is 0.5, half the default bin width, which is 1.0.

This actor has a legend parameter, which gives a comma-separated list of labels to attach to each dataset. Normally, the number of elements in this list should equal the number of input channels, although this is not enforced.

Since:
Ptolemy II 4.0
Version:
$Id: ComputeHistogram.java 57040 2010-01-27 20:52:32Z cxh $
Author:
Steve Neuendorffer
See Also:
Histogram, Serialized Form
Accepted Rating:
Red (cxh)
Proposed Rating:
Red (eal)

Nested Class Summary
 
Nested classes/interfaces inherited from class ptolemy.kernel.Entity
Entity.ContainedObjectsIterator
 
Field Summary
private  int[] _bins
           
private  double _binWidth
           
private  double _maximumValue
           
private  double _minimumValue
           
private  int _numberOfBins
           
protected  Checkpoint $CHECKPOINT
           
private  FieldRecord $RECORD$_bins
           
private  FieldRecord $RECORD$_binWidth
           
private  FieldRecord $RECORD$_maximumValue
           
private  FieldRecord $RECORD$_minimumValue
           
private  FieldRecord $RECORD$_numberOfBins
           
protected  CheckpointRecord $RECORD$$CHECKPOINT
           
private  FieldRecord[] $RECORDS
           
 TypedIOPort input
          The input port of type double.
 Parameter input_tokenConsumptionRate
          The parameter that determines the consumption rate of the input.
 PortParameter inputCount
          The number of tokens to compute the histogram for.
 Parameter maximumValue
          The highest value that will be recorded in the histogram.
 Parameter minimumValue
          The lowest value that will be recorded in the histogram.
 Parameter numberOfBins
          The number of bins.
 TypedIOPort output
          The input port of type array of integer.
 
Fields inherited from class ptolemy.actor.AtomicActor
_actorFiringListeners, _initializables, _notifyingActorFiring, _stopRequested
 
Fields inherited from class ptolemy.kernel.util.NamedObj
_changeListeners, _changeLock, _changeRequests, _debugging, _debugListeners, _elementName, _isPersistent, _verbose, _workspace, ATTRIBUTES, CLASSNAME, COMPLETE, CONTENTS, DEEP, FULLNAME, LINKS
 
Fields inherited from interface ptolemy.actor.Executable
COMPLETED, NOT_READY, STOP_ITERATING
 
Constructor Summary
ComputeHistogram(CompositeEntity container, java.lang.String name)
          Construct an actor with the given container and name.
 
Method Summary
private  void _addPoint(double value)
           
private  int[] $ASSIGN$_bins(int[] newValue)
           
private  double $ASSIGN$_binWidth(double newValue)
           
private  double $ASSIGN$_maximumValue(double newValue)
           
private  double $ASSIGN$_minimumValue(double newValue)
           
private  int $ASSIGN$_numberOfBins(int newValue)
           
private  int $ASSIGN$SPECIAL$_bins(int operator, int index0, long newValue)
           
private  int[] $BACKUP$_bins()
           
 void $COMMIT(long timestamp)
          Commit changes up to the given timestamp, but not including changes made at timestamp and afterward.
 Checkpoint $GET$CHECKPOINT()
          Get the checkpoint object that monitors this rollbackable object.
 void $RESTORE(long timestamp, boolean trim)
          Restore a previous state to all the private fields of this rollbackable object.
 java.lang.Object $SET$CHECKPOINT(Checkpoint checkpoint)
          Set the checkpoint object of this rollbackable object.
 void attributeChanged(Attribute attribute)
          If the parameter is binWidth or binOffset, then configure the histogram with the specified bin width or offset.
 java.lang.Object clone(Workspace workspace)
          Clone the actor into the specified workspace.
 void fire()
          Read at most one input token from each input channel and update the histogram.
 boolean prefire()
          Return false if the input does not have enough tokens to fire.
 
Methods inherited from class ptolemy.actor.TypedAtomicActor
_addPort, _fireAt, _fireAt, attributeTypeChanged, clone, newPort, typeConstraintList, typeConstraints
 
Methods inherited from class ptolemy.actor.AtomicActor
_actorFiring, _actorFiring, addActorFiringListener, addInitializable, connectionsChanged, createReceivers, declareDelayDependency, getCausalityInterface, getDirector, getExecutiveDirector, getManager, initialize, inputPortList, isFireFunctional, isStrict, iterate, newReceiver, outputPortList, postfire, preinitialize, pruneDependencies, recordFiring, removeActorFiringListener, removeDependency, removeInitializable, setContainer, stop, stopFire, terminate, wrapup
 
Methods inherited from class ptolemy.kernel.ComponentEntity
_adjustDeferrals, _checkContainer, _getContainedObject, _propagateExistence, getContainer, instantiate, isAtomic, isOpaque, moveDown, moveToFirst, moveToIndex, moveToLast, moveUp, propagateExistence, setName
 
Methods inherited from class ptolemy.kernel.Entity
_description, _exportMoMLContents, _removePort, _validateSettables, connectedPortList, connectedPorts, containedObjectsIterator, getAttribute, getPort, getPorts, linkedRelationList, linkedRelations, portList, removeAllPorts, setClassDefinition, uniqueName
 
Methods inherited from class ptolemy.kernel.InstantiableNamedObj
_setParent, exportMoML, getChildren, getElementName, getParent, getPrototypeList, isClassDefinition, isWithinClassDefinition
 
Methods inherited from class ptolemy.kernel.util.NamedObj
_addAttribute, _adjustOverride, _attachText, _cloneFixAttributeFields, _debug, _debug, _debug, _debug, _debug, _getIndentPrefix, _isMoMLSuppressed, _markContentsDerived, _propagateValue, _recordDecoratedAttributes, _removeAttribute, _splitName, _stripNumericSuffix, addChangeListener, addDebugListener, attributeList, attributeList, deepContains, depthInHierarchy, description, description, event, executeChangeRequests, exportMoML, exportMoML, exportMoML, exportMoML, exportMoMLPlain, getAttribute, getAttributes, getChangeListeners, getClassName, getDecoratorAttribute, getDecoratorAttributes, getDerivedLevel, getDerivedList, getDisplayName, getFullName, getModelErrorHandler, getName, getName, getSource, handleModelError, isDeferringChangeRequests, isOverridden, isPersistent, lazyContainedObjectsIterator, message, propagateValue, propagateValues, removeChangeListener, removeDebugListener, requestChange, setClassName, setDeferringChangeRequests, setDerivedLevel, setDisplayName, setModelErrorHandler, setPersistent, setSource, sortContainedObjects, toplevel, toString, validateSettables, workspace
 
Methods inherited from class java.lang.Object
equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface ptolemy.actor.Actor
createReceivers, getCausalityInterface, getDirector, getExecutiveDirector, getManager, inputPortList, newReceiver, outputPortList
 
Methods inherited from interface ptolemy.actor.Executable
isFireFunctional, isStrict, iterate, postfire, stop, stopFire, terminate
 
Methods inherited from interface ptolemy.actor.Initializable
addInitializable, initialize, preinitialize, removeInitializable, wrapup
 
Methods inherited from interface ptolemy.kernel.util.Nameable
description, getContainer, getDisplayName, getFullName, getName, getName, setName
 
Methods inherited from interface ptolemy.kernel.util.Derivable
getDerivedLevel, getDerivedList, propagateValue
 

Field Detail

$CHECKPOINT

protected transient Checkpoint $CHECKPOINT

minimumValue

public Parameter minimumValue
The lowest value that will be recorded in the histogram. This parameter has type double, with default value 0.0.


maximumValue

public Parameter maximumValue
The highest value that will be recorded in the histogram. This parameter has type double, with default value 1.0.


numberOfBins

public Parameter numberOfBins
The number of bins. This parameter has type int, with default value 10.


inputCount

public PortParameter inputCount
The number of tokens to compute the histogram for.


input_tokenConsumptionRate

public Parameter input_tokenConsumptionRate
The parameter that determines the consumption rate of the input.


input

public TypedIOPort input
The input port of type double.


output

public TypedIOPort output
The input port of type array of integer.


_bins

private int[] _bins

_minimumValue

private double _minimumValue

_maximumValue

private double _maximumValue

_binWidth

private double _binWidth

_numberOfBins

private int _numberOfBins

$RECORD$$CHECKPOINT

protected transient CheckpointRecord $RECORD$$CHECKPOINT

$RECORD$_bins

private transient FieldRecord $RECORD$_bins

$RECORD$_minimumValue

private transient FieldRecord $RECORD$_minimumValue

$RECORD$_maximumValue

private transient FieldRecord $RECORD$_maximumValue

$RECORD$_binWidth

private transient FieldRecord $RECORD$_binWidth

$RECORD$_numberOfBins

private transient FieldRecord $RECORD$_numberOfBins

$RECORDS

private transient FieldRecord[] $RECORDS
Constructor Detail

ComputeHistogram

public ComputeHistogram(CompositeEntity container,
                        java.lang.String name)
                 throws IllegalActionException,
                        NameDuplicationException
Construct an actor with the given container and name.

Parameters:
container - The container.
name - The name of this actor.
Throws:
IllegalActionException - If the actor cannot be contained by the proposed container.
NameDuplicationException - If the container already has an actor with this name.
Method Detail

attributeChanged

public void attributeChanged(Attribute attribute)
                      throws IllegalActionException
If the parameter is binWidth or binOffset, then configure the histogram with the specified bin width or offset.

Overrides:
attributeChanged in class NamedObj
Parameters:
attribute - The attribute that changed.
Throws:
IllegalActionException - If the bin width is not positive.

clone

public java.lang.Object clone(Workspace workspace)
                       throws java.lang.CloneNotSupportedException
Clone the actor into the specified workspace.

Overrides:
clone in class AtomicActor
Parameters:
workspace - The workspace for the new object.
Returns:
A new actor.
Throws:
java.lang.CloneNotSupportedException - If a derived class contains an attribute that cannot be cloned.
See Also:
NamedObj.exportMoML(Writer, int, String), NamedObj.setDeferringChangeRequests(boolean)

fire

public void fire()
          throws IllegalActionException
Read at most one input token from each input channel and update the histogram.

Specified by:
fire in interface Executable
Overrides:
fire in class AtomicActor
Throws:
IllegalActionException - If there is no director.

prefire

public boolean prefire()
                throws IllegalActionException
Return false if the input does not have enough tokens to fire. Otherwise, return true.

Specified by:
prefire in interface Executable
Overrides:
prefire in class AtomicActor
Returns:
False if the number of input tokens available is not at least equal to the decimation parameter multiplied by the blockSize parameter.
Throws:
IllegalActionException - If the superclass throws it.

_addPoint

private void _addPoint(double value)

$ASSIGN$_bins

private final int[] $ASSIGN$_bins(int[] newValue)

$ASSIGN$SPECIAL$_bins

private final int $ASSIGN$SPECIAL$_bins(int operator,
                                        int index0,
                                        long newValue)

$BACKUP$_bins

private final int[] $BACKUP$_bins()

$ASSIGN$_minimumValue

private final double $ASSIGN$_minimumValue(double newValue)

$ASSIGN$_maximumValue

private final double $ASSIGN$_maximumValue(double newValue)

$ASSIGN$_binWidth

private final double $ASSIGN$_binWidth(double newValue)

$ASSIGN$_numberOfBins

private final int $ASSIGN$_numberOfBins(int newValue)

$COMMIT

public void $COMMIT(long timestamp)
Description copied from interface: Rollbackable
Commit changes up to the given timestamp, but not including changes made at timestamp and afterward.

Specified by:
$COMMIT in interface Rollbackable
Parameters:
timestamp - The timestamp.

$RESTORE

public void $RESTORE(long timestamp,
                     boolean trim)
Description copied from interface: Rollbackable
Restore a previous state to all the private fields of this rollbackable object.

Specified by:
$RESTORE in interface Rollbackable
Parameters:
timestamp - The timestamp taken at the time when the previous state was recorded.
trim - Whether to delete the records used for the rollback.
See Also:
Checkpoint.rollback(long, boolean)

$GET$CHECKPOINT

public final Checkpoint $GET$CHECKPOINT()
Description copied from interface: Rollbackable
Get the checkpoint object that monitors this rollbackable object.

Specified by:
$GET$CHECKPOINT in interface Rollbackable
Returns:
The checkpoint object.

$SET$CHECKPOINT

public final java.lang.Object $SET$CHECKPOINT(Checkpoint checkpoint)
Description copied from interface: Rollbackable
Set the checkpoint object of this rollbackable object. A merge operation is performed on the current checkpoint object and the new checkpoint object, so that the two checkpoint objects monitor the same set of objects when this function returns.

Specified by:
$SET$CHECKPOINT in interface Rollbackable
Parameters:
checkpoint - The new checkpoint object.
Returns:
This rollbackable object itself.
See Also:
Checkpoint.setCheckpoint(Checkpoint)