Lesson 3 of 20

Letting time run — what 'all at once' really means

Trajectories, and the trap that ordering sets

Letting time run — what 'all at once' really means
Every gene reads the present at the same instant and changes at the same instant. That single agreement is what makes the computation possible.

Once you have rules you can let time run. It goes like this.

  1. Read the state now
  2. Compute the next value of every gene, each on its own
  3. Only once all the computing is done, swap them in all together

Step 3 is the crux. If you overwrite values while you are still computing, the genes computed later end up reading values that have already changed. The result then depends on the order in which you happened to list the genes. Biology has no such order, so that is a bug in the model.

This scheme is called synchronous update. It is the most common and the easiest to compute. There is a price, and lesson 10 is where you pay it.

The left-hand version took one step in one tick; the right-hand version took two.
Python Runs in your browser
trace prints every time step as a table. It stops as soon as nothing changes any more.
Python Runs in your browser
It is this property that lets us start from any state at all. That is the key to the next lesson.
Python Runs in your browser

🎮 Clock bench

Pick an initial state and press ▶ to let time run one tick at a time.

Same circuit, different starting point — see with your own eyes where each one goes.
Loading…
🤔 Check yourself
What must you always respect when computing new values under synchronous update?
🤔 Check yourself
In a synchronous model, what happens if you run the same initial state twice?
🤔 Check yourself
Why did Cancer_Growth drop to 0 even though we started it at 1?