From 9f4a382e1f686fbcb10ddd23d5c02a7c2b9bbce8 Mon Sep 17 00:00:00 2001 From: Samuel Pastva Date: Thu, 21 Mar 2024 13:57:38 +0100 Subject: [PATCH] Add a more complex constant elimination test, because we had a bug there. --- aeon_models/constants.aeon | 681 +++++++++++++++++++++++++++++++++++ src/_impl_boolean_network.rs | 20 +- 2 files changed, 698 insertions(+), 3 deletions(-) create mode 100644 aeon_models/constants.aeon diff --git a/aeon_models/constants.aeon b/aeon_models/constants.aeon new file mode 100644 index 0000000..9a894c2 --- /dev/null +++ b/aeon_models/constants.aeon @@ -0,0 +1,681 @@ +v_PLA2 -> v_AA +v_ECM -> v_AC +v_Gas -> v_AC +v_Gbg_i -> v_AC +v_Integrins -> v_AC +v_Cas -> v_AND_34 +v_PIP2_45 -> v_ARF +v_PIP3_345 -> v_ARF +v_Trx -> v_ASK1 +v_Arp_23 -> v_Actin +v_Myosin -> v_Actin +v_Akt -? v_Akt +v_CaMKK -> v_Akt +v_ILK -> v_Akt +v_PDK1 -> v_Akt +v_PIP2_34 -> v_Akt +v_PIP3_345 -> v_Akt +v_PP2A -| v_Akt +v_Src -> v_Akt +v_WASP -> v_Arp_23 +v_Palpha_1213R -> v_B_Arrestin +v_Palpha_iR -> v_B_Arrestin +v_Palpha_qR -> v_B_Arrestin +v_Palpha_sR -> v_B_Arrestin +v_ILK -> v_B_Parvin +v_ExtPump -| v_Ca +v_IP3R1 -> v_Ca +v_Ca -> v_CaM +v_CaM -> v_CaMK +v_CaMKK -> v_CaMK +v_CaM -> v_CaMKK +v_Cas -| v_Cas +v_Fak -> v_Cas +v_PTPPEST -| v_Cas +v_Src -> v_Cas +v_SHP2 -| v_Cbp +v_Src -> v_Cbp +v_Cdc42 -? v_Cdc42 +v_Gbg_i -> v_Cdc42 +v_PAK -> v_Cdc42 +v_Pix_Cool -> v_Cdc42 +v_Rac -| v_Cdc42 +v_RhoGDI -| v_Cdc42 +v_Src -| v_Cdc42 +v_Cas -> v_Crk +v_Fak -> v_Crk +v_PTPPEST -| v_Crk +v_Src -> v_Crk +v_Cbp -> v_Csk +v_Gbg_1213 -> v_Csk +v_Gbg_i -> v_Csk +v_Gbg_q -> v_Csk +v_PKA -> v_Csk +v_SHP2 -| v_Csk +v_DAG -? v_DAG +v_DGK -| v_DAG +v_PIP2_45 -> v_DAG +v_PLC_B -> v_DAG +v_PLC_g -> v_DAG +v_Ca -> v_DGK +v_DAG -> v_DGK +v_EGFR -> v_DGK +v_PA -> v_DGK +v_PKC -> v_DGK +v_Src -> v_DGK +v_Cas -> v_DOCK180 +v_Crk -> v_DOCK180 +v_PIP3_345 -> v_DOCK180 +v_Ca -> v_EGFR +v_EGF -> v_EGFR +v_PKC -? v_EGFR +v_alpha_1213R -> v_EGFR +v_alpha_iR -> v_EGFR +v_alpha_qR -> v_EGFR +v_Erk -> v_Erk +v_MKPs -| v_Erk +v_Mek -> v_Erk +v_PP2A -| v_Erk +v_Fak -? v_Fak +v_Integrins -> v_Fak +v_PTEN -| v_Fak +v_Src -> v_Fak +v_Talin -> v_Fak +v_Trafs -> v_GCK +v_B_Arrestin -> v_GRK +v_Erk -| v_GRK +v_Gbg_1213 -> v_GRK +v_Gbg_i -> v_GRK +v_Gbg_q -> v_GRK +v_Gbg_s -> v_GRK +v_PIP2_45 -> v_GRK +v_RKIP -| v_GRK +v_Src -> v_GRK +v_Ga_1213 -? v_Ga_1213 +v_Gbg_1213 -? v_Ga_1213 +v_alpha_1213R -> v_Ga_1213 +v_p115RhoGEF -| v_Ga_1213 +v_EGFR -> v_Gab1 +v_Gab1 -? v_Gab1 +v_Grb2 -> v_Gab1 +v_PIP3_345 -> v_Gab1 +v_SHP2 -| v_Gab1 +v_Gai -? v_Gai +v_Gbg_i -? v_Gai +v_PKA -> v_Gai +v_RGS -| v_Gai +v_alpha_iR -> v_Gai +v_alpha_sL -> v_Gai +v_alpha_sR -| v_Gai +v_Gaq -? v_Gaq +v_Gbg_q -? v_Gaq +v_PLC_B -| v_Gaq +v_RGS -| v_Gaq +v_alpha_qR -> v_Gaq +v_Gas -? v_Gas +v_Gbg_s -? v_Gas +v_PKA -| v_Gas +v_RGS -| v_Gas +v_alpha_sR -> v_Gas +v_Ga_1213 -> v_Gbg_1213 +v_Gbg_1213 -| v_Gbg_1213 +v_alpha_1213R -> v_Gbg_1213 +v_Gai -> v_Gbg_i +v_Gbg_i -| v_Gbg_i +v_alpha_iR -> v_Gbg_i +v_Gaq -> v_Gbg_q +v_Gbg_q -| v_Gbg_q +v_alpha_qR -> v_Gbg_q +v_Gas -> v_Gbg_s +v_Gbg_s -| v_Gbg_s +v_alpha_sR -> v_Gbg_s +v_Fak -> v_Graf +v_Src -> v_Graf +v_EGFR -> v_Grb2 +v_Fak -> v_Grb2 +v_Shc -> v_Grb2 +v_Src -> v_Grb2 +v_IL1_TNF -> v_IL1_TNFR +v_PIP3_345 -> v_ILK +v_PIP2_45 -> v_IP3 +v_PLC_B -> v_IP3 +v_PLC_g -> v_IP3 +v_Ca -? v_IP3R1 +v_CaM -| v_IP3R1 +v_Gbg_i -> v_IP3R1 +v_IP3 -> v_IP3R1 +v_IP3R1 -| v_IP3R1 +v_PKA -> v_IP3R1 +v_PP2A -? v_IP3R1 +v_ECM -? v_Integrins +v_ILK -| v_Integrins +v_Integrins -? v_Integrins +v_PP2A -? v_Integrins +v_Src -? v_Integrins +v_Talin -? v_Integrins +v_ASK1 -> v_MKK3 +v_MLK1 -> v_MKK3 +v_MLK2 -> v_MKK3 +v_MLK3 -> v_MKK3 +v_Mekk2 -> v_MKK3 +v_Mekk3 -> v_MKK3 +v_Mekk4 -> v_MKK3 +v_PAK -> v_MKK3 +v_TAK1 -> v_MKK3 +v_TAO_12 -> v_MKK3 +v_Tpl2 -> v_MKK3 +v_ASK1 -> v_MKK6 +v_MLK3 -> v_MKK6 +v_Mekk4 -> v_MKK6 +v_PAK -> v_MKK6 +v_TAK1 -> v_MKK6 +v_TAO_12 -> v_MKK6 +v_Tpl2 -> v_MKK6 +v_ASK1 -> v_MKK7 +v_MLK1 -> v_MKK7 +v_MLK2 -> v_MKK7 +v_MLK3 -> v_MKK7 +v_Mekk1 -> v_MKK7 +v_Mekk2 -> v_MKK7 +v_Mekk3 -> v_MKK7 +v_Mekk4 -> v_MKK7 +v_Erk -> v_MKPs +v_SAPK -> v_MKPs +v_cAMP -> v_MKPs +v_p38 -> v_MKPs +v_CaM -> v_MLCK +v_Erk -> v_MLCK +v_PAK -| v_MLCK +v_PKA -| v_MLCK +v_ILK -| v_MLCP +v_PAK -| v_MLCP +v_PKA -? v_MLCP +v_PKC -| v_MLCP +v_Raf -| v_MLCP +v_RhoK -? v_MLCP +v_Cdc42 -> v_MLK1 +v_Rac -> v_MLK1 +v_Cdc42 -> v_MLK2 +v_Rac -> v_MLK2 +v_SAPK -> v_MLK2 +v_Cdc42 -> v_MLK3 +v_IL1_TNFR -> v_MLK3 +v_Rac -> v_MLK3 +v_Mek -| v_Mek +v_Mekk1 -> v_Mek +v_Mekk2 -> v_Mek +v_Mekk3 -> v_Mek +v_PP2A -| v_Mek +v_Raf -> v_Mek +v_Tpl2 -> v_Mek +v_Cdc42 -> v_Mekk1 +v_GCK -> v_Mekk1 +v_Grb2 -> v_Mekk1 +v_NIK -> v_Mekk1 +v_Rac -> v_Mekk1 +v_Ras -> v_Mekk1 +v_Rho -> v_Mekk1 +v_Shc -> v_Mekk1 +v_Trafs -> v_Mekk1 +v_EGFR -> v_Mekk2 +v_Grb2 -> v_Mekk2 +v_Mekk2 -| v_Mekk2 +v_PI3K -> v_Mekk2 +v_PLC_g -> v_Mekk2 +v_Src -> v_Mekk2 +v_Gab1 -| v_Mekk3 +v_IL1_TNFR -> v_Mekk3 +v_Rac -> v_Mekk3 +v_Trafs -> v_Mekk3 +v_Cdc42 -> v_Mekk4 +v_Rac -> v_Mekk4 +v_CaM -> v_Myosin +v_ILK -> v_Myosin +v_MLCK -> v_Myosin +v_MLCP -| v_Myosin +v_Myosin -? v_Myosin +v_PAK -> v_Myosin +v_RhoK -> v_Myosin +v_Nck -> v_NIK +v_TAK1 -> v_NIK +v_Cas -> v_Nck +v_EGFR -> v_Nck +v_PLD -> v_PA +v_Akt -| v_PAK +v_Cdc42 -> v_PAK +v_Grb2 -> v_PAK +v_Nck -> v_PAK +v_PAK -> v_PAK +v_PKA -| v_PAK +v_PTP1b -| v_PAK +v_Rac -> v_PAK +v_Src -> v_PAK +v_B_Arrestin -> v_PDE4 +v_Erk -| v_PDE4 +v_PKA -> v_PDE4 +v_Src -> v_PDK1 +v_p90RSK -> v_PDK1 +v_Crk -> v_PI3K +v_EGFR -> v_PI3K +v_Fak -> v_PI3K +v_Gab1 -> v_PI3K +v_Gbg_i -> v_PI3K +v_Ras -> v_PI3K +v_Src -> v_PI3K +v_ARF -> v_PI4K +v_Gai -> v_PI4K +v_Gaq -> v_PI4K +v_PKC -> v_PI4K +v_Rho -> v_PI4K +v_ARF -> v_PI5K +v_Fak -> v_PI5K +v_PA -> v_PI5K +v_PI5K -? v_PI5K +v_RhoK -> v_PI5K +v_Src -> v_PI5K +v_Talin -? v_PI5K +v_PI3K -> v_PIP2_34 +v_PI4K -> v_PIP2_34 +v_PI5K -| v_PIP2_34 +v_PIP2_34 -? v_PIP2_34 +v_PTEN -| v_PIP2_34 +v_PI4K -> v_PIP2_45 +v_PI5K -> v_PIP2_45 +v_PIP2_45 -> v_PIP2_45 +v_PIP3_345 -> v_PIP2_45 +v_PTEN -> v_PIP2_45 +v_PI3K -> v_PIP3_345 +v_PI5K -> v_PIP3_345 +v_PIP2_34 -> v_PIP3_345 +v_PIP2_45 -> v_PIP3_345 +v_PIP3_345 -| v_PIP3_345 +v_PTEN -| v_PIP3_345 +v_PI3K -| v_PIP_4 +v_PI4K -> v_PIP_4 +v_PI5K -| v_PIP_4 +v_PIP2_34 -> v_PIP_4 +v_PIP_4 -? v_PIP_4 +v_PTEN -> v_PIP_4 +v_PDK1 -> v_PKA +v_PKA -? v_PKA +v_PP2A -| v_PKA +v_cAMP -> v_PKA +v_AA -> v_PKC +v_Ca -> v_PKC +v_DAG -> v_PKC +v_PKC -? v_PKC +v_PKC_primed -> v_PKC +v_PP2A -| v_PKC +v_Trx -| v_PKC +v_PDK1 -> v_PKC_primed +v_PKC -| v_PKC_primed +v_PKC_primed -? v_PKC_primed +v_Ca -> v_PLA2 +v_CaMK -> v_PLA2 +v_Erk -> v_PLA2 +v_PIP2_45 -> v_PLA2 +v_PIP3_345 -> v_PLA2 +v_Gaq -> v_PLC_B +v_Gbg_i -> v_PLC_B +v_PKA -| v_PLC_B +v_PLC_B -> v_PLC_B +v_AA -| v_PLC_g +v_EGFR -? v_PLC_g +v_Fak -> v_PLC_g +v_PA -| v_PLC_g +v_PIP3_345 -> v_PLC_g +v_Src -> v_PLC_g +v_ARF -> v_PLD +v_Actin -> v_PLD +v_Cdc42 -> v_PLD +v_PIP2_45 -> v_PLD +v_PIP3_345 -> v_PLD +v_PKC -> v_PLD +v_Rac -> v_PLD +v_Rho -> v_PLD +v_EGFR -| v_PP2A +v_Cdc42 -> v_PTEN +v_PI3K -> v_PTEN +v_PTEN -| v_PTEN +v_Pix_Cool -> v_PTEN +v_Rho -> v_PTEN +v_Src -| v_PTEN +v_Stress -> v_PTEN +v_EGF -| v_PTP1b +v_EGFR -| v_PTP1b +v_Stress -| v_PTP1b +v_ECM -> v_PTPPEST +v_Integrins -> v_PTPPEST +v_PKA -| v_PTPPEST +v_PKC -| v_PTPPEST +v_PKC -> v_PTPa +v_GRK -> v_Palpha_1213R +v_alpha_1213R -> v_Palpha_1213R +v_GRK -> v_Palpha_iR +v_alpha_iR -> v_Palpha_iR +v_GRK -> v_Palpha_qR +v_alpha_qR -> v_Palpha_qR +v_GRK -> v_Palpha_sR +v_alpha_sR -> v_Palpha_sR +v_B_Parvin -> v_Pix_Cool +v_PIP2_34 -> v_Pix_Cool +v_PIP3_345 -> v_Pix_Cool +v_CaM -> v_RGS +v_PIP3_345 -> v_RGS +v_PKC -> v_RKIP +v_Cdc42 -? v_Rac +v_DOCK180 -> v_Rac +v_ECM -> v_Rac +v_Gbg_i -? v_Rac +v_Integrins -> v_Rac +v_PAK -? v_Rac +v_Pix_Cool -> v_Rac +v_Rac -| v_Rac +v_RalBP1 -| v_Rac +v_RasGRF_GRP -> v_Rac +v_RhoGDI -| v_Rac +v_Tiam -> v_Rac +v_p190RhoGAP -| v_Rac +v_Akt -| v_Raf +v_Erk -| v_Raf +v_PAK -> v_Raf +v_PKA -| v_Raf +v_RKIP -> v_Raf +v_Raf -? v_Raf +v_Raf_Loc -> v_Raf +v_Ras -> v_Raf +v_Src -> v_Raf +v_PP2A -> v_Raf_DeP +v_Raf_DeP -? v_Raf_DeP +v_Raf_Loc -| v_Raf_DeP +v_Raf_Rest -> v_Raf_DeP +v_Raf -| v_Raf_Loc +v_Raf_DeP -> v_Raf_Loc +v_Raf_Loc -? v_Raf_Loc +v_Ras -> v_Raf_Loc +v_Raf -| v_Raf_Rest +v_Raf_DeP -| v_Raf_Rest +v_Raf_Rest -? v_Raf_Rest +v_AND_34 -> v_Ral +v_CaM -> v_Ral +v_RalGDS -> v_Ral +v_Ral -> v_RalBP1 +v_B_Arrestin -> v_RalGDS +v_PDK1 -| v_RalGDS +v_PIP3_345 -| v_RalGDS +v_PKC -| v_RalGDS +v_Ras -| v_RalGDS +v_alpha_1213R -> v_RalGDS +v_alpha_iR -> v_RalGDS +v_alpha_qR -> v_RalGDS +v_alpha_sR -> v_RalGDS +v_CaMK -> v_Rap1 +v_Gai -| v_Rap1 +v_PKA -> v_Rap1 +v_Rap1 -| v_Rap1 +v_Src -> v_Rap1 +v_cAMP -> v_Rap1 +v_RasGRF_GRP -> v_Ras +v_SHP2 -> v_Ras +v_Sos -> v_Ras +v_CaM -> v_RasGRF_GRP +v_Cdc42 -> v_RasGRF_GRP +v_DAG -> v_RasGRF_GRP +v_Graf -| v_Rho +v_PKA -| v_Rho +v_Rho -? v_Rho +v_RhoGDI -| v_Rho +v_p115RhoGEF -> v_Rho +v_p190RhoGAP -| v_Rho +v_AA -| v_RhoGDI +v_PIP2_45 -| v_RhoGDI +v_PKC -| v_RhoGDI +v_Rho -> v_RhoK +v_MKK7 -> v_SAPK +v_MKPs -| v_SAPK +v_PP2A -| v_SAPK +v_SAPK -| v_SAPK +v_Sek1 -> v_SAPK +v_Gab1 -> v_SHP2 +v_ASK1 -> v_Sek1 +v_MLK1 -> v_Sek1 +v_MLK2 -> v_Sek1 +v_MLK3 -> v_Sek1 +v_Mekk1 -> v_Sek1 +v_Mekk2 -> v_Sek1 +v_Mekk3 -> v_Sek1 +v_Mekk4 -> v_Sek1 +v_TAK1 -> v_Sek1 +v_Tpl2 -> v_Sek1 +v_EGFR -> v_Shc +v_Fak -> v_Shc +v_PTEN -| v_Shc +v_Shc -| v_Shc +v_Src -> v_Shc +v_Crk -> v_Sos +v_Erk -| v_Sos +v_Grb2 -> v_Sos +v_Nck -> v_Sos +v_PIP3_345 -> v_Sos +v_B_Arrestin -> v_Src +v_Cas -> v_Src +v_Csk -| v_Src +v_EGFR -> v_Src +v_Fak -> v_Src +v_Gai -> v_Src +v_Gas -> v_Src +v_PTP1b -> v_Src +v_PTPa -> v_Src +v_Src -| v_Src +v_alpha_sR -> v_Src +v_Tab_12 -> v_TAK1 +v_Stress -> v_TAO_12 +v_Trafs -> v_Tab_12 +v_p38 -| v_Tab_12 +v_PIP2_45 -> v_Talin +v_Src -| v_Talin +v_Talin -? v_Talin +v_CaMK -> v_Tiam +v_PIP2_34 -> v_Tiam +v_PIP2_45 -> v_Tiam +v_PIP3_345 -> v_Tiam +v_PKC -> v_Tiam +v_Rap1 -> v_Tiam +v_Ras -> v_Tiam +v_Src -> v_Tiam +v_Trafs -> v_Tpl2 +v_IL1_TNFR -> v_Trafs +v_Stress -> v_Trx +v_Trafs -> v_Trx +v_Actin -> v_Vinc +v_PIP2_45 -| v_Vinc +v_Src -> v_Vinc +v_Talin -> v_Vinc +v_Vinc -> v_Vinc +v_Cdc42 -> v_WASP +v_Fak -> v_WASP +v_Grb2 -> v_WASP +v_Nck -> v_WASP +v_PIP2_45 -> v_WASP +v_PTPPEST -| v_WASP +v_Src -> v_WASP +v_B_Arrestin -| v_alpha_1213R +v_Palpha_1213R -? v_alpha_1213R +v_alpha_1213L -> v_alpha_1213R +v_alpha_1213R -> v_alpha_1213R +v_B_Arrestin -| v_alpha_iR +v_Palpha_iR -? v_alpha_iR +v_alpha_iL -> v_alpha_iR +v_alpha_iR -> v_alpha_iR +v_B_Arrestin -| v_alpha_qR +v_Palpha_iR -? v_alpha_qR +v_alpha_qL -> v_alpha_qR +v_alpha_qR -> v_alpha_qR +v_B_Arrestin -| v_alpha_sR +v_Palpha_sR -? v_alpha_sR +v_alpha_sL -> v_alpha_sR +v_alpha_sR -> v_alpha_sR +v_AC -> v_cAMP +v_PDE4 -| v_cAMP +v_cAMP -> v_cAMP +v_Ga_1213 -> v_p115RhoGEF +v_PIP3_345 -> v_p115RhoGEF +v_Ca -> v_p120RasGAP +v_EGFR -> v_p120RasGAP +v_Fak -| v_p120RasGAP +v_PIP2_34 -> v_p120RasGAP +v_PIP2_45 -> v_p120RasGAP +v_PIP3_345 -> v_p120RasGAP +v_SHP2 -| v_p120RasGAP +v_Src -| v_p120RasGAP +v_Fak -> v_p190RhoGAP +v_Src -> v_p190RhoGAP +v_p120RasGAP -| v_p190RhoGAP +v_p190RhoGAP -| v_p190RhoGAP +v_MKK3 -> v_p38 +v_MKK6 -> v_p38 +v_MKPs -| v_p38 +v_PP2A -| v_p38 +v_Sek1 -> v_p38 +v_Erk -> v_p90RSK +v_PDK1 -> v_p90RSK +v_p90RSK -| v_p90RSK +$v_AA: v_PLA2 +$v_AC: v_Integrins & v_ECM & v_Gas & v_Gbg_i +$v_AND_34: v_Cas +$v_ARF: v_PIP3_345 | v_PIP2_45 +$v_ASK1: true +$v_Actin: v_Arp_23 & v_Myosin +$v_Akt: (v_Akt & !v_PP2A) | (v_PDK1 & v_Src & v_ILK & !v_Akt & (v_PIP3_345 | v_PIP2_34)) | (v_CaMKK & !v_Akt & (v_PIP3_345 | v_PIP2_34) & v_Src & v_ILK) +$v_Arp_23: v_WASP +$v_B_Arrestin: false +$v_B_Parvin: v_ILK +$v_Ca: false +$v_CaM: false +$v_CaMK: false +$v_CaMKK: false +$v_Cas: v_Src & v_Fak & !(v_PTPPEST & v_Cas) +$v_Cbp: v_Src & !v_SHP2 +$v_Cdc42: (v_Pix_Cool & !v_Cdc42 & !v_Rac & v_Gbg_i & v_PAK & !(v_RhoGDI & v_Src)) | (v_Cdc42 & !v_RhoGDI & v_Pix_Cool & !(v_RhoGDI & v_Src)) +$v_Crk: v_Cas & (v_Src | v_Fak) & !v_PTPPEST +$v_Csk: v_Cbp & (v_Gbg_q | v_Gbg_i | v_Gbg_1213 | v_PKA | (!v_Gbg_q & !v_Gbg_i & !v_Gbg_1213 & !v_PKA & !v_SHP2)) +$v_DAG: (v_PLC_g & v_PIP2_45 & !(v_DGK & v_DAG)) | (v_DAG & !v_DGK) | (v_PLC_B & v_PIP2_45 & !(v_DGK & v_DAG)) +$v_DGK: true +$v_DOCK180: v_Crk & v_Cas & v_PIP3_345 +$v_ECM: true +$v_EGF: true +$v_EGFR: true +$v_Erk: true +$v_ExtPump: true +$v_Fak: (v_Integrins & v_Talin & !(v_PTEN & v_Fak)) | (v_Src & v_Fak & !(v_PTEN & v_Fak)) +$v_GCK: true +$v_GRK: false +$v_Ga_1213: (v_Ga_1213 & !v_p115RhoGEF & v_Gbg_1213) | (v_alpha_1213R & !v_Gbg_1213 & !v_Ga_1213) +$v_Gab1: (v_Gab1 & v_PIP3_345 & v_EGFR & !v_SHP2) | (v_Grb2 & v_EGFR & !v_Gab1 & !v_SHP2) +$v_Gai: (v_alpha_iR & !v_Gbg_i & !v_Gai) | (v_PKA & !v_Gai & !v_Gbg_i & v_alpha_sL & !v_alpha_sR) | (v_Gbg_i & !v_RGS & v_Gai) +$v_Gaq: (v_alpha_qR & !v_Gaq & !v_Gbg_q) | (v_Gaq & !v_PLC_B & !v_RGS & v_Gbg_q) +$v_Gas: (v_alpha_sR & !v_PKA & !v_Gas & !v_Gbg_s) | (v_Gbg_s & v_Gas & !v_RGS) +$v_Gbg_1213: v_Ga_1213 | (v_alpha_1213R & !v_Gbg_1213 & !v_Ga_1213) +$v_Gbg_i: (v_alpha_iR & !v_Gbg_i & !v_Gai) | v_Gai +$v_Gbg_q: (v_alpha_qR & !v_Gaq & !v_Gbg_q) | v_Gaq +$v_Gbg_s: (v_alpha_sR & !v_Gbg_s & !v_Gas) | v_Gas +$v_Graf: v_Fak & v_Src +$v_Grb2: true +$v_IL1_TNF: true +$v_IL1_TNFR: true +$v_ILK: v_PIP3_345 +$v_IP3: (v_PLC_g & v_PIP2_45) | (v_PLC_B & v_PIP2_45) +$v_IP3R1: (v_Gbg_i & !((v_Ca & !v_IP3 & v_IP3R1) | (v_IP3R1 & !v_Ca & !v_PP2A & !v_PKA & !v_IP3 & v_CaM & v_Gbg_i) | (v_CaM & v_Ca & v_IP3R1))) | (v_IP3 & v_Ca & !((v_Ca & !v_IP3 & v_IP3R1) | (v_CaM & v_Ca & v_IP3R1))) | (v_PKA & !((v_Ca & !v_IP3 & v_IP3R1) | (v_PP2A & v_IP3R1) | (v_CaM & v_Ca & v_IP3R1))) +$v_Integrins: (v_Integrins & !v_Src & !v_ILK) | (v_Talin & v_ECM & !v_Integrins & !v_ILK) | (v_PP2A & v_Talin & v_ECM & v_ILK & !v_Integrins) | (v_Src & !v_PP2A & !v_Talin & !v_ECM & !v_Integrins & !v_ILK) +$v_MKK3: true +$v_MKK6: true +$v_MKK7: true +$v_MKPs: (v_p38 & v_cAMP) | (v_Erk & v_cAMP) | (v_SAPK & v_cAMP) +$v_MLCK: (v_CaM & !v_PAK & !v_PKA & !(v_PKA | v_PAK)) | (v_Erk & !v_PKA & !v_PAK & !(v_PKA | v_PAK)) +$v_MLCP: (v_PKA & v_RhoK & !(v_PKC | v_Raf | v_PAK | v_ILK)) | !(v_PKC | v_Raf | v_PAK | v_RhoK | v_PKA | v_ILK) +$v_MLK1: v_Rac | v_Cdc42 +$v_MLK2: (v_Rac & v_SAPK) | (v_Cdc42 & v_SAPK) +$v_MLK3: true +$v_Mek: true +$v_Mekk1: true +$v_Mekk2: (v_PI3K & !v_Mekk2 & v_EGFR) | (v_PLC_g & v_EGFR & !v_Mekk2) | (v_Src & !v_Mekk2 & v_EGFR) | (v_Grb2 & !v_Mekk2 & v_EGFR) +$v_Mekk3: (v_IL1_TNFR & !v_Gab1) | (v_Trafs & !v_Gab1) | (v_Rac & !v_Gab1) +$v_Mekk4: v_Cdc42 | v_Rac +$v_Myosin: (v_CaM & !v_Myosin & v_MLCK & !(v_MLCP & v_Myosin)) | (v_PAK & (!v_Myosin | !v_MLCP) & !(v_MLCP & v_Myosin)) | (v_MLCK & !v_MLCP & v_CaM & !(v_MLCP & v_Myosin)) | (v_Myosin & !v_MLCP & !(v_MLCP & v_Myosin)) | (v_ILK & (!v_Myosin | !v_MLCP) & !(v_MLCP & v_Myosin)) | (v_RhoK & (!v_MLCP | !v_Myosin) & !(v_MLCP & v_Myosin)) +$v_NIK: true +$v_Nck: true +$v_PA: v_PLD +$v_PAK: (v_Src & v_PAK & (v_Cdc42 | v_Rac) & !(v_PTP1b | v_PKA)) | (v_Cdc42 & (v_Grb2 | (v_Nck & !v_Akt)) & !v_PKA) | (v_Rac & (v_Grb2 | (v_Nck & !v_Akt)) & !v_PKA) +$v_PDE4: false +$v_PDK1: v_p90RSK | v_Src +$v_PI3K: (v_EGFR & v_Src) | v_Gbg_i | v_Ras | v_Fak | v_Crk | v_Gab1 +$v_PI4K: v_Rho | v_PKC | v_ARF | v_Gai | v_Gaq +$v_PI5K: (v_Src & !v_Talin & v_Fak & !v_PI5K) | v_PA | v_RhoK | (v_PI5K & v_Talin) | v_ARF +$v_PIP2_34: (v_PI4K & !v_PIP2_34 & v_PI3K) | (v_PIP2_34 & !v_PI5K & !v_PTEN) +$v_PIP2_45: v_PIP2_45 | (v_PI4K & v_PI5K) | (v_PTEN & v_PIP3_345) +$v_PIP3_345: (v_PI3K & v_PIP2_45 & !(v_PTEN & v_PIP3_345)) | (v_PI5K & v_PIP2_34 & !(v_PTEN & v_PIP3_345)) +$v_PIP_4: (v_PI4K & !v_PIP_4 & !((v_PI3K & v_PIP_4) | (v_PI5K & v_PIP_4))) | (v_PIP_4 & !v_PI5K & !v_PI3K & !((v_PI3K & v_PIP_4) | (v_PI5K & v_PIP_4))) | (v_PTEN & !v_PIP_4 & v_PIP2_34 & !((v_PI3K & v_PIP_4) | (v_PI5K & v_PIP_4))) +$v_PKA: (v_PDK1 & v_cAMP & !(v_PP2A & v_PKA)) | (v_PKA & v_cAMP & !(v_PP2A & v_PKA)) +$v_PKC: false +$v_PKC_primed: (v_PKC & v_PDK1 & !v_PKC_primed) | (v_PKC_primed & !v_PKC) | (v_PDK1 & !v_PKC) +$v_PLA2: (v_PIP2_45 & v_PIP3_345 & v_Erk) | (v_Erk & v_Ca) | (v_PIP3_345 & v_PIP2_45 & v_CaMK) | (v_CaMK & v_Ca) +$v_PLC_B: (v_Gbg_i & v_PLC_B & !(v_PKA & !v_Gaq)) | v_Gaq +$v_PLC_g: (v_Src & v_PIP3_345 & v_Fak) | (v_EGFR & v_PIP3_345 & !(v_PA & v_AA & !v_Src & !v_Fak)) | (v_Fak & v_Src & !v_PIP3_345 & !v_AA & !v_EGFR & !v_PA) +$v_PLD: (v_Rac & v_Actin & (v_PIP3_345 | v_PIP2_45) & !v_ARF) | (v_Rho & !v_ARF & v_Actin & (v_PIP3_345 | v_PIP2_45)) | (v_PKC & !v_ARF & v_Actin & (v_PIP3_345 | v_PIP2_45)) | (v_Cdc42 & !v_ARF & v_Actin & (v_PIP2_45 | v_PIP3_345)) | (v_ARF & (v_PIP3_345 | v_PIP2_45)) +$v_PP2A: false +$v_PTEN: (v_Stress & !(v_Src & v_PTEN)) | (v_Pix_Cool & v_PI3K & v_Rho & v_Cdc42 & !(v_Src & v_PTEN)) +$v_PTP1b: false +$v_PTPPEST: v_Integrins & v_ECM & !(v_PKC | v_PKA) +$v_PTPa: false +$v_Palpha_1213R: false +$v_Palpha_iR: false +$v_Palpha_qR: false +$v_Palpha_sR: false +$v_Pix_Cool: (v_PIP2_34 & v_B_Parvin) | (v_PIP3_345 & v_B_Parvin) +$v_RGS: false +$v_RKIP: false +$v_Rac: (v_DOCK180 & v_ECM & v_Integrins & !((v_p190RhoGAP & v_Rac) | (v_RalBP1 & v_Rac) | (v_RhoGDI & !v_PAK))) | (v_Tiam & v_ECM & v_Integrins & !((v_p190RhoGAP & v_Rac) | (v_RalBP1 & v_Rac) | (v_RhoGDI & !v_PAK))) | (v_Pix_Cool & ((!v_Gbg_i & !v_Rac & v_Cdc42 & v_ECM & v_Integrins) | (v_Gbg_i & v_PAK & v_ECM & v_Integrins & !v_Cdc42 & !v_Rac) | (!v_PAK & !v_RhoGDI & v_Cdc42 & !v_Rac & !v_RasGRF_GRP & !v_DOCK180 & !v_Tiam & v_ECM & v_Integrins)) & !(v_RhoGDI & !v_PAK)) | (v_RasGRF_GRP & v_ECM & v_Integrins & !((v_p190RhoGAP & v_Rac) | (v_RalBP1 & v_Rac) | (v_RhoGDI & !v_PAK))) +$v_Raf: (v_PAK & !v_Akt & !v_Erk & !v_Ras & v_Raf) | (v_Src & v_PAK & v_Raf_Loc & v_RKIP & !v_Raf) | (v_Raf & !v_Akt & !v_Erk & !v_PKA) | (v_Ras & v_Raf) +$v_Raf_DeP: (v_PP2A & v_Raf_Rest & !v_Raf_DeP) | (v_Raf_DeP & !v_Raf_Loc) +$v_Raf_Loc: (v_Raf_Loc & !v_Raf) | (v_Ras & v_Raf_DeP & !v_Raf_Loc) +$v_Raf_Rest: (v_Raf_DeP & !v_Raf & !v_Raf_Rest) | (v_Raf_Rest & !v_Raf_DeP) | !(v_Raf | v_Raf_Rest | v_Raf_DeP) +$v_Ral: v_AND_34 | v_RalGDS | v_CaM +$v_RalBP1: v_Ral +$v_RalGDS: false +$v_Rap1: (v_PKA & v_Src & v_cAMP & (!v_Gai | !v_Rap1)) | (v_CaMK & (!v_Gai | !v_Rap1) & v_Src & v_cAMP) +$v_Ras: v_SHP2 | v_Sos | v_RasGRF_GRP +$v_RasGRF_GRP: (v_CaM & v_Cdc42) | (v_DAG & v_Cdc42) +$v_Rho: (v_p115RhoGEF & !v_Rho & !v_RhoGDI) | (v_Rho & !v_p190RhoGAP & !v_PKA & !v_Graf) +$v_RhoGDI: !(v_AA | v_PIP2_45 | v_PKC) | !(v_PKC | v_PIP2_45 | v_AA) +$v_RhoK: v_Rho +$v_SAPK: (v_Sek1 & !((v_PP2A & v_SAPK) | (v_MKPs & v_SAPK))) | (v_MKK7 & !((v_PP2A & v_SAPK) | (v_MKPs & v_SAPK))) +$v_SHP2: v_Gab1 +$v_Sek1: true +$v_Shc: v_EGFR & v_Src & v_Fak & !(v_Shc & v_Src & v_EGFR & v_PTEN & v_Fak) +$v_Sos: (v_Nck & v_PIP3_345 & v_Crk) | (v_Grb2 & v_PIP3_345 & !v_Erk) +$v_Src: (v_Gas & v_B_Arrestin & !(v_Csk & v_Src)) | (v_PTPa & !(v_Csk & v_Src)) | (v_alpha_sR & v_B_Arrestin & !(v_Csk & v_Src)) | (v_Fak & v_PTP1b & !(v_Csk & v_Src)) | (v_Gai & v_B_Arrestin & !(v_Csk & v_Src)) | (v_Cas & v_PTP1b & !(v_Csk & v_Src)) | (v_EGFR & !(v_Csk & v_Src)) +$v_Stress: true +$v_TAK1: v_Tab_12 +$v_TAO_12: true +$v_Tab_12: v_Trafs & !v_p38 +$v_Talin: (v_PIP2_45 & !v_Talin) | (v_Talin & !v_Src) +$v_Tiam: (v_CaMK & (v_PIP3_345 | v_PIP2_34) & (v_PIP2_45 | v_Rap1 | v_Ras)) | (v_Src & (v_PIP3_345 | v_PIP2_34) & (v_PIP2_45 | v_Rap1 | v_Ras)) | (v_PKC & (v_PIP2_45 | v_Rap1 | v_Ras) & (v_PIP3_345 | v_PIP2_34)) +$v_Tpl2: true +$v_Trafs: true +$v_Trx: true +$v_Vinc: (v_Talin & v_Src) | (v_Actin & !v_PIP2_45 & v_Talin & v_Vinc) +$v_WASP: v_Cdc42 & !v_PTPPEST & (v_PIP2_45 | v_Nck | v_Grb2) & (v_Src | v_Fak) & !v_PTPPEST +$v_alpha_1213L: true +$v_alpha_1213R: true +$v_alpha_iL: true +$v_alpha_iR: true +$v_alpha_qL: true +$v_alpha_qR: true +$v_alpha_sL: true +$v_alpha_sR: true +$v_cAMP: (v_cAMP & !v_PDE4) | (v_AC & !v_PDE4) +$v_p115RhoGEF: v_Ga_1213 & v_PIP3_345 +$v_p120RasGAP: (v_PIP2_34 & !(v_Fak | v_Src)) | (v_PIP2_45 & !(v_Fak | v_Src)) | (v_EGFR & !(v_Fak | v_SHP2 | v_Src)) | (v_PIP3_345 & !(v_Fak | v_Src)) | (v_Ca & !(v_Fak | v_Src)) +$v_p190RhoGAP: (v_Fak & v_Src) | (v_Src & (v_Fak | !v_p120RasGAP | !v_p190RhoGAP)) +$v_p38: (v_MKK3 & !(v_MKPs | v_PP2A)) | (v_MKK6 & !(v_MKPs | v_PP2A)) | (v_Sek1 & !(v_MKPs | v_PP2A)) +$v_p90RSK: v_Erk & v_PDK1 & !v_p90RSK \ No newline at end of file diff --git a/src/_impl_boolean_network.rs b/src/_impl_boolean_network.rs index 539691a..ed0df85 100644 --- a/src/_impl_boolean_network.rs +++ b/src/_impl_boolean_network.rs @@ -740,13 +740,18 @@ impl BooleanNetwork { let mut old_bn = self.clone(); let old_rg = self.as_graph(); - // Remove `var` from regulators if it is there. + // Remove `var` from regulators and target if it is there, since we want to ignore + // the self-regulation (because the precondition is that it is safe to ignore). let var_regulators = old_rg .regulators(var) .into_iter() .filter(|it| *it != var) .collect::>(); - let var_targets = old_rg.targets(var); + let var_targets = old_rg + .targets(var) + .into_iter() + .filter(|it| *it != var) + .collect::>(); // If we have to create an explicit uninterpreted function for the inlined variable, // we have to give it a unique name at first. But once the variable is inlined, we can @@ -755,7 +760,7 @@ impl BooleanNetwork { let mut rename_parameter: Option<(ParameterId, String)> = None; // 1. The very first step is to replace anonymous functions with explicit ones if they - // are somehow related to `var`. Hence in the next steps, we can assume the inlined + // are somehow related to `var`. Hence, in the next steps, we can assume the inlined // function and the target functions are all explicit. for check_var in var_targets.iter().chain(&[var]) { let has_missing_function = old_bn.get_update_function(*check_var).is_none(); @@ -1438,4 +1443,13 @@ mod test { assert_eq!(expected, bn.remove_static_constraints()); } + + #[test] + fn test_constant_inlining_real_world_1() { + // This network actually uses the infer_constants parameter in a way that can break + // the function if the self-regulations are not properly handled. + let bn = BooleanNetwork::try_from_file("./aeon_models/constants.aeon").unwrap(); + let inlined = bn.inline_constants(true, true); + assert!(inlined.num_vars() < bn.num_vars()); + } }