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 in bigraphs

Experiments in bigraphs (part 2) - Bigraphical Reactive Systems

Experiments in Petri nets - Results from two different tools

  • List of my Google Web Toolkit (GWT) online apps. This is where I’m currently (Nov 2013) putting my development efforts. All of the Petri Net and climate-related apps now run with GWT. I make heavy use of HTML5 features (SVG, canvas, etc.), so a modern browser is required (Firefox, Chrome, Opera, Safari, IE9+). GWT compiles Java into cross-browser JavaScript. No server software is required.

  • List of my online workbooks, many of which contain some sort of in-page editable app (sometimes trivial) usually implemented with JavaScript. Some of these run using the GWT-based tool.

  • List of some of my legacy Java apps that can be run online. See especially the climate change and other models toward the end of the page. Most of these have been replaced by the GWT version.

  • List of my publications.

  • Example of an app where anyone can inject new XML structures and 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 runs online in any modern browser. Petri net models can be completely specified using XML.

The following models are currently available. To view the model source code (XML + JavaScript + SVG + notes), click on the link. To run the model, click on the associated run-link below.

Feinberg - Chemical Reaction Networks - network 1.1 run

Petri nets - Jensen protocol example run

Petri net - Climate model run

Glycolysis Petri net, with mass action kinetics run

Petri nets and Membrane Computing run

Petri net - Cell model run

Petri nets - various run

Feinberg network 1.1 run

Feinberg network 2.31 run

Feinberg network 2.34 run

Feinberg network 2.38 run

Feinberg network 2.44 run

Feinberg network (1987) 6.5 run

Feinberg network (1987) 6.7 run

A few notes on the Petri net models:

  • 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 executable gists based on mine.
  • 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. But note that this doesn’t yet include the latest changes for the GWT version.

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)


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)


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]


My contact information is embedded inside the following.


category: members