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

- All Categories 2.4K
- Chat 505
- Study Groups 21
- Petri Nets 9
- Epidemiology 4
- Leaf Modeling 2
- Review Sections 9
- MIT 2020: Programming with Categories 51
- MIT 2020: Lectures 20
- MIT 2020: Exercises 25
- Baez ACT 2019: Online Course 339
- Baez ACT 2019: Lectures 79
- Baez ACT 2019: Exercises 149
- Baez ACT 2019: Chat 50
- UCR ACT Seminar 4
- General 75
- Azimuth Code Project 111
- Statistical methods 4
- Drafts 10
- Math Syntax Demos 15
- Wiki - Latest Changes 3
- Strategy 113
- Azimuth Project 1.1K
- - Spam 1
- News and Information 148
- Azimuth Blog 149
- - Conventions and Policies 21
- - Questions 43
- Azimuth Wiki 719

Options

I started a tiny stub of a page:

Later I'll include some pictures of Petri nets and the idea will become clearer. The definition using category theory is just part of my plan to use categories to describe lots of biological, chemical and ecological 'networks'.

## Comments

was on the verge on starting this but you beat me - as always! ill add some more

`was on the verge on starting this but you beat me - as always! ill add some more`

You were going to write about Petri nets, Staffan?? Why??

Today I added a much more user-friendly description of Petri nets, a bunch more references, and some pictures to

Petri net

I also added a request for

better pictures. Almost all the pictures I've found on the web include distracting complications, and the two I decided to use here are both flawed.`You were going to write about Petri nets, Staffan?? Why?? Today I added a much more user-friendly description of Petri nets, a bunch more references, and some pictures to [[Petri net]] I also added a request for _better pictures_. Almost all the pictures I've found on the web include distracting complications, and the two I decided to use here are both flawed.`

I'm a little confused why having two molecules the same at different stages of the interaction process is actually "wrong". My extremely limited knowledge of Petri nets comes from their occasional use in modelling computer systems where the $CO_2$ might be "camera device connection" (say) where the "resource" is iniitally available, then in use, then made available again later in the process. I can see it might be difficult to figure out what the status is if your running a chemical reacton with huge numbers of copies of the same reaction occurring in the same reaction vessel, but in that case if you're being strictly accurate aren't things horrendously complicated anyway.

I can give it a go creating a vector graphic for a chemical reaction pathway if you can let me know a suitable one: web search isn't finding multi-stage reactions. Stuff like

$$CaCO_3+HCl\rightarrow CaCl_2+CO_2+ \mathrm{H}_2\mathrm{O}$$ is probably too simple. Presumably you also want reactions which avoid the compication of what, say, $2CO_2$ is represented as. (I'm afraid animation is beyond me so I'll leave the second one.)

`I'm a little confused why having two molecules the same at different stages of the interaction process is actually "wrong". My extremely limited knowledge of Petri nets comes from their occasional use in modelling computer systems where the $CO_2$ might be "camera device connection" (say) where the "resource" is iniitally available, then in use, then made available again later in the process. I can see it might be difficult to figure out what the status is if your running a chemical reacton with huge numbers of copies of the same reaction occurring in the same reaction vessel, but in that case if you're being strictly accurate aren't things horrendously complicated anyway. I can give it a go creating a vector graphic for a chemical reaction pathway if you can let me know a suitable one: web search isn't finding multi-stage reactions. Stuff like $$CaCO_3+HCl\rightarrow CaCl_2+CO_2+ \mathrm{H}_2\mathrm{O}$$ is probably too simple. Presumably you also want reactions which avoid the compication of what, say, $2CO_2$ is represented as. (I'm afraid animation is beyond me so I'll leave the second one.)`

David wrote:

I didn't mean to say it

hadto be wrong. I guess I should be clearer.In a big vat of chemicals, typically any reaction that produces some molecule adds to the supply of molecules of that type, which are then available for

anyreaction involving that molecule. For this, we want just one circle labelled by each type of molecule. So instead of this:we'd have just the first circle labelled CO

_{2}- and the bottom arrow pointing out of the third blue box would bend back and point back to that, instead of pointing to asecondcircle labelled CO_{2}.If you have some sort of production line going, in a factory, and you don't allow CO

_{2}produced in the third reaction to get reused in the second reaction, then the diagram shown above is correct.But if we're going to be pedantic, in the mathematical formalism we always wants every circle to have its own unique name: say, "first container of CO

_{2}" and "second container of CO_{2}"So, for the first example on this wiki page, I'd like a diagram without the distracting complication of having two circles with (superficially) the same name.

More in a minute...

`David wrote: >I'm a little confused why having two molecules the same at different stages of the interaction process is actually "wrong". I didn't mean to say it _had_ to be wrong. I guess I should be clearer. In a big vat of chemicals, typically any reaction that produces some molecule adds to the supply of molecules of that type, which are then available for _any_ reaction involving that molecule. For this, we want just one circle labelled by each type of molecule. So instead of this: <img width = "400" src = "http://www.scholarpedia.org/wiki/images/thumb/5/50/Petri_Fig1.png/800px-Petri_Fig1.png" alt = ""/> we'd have just the first circle labelled CO<sub>2</sub> - and the bottom arrow pointing out of the third blue box would bend back and point back to that, instead of pointing to a _second_ circle labelled CO<sub>2</sub>. If you have some sort of production line going, in a factory, and you don't allow CO<sub>2</sub> produced in the third reaction to get reused in the second reaction, then the diagram shown above is correct. But if we're going to be pedantic, in the mathematical formalism we always wants every circle to have its own unique name: say, "first container of CO<sub>2</sub>" and "second container of CO<sub>2</sub>" So, for the first example on this wiki page, I'd like a diagram without the distracting complication of having two circles with (superficially) the same name. More in a minute...`

To me, that 'production net' looks like a process in time. Not just the two $CO_2$ s, but if you put the inputs (the ones with the tokens) together, I think you'd get two parallel reactions $C + O_2 \to CO_2$, and $NaOH + HCl \to NaCl + \mathrm{H}_2\mathrm{O}$. Would $NaHCO_3$ appear at all?

`To me, that 'production net' looks like a process in time. Not just the two $CO_2$ s, but if you put the inputs (the ones with the tokens) together, I think you'd get two parallel reactions $C + O_2 \to CO_2$, and $NaOH + HCl \to NaCl + \mathrm{H}_2\mathrm{O}$. Would $NaHCO_3$ appear at all?`

David wrote:

Yes, having just a single reaction is a bit too dull.

Actually $2CO_2$ is exactly the sort of thing Petri nets are designed for! You can have a reaction box with two edges coming out, both pointing to the same circle labelled $CO_2$. That means that this reaction produces two $CO_2$ molecules.

Here are two examples I'd love to see:

1) Take this Petri net

and "fix" it by

a) removing the black "token" circles, b) removing the phrase "Production Net", c) removing the righthand circle labelled CO

_{2}and having the arrow that points to it bend back and point to the lefthand circle labelled CO_{2}.It would then be nice to do a version with a few "tokens" on it, both before and after some reaction changes tokens of one type to tokens of another.

2) Create a Petri net with:

a) a circle labelled "fox" b) a circle labelled "rabbit" c) a box labelled "death" with one fox as input and no outputs d) a box labelled "birth" with two rabbits as input and three as outputs e) a box labelled "predation" with a rabbit and two foxes as input and three foxes as output

In short, the Petri net for the reactions

fox $\to$

2 rabbit $\to$ 3 rabbit

rabbit + 2 fox $\to$ 3 fox

There's a way to turn stochastic Petri nets into differential equations, and this one gives the Volterra-Lotka equations.

We still need a page on those equations - it doesn't exist yet - but Graham has written about them here. That's one reason I was so happy when a book I was reading about stochastic Petri nets gave an example involving rabbits and foxes!

`David wrote: > I can give it a go creating a vector graphic for a chemical reaction pathway if you can let me know a suitable one: web search isn't finding multi-stage reactions. Stuff like > $$CaCo_3+HCl\rightarrow CaCl_2+CO_2+ \mathrm{H}_2\mathrm{O}$$ >is probably too simple. Yes, having just a single reaction is a bit too dull. > Presumably you also want reactions which avoid the compication of what, say, $2CO_2$ is represented as. (I'm afraid animation is beyond me so I'll leave the second one.) Actually $2CO_2$ is exactly the sort of thing Petri nets are designed for! You can have a reaction box with two edges coming out, both pointing to the same circle labelled $CO_2$. That means that this reaction produces two $CO_2$ molecules. Here are two examples I'd love to see: 1) Take this Petri net <img width = "400" src = "http://www.scholarpedia.org/wiki/images/thumb/5/50/Petri_Fig1.png/800px-Petri_Fig1.png" alt = ""/> and "fix" it by a) removing the black "token" circles, b) removing the phrase "Production Net", c) removing the righthand circle labelled CO<sub>2</sub> and having the arrow that points to it bend back and point to the lefthand circle labelled CO<sub>2</sub>. It would then be nice to do a version with a few "tokens" on it, both before and after some reaction changes tokens of one type to tokens of another. 2) Create a Petri net with: a) a circle labelled "fox" b) a circle labelled "rabbit" c) a box labelled "death" with one fox as input and no outputs d) a box labelled "birth" with two rabbits as input and three as outputs e) a box labelled "predation" with a rabbit and two foxes as input and three foxes as output In short, the Petri net for the reactions fox $\to$ 2 rabbit $\to$ 3 rabbit rabbit + 2 fox $\to$ 3 fox There's a way to turn stochastic Petri nets into differential equations, and this one gives the [[Volterra-Lotka equations]]. We still need a page on those equations - it doesn't exist yet - but Graham has written about them [[quantitative ecology|here]]. That's one reason I was so happy when a book I was reading about stochastic Petri nets gave an example involving rabbits and foxes!`

Graham wrote:

Well, I bet that's because it's a misleadingly special example of a Petri net, where there are no loops! In molecular biology the Petri nets typically have lots of loops. Here's a good example:

Each box is a process and each circle is a kind of gene or molecule or something. The same information is often drawn in a more sloppy way like this:

where now the boxes for reactions have been eliminated.

If I understand you correctly, you're saying something like this:

You can "compress" certain Petri nets by hiding intermediate chemicals, like the $NaHCO_3$ in the example we're talking about. This is indeed something people like to do in the Petri net game (though I don't know if they use the term "compress"). Conversely one can take a Petri net and "expand" it with more information about intermediate reactions. All this is very good.

`Graham wrote: > To me, that 'production net' looks like a process in time. Well, I bet that's because it's a misleadingly special example of a Petri net, where there are no loops! In molecular biology the Petri nets typically have lots of loops. Here's a good example: <a href = "http://www.bioinfo.de/isb/2006060010/"> <img width = "450" src = "http://www.bioinfo.de/isb/2006060010/fig7.gif" alt = ""/> </a> Each box is a process and each circle is a kind of gene or molecule or something. The same information is often drawn in a more sloppy way like this: <a href = "http://www.bioinfo.de/isb/2006060010/"> <img width = "300" src = "http://www.bioinfo.de/isb/2006060010/fig4.gif" alt = ""/> </a> where now the boxes for reactions have been eliminated. > Not just the two $CO_2$ s, but if you put the inputs (the ones with the tokens) together, I think you'd get two parallel reactions $C + O_2 \to CO_2$, and $NaOH + HCl \to NaCl + \mathrm{H}_2\mathrm{O}$. Would $NaHCO_3$ appear at all? If I understand you correctly, you're saying something like this: You can "compress" certain Petri nets by hiding intermediate chemicals, like the $NaHCO_3$ in the example we're talking about. This is indeed something people like to do in the Petri net game (though I don't know if they use the term "compress"). Conversely one can take a Petri net and "expand" it with more information about intermediate reactions. All this is very good.`

No, I was guessing that the circles in the production net should be tagged with times, from left to right. When I said $NaHCO_3$ wouldn't appear, I meant it wouldn't exist in reality, not that it could be eliminated from the theory.

The molecular biology example seems better.

`> If I understand you correctly, you're saying something like this: > You can "compress" certain Petri nets by hiding intermediate chemicals, ... No, I was guessing that the circles in the production net should be tagged with times, from left to right. When I said $NaHCO_3$ wouldn't appear, I meant it wouldn't exist in reality, not that it could be eliminated from the theory. The molecular biology example seems better.`

Everybody else says Lotka-Volterra. ;-)

I didn't actually, I used a generalisation. The original Lotka-Volterra equations for predator-prey relations are simpler than the ones I used, but they are structurally unstable, a phrase you probably understand better than me. They are not regarded as sensible models for any ecosystem. My text books has `alternative Lotka-Volterra equations' which are more sensible (but don't do Hopf bifurcations), and then a further generalization.

That sounds interesting! Though this 'reaction'

rabbit + 2 fox $\to$ 3 fox

looks a bit off. Maybe 30 rabbits make one fox?

`> There's a way to turn stochastic Petri nets into differential equations, and this one gives the Volterra-Lotka equations. Everybody else says Lotka-Volterra. ;-) > We still need a page on those equations - it doesn't exist yet - but Graham has written about them here. I didn't actually, I used a generalisation. The original Lotka-Volterra equations for predator-prey relations are simpler than the ones I used, but they are structurally unstable, a phrase you probably understand better than me. They are not regarded as sensible models for any ecosystem. My text books has `alternative Lotka-Volterra equations' which are more sensible (but don't do Hopf bifurcations), and then a further generalization. > That's one reason I was so happy when a book I was reading about stochastic Petri nets gave an example involving rabbits and foxes! That sounds interesting! Though this 'reaction' rabbit + 2 fox $\to$ 3 fox looks a bit off. Maybe 30 rabbits make one fox?`

OK, I've never dealt with Petri nets with multiple instances of a resource that weren't duplicated, so to try and be clear the $2 rabbit \rightarrow 3 rabbit$ component should become (where * is a square box)

`OK, I've never dealt with Petri nets with multiple instances of a resource that weren't duplicated, so to try and be clear the $2 rabbit \rightarrow 3 rabbit$ component should become (where * is a square box) rabbit || ^^^ VV ||| * ||| ||| |||`

Graham wrote:

Good point. I don't know why I put Volterra first this time. Maybe he deserves to come first now and then.

Sometimes I think this is why von Neumann wrote a paper with Wigner: so he wouldn't

alwaysbe the last-named author.Okay, thanks, I'll need to think about that. One book I was reading gave a version that could be the original version you're talking about, because it's "structurally unstable" - it has lots of solutions that go round and round, and tweaking the equations ever so slightly gives solutions that are qualitatively different: they either spiral in to, or spiral out from, a fixed point.

There's no pleasing some people.

I thought my version was incredibly realistic compared to the version I actually saw in the book I was reading! It had:

fox →

→ rabbit

rabbit + fox → fox + fox

So: spontaneous generation of rabbits, and the virgin birth of a baby fox every time a fox eats a rabbit!

One can tweak the reactions toward greater and greater realism, at the expense of more and more complexity. As a mathematician, I'm happy to start with incredibly simplified and unrealistic models. But I thought some biologist would be upset to see rabbits springing from nowhere.

`Graham wrote: >Everybody else says Lotka-Volterra. ;-) Good point. I don't know why I put Volterra first this time. Maybe he deserves to come first now and then. Sometimes I think this is why von Neumann wrote a paper with Wigner: so he wouldn't _always_ be the last-named author. > I used a generalisation. Okay, thanks, I'll need to think about that. One book I was reading gave a version that could be the original version you're talking about, because it's "structurally unstable" - it has lots of solutions that go round and round, and tweaking the equations ever so slightly gives solutions that are qualitatively different: they either spiral in to, or spiral out from, a fixed point. > this 'reaction': > rabbit + 2 fox → 3 fox > looks a bit off. Maybe 30 rabbits make one fox? There's no pleasing some people. <img src = "http://math.ucr.edu/home/baez/emoticons/rolleyes.gif" alt = ""/> I thought my version was incredibly realistic compared to the version I actually saw in the book I was reading! It had: fox → → rabbit rabbit + fox → fox + fox So: spontaneous generation of rabbits, and the virgin birth of a baby fox every time a fox eats a rabbit! One can tweak the reactions toward greater and greater realism, at the expense of more and more complexity. As a mathematician, I'm happy to start with incredibly simplified and unrealistic models. But I thought some biologist would be upset to see rabbits springing from nowhere.`

There's some diagrams on the page. I'm not sure I've done the right thing with the dots: since I'm used to Petri nets primarily being used to express processes with preconditions (where the nodes are more "preconditions" like "camera device is available" rather than concrete things) the dots are currently showing when all the inputs to a transition are present. I could add more dots and strictly propagate them, although as Graham says if all those precursors are in the same reaction vessel I'm not sure the diagram is what'll happen. (Very vague memories of chemistry suggest this kind of staged process is used to avoid excessively vigorous acid+base reactions, but I may be completely wrong.)

Should you want them, you can have the original xfig-format vector graphics files.

`There's some diagrams on the page. I'm not sure I've done the right thing with the dots: since I'm used to Petri nets primarily being used to express processes with preconditions (where the nodes are more "preconditions" like "camera device is available" rather than concrete things) the dots are currently showing when all the inputs to a transition are present. I could add more dots and strictly propagate them, although as Graham says if all those precursors are in the same reaction vessel I'm not sure the diagram is what'll happen. (Very vague memories of chemistry suggest this kind of staged process is used to avoid excessively vigorous acid+base reactions, but I may be completely wrong.) Should you want them, you can have the original xfig-format vector graphics files.`

David: thanks a million for drawing those diagrams! They look great!

As you suggest, there's a problem with the dots, at least for what I'm trying to explain.

That's what I'd like - I've explained exactly how on the Petri net page.

Petri nets are used for lots of things... rather quirkily, I happen to have started by learning their applications to biology and chemistry, which are nicely explained in this elementary textbook:

Darren James Wilkinson,

Stochastic Modelling for Systems Biology, Taylor & Francis, New York, 2006.As far as I can tell, the idea of Petri nets in chemistry is that

conservation of atoms is strictly enforced,unless one deliberately adds extra transitions that describe a process where chemicals are added or removed from a container.Right now you have NaOH magically appearing "as needed" in the second diagram, and HCl magically appearing in the third. To remedy this, we can add one molecule of NaOH and one of HCl to the first diagram, and just one of HCl to the second.

Then at each step of the story we will have conservation of hydrogen, conservation of oxygen, conservation of sodium, and conservation of chlorine.

`David: thanks a million for drawing those diagrams! They look great! As you suggest, there's a problem with the dots, at least for what I'm trying to explain. > I could add more dots and strictly propagate them... That's what I'd like - I've explained exactly how on the [[Petri net]] page. Petri nets are used for lots of things... rather quirkily, I happen to have started by learning their applications to biology and chemistry, which are nicely explained in this elementary textbook: Darren James Wilkinson, _Stochastic Modelling for Systems Biology_, Taylor & Francis, New York, 2006. As far as I can tell, the idea of Petri nets in chemistry is that _conservation of atoms is strictly enforced,_ unless one deliberately adds extra transitions that describe a process where chemicals are added or removed from a container. Right now you have NaOH magically appearing "as needed" in the second diagram, and HCl magically appearing in the third. To remedy this, we can add one molecule of NaOH and one of HCl to the first diagram, and just one of HCl to the second. Then at each step of the story we will have conservation of hydrogen, conservation of oxygen, conservation of sodium, and conservation of chlorine.`

Thanks for fixing up those Petri net pictures, David!

I decided to blog about Petri nets here, based on the wiki article.

By the way: why did you add something saying that the NaOH and HCl were bottled up and not allowed to react? I don't want to introduce that complication. There's an enhancement of the Petri net formalism that allows for "containers", but I was trying to avoid that.

One reason you could have added this remark is that NaOH and HCl can react with each other, and I haven't included that transition in the diagram. That would be a good reason. If so, I should admit that our diagram doesn't include

allthe possible transitions that can take place. There could be even more that I omitted.`Thanks for fixing up those Petri net pictures, David! I decided to blog about Petri nets [here](http://johncarlosbaez.wordpress.com/2011/01/18/petri-nets/), based on the wiki article. By the way: why did you add something saying that the NaOH and HCl were bottled up and not allowed to react? I don't want to introduce that complication. There's an enhancement of the Petri net formalism that allows for "containers", but I was trying to avoid that. One reason you could have added this remark is that NaOH and HCl can react with each other, and I haven't included that transition in the diagram. That would be a good reason. If so, I should admit that our diagram doesn't include _all_ the possible transitions that can take place. There could be even more that I omitted.`

Assuming I've understood, there's a fox-rabbit diagram on the page now. I've added new category-theory defs for that process, but left old ones since they show things not in those equations.

The "reaction vessel" remark was just because as Graham pointed out, it's not clear if the diagram is what will happen if the chemicals are all in one container simultaneously. But it can go.

`Assuming I've understood, there's a fox-rabbit diagram on the page now. I've added new category-theory defs for that process, but left old ones since they show things not in those equations. The "reaction vessel" remark was just because as Graham pointed out, it's not clear if the diagram is what will happen if the chemicals are all in one container simultaneously. But it can go.`

Thanks for the foxes and rabbits, David!

Sorry to bother you even more, David, but could you draw a fox-rabbit diagram for the original simpler set of reactions? There's a systematic way to translate Petri nets into differential equations, and I just realized that more complicated, "more realistic" Petri net you drew actually gives rise to equations that are very different from the usual Lotka-Volterra equations! I'd like to connect my discussion to the usual equations.

In other words: could you please take this diagram:

and create a simpler version where

the birth box has

onerabbit as input andtwoas outputthe predation box has one rabbit as input and

onefox as outputthe death box has one fox as input and none as output - no change needed here.

Sorry...

The mistake I made is actually sort of interesting. In chemical reactions that take

twoof the same sort of input, like atomic oxygen forming molecules:O + O $\to$ O

_{2}the reaction rate is proportional to the

squareof the number of oxygen molecules present. This sort of fact is incorporated in the usual rules for turning Petri nets into differential equations. For rabbit reproduction of this sort:$$ rabbit \otimes rabbit \to rabbit \otimes rabbit \otimes rabbit $$ turning the crank would give a differential equation where the growth in rabbit population was proportional to the

squareof the number of rabbits!But that's not what people want to get: they want to get population growth proportional to the number of rabbits. That's why they posit the reaction

$$ rabbit \to rabbit \otimes rabbit $$ which doesn't look very realistic if you know how rabbits do it.

The solution to this "paradox" seems to be this. Oxygen atoms blunder about randomly and only react when two

happento be in the same place at the same time. So, the reaction rate is proportional to thesquareof the concentration. On the other hand, rabbits actively seek each other out! So if you have, say, 5 rabbits in England, they're not likely to be in different counties. This lets the growth rate belinearin the number of rabbits.So, the analogy between chemistry and population biology is a bit weak.

`Thanks for the foxes and rabbits, David! Sorry to bother you even more, David, but could you draw a fox-rabbit diagram for the original simpler set of reactions? There's a systematic way to translate Petri nets into differential equations, and I just realized that more complicated, "more realistic" Petri net you drew actually gives rise to equations that are very different from the usual Lotka-Volterra equations! I'd like to connect my discussion to the usual equations. In other words: could you please take this diagram: <img src = "http://www.azimuthproject.org/azimuth/files/foxDiag.png" alt = ""/> and create a simpler version where * the birth box has *one* rabbit as input and *two* as output * the predation box has one rabbit as input and *one* fox as output * the death box has one fox as input and none as output - no change needed here. Sorry... The mistake I made is actually sort of interesting. In chemical reactions that take _two_ of the same sort of input, like atomic oxygen forming molecules: O + O $\to$ O<sub>2</sub> the reaction rate is proportional to the _square_ of the number of oxygen molecules present. This sort of fact is incorporated in the usual rules for turning Petri nets into differential equations. For rabbit reproduction of this sort: $$ rabbit \otimes rabbit \to rabbit \otimes rabbit \otimes rabbit $$ turning the crank would give a differential equation where the growth in rabbit population was proportional to the _square_ of the number of rabbits! But that's not what people want to get: they want to get population growth proportional to the number of rabbits. That's why they posit the reaction $$ rabbit \to rabbit \otimes rabbit $$ which doesn't look very realistic if you know how rabbits do it. The solution to this "paradox" seems to be this. Oxygen atoms blunder about randomly and only react when two _happen_ to be in the same place at the same time. So, the reaction rate is proportional to the _square_ of the concentration. On the other hand, rabbits actively seek each other out! So if you have, say, 5 rabbits in England, they're not likely to be in different counties. This lets the growth rate be _linear_ in the number of rabbits. So, the analogy between chemistry and population biology is a bit weak.`

Simple ecosystem models do assume that rabbits won't have trouble finding one another. But these models break down for very low population densities. If there are only 500 tigers in Asia, they probably won't be in the same country, and they will have problems finding one another.

`> On the other hand, rabbits actively seek each other out! So if you have, say, 5 rabbits in England, they're not likely to be in different counties. This lets the growth rate be linear in the number of rabbits. Simple ecosystem models do assume that rabbits won't have trouble finding one another. But these models break down for very low population densities. If there are only 500 tigers in Asia, they probably won't be in the same country, and they will have problems finding one another.`

New diagram uploaded (old one left for comparison for the moment).

Incidentally, doesn't the "two arrows give squared" rule imply that ignoring information actually changes the reaction rates in the system being considered? Eg, to pick a silly example, suppose you're modelling a system where an $O^+$ and an $O^-$ bond to become an $O_2$ (no idea if this ever happens), that becomes a system with a different reaction rate different if you say "well I can't see the charges in my experimental setup", so I'll use an $O$ with two arrows out to the process? That sounds counterintuitive

`New diagram uploaded (old one left for comparison for the moment). Incidentally, doesn't the "two arrows give squared" rule imply that ignoring information actually changes the reaction rates in the system being considered? Eg, to pick a silly example, suppose you're modelling a system where an $O^+$ and an $O^-$ bond to become an $O_2$ (no idea if this ever happens), that becomes a system with a different reaction rate different if you say "well I can't see the charges in my experimental setup", so I'll use an $O$ with two arrows out to the process? That sounds counterintuitive`

These equations do seem to work much better for chemistry when used in the context of rate equations than for biology. Is it really just a case of creating a sufficiently homogeneous environment for them to operate in?

In ecosystems, the more isolated the population, the better they work. Take the famous case of the reindeer on St.Matthew Island.

Here, the homogeneity was enforced by spatial constraints.

My own interest is in how dispersion and disorder effects the observation of these effects.

`What Graham said regarding LV equations: : "They are not regarded as sensible models for any ecosystem." These equations do seem to work much better for chemistry when used in the context of rate equations than for biology. Is it really just a case of creating a sufficiently homogeneous environment for them to operate in? In ecosystems, the more isolated the population, the better they work. Take the famous case of the reindeer on [St.Matthew Island](http://en.wikipedia.org/wiki/St._Matthew_Island). Here, the homogeneity was enforced by spatial constraints. My own interest is in how dispersion and disorder effects the observation of these effects.`

Joohn B about why? I used it long time ago and me and a math (/econ scientist where looking at petri nets for realtime systems and evolutionary game theory modeling. ill check with him as this was some time ago and together we might remember our conclusions.

`Joohn B about why? I used it long time ago and me and a math (/econ scientist where looking at petri nets for realtime systems and [evolutionary game theory](http://en.wikipedia.org/wiki/Evolutionary_game_theory) modeling. ill check with him as this was some time ago and together we might remember our conclusions.`

David wrote:

Thanks! But now I have a really embarrassing request: could you do another one? One last one? My last request had a stupid mistake in it.

I

shouldhave said:the birth box has one rabbit as input and two as output.

the predation box has

one rabbit and one foxas input andtwo foxesas outputthe death box has one fox as input and none as output.

If $x$ is the number of rabbits and $y$ is the number of foxes, this gives (by following some pretty obvious rules):

$$ \frac{d x}{d t} = \alpha x - \beta x y$$ $$ \frac{d y}{d t} = \beta x y - \gamma y $$ where $\alpha, \beta, \gamma$ are certain 'reaction rates':

$\alpha$ is the rate for the birth process

$\beta$ is the rate for the predation process

$\gamma$ is the rate for the death process.

And this is an example of Lotka-Volterra equation.

My stupidly screwed-up previous request:

the birth box has one rabbit as input and two as output

the predation box has one rabbit as input and one fox as output

the death box has one fox as input and none as output - no change needed here.

would give these equations:

$$ \frac{d x}{d t} = \alpha x - \beta x$$ $$ \frac{d y}{d t} = \beta x - \gamma y $$ These aren't Lotka-Volterra equations - they're linear, so they behavior they exhibit is a lot more boring. Also, they describe a world where rabbits turn into foxes!

I'll be eternally in your debt...

`David wrote: > New diagram uploaded (old one left for comparison for the moment). Thanks! But now I have a really embarrassing request: could you do another one? One last one? My last request had a stupid mistake in it. <img src = "http://math.ucr.edu/home/baez/emoticons/uhh.gif" alt = ""/> I _should_ have said: * the birth box has one rabbit as input and two as output. * the predation box has **one rabbit and one fox** as input and **two foxes** as output * the death box has one fox as input and none as output. If $x$ is the number of rabbits and $y$ is the number of foxes, this gives (by following some pretty obvious rules): $$ \frac{d x}{d t} = \alpha x - \beta x y$$ $$ \frac{d y}{d t} = \beta x y - \gamma y $$ where $\alpha, \beta, \gamma$ are certain 'reaction rates': $\alpha$ is the rate for the birth process $\beta$ is the rate for the predation process $\gamma$ is the rate for the death process. And this is an example of Lotka-Volterra equation. My stupidly screwed-up previous request: * the birth box has one rabbit as input and two as output * the predation box has one rabbit as input and one fox as output * the death box has one fox as input and none as output - no change needed here. would give these equations: $$ \frac{d x}{d t} = \alpha x - \beta x$$ $$ \frac{d y}{d t} = \beta x - \gamma y $$ These aren't Lotka-Volterra equations - they're linear, so they behavior they exhibit is a lot more boring. Also, they describe a world where rabbits turn into foxes! I'll be eternally in your debt...`

If I'm gonna beg David for help I should at least answer his questions.

David wrote:

It actually took me a while to understand this question. I think everything works in an intuitive way. If we have only this reaction

$$ O + O \rightarrow O_2 $$ we get these equations, where now I use $O$ and $O_2$ to mean the concentrations of those species:

$ \frac{d O}{d t} = - \alpha O^2 $

$ \frac{d O_2}{d t} = \alpha O^2 $

If instead we say we have this reaction

$$O^+ + O^- \to O_2$$ we get these equations:

$ \frac{d O^+}{d t} = - \alpha O^+ O^- $

$ \frac{d O^-}{d t} = - \alpha O^+ O^- $

$ \frac{d O_2}{d t} = \alpha O^+ O^- $

If we start with the latter set of equations and assume that $O^+ = O^-$, we get back to the former set of equations.

It's a bit like someone ignoring that rabbits come in male and female: it's not so bad as long as half the rabbits are male and half are female!

`If I'm gonna beg David for help I should at least answer his questions. David wrote: > Incidentally, doesn't the "two arrows give squared" rule imply that ignoring information actually changes the reaction rates in the system being considered? Eg, to pick a silly example, suppose you're modelling a system where an O<sup>+</sup> and an O<sup>−</sup> bond to become an O<sub>2</sub> (no idea if this ever happens), that becomes a system with a different reaction rate different if you say "well I can't see the charges in my experimental setup", so I'll use an O with two arrows out to the process? That sounds counterintuitive. It actually took me a while to understand this question. I think everything works in an intuitive way. If we have only this reaction $$ O + O \rightarrow O_2 $$ we get these equations, where now I use $O$ and $O_2$ to mean the concentrations of those species: $ \frac{d O}{d t} = - \alpha O^2 $ $ \frac{d O_2}{d t} = \alpha O^2 $ If instead we say we have this reaction $$O^+ + O^- \to O_2$$ we get these equations: $ \frac{d O^+}{d t} = - \alpha O^+ O^- $ $ \frac{d O^-}{d t} = - \alpha O^+ O^- $ $ \frac{d O_2}{d t} = \alpha O^+ O^- $ If we start with the latter set of equations and assume that $O^+ = O^-$, we get back to the former set of equations. It's a bit like someone ignoring that rabbits come in male and female: it's not so bad as long as half the rabbits are male and half are female!`

Sorry for the nitpicking, but wouldn't one use concentrations like $[O]$ to write equations in chemistry?

$[O^+]=[O^-]$ makes more sense than $O^+=O^-$

And there's a typo in the lhs of the second equation?

`Sorry for the nitpicking, but wouldn't one use concentrations like $[O]$ to write equations in chemistry? $[O^+]=[O^-]$ makes more sense than $O^+=O^-$ And there's a typo in the lhs of the second equation?`

Ah, I think my confusion came from not actually looking up the procedure for assigning rates to Petri nets. I'd assumed it'd be something like "proportional to least-frequent of inputs into a process, scaling an input's frequency linearly for multiple arrows", but it sounds like the procedure is more like "rate is proprotional to product of frequency of all inputs", in which case multiple arrows giving powers is consistent. I'll try and read up about these rules online and deconfuse myself.

Edit: my intuition that the expected number of random "collisions" between different reactants would be proportional to the least frequent component turns out to be completely wrong. I've just done the calculation for a discrete random situation and the expected number of "collisions" does turn out to be proportional to the product of the concentrations of the inputs.

Anyway, there's a new diagram on the page.

`Ah, I think my confusion came from not actually looking up the procedure for assigning rates to Petri nets. I'd assumed it'd be something like "proportional to least-frequent of inputs into a process, scaling an input's frequency linearly for multiple arrows", but it sounds like the procedure is more like "rate is proprotional to product of frequency of all inputs", in which case multiple arrows giving powers is consistent. I'll try and read up about these rules online and deconfuse myself. Edit: my intuition that the expected number of random "collisions" between different reactants would be proportional to the least frequent component turns out to be completely wrong. I've just done the calculation for a discrete random situation and the expected number of "collisions" does turn out to be proportional to the product of the concentrations of the inputs. Anyway, there's a new diagram on the page.`

Frederik:

Yes, you're right. I forgot the usual notation and I was in too much of a rush to make up a sensible new notation. When I write something about this on the wiki, I'll make sure to do things right.

Thanks. I fixed a typo. While doing that, I noticed that a bunch of equations were invisible, at least on my laptop here at home! I can't see why that's happening, so I fixed it in a stupid way by changing

`$$`

to`$`

. What a strange bug! Let me see if this equation is invisible:$$ \frac{d O}{d t} = - \alpha O^2 $$ Hmm - no, I can't see it!! Can you guys see it? The underlying LaTeX code is

`$$ \frac{d O}{d t} = - \alpha O^2 $$`

Is there a bug in that code???

`Frederik: > Sorry for the nitpicking, but wouldn't one use concentrations like $[O]$ to write equations in chemistry? Yes, you're right. I forgot the usual notation and I was in too much of a rush to make up a sensible new notation. When I write something about this on the wiki, I'll make sure to do things right. > And there's a typo in the lhs of the second equation? Thanks. I fixed a typo. While doing that, I noticed that a bunch of equations were invisible, at least on my laptop here at home! I can't see why that's happening, so I fixed it in a stupid way by changing `$$` to `$`. What a strange bug! Let me see if this equation is invisible: $$ \frac{d O}{d t} = - \alpha O^2 $$ Hmm - no, I can't see it!! Can you guys see it? The underlying LaTeX code is `$$ \frac{d O}{d t} = - \alpha O^2 $$` Is there a bug in that code???`

David wrote:

You're very kind: I'd say your confusion came from the fact that I didn't

explainthe procedure. I was trying to use the popular but not terribly successful pedagogical technique called 'telepathic transmission', where the authors thinks something and hopes this thought will be automatically transferred to the readers.I plan to actually

explainthis stuff someday. Soon, in fact.Right - that's exactly the idea people use to get these differential equations!

And of course this is why these differential equations are not so great for ecology. The assumptions they're based on are apparently quite reasonable for the behavior of molecules - or so I hear. But they're oversimplified for living organisms.

For one thing, bunnies don't just randomly hop all over England: they seek out sex partners.

For another, a fox doesn't really eat bunnies at a rate proportional to the concentration of bunnies: if you've got one fox and a million bunnies in a small area, you probably won't double the rate at which the fox eats bunnies by doubling the number of bunnies! There's a 'saturation' effect.

There are probably dozens of other problems.

Thanks!!!

`David wrote: > Ah, I think my confusion came from not actually looking up the procedure for assigning rates to Petri nets. You're very kind: I'd say your confusion came from the fact that I didn't _explain_ the procedure. I was trying to use the popular but not terribly successful pedagogical technique called 'telepathic transmission', where the authors thinks something and hopes this thought will be automatically transferred to the readers. I plan to actually _explain_ this stuff someday. Soon, in fact. > I've just done the calculation for a discrete random situation and the expected number of "collisions" does turn out to be proportional to the product of the concentrations of the inputs. Right - that's exactly the idea people use to get these differential equations! And of course this is why these differential equations are not so great for ecology. The assumptions they're based on are apparently quite reasonable for the behavior of molecules - or so I hear. But they're oversimplified for living organisms. For one thing, bunnies don't just randomly hop all over England: they seek out sex partners. For another, a fox doesn't really eat bunnies at a rate proportional to the concentration of bunnies: if you've got one fox and a million bunnies in a small area, you probably won't double the rate at which the fox eats bunnies by doubling the number of bunnies! There's a 'saturation' effect. There are probably dozens of other problems. > Anyway, there's a new diagram on the page. Thanks!!!`

WebHubTel wrote:

That's part of it, but there could also be the issue of having enough molecules of all types around to avoid the 'saturation' problem I mentioned in my previous comment. I mentioned saturation for a fox in the presence of millions of bunnies... but it might also happen for a lone sodium ion in the presence of millions of chlorine ions!

There's a related issue cutely named the "attowolf problem": differential equations describing predator-prey interactions break down when your number of wolves becomes less than 1.

`WebHubTel wrote: > These equations do seem to work much better for chemistry when used in the context of rate equations than for biology. Is it really just a case of creating a sufficiently homogeneous environment for them to operate in? That's part of it, but there could also be the issue of having enough molecules of all types around to avoid the 'saturation' problem I mentioned in my previous comment. I mentioned saturation for a fox in the presence of millions of bunnies... but it might also happen for a lone sodium ion in the presence of millions of chlorine ions! There's a related issue cutely named the "attowolf problem": differential equations describing predator-prey interactions break down when your number of wolves becomes less than 1.`

Okay, I've used our discussion here to drastically expand the section

Stochastic Petri net

on our Petri net page. Go ahead and improve it or ask questions!

`Okay, I've used our discussion here to drastically expand the section [[Petri+net#StochasticPetriNet|Stochastic Petri net]] on our [[Petri net]] page. Go ahead and improve it or ask questions!`

You've probably already heard from this, but I'd like to enter a side note from ecology. A fox is a predator who can easily switch between different meals, ie a "generalist" (maybe I remember this term incorrectly). So if you're modeling an ecosystem with, say, a foxes, rabbits, chickens and mice, the fox will hunt the species which is most easy to hunt. In this way, predators like foxes help to keep the concentrations in the ecosystem relatively stable.

An opposite kind of predator is the "specialist", e.g. some kind of wild cat that only hunts one kind of hares. In this case, as soon as the hare population starts to fluctuate, the wild cat population fluctuates too (but with a delay), so that if you look at population patterns of this ecosystem, it is wildly oscillating, compared to the ecosystem with the fox.

So if one exterminates a species, one should be careful not to destabilize the ecosystem.

Maybe I should look up references for this subject.

`> For example, a fox doesn’t really eat rabbits at a rate proportional to the concentration of rabbits: if you’ve got one fox and a million rabbits in a limited area, you probably won’t double the rate at which the fox eats rabbits by doubling the number of rabbits! You've probably already heard from this, but I'd like to enter a side note from ecology. A fox is a predator who can easily switch between different meals, ie a "generalist" (maybe I remember this term incorrectly). So if you're modeling an ecosystem with, say, a foxes, rabbits, chickens and mice, the fox will hunt the species which is most easy to hunt. In this way, predators like foxes help to keep the concentrations in the ecosystem relatively stable. An opposite kind of predator is the "specialist", e.g. some kind of wild cat that only hunts one kind of hares. In this case, as soon as the hare population starts to fluctuate, the wild cat population fluctuates too (but with a delay), so that if you look at population patterns of this ecosystem, it is wildly oscillating, compared to the ecosystem with the fox. So if one exterminates a species, one should be careful not to destabilize the ecosystem. Maybe I should look up references for this subject.`

With "most easy to hunt" I meant that if the concentration of rabbits explodes, the foxes will concentrate on rabbits instead of mice and chicken.

`With "most easy to hunt" I meant that if the concentration of rabbits explodes, the foxes will concentrate on rabbits instead of mice and chicken.`

Frederik - thanks for your comment. We should probably start some more wiki pages on ecology so we can put information of this kind in there - especially if we can find some nice references.

There's been a lot of work on what makes food chains stable or unstable, but I'm just beginning to understand it. If you're interested, this article is good:

You'll see there's been a gradual rise in the sophistication of the models, and constant correction of the models by people doing experiments and observations in the field.

At first people thought more connections in the food web would always tend to stabilize the web; then some simulations showed the opposite effect; then people started trying more realistic models and found (unsurprisingly) that things are quite complicated and interesting.

I put this reference in Systems ecology.

By the way, one can model different amounts of "specialist" or "generalist" behavior on the part of predators using different "reaction rates" between the predator and various kinds of prey. However, in the simplest models the rate of predation will be proportional to the concentration of prey of a given sort, and I have no idea how realistic that is. (Everything in biology is infinitely complicated, so all models are oversimplified: I take that as a given! But some models are worse than others.)

`Frederik - thanks for your comment. We should probably start some more wiki pages on ecology so we can put information of this kind in there - especially if we can find some nice references. There's been a lot of work on what makes food chains stable or unstable, but I'm just beginning to understand it. If you're interested, this article is good: * Louis-Félix Bersier, A history of the study of ecological networks, in Biological Networks, ed. Francois Képès, World Scientific, Singapore, 2007. You'll see there's been a gradual rise in the sophistication of the models, and constant correction of the models by people doing experiments and observations in the field. At first people thought more connections in the food web would always tend to stabilize the web; then some simulations showed the opposite effect; then people started trying more realistic models and found (unsurprisingly) that things are quite complicated and interesting. I put this reference in [[Systems ecology]]. By the way, one can model different amounts of "specialist" or "generalist" behavior on the part of predators using different "reaction rates" between the predator and various kinds of prey. However, in the simplest models the rate of predation will be proportional to the concentration of prey of a given sort, and I have no idea how realistic that is. (Everything in biology is infinitely complicated, so all models are oversimplified: I take that as a given! But some models are worse than others.)`

Thanks for the reference.

I looked it up and I added a link to a pdf version, which is somewhere online.

`Thanks for the reference. I looked it up and I added a link to a pdf version, which is somewhere online.`

Zoran Skoda added a reference to the nLab to our Petri net page.

I added some material on chemical reaction networks to this page.

`Zoran Skoda added a reference to the nLab to our [[Petri net]] page. I added some material on [chemical reaction networks](http://www.azimuthproject.org/azimuth/show/Petri+net#ChemicalReactionNetwork) to this page.`

Added software paper ref (after chrome deciding several times it wanted to eat my modification).

`Added software paper ref (after chrome deciding several times it wanted to eat my modification).`

I added a bunch more references to

By the way, Dave Tweed's original yellow-and-aqua coloring scheme for Petri nets on this article has become the official coloring scheme that Jacob Biamonte and I are using. But maybe Dave got it from the Scholarpedia article.

`I added a bunch more references to * [[Petri net]] By the way, Dave Tweed's original yellow-and-aqua coloring scheme for Petri nets on this article has become the official coloring scheme that Jacob Biamonte and I are using. But maybe Dave got it from the Scholarpedia article.`

`http://www.facebook.com/lee.bloomquist.9`

http://projecteuclid.org/DPubS?service=UI&version=1.0&verb=Display&handle=euclid.ndjfl/1039540766

at the same time Jon was writing that, I was writing this at the Brookings Institution --

http://www.unifr.ch/econophysics/paper/show/id/econophysics_0006002

we had met at a workshop on the business applications of situation theory, in which DARPA had great interest.

we both met some of their modellers as well.

`Here's the paper "information and impossibilities"by Jon -- http://projecteuclid.org/DPubS?service=UI&version=1.0&verb=Display&handle=euclid.ndjfl/1039540766 at the same time Jon was writing that, I was writing this at the Brookings Institution -- http://www.unifr.ch/econophysics/paper/show/id/econophysics_0006002 we had met at a workshop on the business applications of situation theory, in which DARPA had great interest. we both met some of their modellers as well.`

I may be able to lay it out in 4 to 5 diagrams. Here's the first -

http://www.wexedesign.com/index.svg

`Possibly seeing some sub-basement "piping" underneath the Born equation. I may be able to lay it out in 4 to 5 diagrams. Here's the first - http://www.wexedesign.com/index.svg`

Here are some diagrams--

http://www.wexedesign.com/theBornInfomorphism.pdf

`65 degrees here near Lake Michigan, no snow. Here are some diagrams-- http://www.wexedesign.com/theBornInfomorphism.pdf`

I started a section, at the bottom of the references, for the category theory of Petri nets.

So far I just added one rather specific yet interesting entry:

Though I haven't parsed the details of it yet, it looks like an illustration of a general principle that network compositions are described in the world of categories by certain kinds of limits (pullbacks).

Another example comes from networks of relations. Compositions are of course represented by natural joins, and these are again limits (pullbacks) in the world of categories (the category Rel). Here is a paper that covers this and much more:

I'm ruminating on a blog to go into these ideas.

`I started a section, at the bottom of the references, for the category theory of Petri nets. So far I just added one rather specific yet interesting entry: * Eric Fabre, [On the Construction of Pullbacks for Safe Petri Nets](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.99.7614) Though I haven't parsed the details of it yet, it looks like an illustration of a general principle that network compositions are described in the world of categories by certain kinds of limits (pullbacks). Another example comes from networks of relations. Compositions are of course represented by natural joins, and these are again limits (pullbacks) in the world of categories (the category Rel). Here is a paper that covers this and much more: * David I. Spivak, [Simplicial Databases](http://math.mit.edu/~dspivak/informatics/SD.pdf) I'm ruminating on a blog to go into these ideas.`

Added this reference, which John had posted to another discussion thread:

`Added this reference, which John had posted to another discussion thread: * Vladimiro Sassone, [An axiomatization of the category of Petri net computations](http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.109.3674)`

I removed some material on Petri nets from Network theory and added it to

`I removed some material on Petri nets from [[Network theory]] and added it to * [[Petri net]]`

Just added all the chemical reaction software I could find to

with some possibly horrible but unread draft comments and notes. I see I didn't do a very good job of cleaning up my headings last time but wip.

`Just added all the chemical reaction software I could find to * [[Petri net]] with some possibly horrible but unread draft comments and notes. I see I didn't do a very good job of cleaning up my headings last time but wip.`

John Baez and Jacob Biamonte

Now I've listed nearly 30 SPN-type software packages it's clearly infeasible for one person to evaluate them all, even briefly. The simplest way I can think of to get the information we need is to ask an academic molecular dynamicist, a computational chemist and somebody who specialises in stochastic processes if they've ever heard of or used these or any other packages. I don't currently have any such contacts.

Jacob: I notice that Oxford's one of your institutions.

Hugh Cartwright is in the theoretical chemistry group and is an expert on chemical AI networks (esp. neural). Maybe he can help?

John: Maybe until the software list is intelligently culled it's not much use? Perhaps all of that should be moved to an Experiments in evaluating stochastic Petri net software or a more suitably-titled Experiments page?

`[[John Baez]] and [[Jacob Biamonte]] Now I've listed nearly 30 SPN-type software packages it's clearly infeasible for one person to evaluate them all, even briefly. The simplest way I can think of to get the information we need is to ask an academic molecular dynamicist, a computational chemist and somebody who specialises in stochastic processes if they've ever heard of or used these or any other packages. I don't currently have any such contacts. Jacob: I notice that Oxford's one of your institutions. [Hugh Cartwright](http://cartwright.chem.ox.ac.uk/) is in the theoretical chemistry group and is an expert on chemical AI networks (esp. neural). Maybe he can help? John: Maybe until the software list is intelligently culled it's not much use? Perhaps all of that should be moved to an Experiments in evaluating stochastic Petri net software or a more suitably-titled Experiments page?`

I've added AlChemy and Chemical Abstract Machine (although I haven't even checked whether there is, or is even meant to be, some actual software available for the second). I've also added some hybrid (Haskell) modelling packages: Aivika, Hydra and Netwire which I've been experimenting with for some time.

I also added a reference to the paper I'm reading at the moment on the A Topological Approach to Chemical Organisations which contains a set of refs for chemical and biological network graph-rewriting techniques.

John Baez

I propose to move these reviews to a new pages with the title Modelling and Simulation Software.with links to Hybrid, DES, SPN and Electrical and electronic simulation software pages. Any suggestion for the best place to I put them under, Latest changes?

`I've added AlChemy and Chemical Abstract Machine (although I haven't even checked whether there is, or is even meant to be, some actual software available for the second). I've also added some hybrid (Haskell) modelling packages: Aivika, Hydra and Netwire which I've been experimenting with for some time. I also added a reference to the paper I'm reading at the moment on the [A Topological Approach to Chemical Organisations](http://www.santafe.edu/media/workingpapers/09-04-009.pdf) which contains a set of refs for chemical and biological network graph-rewriting techniques. [[John Baez]] I propose to move these reviews to a new pages with the title Modelling and Simulation Software.with links to Hybrid, DES, SPN and Electrical and electronic simulation software pages. Any suggestion for the best place to I put them under, Latest changes?`

Jim wrote:

Wow, thanks! That'll help us a lot.

I suppose so, if you mean actually (buying and) running them. I might try crowd-sourcing the job by posting a blog article about these packages.

That sounds a lot more general than "Petri-net simulation software". I'd sort of like to keep them on the Petri net page until I get around to writing about this software... so I don't lose them! Then I'll be glad to do the work to move them somewhere.

`Jim wrote: > Now I’ve listed nearly 30 SPN-type software packages... Wow, thanks! That'll help us a lot. > it’s clearly infeasible for one person to evaluate them all, even briefly... I suppose so, if you mean actually (buying and) running them. I might try crowd-sourcing the job by posting a blog article about these packages. > I propose to move these reviews to a new pages with the title Modelling and Simulation Software... That sounds a lot more general than "Petri-net simulation software". I'd sort of like to keep them on the Petri net page until I get around to writing about this software... so I don't lose them! Then I'll be glad to do the work to move them somewhere.`

John Baez wrote:

Just to make things a bit more complicated : Stella (closed source) seems to be the most available and widely used general purpose modelling software in academia. I've stuck to listing what appear to be open source packages.

I need to go through the list again and note their availability and status ie. whether they are downloadable, build and run or not. I've done this with only one or two other packages apart from the Haskell ones (aivika, hydra and netwire)

It's possibly worth considering that open source software from academia is frequently a master's or doctoral thesis and might not contain working or published code. Despite containing good work they just get left to rot.

An example is Cezar Ionescu's PhD thesis on Vulnerability Modelling and Dynamic Monadic Systems (wrt. climate) which contains nearly complete code. I didn't get a response when I emailed him and his collaborator and asked whether their code could be made available for use by the Azimuth project. Perhaps they just need another nudge?

For any of the packages which seem interesting but have a fail status emailing the author(s) seems sensible.

If we can get a working set and put it in the azimuth github repo then a request for people to help try them out for functionality and ease of use etc might deliver the goods?

The DES will have to have a different page and for they hybrid packages I think some will be more appropriate for Petri net modelling than others. I haven't looked at or included any electrical circuit emulation software but the Chua circuit page uses a well-known package but which one, I forget.

`[[John Baez]] wrote: > I suppose so, if you mean actually (buying and) running them. I might try crowd-sourcing the job by posting a blog article about these packages. Just to make things a bit more complicated : Stella (closed source) seems to be the most available and widely used general purpose modelling software in academia. I've stuck to listing what appear to be open source packages. I need to go through the list again and note their availability and status ie. whether they are downloadable, build and run or not. I've done this with only one or two other packages apart from the Haskell ones (aivika, hydra and netwire) It's possibly worth considering that open source software from academia is frequently a master's or doctoral thesis and might not contain working or published code. Despite containing good work they just get left to rot. An example is [Cezar Ionescu's PhD thesis](http://www.pik-potsdam.de/members/ionescu) on Vulnerability Modelling and Dynamic Monadic Systems (wrt. climate) which contains nearly complete code. I didn't get a response when I emailed him and his collaborator and asked whether their code could be made available for use by the Azimuth project. Perhaps they just need another nudge? For any of the packages which seem interesting but have a fail status emailing the author(s) seems sensible. If we can get a working set and put it in the azimuth github repo then a request for people to help try them out for functionality and ease of use etc might deliver the goods? > Then I’ll be glad to do the work to move them somewhere. The DES will have to have a different page and for they hybrid packages I think some will be more appropriate for Petri net modelling than others. I haven't looked at or included any electrical circuit emulation software but the Chua circuit page uses a well-known package but which one, I forget.`

Added a new section "Petri net specification" to the Petri nets page with links to the Petri Net World database at Tubingen and an extract of possible features to help rule different packages in or out of consideration for use by Azimuth and as an aid to designing a database schema and choosing a data interchange format.

`Added a new section "Petri net specification" to the [[Petri nets]] page with links to the Petri Net World database at Tubingen and an extract of possible features to help rule different packages in or out of consideration for use by Azimuth and as an aid to designing a database schema and choosing a data interchange format.`

I've temporarily taken the software section offline for easier refactoring and editing. I thought I'd found the best modelling tool when Claus Reinke changed the description of his HCPN software (after 10 years) to say that he wanted to make a completely javascript version to run entirely in the browser. Unfortunately he can't afford to do it atm although an advantage his paper from 2004 esimated HCPN as taking only 2-3 weeks to develop in Haskell (cf 2-3 years taken to develop the existing packages). And CPNTools, which has been in developement for 25 years, is written in an obsolete language only for 32-bit machines as a Windows app in a virtual machine with no available source code. The original author says it needs a complete rewrite. Dismal news I'm afraid. I'm just trying the French package PROM and will continue experimenting, albeit at snail's pace.

I posted this over on the stoch mech book page and, as it wasn't commented on, have copied it here for continuity.

I have found this animated Petri net written using a javascript library called jointJS. The engine code at first glance is similar to Dave Tanzer’s javascript. It’s the nearest thing I’ve found so far to the sort of rendering engine people might want. I’ve knocked up a first UI for a Petri net editor with the aim of producing simulation results just as graphs using Haskell digestive-functors (to integrate with the prototype Azimuth Snap server in case anybody doesn’t know it exists).

Will restore edited reviews starting at the weekend.

`I've temporarily taken the software section offline for easier refactoring and editing. I thought I'd found the best modelling tool when Claus Reinke changed the description of his HCPN software (after 10 years) to say that he wanted to make a completely javascript version to run entirely in the browser. Unfortunately he can't afford to do it atm although an advantage his paper from 2004 esimated HCPN as taking only 2-3 weeks to develop in Haskell (cf 2-3 years taken to develop the existing packages). And CPNTools, which has been in developement for 25 years, is written in an obsolete language only for 32-bit machines as a Windows app in a virtual machine with no available source code. The original author says it needs a complete rewrite. Dismal news I'm afraid. I'm just trying the French package PROM and will continue experimenting, albeit at snail's pace. I posted this over on the stoch mech book page and, as it wasn't commented on, have copied it here for continuity. I have found this animated Petri net written using a javascript library called jointJS. The engine code at first glance is similar to Dave Tanzer’s javascript. It’s the nearest thing I’ve found so far to the sort of rendering engine people might want. I’ve knocked up a first UI for a Petri net editor with the aim of producing simulation results just as graphs using Haskell digestive-functors (to integrate with the prototype Azimuth Snap server in case anybody doesn’t know it exists). Will restore edited reviews starting at the weekend.`

Thanks, Jim! I've been too distracted by other projects to work on the stoch mech book or Petri nets lately, but I

willget to that, and then your work will be much appreciated.`Thanks, Jim! I've been too distracted by other projects to work on the stoch mech book or Petri nets lately, but I _will_ get to that, and then your work will be much appreciated.`