Turing Patterns in 2D

Turing Patterns in 2D preview image

1 collaborator

Default-person Cormac Burke (Author)


(This model has yet to be categorized with any tags)
Visible to everyone | Changeable by the author
Model was written in NetLogo 6.1.0 • Viewed 19 times • Downloaded 1 time • Run 0 times
Download the 'Turing Patterns in 2D' modelDownload this modelEmbed this model

Do you have questions or comments about this model? Ask them here! (You'll first need to log in.)


Wikipedia explains:" The English mathematician Alan Turing introduced a concept, which came to be known as a Turing pattern, in a 1952 paper entitled "The Chemical Basis of Morphogenesis". This foundational paper describes how patterns in nature, such as stripes and spots, can arise naturally and autonomously from a homogeneous, uniform state."

This model illustrates a simple "reaction-diffusion" system pioneered by Alan Turing in 1952 to create pattern on a featureless surface. This "bare bones" model demonstrates his thinking, with similar equations but using today's vastly more powerful computer power.

The changes over time of two concentrations of chemicals are related to each other in two differential equations. When the parameters are set within suitable bounds, they operate on each other, on a uniformly seeded plane, to create a range of patterns. The differential equations are discretised so that the calculations proceed by simple arithmetic.


Within each time-tick, every patch uses the equations on the most recent concentrations to calculate the changes to the concentrations. These changes are applied in the patch to to give the new concentrations. The equations each have a Reaction effect and a Diffusion effect. These push and pull the concentrations to higher or lower values. We know that diffusion smooths out disparities; one thinks of the temperature of a hot object coming to rest at ambient temperature. However Turing could see how a substrate with a much longer range of diffusion than that of the activator could be used to create patterns that persist. This model shows how. The equations are set up to create pattern when: 1)The ground is initially seeded so that concentrations of Activator and Substrate equals four exactly in every patch, 2) beta, which is the perturbation which sparks pattern formation, is suitably small and random. I use -.4 < beta < .4, 3) the diffusion rate of Activator, set here at .015 is say a fifth to a tenth of Di, the long-ranging diffusion rate. 4) s is suitably small. The user chooses s to shrink the Reaction effects, thereby enhancing the Diffusion effects. By varying s, you make a big difference in pattern formation.


Press SETUP to initialize each cell in the grid to a uniform state.

Press GO to run the model.


Run the model with the default slider settings.

What happens near the beginning of run?

After about 10,000 ticks, you should start to see a pattern emerging.

After more ticks the pattern firms up, filling the torus and eventually stops moving.

Prediction can be difficult. It can be hard to see why the specific rules and parameters can produce patterns. When emergent qualities have sufficient regularity to show as pattern we are in the "Turing space" for these equations. Unsuitable parameters will not produce pattern.


What is the effect of varying the different sliders? I have indicated some displays obtained by walking through various settings for s with Da and Di held fixed, and also a few displays with Di varying. There are many other displays to be found with other combinations of s,Di,Da. Remember that Di must well exceed Da in order to form pattern -a great insight of Turing in 1952.


This model is an example of a "reaction-diffusion" system. By altering 1) the Reaction formulas, 2) the initial seeding arrangements in Setup, 3) the error-traps and 4) the display range, you may be able to simulate other reaction-diffusion systems.


Set ticks to very fast. The torus has wrap-around continuity from side to side and from top to bottom; lines leaving at an edge reenter at the opposite edge. Perceiving this enables a better understanding of the pattern displayed.


"Fur" in Models Library/Biology "A continuous Activator-Inibitor System" by Bruce McClennnan in Netlogo Modelling Commons.


"The Chemical Basis of Morphogenesis" Alan Turing (1952) Wikipedia -Turing Patterns Greg Turk. Generating synthetic textures using reaction- diffusion. Available on Internet


If you mention this model or the NetLogo software in a publication, we ask that you include the citations below.

Please cite the NetLogo software as:


Copyright 2003 Uri Wilensky. CC BY-NC-SA 3.0

This work is licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License. To view a copy of this license, visit https://creativecommons.org/licenses/by-nc-sa/3.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Commercial licenses are also available. To inquire about commercial licenses, please contact Uri Wilensky at uri@northwestern.edu.

Comments and Questions

Please start the discussion about this model! (You'll first need to log in.)

Click to Run Model

;; Governing Formulas:
;; Change in concentrations              Reaction effects:                Diffusion effects:
;; dAct/dt                   =   s (in*act  -act  -12  + beta )            +Da diffUAct                ; Activator
;; dIn/dt                    =    s (16  - in*act)                         +Di diffUIn                 ; Substrate/Inhibitor
globals [ dex ]   ;; width of patch.
patches-own [ valIn  valAct newvalIn  newvalAct  reactI  diffUI  reactA  diffUA beta ]

to setup
  set dex 1
ask patches                              ;; The world is seeded in equal and uniform concentrations, flat and featureless.
 [ set valIn 4  set valAct 4             ;;  valAct is the concentration of the Activator, valIn is the value of the concentration of substrate.
   set pcolor scale-color blue valAct 3 4.5  ]

to go       ;; observer procedure:  runs by asking all patches in random order.
  ask patches [ calc-newvalues ] ;; each patch looks to neighbors4 for new values to be calculated for self-patch,
  ask patches [ update-values  ] ;; self-patch is now updated.

to calc-newvalues               ;; this patch procedure looks to each self-patch, diffusions use neighbors4 as N,S,E,W.

  set diffUI  Di * ( ( sum [valin] of neighbors4 - ( 4 *  valIn ) / dex ^ 2 )  ) ;; this faster diffusion spreads the creative instability.
  set diffUA  Da * ( ( sum [valAct] of neighbors4 - ( 4 * valAct ) / dex ^ 2 )  ) ;; Da must be the lesser diffusion.
  set beta ( random-float .4 - random-float .4 )  ;; beta is the perturbation which sparks pattern formation; all else would be inert.
  set reactI  s * ( 16.0 - valIn * valAct )
  set reactA  s * ( valIn * valAct - valAct - 12.0 + beta )
      if abs reactA > 6 [ set reactI 0  set valAct 4]  ;; this is an error trap to avoid distructive instability.

  set newvalIn  valIn  + ( reactI + diffUI )
  set newvalAct valAct + ( reactA + diffUA )
      if abs newvalAct > 9 or newvalAct < 1 [ set newvalAct 4 ]   ;; this is an error trap to avoid distructive instability.

to update-values  ;;use the results calculated above to update the self-cells.
                          set valIn newvalIn
                          set valAct newvalAct
                          set pcolor scale-color green valAct 3 5   ;; configures the range of the display.
               ;; White patches are those where Activator values are high, Black patches where substrate is high, green intermediate.

There is only one version of this model, created about 1 month ago by Cormac Burke.

Attached files

File Type Description Last updated
Turing Patterns in 2D.png preview Preview for 'Turing Patterns in 2D' about 1 month ago, by Cormac Burke Download

This model does not have any ancestors.

This model does not have any descendants.