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 |