The Azimuth Project
Ken Webb

Things that I’m interested in include:

  • networks of all types, hierarchical organization of network nodes, and practical applications
  • climate change, and “saving the planet”
  • programming code that anyone can run in their browser, and that anyone can edit and extend in their browser
  • approaches to software development that allow independently-developed apps to work together
  • the relationship between computer-science object-oriented (OO) concepts and math concepts
  • how everything is connected

I’ve been paying attention to the Azimuth Project because it parallels my own interests, but with a more math focus (math is not one of my strong points). As learning exercises, I’ve reimplemented a few of the applications mentioned on Azimuth pages. Some of my online workbooks (blog-like entries that are my way of taking active notes) were based on content at the Azimuth Project.

I have a BA in Cognitive Science from Carleton University in Ottawa (including lots of psychology courses), and an MSc in Evolutionary and Adaptive Systems from The University of Sussex in Brighton. I’ve worked for many years as a software developer and consultant, using numerous languages and approaches.

Azimuth Blogs

I’m working on a blog series: Connections: Petri nets, systems biology, and beyond

A draft of part 1 of the blog is here: Blog - connections: Petri nets and beyond (part 1).

An initial outline of part 2 of the blog is here: Blog - connections: Petri nets and beyond (part 2).

I’m also writing a page of notes about the Real-Time Object-Oriented Modeling (ROOM) approach: Real-time object-oriented modeling (ROOM)

Experiments:

Experiments in bigraphs

Experiments in bigraphs (part 2) - Bigraphical Reactive Systems

Experiments in Petri nets - Results from two different tools

  • List of my online workbooks, all of which contain some sort of in-page editable app (sometimes trivial) usually implemented with JavaScript.

  • List of some of my Java apps that can be run online. See especially the climate change and other models toward the end of the page.

  • List of my publications.

  • Example of an app where anyone can inject new XML structures and Java or JavaScript code while the app is running.

Petri nets

I’ve started building a Petri net modeling and simulation tool based partly on information available in the Azimuth Project and provided by people on the Azimuth Forum. Xholon Chameleon is written in Java and can be run online using Java Web Start (JNLP). Petri net models can be completely specified using XML.

The following models are currently available. To view the model source code (XML), with notes and instructions, click on the link. To run the model, select File –> Open in the Xholon Chameleon tool, and then drag the link to the Xholon Chameleon window.

To run the simulation, read the model notes and instructions, especially starting with step (4).

Feinberg - Chemical Reaction Networks - network 1.1

Petri nets - Jensen protocol example

Petri net - Climate model

Glycolysis Petri net, with mass action kinetics

Petri nets and Membrane Computing

Petri net - Cell model

Petri nets - various

A few notes on the Petri net models:

  • If you drop or paste the link onto the Application node in the tree in the Xholon Chameleon window, then it will create the model in a new Application. Access the new app by clicking the Application menu at the top of the window.
  • You can edit the XML source code with any text editor. Then drag and drop, or copy and paste, the entire edited XML content into the Xholon Chameleon window.
  • My Xholon Workbook site provides online editors for the XML source code. Each of the model links above includes the github gist id for that model. Type that id into the input area on the Xholon Workbook page and click the “Open” button. For example, the workbook gist id for the “Feinberg - Chemical Reaction Networks” model is “3377668”.
  • You could also open your own free github account and create your own gists based on mine. You could then drag and drop, or copy and paste, those (or links to them) directly into the Xholon Chameleon tool.
  • Source code for the Xholon Chameleon tool is available at SourceForge. You can locate the Java source code for most nodes in the Xholon Chameleon tree, by right-clicking the node and selecting Search Engine –> Source code . For example, the source code for the Chameleon node (chameleon_0) is located here.
  • Alternatively you can run the Xholon Chameleon tool with no security restrictions so additional non-essential features will work.
  • The app writes informative text and error messages to the Java Console. To see these you will need to enable the Java Console.

To run the following models, drag the link until it’s directly on top of the Chameleon node (chameleon_0) in the Xholon Chameleon window. Unlike the models above, it can’t be dropped just anywhere in the window.

Differential equations generated by Xholon Chameleon for Feinberg network 1.1 (Mass Action kinetics assumed). To generate these, right-click the AnalysisCRN node and select “Show differential equations”:

ddta 7=(0.0039*a 7)+(0.0038*b 8 2)(0.0037*a 7*c 9)+(0.0036*d 10)+(0.0034*b 8*e 11)\frac{d}{d t} a_7 = -(0.0039*a_7) +(0.0038*b_8^2) -(0.0037*a_7*c_9) +(0.0036*d_10) +(0.0034*b_8*e_11)
ddtb 8=+(2*0.0039*a 7)(2*0.0038*b 8 2)+(0.0035*d 10)(0.0034*b 8*e 11)\frac{d}{d t} b_8 = +(2*0.0039*a_7) -(2*0.0038*b_8^2) +(0.0035*d_10) -(0.0034*b_8*e_11)
ddtc 9=(0.0037*a 7*c 9)+(0.0036*d 10)+(0.0034*b 8*e 11)\frac{d}{d t} c_9 = -(0.0037*a_7*c_9) +(0.0036*d_10) +(0.0034*b_8*e_11)
ddtd 10=+(0.0037*a 7*c 9)(0.0036*d 10)(0.0035*d 10)\frac{d}{d t} d_10 = +(0.0037*a_7*c_9) -(0.0036*d_10) -(0.0035*d_10)
ddte 11=+(0.0035*d 10)(0.0034*b 8*e 11)\frac{d}{d t} e_11 = +(0.0035*d_10) -(0.0034*b_8*e_11)

OR

ddta 7=(α*a 7)+(β*b 8 2)(γ*a 7*c 9)+(δ*d 10)+(ξ*b 8*e 11)\frac{d}{d t} a_7 = -(\alpha*a_7) +(\beta*b_8^2) -(\gamma*a_7*c_9) +(\delta*d_10) +(\xi*b_8*e_11)
ddtb 8=+(2*α*a 7)(2*β*b 8 2)+(ϵ*d 10)(ξ*b 8*e 11)\frac{d}{d t} b_8 = +(2*\alpha*a_7) -(2*\beta*b_8^2) +(\epsilon*d_10) -(\xi*b_8*e_11)
ddtc 9=(γ*a 7*c 9)+(δ*d 10)+(ξ*b 8*e 11)\frac{d}{d t} c_9 = -(\gamma*a_7*c_9) +(\delta*d_10) +(\xi*b_8*e_11)
ddtd 10=+(γ*a 7*c 9)(δ*d 10)(ϵ*d 10)\frac{d}{d t} d_10 = +(\gamma*a_7*c_9) -(\delta*d_10) -(\epsilon*d_10)
ddte 11=+(ϵ*d 10)(ξ*b 8*e 11)\frac{d}{d t} e_11 = +(\epsilon*d_10) -(\xi*b_8*e_11)

OR

ddtA=αA+βB 2γAC+δD+ξBE\frac{d}{d t} A = -\alpha A +\beta B^2 -\gamma AC +\delta D +\xi BE
ddtB=+2αA2βB 2+ϵDξBE\frac{d}{d t} B = +2\alpha A -2\beta B^2 +\epsilon D -\xi BE
ddtC=γAC+δD+ξBE\frac{d}{d t} C = -\gamma AC +\delta D +\xi BE
ddtD=+γACδDϵD\frac{d}{d t} D = +\gamma AC -\delta D -\epsilon D
ddtE=+ϵDξBE\frac{d}{d t} E = +\epsilon D -\xi BE

Differential equations generated by Xholon Chameleon for Feinberg network 2.44 (Mass Action kinetics assumed):

ddta 52=(0.0011*a 52)+(0.0012*b 53 2)(0.0013*a 52)+(0.0014*a 67)\frac{d}{d t} a_52 = -(0.0011*a_52) +(0.0012*b_53^2) -(0.0013*a_52) +(0.0014*a_67)
ddtb 53=+(2*0.0011*a 52)(2*0.0012*b 53 2)(0.0015*b 53)+(0.0016*b 68)\frac{d}{d t} b_53 = +(2*0.0011*a_52) -(2*0.0012*b_53^2) -(0.0015*b_53) +(0.0016*b_68)
ddta 67=(0.0011*a 67)+(0.0012*b 68 2)+(0.0013*a 52)(0.0014*a 67)\frac{d}{d t} a_67 = -(0.0011*a_67) +(0.0012*b_68^2) +(0.0013*a_52) -(0.0014*a_67)
ddtb 68=+(2*0.0011*a 67)(2*0.0012*b 68 2)+(0.0015*b 53)(0.0016*b 68)\frac{d}{d t} b_68 = +(2*0.0011*a_67) -(2*0.0012*b_68^2) +(0.0015*b_53) -(0.0016*b_68)

Differential equations generated by Xholon Chameleon for Glycolysis model:

ddtglucose 46=(0.01*glucose 46)\frac{d}{d t} glucose_46 = -(0.01*glucose_46)
ddtglucose6Phosphate 47=+(0.01*glucose 46)(0.01*glucose6Phosphate 47)\frac{d}{d t} glucose6Phosphate_47 = +(0.01*glucose_46) -(0.01*glucose6Phosphate_47)
ddtfructose6Phosphate 48=+(0.01*glucose6Phosphate 47)(0.01*fructose6Phosphate 48*atp 58)\frac{d}{d t} fructose6Phosphate_48 = +(0.01*glucose6Phosphate_47) -(0.01*fructose6Phosphate_48*atp_58)
ddtfructose1x6Biphosphate 49=+(0.01*fructose6Phosphate 48*atp 58)(0.01*fructose1x6Biphosphate 49)(0.01*fructose1x6Biphosphate 49)\frac{d}{d t} fructose1x6Biphosphate_49 = +(0.01*fructose6Phosphate_48*atp_58) -(0.01*fructose1x6Biphosphate_49) -(0.01*fructose1x6Biphosphate_49)
ddtdihydroxyacetonePhosphate 50=+(0.01*fructose1x6Biphosphate 49)(0.01*dihydroxyacetonePhosphate 50)\frac{d}{d t} dihydroxyacetonePhosphate_50 = +(0.01*fructose1x6Biphosphate_49) -(0.01*dihydroxyacetonePhosphate_50)
ddtglyceraldehyde3Phosphate 51=+(0.01*fructose1x6Biphosphate 49)+(0.01*dihydroxyacetonePhosphate 50)(0.01*glyceraldehyde3Phosphate 51)\frac{d}{d t} glyceraldehyde3Phosphate_51 = +(0.01*fructose1x6Biphosphate_49) +(0.01*dihydroxyacetonePhosphate_50) -(0.01*glyceraldehyde3Phosphate_51)
ddtx1x3BisphosphoGlycerate 52=+(0.01*glyceraldehyde3Phosphate 51)(0.01*x1x3BisphosphoGlycerate 52)\frac{d}{d t} x1x3BisphosphoGlycerate_52 = +(0.01*glyceraldehyde3Phosphate_51) -(0.01*x1x3BisphosphoGlycerate_52)
ddtx3PhosphoGlycerate 53=+(0.01*x1x3BisphosphoGlycerate 52)(0.01*x3PhosphoGlycerate 53)\frac{d}{d t} x3PhosphoGlycerate_53 = +(0.01*x1x3BisphosphoGlycerate_52) -(0.01*x3PhosphoGlycerate_53)
ddtx2PhosphoGlycerate54=+(0.01*x3PhosphoGlycerate 53)(0.01*x2PhosphoGlycerate 54)\frac{d}{d t} x2PhosphoGlycerate54 = +(0.01*x3PhosphoGlycerate_53) -(0.01*x2PhosphoGlycerate_54)
ddtphosphoEnolPyruvate 55=+(0.01*x2PhosphoGlycerate 54)(0.01*phosphoEnolPyruvate 55*adp 57)\frac{d}{d t} phosphoEnolPyruvate_55 = +(0.01*x2PhosphoGlycerate_54) -(0.01*phosphoEnolPyruvate_55*adp_57)
ddtpyruvate 56=+(0.01*phosphoEnolPyruvate 55*adp 57)\frac{d}{d t} pyruvate_56 = +(0.01*phosphoEnolPyruvate_55*adp_57)
ddtadp 57=+(0.01*fructose6Phosphate 48*atp 58)(0.01*phosphoEnolPyruvate 55*adp 57)\frac{d}{d t} adp_57 = +(0.01*fructose6Phosphate_48*atp_58) -(0.01*phosphoEnolPyruvate_55*adp_57)
ddtatp 58=(0.01*fructose6Phosphate 48*atp 58)+(0.01*phosphoEnolPyruvate 55*adp 57)\frac{d}{d t} atp_58 = -(0.01*fructose6Phosphate_48*atp_58) +(0.01*phosphoEnolPyruvate_55*adp_57)

MathML generated by Xholon:

dAdt = -(0.0039·A) +(0.0038·B2) -(0.0037·A·C) +(0.0036·D) +(0.0034·B·E) dBdt = +(2·0.0039·A) -(2·0.0038·B2) +(0.0035·D) -(0.0034·B·E) dCdt = -(0.0037·A·C) +(0.0036·D) +(0.0034·B·E) dDdt = +(0.0037·A·C) -(0.0036·D) -(0.0035·D) dEdt = +(0.0035·D) -(0.0034·B·E)

Differential equations generated by COPASI, an SBML tool, from Xholon-generated SBML content.

d [A] · Vpot dt = - Vpot · 0.0039 · [A] + Vpot · 0.0038 · [B] · [B] - Vpot · 0.0037 · [A] · [C] + Vpot · 0.0036 · [D] + Vpot · 0.0034 · [B] · [E] d [B] · Vpot dt = +2· Vpot · 0.0039 · [A] -2· Vpot · 0.0038 · [B] · [B] + Vpot · 0.0035 · [D] - Vpot · 0.0034 · [B] · [E] d [C] · Vpot dt = - Vpot · 0.0037 · [A] · [C] + Vpot · 0.0036 · [D] + Vpot · 0.0034 · [B] · [E] d [D] · Vpot dt = + Vpot · 0.0037 · [A] · [C] - Vpot · 0.0036 · [D] - Vpot · 0.0035 · [D] d [E] · Vpot dt = + Vpot · 0.0035 · [D] - Vpot · 0.0034 · [B] · [E]

Contact

My contact information is embedded inside the following.

@QWERTYUIk
OPASmDFGHe
primordion
JKLZcXCVB.

category: members