#### Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Options

# Petri net software specification

## Petri net simulation editor specification

This page has for working notes on software evaluation, standards, test design and specification references for online Petri net editors.

### Brief

Some possible criteria for evaluating Petri net software packages are listed below.

A secure interactive online editor which:

• runs in any web browser

• has drag-and-drop icons for place, transition and arc graphics with text annotations.

• can construct any variety of Petri net and store it in a database

• can simulate, animate, log and store for reuse the execution histories of transitions

• can input complex probabilistic guard and firing rules for transitions as mathematical formulae entered via appropriate mathematical operator icons and parameter text entry boxes.

### Standards

L. M. Hillah, F. Kordon, L. Petrucci, and N. Treves, Petri Net Standards, a survey

### References

• Options
1.
edited September 2013

I guess "WDYT?" = "what do you think?" I don't know what "RNG TBD" means. (I don't like acronyms: they're a way for the writer to save one minute and making dozens of readers waste a minute.)

But anyway: are you thinking of a "Petri net simulator" or a "universal modeling tool" here? Even though Petri nets come in many flavors, some of which are Turing-complete, I don't think of Petri nets as a good way to model everything, so I wouldn't call them "universal" in a practical sense.

A good Petri net simulator will, I think, be vastly easier than a good "universal modelling tool".

If I were going to get into the "unified modelling tool" game, I'd start by looking at Unified Modelling Language, and being a mathematician, I'd try to understand its semantics in a good way or change it so it had a good semantics. A more practical person would start trying to use UML and see how to improve it.

Comment Source:I guess "WDYT?" = "what do you think?" I don't know what "RNG TBD" means. (I don't like acronyms: they're a way for the writer to save one minute and making dozens of readers waste a minute.) But anyway: are you thinking of a "Petri net simulator" or a "universal modeling tool" here? Even though Petri nets come in many flavors, some of which are Turing-complete, I don't think of Petri nets as a good way to model _everything_, so I wouldn't call them "universal" in a practical sense. A good Petri net simulator will, I think, be vastly easier than a good "universal modelling tool". If I were going to get into the "unified modelling tool" game, I'd start by looking at [Unified Modelling Language](http://www.tutorialspoint.com/uml/uml_building_blocks.htm), and being a mathematician, I'd try to understand its semantics in a good way or change it so it had a good semantics. A more practical person would start trying to _use_ UML and see how to improve it.
• Options
2.
edited September 2013

To Be Done was just a place holder.

Relax-NG is the formalism the Petri net markup language (PNML) standard is specified in.

John wrote:

Even though Petri nets come in many flavors, some of which are Turing-complete, I don’t think of Petri nets as a good way to model everything, so I wouldn’t call them “universal” in a practical sense.

I remember you were interested in non-Turing-complete Petri nets.

What other tools do you think modellers need?

UML is just a notation, To be of any use the diagrams have to be annotated with statements in Object Constraint Language (OCL) which is Turing-complete.

Relax-NG concise (.rnc) is an improved convention for specifying extensible markup language (XML) schemas and is a replacement for Data Type Definitions (DTD)s; a description of the fields of a database might be an easy way to think of them. The Intenational Standards Organisation (ISO) Petri net grammar is specified in RNG.

The PNML standard is about 100 pages long, mandates an object hierarchy for interchange of graphical Petri nets and costs somewhere near $400 dollars. I have not yet found any example of Petri nets being passed between different tools using this standard. Comment Source:Sorry about the undefined acronyms. I've linked or deleted them. To Be Done was just a place holder. [Relax-NG](http://wikipedia.org/Relax-NG) is the formalism the [Petri net markup language (PNML) standard](http://pnml.org) is specified in. John wrote: > Even though Petri nets come in many flavors, some of which are Turing-complete, I don’t think of Petri nets as a good way to model everything, so I wouldn’t call them “universal” in a practical sense. I remember you were interested in non-Turing-complete Petri nets. What other tools do you think modellers need? UML is just a notation, To be of any use the diagrams have to be annotated with statements in [Object Constraint Language (OCL)](http://wikipedia.com/Object_constraint_language) which is Turing-complete. Relax-NG concise (.rnc) is an improved convention for specifying extensible markup language [(XML) schemas](http://wikipedia.org/XML_schema) and is a replacement for [Data Type Definitions (DTD)](http://wikipedia.org/Data_type_definition)s; a description of the fields of a database might be an easy way to think of them. The [Intenational Standards Organisation (ISO) Petri net grammar](http://www.pnml.org/) is specified in RNG. The PNML standard is about 100 pages long, mandates an object hierarchy for interchange of graphical Petri nets and costs somewhere near$400 dollars. I have not yet found any example of Petri nets being passed between different tools using this standard.
• Options
3.

After John (Baez)'s return to Petri nets I've started a new wiki page called Experiments in Petri net specification linked to Dave (Tanzer), Ken (Webb)'s Python implementations and my first-cut Haskell unsafe golfing implementation of Ming Chen's "Matrix representation of Petri nets" from 2013/2014. (FWIW "golf" is getting in the hole with the minimal number of strokes, 17 lines in this case (11 without the data, title and import)).

Comment Source:After John (Baez)'s return to Petri nets I've started a new wiki page called [[Experiments in Petri net specification]] linked to Dave (Tanzer), Ken (Webb)'s Python implementations and my first-cut Haskell unsafe golfing implementation of Ming Chen's "Matrix representation of Petri nets" from 2013/2014. (FWIW "golf" is getting in the hole with the minimal number of strokes, 17 lines in this case (11 without the data, title and import)).
• Options
4.

Cool!

Comment Source:Cool!
• Options
5.

I just came across SimpleSBML: A Python package for creating and editing SBML models by Caroline Cannistra, Kyle Medley Herbert Sauro. SBML is System biology Markup Language. I had not come across it before but it looks like a specification language for reaction networks.

Comment Source:I just came across [SimpleSBML: A Python package for creating and editing SBML models](http://biorxiv.org/content/early/2015/10/30/030312.full.pdf+html?) by Caroline Cannistra, Kyle Medley Herbert Sauro. SBML is System biology Markup Language. I had not come across it before but it looks like a specification language for reaction networks. 
• Options
6.

Looks like SimpleSBML is part of the Tellurium system to "model, simulate, and analyze biochemical systems".

Tellurium (te.) is a Python environment based on spyder2 IDE. It combines a number of existing libraries, including libSBML, libRoadRunner (including libStruct), libAntimony, and is extensible via telPlugins. In addition other tools kits such as matplotlib and NumPy are used to provide additional analysis and plotting support. When you need to add a another package, te. comes with pip, so you can easily pip install package whenever you need them.

Comment Source:Looks like SimpleSBML is part of the [Tellurium](http://tellurium.analogmachine.org/) system to "model, simulate, and analyze biochemical systems". > Tellurium (te.) is a Python environment based on spyder2 IDE. It combines a number of existing libraries, including libSBML, libRoadRunner (including libStruct), libAntimony, and is extensible via telPlugins. In addition other tools kits such as matplotlib and NumPy are used to provide additional analysis and plotting support. When you need to add a another package, te. comes with pip, so you can easily pip install package whenever you need them.
• Options
7.
edited January 2016

What I'd really enjoy is a graphical programming system where you can draw "open stochastic Petri nets", run them, and also connect them to form larger open stochastic Petri nets.

Asking if someone had created this already would be a bit unreasonable, since I haven't yet publicly defined an "open" stochastic Petri net. But they are essentially just stochastic Petri nets where some of the states are designated as "inputs" and "outputs". This lets you hook the outputs of one to the inputs of another. They generalize the "open Markov processes" that Blake and Brendan and I have been writing about. Blake and I should come out with a paper on open stochastic Petri nets at some point.

Comment Source:What I'd really enjoy is a graphical programming system where you can draw "open stochastic Petri nets", run them, and also connect them to form larger open stochastic Petri nets. Asking if someone had created this already would be a bit unreasonable, since I haven't yet publicly _defined_ an "open" stochastic Petri net. But they are essentially just stochastic Petri nets where some of the states are designated as "inputs" and "outputs". This lets you hook the outputs of one to the inputs of another. They generalize the "open Markov processes" that Blake and Brendan and I have been writing about. Blake and I should come out with a paper on open stochastic Petri nets at some point.
• Options
8.

A number of commercial system modelling tools are a lot like like that, eg.Simulink and Stella, I think I have seen open source tools like that, but I am not recalling them at the moment.

Comment Source:A number of commercial system modelling tools are a lot like like that, eg.Simulink and Stella, I think I have seen open source tools like that, but I am not recalling them at the moment.
• Options
9.
edited January 2016

If some software works really well and is easy to use I'd buy it for myself. But I like the idea of open-source software for educational purposes.

To really deal with "open" stochastic Petri nets, I need to be able to mark certain states as inputs or outputs, and specify the populations at these states to be any function of time that I like. (When they're held constant in time, chemists call them "chemostats", but this isn't general enough for me.)

Comment Source:If some software works really well and is easy to use I'd buy it for myself. But I like the idea of open-source software for educational purposes. To really deal with "open" stochastic Petri nets, I need to be able to mark certain states as inputs or outputs, and specify the populations at these states to be any function of time that I like. (When they're held constant in time, chemists call them "chemostats", but this isn't general enough for me.)
• Options
10.

Have you looked at InsightMaker? I do not think it is what you actually want, but it could be interesting to see where it matches and where it does not.

Comment Source:Have you looked at [InsightMaker](InsightMaker.com)? I do not think it is what you actually want, but it could be interesting to see where it matches and where it does not.
• Options
11.
edited January 2016

I'll check it out - thanks! Sorry to take so long to reply; I've been pretty oversaturated with work.

Comment Source:I'll check it out - thanks! Sorry to take so long to reply; I've been pretty oversaturated with work.
• Options
12.

The python-control package just crossed my path:

The python-control package is a set of python classes and functions that implement common operations for the analysis and design of feedback control systems. The initial goal is to implement all of the functionality required to work through the examples in the textbook Feedback Systems by Astrom and Murray. A MATLAB compatibility package (control.matlab) is available that provides many of the common functions corresponding to commands available in the MATLAB Control Systems Toolbox.

Comment Source:The [python-control](http://python-control.sourceforge.net/manual/intro.html) package just crossed my path: > The python-control package is a set of python classes and functions that implement common operations for the analysis and design of feedback control systems. The initial goal is to implement all of the functionality required to work through the examples in the textbook Feedback Systems by Astrom and Murray. A MATLAB compatibility package (control.matlab) is available that provides many of the common functions corresponding to commands available in the MATLAB Control Systems Toolbox. 
• Options
13.
edited February 2016

Oops I posted that in the wrong thread. There was a another thread about simulating dynamical systems that I meant to post it in.

Comment Source:Oops I posted that in the wrong thread. There was a another thread about simulating dynamical systems that I meant to post it in.