Skip to content

Commit

Permalink
Merge pull request #9 from sybila/simplified-phenotype-control
Browse files Browse the repository at this point in the history
Simplified phenotype control
  • Loading branch information
smijeva authored Sep 13, 2023
2 parents 1847a62 + 306ac64 commit ab0b8a6
Show file tree
Hide file tree
Showing 67 changed files with 7,949 additions and 8 deletions.
5 changes: 3 additions & 2 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@ clap = "4.0.26"
serde_json = "1.0.59"
itertools = "0.10.1"
chrono = "0.4.19"
biodivine-lib-bdd = ">=0.4.2, <1.0.0"
biodivine-lib-param-bn = ">=0.4.1, <1.0.0"
biodivine-lib-bdd = "0.4.*"
biodivine-lib-param-bn = { git = "https://github.com/sybila/biodivine-lib-param-bn.git", branch = "dev-faster-reach" }
rstest = "0.17.0"

[dev-dependencies]

Expand Down
13 changes: 10 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ The directory structure:
├── auxiliary_scripts # Scripts to do & process experiments
├── models # Base experimental models
├── results # Raw measured results from experiments
├── results_simple # Raw measured results from experiments for simplified phenotype control procedure
└── src # Library source code

### Auxiliary scripts
Expand All @@ -23,7 +24,11 @@ Base models for testing the library. Contains witness models from CellCollective

### Results

The raw unprocessed outputs of experiments for both performance comparison and robustness metric.
The raw unprocessed outputs of experiments for both performance comparison and robustness metric of one-step/temporary/permantent source-traget control.

### Results

The raw unprocessed outputs of experiments for phenotype control.

### src

Expand All @@ -37,8 +42,10 @@ Operations to perform base state-transition graph manipulations.

Implementations of control algorithm on the perturbable graph.

### phenotype_control

Implementations of phenotype control algorithm on the perturbable graph.

### perturbation

Data structure representing state transition graph of Boolean network which is viable for perturbations.

To run the basic experiments, execute `cargo run --release`
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
v_canWnt -> v_Mesp1
v_exogen_BMP2_II -| v_Mesp1
v_canWnt -> v_Isl1
v_Fgf8 -> v_Isl1
v_Tbx1 -> v_Isl1
v_exogen_canWnt_II -> v_Isl1
v_Mesp1 -> v_Isl1
v_exogen_canWnt_II -> v_canWnt
v_Bmp2 -> v_Nkx2_5
v_Isl1 -> v_Nkx2_5
v_Tbx1 -> v_Nkx2_5
v_Dkk1 -> v_Nkx2_5
v_Tbx5 -> v_Nkx2_5
v_GATAs -> v_Nkx2_5
v_Mesp1 -> v_Nkx2_5
v_Nkx2_5 -> v_Tbx5
v_canWnt -| v_Tbx5
v_Dkk1 -| v_Tbx5
v_Tbx1 -| v_Tbx5
v_Tbx5 -? v_Tbx5
v_Mesp1 -? v_Tbx5
v_Tbx1 -> v_Fgf8
v_Mesp1 -| v_Fgf8
v_Foxc1_2 -> v_Fgf8
v_canWnt -| v_Bmp2
v_exogen_BMP2_II -> v_Bmp2
v_canWnt -> v_Foxc1_2
v_exogen_canWnt_II -> v_Foxc1_2
v_canWnt -> v_Dkk1
v_exogen_BMP2_II -| v_Dkk1
v_Mesp1 -> v_Dkk1
v_exogen_CanWnt_I -> v_exogen_canWnt_II
v_exogen_BMP2_I -> v_exogen_BMP2_II
v_Nkx2_5 -> v_GATAs
v_Tbx5 -> v_GATAs
v_Mesp1 -> v_GATAs
v_Foxc1_2 -> v_Tbx1
$v_Bmp2: (v_exogen_BMP2_II & !v_canWnt)
$v_Dkk1: (v_Mesp1 | (v_canWnt & !v_exogen_BMP2_II))
$v_Fgf8: ((v_Tbx1 & !v_Mesp1) | (v_Foxc1_2 & !v_Mesp1))
$v_Foxc1_2: (v_canWnt & v_exogen_canWnt_II)
$v_GATAs: ((v_Nkx2_5 | v_Tbx5) | v_Mesp1)
$v_Isl1: (((v_Mesp1 | v_Tbx1) | v_Fgf8) | (v_canWnt & v_exogen_canWnt_II))
$v_Mesp1: (v_canWnt & !v_exogen_BMP2_II)
$v_Nkx2_5: ((((v_Tbx5 | v_Tbx1) | (v_Mesp1 & v_Dkk1)) | (v_Bmp2 & v_GATAs)) | (v_Isl1 & v_GATAs))
$v_Tbx1: v_Foxc1_2
$v_Tbx5: (((v_Tbx5 & !((v_canWnt | (v_Dkk1 & (!v_Tbx5 & !v_Mesp1))) | v_Tbx1)) | (v_Nkx2_5 & !((v_canWnt | (v_Dkk1 & (!v_Tbx5 & !v_Mesp1))) | v_Tbx1))) | (v_Mesp1 & !((v_canWnt | (v_Dkk1 & (!v_Tbx5 & !v_Mesp1))) | v_Tbx1)))
$v_canWnt: v_exogen_canWnt_II
$v_exogen_BMP2_II: v_exogen_BMP2_I
$v_exogen_canWnt_II: v_exogen_CanWnt_I
Original file line number Diff line number Diff line change
@@ -0,0 +1,247 @@
v_PI3K -> v_NFAT
v_Apoptosis -| v_NFAT
v_TBET -> v_IFNGT
v_NFAT -> v_IFNGT
v_Apoptosis -| v_IFNGT
v_STAT3 -> v_IFNGT
v_Fas -> v_Ceramide
v_S1P -| v_Ceramide
v_Apoptosis -| v_Ceramide
v_S1P -> v_GPCR
v_Apoptosis -| v_GPCR
v_NFKB -> v_FasT
v_Apoptosis -| v_FasT
v_FasT -> v_Fas
v_FasL -> v_Fas
v_Apoptosis -| v_Fas
v_sFas -| v_Fas
v_IFNG -> v_GZMB
v_TBET -> v_GZMB
v_CREB -> v_GZMB
v_Apoptosis -| v_GZMB
v_IFN -> v_CREB
v_Apoptosis -| v_CREB
v_ERK -> v_CREB
v_FasT -> v_sFas
v_Apoptosis -| v_sFas
v_PDGFR -> v_SPHK1
v_Apoptosis -| v_SPHK1
v_IL2RB -> v_GRB2
v_ZAP70 -> v_GRB2
v_Apoptosis -| v_GRB2
v_Stimuli -> v_IFNG
v_P2 -| v_IFNG
v_IFNGT -> v_IFNG
v_SMAD -| v_IFNG
v_IL2 -> v_IFNG
v_Apoptosis -| v_IFNG
v_IL15 -> v_IFNG
v_PDGFR -> v_GAP
v_RAS -> v_GAP
v_IL2 -| v_GAP
v_IL15 -| v_GAP
v_Apoptosis -| v_GAP
v_GAP -? v_GAP
v_PDGFR -> v_PI3K
v_RAS -> v_PI3K
v_Apoptosis -| v_PI3K
v_PDGF -> v_PDGFR
v_S1P -> v_PDGFR
v_Apoptosis -| v_PDGFR
v_TBET -| v_IL2
v_NFKB -> v_IL2
v_NFAT -> v_IL2
v_STAT3 -> v_IL2
v_Apoptosis -| v_IL2
v_RAS -> v_MEK
v_Apoptosis -| v_MEK
v_PI3K -> v_TPL2
v_TNF -> v_TPL2
v_TAX -> v_TPL2
v_Apoptosis -| v_TPL2
v_P27 -| v_Proliferation
v_Apoptosis -| v_Proliferation
v_STAT3 -> v_Proliferation
v_IL2RB -> v_LCK
v_CD45 -> v_LCK
v_TCR -> v_LCK
v_ZAP70 -| v_LCK
v_Apoptosis -| v_LCK
v_Apoptosis -| v_P27
v_STAT3 -> v_P27
v_GPCR -> v_SMAD
v_Apoptosis -| v_SMAD
v_Fas -> v_DISC
v_FLIP -| v_DISC
v_FasT -> v_DISC
v_IL2 -> v_DISC
v_Apoptosis -| v_DISC
v_Ceramide -> v_DISC
v_JAK -> v_SOCS
v_IL2 -| v_SOCS
v_IL15 -| v_SOCS
v_Apoptosis -| v_SOCS
v_A20 -| v_TRADD
v_TNF -> v_TRADD
v_Apoptosis -| v_TRADD
v_IAP -| v_TRADD
v_SPHK1 -> v_S1P
v_Apoptosis -| v_S1P
v_Ceramide -| v_S1P
v_NFKB -> v_A20
v_Apoptosis -| v_A20
v_TCR -> v_CTLA4
v_Apoptosis -| v_CTLA4
v_Stimuli -> v_TCR
v_CTLA4 -| v_TCR
v_Apoptosis -| v_TCR
v_TBET -> v_IL2RBT
v_Apoptosis -| v_IL2RBT
v_ERK -> v_IL2RBT
v_PDGFR -> v_PLCG1
v_Apoptosis -| v_PLCG1
v_GRB2 -> v_PLCG1
v_FLIP -> v_NFKB
v_PI3K -> v_NFKB
v_TRADD -> v_NFKB
v_TPL2 -> v_NFKB
v_Apoptosis -| v_NFKB
v_IAP -> v_NFKB
v_DISC -> v_Caspase
v_TRADD -> v_Caspase
v_GZMB -> v_Caspase
v_Apoptosis -| v_Caspase
v_BID -> v_Caspase
v_IAP -| v_Caspase
v_IL2RA -| v_IL2RA
v_IL2RAT -> v_IL2RA
v_IL2 -> v_IL2RA
v_Apoptosis -| v_IL2RA
v_NFKB -> v_BclxL
v_DISC -| v_BclxL
v_GZMB -| v_BclxL
v_Apoptosis -| v_BclxL
v_STAT3 -> v_BclxL
v_BID -| v_BclxL
v_TBET -> v_TBET
v_JAK -> v_TBET
v_Apoptosis -| v_TBET
v_BclxL -| v_BID
v_GZMB -> v_BID
v_Apoptosis -| v_BID
v_Caspase -> v_BID
v_MCL1 -| v_BID
v_NFKB -> v_TNF
v_Apoptosis -| v_TNF
v_IL2RBT -> v_IL2RB
v_IL2 -> v_IL2RB
v_IL15 -> v_IL2RB
v_Apoptosis -| v_IL2RB
v_PLCG1 -> v_RAS
v_Apoptosis -| v_RAS
v_GRB2 -> v_RAS
v_GAP -| v_RAS
v_NFKB -> v_RANTES
v_Apoptosis -| v_RANTES
v_JAK -> v_STAT3
v_Apoptosis -| v_STAT3
v_Apoptosis -? v_Apoptosis
v_Caspase -> v_Apoptosis
v_IL2RB -> v_FYN
v_TCR -> v_FYN
v_Apoptosis -| v_FYN
v_IFNG -> v_FLIP
v_DISC -| v_FLIP
v_NFKB -> v_FLIP
v_CREB -> v_FLIP
v_Apoptosis -| v_FLIP
v_NFKB -> v_FasL
v_NFAT -> v_FasL
v_Apoptosis -| v_FasL
v_STAT3 -> v_FasL
v_ERK -> v_FasL
v_FYN -> v_Cytoskeleton_signaling
v_Apoptosis -| v_Cytoskeleton_signaling
v_MEK -> v_ERK
v_PI3K -> v_ERK
v_Apoptosis -| v_ERK
v_NFKB -> v_IAP
v_Apoptosis -| v_IAP
v_BID -| v_IAP
v_IFNG -> v_P2
v_P2 -? v_P2
v_Apoptosis -| v_P2
v_Stimuli2 -| v_P2
v_IL2RB -> v_MCL1
v_PI3K -> v_MCL1
v_NFKB -> v_MCL1
v_STAT3 -> v_MCL1
v_Apoptosis -| v_MCL1
v_FYN -| v_ZAP70
v_Apoptosis -| v_ZAP70
v_LCK -> v_ZAP70
v_IFNG -> v_JAK
v_IL2RA -> v_JAK
v_IL2RB -> v_JAK
v_CD45 -| v_JAK
v_RANTES -> v_JAK
v_SOCS -| v_JAK
v_Apoptosis -| v_JAK
v_NFKB -> v_IL2RAT
v_IL2 -> v_IL2RAT
v_Apoptosis -| v_IL2RAT
v_STAT3 -> v_IL2RAT
$v_A20: (v_NFKB & !v_Apoptosis)
$v_Apoptosis: (v_Caspase | v_Apoptosis)
$v_BID: ((v_GZMB & !((v_BclxL | v_Apoptosis) | v_MCL1)) | (v_Caspase & !((v_BclxL | v_Apoptosis) | v_MCL1)))
$v_BclxL: ((v_NFKB & !(((v_BID | v_DISC) | v_Apoptosis) | v_GZMB)) | (v_STAT3 & !(((v_BID | v_DISC) | v_Apoptosis) | v_GZMB)))
$v_CREB: ((v_ERK & v_IFN) & !v_Apoptosis)
$v_CTLA4: (v_TCR & !v_Apoptosis)
$v_Caspase: ((((v_TRADD & v_BID) & !(v_IAP | v_Apoptosis)) | ((v_GZMB & v_BID) & !(v_IAP | v_Apoptosis))) | (v_DISC & !v_Apoptosis))
$v_Ceramide: (v_Fas & !(v_Apoptosis | v_S1P))
$v_Cytoskeleton_signaling: (v_FYN & !v_Apoptosis)
$v_DISC: ((v_FasT & (((v_Fas & v_IL2) | (v_Fas & !v_FLIP)) | v_Ceramide)) & !v_Apoptosis)
$v_ERK: ((v_MEK & v_PI3K) & !v_Apoptosis)
$v_FLIP: ((v_NFKB & !(v_Apoptosis | v_DISC)) | ((v_CREB & v_IFNG) & !(v_Apoptosis | v_DISC)))
$v_FYN: ((v_IL2RB & !v_Apoptosis) | (v_TCR & !v_Apoptosis))
$v_Fas: ((v_FasT & v_FasL) & !(v_Apoptosis | v_sFas))
$v_FasL: ((((v_NFAT & !v_Apoptosis) | (v_NFKB & !v_Apoptosis)) | (v_STAT3 & !v_Apoptosis)) | (v_ERK & !v_Apoptosis))
$v_FasT: (v_NFKB & !v_Apoptosis)
$v_GAP: (((v_PDGFR & v_GAP) & !((v_IL2 | v_IL15) | v_Apoptosis)) | (v_RAS & !((v_IL2 | v_IL15) | v_Apoptosis)))
$v_GPCR: (v_S1P & !v_Apoptosis)
$v_GRB2: ((v_ZAP70 & !v_Apoptosis) | (v_IL2RB & !v_Apoptosis))
$v_GZMB: ((v_TBET & !v_Apoptosis) | ((v_CREB & v_IFNG) & !v_Apoptosis))
$v_IAP: (v_NFKB & !(v_BID | v_Apoptosis))
$v_IFNG: ((((v_IL15 & v_IFNGT) & !((v_SMAD | v_Apoptosis) | v_P2)) | ((v_Stimuli & v_IFNGT) & !((v_SMAD | v_Apoptosis) | v_P2))) | ((v_IL2 & v_IFNGT) & !((v_SMAD | v_Apoptosis) | v_P2)))
$v_IFNGT: (((v_NFAT & !v_Apoptosis) | (v_TBET & !v_Apoptosis)) | (v_STAT3 & !v_Apoptosis))
$v_IL2: (((v_STAT3 & !(v_TBET | v_Apoptosis)) | (v_NFAT & !(v_TBET | v_Apoptosis))) | (v_NFKB & !(v_TBET | v_Apoptosis)))
$v_IL2RA: ((v_IL2 & v_IL2RAT) & !(v_IL2RA | v_Apoptosis))
$v_IL2RAT: ((v_IL2 & (v_NFKB | v_STAT3)) & !v_Apoptosis)
$v_IL2RB: ((v_IL2RBT & (v_IL2 | v_IL15)) & !v_Apoptosis)
$v_IL2RBT: ((v_ERK & v_TBET) & !v_Apoptosis)
$v_JAK: ((((v_IL2RA & !((v_SOCS | v_Apoptosis) | v_CD45)) | (v_IFNG & !((v_SOCS | v_Apoptosis) | v_CD45))) | (v_IL2RB & !((v_SOCS | v_Apoptosis) | v_CD45))) | (v_RANTES & !((v_SOCS | v_Apoptosis) | v_CD45)))
$v_LCK: (((v_IL2RB & !(v_ZAP70 | v_Apoptosis)) | (v_TCR & !(v_ZAP70 | v_Apoptosis))) | (v_CD45 & !v_Apoptosis))
$v_MCL1: ((v_IL2RB & ((v_PI3K & v_NFKB) & v_STAT3)) & !v_Apoptosis)
$v_MEK: (v_RAS & !v_Apoptosis)
$v_NFAT: (v_PI3K & !v_Apoptosis)
$v_NFKB: (((v_TPL2 & !v_Apoptosis) | (v_PI3K & !v_Apoptosis)) | ((v_FLIP & (v_TRADD & v_IAP)) & !v_Apoptosis))
$v_P2: ((v_IFNG & !(v_Stimuli2 | v_Apoptosis)) | (v_P2 & !(v_Stimuli2 | v_Apoptosis)))
$v_P27: (v_STAT3 & !v_Apoptosis)
$v_PDGFR: ((v_S1P & !v_Apoptosis) | (v_PDGF & !v_Apoptosis))
$v_PI3K: ((v_PDGFR & !v_Apoptosis) | (v_RAS & !v_Apoptosis))
$v_PLCG1: ((v_PDGFR & !v_Apoptosis) | (v_GRB2 & !v_Apoptosis))
$v_Proliferation: (v_STAT3 & !(v_Apoptosis | v_P27))
$v_RANTES: (v_NFKB & !v_Apoptosis)
$v_RAS: ((v_PLCG1 & !(v_Apoptosis | v_GAP)) | (v_GRB2 & !(v_Apoptosis | v_GAP)))
$v_S1P: (v_SPHK1 & !(v_Apoptosis | v_Ceramide))
$v_SMAD: (v_GPCR & !v_Apoptosis)
$v_SOCS: (v_JAK & !((v_IL15 | v_IL2) | v_Apoptosis))
$v_SPHK1: (v_PDGFR & !v_Apoptosis)
$v_STAT3: (v_JAK & !v_Apoptosis)
$v_TBET: ((v_JAK & !v_Apoptosis) | (v_TBET & !v_Apoptosis))
$v_TCR: (v_Stimuli & !(v_CTLA4 | v_Apoptosis))
$v_TNF: (v_NFKB & !v_Apoptosis)
$v_TPL2: (((v_PI3K & v_TNF) & !v_Apoptosis) | (v_TAX & !v_Apoptosis))
$v_TRADD: (v_TNF & !((v_IAP | v_A20) | v_Apoptosis))
$v_ZAP70: (v_LCK & !(v_Apoptosis | v_FYN))
$v_sFas: (v_FasT & !v_Apoptosis)
Loading

0 comments on commit ab0b8a6

Please sign in to comment.