<div dir="ltr"><div>Hi Brandon, <br><br>If the JSON data follows the typical format of name : value pairs, then JSONToToken can be used to convert the data into a record in Kepler or Ptolemy.  <br><br></div><div>I've attached a sample model.  I created it in Ptolemy and tried it out in Kepler, it works OK!  It doesn't pop up any output windows, but if you double-click on each "Test" actor, this will show the output produced.<br><br></div><div>This example uses an energy data feed sample from the Berkeley sMAP campus energy monitoring service.  The JSON starts out as a string containing a record with a "uuid' field (value: a string) and a "Readings" field (value: an array of arrays of doubles - here, an array of [timestamp, reading] pairs).   </div><div><br></div><div>For your model, you'll need to manually annotate the type on the output port of the JSONToToken actor.  There are notes in the example.  The Kepler actor options menu is a bit different than Ptolemy, try:<br></div><div>Right click -> Configure Ports<br><br></div><div>Curly braces {} indicate a record type and arrayType() indicates an array type.<br></div><div><br></div><div>You are right - this is not a well documented feature!  The only Ptolemy models that happen to use it involve the web server, which isn't needed if you're just receiving data.  Plus a couple really basic test cases.<br></div><div><br></div><div>Edward and Christopher - I added this example as a test case in the Ptolemy repository at:<br></div><div>$PTII/ptolemy/actor/data/lib/conversions/json/test/auto/JSONEnergyExample.xml<br><br></div><div>Best,<br>Beth<br><br><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Dec 15, 2014 at 9:44 PM, Christopher Brooks <span dir="ltr"><<a href="mailto:cxh@eecs.berkeley.edu" target="_blank">cxh@eecs.berkeley.edu</a>></span> wrote:<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  
    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <div>Hi Brandon,<br>
      <br>
      Backward type inference can help with these JSONToToken models,
      see<br>
      <br>
      <a href="http://chess.eecs.berkeley.edu/pubs/1035.html" target="_blank">http://chess.eecs.berkeley.edu/pubs/1035.html</a> - a poster<br>
      <br>
<a href="http://ptolemy.eecs.berkeley.edu/books/Systems/chapters/TheTypeSystem.pdf" target="_blank">http://ptolemy.eecs.berkeley.edu/books/Systems/chapters/TheTypeSystem.pdf</a><br>
      <br>
      In Ptolemy II, to enable backward type conversion in Vergil, right
      click on  the canvas, select Customize, then Configure, then check
      the  enableBackwardTypeInference box.<br>
      <br>
      In Kepler, it might be necessary to do something different, see
<a href="http://lists.nceas.ucsb.edu/kepler/pipermail/kepler-users/2013-October/002542.html" target="_blank">http://lists.nceas.ucsb.edu/kepler/pipermail/kepler-users/2013-October/002542.html</a><br>
      <br>
      For the JSON actor and Backward Type Conversion, see Marten's
      poster at <a href="http://chess.eecs.berkeley.edu/pubs/1035.html" target="_blank">http://chess.eecs.berkeley.edu/pubs/1035.html</a><br>
      <br>
      See also
      <a href="http://sisyphus.eecs.berkeley.edu:8079/hudson/job/ptII/javadoc/ptolemy/actor/lib/conversions/json/JSONToToken.html" target="_blank">http://sisyphus.eecs.berkeley.edu:8079/hudson/job/ptII/javadoc/ptolemy/actor/lib/conversions/json/JSONToToken.html</a> 
      and
      <a href="http://sisyphus.eecs.berkeley.edu:8079/hudson/job/ptII/javadoc/ptolemy/actor/lib/conversions/json/TokenToJSON.html" target="_blank">http://sisyphus.eecs.berkeley.edu:8079/hudson/job/ptII/javadoc/ptolemy/actor/lib/conversions/json/TokenToJSON.html</a>
      though there is not much there.<br>
      <br>
      Martin's tech report "Maximally Permissive Composition of Actors
      in Ptolemy II" at
      
      <a href="http://www.eecs.berkeley.edu/Pubs/TechRpts/2013/EECS-2013-19.html" target="_blank">http://www.eecs.berkeley.edu/Pubs/TechRpts/2013/EECS-2013-19.html</a>
      also has some info about JSONToToken.<br>
      <br>
      <br>
      <br>
      In a multicontributor environment, I suggest the following:<br>
      <br>
      - Where you can, use actor oriented classes to define models. 
      This means that people can "own" blocks of functionality and
      others can instantiate them.  If the original definition changes,
      then the users will see those changes.<br>
      <br>
      - A nightly build with a test suite goes a long way to helping
      find problems early.  There is a Test actor that can be used in
      models to create regression tests. $PTII/doc/coding/testing.htm
      has details.<br>
      <br>
      - In your version control system, always work at the head,
      branching can consume resources when doing a merge.<br>
      <br>
      _Christopher<div><div class="h5"><br>
      <br>
      On 12/10/14 7:58 PM, Edward A. Lee wrote:<br>
    </div></div></div><div><div class="h5">
    <blockquote type="cite">
      <br>
      In the underlying Ptolemy system, we have a JavaScript actor that
      would be ideal for this...
      <br>
      Not sure whether this is exposed in the Kepler libraries...
      <br>
      <br>
      Edward
      <br>
      <br>
      On 12/10/14, 2:16 PM, Brandon Kuczenski wrote:
      <br>
      <blockquote type="cite">Hi all,
        <br>
        <br>
        I'm new to Kepler and I'm trying to build a minimal demo to show
        my
        <br>
        research group how the tool works.  I have two questions, and
        the first
        <br>
        is a two-parter.
        <br>
        <br>
        1a- My first application is to pull down data from a web service
        (using
        <br>
        RESTService) and display it.  In the WebService demo (Getting
        Started
        <br>
        06) I see the XMLDisassembler actor is used.  However, my data
        come back
        <br>
        in JSON format- It does not appear that there is a JSON analog
        for
        <br>
        XMLDisassembler.  Any recommendations on how I could parse the
        data?
        <br>
        <br>
        1b- One thing I tried was JSONToToken, thinking that a token was
        <br>
        something that might be more easily manipulated; it did not turn
        out to
        <br>
        be.  In fact, I can't really find anything that I can connect to
        the
        <br>
        output of a JSONToToken actor.  Is there a way for me to find
        actorsI
        <br>
        with input ports that are valid terminals for a given output
        port, or
        <br>
        vice-versa?
        <br>
        <br>
        2- The team I'm working with includes about 14 people across
        several
        <br>
        academic departments.  Are there any documents or helpful
        resources that
        <br>
        give practical advice on working with Kepler in a
        multi-contributor
        <br>
        environment?  None of us has used the tool before.
        <br>
        <br>
        BTW it seems some actors (RESTService and JSON-anything, for
        instance)
        <br>
        are missing from the Actor Reference.
        <br>
        <br>
        Thanks in advance,
        <br>
        Brandon
        <br>
        <br>
        <br>
      </blockquote>
      <br>
      _______________________________________________
      <br>
      Kepler-users mailing list
      <br>
      <a href="mailto:Kepler-users@kepler-project.org" target="_blank">Kepler-users@kepler-project.org</a>
      <br>
      <a href="http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users" target="_blank">http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users</a>
      <br>
    </blockquote>
    <br>
    <br>
    </div></div><span class="HOEnZb"><font color="#888888"><pre cols="72">-- 
Christopher Brooks, PMP                       University of California
Academic Program Manager & Software Engineer  US Mail: 337 Cory Hall
CHESS/iCyPhy/Ptolemy/TerraSwarm               Berkeley, CA 94720-1774
<a href="mailto:cxh@eecs.berkeley.edu" target="_blank">cxh@eecs.berkeley.edu</a>, <a href="tel:707.332.0670" value="+17073320670" target="_blank">707.332.0670</a>           (Office: 545Q Cory)
</pre>
  </font></span></div>

<br>_______________________________________________<br>
Kepler-users mailing list<br>
<a href="mailto:Kepler-users@kepler-project.org">Kepler-users@kepler-project.org</a><br>
<a href="http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users" target="_blank">http://lists.nceas.ucsb.edu/kepler/mailman/listinfo/kepler-users</a><br>
<br></blockquote></div></div>