Lesson 11 of 20

Perturbation — the one line that pins a gene down

Knockout (KO) and overexpression (OE)

Perturbation — the one line that pins a gene down
Ignore the rule and pin the value. One line of code — and weeks of work at a bench.

Virtual genetic manipulation is startlingly simple. You just let that one gene skip its rule when updating.

new[g] = perturb[g] if g in perturb else rule[g](state)
#         ^ the pinned value   ^ the original rule

That single line expresses both experiments.

NameCodeAt the bench
Knockout (KO){"DDX54": 0}siRNA/shRNA knockdown, CRISPR deletion
Overexpression (OE){"p53": 1}Plasmid delivery, inducible expression systems

There is one important difference. The 'single flip' of lesson 9 changed only the initial state. A perturbation changes the rules themselves. It is like keeping the drug on board.

Check that the first column stays pinned at ○ throughout. Below it, the dominoes fall.
Python Runs in your browser
The results already diverge. Note that the immune targets on their own (PDL1, CD47) do not work.
Python Runs in your browser
This is a choice you must make, and write down in your documentation, when you build a model.
Python Runs in your browser

🎮 Perturbation bench

Pick KO / untreated / OE for each gene. The trajectory is recomputed immediately.

You can apply several at once — that is combination therapy.
Loading…
🤔 Check yourself
How do you express a gene knockout in a Boolean model?
🤔 Check yourself
What is the decisive difference between the 'single flip' of lesson 9 and the perturbation of lesson 11?
🤔 Check yourself
Why apply the perturbed value to the initial state as well?