[kepler-users] PythonScript

Edward A. Lee eal at eecs.berkeley.edu
Thu Dec 4 08:56:45 PST 2008



Rick Moore wrote:
> I just downloaded and installed Kepler for some experimenting. I want to 
> use the PythonScript actor in one of the experiments, but can't figure 
> out where it is located in the actor pane, though I did find the demos. 
> Documentation of this actor appears to be non-existant as even Google 
> search yields no useful results.
> 
> Any help would be greatly appreciated.
> -- 
> 
> */Rick Moore /*
> 

Hmm... In Ptolemy II, when I do "Get Documentation" I get this...
Not sure why it's not there in Kepler...

Edward

-------


An actor of this class executes a Python script. There are two versions 
of this actor provided in the Vergil libraries. The one called 
"PythonActor" has an input port and an output port; to view or edit its 
Python script, look inside the actor. The second version is called 
"PythonScript" and has no ports; to view or edit its Python script, 
select Configure (or double click on the icon).

Upon creation, this actor has no ports, and no parameters other than 
script; The script parameter has visibility EXPERT, and therefore does 
not normally show up in a configure dialog for the actor. To make the 
script visible and editable, you have two options. Including an instance 
of an attribute of class TextEditorConfigureFactory (with its 
attributeName parameter set to script) results in behavior like that of 
the Vergil "PythonScript." That is, to edit the script, you Configure 
the actor. If instead you include an instance of 
TextEditorTableauFactory, then to edit the script you look inside the 
actor. Use the latter if you wish to add additional attributes to the 
actor and hide the script from the users. Use the former if the script 
is the main means by which users interact with the actor.

Upon creation, this actor has no ports, and no parameters other than 
script; The script parameter has visibility EXPERT, and therefore does 
not normally show up in a configure dialog for the actor. To make the 
script visible and editable, you have two options. Including an instance 
of an attribute of class TextEditorConfigureFactory (with its 
attributeName parameter set to script) results in behavior like that of 
the Vergil "PythonScript." That is, to edit the script, you Configure 
the actor. If instead you include an instance of 
TextEditorTableauFactory, then to edit the script you look inside the 
actor. Use the latter if you wish to add additional attributes to the 
actor and hide the script from the users. Use the former if the script 
is the main means by which users interact with the actor.
The functionality of an actor of this type is given by a Python script. 
As an example, a simplified version of the Scale actor can be 
implemented by the following script:

  1.  class Main :
  2.    "scale"
  3.    def fire(self) :
  4.      if not self.input.hasToken(0) :
  5.        return
  6.      s = self.scale.getToken()
  7.      t = self.input.get(0)
  8.      self.output.broadcast(s.multiply(t))

Line 1 defines a Python class Main. This name is fixed. An instance of 
this class is created when the actor is initialized. Line 2 is a 
description of the purpose of the script. Lines 3-8 define the fire() 
method, which is called by the fire() method of this actor. In the 
method body, input and output are ports that have to have been added to 
the actor, and scale is a parameter that has to have been added to the 
actor (these can be added in the XML that defines the actor instance in 
an actor library). The Main class can provide other methods in the 
Executable interface as needed.

In the script, use self.actor to access the actor. For example, 
self.actor.getDirector() returns the current director of the actor. For 
debugging, use self.actor.debug(someMessage). The final message sent to 
the debug listeners of the actor will have the string "From script: " 
inserted at the beginning. To avoid generating the debug message when 
there are no listeners, use:

  if self.actor.isDebugging() :
  self.actor.debug(someMessage)

This class relies on Jython, which is a Java implementation of Python.
As of 1/2/2006, $PTII/lib/jython.jar was based on Jython 1.1 .
The Jython Registry - information about how to set the search path.
Follow the links below for more information about the Python language, 
licensing, downloads, etc.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: eal.vcf
Type: text/x-vcard
Size: 351 bytes
Desc: not available
URL: <http://lists.nceas.ucsb.edu/kepler/pipermail/kepler-users/attachments/20081204/fecec53b/attachment.vcf>


More information about the Kepler-users mailing list