Ptolemy II 5.0 Release Notes

Ptolemy II is a set of Java packages supporting heterogeneous, concurrent modeling and design. Its kernel package supports clustered hierarchical graphs, which are collections of entities and relations between those entities. Its actor package extends the kernel so that entities have functionality and can communicate via the relations. Its domains extend the actor package by imposing models of computation on the interaction between entities. Examples of models of computation include discrete-event systems, dataflow, process networks, synchronous/reactive systems, and communicating sequential processes.

Ptolemy II includes a number of support packages, such as
data, providing a type system, data encapsulation and an expression parser,
plot, providing visual display of data,
math, providing matrix and vector math and signal processing functions, and
graph, providing graph-theoretic manipulations.

The three volumes of the Ptolemy II Design Document describes the Ptolemy II design and the implementation of the Java classes.

The "Using Vergil" describes how to use Vergil.

Complete List of Domains in Ptolemy II

Platforms

The core of Ptolemy II 5.0 is 100% Java, so it should work on any platform that has JDK 1.4 or later

We developed Ptolemy II 5.0 under Solaris 8 and Windows XP sp1 and with JDK1.4.2_04

Ptolemy II 5.0 will not compile under Java 1.3 because we use the java.lang.URI class, which is present only in Java 1.4 and later

There are various problems with Java 1.5.0-beta:

  • Web Start does not work
  • Caltrop does not work
  • Ptolemy II has been compiled and run under IBM JDK 1.5.0 and IBM JDK 1.4.1

    Major Features that are new in Ptolemy II 5.0

    Below are new features that were not present in Ptolemy II 3.x

    Other Features that are new in Ptolemy II 5.0

    New Demonstrations

    New and Enhanced Actor Libraries

    New Demonstrations of Older Capabilities

    Capabilities requiring additional software and/or hardware

    Additional Features

    New Actors

  • ptolemy.actor.lib
    ArrayAverage:
    (Mark Oliver, Edward A. Lee) An actor that outputs the average of the input array.
    ArrayLevelCrossing:
    (Edward A. Lee, Steve Neuendorffer) An actor that finds the index of the first item in an array to cross a specified threshold.
    ArrayPeakSearch:
    (Edward A. Lee) An actor that identifies peaks in an array.
    ArraySort:
    (Mark Oliver, Edward A. Lee) An actor that sorts the elements of an array.
    ArrayToElements:
    (Rachel Zhou) An actor that disassemble an ArrayToken to a multiport output.
    ComputeHistogram:
    (Steve Neuendorffer) Compute a histogram of input data.
    ElementsToArray:
    (Rachel Zhou) An actor that reads a token from each input channel to assemble an ArrayToken.
    Exec:
    (Christopher Hylands Brooks, Contributor: Edward A. Lee) Execute a command in a subprocess.
    Exit:
    (Edward A. Lee) A simple sink actor that consumes and discards input tokens and then calls System.exit() in wrapup.
    GradientAdaptiveLattice:
    (Steve Neuendorffer) An IIR filter actor that uses a direct form II implementation.
    SetVariable:
    (Edward A. Lee, Steve Neuendorffer) Set the value of a variable contained by the container.
  • ptolemy.actor.lib.comm
    Slicer:
    (Rachel Zhou) A Slicer, which functions as a decoder of the LineCoder of complex type.
    TrellisDecoder:
    (Rachel Zhou, contributor: Edward A. Lee) Decode convolutional code with non-antipodal constellation.
  • ptolemy.actor.lib.conversions
    StringToXML:
    (Yang Zhao) An actor that outputs data read from a URL.
  • ptolemy.actor.lib.hoc
    IterateOverArray:
    (Edward A. Lee, Steve Neuendorffer) An actor that iterates a contained actor over input arrays.
    MobileFunction:
    (Yang Zhao) An actor that apply dynamically defined functions to its input.
    MobileModel:
    (Yang Zhao) A composite actor that apply models dynamically.
    ModelReference:
    (Edward A. Lee) An atomic actor that executes a model specified by a file or URL.
  • ptolemy.actor.lib.io
    DirectoryListing:
    ( Christopher Hylands, Edward A. Lee) An actor that produces an array that lists the contents of a directory.
  • ptolemy.actor.lib.jai
    AdaptiveMedian:
    (James Yeh) An actor that performs adaptive median filtering on a double matrix.
    ImageToJAI:
    (James Yeh) Convert an ImageToken to a JAIImageToken.
    JAIConstant:
    (James Yeh, Steve Neuendorffer) An actor that produces a JAIImageToken with constant bands.
    JAIDataConvert:
    (James Yeh) An actor that changes the data format in a JAIImageToken.
    JAIPNGWriter:
    (James Yeh) An actor that writes to a PNG file.
    SaltAndPepper:
    () package ptolemy.actor.lib.jai;
  • ptolemy.actor.lib.javasound
    LiveSoundActor:
    (Steve Neuendorffer) An actor that reads in audio samples and plays the audio data.
  • ptolemy.actor.lib.jmf
    AudioPlayer:
    (James Yeh) An actor that plays a DataSource containing a music file.
    ImageToJMF:
    (Christopher Hylands Brooks) Convert an ImageToken into a JMFImageToken.
    MovieReader:
    (James Yeh) An actor that outputs frames from a video file.
    MovieWriter:
    (James Yeh) An actor that writes frames to a video file.
    StreamLoader:
    (James Yeh) Load a datasource from a URL.
    VideoPlayer:
    (James Yeh) An actor that displays a AVI, Quicktime or MPEG video file.
  • ptolemy.actor.lib.security
    CipherActor:
    (Christopher Hylands Brooks, Contributor: Rakesh Reddy) A base class for actors that encrypt and decrypt data.
    CryptographyActor:
    (Christopher Hylands Brooks, Contributor: Rakesh Reddy) A base class for cryptographic actors.
    KeyReader:
    ( Christopher Hylands Brooks) Read in a keystore from a FileParameter and output a Key.
    KeyStoreActor:
    ( Christopher Hylands Brooks) A baseclass for actors that read or write keystores.
    KeyToken:
    (Christopher Hylands Brooks, Based on TestToken by Steve Neuendorffer) Tokens that contain java.security.Keys
    KeyWriter:
    ( Christopher Brooks) Read in a Key from the input port and write it out to a KeyStore.
    PrivateKeyReader:
    ( Christopher Hylands Brooks) Open a keystore from a FileParameter and output a PrivateKey.
    PublicKeyReader:
    ( Christopher Brooks) Open a keystore from a FileParameter and output a PublicKey.
    SecretKey:
    (Christopher Hylands Brooks, Contributor: Rakesh Reddy) Create a secret key and send it on the output.
    SecretKeyReader:
    ( Christopher Hylands Brooks) Open a keystore from a FileParameter and output a SecretKey.
    SignatureActor:
    (Christopher Hylands Brooks, Contributor: Rakesh Reddy) A base class for signature actors.
    SignatureSigner:
    (Christopher Hylands Brooks, Contributor: Rakesh Reddy) Sign the input data using a private key.
    SignatureVerifier:
    (Christopher Hylands Brooks, Contributor: Rakesh Reddy) Verify the signature of the input data.
    SymmetricDecryption:
    (Christopher Hylands Brooks, Contributor: Rakesh Reddy) Decrypt an unsigned byte array using a symmetric algorithm.
    SymmetricEncryption:
    (Christopher Hylands Brooks, Contributor: Rakesh Reddy) Encrypt an unsigned byte array using a symmetric algorithm.
  • ptolemy.actor.lib.string
    StringCompare:
    (Vinay Krishnan, Daniel L\341zaro Cuadrado (contributor: Edward A. Lee)) An actor that computes a specified String comparison function on the two String inputs.
    StringFunction:
    (Mike Kofi Okyere, Ismael M. Sarmiento) Trim a string, convert a string to uppercase, or convert a string to lowercase depending on the user's selection.
    StringIndexOf:
    (Rakesh Reddy, Philip Baldwin, Edward A. Lee) Finds index of a string contained in a given text
    StringLength:
    (Edward A. Lee) Output the length of a string provided at the input.
    StringMatches:
    (Antonio Yordan-Nones, Colin Cochran (contributor Edward A. Lee)) Pattern match a string to a regular expression.
    StringReplace:
    (Antonio Yordan-Nones, Neil E. Turner, Edward A. Lee) Replace an instance of a string with another input string according to a regular expression.
    StringSubstring:
    (Neil E. Turner and Edward A. Lee) Output a substring of the string provided at the input.
  • ptolemy.actor.lib.x10
    ApplianceController:
    (Colin Cochran (contributor: Edward A. Lee)) An ApplianceController actor sends x10-appliance-module commands to the x10 network.
    CommandListener:
    (Colin Cochran and Edward A. Lee) This actor senses specified X10 commands.
    LampController:
    (Colin Cochran and Edward A. Lee) A LampController actor sends X10-light-module commands to the X10 network.
    LevelListener:
    (Colin Cochran and Edward A. Lee) This actor senses specified X10 commands.
    Listener:
    (Colin Cochran (contributor: Edward A. Lee)) Output X10 commands detected on the X10 network.
    Receiver:
    (Colin Cochran and Edward A. Lee) Receive x10 commands propagating through an x10 network.
    Sender:
    (Colin Cochran (contributor: Edward A. Lee)) Send commands to an x10 network.
    X10Interface:
    (Colin Cochran and Edward A. Lee) This class creates an x10 inteface device which can send and receive 10 commands to and from an x10 network.
  • ptolemy.actor.lib.xslt
    XSLTransformer:
    ( Yang Zhao, Christopher Hylands Brooks) An actor that read an XSLT file and apply it to its input.
  • ptolemy.domains.gr.lib
    Box2D:
    (Steve Neuendorffer) A class that represents a 2D rectangle in a GR model.
    Ellipse2D:
    (Ismael M. Sarmiento, Steve Neuendorffer) Create a rectangle, rounded rectangle, or ellipse with the size and position specified by the user.
    FigureInteractor:
    (Ismael M. Sarmiento) Listen for and handle events on Diva figures.
    GRShape2D:
    (Steve Neuendorffer, Ismael M. Sarmiento) An abstract base class for shaded GR Actors
    GRTransform2D:
    (Steve Neuendorffer) An abstract base class for transforming input 3D shape
    IconViewScreen3D:
    (Steve Neuendorffer) A GR scene viewer
    Image2D:
    (Ismael M. Sarmiento, Steve Neuendorffer) Create a figure from a user specified image file.
    Line2D:
    (Steve Neuendorffer, Ismael M. Sarmiento) Create a line with the endpoints provided by the user.
    Rectangle2D:
    (Ismael M. Sarmiento, Steve Neuendorffer) Create a rectangle, rounded rectangle, or ellipse with the size and position specified by the user.
    RectangularFigure2D:
    (Ismael M. Sarmiento, Steve Neuendorffer) Create a rectangle, rounded rectangle, or ellipse with the size and position specified by the user.
    Rotate2D:
    (Ismael M. Sarmiento, Steve Neuendorffer) Rotate a two-dimensional figure based on the angle and anchor point provided by the user.
    Scale2D:
    (Ismael M. Sarmiento, Steve Neuendorffer) Scale a two-dimensional figure based on the size provided by the user.
    Translate2D:
    (Steve Neuendorffer) An actor that translates the input 3D shape
    ViewScreen2D:
    (Steve Neuendorffer, Ismael M. Sarmiento) A GR scene viewer
  • ptolemy.domains.sdf.lib
    CountTrues:
    (Steve Neuendorffer) An actor that counts true inputs.
  • ptolemy.domains.sr.lib
    NonStrictTokenToExpression:
    (Haiyang Zheng) A non-strict actor that converts tokens into expressions.
  • ptolemy.vergil.actor.lib
    VisualModelReference:
    (Edward A. Lee) An atomic actor that executes a model specified by a file or URL.
  • Backward Compatibility

    Most models developed under Ptolemy II 1.0.1, 2.0.1, 3.0.2 or HyVisual 2.2-beta an Hyvisual 3.0 should run under Ptolemy II 5.0 The MoMLParser includes a list of backward compatibility filters that make certain changes on models when read, handling such issues as actors being moved or renamed and parameter names being changed. The filters themselves are defined in ptolemy.moml.filter. If you have developed your own actors under Ptolemy II 3.0.2 by writing your own Java files, you should recompile all your java code with the new release. In theory, copying the .class files should work, but recompiling is safer.

    Backward compatible issues that are handled automatically

  • ptolemy.moml.filter.AddEditorFactory: If a parameter has a _location, then add a VisibleParameterEditorFactory named _editorFactory.
  • ptolemy.moml.filter.AddIcon: Add specialized icons that display the value of one of the parameters.
    The affected actors are:
  • ptolemy.actor.lib.Const
  • ptolemy.actor.lib.MathFunction
  • ptolemy.actor.lib.TrigFunction
  • ptolemy.actor.lib.Scale
  • ptolemy.actor.lib.Expression
  • ptolemy.moml.filter.ClassChanges: change any class names that have been renamed and remove obsolete classes.
    Below are original class names followed by the new class names:
  • ptolemy.vergil.fsm.modal.ModalController -> ptolemy.domains.fsm.modal.ModalController
  • ptolemy.vergil.fsm.modal.ModalModel$ModalTableauFactory -> ptolemy.vergil.fsm.modal.ModalTableauFactory
  • ptolemy.vergil.fsm.modal.TransitionRefinement -> ptolemy.domains.fsm.modal.TransitionRefinement
  • ptolemy.vergil.fsm.modal.RefinementPort -> ptolemy.domains.fsm.modal.RefinementPort
  • ptolemy.vergil.fsm.modal.Refinement -> ptolemy.domains.fsm.modal.Refinement
  • ptolemy.kernel.util.VersionAttribute -> ptolemy.kernel.attributes.VersionAttribute
  • ptolemy.vergil.icon.ImageEditorIcon -> ptolemy.vergil.icon.ImageIcon
  • ptolemy.vergil.fsm.modal.ModalPort -> ptolemy.domains.fsm.modal.ModalPort
  • ptolemy.vergil.fsm.modal.TransitionRefinementPort -> ptolemy.domains.fsm.modal.TransitionRefinementPort
  • ptolemy.kernel.attributes.FileAttribute -> ptolemy.data.expr.FileParameter
  • ptolemy.domains.sdf.kernel.SDFIOPort -> ptolemy.actor.TypedIOPort
  • ptolemy.moml.Location -> ptolemy.kernel.util.Location
  • ptolemy.domains.fsm.lib.RelationList -> ptolemy.domains.fsm.kernel.RelationList
  • ptolemy.actor.lib.comm.SerialComm -> ptolemy.actor.lib.io.comm.SerialComm
  • ptolemy.actor.hoc.MultiInstanceComposite -> ptolemy.actor.lib.hoc.MultiInstanceComposite
  • ptolemy.vergil.fsm.modal.ModalModel -> ptolemy.domains.fsm.modal.ModalModel
  • Below are the classes to remove:
  • ptolemy.data.expr.NotEditableParameter
  • ptolemy.moml.filter.HideAnnotationNames: If an annotation name ends with 'annotation1', then add _hideName if necessary.
  • ptolemy.moml.filter.MultiportToSinglePort: Update any actor multiports that are now single ports.
    Below are the actors that are affected, along with the port name:
  • input ptolemy.actor.lib.gui.MatrixViewer
  • input ptolemy.domains.sdf.lib.Autocorrelation
  • output ptolemy.actor.lib.Const
  • output ptolemy.actor.lib.NonStrictTest
  • ptolemy.moml.filter.ParameterNameChanges: Update any Parameter names that have been renamed.
    Below are the actors that are affected, along with the Parameter name and the new name:
  • ptolemy.domains.pn.kernel.PNDirector
    Initial_queue_capacity -> initialQueueCapacity
  • ptolemy.moml.filter.PortClassChanges: Update any actor port classes that have been changed.
    Below are the actors that are affected, along with the old port class and the new port class:
  • ptolemy.domains.de.lib.VariableDelay.delay
  • ptolemy.domains.de.kernel.DEIOPort -> ptolemy.actor.parameters.ParameterPort
  • ptolemy.moml.filter.PortNameChanges: Update any actor port names that have been renamed.
    Below are the actors that are affected, along with the old port name and the new port name:
  • ptolemy.actor.lib.comm.Scrambler
  • initial -> initialState
  • ptolemy.actor.lib.conversions.CartesianToComplex
  • imag -> y
  • real -> x
  • ptolemy.actor.lib.comm.ConvolutionalCoder
  • uncodeBlockSize -> uncodedRate
  • initial -> initialState
  • ptolemy.actor.lib.comm.ViterbiDecoder
  • uncodeBlockSize -> uncodedRate
  • amplitude -> constellation
  • ptolemy.actor.lib.Sleep
  • delay -> sleepTime
  • ptolemy.actor.lib.conversions.ComplexToCartesian
  • imag -> y
  • real -> x
  • ptolemy.moml.filter.PropertyClassChanges: Update any actor port class names that have been renamed.
    Below are the actors that are affected, along with the port name and the new classname:
  • ptolemy.domains.sdf.lib.ArrayToSequence
  • ptolemy.domains.sdf.lib.Autocorrelation
  • ptolemy.domains.sdf.lib.BitsToInt
  • ptolemy.domains.sdf.lib.Chop
  • ptolemy.domains.sdf.lib.CountTrues
  • ptolemy.domains.sdf.lib.DoubleToMatrix
  • ptolemy.domains.sdf.lib.DownSample
  • ptolemy.domains.sdf.lib.FFT
  • ptolemy.domains.sdf.lib.FIR
  • ptolemy.domains.sdf.lib.IFFT
  • ptolemy.domains.sdf.lib.IntToBits
  • ptolemy.domains.sdf.lib.LineCoder
  • ptolemy.domains.sdf.lib.MatrixToDouble
  • ptolemy.domains.sdf.lib.MatrixToSequence
  • ptolemy.domains.sdf.lib.Repeat
  • ptolemy.domains.sdf.lib.SampleDelay
  • ptolemy.domains.sdf.lib.SequenceToArray
  • ptolemy.domains.sdf.lib.SequenceToMatrix
  • ptolemy.domains.sdf.lib.UpSample
  • ptolemy.domains.sdf.lib.VariableFIR
  • tokenProductionRate -> null
  • tokenInitProduction -> null
  • tokenConsumptionRate -> null
  • ptolemy.actor.lib.MathFunction
  • function -> ptolemy.data.expr.StringParameter
  • ptolemy.domains.sdf.lib.vq.ImageUnpartition
  • input -> ptolemy.actor.TypedIOPort
  • output -> ptolemy.actor.TypedIOPort
  • ptolemy.actor.lib.TrigFunction
  • function -> ptolemy.data.expr.StringParameter
  • ptolemy.actor.lib.Expression
  • expression -> ptolemy.kernel.util.StringAttribute
  • ptolemy.domains.sdf.lib.vq.HTVQEncode
  • input -> ptolemy.actor.TypedIOPort
  • output -> ptolemy.actor.TypedIOPort
  • ptolemy.domains.sdf.lib.vq.VQDecode
  • input -> ptolemy.actor.TypedIOPort
  • output -> ptolemy.actor.TypedIOPort
  • ptolemy.domains.sdf.lib.vq.ImagePartition
  • input -> ptolemy.actor.TypedIOPort
  • output -> ptolemy.actor.TypedIOPort
  • ptolemy.matlab.Expression
  • expression -> ptolemy.data.expr.StringParameter
  • Features that were new in previous Ptolemy II releases

    Features that were new in previous Ptolemy II releases

    Limitations

    Version 5.0 has the following limitations:

    Release Limitations

    Limitations in the Class Mechanism

    The class mechanism is highly preliminary and is likely to change in future releases. There are several known problems:

    Limitations in the Actor Libraries

    Limitations in the PN Domain

    The PN domain documents that it locally handles mutations. However, this is currently not true in the implementation. For the basic PN model, this doesn't really matter, since mutations happen pretty much the same as they would otherwise. (i.e. they are non-deterministic in when they execute) However, for timed PN models, there is actually some expressiveness lost, since timed PN models can locally execute mutations deterministically.

    Embedding a PN typed composite actor inside a non-process top level such as DE does not work. In fact embedding a process domain inside a non-process domain is likely to have problems. Profess Lee wrote:

    Yes, it looks as if the code is designed so that process domains (PN, CSP) can only be used within process domains. I'm not sure to what extent this is a limitation of the process domains vs. a semantic problem. What would PN mean within DE? Since PN has no well-defined notion of a "firing", how would you assign time stamps to the outputs of a PN actor? By default in DE, the time stamps of the outputs of an actor match those of the inputs that triggered the firing. There is no such notion in PN.

    Limitations in the User Interface

    Below are some of the limitations of Vergil, the Ptolemy II Graphical User Interface.

    Limitations in JNI

  • The Interface to C actors using the Java Native Interface is not available via the Windows Installer (or Web Start). To use the JNI/Ptolemy II interface, you must download Ptolemy II as source files and compile.
  • The JNI user interface does not permit creation of new JNI actors.

    If you follow the instructions in JNIUtilities, then eventually you will get a NameDuplicationException.

    The resulting model will be missing

    <property name="output" class="jni.Argument" value="false,false,true,double">
    </property>
    
    We are working with the original authors on a solution.
    In the short term, one workaround is to edit the xml file directly and add the appropriate property by hand.
  • JNI will not work with Hierarchical classes, subclasses, and inner classes
  • If Ptolemy exits when running the JNI model, then try using gcc-3.2.x in the Cygwin installer from http://ptolemy.eecs.berkeley.edu/ptolemyII/ptII5.0/cygwin.htm which includes gcc-3.2.x
  • Code Generation Limitations

    Code Generation limitations are covered on the Code Generation page.

    Missing Domains

    For limitations discovered after the release, see the Ptolemy II 5.0 website

    Last Updated: $Date: 2004/12/16 16:37:11 $