This page was automatically generated by NetLogo 5.0beta2. Questions, problems? Contact feedback@ccl.northwestern.edu.
The applet requires Java 5 or higher. Java must be enabled in your browser settings. Mac users must have Mac OS X 10.4 or higher. Windows and Linux users may obtain the latest Java from Sun's Java site. If the display appear cut off with Firefox, then try another browser (Safari works).
powered by NetLogo
view/download model file: Pattern.nlogo
Could it be that a single mechanism underlies such diverse patterns such as the stripes on a zebra, the spots on a leopard, and the blobs on a giraffe? This model is a possible explanation of how the patterns on animals’ skin self-organize. If the model is right, then even though the animals may appear to have altogether different patterns, the rules underlying the formation of these patterns are the same and only some of the values (the numbers that the rules work on) are slightly different.
Thinking of the formation of fur in terms of rules also helps us understand how offspring of animals may have the same type of pattern, but not the same exact pattern. This is because what they have inherited is the rules and the values rather than a fixed picture. The process by which the rules and values generate a pattern is affected by chance factors, so each individual’s pattern is different, but as long as the offspring receive the same rules and values, their own fur will self organize into the same type of pattern as their parents’.
This program simulates vertebrate skin patterns by use of a
short-range activator and a long-range inhibitor. Each pigmented
cell that is “turned on” (the white cells in the
program) produces 100 units of an activating morphogen and 100
units of an inhibiting morphogen. Both chemicals diffuse a
specified number of times in the X and Y directions, and then each
patch is evaluated. Patches with more activator than inhibitor
turn white, and patches with more inhibitor than activator turn
black. The process is then repeated; a steady-state pattern is
usually quick to emerge.
The SETUP button randomly colors each patch and deposits the morphogens on patches that are white.
The GO button executes the model according to the rules above.
The GO ONCE button executes a single cycle of the simulation, sp that the changes are easier to see.
The DRAW WHITE and DRAW BLACK buttons allow the user to use the mouse to draw white and black patches, respectively.
The X_ACTIVE, Y_ACTIVE, X_INHIBIT, and Y_INHIBIT sliders control
the diffusion of the activator and inhibitor morphogens in each
direction. More specifically, the slider
variables control the number of times that each patch shares its
contents with its two neighbors (in the given direction), such
that each patch is left with an equal share of the patch’s
original morphogens.
INITIAL_DENSITY controls the initial density of activated cells (white patches).
The FIELD DISPLAY chooser controls the information displayed. In its default position (NONE) is shows the color (white or black) of the cells. If ACTIVATOR is chosen, then the concentration of the activator morphogen is displayed as a shade of red. If INHIBITOR is chosen, then the concentration of the inhibitor morphogen is displayed as a shade of blue. In either case the concentration is displayed after the morphogen has diffused, but before an activated cell secretes more of the morphogens.
Modification of the absolute and relative sizes of the slider variables can cause a variety of patterns to emerge, resembling everything from zebras to vermiculated rabbit fish.
The display shows the number and percentage of cells (patches) that change color on each time step, and plots this as a function of time. Notice how quickly the pattern stabilizes, but some of the cells (typically less than 1%) are always changing, showing that the pattern is not static but rather is a “stationary state.” You can see this by changing some of the parameters (diffusion rates and bias), which may destabilize the pattern and cause it to converge to a new stationary state.
Run the model with different INITIAL_DENSITY settings. How, if at all, does the value of the INITIAL_DENSITY affect the emergent pattern? Do you get the same pattern? Do you get a different pattern? Does it take longer? Try very large and very small values (e.g., 99%, 1%).
Note how fragile the self organization of the cells is to slight changes in parameters. If you hold all other factors and slightly change just the BIAS , from trial to trial, you will note that for large positive numbers you will invariably get completely white fur and for large negative numbers you will invariably get completely black fur (why is that?). For values in between it fluctuates. That happens partially because the initial setting of black/white coloration has a random element to it.
Try changing the sliders to have different values in the X and Y directions.
Once the pattern has stabilized, use the DRAW WHITE and DRAW BLACK controls to damage the pattern. Then use GO or GO ONCE to see whether the pattern will heal and how quickly. Does healing always restore the original pattern?
How about adding more colors? What could be the logic here? If you introduced, say, red, you would have to decide on specific conditions under which that color would appear. Also, you’d have to decide how that color influences other cells.
The Voting model, in the Social Science section of the NetLogo model library, is based on simpler rules but generates patterns that are similar in some respects.
Modified by B. J. MacLennan Sep. 7, 2003 for Java StarLogo 2.0.2, Sep. 15, 2007 for NetLogo 3.2.4, and Sep. 12, 2008 for NetLogo 4.0.3 from original version by William Thies on Scott Camazine’s website. Modifications included monitoring of changed cells, field displays, and documentation.
Some of the above documentation is from the Fur model in the NetLogo model library (which is programmed differently, however):
Wilensky, U. (2003). NetLogo Fur model. http://ccl.northwestern.edu/netlogo/models/Fur. Center for Connected Learning and Computer-Based Modeling, Northwestern University, Evanston, IL.
In other publications, please use: Copyright 2003 Uri Wilensky. All rights reserved. See http://ccl.northwestern.edu/netlogo/models/Fur for terms of use.
globals [ changes updates time showing_inhibitor? ] patches-own [ activator inhibitor hold_activator hold_inhibitor new_pcolor old_pcolor ] TO SETUP ;----------------------------------------------------------------------------------------- ;; (for this model to work with NetLogo's new plotting features, ;; __clear-all-and-reset-ticks should be replaced with clear-all at ;; the beginning of your setup procedure and reset-ticks at the end ;; of the procedure.) ;;__clear-all-and-reset-ticks ; clears display, patches, and turtles ca set updates 0 set time 0 ask patches [ ifelse random-float 100.0 < initial_density [set activator 100 set inhibitor 100 set pcolor white set new_pcolor white] [set activator 0 set inhibitor 0 set pcolor black set new_pcolor black] ] reset-ticks end TO DRAW_WHITE ;-------------------------------------------------------------------------------------- if mouse-down? [ask patches [if ((abs (pxcor - mouse-xcor)) < 2) and ((abs (pycor - mouse-ycor)) < 2) [set pcolor white set activator 100 ; creates live white cells where mouse button is depressed set inhibitor 100]] ] end TO DRAW_BLACK ;-------------------------------------------------------------------------------------- if mouse-down? [ask patches [if ((abs (pxcor - mouse-xcor)) < 2) and ((abs (pycor - mouse-ycor)) < 2) [set pcolor black set activator 0 ; creates dead cells where mouse button is depressed set inhibitor 0]] ] end TO GO ;-------------------------------------------------------------------------------------------- set changes 0 ask-concurrent patches [ repeat x_active ; diffuses activator chemical in x direction [set activator ((activator + ([activator] of patch-at 1 0) + ([activator] of patch-at (-1) 0)) / 3)] repeat y_active ; diffuses activator chemical in y direction [set activator ((activator + ([activator] of patch-at 0 1) + ([activator] of patch-at 0 (-1))) / 3)] repeat x_inhibit ; diffuses inhibitor chemical in x direction [set inhibitor ((inhibitor + ([inhibitor] of patch-at 1 0) + ([inhibitor] of patch-at (-1) 0)) / 3)] repeat y_inhibit ; diffuses inhibitor chemical in y direction [set inhibitor ((inhibitor + ([inhibitor] of patch-at 0 1) + ([inhibitor] of patch-at 0 (-1))) / 3)] set hold_activator activator set hold_inhibitor inhibitor set old_pcolor new_pcolor ifelse (bias + activator - inhibitor + (random (2 * noise)) - noise) > 0 [set activator 100 ; turned on set inhibitor 100] [set activator 0 ; turned off set inhibitor 0] ; set_color ifelse activator = 100 [ set new_pcolor white ] [ set new_pcolor black ] ifelse field_display = "none" [ set pcolor new_pcolor ] [ ifelse field_display = "activator" [ set pcolor scale-color red hold_activator 0 100 ] [ set pcolor scale-color blue hold_inhibitor 0 100 ] ] if new_pcolor != old_pcolor [ set changes changes + 1 ] ] set updates changes set time time + 1 plot updates display end to set-random-seed random-seed read-from-string user-input "Random seed?" end