From: Stabilization of perturbed Boolean network attractors through compensatory interactions
# | INPUT |
---|---|
1 | A network, comprising update rules for all constituent nodes x _{1}, …, x _{ N } |
2 | The state of every node x _{ i } for every state of the attractor of interest, a _{ s }. |
3 | The damaged node x _{ d } and the state to which it is to be forced. |
4 | LCSS, set to True if a limit cycle superset is to be considered and False otherwise. |
# | OUTPUT |
1 | The nodes whose update rules must be modified to ensure the stability of the damaged attractor, a ^{d}. |
2 | the viable update rule modifications, for each of the nodes from (1). |
or | |
2 | In the case of limit cycle repair failure, the cause of failure. |
# | ALGORITHM |
1 | determine the damaged attractor a ^{d}. |
2 | if LCSS: set a ^{d} to be its superset. |
determine the sensitive nodes: | |
3 | for every node x _{ i } in every state s in a ^{d}: |
4 | update node x _{ i } from state s with all other nodes held constant |
5 | if x _{ i } changes its state as a result, it is sensitive. Record initial and final states. |
6 | if any sensitive node has initial and final states [0,1] and [1,0]: |
7 | return "limit cycle repair failure, case 1" |
determine all possible modifications for sensitive nodes: | |
8 | define an empty dictionary R |
9 | for every sensitive node x _{ i } in every state s in a ^{d}: |
10 | if the next state of x _{ i } must be OFF for repair: |
11 | record all combinations of nodes that obey each rule listed in col1 of Table 1. |
12 | else: |
13 | record all combinations of nodes that obey each rule listed in col2 of Table 1. |
14 | for every sensitive node x _{ i }: |
15 | set R[x _{ i }] = the intersection of the viable (rule, node) pairs across all states in a ^{d} |
16 | if R[x _{ i }] is the empty set: |
17 | determine R[x _{ i }] when omitting states in a ^{d} where node x _{ i }'s next state is equal to its current state |
18 | if R[x _{ i }] is the empty set: return "limit cycle repair failure, case 2" |
19 | else: return "limit cycle repair failure, case 3" |
20 | return R |