def build_rules(): """ Actin network rules. Changes from initial model: * direct activation link RhoA -> Rac1 * ROCK inhibition delay: RhoA -> ROCK -> ROCK_ -| Rac1 * weaker RhoA inhibition rule: not Rac1 or not PAK Changes from v1: * strong inhibitors for Arp2_3 (reworked voting rule) * reworked rule for Cortactin """ Actin_BR = "Actin_BR" Actin_ST = "Actin_ST" Arp2_3 = "Arp2_3" CP = "CP" Cdc42 = "Cdc42" Cofilin = "Cofilin" Coronin = "Coronin" Cortactin = "Cortactin" Dia1 = "Dia1" Dia2 = "Dia2" Ena_Vasp = "Ena_Vasp" IRSp53 = "IRSp53" LIMK = "LIMK" PAK = "PAK" PIP2 = "PIP2" PKD = "PKD" Profilin = "Profilin" ROCK = "ROCK" ROCK_ = "ROCK_" Rac1 = "Rac1" RhoA = "RhoA" SSH = "SSH" Thymosin = "Thymosin" WASP = "WASP" WAVE = "WAVE" G = nx.DiGraph() rules = "" G.add_weighted_edges_from( get_edges(WASP, [Rac1, Cdc42, PIP2, Cortactin, IRSp53], [Thymosin])) rules += "1: WASP* = not Thymosin and (Rac1 or Cdc42 or PIP2 or Cortactin or IRSp53) \n" G.add_weighted_edges_from(get_edges(WAVE, [Rac1], [])) rules += "1: WAVE* = Rac1 \n" # or IRSp53 G.add_weighted_edges_from( get_edges(Arp2_3, [PAK, WASP, WAVE, Cortactin], [Profilin, Thymosin, Coronin])) rules += "1: Arp2_3* = PAK and (" + voting_rule( [WASP, WAVE, Cortactin], [Profilin, Thymosin, Coronin], strongInhibition=False) + ")\n" G.add_weighted_edges_from(get_edges(Rac1, [Arp2_3, Dia1, RhoA], [ROCK_])) rules += "1: Rac1* = not ROCK_ and (Arp2_3 or Dia1 or RhoA) \n" # intermediate ROCK_ node + activation from RhoA G.add_weighted_edges_from(get_edges(RhoA, [], [Rac1, PAK])) rules += "1: RhoA* = not Rac1 or not PAK \n" G.add_weighted_edges_from(get_edges(Thymosin, [], [WASP, Cofilin])) rules += "1: Thymosin* = not WASP and not Cofilin \n" G.add_weighted_edges_from(get_edges(Cortactin, [Rac1, PAK], [Coronin, PKD])) rules += "1: Cortactin* = (Rac1 and PAK) or (Rac1 and not (Coronin and PKD) ) \n" # rules += "1: Cortactin* = (Rac1 and not (Coronin and PKD) \n" G.add_weighted_edges_from(get_edges(IRSp53, [Cdc42, Rac1], [])) rules += "1: IRSp53* = Cdc42 or Rac1 \n" G.add_weighted_edges_from(get_edges(PAK, [Rac1, Cdc42, PKD], [])) rules += "1: PAK* = Rac1 or Cdc42 or PKD \n" G.add_weighted_edges_from(get_edges(Dia1, [RhoA], [CP])) rules += "1: Dia1* = RhoA and not CP \n" G.add_weighted_edges_from(get_edges(Dia2, [Rac1, RhoA], [])) rules += "1: Dia2* = Rac1 or RhoA \n" G.add_weighted_edges_from(get_edges(Ena_Vasp, [IRSp53, WASP, PKD], [])) rules += "1: Ena_Vasp* = IRSp53 or WASP or PKD \n" G.add_weighted_edges_from( get_edges(Profilin, [WASP, Dia1, WAVE], [Thymosin, PIP2])) rules += "1: Profilin* = " + voting_rule(["WASP", "Dia1", "WAVE"], ["Thymosin", "PIP2"]) + " \n" G.add_weighted_edges_from(get_edges(CP, [Arp2_3], [Ena_Vasp, PIP2])) rules += "1: CP* = (Arp2_3 and not Ena_Vasp) or not PIP2 \n" G.add_weighted_edges_from(get_edges(Coronin, [SSH], [])) rules += "1: Coronin* = SSH \n" G.add_weighted_edges_from(get_edges(ROCK, [RhoA], [SSH, Coronin])) rules += "1: ROCK* = RhoA and not (SSH and Coronin) \n" G.add_weighted_edges_from(get_edges(ROCK_, [ROCK], [])) rules += "1: ROCK_* = ROCK \n" G.add_weighted_edges_from(get_edges(PKD, [ROCK], [])) rules += "1: PKD* = ROCK \n" G.add_weighted_edges_from(get_edges(LIMK, [ROCK, PAK], [SSH])) rules += "1: LIMK* = (ROCK or PAK) and not SSH \n" G.add_weighted_edges_from( get_edges(Cofilin, [SSH, Arp2_3], [PIP2, Thymosin, LIMK, Cortactin])) rules += "1: Cofilin* = " + voting_rule( ["SSH", "Arp2_3"], ["PIP2", "Thymosin", "LIMK", "Cortactin"]) + "\n" G.add_weighted_edges_from(get_edges(SSH, [Coronin, Rac1], [PKD])) rules += "1: SSH* = (Coronin or Rac1) and not PKD \n" G.add_weighted_edges_from(get_edges(Actin_BR, [Arp2_3], [])) rules += "1: Actin_BR* = (Arp2_3) \n" # or Cofilin) and not Thymosin G.add_weighted_edges_from( get_edges(Actin_ST, [Profilin, Dia1, Dia2, Ena_Vasp], [CP, Cofilin])) rules += "1: Actin_ST* = Profilin and (" + voting_rule( ["Dia1", "Dia2", "Ena_Vasp"], ["CP", "Cofilin"]) + ")\n" return {"rules": rules, "graph": G}
def build_rules(): """ Actin network rules. Changes from initial model: * direct activation link RhoA -> Rac1 * ROCK inhibition delay: RhoA -> ROCK -> ROCK_ -| Rac1 * weaker RhoA inhibition rule: not Rac1 or not PAK Changes from v1: * strong inhibitors for Arp2_3 (reworked voting rule) * reworked rule for Cortactin Changes from v2: * deleted PKD activates PAK * added link PKD activates LIMK * Option A: deleted PAK -> Cortactin link * deleted IRSp53 -> WAVE link * deleted Rac1 -> IRSp53 link Changes from v3: * separate IRSp53 variants Cdc42 and Rac1 activations """ UPSTREAM = "UPSTREAM" G = nx.DiGraph() rules = "" rules += "1: UPSTREAM* = not UPSTREAM \n" G.add_weighted_edges_from( get_edges(WASP, [Rac1, Cdc42, PIP2, Cortactin, IRSp53_Cdc42], [Thymosin])) rules += "1: WASP* = not Thymosin and (Rac1 or Cdc42 or PIP2 or Cortactin or IRSp53_Cdc42) \n" G.add_weighted_edges_from(get_edges(WAVE, [Rac1, IRSp53_Rac1], [])) rules += "1: WAVE* = Rac1 or IRSp53_Rac1 \n" G.add_weighted_edges_from( get_edges(Arp2_3, [PAK, WASP, WAVE, Cortactin], [Profilin, Thymosin, Coronin])) rules += "1: Arp2_3* = PAK and (" + voting_rule( [WASP, WAVE, Cortactin], [Profilin, Thymosin, Coronin]) + ")\n" G.add_weighted_edges_from(get_edges(Rac1, [UPSTREAM], [])) rules += "1: Rac1* = UPSTREAM \n" G.add_weighted_edges_from(get_edges(RhoA, [], [UPSTREAM])) rules += "1: RhoA* = not UPSTREAM \n" G.add_weighted_edges_from(get_edges(Thymosin, [], [WASP, Cofilin])) rules += "1: Thymosin* = (not WASP and not Cofilin) \n" G.add_weighted_edges_from(get_edges(Cortactin, [Rac1], [Coronin, PKD])) rules += "1: Cortactin* = " + voting_rule([Rac1], [Coronin, PKD]) + " \n" G.add_weighted_edges_from(get_edges(IRSp53_Cdc42, [Cdc42], [])) rules += "1: IRSp53_Cdc42* = Cdc42 \n" G.add_weighted_edges_from(get_edges(IRSp53_Rac1, [Rac1], [])) rules += "1: IRSp53_Rac1* = Rac1 \n" G.add_weighted_edges_from(get_edges(PAK, [Rac1, Cdc42], [])) rules += "1: PAK* = Rac1 or Cdc42 \n" G.add_weighted_edges_from(get_edges(Dia1, [RhoA], [CP])) rules += "1: Dia1* = RhoA and not CP \n" G.add_weighted_edges_from(get_edges(Dia2, [Rac1, RhoA], [])) rules += "1: Dia2* = Rac1 or RhoA \n" G.add_weighted_edges_from( get_edges(Ena_Vasp, [IRSp53_Cdc42, WASP, PKD], [])) rules += "1: Ena_Vasp* = IRSp53_Cdc42 or WASP or PKD \n" G.add_weighted_edges_from( get_edges(Profilin, [WASP, Dia1, WAVE], [Thymosin, PIP2])) rules += "1: Profilin* = " + voting_rule(["WASP", "Dia1", "WAVE"], ["Thymosin", "PIP2"]) + " \n" G.add_weighted_edges_from(get_edges(CP, [Arp2_3], [Ena_Vasp, PIP2])) rules += "1: CP* = (Arp2_3 and not Ena_Vasp) or not PIP2 \n" G.add_weighted_edges_from(get_edges(Coronin, [SSH], [])) rules += "1: Coronin* = SSH \n" G.add_weighted_edges_from(get_edges(ROCK, [RhoA], [SSH, Coronin])) rules += "1: ROCK* = RhoA and not (SSH and Coronin) \n" G.add_weighted_edges_from(get_edges(PKD, [ROCK], [])) rules += "1: PKD* = ROCK \n" G.add_weighted_edges_from(get_edges(LIMK, [ROCK, PAK, PKD], [SSH])) rules += "1: LIMK* = (ROCK or PAK or PKD) and not SSH \n" G.add_weighted_edges_from( get_edges(Cofilin, [SSH, Arp2_3], [PIP2, Thymosin, LIMK, Cortactin])) rules += "1: Cofilin* = " + voting_rule( ["SSH", "Arp2_3"], ["PIP2", "Thymosin", "LIMK", "Cortactin"]) + "\n" G.add_weighted_edges_from(get_edges(SSH, [Coronin, Rac1], [PKD])) rules += "1: SSH* = (Coronin or Rac1) and not PKD \n" G.add_weighted_edges_from(get_edges(Actin_BR, [Arp2_3], [])) rules += "1: Actin_BR* = Arp2_3 \n" G.add_weighted_edges_from( get_edges(Actin_ST, [Profilin, Dia1, Dia2, Ena_Vasp], [CP, Cofilin])) rules += "1: Actin_ST* = Profilin and (" + voting_rule( ["Dia1", "Dia2", "Ena_Vasp"], ["CP", "Cofilin"]) + ")\n" return {"rules": rules, "graph": G}
def build_rules(): """ Original Actin network rules. """ Actin_BR = "Actin_BR" Actin_ST = "Actin_ST" Arp2_3 = "Arp2_3" CP = "CP" Cdc42 = "Cdc42" Cofilin = "Cofilin" Coronin = "Coronin" Cortactin = "Cortactin" Dia1 = "Dia1" Dia2 = "Dia2" Ena_Vasp = "Ena_Vasp" IRSp53 = "IRSp53" LIMK = "LIMK" PAK = "PAK" PIP2 = "PIP2" PKD = "PKD" Profilin = "Profilin" ROCK = "ROCK" Rac1 = "Rac1" RhoA = "RhoA" SSH = "SSH" Thymosin = "Thymosin" WASP = "WASP" WAVE = "WAVE" G = nx.DiGraph() rules = "" G.add_weighted_edges_from(get_edges(WASP, [Rac1, Cdc42, PIP2, Cortactin, IRSp53], [Thymosin])) rules += "1: WASP* = not Thymosin and (Rac1 or Cdc42 or PIP2 or Cortactin or IRSp53) \n" G.add_weighted_edges_from(get_edges(WAVE, [Rac1], [])) rules += "1: WAVE* = Rac1 \n" # or IRSp53 G.add_weighted_edges_from(get_edges(Arp2_3, [PAK, WASP, WAVE, Cortactin], [Profilin, Thymosin, Coronin])) rules += "1: Arp2_3* = PAK and (" + voting_rule([WASP, WAVE, Cortactin], [Profilin, Thymosin, Coronin]) + ")\n" G.add_weighted_edges_from(get_edges(Rac1, [Arp2_3, Dia1, RhoA], [ROCK])) rules += "1: Rac1* = not ROCK and (Arp2_3 or Dia1) \n" G.add_weighted_edges_from(get_edges(RhoA, [], [Rac1, PAK])) rules += "1: RhoA* = not Rac1 and not PAK \n" G.add_weighted_edges_from(get_edges(Thymosin, [], [WASP, Cofilin])) rules += "1: Thymosin* = not WASP and not Cofilin \n" G.add_weighted_edges_from(get_edges(Cortactin, [Rac1, PAK], [Coronin, PKD])) rules += "1: Cortactin* = (Rac1 and PAK) or ((Rac1 or PAK) and not (Coronin and PKD)) \n" # voting G.add_weighted_edges_from(get_edges(IRSp53, [Cdc42, Rac1], [])) rules += "1: IRSp53* = Cdc42 or Rac1 \n" G.add_weighted_edges_from(get_edges(PAK, [Rac1, Cdc42, PKD], [])) rules += "1: PAK* = Rac1 or Cdc42 or PKD \n" G.add_weighted_edges_from(get_edges(Dia1, [RhoA], [CP])) rules += "1: Dia1* = RhoA and not CP \n" G.add_weighted_edges_from(get_edges(Dia2, [Rac1, RhoA], [])) rules += "1: Dia2* = Rac1 or RhoA \n" G.add_weighted_edges_from(get_edges(Ena_Vasp, [IRSp53, WASP, PKD], [])) rules += "1: Ena_Vasp* = IRSp53 or WASP or PKD \n" G.add_weighted_edges_from(get_edges(Profilin, [WASP, Dia1, WAVE], [Thymosin, PIP2])) rules += "1: Profilin* = " + voting_rule(["WASP", "Dia1", "WAVE"], ["Thymosin", "PIP2"]) + " \n" G.add_weighted_edges_from(get_edges(CP, [Arp2_3], [Ena_Vasp, PIP2])) rules += "1: CP* = (Arp2_3 and not Ena_Vasp) or not PIP2 \n" G.add_weighted_edges_from(get_edges(Coronin, [SSH], [])) rules += "1: Coronin* = SSH \n" G.add_weighted_edges_from(get_edges(ROCK, [RhoA], [SSH, Coronin])) rules += "1: ROCK* = RhoA and not (SSH and Coronin) \n" G.add_weighted_edges_from(get_edges(PKD, [ROCK], [])) rules += "1: PKD* = ROCK \n" G.add_weighted_edges_from(get_edges(LIMK, [ROCK, PAK], [SSH])) rules += "1: LIMK* = (ROCK or PAK) and not SSH \n" G.add_weighted_edges_from(get_edges(Cofilin, [SSH, Arp2_3], [PIP2, Thymosin, LIMK, Cortactin])) rules += "1: Cofilin* = " + voting_rule(["SSH", "Arp2_3"], ["PIP2", "Thymosin", "LIMK", "Cortactin"]) + "\n" G.add_weighted_edges_from(get_edges(SSH, [Coronin, Rac1], [PKD])) rules += "1: SSH* = (Coronin or Rac1) and not PKD \n" G.add_weighted_edges_from(get_edges(Actin_BR, [Arp2_3], [])) rules += "1: Actin_BR* = (Arp2_3) \n" # or Cofilin) and not Thymosin G.add_weighted_edges_from(get_edges(Actin_ST, [Profilin, Dia1, Dia2, Ena_Vasp], [CP, Cofilin])) rules += "1: Actin_ST* = Profilin and (" + voting_rule(["Dia1", "Dia2", "Ena_Vasp"], ["CP", "Cofilin"]) + ")\n" return {"rules":rules, "graph":G}