From e5238ad485799420a42eae1d491ac50584f0c4fe Mon Sep 17 00:00:00 2001 From: Arnau Montagud Date: Fri, 29 Aug 2025 13:10:09 +0200 Subject: [PATCH 01/11] First push of prostate project files --- Makefile | 93 +- README.md | 23 +- config/PhysiCell_settings_LNCaP.xml | 325 +++++ .../PhysiCell_settings_LNCaP_Luminespib_2.xml | 325 +++++ ...settings_LNCaP_Luminespib_Pictilisib_2.xml | 325 +++++ .../PhysiCell_settings_LNCaP_Pictilisib_2.xml | 325 +++++ config/boolean_network/LNCaP_mut_RNA_00.bnd | 823 ++++++++++++ config/boolean_network/LNCaP_mut_RNA_00.cfg | 575 +++++++++ .../LNCaP_mut_RNA_00_all_nodes.bnd | 978 ++++++++++++++ .../LNCaP_mut_RNA_00_all_nodes.cfg | 584 +++++++++ .../Montagud2022_Prostate_Cancer.bnd | 803 ++++++++++++ .../Montagud2022_Prostate_Cancer.cfg | 431 +++++++ config/init2.csv | 1138 +++++++++++++++++ config/prostate_drug_sensitivity.csv | 841 ++++++++++++ custom_modules/boolean_model_interface.cpp | 196 +++ custom_modules/boolean_model_interface.h | 35 + custom_modules/custom.cpp | 467 ++++--- custom_modules/custom.h | 119 +- custom_modules/drug_sensitivity.cpp | 172 +++ custom_modules/drug_sensitivity.h | 44 + main.cpp | 147 +-- model.yml | 8 +- scripts/moviemaker.ipynb | 90 ++ scripts/time_course_cells.ipynb | 625 +++++++++ 24 files changed, 9130 insertions(+), 362 deletions(-) create mode 100644 config/PhysiCell_settings_LNCaP.xml create mode 100644 config/PhysiCell_settings_LNCaP_Luminespib_2.xml create mode 100644 config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml create mode 100644 config/PhysiCell_settings_LNCaP_Pictilisib_2.xml create mode 100644 config/boolean_network/LNCaP_mut_RNA_00.bnd create mode 100644 config/boolean_network/LNCaP_mut_RNA_00.cfg create mode 100644 config/boolean_network/LNCaP_mut_RNA_00_all_nodes.bnd create mode 100644 config/boolean_network/LNCaP_mut_RNA_00_all_nodes.cfg create mode 100644 config/boolean_network/Montagud2022_Prostate_Cancer.bnd create mode 100644 config/boolean_network/Montagud2022_Prostate_Cancer.cfg create mode 100644 config/init2.csv create mode 100644 config/prostate_drug_sensitivity.csv create mode 100644 custom_modules/boolean_model_interface.cpp create mode 100644 custom_modules/boolean_model_interface.h create mode 100644 custom_modules/drug_sensitivity.cpp create mode 100644 custom_modules/drug_sensitivity.h create mode 100644 scripts/moviemaker.ipynb create mode 100644 scripts/time_course_cells.ipynb diff --git a/Makefile b/Makefile index a5d3a9c..ae01871 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ VERSION := $(shell grep . VERSION.txt | cut -f1 -d:) -PROGRAM_NAME := project +PROGRAM_NAME := prostate CC := g++ # CC := g++-mp-7 # typical macports compiler name @@ -11,16 +11,19 @@ ifdef PHYSICELL_CPP CC := $(PHYSICELL_CPP) endif +# prostate model has more than 64 nodes, so we have +# to set up this var to the number of nodes +MABOSS_MAX_NODES = 256 + ### MaBoSS configuration # MaBoSS max nodes ifndef MABOSS_MAX_NODES -MABOSS_MAX_NODES = 256 +MABOSS_MAX_NODES = 64 endif # MaBoSS directory MABOSS_DIR = addons/PhysiBoSS/MaBoSS/engine CUR_DIR = $(shell pwd) -CUSTOM_DIR = sample_projects/Arnau_model/custom_modules ifneq ($(OS), Windows_NT) LDL_FLAG = -ldl @@ -58,7 +61,9 @@ ARCH := native # best auto-tuning # ARCH := nocona #64-bit pentium 4 or later # CFLAGS := -march=$(ARCH) -Ofast -s -fomit-frame-pointer -mfpmath=both -fopenmp -m64 -std=c++11 -CFLAGS := -march=$(ARCH) -O3 -fomit-frame-pointer -mfpmath=both -fopenmp -m64 -std=c++11 +CFLAGS := -g -march=$(ARCH) -O3 -fomit-frame-pointer -mfpmath=both -fopenmp -m64 -std=c++11 +# debug: +# CFLAGS := -march=$(ARCH) -O0 -ggdb -fomit-frame-pointer -mfpmath=both -fopenmp -m64 -std=c++11 ifeq ($(OS),Windows_NT) else @@ -91,18 +96,21 @@ MaBoSS := ./addons/PhysiBoSS/MaBoSS/engine/src/BooleanNetwork.h PhysiBoSS_OBJECTS := maboss_network.o maboss_intracellular.o -PhysiCell_custom_module_OBJECTS := custom.o +PhysiCell_custom_module_OBJECTS := custom.o drug_sensitivity.o boolean_model_interface.o pugixml_OBJECTS := pugixml.o PhysiCell_OBJECTS := $(BioFVM_OBJECTS) $(pugixml_OBJECTS) $(PhysiCell_core_OBJECTS) $(PhysiCell_module_OBJECTS) -ALL_OBJECTS := $(PhysiCell_OBJECTS) $(PhysiCell_custom_module_OBJECTS) $(PhysiBoSS_OBJECTS) +ALL_OBJECTS := $(PhysiCell_OBJECTS) $(PhysiCell_custom_module_OBJECTS) $(PhysiBoSS_OBJECTS) +#$(PhysiBoSS_module_OBJECTS) # compile the project all: main.cpp $(ALL_OBJECTS) $(MaBoSS) $(COMPILE_COMMAND) $(INC) -o $(PROGRAM_NAME) $(ALL_OBJECTS) main.cpp $(LIB) - make name + @echo "" + @echo "check for $(PROGRAM_NAME)" + make name static: main.cpp $(ALL_OBJECTS) $(MaBoSS) $(LINK_COMMAND) $(INC) -o $(PROGRAM_NAME) $(ALL_OBJECTS) main.cpp $(LIB) -static-libgcc -static-libstdc++ $(STATIC_OPENMP) @@ -134,16 +142,16 @@ PhysiCell_utilities.o: ./core/PhysiCell_utilities.cpp PhysiCell_custom.o: ./core/PhysiCell_custom.cpp $(COMPILE_COMMAND) -c ./core/PhysiCell_custom.cpp - + PhysiCell_constants.o: ./core/PhysiCell_constants.cpp - $(COMPILE_COMMAND) -c ./core/PhysiCell_constants.cpp - + $(COMPILE_COMMAND) -c ./core/PhysiCell_constants.cpp + PhysiCell_signal_behavior.o: ./core/PhysiCell_signal_behavior.cpp $(COMPILE_COMMAND) -c ./core/PhysiCell_signal_behavior.cpp - + PhysiCell_rules.o: ./core/PhysiCell_rules.cpp $(COMPILE_COMMAND) -c ./core/PhysiCell_rules.cpp - + # BioFVM core components (needed by PhysiCell) BioFVM_vector.o: ./BioFVM/BioFVM_vector.cpp @@ -189,19 +197,19 @@ PhysiCell_MultiCellDS.o: ./modules/PhysiCell_MultiCellDS.cpp $(MaBoSS) PhysiCell_various_outputs.o: ./modules/PhysiCell_various_outputs.cpp $(COMPILE_COMMAND) -c ./modules/PhysiCell_various_outputs.cpp - + PhysiCell_pugixml.o: ./modules/PhysiCell_pugixml.cpp $(COMPILE_COMMAND) -c ./modules/PhysiCell_pugixml.cpp PhysiCell_settings.o: ./modules/PhysiCell_settings.cpp - $(COMPILE_COMMAND) -c ./modules/PhysiCell_settings.cpp - + $(COMPILE_COMMAND) -c ./modules/PhysiCell_settings.cpp + PhysiCell_basic_signaling.o: ./core/PhysiCell_basic_signaling.cpp - $(COMPILE_COMMAND) -c ./core/PhysiCell_basic_signaling.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_basic_signaling.cpp PhysiCell_geometry.o: ./modules/PhysiCell_geometry.cpp $(COMPILE_COMMAND) -c ./modules/PhysiCell_geometry.cpp - + # user-defined PhysiCell modules Compile_MaBoSS: ./addons/PhysiBoSS/MaBoSS/engine/src/BooleanNetwork.h @@ -214,14 +222,24 @@ else python3 addons/PhysiBoSS/setup_libmaboss.py endif +maboss_intracellular.o: ./addons/PhysiBoSS/src/maboss_intracellular.cpp $(MaBoSS) + $(COMPILE_COMMAND) $(INC) -c ./addons/PhysiBoSS/src/maboss_intracellular.cpp + maboss_network.o: ./addons/PhysiBoSS/src/maboss_network.cpp $(MaBoSS) $(COMPILE_COMMAND) $(INC) -c ./addons/PhysiBoSS/src/maboss_network.cpp -maboss_intracellular.o: ./addons/PhysiBoSS/src/maboss_intracellular.cpp $(MaBoSS) - $(COMPILE_COMMAND) $(INC) -c ./addons/PhysiBoSS/src/maboss_intracellular.cpp +utils.o: ./addons/PhysiBoSS/src/utils.cpp #$(MaBoSS) + $(COMPILE_COMMAND) $(INC) -c ./addons/PhysiBoSS/src/utils.cpp custom.o: ./custom_modules/custom.cpp $(MaBoSS) - $(COMPILE_COMMAND) $(INC) -c ./custom_modules/custom.cpp + $(COMPILE_COMMAND) $(INC) -c ./custom_modules/custom.cpp + +drug_sensitivity.o: ./custom_modules/drug_sensitivity.cpp + $(COMPILE_COMMAND) $(INC) -c ./custom_modules/drug_sensitivity.cpp + +boolean_model_interface.o: ./custom_modules/boolean_model_interface.cpp + $(COMPILE_COMMAND) $(INC) -c ./custom_modules/boolean_model_interface.cpp + # cleanup @@ -231,29 +249,31 @@ reset: rm -f ./custom_modules/* touch ./custom_modules/empty.txt touch ALL_CITATIONS.txt - touch ./core/PhysiCell_cell.cpp rm ALL_CITATIONS.txt cp ./config/PhysiCell_settings-backup.xml ./config/PhysiCell_settings.xml - rm -fr ./config/cells.csv ./config/cell_rules.csv + rm -rf ./config/boolean_network/ rm -rf ./scripts MaBoSS-clean: rm -fr addons/PhysiBoSS/MaBoSS -clean: +clean: rm -f *.o rm -f $(PROGRAM_NAME)* data-cleanup: + rm -f *.mat + rm -f *.xml + rm -f *.svg rm -rf ./output mkdir ./output touch ./output/empty.txt # archival - + checkpoint: zip -r $$(date +%b_%d_%Y_%H%M).zip Makefile *.cpp *.h config/*.xml custom_modules/* - + zip: zip -r latest.zip Makefile* *.cpp *.h BioFVM/* config/* core/* custom_modules/* matlab/* modules/* sample_projects/* cp latest.zip $$(date +%b_%d_%Y_%H%M).zip @@ -273,26 +293,10 @@ unzip: untar: cp ./archives/latest.tar . tar -xzf latest.tar - -# easier animation - -FRAMERATE := 24 -OUTPUT := output - -jpeg: - @magick identify -format "%h" $(OUTPUT)/initial.svg > __H.txt - @magick identify -format "%w" $(OUTPUT)/initial.svg > __W.txt - @expr 2 \* \( $$(grep . __H.txt) / 2 \) > __H1.txt - @expr 2 \* \( $$(grep . __W.txt) / 2 \) > __W1.txt - @echo "$$(grep . __W1.txt)!x$$(grep . __H1.txt)!" > __resize.txt - @magick mogrify -format jpg -resize $$(grep . __resize.txt) $(OUTPUT)/s*.svg - rm -f __H*.txt __W*.txt __resize.txt -gif: - magick convert $(OUTPUT)/s*.svg $(OUTPUT)/out.gif - movie: - ffmpeg -r $(FRAMERATE) -f image2 -i $(OUTPUT)/snapshot%08d.jpg -vcodec libx264 -pix_fmt yuv420p -strict -2 -tune animation -crf 15 -acodec none $(OUTPUT)/out.mp4 + ffmpeg -r 25 -i output/snapshot%08d.svg -pix_fmt yuv420p output.mp4 + vlc output.mp4 # upgrade rules @@ -322,7 +326,7 @@ upgrade: $(SOURCE) mv -f PhysiCell/documentation/User_Guide.pdf documentation rm -f -r PhysiCell rm -f $(SOURCE) - + # use: make save PROJ=your_project_name PROJ := my_project @@ -367,3 +371,4 @@ unpack: list-user-projects: @echo "user projects::" @cd ./user_projects && ls -dt1 * | grep . | sed 's!empty.txt!!' + diff --git a/README.md b/README.md index 6ebe806..b404954 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,21 @@ # About -This repository is a template for PhysiBoSS models, that can be used to submit a new model to the database. +This repository is an update of the prostate model to version 2.2.3 of PhysiBoSS. The project does not rely on the cell rules to perform the inhibition, but on an ad-hoc cell sensitivity that depends on the cell line. + +A prior version of this model was used to simulate the drug response in prostate cell lines in Figures 6, 7 and 8 of [the PhysiBoSS 2.0 paper](https://www.nature.com/articles/s41540-023-00314-4). # Getting started -- Fork this repository. -- Make a new branch from main for your PhysiBoSS model. -- Update the new branch with your model -- Update model.yml metadata file, as well as the readme for a quick description of the model -- Open a pull request. Building of your model will be tested on Windows, Mac and Linux. -- When your pull request is accepted by the editors a new repository will be created in the github PhysiBoSS-Models organization, and build/upload of your model will automatically be triggered. Once complete, the model is available on PhysiBoSS-Models. +The XML in the `config` folder are: +- PhysiCell_settings_LNCaP.xml: LNCaP cell line simulation +- PhysiCell_settings_LNCaP_Luminespib_2.xml: LNCaP cell line simulation adding Luminespib drug (anti_HSPs). +- PhysiCell_settings_LNCaP_Pictilisib_2.xml: LNCaP cell line simulation adding Pictilisib drug (anti_PI3K). +- PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml: LNCaP cell line simulation adding Luminespib and Pictilisib drugs. + +Files in the `scripts` folder have post processing scripts. + +# Authors: + +Arnau Montagud, Annika Meert, Gerard Pradas and Miguel Ponce de Leon, BSC-CNS + +Contact: arnau.montagud at csic.es diff --git a/config/PhysiCell_settings_LNCaP.xml b/config/PhysiCell_settings_LNCaP.xml new file mode 100644 index 0000000..3abc8b7 --- /dev/null +++ b/config/PhysiCell_settings_LNCaP.xml @@ -0,0 +1,325 @@ + + + -500 + 500 + -500 + 500 + -500 + 500 + 15 + 15 + 15 + false + + + + 10080 + min + micron + 0.01 + 0.1 + 6 + + + + 4 + + + + output_nodrug_new_dt6 + + 240 + true + + + 240 + true + + false + true + + + + false + + + + + false + true + false + + + + + + 100000.0 + 0.0005 + + 160.0 + 160.0 + + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + + + + + 1200.0 + 0.0275 + + 0.0 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1200.0 + 0.0275 + + 0.0 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + true + true + + + ./config/initial.mat + + + + ./config/dirichlet.mat + + + + + + + + + + 0.0003155 + + + + + + 5.31667e-05 + + 0.00193798 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 0.0 + + 9e9 + 1.15741e-5 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0 + 0 + 2.0 + + + 0.4 + 100.0 + 1.1 + + 1.0 + 0.8 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.1 + 1.0 + 0.0 + + + 1 + 1 + 0 + + + false + false + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 38 + 10 + 0 + + + 0.0 + 1.0 + 0.0025 + 0.0 + + + 0.0 + 1.0 + 0.0025 + 0.0 + + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + + + + ./config/boolean_network/LNCaP_mut_RNA_00_all_nodes.bnd + ./config/boolean_network/LNCaP_mut_RNA_00_all_nodes.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + + + + + + + + 0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + + + ./config + init2.csv + + + + + 0 + + 0 + 0.35 + 2 + + + 2 + 0.0003155 + + + 5 + LNCaP + + + + -1 + + 0.0025 + 0.1 + 2.30653618101248 + 3.85680179514967 + 10.0 + 0.0 + 0 + 0.0025 + 0.1 + 2.30653618101248 + 7.02401783651853 + 0.25 + 0.0 + 0 + + diff --git a/config/PhysiCell_settings_LNCaP_Luminespib_2.xml b/config/PhysiCell_settings_LNCaP_Luminespib_2.xml new file mode 100644 index 0000000..f861888 --- /dev/null +++ b/config/PhysiCell_settings_LNCaP_Luminespib_2.xml @@ -0,0 +1,325 @@ + + + -500 + 500 + -500 + 500 + -500 + 500 + 15 + 15 + 15 + false + + + + 10080 + min + micron + 0.01 + 0.1 + 6 + + + + 1 + + + + output_lumi + + 240 + true + + + 240 + true + + false + true + + + + false + + + + + false + true + false + + + + + + 100000.0 + 0.0005 + + 160.0 + 160.0 + + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + + + + + 1200.0 + 0.0275 + + 0.0 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1200.0 + 0.0275 + + 160.0 + 160.0 + + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + + + + true + true + + + ./config/initial.mat + + + + ./config/dirichlet.mat + + + + + + + + + + 0.0003155 + + + + + + 5.31667e-05 + + 0.00193798 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 0.0 + + 9e9 + 1.15741e-5 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0 + 0 + 2.0 + + + 0.4 + 100.0 + 1.1 + + 1.0 + 0.8 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.1 + 1.0 + 0.0 + + + 1 + 1 + 0 + + + false + false + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 38 + 10 + 0 + + + 0.0 + 1.0 + 0.0025 + 0.0 + + + 0.0 + 1.0 + 0.0025 + 0.0 + + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + + + + ./config/boolean_network/LNCaP_mut_RNA_00_all_nodes.bnd + ./config/boolean_network/LNCaP_mut_RNA_00_all_nodes.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + + + + + + + + 0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + + + ./config + init2.csv + + + + + 0 + + 0 + 0.35 + 2 + + + 2 + 0.0003155 + + + 5 + LNCaP + + + + 1 + + 0.0025 + 0.1 + 2.30653618101248 + 3.85680179514967 + 10.0 + 0.0 + 0 + 0.0025 + 0.1 + 2.30653618101248 + 7.02401783651853 + 0.25 + 0.0 + IC90 + + diff --git a/config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml b/config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml new file mode 100644 index 0000000..27ff02c --- /dev/null +++ b/config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml @@ -0,0 +1,325 @@ + + + -500 + 500 + -500 + 500 + -500 + 500 + 15 + 15 + 15 + false + + + + 10080 + min + micron + 0.01 + 0.1 + 6 + + + + 4 + + + + output_lumi_picti + + 240 + true + + + 240 + true + + false + true + + + + false + + + + + false + true + false + + + + + + 100000.0 + 0.0005 + + 160.0 + 160.0 + + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + + + + + 1200.0 + 0.0275 + + 160.0 + 160.0 + + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + + + + + 1200.0 + 0.0275 + + 160.0 + 160.0 + + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + + + + true + true + + + ./config/initial.mat + + + + ./config/dirichlet.mat + + + + + + + + + + 0.0003155 + + + + + + 5.31667e-05 + + 0.00193798 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 0.0 + + 9e9 + 1.15741e-5 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0 + 0 + 2.0 + + + 0.4 + 100.0 + 1.1 + + 1.0 + 0.8 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.1 + 1.0 + 0.0 + + + 1 + 1 + 0 + + + false + false + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 38 + 10 + 0 + + + 0.0 + 1.0 + 0.0025 + 0.0 + + + 0.0 + 1.0 + 0.0025 + 0.0 + + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + + + + ./config/boolean_network/LNCaP_mut_RNA_00_all_nodes.bnd + ./config/boolean_network/LNCaP_mut_RNA_00_all_nodes.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + + + + + + + + 0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + + + ./config + init2.csv + + + + + 0 + + 0 + 0.35 + 2 + + + 2 + 0.0003155 + + + 5 + LNCaP + + + + 1 + + 0.0025 + 0.1 + 2.30653618101248 + 3.85680179514967 + 10.0 + 0.0 + IC90 + 0.0025 + 0.1 + 2.30653618101248 + 7.02401783651853 + 0.25 + 0.0 + IC90 + + diff --git a/config/PhysiCell_settings_LNCaP_Pictilisib_2.xml b/config/PhysiCell_settings_LNCaP_Pictilisib_2.xml new file mode 100644 index 0000000..0903037 --- /dev/null +++ b/config/PhysiCell_settings_LNCaP_Pictilisib_2.xml @@ -0,0 +1,325 @@ + + + -500 + 500 + -500 + 500 + -500 + 500 + 15 + 15 + 15 + false + + + + 10080 + min + micron + 0.01 + 0.1 + 6 + + + + 4 + + + + output_picti + + 240 + true + + + 240 + true + + false + true + + + + false + + + + + false + true + false + + + + + + 100000.0 + 0.0005 + + 160.0 + 160.0 + + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + + + + + 1200.0 + 0.0275 + + 0.0 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1200.0 + 0.0275 + + 160.0 + 160.0 + + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + + + + true + true + + + ./config/initial.mat + + + + ./config/dirichlet.mat + + + + + + + + + + 0.0003155 + + + + + + 5.31667e-05 + + 0.00193798 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 0.0 + + 9e9 + 1.15741e-5 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0 + 0 + 2.0 + + + 0.4 + 100.0 + 1.1 + + 1.0 + 0.8 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.1 + 1.0 + 0.0 + + + 1 + 1 + 0 + + + false + false + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 38 + 10 + 0 + + + 0.0 + 1.0 + 0.0025 + 0.0 + + + 0.0 + 1.0 + 0.0025 + 0.0 + + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + + + + ./config/boolean_network/LNCaP_mut_RNA_00_all_nodes.bnd + ./config/boolean_network/LNCaP_mut_RNA_00_all_nodes.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + + + + + + + + 0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + + + ./config + init2.csv + + + + + 0 + + 0 + 0.35 + 2 + + + 2 + 0.0003155 + + + 5 + LNCaP + + + + 1 + + 0.0025 + 0.1 + 2.30653618101248 + 3.85680179514967 + 10.0 + 0.0 + IC90 + 0.0025 + 0.1 + 2.30653618101248 + 7.02401783651853 + 0.25 + 0.0 + 0 + + diff --git a/config/boolean_network/LNCaP_mut_RNA_00.bnd b/config/boolean_network/LNCaP_mut_RNA_00.bnd new file mode 100644 index 0000000..accd46a --- /dev/null +++ b/config/boolean_network/LNCaP_mut_RNA_00.bnd @@ -0,0 +1,823 @@ +Node Acidosis { + logic = (Acidosis); + rate_up = @logic ? $u_Acidosis : 0; + rate_down = @logic ? 0 : $d_Acidosis; +} + +Node AKT { + logic = ((HSPs | (PDK1 & PIP3) | PIP3 | (SHH & PIP3)) & !PTCH1); + rate_up = @logic ? $u_AKT : 0; + rate_down = @logic ? 0 : $d_AKT; +} + +Node AMPK { + logic = (ATR | HIF1 | AMP_ATP | ATM) & !FGFR3; + rate_up = @logic ? $u_AMPK : 0; + rate_down = @logic ? 0 : $d_AMPK; +} + +Node AMP_ATP { + logic = (!Nutrients); + rate_up = @logic ? $u_AMP_ATP : 0; + rate_down = @logic ? 0 : $d_AMP_ATP; +} + +Node Androgen { + logic = (Androgen); + rate_up = @logic ? $u_Androgen : 0; + rate_down = @logic ? 0 : $d_Androgen; +} + +Node Angiogenesis { + logic = (VEGF & (NF_kB | SMAD)); + rate_up = @logic ? $u_Angiogenesis : 0; + rate_down = @logic ? 0 : $d_Angiogenesis; +} + +Node APAF1 { + logic = ((Caspase8 | BAX | p53 | Bak | HSPs) & !Bcl_XL & !BCL2 & !AKT); + rate_up = @logic ? $u_APAF1 : 0; + rate_down = @logic ? 0 : $d_APAF1; +} + +Node Apoptosis { + logic = (Caspase9 | Caspase8 | Caspase3); + rate_up = @logic ? $u_Apoptosis : 0; + rate_down = @logic ? 0 : $d_Apoptosis; +} + +Node AR { + logic = ((GLI | EP300 | HSPs | NKX3_1 | EZH2 | NCOA3 | PKC | SMAD | Androgen) & !PTEN & !NCOR1 & !NCOR2 & !MDM2); + rate_up = @logic ? $u_AR : 0; + rate_down = @logic ? 0 : $d_AR; +} + +Node AR_ERG { + logic = ((AR & fused_event) | (AR & fused_event & !NKX3_1)); + rate_up = @logic ? $u_AR_ERG : 0; + rate_down = @logic ? 0 : $d_AR_ERG; +} + +Node ATM { + logic = (DNA_Damage); + rate_up = @logic ? $u_ATM : 0; + rate_down = @logic ? 0 : $d_ATM; +} + +Node ATR { + logic = (DNA_Damage); + rate_up = @logic ? $u_ATR : 0; + rate_down = @logic ? 0 : $d_ATR; +} + +Node AXIN1 { + logic = (GSK3); + rate_up = @logic ? $u_AXIN1 : 0; + rate_down = @logic ? 0 : $d_AXIN1; +} + +Node BAD { + logic = (!AKT & !HIF1 & !p90RSK & !RAF & !YWHAZ); + rate_up = @logic ? $u_BAD : 0; + rate_down = @logic ? 0 : $d_BAD; +} + +Node Bak { + logic = (Caspase8); + rate_up = @logic ? $u_Bak : 0; + rate_down = @logic ? 0 : $d_Bak; +} + +Node BAX { + logic = (!BCL2 & !HIF1 & !YWHAZ & (JNK | HIF1 | p53) & !ETS1); + rate_up = @logic ? $u_BAX : 0; + rate_down = @logic ? 0 : $d_BAX; +} + +Node BCL2 { + logic = ((HSPs | NF_kB | RUNX2) & !BAX & !p53 & !DAXX & !BAD); + rate_up = @logic ? $u_BCL2 : 0; + rate_down = @logic ? 0 : $d_BCL2; +} + +Node Bcl_XL { + logic = (AR & !BAD & !p53); + rate_up = @logic ? $u_Bcl_XL : 0; + rate_down = @logic ? 0 : $d_Bcl_XL; +} + +Node beta_catenin { + logic = (!GSK3 & !p53 & !AXIN1 & (EZH2 | YWHAZ)); + rate_up = @logic ? $u_beta_catenin : 0; + rate_down = @logic ? 0 : $d_beta_catenin; +} + +Node BIRC5 { + logic = (HSPs & !p53); + rate_up = @logic ? $u_BIRC5 : 0; + rate_down = @logic ? 0 : $d_BIRC5; +} + +Node BMP2 { + logic = (GLI & (TGFBR | FGFR3)); + rate_up = @logic ? $u_BMP2 : 0; + rate_down = @logic ? 0 : $d_BMP2; +} + +Node BRCA1 { + logic = ((E2F1 | ATM | ATR | (E2F1 & EP300) | (ATM & EP300) | (ATR & EP300)) & !CyclinD & !Bak); + rate_up = @logic ? $u_BRCA1 : 0; + rate_down = @logic ? 0 : $d_BRCA1; +} + +Node BRCA2 { + logic = (ATM & ATR & EP300); + rate_up = @logic ? $u_BRCA2 : 0; + rate_down = @logic ? 0 : $d_BRCA2; +} + +Node Carcinogen { + logic = (Carcinogen); + rate_up = @logic ? $u_Carcinogen : 0; + rate_down = @logic ? 0 : $d_Carcinogen; +} + +Node Caspase3 { + logic = (Caspase8 | Caspase9); + rate_up = @logic ? $u_Caspase3 : 0; + rate_down = @logic ? 0 : $d_Caspase3; +} + +Node Caspase8 { + logic = (!cFLAR & FADD); + rate_up = @logic ? $u_Caspase8 : 0; + rate_down = @logic ? 0 : $d_Caspase8; +} + +Node Caspase9 { + logic = ((!AKT & CytoC & APAF1 & PTCH1) | (!AKT & BIRC5 & CytoC & APAF1) | (!AKT & BIRC5 & CytoC & APAF1 & PTCH1)); + rate_up = @logic ? $u_Caspase9 : 0; + rate_down = @logic ? 0 : $d_Caspase9; +} + +Node CDH2 { + logic = (TWIST1); + rate_up = @logic ? $u_CDH2 : 0; + rate_down = @logic ? 0 : $d_CDH2; +} + +Node cFLAR { + logic = ((AKT | AR) & !JNK); + rate_up = @logic ? $u_cFLAR : 0; + rate_down = @logic ? 0 : $d_cFLAR; +} + +Node CHK1_2 { + logic = (ATM & ATR & BRCA1); + rate_up = @logic ? $u_CHK1_2 : 0; + rate_down = @logic ? 0 : $d_CHK1_2; +} + +Node COX4I2 { + logic = (HIF1); + rate_up = @logic ? $u_COX4I2 : 0; + rate_down = @logic ? 0 : $d_COX4I2; +} + +Node CyclinB { + logic = (E2F1 & !p21); + rate_up = @logic ? $u_CyclinB : 0; + rate_down = @logic ? 0 : $d_CyclinB; +} + +Node CyclinD { + logic = ((GLI | TCF | NF_kB) & MYC_MAX & !p21 & !FOXO & !p15 & !GSK3); + rate_up = @logic ? $u_CyclinD : 0; + rate_down = @logic ? 0 : $d_CyclinD; +} + +Node CytoC { + logic = ((Caspase8 | BAX | p53 | Bak) & !Bcl_XL & !BCL2 & !AKT); + rate_up = @logic ? $u_CytoC : 0; + rate_down = @logic ? 0 : $d_CytoC; +} + +Node DAXX { + logic = (!ATM & !ATR & !SPOP); + rate_up = @logic ? $u_DAXX : 0; + rate_down = @logic ? 0 : $d_DAXX; +} + +Node DNA_Damage { + logic = ((Carcinogen | (Carcinogen & ROS)) & !SPOP); + rate_up = @logic ? $u_DNA_Damage : 0; + rate_down = @logic ? 0 : $d_DNA_Damage; +} + +Node DNA_Repair { + logic = (ATM & ATR & (BRCA1 | BRCA2)); + rate_up = @logic ? $u_DNA_Repair : 0; + rate_down = @logic ? 0 : $d_DNA_Repair; +} + +Node Dsh { + logic = (WNT); + rate_up = @logic ? $u_Dsh : 0; + rate_down = @logic ? 0 : $d_Dsh; +} + +Node E2F1 { + logic = ((AR | (FOXA1 & AR) | (ATR & AR) | (ATM & AR)) & !RB1 & !MXI1); + rate_up = @logic ? $u_E2F1 : 0; + rate_down = @logic ? 0 : $d_E2F1; +} + +Node eEF2 { + logic = (!eEF2K); + rate_up = @logic ? $u_eEF2 : 0; + rate_down = @logic ? 0 : $d_eEF2; +} + +Node eEF2K { + logic = (p90RSK | p70S6kab); + rate_up = @logic ? $u_eEF2K : 0; + rate_down = @logic ? 0 : $d_eEF2K; +} + +Node EGF { + logic = (EGF); + rate_up = @logic ? $u_EGF : 0; + rate_down = @logic ? 0 : $d_EGF; +} + +Node EGFR { + logic = ((!TGFBR & !FRS2 & !EGFR & !PKC & (ERK | Androgen | EGF)) | (!TGFBR & !FRS2 & (Androgen | EGF))); + rate_up = @logic ? $u_EGFR : 0; + rate_down = @logic ? 0 : $d_EGFR; +} + +Node EMT { + logic = (CDH2 & !E_cadherin & !FOXA1); + rate_up = @logic ? $u_EMT : 0; + rate_down = @logic ? 0 : $d_EMT; +} + +Node EP300 { + logic = (AKT); + rate_up = @logic ? $u_EP300 : 0; + rate_down = @logic ? 0 : $d_EP300; +} + +Node ERG { + logic = (ERK); + rate_up = @logic ? $u_ERG : 0; + rate_down = @logic ? 0 : $d_ERG; +} + +Node ERK { + logic = (RAF | MEK1_2); + rate_up = @logic ? $u_ERK : 0; + rate_down = @logic ? 0 : $d_ERK; +} + +Node ETS1 { + logic = (!p53 & (RTK | ERK)); + rate_up = @logic ? $u_ETS1 : 0; + rate_down = @logic ? 0 : $d_ETS1; +} + +Node ETV1 { + logic = (ETS1 | MEK1_2); + rate_up = @logic ? $u_ETV1 : 0; + rate_down = @logic ? 0 : $d_ETV1; +} + +Node EZH2 { + logic = (AKT & E2F1 & (ERG | AR_ERG)); + rate_up = @logic ? $u_EZH2 : 0; + rate_down = @logic ? 0 : $d_EZH2; +} + +Node E_cadherin { + logic = ((beta_catenin | AR_ERG) & !Snail & !ERG & !NF_kB & !Slug); + rate_up = @logic ? $u_E_cadherin : 0; + rate_down = @logic ? 0 : $d_E_cadherin; +} + +Node FADD { + logic = (PTCH1 | TNFalpha) & !SHH & !MAP3K1_3; + rate_up = @logic ? $u_FADD : 0; + rate_down = @logic ? 0 : $d_FADD; +} + +Node FGF { + logic = (FGF); + rate_up = @logic ? $u_FGF : 0; + rate_down = @logic ? 0 : $d_FGF; +} + +Node FGFR3 { + logic = ((FGF | (FGF & RUNX2)) & !FRS2 & !PKC & !TGFBR); + rate_up = @logic ? $u_FGFR3 : 0; + rate_down = @logic ? 0 : $d_FGFR3; +} + +Node FOS { + logic = (ERK | ETS1 | AR); + rate_up = @logic ? $u_FOS : 0; + rate_down = @logic ? 0 : $d_FOS; +} + +Node FOXA1 { + logic = (FOXO); + rate_up = @logic ? $u_FOXA1 : 0; + rate_down = @logic ? 0 : $d_FOXA1; +} + +Node FOXO { + logic = (MAP3K1_3 & JNK & !AKT); + rate_up = @logic ? $u_FOXO : 0; + rate_down = @logic ? 0 : $d_FOXO; +} + +Node FRS2 { + logic = (!ERK & !EGFR & FGFR3 & !FRS2 & !TGFBR); + rate_up = @logic ? $u_FRS2 : 0; + rate_down = @logic ? 0 : $d_FRS2; +} + +Node fused_event { + logic = (fused_event); + rate_up = @logic ? $u_fused_event : 0; + rate_down = @logic ? 0 : $d_fused_event; +} + +Node GADD45 { + logic = (SMAD | p53); + rate_up = @logic ? $u_GADD45 : 0; + rate_down = @logic ? 0 : $d_GADD45; +} + +Node GLI { + logic = ((WNT | SMO) & !SPOP); + rate_up = @logic ? $u_GLI : 0; + rate_down = @logic ? 0 : $d_GLI; +} + +Node GLUT1 { + logic = ((HIF1 | MYC_MAX | AKT) & Nutrients); + rate_up = @logic ? $u_GLUT1 : 0; + rate_down = @logic ? 0 : $d_GLUT1; +} + +Node Glycolysis { + logic = (GLUT1 & Lactic_acid); + rate_up = @logic ? $u_Glycolysis : 0; + rate_down = @logic ? 0 : $d_Glycolysis; +} + +Node GSH { + logic = (MYC_MAX | NF_kB | p21); + rate_up = @logic ? $u_GSH : 0; + rate_down = @logic ? 0 : $d_GSH; +} + +Node GSK3 { + logic = (!AKT & !Dsh & MEK1_2 & !mTORC2 & !p90RSK); + rate_up = @logic ? $u_GSK3 : 0; + rate_down = @logic ? 0 : $d_GSK3; +} + +Node HIF1 { + logic = (!PHDs & !VHL & !p53 & !FOXO & (HSPs | mTORC1 | mTORC2 | Hypoxia | MYC_MAX)); + rate_up = @logic ? $u_HIF1 : 0; + rate_down = @logic ? 0 : $d_HIF1; +} + +Node HSPs { + logic = ((PKC | FOXA1 | Carcinogen) & !BRCA1 & !E2F1 & !AKT); + rate_up = @logic ? $u_HSPs : 0; + rate_down = @logic ? 0 : $d_HSPs; +} + +Node Hypermethylation { + logic = (!IDH1); + rate_up = @logic ? $u_Hypermethylation : 0; + rate_down = @logic ? 0 : $d_Hypermethylation; +} + +Node Hypoxia { + logic = (Hypoxia); + rate_up = @logic ? $u_Hypoxia : 0; + rate_down = @logic ? 0 : $d_Hypoxia; +} + +Node IDH1 { + logic = (SMAD | FOXA1 | mTORC2 | ((SMAD | mTORC2 | FOXA1) & MEK1_2)); + rate_up = @logic ? $u_IDH1 : 0; + rate_down = @logic ? 0 : $d_IDH1; +} + +Node IKK { + logic = ((mTORC2 | AKT) & (PKC | TAK1 | ETS1) & !PHDs & !p53); + rate_up = @logic ? $u_IKK : 0; + rate_down = @logic ? 0 : $d_IKK; +} + +Node Invasion { + logic = ((CDH2 & SMAD) | (CDH2 & SMAD & EZH2) | beta_catenin); + rate_up = @logic ? $u_Invasion : 0; + rate_down = @logic ? 0 : $d_Invasion; +} + +Node JNK { + logic = ((ATM | GADD45 | TAK1 | MAP3K1_3) & !ERK & !p38); + rate_up = @logic ? $u_JNK : 0; + rate_down = @logic ? 0 : $d_JNK; +} + +Node JUN { + logic = (AR | ETS1 | JNK); + rate_up = @logic ? $u_JUN : 0; + rate_down = @logic ? 0 : $d_JUN; +} + +Node Lactic_acid { + logic = (LDHA); + rate_up = @logic ? $u_Lactic_acid : 0; + rate_down = @logic ? 0 : $d_Lactic_acid; +} + +Node LDHA { + logic = (HIF1 | MYC_MAX | IDH1); + rate_up = @logic ? $u_LDHA : 0; + rate_down = @logic ? 0 : $d_LDHA; +} + +Node MAP3K1_3 { + logic = (RAS & !(FOS | JUN | JNK | p38)); + rate_up = @logic ? $u_MAP3K1_3 : 0; + rate_down = @logic ? 0 : $d_MAP3K1_3; +} + + +Node MDM2 { + logic = (((AKT | p53) & DAXX & !p14ARF & !ATR & !ATM)); + rate_up = @logic ? $u_MDM2 : 0; + rate_down = @logic ? 0 : $d_MDM2; +} + +Node MED12 { + logic = (!GLI); + rate_up = @logic ? $u_MED12 : 0; + rate_down = @logic ? 0 : $d_MED12; +} + +Node MEK1_2 { + logic = (MAP3K1_3 | RAF | PDK1); + rate_up = @logic ? $u_MEK1_2 : 0; + rate_down = @logic ? 0 : $d_MEK1_2; +} + +Node Metastasis { + logic = (Migration & AR_ERG); + rate_up = @logic ? $u_Metastasis : 0; + rate_down = @logic ? 0 : $d_Metastasis; +} + +Node Migration { + logic = (((AKT & ERK) | (AKT & ETV1)) & Invasion & EMT); + rate_up = @logic ? $u_Migration : 0; + rate_down = @logic ? 0 : $d_Migration; +} + +Node mTORC1 { + logic = ((AKT | (AKT & Rheb)) & !AMPK & !TSC1_2); + rate_up = @logic ? $u_mTORC1 : 0; + rate_down = @logic ? 0 : $d_mTORC1; +} + +Node mTORC2 { + logic = ((!AMPK & RAGS & Rheb) | (AKT & !AMPK & Rheb) | (AKT & !AMPK & RAGS) | (AKT & RAGS & Rheb & !AMPK)); + rate_up = @logic ? $u_mTORC2 : 0; + rate_down = @logic ? 0 : $d_mTORC2; +} + +Node MXI1 { + logic = (HIF1); + rate_up = @logic ? $u_MXI1 : 0; + rate_down = @logic ? 0 : $d_MXI1; +} + +Node MYC { + logic = ((GLI | ERK | TCF | JUN | FOS | AR_ERG | ERG | NF_kB | SHH) & (mTORC1 | E2F1 | p38) & !HIF1); + rate_up = @logic ? $u_MYC : 0; + rate_down = @logic ? 0 : $d_MYC; +} + +Node MYC_MAX { + logic = (MYC & !MXI1 & !TGFBR & !SMAD); + rate_up = @logic ? $u_MYC_MAX : 0; + rate_down = @logic ? 0 : $d_MYC_MAX; +} + +Node NCOA3 { + logic = (!SPOP & p38); + rate_up = @logic ? $u_NCOA3 : 0; + rate_down = @logic ? 0 : $d_NCOA3; +} + +Node NCOR1 { + logic = (!AKT); + rate_up = @logic ? $u_NCOR1 : 0; + rate_down = @logic ? 0 : $d_NCOR1; +} + +Node NCOR2 { + logic = (!AKT & !FOXO); + rate_up = @logic ? $u_NCOR2 : 0; + rate_down = @logic ? 0 : $d_NCOR2; +} + +Node NF1 { + logic = (!PKC); + rate_up = @logic ? $u_NF1 : 0; + rate_down = @logic ? 0 : $d_NF1; +} + +Node NF_kB { + logic = ((E_cadherin | IKK | DNA_Damage) & (NCOA3 | PIP3 | Snail)); + rate_up = @logic ? $u_NF_kB : 0; + rate_down = @logic ? 0 : $d_NF_kB; +} + +Node NKX3_1 { + logic = (PKC & AR & !ERG & !AR_ERG); + rate_up = @logic ? $u_NKX3_1 : 0; + rate_down = @logic ? 0 : $d_NKX3_1; +} + +Node Nutrients { + logic = (Nutrients); + rate_up = @logic ? $u_Nutrients : 0; + rate_down = @logic ? 0 : $d_Nutrients; +} + +Node p14ARF { + logic = (E2F1 & MYC_MAX & RAS); + rate_up = @logic ? $u_p14ARF : 0; + rate_down = @logic ? 0 : $d_p14ARF; +} + +Node p15 { + logic = (ZBTB17); + rate_up = @logic ? $u_p15 : 0; + rate_down = @logic ? 0 : $d_p15; +} + +Node p21 { + logic = ((p53 | SMAD | HIF1 | ZBTB17) & !TERT & !MYC_MAX & !MDM2 & !AKT & !ERK); + rate_up = @logic ? $u_p21 : 0; + rate_down = @logic ? 0 : $d_p21; +} + +Node p38 { + logic = (MAP3K1_3 & !ERK & !GADD45); + rate_up = @logic ? $u_p38 : 0; + rate_down = @logic ? 0 : $d_p38; +} + +Node p53 { + logic = ((Acidosis | CHK1_2 | p38 | HIF1) & !BCL2 & !MDM2 & !HSPs & !Snail); + rate_up = @logic ? $u_p53 : 0; + rate_down = @logic ? 0 : $d_p53; +} + +Node p70S6kab { + logic = (mTORC2 | PDK1); + rate_up = @logic ? $u_p70S6kab : 0; + rate_down = @logic ? 0 : $d_p70S6kab; +} + +Node p90RSK { + logic = (PDK1 | ERK); + rate_up = @logic ? $u_p90RSK : 0; + rate_down = @logic ? 0 : $d_p90RSK; +} + +Node PDK1 { + logic = (HIF1 | MYC_MAX | PIP3); + rate_up = @logic ? $u_PDK1 : 0; + rate_down = @logic ? 0 : $d_PDK1; +} + +Node PHDs { + logic = (!Hypoxia & ROS); + rate_up = @logic ? $u_PHDs : 0; + rate_down = @logic ? 0 : $d_PHDs; +} + +Node PI3K { + logic = (TGFBR | FRS2 | EGFR); + rate_up = @logic ? $u_PI3K : 0; + rate_down = @logic ? 0 : $d_PI3K; +} + +Node PIP3 { + logic = ((!p53 & PI3K & !PTEN) | (!p53 & PI3K)); + rate_up = @logic ? $u_PIP3 : 0; + rate_down = @logic ? 0 : $d_PIP3; +} + +Node PKC { + logic = (RTK & WNT); + rate_up = @logic ? $u_PKC : 0; + rate_down = @logic ? 0 : $d_PKC; +} + +Node Proliferation { + logic = (CyclinB | CyclinD); + rate_up = @logic ? $u_Proliferation : 0; + rate_down = @logic ? 0 : $d_Proliferation; +} + +Node PTCH1 { + logic = (!SHH & GLI); + rate_up = @logic ? $u_PTCH1 : 0; + rate_down = @logic ? 0 : $d_PTCH1; +} + +Node PTEN { + logic = ((!NF_kB & !Snail & FGFR3 & p53) | (!NF_kB & !Snail & p53)); + rate_up = @logic ? $u_PTEN : 0; + rate_down = @logic ? 0 : $d_PTEN; +} + +Node Quiescence { + logic = (!Apoptosis & !Proliferation); + rate_up = @logic ? $u_Quiescence : 0; + rate_down = @logic ? 0 : $d_Quiescence; +} + +Node RAF { + logic = (!EZH2 & RAS) | (EZH2); + rate_up = @logic ? $u_RAF : 0; + rate_down = @logic ? 0 : $d_RAF; +} + +Node RAGS { + logic = (!Hypoxia & Nutrients); + rate_up = @logic ? $u_RAGS : 0; + rate_down = @logic ? 0 : $d_RAGS; +} + +Node RAS { + logic = (EGFR | TGFBR | FRS2 | FGFR3); + rate_up = @logic ? $u_RAS : 0; + rate_down = @logic ? 0 : $d_RAS; +} + +Node RB1 { + logic = (!CyclinB & !CyclinD & CHK1_2 & !p53 & !AMPK); + rate_up = @logic ? $u_RB1 : 0; + rate_down = @logic ? 0 : $d_RB1; +} + +Node Rheb { + logic = (!TSC1_2); + rate_up = @logic ? $u_Rheb : 0; + rate_down = @logic ? 0 : $d_Rheb; +} + +Node ROS { + logic = ((COX4I2 | Hypoxia) & !GSH); + rate_up = @logic ? $u_ROS : 0; + rate_down = @logic ? 0 : $d_ROS; +} + +Node RTK { + logic = (EGFR | FGFR3); + rate_up = @logic ? $u_RTK : 0; + rate_down = @logic ? 0 : $d_RTK; +} + +Node RUNX2 { + logic = (!ETS1 & !FOXO & Slug) | (ETS1 & !FOXO); + rate_up = @logic ? $u_RUNX2 : 0; + rate_down = @logic ? 0 : $d_RUNX2; +} + +Node SHH { + logic = (!BMP2 & !ATR); + rate_up = @logic ? $u_SHH : 0; + rate_down = @logic ? 0 : $d_SHH; +} + +Node Slug { + logic = ((TCF | NF_kB) & !DAXX & !p53 & !MDM2); + rate_up = @logic ? $u_Slug : 0; + rate_down = @logic ? 0 : $d_Slug; +} + +Node SMAD { + logic = ((TNFalpha | TGFBR) & !AR); + rate_up = @logic ? $u_SMAD : 0; + rate_down = @logic ? 0 : $d_SMAD; +} + +Node SMO { + logic = (!PTCH1 & SHH); + rate_up = @logic ? $u_SMO : 0; + rate_down = @logic ? 0 : $d_SMO; +} + +Node Snail { + logic = ((GLI | NF_kB | SMAD | beta_catenin) & !GSK3 & !p53); + rate_up = @logic ? $u_Snail : 0; + rate_down = @logic ? 0 : $d_Snail; +} + +Node SPOP { + logic = (SPOP); + rate_up = @logic ? $u_SPOP : 0; + rate_down = @logic ? 0 : $d_SPOP; +} + +Node TAK1 { + logic = (TGFBR | TNFalpha); + rate_up = @logic ? $u_TAK1 : 0; + rate_down = @logic ? 0 : $d_TAK1; +} + +Node TCF { + logic = ((beta_catenin | AR_ERG | ERG) & !TAK1); + rate_up = @logic ? $u_TCF : 0; + rate_down = @logic ? 0 : $d_TCF; +} + +Node TERT { + logic = ((GLI | AKT | HIF1 | MYC_MAX | NF1 | NF_kB | MYC_MAX) & !ZBTB17 & !p53 & !eEF2 & !SMAD); + rate_up = @logic ? $u_TERT : 0; + rate_down = @logic ? 0 : $d_TERT; +} + +Node TGFb { + logic = (TGFb); + rate_up = @logic ? $u_TGFb : 0; + rate_down = @logic ? 0 : $d_TGFb; +} + +Node TGFBR { + logic = ((TGFb | (HIF1 & TGFb)) & !MED12); + rate_up = @logic ? $u_TGFBR : 0; + rate_down = @logic ? 0 : $d_TGFBR; +} + +Node TNFalpha { + logic = (TNFalpha); + rate_up = @logic ? $u_TNFalpha : 0; + rate_down = @logic ? 0 : $d_TNFalpha; +} + +Node TSC1_2 { + logic = ((AMPK | p53 | HIF1) & !AKT & !ERK & !RAF & !p90RSK); + rate_up = @logic ? $u_TSC1_2 : 0; + rate_down = @logic ? 0 : $d_TSC1_2; +} + +Node TWIST1 { + logic = (Snail | beta_catenin); + rate_up = @logic ? $u_TWIST1 : 0; + rate_down = @logic ? 0 : $d_TWIST1; +} + +Node VEGF { + logic = (HIF1 & MYC_MAX); + rate_up = @logic ? $u_VEGF : 0; + rate_down = @logic ? 0 : $d_VEGF; +} + +Node VHL { + logic = (!Hypoxia & !ROS); + rate_up = @logic ? $u_VHL : 0; + rate_down = @logic ? 0 : $d_VHL; +} + +Node WNT { + logic = ((((ERG | AR_ERG) & GLI) | ERG | AR_ERG) & !p53); + rate_up = @logic ? $u_WNT : 0; + rate_down = @logic ? 0 : $d_WNT; +} + +Node YWHAZ { + logic = (AR); + rate_up = @logic ? $u_YWHAZ : 0; + rate_down = @logic ? 0 : $d_YWHAZ; +} + +Node ZBTB17 { + logic = (!MYC_MAX & AR); + rate_up = @logic ? $u_ZBTB17 : 0; + rate_down = @logic ? 0 : $d_ZBTB17; +} + diff --git a/config/boolean_network/LNCaP_mut_RNA_00.cfg b/config/boolean_network/LNCaP_mut_RNA_00.cfg new file mode 100644 index 0000000..3936353 --- /dev/null +++ b/config/boolean_network/LNCaP_mut_RNA_00.cfg @@ -0,0 +1,575 @@ +$u_Acidosis = 1; +$d_Acidosis = 1; +$u_AKT=1.15285; +$d_AKT=0.86742; +$u_AMP_ATP=0.06407; +$d_AMP_ATP=15.60793; +$u_AMPK=0; +$d_AMPK=0.91263; +$u_Androgen = 1; +$d_Androgen = 1; +$u_Angiogenesis = 1; +$d_Angiogenesis = 1; +$u_Apoptosis = 1; +$d_Apoptosis = 1; +$u_AR=100.0; +$d_AR=0; +$u_AR_ERG = 1; +$d_AR_ERG = 1; +$u_ATM=0; +$d_ATM=5.81395; +$u_ATR=0.1955; +$d_ATR=5.11509; +$u_AXIN1=0.3574; +$d_AXIN1=2.79799; +$u_BAD=4.09692; +$d_BAD=0.24409; +$u_Bak=0.1955; +$d_Bak=5.11509; +$u_BAX=0; +$d_BAX=10.39933; +$u_BCL2=0.01; +$d_BCL2=100.0; +$u_Bcl_XL=0.28221; +$d_Bcl_XL=3.54346; +$u_beta_catenin=0.60475; +$d_beta_catenin=0; +$u_BIRC5=0.23826; +$d_BIRC5=4.1971; +$u_BMP2 = 1; +$d_BMP2 = 1; +$u_BRCA1=0.49177; +$d_BRCA1=2.03347; +$u_BRCA2=0; +$d_BRCA2=5.11509; +$u_Carcinogen = 1; +$d_Carcinogen = 1; +$u_Caspase3 = 1; +$d_Caspase3 = 1; +$u_Caspase8=0.07573; +$d_Caspase8=13.20481; +$u_Caspase9=0.1955; +$d_Caspase9=5.11509; +$u_CDH2=0.01; +$d_CDH2=100.0; +$u_cFLAR=1.0; +$d_cFLAR=1.0; +$u_CHK1_2=0; +$d_CHK1_2=0.74346; +$u_COX4I2 = 1; +$d_COX4I2 = 1; +$u_CyclinB=0.08593; +$d_CyclinB=11.63738; +$u_CyclinD=0.72702; +$d_CyclinD=1.37548; +$u_CytoC=0.47463; +$d_CytoC=2.1069; +$u_APAF1=0; +$d_APAF1=65.74622; +$u_DAXX=0.73662; +$d_DAXX=1.35755; +$u_DNA_Damage = 1; +$d_DNA_Damage = 1; +$u_DNA_Repair = 1; +$d_DNA_Repair = 1; +$u_Dsh=0; +$d_Dsh=0.40456; +$u_E2F1=0.43193; +$d_E2F1=2.31519; +$u_E_cadherin=100.0; +$d_E_cadherin=0.01; +$u_eEF2=22.1308; +$d_eEF2=0.04519; +$u_eEF2K=5.11518; +$d_eEF2K=0.1955; +$u_EMT = 1; +$d_EMT = 1; +$u_EP300=1.59488; +$d_EP300=0.62701; +$u_ERG=0.01; +$d_ERG=100.0; +$u_ERK=1.46443; +$d_ERK=0.68286; +$u_ETS1=0.0303; +$d_ETS1=33.0033; +$u_ETV1=99.99718; +$d_ETV1=0.01; +$u_EZH2=0.25411; +$d_EZH2=3.9353; +$u_FADD=0.13852; +$d_FADD=7.21917; +$u_FOS=0.01086; +$d_FOS=92.08103; +$u_JUN=0.3012; +$d_JUN=3.32005; +$u_FOXA1=99.99995; +$d_FOXA1=0.01; +$u_FOXO=0.70855; +$d_FOXO=1.41133; +$u_EGF=8.51034; +$d_EGF=0.1175; +$u_EGFR=87.28647; +$d_EGFR=0.01146; +$u_FGF=0; +$d_FGF=100.0; +$u_FGFR3=0.01043; +$d_FGFR3=95.87728; +$u_FRS2=1.0; +$d_FRS2=1.0; +$u_GADD45=0.57004; +$d_GADD45=1.75426; +$u_GLI=0.01; +$d_GLI=100.0; +$u_GLUT1=0.38474; +$d_GLUT1=2.59916; +$u_Glycolysis = 1; +$d_Glycolysis = 1; +$u_GSH=34.85754; +$d_GSH=0.02869; +$u_GSK3=0.36889; +$d_GSK3=2.71084; +$u_HIF1=0.50171; +$d_HIF1=1.99318; +$u_HSPs=1.04632; +$d_HSPs=0.95573; +$u_Hypermethylation = 1; +$d_Hypermethylation = 1; +$u_Hypoxia = 1; +$d_Hypoxia = 1; +$u_IDH1=24.23845; +$d_IDH1=0.04126; +$u_Invasion = 1; +$d_Invasion = 1; +$u_IKK=0.47494; +$d_IKK=2.10553; +$u_JNK=0.70598; +$d_JNK=1.41647; +$u_Lactic_acid=6.08374; +$d_Lactic_acid=0.16437; +$u_LDHA=6.08374; +$d_LDHA=0.16437; +$u_MAP3K1_3=0.22457; +$d_MAP3K1_3=4.45295; +$u_MDM2=3.70371; +$d_MDM2=0.27; +$u_MED12=0.49995; +$d_MED12=2.0002; +$u_MEK1_2=2.74199; +$d_MEK1_2=0; +$u_Metastasis = 1; +$d_Metastasis = 1; +$u_Migration = 1; +$d_Migration = 1; +$u_mTORC1=1.03682; +$d_mTORC1=0.96449; +$u_mTORC2=1.73313; +$d_mTORC2=0.57699; +$u_MXI1=16.71485; +$d_MXI1=0.05983; +$u_MYC=4.81493; +$d_MYC=0.20769; +$u_MYC_MAX=2.19429; +$d_MYC_MAX=0.45573; +$u_NCOA3=0; +$d_NCOA3=13.75138; +$u_NCOR1=5.11518; +$d_NCOR1=0.1955; +$u_NCOR2=4.09692; +$d_NCOR2=0.24409; +$u_NF1=0; +$d_NF1=1.0; +$u_NF_kB=0.23915; +$d_NF_kB=4.18148; +$u_NKX3_1=100.0; +$d_NKX3_1=0.01; +$u_Nutrients = 1; +$d_Nutrients = 1; +$u_p14ARF=0.01565; +$d_p14ARF=63.89776; +$u_p15=0.01001; +$d_p15=99.9001; +$u_p21=10.60511; +$d_p21=0.09429; +$u_p38=0.04421; +$d_p38=22.61932; +$u_p53=4.77257; +$d_p53=0.20953; +$u_p70S6kab=2.97053; +$d_p70S6kab=0.33664; +$u_p90RSK=1.92967; +$d_p90RSK=0.51822; +$u_PDK1=26.84952; +$d_PDK1=0.03724; +$u_PHDs=0.37349; +$d_PHDs=2.67745; +$u_PI3K=0.51668; +$d_PI3K=1.93543; +$u_PIP3=0.01521; +$d_PIP3=65.74622; +$u_PKC=0; +$d_PKC=2.5697; +$u_Proliferation = 1; +$d_Proliferation = 1; +$u_PTCH1=0.33025; +$d_PTCH1=3.02801; +$u_PTEN=0; +$d_PTEN=2.07753; +$u_Quiescence = 1; +$d_Quiescence = 1; +$u_RAF=1.55217; +$d_RAF=0.64426; +$u_RAGS=0.01; +$d_RAGS=100.0; +$u_RAS=0.4606; +$d_RAS=2.17108; +$u_RB1=0.12234; +$d_RB1=8.17394; +$u_Rheb=0.1955; +$d_Rheb=5.11509; +$u_ROS = 1; +$d_ROS = 1; +$u_RTK=0.08743; +$d_RTK=11.43772; +$u_RUNX2=0.01369; +$d_RUNX2=73.04602; +$u_SHH=0.01; +$d_SHH=100.0; +$u_Slug=0.01; +$d_Slug=100.0; +$u_SMAD=0.31951; +$d_SMAD=3.12979; +$u_SMO=98.34156; +$d_SMO=0.01017; +$u_Snail=0.07454; +$d_Snail=13.41562; +$u_SPOP=3.75839; +$d_SPOP=0.26607; +$u_TAK1=0.01521; +$d_TAK1=65.74622; +$u_TCF=0.01552; +$d_TCF=64.43299; +$u_TERT=0.24141; +$d_TERT=4.14233; +$u_TGFb=0.01143; +$d_TGFb=87.48906; +$u_TGFBR=0.035; +$d_TGFBR=28.57143; +$u_fused_event = 1; +$d_fused_event = 1; +$u_TNFalpha=0.13372; +$d_TNFalpha=7.47831; +$u_TSC1_2=9.35066; +$d_TSC1_2=0.10694; +$u_TWIST1=0.02243; +$d_TWIST1=44.58315; +$u_VEGF=0.25808; +$d_VEGF=3.87477; +$u_VHL=7.12902; +$d_VHL=0.14027; +$u_WNT=0; +$d_WNT=27.5786; +$u_YWHAZ=0.04405; +$d_YWHAZ=22.70148; +$u_ZBTB17=0.0441; +$d_ZBTB17=22.67574; + +discrete_time = 0; +use_physrandgen = FALSE; +seed_pseudorandom = 100; +sample_count = 1; +max_time = 1; //10 min: 1 in Maboss = 10 in Physicell +time_tick = 0.01; +thread_count = 1; +statdist_traj_count = 100; +statdist_cluster_threshold = 0.9; + + +Acidosis.is_internal = TRUE; +AKT.is_internal = TRUE; +AMPK.is_internal = TRUE; +AMP_ATP.is_internal = TRUE; +Androgen.is_internal = TRUE; +Angiogenesis.is_internal = FALSE; +APAF1.is_internal = TRUE; +Apoptosis.is_internal = FALSE; +AR.is_internal = TRUE; +AR_ERG.is_internal = TRUE; +ATM.is_internal = TRUE; +ATR.is_internal = TRUE; +AXIN1.is_internal = TRUE; +BAD.is_internal = TRUE; +Bak.is_internal = TRUE; +BAX.is_internal = TRUE; +BCL2.is_internal = TRUE; +Bcl_XL.is_internal = TRUE; +beta_catenin.is_internal = TRUE; +BIRC5.is_internal = TRUE; +BMP2.is_internal = TRUE; +BRCA1.is_internal = TRUE; +BRCA2.is_internal = TRUE; +Carcinogen.is_internal = TRUE; +Caspase3.is_internal = TRUE; +Caspase8.is_internal = TRUE; +Caspase9.is_internal = TRUE; +CDH2.is_internal = TRUE; +cFLAR.is_internal = TRUE; +CHK1_2.is_internal = TRUE; +COX4I2.is_internal = TRUE; +CyclinB.is_internal = TRUE; +CyclinD.is_internal = TRUE; +CytoC.is_internal = TRUE; +DAXX.is_internal = TRUE; +DNA_Damage.is_internal = TRUE; +DNA_Repair.is_internal = FALSE; +Dsh.is_internal = TRUE; +E2F1.is_internal = TRUE; +eEF2.is_internal = TRUE; +eEF2K.is_internal = TRUE; +EGF.is_internal = TRUE; +EGFR.is_internal = TRUE; +EMT.is_internal = TRUE; +EP300.is_internal = TRUE; +ERG.is_internal = TRUE; +ERK.is_internal = TRUE; +ETS1.is_internal = TRUE; +ETV1.is_internal = TRUE; +EZH2.is_internal = TRUE; +E_cadherin.is_internal = TRUE; +FADD.is_internal = TRUE; +FGF.is_internal = TRUE; +FGFR3.is_internal = TRUE; +FOS.is_internal = TRUE; +FOXA1.is_internal = TRUE; +FOXO.is_internal = TRUE; +FRS2.is_internal = TRUE; +fused_event.is_internal = TRUE; +GADD45.is_internal = TRUE; +GLI.is_internal = TRUE; +GLUT1.is_internal = TRUE; +Glycolysis.is_internal = FALSE; +GSH.is_internal = TRUE; +GSK3.is_internal = TRUE; +HIF1.is_internal = TRUE; +HSPs.is_internal = TRUE; +Hypermethylation.is_internal = TRUE; +Hypoxia.is_internal = TRUE; +IDH1.is_internal = TRUE; +IKK.is_internal = TRUE; +Invasion.is_internal = FALSE; +JNK.is_internal = TRUE; +JUN.is_internal = TRUE; +Lactic_acid.is_internal = TRUE; +LDHA.is_internal = TRUE; +MAP3K1_3.is_internal = TRUE; +MDM2.is_internal = TRUE; +MED12.is_internal = TRUE; +MEK1_2.is_internal = TRUE; +Metastasis.is_internal = FALSE; +Migration.is_internal = FALSE; +mTORC1.is_internal = TRUE; +mTORC2.is_internal = TRUE; +MXI1.is_internal = TRUE; +MYC.is_internal = TRUE; +MYC_MAX.is_internal = TRUE; +NCOA3.is_internal = TRUE; +NCOR1.is_internal = TRUE; +NCOR2.is_internal = TRUE; +NF1.is_internal = TRUE; +NF_kB.is_internal = TRUE; +NKX3_1.is_internal = TRUE; +Nutrients.is_internal = TRUE; +p14ARF.is_internal = TRUE; +p15.is_internal = TRUE; +p21.is_internal = TRUE; +p38.is_internal = TRUE; +p53.is_internal = TRUE; +p70S6kab.is_internal = TRUE; +p90RSK.is_internal = TRUE; +PDK1.is_internal = TRUE; +PHDs.is_internal = TRUE; +PI3K.is_internal = TRUE; +PIP3.is_internal = TRUE; +PKC.is_internal = TRUE; +Proliferation.is_internal = FALSE; +PTCH1.is_internal = TRUE; +PTEN.is_internal = TRUE; +Quiescence.is_internal = FALSE; +RAF.is_internal = TRUE; +RAGS.is_internal = TRUE; +RAS.is_internal = TRUE; +RB1.is_internal = TRUE; +Rheb.is_internal = TRUE; +ROS.is_internal = TRUE; +RTK.is_internal = TRUE; +RUNX2.is_internal = TRUE; +SHH.is_internal = TRUE; +Slug.is_internal = TRUE; +SMAD.is_internal = TRUE; +SMO.is_internal = TRUE; +Snail.is_internal = TRUE; +SPOP.is_internal = TRUE; +TAK1.is_internal = TRUE; +TCF.is_internal = TRUE; +TERT.is_internal = TRUE; +TGFb.is_internal = TRUE; +TGFBR.is_internal = TRUE; +TNFalpha.is_internal = TRUE; +TSC1_2.is_internal = TRUE; +TWIST1.is_internal = TRUE; +VEGF.is_internal = TRUE; +VHL.is_internal = TRUE; +WNT.is_internal = TRUE; +YWHAZ.is_internal = TRUE; +ZBTB17.is_internal = TRUE; + +//LNCAP initial conditions: +[Androgen].istate = 0 [1], 1 [0]; +[Acidosis].istate = 0 [1], 1 [0]; +[Carcinogen].istate = 0 [1], 1 [0]; +[Hypoxia].istate = 0 [1], 1 [0]; +[TGFb].istate = 0 [1], 1 [0]; +[TNFalpha].istate = 0 [1], 1 [0]; +[HSPs].istate = 0 [1], 1 [0]; + +//Pro-proliferative conditions: +[EGF].istate = 1 [1], 0 [0]; +[FGF].istate = 1 [1], 0 [0]; +[Nutrients].istate = 1 [1] , 0 [0]; +[Caspase8].istate = 0[1], 1[0]; +[Caspase9].istate = 0[1], 1[0]; +[Caspase3].istate = 0[1], 1[0]; +[FADD].istate = 0[1], 1[0]; +[CytoC].istate = 0[1], 1[0]; +[APAF1].istate = 0[1], 1[0]; +[Bak].istate = 0[1], 1[0]; + + +//orphan nodes initial conditions: +[fused_event].istate= 1 [0] , 0 [1]; +[AR_ERG].istate= 1 [0] , 0 [1]; + +//outputs: +[Angiogenesis].istate = 0 [1], 1 [0]; +[Apoptosis].istate = 0 [1], 1 [0]; +[DNA_Repair].istate = 0 [1], 1 [0]; +[Glycolysis].istate = 0 [1], 1 [0]; +[Hypermethylation].istate = 0 [1], 1 [0]; +[Invasion].istate = 0 [1], 1 [0]; +[Metastasis].istate = 0 [1], 1 [0]; +[Migration].istate = 0 [1], 1 [0]; +[Proliferation].istate = 0 [1], 1 [0]; +[Quiescence].istate = 0 [1], 1 [0]; + +[AKT].istate = 0.51544[1], 0.48456[0]; +[AMP_ATP].istate = 0.20167[1], 0.79833[0]; +[ATR].istate = 0.32278[1], 0.6772199999999999[0]; +[AXIN1].istate = 0.38829[1], 0.61171[0]; +[BAD].istate = 0.65311[1], 0.34689000000000003[0]; +//[Bak].istate = 0.32278[1], 0.6772199999999999[0]; +[Bcl_XL].istate = 0.36264[1], 0.6373599999999999[0]; +[BCL2].istate = 1e-05[1], 0.99999[0]; +[BIRC5].istate = 0.34426[1], 0.65574[0]; +[BRCA1].istate = 0.42294[1], 0.57706[0]; +//[Caspase8].istate = 0.21981[1], 0.7801899999999999[0]; +//[Caspase9].istate = 0.32278[1], 0.6772199999999999[0]; +[CDH2].istate = 0.0[1], 1.0[0]; +[cFLAR].istate = 0.5[1], 0.5[0]; +[CyclinB].istate = 0.23353[1], 0.76647[0]; +[CyclinD].istate = 0.46539[1], 0.53461[0]; +//[CytoC].istate = 0.41909[1], 0.58091[0]; +[DAXX].istate = 0.46681[1], 0.53319[0]; +[E_cadherin].istate = 1.0[1], 0.0[0]; +[E2F1].istate = 0.40885[1], 0.5911500000000001[0]; +[eEF2].istate = 0.83625[1], 0.16374999999999995[0]; +[eEF2K].istate = 0.67722[1], 0.32277999999999996[0]; +[EGFR].istate = 0.98524[1], 0.014759999999999995[0]; +[EP300].istate = 0.55068[1], 0.44932000000000005[0]; +[ERG].istate = 0.0[1], 1.0[0]; +[ERK].istate = 0.54142[1], 0.45858[0]; +[ETS1].istate = 0.12035[1], 0.87965[0]; +[ETV1].istate = 1.0[1], 0.0[0]; +[EZH2].istate = 0.35125[1], 0.6487499999999999[0]; +//[FADD].istate = 0.28538[1], 0.71462[0]; +[FGFR3].istate = 0.00457[1], 0.99543[0]; +[FOS].istate = 0.00892[1], 0.99108[0]; +[FOXA1].istate = 1.0[1], 0.0[0]; +[FOXO].istate = 0.46259[1], 0.5374099999999999[0]; +[FRS2].istate = 0.5[1], 0.5[0]; +[GADD45].istate = 0.43898[1], 0.5610200000000001[0]; +[GLI].istate = 0.0[1], 1.0[0]; +[GLUT1].istate = 0.39629[1], 0.60371[0]; +[GSH].istate = 0.88557[1], 0.11443000000000003[0]; +[GSK3].istate = 0.39173[1], 0.60827[0]; +[HIF1].istate = 0.42511[1], 0.57489[0]; +//[HSPs].istate = 0.50492[1], 0.49507999999999996[0]; +[IDH1].istate = 0.84613[1], 0.15386999999999995[0]; +[IKK].istate = 0.41916[1], 0.58084[0]; +[JNK].istate = 0.4622[1], 0.5378000000000001[0]; +[JUN].istate = 0.36971[1], 0.63029[0]; +[Lactic_acid].istate = 0.69604[1], 0.30396[0]; +[LDHA].istate = 0.69604[1], 0.30396[0]; +[MAP3K1_3].istate = 0.33784[1], 0.6621600000000001[0]; +[MDM2].istate = 0.64216[1], 0.35784000000000005[0]; +[MED12].istate = 0.42473[1], 0.57527[0]; +[ZBTB17].istate = 0.1611[1], 0.8389[0]; +[mTORC1].istate = 0.50393[1], 0.49607[0]; +[mTORC2].istate = 0.55971[1], 0.44028999999999996[0]; +[MXI1].istate = 0.80578[1], 0.19421999999999995[0]; +[MYC].istate = 0.67065[1], 0.32935000000000003[0]; +[MYC_MAX].istate = 0.58532[1], 0.41468000000000005[0]; +[NCOR1].istate = 0.67722[1], 0.32277999999999996[0]; +[NCOR2].istate = 0.65311[1], 0.34689000000000003[0]; +[NF_kB].istate = 0.34467[1], 0.65533[0]; +[NKX3_1].istate = 1.0[1], 0.0[0]; +[p14ARF].istate = 0.04863[1], 0.95137[0]; +[p15].istate = 8e-05[1], 0.99992[0]; +[p21].istate = 0.75638[1], 0.24361999999999995[0]; +[p38].istate = 0.16139[1], 0.83861[0]; +[p53].istate = 0.66969[1], 0.33031[0]; +[p70S6kab].istate = 0.61821[1], 0.38178999999999996[0]; +[p90RSK].istate = 0.57137[1], 0.42862999999999996[0]; +[PDK1].istate = 0.85723[1], 0.14276999999999995[0]; +[PHDs].istate = 0.39307[1], 0.60693[0]; +[PI3K].istate = 0.4283[1], 0.5717[0]; +[PIP3].istate = 0.04553[1], 0.95447[0]; +[PTCH1].istate = 0.37971[1], 0.62029[0]; +[RAF].istate = 0.54773[1], 0.45226999999999995[0]; +[RAGS].istate = 0[1], 1[0]; +[RAS].istate = 0.41583[1], 0.5841700000000001[0]; +[RB1].istate = 0.27189[1], 0.72811[0]; +[Rheb].istate = 0.32278[1], 0.6772199999999999[0]; +[RTK].istate = 0.23541[1], 0.76459[0]; +[RUNX2].istate = 0.03411[1], 0.96589[0]; +[SHH].istate = 0.0[1], 1.0[0]; +[Slug].istate = 2e-05[1], 0.99998[0]; +[SMAD].istate = 0.37612[1], 0.62388[0]; +[SMO].istate = 0.99818[1], 0.0018200000000000438[0]; +[Snail].istate = 0.2181[1], 0.7819[0]; +[SPOP].istate = 0.64375[1], 0.35624999999999996[0]; +[TAK1].istate = 0.04553[1], 0.95447[0]; +[TCF].istate = 0.04774[1], 0.95226[0]; +[TERT].istate = 0.34569[1], 0.65431[0]; +//[TGFb].istate = 0.01451[1], 0.98549[0]; +[TGFBR].istate = 0.13603[1], 0.86397[0]; +//[TNFalpha].istate = 0.28155[1], 0.71845[0]; +[TSC1_2].istate = 0.74271[1], 0.25729[0]; +[TWIST1].istate = 0.08772[1], 0.91228[0]; +[VEGF].istate = 0.35294[1], 0.64706[0]; +[VHL].istate = 0.71326[1], 0.28674[0]; +[YWHAZ].istate = 0.16098[1], 0.83902[0]; +[AMPK].istate=0[1], 1[0]; +//[APAF1].istate=0[1], 1[0]; +//[AR].istate=0[1], 1[0]; +[ATM].istate=0[1], 1[0]; +[BAX].istate=0[1], 1[0]; +[beta_catenin].istate=1[1], 0[0]; +[BRCA2].istate=0[1], 1[0]; +[CHK1_2].istate=0[1], 1[0]; +[Dsh].istate=0[1], 1[0]; +//[FGF].istate=0[1], 1[0]; +[MEK1_2].istate=1[1], 0[0]; +[NCOA3].istate=0[1], 1[0]; +[NF1].istate=0[1], 1[0]; +[PKC].istate=0[1], 1[0]; +[PTEN].istate=0[1], 1[0]; +[WNT].istate=0[1], 1[0]; diff --git a/config/boolean_network/LNCaP_mut_RNA_00_all_nodes.bnd b/config/boolean_network/LNCaP_mut_RNA_00_all_nodes.bnd new file mode 100644 index 0000000..f9d9bc3 --- /dev/null +++ b/config/boolean_network/LNCaP_mut_RNA_00_all_nodes.bnd @@ -0,0 +1,978 @@ +Node PI3K +{ + logic = ((TGFBR | FRS2 | EGFR)) AND NOT anti_PI3K; + rate_up = @logic ? $u_PI3K : 0; + rate_down = @logic ? 0 : $d_PI3K; +} + + +Node HSPs +{ + logic = (((PKC | FOXA1 | Carcinogen) & !BRCA1 & !E2F1 & !AKT)) AND NOT anti_HSPs; + rate_up = @logic ? $u_HSPs : 0; + rate_down = @logic ? 0 : $d_HSPs; +} + + +Node Acidosis +{ + logic = (Acidosis); + rate_up = @logic ? $u_Acidosis : 0; + rate_down = @logic ? 0 : $d_Acidosis; +} + +Node AKT +{ + logic = ((HSPs | (PDK1 & PIP3) | PIP3 | (SHH & PIP3)) & !PTCH1); + rate_up = @logic ? $u_AKT : 0; + rate_down = @logic ? 0 : $d_AKT; +} + +Node AMPK +{ + logic = (ATR | HIF1 | AMP_ATP | ATM) & !FGFR3; + rate_up = @logic ? $u_AMPK : 0; + rate_down = @logic ? 0 : $d_AMPK; +} + +Node AMP_ATP +{ + logic = (!Nutrients); + rate_up = @logic ? $u_AMP_ATP : 0; + rate_down = @logic ? 0 : $d_AMP_ATP; +} + +Node Androgen +{ + logic = (Androgen); + rate_up = @logic ? $u_Androgen : 0; + rate_down = @logic ? 0 : $d_Androgen; +} + +Node Angiogenesis +{ + logic = (VEGF & (NF_kB | SMAD)); + rate_up = @logic ? $u_Angiogenesis : 0; + rate_down = @logic ? 0 : $d_Angiogenesis; +} + +Node APAF1 +{ + logic = ((Caspase8 | BAX | p53 | Bak | HSPs) & !Bcl_XL & !BCL2 & !AKT); + rate_up = @logic ? $u_APAF1 : 0; + rate_down = @logic ? 0 : $d_APAF1; +} + +Node Apoptosis +{ + logic = (Caspase9 | Caspase8 | Caspase3); + rate_up = @logic ? $u_Apoptosis : 0; + rate_down = @logic ? 0 : $d_Apoptosis; +} + +Node AR +{ + logic = ((GLI | EP300 | HSPs | NKX3_1 | EZH2 | NCOA3 | PKC | SMAD | Androgen) & !PTEN & !NCOR1 & !NCOR2 & !MDM2); + rate_up = @logic ? $u_AR : 0; + rate_down = @logic ? 0 : $d_AR; +} + +Node AR_ERG +{ + logic = ((AR & fused_event) | (AR & fused_event & !NKX3_1)); + rate_up = @logic ? $u_AR_ERG : 0; + rate_down = @logic ? 0 : $d_AR_ERG; +} + +Node ATM +{ + logic = (DNA_Damage); + rate_up = @logic ? $u_ATM : 0; + rate_down = @logic ? 0 : $d_ATM; +} + +Node ATR +{ + logic = (DNA_Damage); + rate_up = @logic ? $u_ATR : 0; + rate_down = @logic ? 0 : $d_ATR; +} + +Node AXIN1 +{ + logic = (GSK3); + rate_up = @logic ? $u_AXIN1 : 0; + rate_down = @logic ? 0 : $d_AXIN1; +} + +Node BAD +{ + logic = (!AKT & !HIF1 & !p90RSK & !RAF & !YWHAZ); + rate_up = @logic ? $u_BAD : 0; + rate_down = @logic ? 0 : $d_BAD; +} + +Node Bak +{ + logic = (Caspase8); + rate_up = @logic ? $u_Bak : 0; + rate_down = @logic ? 0 : $d_Bak; +} + +Node BAX +{ + logic = (!BCL2 & !HIF1 & !YWHAZ & (JNK | HIF1 | p53) & !ETS1); + rate_up = @logic ? $u_BAX : 0; + rate_down = @logic ? 0 : $d_BAX; +} + +Node BCL2 +{ + logic = ((HSPs | NF_kB | RUNX2) & !BAX & !p53 & !DAXX & !BAD); + rate_up = @logic ? $u_BCL2 : 0; + rate_down = @logic ? 0 : $d_BCL2; +} + +Node Bcl_XL +{ + logic = (AR & !BAD & !p53); + rate_up = @logic ? $u_Bcl_XL : 0; + rate_down = @logic ? 0 : $d_Bcl_XL; +} + +Node beta_catenin +{ + logic = (!GSK3 & !p53 & !AXIN1 & (EZH2 | YWHAZ)); + rate_up = @logic ? $u_beta_catenin : 0; + rate_down = @logic ? 0 : $d_beta_catenin; +} + +Node BIRC5 +{ + logic = (HSPs & !p53); + rate_up = @logic ? $u_BIRC5 : 0; + rate_down = @logic ? 0 : $d_BIRC5; +} + +Node BMP2 +{ + logic = (GLI & (TGFBR | FGFR3)); + rate_up = @logic ? $u_BMP2 : 0; + rate_down = @logic ? 0 : $d_BMP2; +} + +Node BRCA1 +{ + logic = ((E2F1 | ATM | ATR | (E2F1 & EP300) | (ATM & EP300) | (ATR & EP300)) & !CyclinD & !Bak); + rate_up = @logic ? $u_BRCA1 : 0; + rate_down = @logic ? 0 : $d_BRCA1; +} + +Node BRCA2 +{ + logic = (ATM & ATR & EP300); + rate_up = @logic ? $u_BRCA2 : 0; + rate_down = @logic ? 0 : $d_BRCA2; +} + +Node Carcinogen +{ + logic = (Carcinogen); + rate_up = @logic ? $u_Carcinogen : 0; + rate_down = @logic ? 0 : $d_Carcinogen; +} + +Node Caspase3 +{ + logic = (Caspase8 | Caspase9); + rate_up = @logic ? $u_Caspase3 : 0; + rate_down = @logic ? 0 : $d_Caspase3; +} + +Node Caspase8 +{ + logic = (!cFLAR & FADD); + rate_up = @logic ? $u_Caspase8 : 0; + rate_down = @logic ? 0 : $d_Caspase8; +} + +Node Caspase9 +{ + logic = ((!AKT & CytoC & APAF1 & PTCH1) | (!AKT & BIRC5 & CytoC & APAF1) | (!AKT & BIRC5 & CytoC & APAF1 & PTCH1)); + rate_up = @logic ? $u_Caspase9 : 0; + rate_down = @logic ? 0 : $d_Caspase9; +} + +Node CDH2 +{ + logic = (TWIST1); + rate_up = @logic ? $u_CDH2 : 0; + rate_down = @logic ? 0 : $d_CDH2; +} + +Node cFLAR +{ + logic = ((AKT | AR) & !JNK); + rate_up = @logic ? $u_cFLAR : 0; + rate_down = @logic ? 0 : $d_cFLAR; +} + +Node CHK1_2 +{ + logic = (ATM & ATR & BRCA1); + rate_up = @logic ? $u_CHK1_2 : 0; + rate_down = @logic ? 0 : $d_CHK1_2; +} + +Node COX4I2 +{ + logic = (HIF1); + rate_up = @logic ? $u_COX4I2 : 0; + rate_down = @logic ? 0 : $d_COX4I2; +} + +Node CyclinB +{ + logic = (E2F1 & !p21); + rate_up = @logic ? $u_CyclinB : 0; + rate_down = @logic ? 0 : $d_CyclinB; +} + +Node CyclinD +{ + logic = ((GLI | TCF | NF_kB) & MYC_MAX & !p21 & !FOXO & !p15 & !GSK3); + rate_up = @logic ? $u_CyclinD : 0; + rate_down = @logic ? 0 : $d_CyclinD; +} + +Node CytoC +{ + logic = ((Caspase8 | BAX | p53 | Bak) & !Bcl_XL & !BCL2 & !AKT); + rate_up = @logic ? $u_CytoC : 0; + rate_down = @logic ? 0 : $d_CytoC; +} + +Node DAXX +{ + logic = (!ATM & !ATR & !SPOP); + rate_up = @logic ? $u_DAXX : 0; + rate_down = @logic ? 0 : $d_DAXX; +} + +Node DNA_Damage +{ + logic = ((Carcinogen | (Carcinogen & ROS)) & !SPOP); + rate_up = @logic ? $u_DNA_Damage : 0; + rate_down = @logic ? 0 : $d_DNA_Damage; +} + +Node DNA_Repair +{ + logic = (ATM & ATR & (BRCA1 | BRCA2)); + rate_up = @logic ? $u_DNA_Repair : 0; + rate_down = @logic ? 0 : $d_DNA_Repair; +} + +Node Dsh +{ + logic = (WNT); + rate_up = @logic ? $u_Dsh : 0; + rate_down = @logic ? 0 : $d_Dsh; +} + +Node E2F1 +{ + logic = ((AR | (FOXA1 & AR) | (ATR & AR) | (ATM & AR)) & !RB1 & !MXI1); + rate_up = @logic ? $u_E2F1 : 0; + rate_down = @logic ? 0 : $d_E2F1; +} + +Node eEF2 +{ + logic = (!eEF2K); + rate_up = @logic ? $u_eEF2 : 0; + rate_down = @logic ? 0 : $d_eEF2; +} + +Node eEF2K +{ + logic = (p90RSK | p70S6kab); + rate_up = @logic ? $u_eEF2K : 0; + rate_down = @logic ? 0 : $d_eEF2K; +} + +Node EGF +{ + logic = (EGF); + rate_up = @logic ? $u_EGF : 0; + rate_down = @logic ? 0 : $d_EGF; +} + +Node EGFR +{ + logic = ((!TGFBR & !FRS2 & !EGFR & !PKC & (ERK | Androgen | EGF)) | (!TGFBR & !FRS2 & (Androgen | EGF))); + rate_up = @logic ? $u_EGFR : 0; + rate_down = @logic ? 0 : $d_EGFR; +} + +Node EMT +{ + logic = (CDH2 & !E_cadherin & !FOXA1); + rate_up = @logic ? $u_EMT : 0; + rate_down = @logic ? 0 : $d_EMT; +} + +Node EP300 +{ + logic = (AKT); + rate_up = @logic ? $u_EP300 : 0; + rate_down = @logic ? 0 : $d_EP300; +} + +Node ERG +{ + logic = (ERK); + rate_up = @logic ? $u_ERG : 0; + rate_down = @logic ? 0 : $d_ERG; +} + +Node ERK +{ + logic = (RAF | MEK1_2); + rate_up = @logic ? $u_ERK : 0; + rate_down = @logic ? 0 : $d_ERK; +} + +Node ETS1 +{ + logic = (!p53 & (RTK | ERK)); + rate_up = @logic ? $u_ETS1 : 0; + rate_down = @logic ? 0 : $d_ETS1; +} + +Node ETV1 +{ + logic = (ETS1 | MEK1_2); + rate_up = @logic ? $u_ETV1 : 0; + rate_down = @logic ? 0 : $d_ETV1; +} + +Node EZH2 +{ + logic = (AKT & E2F1 & (ERG | AR_ERG)); + rate_up = @logic ? $u_EZH2 : 0; + rate_down = @logic ? 0 : $d_EZH2; +} + +Node E_cadherin +{ + logic = ((beta_catenin | AR_ERG) & !Snail & !ERG & !NF_kB & !Slug); + rate_up = @logic ? $u_E_cadherin : 0; + rate_down = @logic ? 0 : $d_E_cadherin; +} + +Node FADD +{ + logic = (PTCH1 | TNFalpha) & !SHH & !MAP3K1_3; + rate_up = @logic ? $u_FADD : 0; + rate_down = @logic ? 0 : $d_FADD; +} + +Node FGF +{ + logic = (FGF); + rate_up = @logic ? $u_FGF : 0; + rate_down = @logic ? 0 : $d_FGF; +} + +Node FGFR3 +{ + logic = ((FGF | (FGF & RUNX2)) & !FRS2 & !PKC & !TGFBR); + rate_up = @logic ? $u_FGFR3 : 0; + rate_down = @logic ? 0 : $d_FGFR3; +} + +Node FOS +{ + logic = (ERK | ETS1 | AR); + rate_up = @logic ? $u_FOS : 0; + rate_down = @logic ? 0 : $d_FOS; +} + +Node FOXA1 +{ + logic = (FOXO); + rate_up = @logic ? $u_FOXA1 : 0; + rate_down = @logic ? 0 : $d_FOXA1; +} + +Node FOXO +{ + logic = (MAP3K1_3 & JNK & !AKT); + rate_up = @logic ? $u_FOXO : 0; + rate_down = @logic ? 0 : $d_FOXO; +} + +Node FRS2 +{ + logic = (!ERK & !EGFR & FGFR3 & !FRS2 & !TGFBR); + rate_up = @logic ? $u_FRS2 : 0; + rate_down = @logic ? 0 : $d_FRS2; +} + +Node fused_event +{ + logic = (fused_event); + rate_up = @logic ? $u_fused_event : 0; + rate_down = @logic ? 0 : $d_fused_event; +} + +Node GADD45 +{ + logic = (SMAD | p53); + rate_up = @logic ? $u_GADD45 : 0; + rate_down = @logic ? 0 : $d_GADD45; +} + +Node GLI +{ + logic = ((WNT | SMO) & !SPOP); + rate_up = @logic ? $u_GLI : 0; + rate_down = @logic ? 0 : $d_GLI; +} + +Node GLUT1 +{ + logic = ((HIF1 | MYC_MAX | AKT) & Nutrients); + rate_up = @logic ? $u_GLUT1 : 0; + rate_down = @logic ? 0 : $d_GLUT1; +} + +Node Glycolysis +{ + logic = (GLUT1 & Lactic_acid); + rate_up = @logic ? $u_Glycolysis : 0; + rate_down = @logic ? 0 : $d_Glycolysis; +} + +Node GSH +{ + logic = (MYC_MAX | NF_kB | p21); + rate_up = @logic ? $u_GSH : 0; + rate_down = @logic ? 0 : $d_GSH; +} + +Node GSK3 +{ + logic = (!AKT & !Dsh & MEK1_2 & !mTORC2 & !p90RSK); + rate_up = @logic ? $u_GSK3 : 0; + rate_down = @logic ? 0 : $d_GSK3; +} + +Node HIF1 +{ + logic = (!PHDs & !VHL & !p53 & !FOXO & (HSPs | mTORC1 | mTORC2 | Hypoxia | MYC_MAX)); + rate_up = @logic ? $u_HIF1 : 0; + rate_down = @logic ? 0 : $d_HIF1; +} + +Node Hypermethylation +{ + logic = (!IDH1); + rate_up = @logic ? $u_Hypermethylation : 0; + rate_down = @logic ? 0 : $d_Hypermethylation; +} + +Node Hypoxia +{ + logic = (Hypoxia); + rate_up = @logic ? $u_Hypoxia : 0; + rate_down = @logic ? 0 : $d_Hypoxia; +} + +Node IDH1 +{ + logic = (SMAD | FOXA1 | mTORC2 | ((SMAD | mTORC2 | FOXA1) & MEK1_2)); + rate_up = @logic ? $u_IDH1 : 0; + rate_down = @logic ? 0 : $d_IDH1; +} + +Node IKK +{ + logic = ((mTORC2 | AKT) & (PKC | TAK1 | ETS1) & !PHDs & !p53); + rate_up = @logic ? $u_IKK : 0; + rate_down = @logic ? 0 : $d_IKK; +} + +Node Invasion +{ + logic = ((CDH2 & SMAD) | (CDH2 & SMAD & EZH2) | beta_catenin); + rate_up = @logic ? $u_Invasion : 0; + rate_down = @logic ? 0 : $d_Invasion; +} + +Node JNK +{ + logic = ((ATM | GADD45 | TAK1 | MAP3K1_3) & !ERK & !p38); + rate_up = @logic ? $u_JNK : 0; + rate_down = @logic ? 0 : $d_JNK; +} + +Node JUN +{ + logic = (AR | ETS1 | JNK); + rate_up = @logic ? $u_JUN : 0; + rate_down = @logic ? 0 : $d_JUN; +} + +Node Lactic_acid +{ + logic = (LDHA); + rate_up = @logic ? $u_Lactic_acid : 0; + rate_down = @logic ? 0 : $d_Lactic_acid; +} + +Node LDHA +{ + logic = (HIF1 | MYC_MAX | IDH1); + rate_up = @logic ? $u_LDHA : 0; + rate_down = @logic ? 0 : $d_LDHA; +} + +Node MAP3K1_3 +{ + logic = (RAS & !(FOS | JUN | JNK | p38)); + rate_up = @logic ? $u_MAP3K1_3 : 0; + rate_down = @logic ? 0 : $d_MAP3K1_3; +} + + +Node MDM2 +{ + logic = (((AKT | p53) & DAXX & !p14ARF & !ATR & !ATM)); + rate_up = @logic ? $u_MDM2 : 0; + rate_down = @logic ? 0 : $d_MDM2; +} + +Node MED12 +{ + logic = (!GLI); + rate_up = @logic ? $u_MED12 : 0; + rate_down = @logic ? 0 : $d_MED12; +} + +Node MEK1_2 +{ + logic = (MAP3K1_3 | RAF | PDK1); + rate_up = @logic ? $u_MEK1_2 : 0; + rate_down = @logic ? 0 : $d_MEK1_2; +} + +Node Metastasis +{ + logic = (Migration & AR_ERG); + rate_up = @logic ? $u_Metastasis : 0; + rate_down = @logic ? 0 : $d_Metastasis; +} + +Node Migration +{ + logic = (((AKT & ERK) | (AKT & ETV1)) & Invasion & EMT); + rate_up = @logic ? $u_Migration : 0; + rate_down = @logic ? 0 : $d_Migration; +} + +Node mTORC1 +{ + logic = ((AKT | (AKT & Rheb)) & !AMPK & !TSC1_2); + rate_up = @logic ? $u_mTORC1 : 0; + rate_down = @logic ? 0 : $d_mTORC1; +} + +Node mTORC2 +{ + logic = ((!AMPK & RAGS & Rheb) | (AKT & !AMPK & Rheb) | (AKT & !AMPK & RAGS) | (AKT & RAGS & Rheb & !AMPK)); + rate_up = @logic ? $u_mTORC2 : 0; + rate_down = @logic ? 0 : $d_mTORC2; +} + +Node MXI1 +{ + logic = (HIF1); + rate_up = @logic ? $u_MXI1 : 0; + rate_down = @logic ? 0 : $d_MXI1; +} + +Node MYC +{ + logic = ((GLI | ERK | TCF | JUN | FOS | AR_ERG | ERG | NF_kB | SHH) & (mTORC1 | E2F1 | p38) & !HIF1); + rate_up = @logic ? $u_MYC : 0; + rate_down = @logic ? 0 : $d_MYC; +} + +Node MYC_MAX +{ + logic = (MYC & !MXI1 & !TGFBR & !SMAD); + rate_up = @logic ? $u_MYC_MAX : 0; + rate_down = @logic ? 0 : $d_MYC_MAX; +} + +Node NCOA3 +{ + logic = (!SPOP & p38); + rate_up = @logic ? $u_NCOA3 : 0; + rate_down = @logic ? 0 : $d_NCOA3; +} + +Node NCOR1 +{ + logic = (!AKT); + rate_up = @logic ? $u_NCOR1 : 0; + rate_down = @logic ? 0 : $d_NCOR1; +} + +Node NCOR2 +{ + logic = (!AKT & !FOXO); + rate_up = @logic ? $u_NCOR2 : 0; + rate_down = @logic ? 0 : $d_NCOR2; +} + +Node NF1 +{ + logic = (!PKC); + rate_up = @logic ? $u_NF1 : 0; + rate_down = @logic ? 0 : $d_NF1; +} + +Node NF_kB +{ + logic = ((E_cadherin | IKK | DNA_Damage) & (NCOA3 | PIP3 | Snail)); + rate_up = @logic ? $u_NF_kB : 0; + rate_down = @logic ? 0 : $d_NF_kB; +} + +Node NKX3_1 +{ + logic = (PKC & AR & !ERG & !AR_ERG); + rate_up = @logic ? $u_NKX3_1 : 0; + rate_down = @logic ? 0 : $d_NKX3_1; +} + +Node Nutrients +{ + logic = (Nutrients); + rate_up = @logic ? $u_Nutrients : 0; + rate_down = @logic ? 0 : $d_Nutrients; +} + +Node p14ARF +{ + logic = (E2F1 & MYC_MAX & RAS); + rate_up = @logic ? $u_p14ARF : 0; + rate_down = @logic ? 0 : $d_p14ARF; +} + +Node p15 +{ + logic = (ZBTB17); + rate_up = @logic ? $u_p15 : 0; + rate_down = @logic ? 0 : $d_p15; +} + +Node p21 +{ + logic = ((p53 | SMAD | HIF1 | ZBTB17) & !TERT & !MYC_MAX & !MDM2 & !AKT & !ERK); + rate_up = @logic ? $u_p21 : 0; + rate_down = @logic ? 0 : $d_p21; +} + +Node p38 +{ + logic = (MAP3K1_3 & !ERK & !GADD45); + rate_up = @logic ? $u_p38 : 0; + rate_down = @logic ? 0 : $d_p38; +} + +Node p53 +{ + logic = ((Acidosis | CHK1_2 | p38 | HIF1) & !BCL2 & !MDM2 & !HSPs & !Snail); + rate_up = @logic ? $u_p53 : 0; + rate_down = @logic ? 0 : $d_p53; +} + +Node p70S6kab +{ + logic = (mTORC2 | PDK1); + rate_up = @logic ? $u_p70S6kab : 0; + rate_down = @logic ? 0 : $d_p70S6kab; +} + +Node p90RSK +{ + logic = (PDK1 | ERK); + rate_up = @logic ? $u_p90RSK : 0; + rate_down = @logic ? 0 : $d_p90RSK; +} + +Node PDK1 +{ + logic = (HIF1 | MYC_MAX | PIP3); + rate_up = @logic ? $u_PDK1 : 0; + rate_down = @logic ? 0 : $d_PDK1; +} + +Node PHDs +{ + logic = (!Hypoxia & ROS); + rate_up = @logic ? $u_PHDs : 0; + rate_down = @logic ? 0 : $d_PHDs; +} + +Node PIP3 +{ + logic = ((!p53 & PI3K & !PTEN) | (!p53 & PI3K)); + rate_up = @logic ? $u_PIP3 : 0; + rate_down = @logic ? 0 : $d_PIP3; +} + +Node PKC +{ + logic = (RTK & WNT); + rate_up = @logic ? $u_PKC : 0; + rate_down = @logic ? 0 : $d_PKC; +} + +Node Proliferation +{ + logic = (CyclinB | CyclinD); + rate_up = @logic ? $u_Proliferation : 0; + rate_down = @logic ? 0 : $d_Proliferation; +} + +Node PTCH1 +{ + logic = (!SHH & GLI); + rate_up = @logic ? $u_PTCH1 : 0; + rate_down = @logic ? 0 : $d_PTCH1; +} + +Node PTEN +{ + logic = ((!NF_kB & !Snail & FGFR3 & p53) | (!NF_kB & !Snail & p53)); + rate_up = @logic ? $u_PTEN : 0; + rate_down = @logic ? 0 : $d_PTEN; +} + +Node Quiescence +{ + logic = (!Apoptosis & !Proliferation); + rate_up = @logic ? $u_Quiescence : 0; + rate_down = @logic ? 0 : $d_Quiescence; +} + +Node RAF +{ + logic = (!EZH2 & RAS) | (EZH2); + rate_up = @logic ? $u_RAF : 0; + rate_down = @logic ? 0 : $d_RAF; +} + +Node RAGS +{ + logic = (!Hypoxia & Nutrients); + rate_up = @logic ? $u_RAGS : 0; + rate_down = @logic ? 0 : $d_RAGS; +} + +Node RAS +{ + logic = (EGFR | TGFBR | FRS2 | FGFR3); + rate_up = @logic ? $u_RAS : 0; + rate_down = @logic ? 0 : $d_RAS; +} + +Node RB1 +{ + logic = (!CyclinB & !CyclinD & CHK1_2 & !p53 & !AMPK); + rate_up = @logic ? $u_RB1 : 0; + rate_down = @logic ? 0 : $d_RB1; +} + +Node Rheb +{ + logic = (!TSC1_2); + rate_up = @logic ? $u_Rheb : 0; + rate_down = @logic ? 0 : $d_Rheb; +} + +Node ROS +{ + logic = ((COX4I2 | Hypoxia) & !GSH); + rate_up = @logic ? $u_ROS : 0; + rate_down = @logic ? 0 : $d_ROS; +} + +Node RTK +{ + logic = (EGFR | FGFR3); + rate_up = @logic ? $u_RTK : 0; + rate_down = @logic ? 0 : $d_RTK; +} + +Node RUNX2 +{ + logic = (!ETS1 & !FOXO & Slug) | (ETS1 & !FOXO); + rate_up = @logic ? $u_RUNX2 : 0; + rate_down = @logic ? 0 : $d_RUNX2; +} + +Node SHH +{ + logic = (!BMP2 & !ATR); + rate_up = @logic ? $u_SHH : 0; + rate_down = @logic ? 0 : $d_SHH; +} + +Node Slug +{ + logic = ((TCF | NF_kB) & !DAXX & !p53 & !MDM2); + rate_up = @logic ? $u_Slug : 0; + rate_down = @logic ? 0 : $d_Slug; +} + +Node SMAD +{ + logic = ((TNFalpha | TGFBR) & !AR); + rate_up = @logic ? $u_SMAD : 0; + rate_down = @logic ? 0 : $d_SMAD; +} + +Node SMO +{ + logic = (!PTCH1 & SHH); + rate_up = @logic ? $u_SMO : 0; + rate_down = @logic ? 0 : $d_SMO; +} + +Node Snail +{ + logic = ((GLI | NF_kB | SMAD | beta_catenin) & !GSK3 & !p53); + rate_up = @logic ? $u_Snail : 0; + rate_down = @logic ? 0 : $d_Snail; +} + +Node SPOP +{ + logic = (SPOP); + rate_up = @logic ? $u_SPOP : 0; + rate_down = @logic ? 0 : $d_SPOP; +} + +Node TAK1 +{ + logic = (TGFBR | TNFalpha); + rate_up = @logic ? $u_TAK1 : 0; + rate_down = @logic ? 0 : $d_TAK1; +} + +Node TCF +{ + logic = ((beta_catenin | AR_ERG | ERG) & !TAK1); + rate_up = @logic ? $u_TCF : 0; + rate_down = @logic ? 0 : $d_TCF; +} + +Node TERT +{ + logic = ((GLI | AKT | HIF1 | MYC_MAX | NF1 | NF_kB | MYC_MAX) & !ZBTB17 & !p53 & !eEF2 & !SMAD); + rate_up = @logic ? $u_TERT : 0; + rate_down = @logic ? 0 : $d_TERT; +} + +Node TGFb +{ + logic = (TGFb); + rate_up = @logic ? $u_TGFb : 0; + rate_down = @logic ? 0 : $d_TGFb; +} + +Node TGFBR +{ + logic = ((TGFb | (HIF1 & TGFb)) & !MED12); + rate_up = @logic ? $u_TGFBR : 0; + rate_down = @logic ? 0 : $d_TGFBR; +} + +Node TNFalpha +{ + logic = (TNFalpha); + rate_up = @logic ? $u_TNFalpha : 0; + rate_down = @logic ? 0 : $d_TNFalpha; +} + +Node TSC1_2 +{ + logic = ((AMPK | p53 | HIF1) & !AKT & !ERK & !RAF & !p90RSK); + rate_up = @logic ? $u_TSC1_2 : 0; + rate_down = @logic ? 0 : $d_TSC1_2; +} + +Node TWIST1 +{ + logic = (Snail | beta_catenin); + rate_up = @logic ? $u_TWIST1 : 0; + rate_down = @logic ? 0 : $d_TWIST1; +} + +Node VEGF +{ + logic = (HIF1 & MYC_MAX); + rate_up = @logic ? $u_VEGF : 0; + rate_down = @logic ? 0 : $d_VEGF; +} + +Node VHL +{ + logic = (!Hypoxia & !ROS); + rate_up = @logic ? $u_VHL : 0; + rate_down = @logic ? 0 : $d_VHL; +} + +Node WNT +{ + logic = ((((ERG | AR_ERG) & GLI) | ERG | AR_ERG) & !p53); + rate_up = @logic ? $u_WNT : 0; + rate_down = @logic ? 0 : $d_WNT; +} + +Node YWHAZ +{ + logic = (AR); + rate_up = @logic ? $u_YWHAZ : 0; + rate_down = @logic ? 0 : $d_YWHAZ; +} + +Node ZBTB17 +{ + logic = (!MYC_MAX & AR); + rate_up = @logic ? $u_ZBTB17 : 0; + rate_down = @logic ? 0 : $d_ZBTB17; +} + +Node anti_PI3K +{ + logic = (anti_PI3K); + rate_up = @logic ? 0 : 0; + rate_down = @logic ? 0 : 0; +} + + +Node anti_HSPs +{ + logic = (anti_HSPs); + rate_up = @logic ? 0 : 0; + rate_down = @logic ? 0 : 0; +} + + diff --git a/config/boolean_network/LNCaP_mut_RNA_00_all_nodes.cfg b/config/boolean_network/LNCaP_mut_RNA_00_all_nodes.cfg new file mode 100644 index 0000000..6981df9 --- /dev/null +++ b/config/boolean_network/LNCaP_mut_RNA_00_all_nodes.cfg @@ -0,0 +1,584 @@ +$u_Acidosis = 1; +$d_Acidosis = 1; +$u_AKT = 1.15285; +$d_AKT = 0.86742; +$u_AMP_ATP = 0.06407; +$d_AMP_ATP = 15.60793; +$u_AMPK = 0; +$d_AMPK = 0.91263; +$u_Androgen = 1; +$d_Androgen = 1; +$u_Angiogenesis = 1; +$d_Angiogenesis = 1; +$u_Apoptosis = 1; +$d_Apoptosis = 1; +$u_AR = 100.0; +$d_AR = 0; +$u_AR_ERG = 1; +$d_AR_ERG = 1; +$u_ATM = 0; +$d_ATM = 5.81395; +$u_ATR = 0.1955; +$d_ATR = 5.11509; +$u_AXIN1 = 0.3574; +$d_AXIN1 = 2.79799; +$u_BAD = 4.09692; +$d_BAD = 0.24409; +$u_Bak = 0.1955; +$d_Bak = 5.11509; +$u_BAX = 0; +$d_BAX = 10.39933; +$u_BCL2 = 0.01; +$d_BCL2 = 100.0; +$u_Bcl_XL = 0.28221; +$d_Bcl_XL = 3.54346; +$u_beta_catenin = 0.60475; +$d_beta_catenin = 0; +$u_BIRC5 = 0.23826; +$d_BIRC5 = 4.1971; +$u_BMP2 = 1; +$d_BMP2 = 1; +$u_BRCA1 = 0.49177; +$d_BRCA1 = 2.03347; +$u_BRCA2 = 0; +$d_BRCA2 = 5.11509; +$u_Carcinogen = 1; +$d_Carcinogen = 1; +$u_Caspase3 = 1; +$d_Caspase3 = 1; +$u_Caspase8 = 0.07573; +$d_Caspase8 = 13.20481; +$u_Caspase9 = 0.1955; +$d_Caspase9 = 5.11509; +$u_CDH2 = 0.01; +$d_CDH2 = 100.0; +$u_cFLAR = 1.0; +$d_cFLAR = 1.0; +$u_CHK1_2 = 0; +$d_CHK1_2 = 0.74346; +$u_COX4I2 = 1; +$d_COX4I2 = 1; +$u_CyclinB = 0.08593; +$d_CyclinB = 11.63738; +$u_CyclinD = 0.72702; +$d_CyclinD = 1.37548; +$u_CytoC = 0.47463; +$d_CytoC = 2.1069; +$u_APAF1 = 0; +$d_APAF1 = 65.74622; +$u_DAXX = 0.73662; +$d_DAXX = 1.35755; +$u_DNA_Damage = 1; +$d_DNA_Damage = 1; +$u_DNA_Repair = 1; +$d_DNA_Repair = 1; +$u_Dsh = 0; +$d_Dsh = 0.40456; +$u_E2F1 = 0.43193; +$d_E2F1 = 2.31519; +$u_E_cadherin = 100.0; +$d_E_cadherin = 0.01; +$u_eEF2 = 22.1308; +$d_eEF2 = 0.04519; +$u_eEF2K = 5.11518; +$d_eEF2K = 0.1955; +$u_EMT = 1; +$d_EMT = 1; +$u_EP300 = 1.59488; +$d_EP300 = 0.62701; +$u_ERG = 0.01; +$d_ERG = 100.0; +$u_ERK = 1.46443; +$d_ERK = 0.68286; +$u_ETS1 = 0.0303; +$d_ETS1 = 33.0033; +$u_ETV1 = 99.99718; +$d_ETV1 = 0.01; +$u_EZH2 = 0.25411; +$d_EZH2 = 3.9353; +$u_FADD = 0.13852; +$d_FADD = 7.21917; +$u_FOS = 0.01086; +$d_FOS = 92.08103; +$u_JUN = 0.3012; +$d_JUN = 3.32005; +$u_FOXA1 = 99.99995; +$d_FOXA1 = 0.01; +$u_FOXO = 0.70855; +$d_FOXO = 1.41133; +$u_EGF = 8.51034; +$d_EGF = 0.1175; +$u_EGFR = 87.28647; +$d_EGFR = 0.01146; +$u_FGF = 0; +$d_FGF = 100.0; +$u_FGFR3 = 0.01043; +$d_FGFR3 = 95.87728; +$u_FRS2 = 1.0; +$d_FRS2 = 1.0; +$u_GADD45 = 0.57004; +$d_GADD45 = 1.75426; +$u_GLI = 0.01; +$d_GLI = 100.0; +$u_GLUT1 = 0.38474; +$d_GLUT1 = 2.59916; +$u_Glycolysis = 1; +$d_Glycolysis = 1; +$u_GSH = 34.85754; +$d_GSH = 0.02869; +$u_GSK3 = 0.36889; +$d_GSK3 = 2.71084; +$u_HIF1 = 0.50171; +$d_HIF1 = 1.99318; +$u_HSPs = 1.04632; +$d_HSPs = 0.95573; +$u_Hypermethylation = 1; +$d_Hypermethylation = 1; +$u_Hypoxia = 1; +$d_Hypoxia = 1; +$u_IDH1 = 24.23845; +$d_IDH1 = 0.04126; +$u_Invasion = 1; +$d_Invasion = 1; +$u_IKK = 0.47494; +$d_IKK = 2.10553; +$u_JNK = 0.70598; +$d_JNK = 1.41647; +$u_Lactic_acid = 6.08374; +$d_Lactic_acid = 0.16437; +$u_LDHA = 6.08374; +$d_LDHA = 0.16437; +$u_MAP3K1_3 = 0.22457; +$d_MAP3K1_3 = 4.45295; +$u_MDM2 = 3.70371; +$d_MDM2 = 0.27; +$u_MED12 = 0.49995; +$d_MED12 = 2.0002; +$u_MEK1_2 = 2.74199; +$d_MEK1_2 = 0; +$u_Metastasis = 1; +$d_Metastasis = 1; +$u_Migration = 1; +$d_Migration = 1; +$u_mTORC1 = 1.03682; +$d_mTORC1 = 0.96449; +$u_mTORC2 = 1.73313; +$d_mTORC2 = 0.57699; +$u_MXI1 = 16.71485; +$d_MXI1 = 0.05983; +$u_MYC = 4.81493; +$d_MYC = 0.20769; +$u_MYC_MAX = 2.19429; +$d_MYC_MAX = 0.45573; +$u_NCOA3 = 0; +$d_NCOA3 = 13.75138; +$u_NCOR1 = 5.11518; +$d_NCOR1 = 0.1955; +$u_NCOR2 = 4.09692; +$d_NCOR2 = 0.24409; +$u_NF1 = 0; +$d_NF1 = 1.0; +$u_NF_kB = 0.23915; +$d_NF_kB = 4.18148; +$u_NKX3_1 = 100.0; +$d_NKX3_1 = 0.01; +$u_Nutrients = 1; +$d_Nutrients = 1; +$u_p14ARF = 0.01565; +$d_p14ARF = 63.89776; +$u_p15 = 0.01001; +$d_p15 = 99.9001; +$u_p21 = 10.60511; +$d_p21 = 0.09429; +$u_p38 = 0.04421; +$d_p38 = 22.61932; +$u_p53 = 4.77257; +$d_p53 = 0.20953; +$u_p70S6kab = 2.97053; +$d_p70S6kab = 0.33664; +$u_p90RSK = 1.92967; +$d_p90RSK = 0.51822; +$u_PDK1 = 26.84952; +$d_PDK1 = 0.03724; +$u_PHDs = 0.37349; +$d_PHDs = 2.67745; +$u_PI3K = 0.51668; +$d_PI3K = 1.93543; +$u_PIP3 = 0.01521; +$d_PIP3 = 65.74622; +$u_PKC = 0; +$d_PKC = 2.5697; +$u_Proliferation = 1; +$d_Proliferation = 1; +$u_PTCH1 = 0.33025; +$d_PTCH1 = 3.02801; +$u_PTEN = 0; +$d_PTEN = 2.07753; +$u_Quiescence = 1; +$d_Quiescence = 1; +$u_RAF = 1.55217; +$d_RAF = 0.64426; +$u_RAGS = 0.01; +$d_RAGS = 100.0; +$u_RAS = 0.4606; +$d_RAS = 2.17108; +$u_RB1 = 0.12234; +$d_RB1 = 8.17394; +$u_Rheb = 0.1955; +$d_Rheb = 5.11509; +$u_ROS = 1; +$d_ROS = 1; +$u_RTK = 0.08743; +$d_RTK = 11.43772; +$u_RUNX2 = 0.01369; +$d_RUNX2 = 73.04602; +$u_SHH = 0.01; +$d_SHH = 100.0; +$u_Slug = 0.01; +$d_Slug = 100.0; +$u_SMAD = 0.31951; +$d_SMAD = 3.12979; +$u_SMO = 98.34156; +$d_SMO = 0.01017; +$u_Snail = 0.07454; +$d_Snail = 13.41562; +$u_SPOP = 3.75839; +$d_SPOP = 0.26607; +$u_TAK1 = 0.01521; +$d_TAK1 = 65.74622; +$u_TCF = 0.01552; +$d_TCF = 64.43299; +$u_TERT = 0.24141; +$d_TERT = 4.14233; +$u_TGFb = 0.01143; +$d_TGFb = 87.48906; +$u_TGFBR = 0.035; +$d_TGFBR = 28.57143; +$u_fused_event = 1; +$d_fused_event = 1; +$u_TNFalpha = 0.13372; +$d_TNFalpha = 7.47831; +$u_TSC1_2 = 9.35066; +$d_TSC1_2 = 0.10694; +$u_TWIST1 = 0.02243; +$d_TWIST1 = 44.58315; +$u_VEGF = 0.25808; +$d_VEGF = 3.87477; +$u_VHL = 7.12902; +$d_VHL = 0.14027; +$u_WNT = 0; +$d_WNT = 27.5786; +$u_YWHAZ = 0.04405; +$d_YWHAZ = 22.70148; +$u_ZBTB17 = 0.0441; +$d_ZBTB17 = 22.67574; + +discrete_time = 0; +use_physrandgen = FALSE; +seed_pseudorandom = 100; +sample_count = 1; +max_time = 1; //10 min: 1 in Maboss = 10 in Physicell +time_tick = 0.01; +thread_count = 1; +statdist_traj_count = 100; +statdist_cluster_threshold = 0.9; + + +Acidosis.is_internal = TRUE; +AKT.is_internal = TRUE; +AMPK.is_internal = TRUE; +AMP_ATP.is_internal = TRUE; +Androgen.is_internal = TRUE; +Angiogenesis.is_internal = FALSE; +APAF1.is_internal = TRUE; +Apoptosis.is_internal = FALSE; +AR.is_internal = TRUE; +AR_ERG.is_internal = TRUE; +ATM.is_internal = TRUE; +ATR.is_internal = TRUE; +AXIN1.is_internal = TRUE; +BAD.is_internal = TRUE; +Bak.is_internal = TRUE; +BAX.is_internal = TRUE; +BCL2.is_internal = TRUE; +Bcl_XL.is_internal = TRUE; +beta_catenin.is_internal = TRUE; +BIRC5.is_internal = TRUE; +BMP2.is_internal = TRUE; +BRCA1.is_internal = TRUE; +BRCA2.is_internal = TRUE; +Carcinogen.is_internal = TRUE; +Caspase3.is_internal = TRUE; +Caspase8.is_internal = TRUE; +Caspase9.is_internal = TRUE; +CDH2.is_internal = TRUE; +cFLAR.is_internal = TRUE; +CHK1_2.is_internal = TRUE; +COX4I2.is_internal = TRUE; +CyclinB.is_internal = TRUE; +CyclinD.is_internal = TRUE; +CytoC.is_internal = TRUE; +DAXX.is_internal = TRUE; +DNA_Damage.is_internal = TRUE; +DNA_Repair.is_internal = FALSE; +Dsh.is_internal = TRUE; +E2F1.is_internal = TRUE; +eEF2.is_internal = TRUE; +eEF2K.is_internal = TRUE; +EGF.is_internal = TRUE; +EGFR.is_internal = TRUE; +EMT.is_internal = TRUE; +EP300.is_internal = TRUE; +ERG.is_internal = TRUE; +ERK.is_internal = TRUE; +ETS1.is_internal = TRUE; +ETV1.is_internal = TRUE; +EZH2.is_internal = TRUE; +E_cadherin.is_internal = TRUE; +FADD.is_internal = TRUE; +FGF.is_internal = TRUE; +FGFR3.is_internal = TRUE; +FOS.is_internal = TRUE; +FOXA1.is_internal = TRUE; +FOXO.is_internal = TRUE; +FRS2.is_internal = TRUE; +fused_event.is_internal = TRUE; +GADD45.is_internal = TRUE; +GLI.is_internal = TRUE; +GLUT1.is_internal = TRUE; +Glycolysis.is_internal = FALSE; +GSH.is_internal = TRUE; +GSK3.is_internal = TRUE; +HIF1.is_internal = TRUE; +HSPs.is_internal = TRUE; +Hypermethylation.is_internal = TRUE; +Hypoxia.is_internal = TRUE; +IDH1.is_internal = TRUE; +IKK.is_internal = TRUE; +Invasion.is_internal = FALSE; +JNK.is_internal = TRUE; +JUN.is_internal = TRUE; +Lactic_acid.is_internal = TRUE; +LDHA.is_internal = TRUE; +MAP3K1_3.is_internal = TRUE; +MDM2.is_internal = TRUE; +MED12.is_internal = TRUE; +MEK1_2.is_internal = TRUE; +Metastasis.is_internal = FALSE; +Migration.is_internal = FALSE; +mTORC1.is_internal = TRUE; +mTORC2.is_internal = TRUE; +MXI1.is_internal = TRUE; +MYC.is_internal = TRUE; +MYC_MAX.is_internal = TRUE; +NCOA3.is_internal = TRUE; +NCOR1.is_internal = TRUE; +NCOR2.is_internal = TRUE; +NF1.is_internal = TRUE; +NF_kB.is_internal = TRUE; +NKX3_1.is_internal = TRUE; +Nutrients.is_internal = TRUE; +p14ARF.is_internal = TRUE; +p15.is_internal = TRUE; +p21.is_internal = TRUE; +p38.is_internal = TRUE; +p53.is_internal = TRUE; +p70S6kab.is_internal = TRUE; +p90RSK.is_internal = TRUE; +PDK1.is_internal = TRUE; +PHDs.is_internal = TRUE; +PI3K.is_internal = TRUE; +PIP3.is_internal = TRUE; +PKC.is_internal = TRUE; +Proliferation.is_internal = FALSE; +PTCH1.is_internal = TRUE; +PTEN.is_internal = TRUE; +Quiescence.is_internal = FALSE; +RAF.is_internal = TRUE; +RAGS.is_internal = TRUE; +RAS.is_internal = TRUE; +RB1.is_internal = TRUE; +Rheb.is_internal = TRUE; +ROS.is_internal = TRUE; +RTK.is_internal = TRUE; +RUNX2.is_internal = TRUE; +SHH.is_internal = TRUE; +Slug.is_internal = TRUE; +SMAD.is_internal = TRUE; +SMO.is_internal = TRUE; +Snail.is_internal = TRUE; +SPOP.is_internal = TRUE; +TAK1.is_internal = TRUE; +TCF.is_internal = TRUE; +TERT.is_internal = TRUE; +TGFb.is_internal = TRUE; +TGFBR.is_internal = TRUE; +TNFalpha.is_internal = TRUE; +TSC1_2.is_internal = TRUE; +TWIST1.is_internal = TRUE; +VEGF.is_internal = TRUE; +VHL.is_internal = TRUE; +WNT.is_internal = TRUE; +YWHAZ.is_internal = TRUE; +ZBTB17.is_internal = TRUE; + +//LNCAP initial conditions: +[Androgen].istate = 0 [1], 1 [0]; +[Acidosis].istate = 0 [1], 1 [0]; +[Carcinogen].istate = 0 [1], 1 [0]; +[Hypoxia].istate = 0 [1], 1 [0]; +[TGFb].istate = 0 [1], 1 [0]; +[TNFalpha].istate = 0 [1], 1 [0]; +[HSPs].istate = 0.5 [1], 0.5 [0]; +[anti_HSPs].istate = 0 [1], 1 [0]; + +//Pro-proliferative conditions: +[EGF].istate = 1 [1], 0 [0]; +[FGF].istate = 1 [1], 0 [0]; +[Nutrients].istate = 1 [1], 0 [0]; +[Caspase8].istate = 0 [1], 1 [0]; +[Caspase9].istate = 0 [1], 1 [0]; +[Caspase3].istate = 0 [1], 1 [0]; +[FADD].istate = 0 [1], 1 [0]; +[CytoC].istate = 0 [1], 1 [0]; +[APAF1].istate = 0 [1], 1 [0]; +[Bak].istate = 0 [1], 1 [0]; + + +//orphan nodes initial conditions: +[fused_event].istate = 0 [1], 1 [0]; +[AR_ERG].istate = 0 [1], 1 [0]; + +//outputs: +[Angiogenesis].istate = 0 [1], 1 [0]; +[Apoptosis].istate = 0 [1], 1 [0]; +[DNA_Repair].istate = 0 [1], 1 [0]; +[Glycolysis].istate = 0 [1], 1 [0]; +[Hypermethylation].istate = 0 [1], 1 [0]; +[Invasion].istate = 0 [1], 1 [0]; +[Metastasis].istate = 0 [1], 1 [0]; +[Migration].istate = 0 [1], 1 [0]; +[Proliferation].istate = 0 [1], 1 [0]; +[Quiescence].istate = 0 [1], 1 [0]; + +[AKT].istate = 0.51544 [1], 0.48456 [0]; +[AMP_ATP].istate = 0.20167 [1], 0.79833 [0]; +[ATR].istate = 0.32278 [1], 0.6772199999999999 [0]; +[AXIN1].istate = 0.38829 [1], 0.61171 [0]; +[BAD].istate = 0.65311 [1], 0.34689000000000003 [0]; +//[Bak].istate = 0.32278 [1], 0.6772199999999999 [0]; +[Bcl_XL].istate = 0.36264 [1], 0.6373599999999999 [0]; +[BCL2].istate = 1e-05 [1], 0.99999 [0]; +[BIRC5].istate = 0.34426 [1], 0.65574 [0]; +[BRCA1].istate = 0.42294 [1], 0.57706 [0]; +//[Caspase8].istate = 0.21981 [1], 0.7801899999999999 [0]; +//[Caspase9].istate = 0.32278 [1], 0.6772199999999999 [0]; +[CDH2].istate = 0.0 [1], 1.0 [0]; +[cFLAR].istate = 0.5 [1], 0.5 [0]; +[CyclinB].istate = 0.23353 [1], 0.76647 [0]; +[CyclinD].istate = 0.46539 [1], 0.53461 [0]; +//[CytoC].istate = 0.41909 [1], 0.58091 [0]; +[DAXX].istate = 0.46681 [1], 0.53319 [0]; +[E_cadherin].istate = 1.0 [1], 0.0 [0]; +[E2F1].istate = 0.40885 [1], 0.5911500000000001 [0]; +[eEF2].istate = 0.83625 [1], 0.16374999999999995 [0]; +[eEF2K].istate = 0.67722 [1], 0.32277999999999996 [0]; +[EGFR].istate = 0.98524 [1], 0.014759999999999995 [0]; +[EP300].istate = 0.55068 [1], 0.44932000000000005 [0]; +[ERG].istate = 0.0 [1], 1.0 [0]; +[ERK].istate = 0.54142 [1], 0.45858 [0]; +[ETS1].istate = 0.12035 [1], 0.87965 [0]; +[ETV1].istate = 1.0 [1], 0.0 [0]; +[EZH2].istate = 0.35125 [1], 0.6487499999999999 [0]; +//[FADD].istate = 0.28538 [1], 0.71462 [0]; +[FGFR3].istate = 0.00457 [1], 0.99543 [0]; +[FOS].istate = 0.00892 [1], 0.99108 [0]; +[FOXA1].istate = 1.0 [1], 0.0 [0]; +[FOXO].istate = 0.46259 [1], 0.5374099999999999 [0]; +[FRS2].istate = 0.5 [1], 0.5 [0]; +[GADD45].istate = 0.43898 [1], 0.5610200000000001 [0]; +[GLI].istate = 0.0 [1], 1.0 [0]; +[GLUT1].istate = 0.39629 [1], 0.60371 [0]; +[GSH].istate = 0.88557 [1], 0.11443000000000003 [0]; +[GSK3].istate = 0.39173 [1], 0.60827 [0]; +[HIF1].istate = 0.42511 [1], 0.57489 [0]; +//[HSPs].istate = 0.50492 [1], 0.49507999999999996 [0]; +[IDH1].istate = 0.84613 [1], 0.15386999999999995 [0]; +[IKK].istate = 0.41916 [1], 0.58084 [0]; +[JNK].istate = 0.4622 [1], 0.5378000000000001 [0]; +[JUN].istate = 0.36971 [1], 0.63029 [0]; +[Lactic_acid].istate = 0.69604 [1], 0.30396 [0]; +[LDHA].istate = 0.69604 [1], 0.30396 [0]; +[MAP3K1_3].istate = 0.33784 [1], 0.6621600000000001 [0]; +[MDM2].istate = 0.64216 [1], 0.35784000000000005 [0]; +[MED12].istate = 0.42473 [1], 0.57527 [0]; +[ZBTB17].istate = 0.1611 [1], 0.8389 [0]; +[mTORC1].istate = 0.50393 [1], 0.49607 [0]; +[mTORC2].istate = 0.55971 [1], 0.44028999999999996 [0]; +[MXI1].istate = 0.80578 [1], 0.19421999999999995 [0]; +[MYC].istate = 0.67065 [1], 0.32935000000000003 [0]; +[MYC_MAX].istate = 0.58532 [1], 0.41468000000000005 [0]; +[NCOR1].istate = 0.67722 [1], 0.32277999999999996 [0]; +[NCOR2].istate = 0.65311 [1], 0.34689000000000003 [0]; +[NF_kB].istate = 0.34467 [1], 0.65533 [0]; +[NKX3_1].istate = 1.0 [1], 0.0 [0]; +[p14ARF].istate = 0.04863 [1], 0.95137 [0]; +[p15].istate = 8e-05 [1], 0.99992 [0]; +[p21].istate = 0.75638 [1], 0.24361999999999995 [0]; +[p38].istate = 0.16139 [1], 0.83861 [0]; +[p53].istate = 0.66969 [1], 0.33031 [0]; +[p70S6kab].istate = 0.61821 [1], 0.38178999999999996 [0]; +[p90RSK].istate = 0.57137 [1], 0.42862999999999996 [0]; +[PDK1].istate = 0.85723 [1], 0.14276999999999995 [0]; +[PHDs].istate = 0.39307 [1], 0.60693 [0]; +[PI3K].istate = 0.5 [1], 0.5 [0]; +[anti_PI3K].istate = 0 [1], 1 [0]; +[PIP3].istate = 0.04553 [1], 0.95447 [0]; +[PTCH1].istate = 0.37971 [1], 0.62029 [0]; +[RAF].istate = 0.54773 [1], 0.45226999999999995 [0]; +[RAGS].istate = 0 [1], 1 [0]; +[RAS].istate = 0.41583 [1], 0.5841700000000001 [0]; +[RB1].istate = 0.27189 [1], 0.72811 [0]; +[Rheb].istate = 0.32278 [1], 0.6772199999999999 [0]; +[RTK].istate = 0.23541 [1], 0.76459 [0]; +[RUNX2].istate = 0.03411 [1], 0.96589 [0]; +[SHH].istate = 0.0 [1], 1.0 [0]; +[Slug].istate = 2e-05 [1], 0.99998 [0]; +[SMAD].istate = 0.37612 [1], 0.62388 [0]; +[SMO].istate = 0.99818 [1], 0.0018200000000000438 [0]; +[Snail].istate = 0.2181 [1], 0.7819 [0]; +[SPOP].istate = 0.64375 [1], 0.35624999999999996 [0]; +[TAK1].istate = 0.04553 [1], 0.95447 [0]; +[TCF].istate = 0.04774 [1], 0.95226 [0]; +[TERT].istate = 0.34569 [1], 0.65431 [0]; +//[TGFb].istate = 0.01451 [1], 0.98549 [0]; +[TGFBR].istate = 0.13603 [1], 0.86397 [0]; +//[TNFalpha].istate = 0.28155 [1], 0.71845 [0]; +[TSC1_2].istate = 0.74271 [1], 0.25729 [0]; +[TWIST1].istate = 0.08772 [1], 0.91228 [0]; +[VEGF].istate = 0.35294 [1], 0.64706 [0]; +[VHL].istate = 0.71326 [1], 0.28674 [0]; +[YWHAZ].istate = 0.16098 [1], 0.83902 [0]; +[AMPK].istate = 0 [1], 1 [0]; +//[APAF1].istate = 0 [1], 1 [0]; +//[AR].istate = 0 [1], 1 [0]; +[ATM].istate = 0 [1], 1 [0]; +[BAX].istate = 0 [1], 1 [0]; +[beta_catenin].istate = 1 [1], 0 [0]; +[BRCA2].istate = 0 [1], 1 [0]; +[CHK1_2].istate = 0 [1], 1 [0]; +[Dsh].istate = 0 [1], 1 [0]; +//[FGF].istate = 0 [1], 1 [0]; +[MEK1_2].istate = 1 [1], 0 [0]; +[NCOA3].istate = 0 [1], 1 [0]; +[NF1].istate = 0 [1], 1 [0]; +[PKC].istate = 0 [1], 1 [0]; +[PTEN].istate = 0 [1], 1 [0]; +[WNT].istate = 0 [1], 1 [0]; + +[AR].istate = 0.5 [0] , 0.5 [1]; +[BMP2].istate = 0.5 [0] , 0.5 [1]; +[COX4I2].istate = 0.5 [0] , 0.5 [1]; +[DNA_Damage].istate = 0.5 [0] , 0.5 [1]; +[EMT].istate = 0.5 [0] , 0.5 [1]; +[ROS].istate = 0.5 [0] , 0.5 [1]; diff --git a/config/boolean_network/Montagud2022_Prostate_Cancer.bnd b/config/boolean_network/Montagud2022_Prostate_Cancer.bnd new file mode 100644 index 0000000..5f51576 --- /dev/null +++ b/config/boolean_network/Montagud2022_Prostate_Cancer.bnd @@ -0,0 +1,803 @@ +Node Acidosis { + logic = (Acidosis); + rate_up = @logic ? $u_Acidosis : 0; + rate_down = @logic ? 0 : $d_Acidosis; +} + +Node AKT { + logic = ((HSPs | (PDK1 & PIP3) | PIP3 | (SHH & PIP3)) & !PTCH1); + rate_up = @logic ? $u_AKT : 0; + rate_down = @logic ? 0 : $d_AKT; +} + +Node AMPK { + logic = (ATR | HIF1 | AMP_ATP | ATM) & !FGFR3; + rate_up = @logic ? $u_AMPK : 0; + rate_down = @logic ? 0 : $d_AMPK; +} + +Node AMP_ATP { + logic = (!Nutrients); + rate_up = @logic ? $u_AMP_ATP : 0; + rate_down = @logic ? 0 : $d_AMP_ATP; +} + +Node Androgen { + logic = (Androgen); + rate_up = @logic ? $u_Androgen : 0; + rate_down = @logic ? 0 : $d_Androgen; +} + +Node APAF1 { + logic = ((Caspase8 | BAX | p53 | Bak | HSPs) & !Bcl_XL & !BCL2 & !AKT); + rate_up = @logic ? $u_APAF1 : 0; + rate_down = @logic ? 0 : $d_APAF1; +} + +Node Apoptosis { + logic = (Caspase9 | Caspase8 | Caspase3); + rate_up = @logic ? $u_Apoptosis : 0; + rate_down = @logic ? 0 : $d_Apoptosis; +} + +Node AR { + logic = ((GLI | EP300 | HSPs | NKX3_1 | EZH2 | NCOA3 | PKC | SMAD | Androgen) & !PTEN & !NCOR1 & !NCOR2 & !MDM2); + rate_up = @logic ? $u_AR : 0; + rate_down = @logic ? 0 : $d_AR; +} + +Node AR_ERG { + logic = ((AR & fused_event) | (AR & fused_event & !NKX3_1)); + rate_up = @logic ? $u_AR_ERG : 0; + rate_down = @logic ? 0 : $d_AR_ERG; +} + +Node ATM { + logic = (DNA_Damage); + rate_up = @logic ? $u_ATM : 0; + rate_down = @logic ? 0 : $d_ATM; +} + +Node ATR { + logic = (DNA_Damage); + rate_up = @logic ? $u_ATR : 0; + rate_down = @logic ? 0 : $d_ATR; +} + +Node AXIN1 { + logic = (GSK3); + rate_up = @logic ? $u_AXIN1 : 0; + rate_down = @logic ? 0 : $d_AXIN1; +} + +Node BAD { + logic = (!AKT & !HIF1 & !p90RSK & !RAF & !YWHAZ); + rate_up = @logic ? $u_BAD : 0; + rate_down = @logic ? 0 : $d_BAD; +} + +Node Bak { + logic = (Caspase8); + rate_up = @logic ? $u_Bak : 0; + rate_down = @logic ? 0 : $d_Bak; +} + +Node BAX { + logic = (!BCL2 & !HIF1 & !YWHAZ & (JNK | HIF1 | p53) & !ETS1); + rate_up = @logic ? $u_BAX : 0; + rate_down = @logic ? 0 : $d_BAX; +} + +Node BCL2 { + logic = ((HSPs | NF_kB | RUNX2) & !BAX & !p53 & !DAXX & !BAD); + rate_up = @logic ? $u_BCL2 : 0; + rate_down = @logic ? 0 : $d_BCL2; +} + +Node Bcl_XL { + logic = (AR & !BAD & !p53); + rate_up = @logic ? $u_Bcl_XL : 0; + rate_down = @logic ? 0 : $d_Bcl_XL; +} + +Node beta_catenin { + logic = (!GSK3 & !p53 & !AXIN1 & (EZH2 | YWHAZ)); + rate_up = @logic ? $u_beta_catenin : 0; + rate_down = @logic ? 0 : $d_beta_catenin; +} + +Node BIRC5 { + logic = (HSPs & !p53); + rate_up = @logic ? $u_BIRC5 : 0; + rate_down = @logic ? 0 : $d_BIRC5; +} + +Node BMP2 { + logic = (GLI & (TGFBR | FGFR3)); + rate_up = @logic ? $u_BMP2 : 0; + rate_down = @logic ? 0 : $d_BMP2; +} + +Node BRCA1 { + logic = ((E2F1 | ATM | ATR | (E2F1 & EP300) | (ATM & EP300) | (ATR & EP300)) & !CyclinD & !Bak); + rate_up = @logic ? $u_BRCA1 : 0; + rate_down = @logic ? 0 : $d_BRCA1; +} + +Node BRCA2 { + logic = (ATM & ATR & EP300); + rate_up = @logic ? $u_BRCA2 : 0; + rate_down = @logic ? 0 : $d_BRCA2; +} + +Node Carcinogen { + logic = (Carcinogen); + rate_up = @logic ? $u_Carcinogen : 0; + rate_down = @logic ? 0 : $d_Carcinogen; +} + +Node Caspase3 { + logic = (Caspase8 | Caspase9); + rate_up = @logic ? $u_Caspase3 : 0; + rate_down = @logic ? 0 : $d_Caspase3; +} + +Node Caspase8 { + logic = (!cFLAR & FADD); + rate_up = @logic ? $u_Caspase8 : 0; + rate_down = @logic ? 0 : $d_Caspase8; +} + +Node Caspase9 { + logic = ((!AKT & CytoC & APAF1 & PTCH1) | (!AKT & BIRC5 & CytoC & APAF1) | (!AKT & BIRC5 & CytoC & APAF1 & PTCH1)); + rate_up = @logic ? $u_Caspase9 : 0; + rate_down = @logic ? 0 : $d_Caspase9; +} + +Node CDH2 { + logic = (TWIST1); + rate_up = @logic ? $u_CDH2 : 0; + rate_down = @logic ? 0 : $d_CDH2; +} + +Node cFLAR { + logic = ((AKT | AR) & !JNK); + rate_up = @logic ? $u_cFLAR : 0; + rate_down = @logic ? 0 : $d_cFLAR; +} + +Node CHK1_2 { + logic = (ATM & ATR & BRCA1); + rate_up = @logic ? $u_CHK1_2 : 0; + rate_down = @logic ? 0 : $d_CHK1_2; +} + +Node COX4I2 { + logic = (HIF1); + rate_up = @logic ? $u_COX4I2 : 0; + rate_down = @logic ? 0 : $d_COX4I2; +} + +Node CyclinB { + logic = (E2F1 & !p21); + rate_up = @logic ? $u_CyclinB : 0; + rate_down = @logic ? 0 : $d_CyclinB; +} + +Node CyclinD { + logic = ((GLI | TCF | NF_kB) & MYC_MAX & !p21 & !FOXO & !p15 & !GSK3); + rate_up = @logic ? $u_CyclinD : 0; + rate_down = @logic ? 0 : $d_CyclinD; +} + +Node CytoC { + logic = ((Caspase8 | BAX | p53 | Bak) & !Bcl_XL & !BCL2 & !AKT); + rate_up = @logic ? $u_CytoC : 0; + rate_down = @logic ? 0 : $d_CytoC; +} + +Node DAXX { + logic = (!ATM & !ATR & !SPOP); + rate_up = @logic ? $u_DAXX : 0; + rate_down = @logic ? 0 : $d_DAXX; +} + +Node DNA_Damage { + logic = ((Carcinogen | (Carcinogen & ROS)) & !SPOP); + rate_up = @logic ? $u_DNA_Damage : 0; + rate_down = @logic ? 0 : $d_DNA_Damage; +} + +Node DNA_Repair { + logic = (ATM & ATR & (BRCA1 | BRCA2)); + rate_up = @logic ? $u_DNA_Repair : 0; + rate_down = @logic ? 0 : $d_DNA_Repair; +} + +Node Dsh { + logic = (WNT); + rate_up = @logic ? $u_Dsh : 0; + rate_down = @logic ? 0 : $d_Dsh; +} + +Node E2F1 { + logic = ((AR | (FOXA1 & AR) | (ATR & AR) | (ATM & AR)) & !RB1 & !MXI1); + rate_up = @logic ? $u_E2F1 : 0; + rate_down = @logic ? 0 : $d_E2F1; +} + +Node eEF2 { + logic = (!eEF2K); + rate_up = @logic ? $u_eEF2 : 0; + rate_down = @logic ? 0 : $d_eEF2; +} + +Node eEF2K { + logic = (p90RSK | p70S6kab); + rate_up = @logic ? $u_eEF2K : 0; + rate_down = @logic ? 0 : $d_eEF2K; +} + +Node EGF { + logic = (EGF); + rate_up = @logic ? $u_EGF : 0; + rate_down = @logic ? 0 : $d_EGF; +} + +Node EGFR { + logic = ((!TGFBR & !FRS2 & !EGFR & !PKC & (ERK | Androgen | EGF)) | (!TGFBR & !FRS2 & (Androgen | EGF))); + rate_up = @logic ? $u_EGFR : 0; + rate_down = @logic ? 0 : $d_EGFR; +} + +Node EMT { + logic = (CDH2 & !E_cadherin & !FOXA1); + rate_up = @logic ? $u_EMT : 0; + rate_down = @logic ? 0 : $d_EMT; +} + +Node EP300 { + logic = (AKT); + rate_up = @logic ? $u_EP300 : 0; + rate_down = @logic ? 0 : $d_EP300; +} + +Node ERG { + logic = (ERK); + rate_up = @logic ? $u_ERG : 0; + rate_down = @logic ? 0 : $d_ERG; +} + +Node ERK { + logic = (RAF | MEK1_2); + rate_up = @logic ? $u_ERK : 0; + rate_down = @logic ? 0 : $d_ERK; +} + +Node ETS1 { + logic = (!p53 & (RTK | ERK)); + rate_up = @logic ? $u_ETS1 : 0; + rate_down = @logic ? 0 : $d_ETS1; +} + +Node ETV1 { + logic = (ETS1 | MEK1_2); + rate_up = @logic ? $u_ETV1 : 0; + rate_down = @logic ? 0 : $d_ETV1; +} + +Node EZH2 { + logic = (AKT & E2F1 & (ERG | AR_ERG)); + rate_up = @logic ? $u_EZH2 : 0; + rate_down = @logic ? 0 : $d_EZH2; +} + +Node E_cadherin { + logic = ((beta_catenin | AR_ERG) & !Snail & !ERG & !NF_kB & !Slug); + rate_up = @logic ? $u_E_cadherin : 0; + rate_down = @logic ? 0 : $d_E_cadherin; +} + +Node FADD { + logic = (PTCH1 | TNFalpha) & !SHH & !MAP3K1_3; + rate_up = @logic ? $u_FADD : 0; + rate_down = @logic ? 0 : $d_FADD; +} + +Node FGF { + logic = (FGF); + rate_up = @logic ? $u_FGF : 0; + rate_down = @logic ? 0 : $d_FGF; +} + +Node FGFR3 { + logic = ((FGF | (FGF & RUNX2)) & !FRS2 & !PKC & !TGFBR); + rate_up = @logic ? $u_FGFR3 : 0; + rate_down = @logic ? 0 : $d_FGFR3; +} + +Node FOS { + logic = (ERK | ETS1 | AR); + rate_up = @logic ? $u_FOS : 0; + rate_down = @logic ? 0 : $d_FOS; +} + +Node FOXA1 { + logic = (FOXO); + rate_up = @logic ? $u_FOXA1 : 0; + rate_down = @logic ? 0 : $d_FOXA1; +} + +Node FOXO { + logic = (MAP3K1_3 & JNK & !AKT); + rate_up = @logic ? $u_FOXO : 0; + rate_down = @logic ? 0 : $d_FOXO; +} + +Node FRS2 { + logic = (!ERK & !EGFR & FGFR3 & !FRS2 & !TGFBR); + rate_up = @logic ? $u_FRS2 : 0; + rate_down = @logic ? 0 : $d_FRS2; +} + +Node fused_event { + logic = (fused_event); + rate_up = @logic ? $u_fused_event : 0; + rate_down = @logic ? 0 : $d_fused_event; +} + +Node GADD45 { + logic = (SMAD | p53); + rate_up = @logic ? $u_GADD45 : 0; + rate_down = @logic ? 0 : $d_GADD45; +} + +Node GLI { + logic = ((WNT | SMO) & !SPOP); + rate_up = @logic ? $u_GLI : 0; + rate_down = @logic ? 0 : $d_GLI; +} + +Node GLUT1 { + logic = ((HIF1 | MYC_MAX | AKT) & Nutrients); + rate_up = @logic ? $u_GLUT1 : 0; + rate_down = @logic ? 0 : $d_GLUT1; +} + + + +Node GSH { + logic = (MYC_MAX | NF_kB | p21); + rate_up = @logic ? $u_GSH : 0; + rate_down = @logic ? 0 : $d_GSH; +} + +Node GSK3 { + logic = (!AKT & !Dsh & MEK1_2 & !mTORC2 & !p90RSK); + rate_up = @logic ? $u_GSK3 : 0; + rate_down = @logic ? 0 : $d_GSK3; +} + +Node HIF1 { + logic = (!PHDs & !VHL & !p53 & !FOXO & (HSPs | mTORC1 | mTORC2 | Hypoxia | MYC_MAX)); + rate_up = @logic ? $u_HIF1 : 0; + rate_down = @logic ? 0 : $d_HIF1; +} + +Node HSPs { + logic = ((PKC | FOXA1 | Carcinogen) & !BRCA1 & !E2F1 & !AKT); + rate_up = @logic ? $u_HSPs : 0; + rate_down = @logic ? 0 : $d_HSPs; +} + + +Node Hypoxia { + logic = (Hypoxia); + rate_up = @logic ? $u_Hypoxia : 0; + rate_down = @logic ? 0 : $d_Hypoxia; +} + +Node IDH1 { + logic = (SMAD | FOXA1 | mTORC2 | ((SMAD | mTORC2 | FOXA1) & MEK1_2)); + rate_up = @logic ? $u_IDH1 : 0; + rate_down = @logic ? 0 : $d_IDH1; +} + +Node IKK { + logic = ((mTORC2 | AKT) & (PKC | TAK1 | ETS1) & !PHDs & !p53); + rate_up = @logic ? $u_IKK : 0; + rate_down = @logic ? 0 : $d_IKK; +} + +Node Invasion { + logic = ((CDH2 & SMAD) | (CDH2 & SMAD & EZH2) | beta_catenin); + rate_up = @logic ? $u_Invasion : 0; + rate_down = @logic ? 0 : $d_Invasion; +} + +Node JNK { + logic = ((ATM | GADD45 | TAK1 | MAP3K1_3) & !ERK & !p38); + rate_up = @logic ? $u_JNK : 0; + rate_down = @logic ? 0 : $d_JNK; +} + +Node JUN { + logic = (AR | ETS1 | JNK); + rate_up = @logic ? $u_JUN : 0; + rate_down = @logic ? 0 : $d_JUN; +} + +Node Lactic_acid { + logic = (LDHA); + rate_up = @logic ? $u_Lactic_acid : 0; + rate_down = @logic ? 0 : $d_Lactic_acid; +} + +Node LDHA { + logic = (HIF1 | MYC_MAX | IDH1); + rate_up = @logic ? $u_LDHA : 0; + rate_down = @logic ? 0 : $d_LDHA; +} + +Node MAP3K1_3 { + logic = (RAS & !(FOS | JUN | JNK | p38)); + rate_up = @logic ? $u_MAP3K1_3 : 0; + rate_down = @logic ? 0 : $d_MAP3K1_3; +} + + +Node MDM2 { + logic = (((AKT | p53) & DAXX & !p14ARF & !ATR & !ATM)); + rate_up = @logic ? $u_MDM2 : 0; + rate_down = @logic ? 0 : $d_MDM2; +} + +Node MED12 { + logic = (!GLI); + rate_up = @logic ? $u_MED12 : 0; + rate_down = @logic ? 0 : $d_MED12; +} + +Node MEK1_2 { + logic = (MAP3K1_3 | RAF | PDK1); + rate_up = @logic ? $u_MEK1_2 : 0; + rate_down = @logic ? 0 : $d_MEK1_2; +} + +Node Metastasis { + logic = (Migration & AR_ERG); + rate_up = @logic ? $u_Metastasis : 0; + rate_down = @logic ? 0 : $d_Metastasis; +} + +Node Migration { + logic = (((AKT & ERK) | (AKT & ETV1)) & Invasion & EMT); + rate_up = @logic ? $u_Migration : 0; + rate_down = @logic ? 0 : $d_Migration; +} + +Node mTORC1 { + logic = ((AKT | (AKT & Rheb)) & !AMPK & !TSC1_2); + rate_up = @logic ? $u_mTORC1 : 0; + rate_down = @logic ? 0 : $d_mTORC1; +} + +Node mTORC2 { + logic = ((!AMPK & RAGS & Rheb) | (AKT & !AMPK & Rheb) | (AKT & !AMPK & RAGS) | (AKT & RAGS & Rheb & !AMPK)); + rate_up = @logic ? $u_mTORC2 : 0; + rate_down = @logic ? 0 : $d_mTORC2; +} + +Node MXI1 { + logic = (HIF1); + rate_up = @logic ? $u_MXI1 : 0; + rate_down = @logic ? 0 : $d_MXI1; +} + +Node MYC { + logic = ((GLI | ERK | TCF | JUN | FOS | AR_ERG | ERG | NF_kB | SHH) & (mTORC1 | E2F1 | p38) & !HIF1); + rate_up = @logic ? $u_MYC : 0; + rate_down = @logic ? 0 : $d_MYC; +} + +Node MYC_MAX { + logic = (MYC & !MXI1 & !TGFBR & !SMAD); + rate_up = @logic ? $u_MYC_MAX : 0; + rate_down = @logic ? 0 : $d_MYC_MAX; +} + +Node NCOA3 { + logic = (!SPOP & p38); + rate_up = @logic ? $u_NCOA3 : 0; + rate_down = @logic ? 0 : $d_NCOA3; +} + +Node NCOR1 { + logic = (!AKT); + rate_up = @logic ? $u_NCOR1 : 0; + rate_down = @logic ? 0 : $d_NCOR1; +} + +Node NCOR2 { + logic = (!AKT & !FOXO); + rate_up = @logic ? $u_NCOR2 : 0; + rate_down = @logic ? 0 : $d_NCOR2; +} + +Node NF1 { + logic = (!PKC); + rate_up = @logic ? $u_NF1 : 0; + rate_down = @logic ? 0 : $d_NF1; +} + +Node NF_kB { + logic = ((E_cadherin | IKK | DNA_Damage) & (NCOA3 | PIP3 | Snail)); + rate_up = @logic ? $u_NF_kB : 0; + rate_down = @logic ? 0 : $d_NF_kB; +} + +Node NKX3_1 { + logic = (PKC & AR & !ERG & !AR_ERG); + rate_up = @logic ? $u_NKX3_1 : 0; + rate_down = @logic ? 0 : $d_NKX3_1; +} + +Node Nutrients { + logic = (Nutrients); + rate_up = @logic ? $u_Nutrients : 0; + rate_down = @logic ? 0 : $d_Nutrients; +} + +Node p14ARF { + logic = (E2F1 & MYC_MAX & RAS); + rate_up = @logic ? $u_p14ARF : 0; + rate_down = @logic ? 0 : $d_p14ARF; +} + +Node p15 { + logic = (ZBTB17); + rate_up = @logic ? $u_p15 : 0; + rate_down = @logic ? 0 : $d_p15; +} + +Node p21 { + logic = ((p53 | SMAD | HIF1 | ZBTB17) & !TERT & !MYC_MAX & !MDM2 & !AKT & !ERK); + rate_up = @logic ? $u_p21 : 0; + rate_down = @logic ? 0 : $d_p21; +} + +Node p38 { + logic = (MAP3K1_3 & !ERK & !GADD45); + rate_up = @logic ? $u_p38 : 0; + rate_down = @logic ? 0 : $d_p38; +} + +Node p53 { + logic = ((Acidosis | CHK1_2 | p38 | HIF1) & !BCL2 & !MDM2 & !HSPs & !Snail); + rate_up = @logic ? $u_p53 : 0; + rate_down = @logic ? 0 : $d_p53; +} + +Node p70S6kab { + logic = (mTORC2 | PDK1); + rate_up = @logic ? $u_p70S6kab : 0; + rate_down = @logic ? 0 : $d_p70S6kab; +} + +Node p90RSK { + logic = (PDK1 | ERK); + rate_up = @logic ? $u_p90RSK : 0; + rate_down = @logic ? 0 : $d_p90RSK; +} + +Node PDK1 { + logic = (HIF1 | MYC_MAX | PIP3); + rate_up = @logic ? $u_PDK1 : 0; + rate_down = @logic ? 0 : $d_PDK1; +} + +Node PHDs { + logic = (!Hypoxia & ROS); + rate_up = @logic ? $u_PHDs : 0; + rate_down = @logic ? 0 : $d_PHDs; +} + +Node PI3K { + logic = (TGFBR | FRS2 | EGFR); + rate_up = @logic ? $u_PI3K : 0; + rate_down = @logic ? 0 : $d_PI3K; +} + +Node PIP3 { + logic = ((!p53 & PI3K & !PTEN) | (!p53 & PI3K)); + rate_up = @logic ? $u_PIP3 : 0; + rate_down = @logic ? 0 : $d_PIP3; +} + +Node PKC { + logic = (RTK & WNT); + rate_up = @logic ? $u_PKC : 0; + rate_down = @logic ? 0 : $d_PKC; +} + +Node Proliferation { + logic = (CyclinB | CyclinD); + rate_up = @logic ? $u_Proliferation : 0; + rate_down = @logic ? 0 : $d_Proliferation; +} + +Node PTCH1 { + logic = (!SHH & GLI); + rate_up = @logic ? $u_PTCH1 : 0; + rate_down = @logic ? 0 : $d_PTCH1; +} + +Node PTEN { + logic = ((!NF_kB & !Snail & FGFR3 & p53) | (!NF_kB & !Snail & p53)); + rate_up = @logic ? $u_PTEN : 0; + rate_down = @logic ? 0 : $d_PTEN; +} + + +Node RAF { + logic = (!EZH2 & RAS) | (EZH2); + rate_up = @logic ? $u_RAF : 0; + rate_down = @logic ? 0 : $d_RAF; +} + +Node RAGS { + logic = (!Hypoxia & Nutrients); + rate_up = @logic ? $u_RAGS : 0; + rate_down = @logic ? 0 : $d_RAGS; +} + +Node RAS { + logic = (EGFR | TGFBR | FRS2 | FGFR3); + rate_up = @logic ? $u_RAS : 0; + rate_down = @logic ? 0 : $d_RAS; +} + +Node RB1 { + logic = (!CyclinB & !CyclinD & CHK1_2 & !p53 & !AMPK); + rate_up = @logic ? $u_RB1 : 0; + rate_down = @logic ? 0 : $d_RB1; +} + +Node Rheb { + logic = (!TSC1_2); + rate_up = @logic ? $u_Rheb : 0; + rate_down = @logic ? 0 : $d_Rheb; +} + +Node ROS { + logic = ((COX4I2 | Hypoxia) & !GSH); + rate_up = @logic ? $u_ROS : 0; + rate_down = @logic ? 0 : $d_ROS; +} + +Node RTK { + logic = (EGFR | FGFR3); + rate_up = @logic ? $u_RTK : 0; + rate_down = @logic ? 0 : $d_RTK; +} + +Node RUNX2 { + logic = (!ETS1 & !FOXO & Slug) | (ETS1 & !FOXO); + rate_up = @logic ? $u_RUNX2 : 0; + rate_down = @logic ? 0 : $d_RUNX2; +} + +Node SHH { + logic = (!BMP2 & !ATR); + rate_up = @logic ? $u_SHH : 0; + rate_down = @logic ? 0 : $d_SHH; +} + +Node Slug { + logic = ((TCF | NF_kB) & !DAXX & !p53 & !MDM2); + rate_up = @logic ? $u_Slug : 0; + rate_down = @logic ? 0 : $d_Slug; +} + +Node SMAD { + logic = ((TNFalpha | TGFBR) & !AR); + rate_up = @logic ? $u_SMAD : 0; + rate_down = @logic ? 0 : $d_SMAD; +} + +Node SMO { + logic = (!PTCH1 & SHH); + rate_up = @logic ? $u_SMO : 0; + rate_down = @logic ? 0 : $d_SMO; +} + +Node Snail { + logic = ((GLI | NF_kB | SMAD | beta_catenin) & !GSK3 & !p53); + rate_up = @logic ? $u_Snail : 0; + rate_down = @logic ? 0 : $d_Snail; +} + +Node SPOP { + logic = (SPOP); + rate_up = @logic ? $u_SPOP : 0; + rate_down = @logic ? 0 : $d_SPOP; +} + +Node TAK1 { + logic = (TGFBR | TNFalpha); + rate_up = @logic ? $u_TAK1 : 0; + rate_down = @logic ? 0 : $d_TAK1; +} + +Node TCF { + logic = ((beta_catenin | AR_ERG | ERG) & !TAK1); + rate_up = @logic ? $u_TCF : 0; + rate_down = @logic ? 0 : $d_TCF; +} + +Node TERT { + logic = ((GLI | AKT | HIF1 | MYC_MAX | NF1 | NF_kB | MYC_MAX) & !ZBTB17 & !p53 & !eEF2 & !SMAD); + rate_up = @logic ? $u_TERT : 0; + rate_down = @logic ? 0 : $d_TERT; +} + +Node TGFb { + logic = (TGFb); + rate_up = @logic ? $u_TGFb : 0; + rate_down = @logic ? 0 : $d_TGFb; +} + +Node TGFBR { + logic = ((TGFb | (HIF1 & TGFb)) & !MED12); + rate_up = @logic ? $u_TGFBR : 0; + rate_down = @logic ? 0 : $d_TGFBR; +} + +Node TNFalpha { + logic = (TNFalpha); + rate_up = @logic ? $u_TNFalpha : 0; + rate_down = @logic ? 0 : $d_TNFalpha; +} + +Node TSC1_2 { + logic = ((AMPK | p53 | HIF1) & !AKT & !ERK & !RAF & !p90RSK); + rate_up = @logic ? $u_TSC1_2 : 0; + rate_down = @logic ? 0 : $d_TSC1_2; +} + +Node TWIST1 { + logic = (Snail | beta_catenin); + rate_up = @logic ? $u_TWIST1 : 0; + rate_down = @logic ? 0 : $d_TWIST1; +} + +Node VEGF { + logic = (HIF1 & MYC_MAX); + rate_up = @logic ? $u_VEGF : 0; + rate_down = @logic ? 0 : $d_VEGF; +} + +Node VHL { + logic = (!Hypoxia & !ROS); + rate_up = @logic ? $u_VHL : 0; + rate_down = @logic ? 0 : $d_VHL; +} + +Node WNT { + logic = ((((ERG | AR_ERG) & GLI) | ERG | AR_ERG) & !p53); + rate_up = @logic ? $u_WNT : 0; + rate_down = @logic ? 0 : $d_WNT; +} + +Node YWHAZ { + logic = (AR); + rate_up = @logic ? $u_YWHAZ : 0; + rate_down = @logic ? 0 : $d_YWHAZ; +} + +Node ZBTB17 { + logic = (!MYC_MAX & AR); + rate_up = @logic ? $u_ZBTB17 : 0; + rate_down = @logic ? 0 : $d_ZBTB17; +} + diff --git a/config/boolean_network/Montagud2022_Prostate_Cancer.cfg b/config/boolean_network/Montagud2022_Prostate_Cancer.cfg new file mode 100644 index 0000000..7ddde6c --- /dev/null +++ b/config/boolean_network/Montagud2022_Prostate_Cancer.cfg @@ -0,0 +1,431 @@ +$u_Acidosis = 1; +$d_Acidosis = 1; +$u_AKT = 1; +$d_AKT = 1; +$u_AMP_ATP = 1; +$d_AMP_ATP = 1; +$u_AMPK = 1; +$d_AMPK = 1; +$u_Androgen = 1; +$d_Androgen = 1; +$u_Apoptosis = 1; +$d_Apoptosis = 1; +$u_AR = 1; +$d_AR = 1; +$u_AR_ERG = 1; +$d_AR_ERG = 1; +$u_ATM = 1; +$d_ATM = 1; +$u_ATR = 1; +$d_ATR = 1; +$u_AXIN1 = 1; +$d_AXIN1 = 1; +$u_BAD = 1; +$d_BAD = 1; +$u_Bak = 1; +$d_Bak = 1; +$u_BAX = 1; +$d_BAX = 1; +$u_BCL2 = 1; +$d_BCL2 = 1; +$u_Bcl_XL = 1; +$d_Bcl_XL = 1; +$u_beta_catenin = 1; +$d_beta_catenin = 1; +$u_BIRC5 = 1; +$d_BIRC5 = 1; +$u_BMP2 = 1; +$d_BMP2 = 1; +$u_BRCA1 = 1; +$d_BRCA1 = 1; +$u_BRCA2 = 1; +$d_BRCA2 = 1; +$u_Carcinogen = 1; +$d_Carcinogen = 1; +$u_Caspase3 = 1; +$d_Caspase3 = 1; +$u_Caspase8 = 1; +$d_Caspase8 = 1; +$u_Caspase9 = 1; +$d_Caspase9 = 1; +$u_CDH2 = 1; +$d_CDH2 = 1; +$u_cFLAR = 1; +$d_cFLAR = 1; +$u_CHK1_2 = 1; +$d_CHK1_2 = 1; +$u_COX4I2 = 1; +$d_COX4I2 = 1; +$u_CyclinB = 1; +$d_CyclinB = 1; +$u_CyclinD = 1; +$d_CyclinD = 1; +$u_CytoC = 1; +$d_CytoC = 1; +$u_APAF1 = 1; +$d_APAF1 = 1; +$u_DAXX = 1; +$d_DAXX = 1; +$u_DNA_Damage = 1; +$d_DNA_Damage = 1; +$u_DNA_Repair = 1; +$d_DNA_Repair = 1; +$u_Dsh = 1; +$d_Dsh = 1; +$u_E2F1 = 1; +$d_E2F1 = 1; +$u_E_cadherin = 1; +$d_E_cadherin = 1; +$u_eEF2 = 1; +$d_eEF2 = 1; +$u_eEF2K = 1; +$d_eEF2K = 1; +$u_EMT = 1; +$d_EMT = 1; +$u_EP300 = 1; +$d_EP300 = 1; +$u_ERG = 1; +$d_ERG = 1; +$u_ERK = 1; +$d_ERK = 1; +$u_ETS1 = 1; +$d_ETS1 = 1; +$u_ETV1 = 1; +$d_ETV1 = 1; +$u_EZH2 = 1; +$d_EZH2 = 1; +$u_FADD = 1; +$d_FADD = 1; +$u_FOS = 1; +$d_FOS = 1; +$u_JUN = 1; +$d_JUN = 1; +$u_FOXA1 = 1; +$d_FOXA1 = 1; +$u_FOXO = 1; +$d_FOXO = 1; +$u_EGF = 1; +$d_EGF = 1; +$u_EGFR = 1; +$d_EGFR = 1; +$u_FGF = 1; +$d_FGF = 1; +$u_FGFR3 = 1; +$d_FGFR3 = 1; +$u_FRS2 = 1; +$d_FRS2 = 1; +$u_GADD45 = 1; +$d_GADD45 = 1; +$u_GLI = 1; +$d_GLI = 1; +$u_GLUT1 = 1; +$d_GLUT1 = 1; +$u_GSH = 1; +$d_GSH = 1; +$u_GSK3 = 1; +$d_GSK3 = 1; +$u_HIF1 = 1; +$d_HIF1 = 1; +$u_HSPs = 1; +$d_HSPs = 1; +$u_Hypoxia = 1; +$d_Hypoxia = 1; +$u_IDH1 = 1; +$d_IDH1 = 1; +$u_Invasion = 1; +$d_Invasion = 1; +$u_IKK = 1; +$d_IKK = 1; +$u_JNK = 1; +$d_JNK = 1; +$u_Lactic_acid = 1; +$d_Lactic_acid = 1; +$u_LDHA = 1; +$d_LDHA = 1; +$u_MAP3K1_3 = 1; +$d_MAP3K1_3 = 1; +$u_MDM2 = 1; +$d_MDM2 = 1; +$u_MED12 = 1; +$d_MED12 = 1; +$u_MEK1_2 = 1; +$d_MEK1_2 = 1; +$u_Metastasis = 1; +$d_Metastasis = 1; +$u_Migration = 1; +$d_Migration = 1; +$u_mTORC1 = 1; +$d_mTORC1 = 1; +$u_mTORC2 = 1; +$d_mTORC2 = 1; +$u_MXI1 = 1; +$d_MXI1 = 1; +$u_MYC = 1; +$d_MYC = 1; +$u_MYC_MAX = 1; +$d_MYC_MAX = 1; +$u_NCOA3 = 1; +$d_NCOA3 = 1; +$u_NCOR1 = 1; +$d_NCOR1 = 1; +$u_NCOR2 = 1; +$d_NCOR2 = 1; +$u_NF1 = 1; +$d_NF1 = 1; +$u_NF_kB = 1; +$d_NF_kB = 1; +$u_NKX3_1 = 1; +$d_NKX3_1 = 1; +$u_Nutrients = 1; +$d_Nutrients = 1; +$u_p14ARF = 1; +$d_p14ARF = 1; +$u_p15 = 1; +$d_p15 = 1; +$u_p21 = 1; +$d_p21 = 1; +$u_p38 = 1; +$d_p38 = 1; +$u_p53 = 1; +$d_p53 = 1; +$u_p70S6kab = 1; +$d_p70S6kab = 1; +$u_p90RSK = 1; +$d_p90RSK = 1; +$u_PDK1 = 1; +$d_PDK1 = 1; +$u_PHDs = 1; +$d_PHDs = 1; +$u_PI3K = 1; +$d_PI3K = 1; +$u_PIP3 = 1; +$d_PIP3 = 1; +$u_PKC = 1; +$d_PKC = 1; +$u_Proliferation = 1; +$d_Proliferation = 1; +$u_PTCH1 = 1; +$d_PTCH1 = 1; +$u_PTEN = 1; +$d_PTEN = 1; +$u_RAF = 1; +$d_RAF = 1; +$u_RAGS = 1; +$d_RAGS = 1; +$u_RAS = 1; +$d_RAS = 1; +$u_RB1 = 1; +$d_RB1 = 1; +$u_Rheb = 1; +$d_Rheb = 1; +$u_ROS = 1; +$d_ROS = 1; +$u_RTK = 1; +$d_RTK = 1; +$u_RUNX2 = 1; +$d_RUNX2 = 1; +$u_SHH = 1; +$d_SHH = 1; +$u_Slug = 1; +$d_Slug = 1; +$u_SMAD = 1; +$d_SMAD = 1; +$u_SMO = 1; +$d_SMO = 1; +$u_Snail = 1; +$d_Snail = 1; +$u_SPOP = 1; +$d_SPOP = 1; +$u_TAK1 = 1; +$d_TAK1 = 1; +$u_TCF = 1; +$d_TCF = 1; +$u_TERT = 1; +$d_TERT = 1; +$u_TGFb = 1; +$d_TGFb = 1; +$u_TGFBR = 1; +$d_TGFBR = 1; +$u_fused_event = 1; +$d_fused_event = 1; +$u_TNFalpha = 1; +$d_TNFalpha = 1; +$u_TSC1_2 = 1; +$d_TSC1_2 = 1; +$u_TWIST1 = 1; +$d_TWIST1 = 1; +$u_VEGF = 1; +$d_VEGF = 1; +$u_VHL = 1; +$d_VHL = 1; +$u_WNT = 1; +$d_WNT = 1; +$u_YWHAZ = 1; +$d_YWHAZ = 1; +$u_ZBTB17 = 1; +$d_ZBTB17 = 1; + +discrete_time = 0; +use_physrandgen = FALSE; +seed_pseudorandom = 100; +// sample_count = 500000; +sample_count = 5000; + +max_time = 50; +//time_tick = 0.01; +time_tick = 0.1; +thread_count = 1; + +statdist_traj_count = 100; +statdist_cluster_threshold = 0.9; +display_traj = 0; +statdist_similarity_cache_max_size = 20000; + + + +Acidosis.is_internal=1; +AKT.is_internal=1; +AMPK.is_internal=1; +AMP_ATP.is_internal=1; +Androgen.is_internal=1; +APAF1.is_internal=1; +Apoptosis.is_internal=0; +AR.is_internal=1; +AR_ERG.is_internal=1; +ATM.is_internal=1; +ATR.is_internal=1; +AXIN1.is_internal=1; +BAD.is_internal=1; +Bak.is_internal=1; +BAX.is_internal=1; +BCL2.is_internal=1; +Bcl_XL.is_internal=1; +beta_catenin.is_internal=1; +BIRC5.is_internal=1; +BMP2.is_internal=1; +BRCA1.is_internal=1; +BRCA2.is_internal=1; +Carcinogen.is_internal=1; +Caspase3.is_internal=1; +Caspase8.is_internal=1; +Caspase9.is_internal=1; +CDH2.is_internal=1; +cFLAR.is_internal=1; +CHK1_2.is_internal=1; +COX4I2.is_internal=1; +CyclinB.is_internal=1; +CyclinD.is_internal=1; +CytoC.is_internal=1; +DAXX.is_internal=1; +DNA_Damage.is_internal=1; +DNA_Repair.is_internal=1; +Dsh.is_internal=1; +E2F1.is_internal=1; +eEF2.is_internal=1; +eEF2K.is_internal=1; +EGF.is_internal=1; +EGFR.is_internal=1; +EMT.is_internal=1; +EP300.is_internal=1; +ERG.is_internal=1; +ERK.is_internal=1; +ETS1.is_internal=1; +ETV1.is_internal=1; +EZH2.is_internal=1; +E_cadherin.is_internal=1; +FADD.is_internal=1; +FGF.is_internal=1; +FGFR3.is_internal=1; +FOS.is_internal=1; +FOXA1.is_internal=1; +FOXO.is_internal=1; +FRS2.is_internal=1; +fused_event.is_internal=1; +GADD45.is_internal=1; +GLI.is_internal=1; +GLUT1.is_internal=1; +GSH.is_internal=1; +GSK3.is_internal=1; +HIF1.is_internal=1; +HSPs.is_internal=1; +Hypoxia.is_internal=1; +IDH1.is_internal=1; +IKK.is_internal=1; +Invasion.is_internal=1; +JNK.is_internal=1; +JUN.is_internal=1; +Lactic_acid.is_internal=1; +LDHA.is_internal=1; +MAP3K1_3.is_internal=1; +MDM2.is_internal=1; +MED12.is_internal=1; +MEK1_2.is_internal=1; +Metastasis.is_internal=0; +Migration.is_internal=1; +mTORC1.is_internal=1; +mTORC2.is_internal=1; +MXI1.is_internal=1; +MYC.is_internal=1; +MYC_MAX.is_internal=1; +NCOA3.is_internal=1; +NCOR1.is_internal=1; +NCOR2.is_internal=1; +NF1.is_internal=1; +NF_kB.is_internal=1; +NKX3_1.is_internal=1; +Nutrients.is_internal=1; +p14ARF.is_internal=1; +p15.is_internal=1; +p21.is_internal=1; +p38.is_internal=1; +p53.is_internal=1; +p70S6kab.is_internal=1; +p90RSK.is_internal=1; +PDK1.is_internal=1; +PHDs.is_internal=1; +PI3K.is_internal=1; +PIP3.is_internal=1; +PKC.is_internal=1; +Proliferation.is_internal=0; +PTCH1.is_internal=1; +PTEN.is_internal=1; +RAF.is_internal=1; +RAGS.is_internal=1; +RAS.is_internal=1; +RB1.is_internal=1; +Rheb.is_internal=1; +ROS.is_internal=1; +RTK.is_internal=1; +RUNX2.is_internal=1; +SHH.is_internal=1; +Slug.is_internal=1; +SMAD.is_internal=1; +SMO.is_internal=1; +Snail.is_internal=1; +SPOP.is_internal=1; +TAK1.is_internal=1; +TCF.is_internal=1; +TERT.is_internal=1; +TGFb.is_internal=1; +TGFBR.is_internal=1; +TNFalpha.is_internal=1; +TSC1_2.is_internal=1; +TWIST1.is_internal=1; +VEGF.is_internal=1; +VHL.is_internal=1; +WNT.is_internal=1; +YWHAZ.is_internal=1; +ZBTB17.is_internal=1; + + +//[EGF].istate= 0 [0] , 1 [1]; +//[FGF].istate= 1 [0] , 0 [1]; +//[TGFb].istate= 1 [0] , 0 [1]; +//[Nutrients].istate= 1 [0] , 0 [1]; +//[Hypoxia].istate= 1 [0] , 0 [1]; +//[Acidosis].istate= 1 [0] , 0 [1]; +//[Androgen].istate= 1 [0] , 0 [1]; +//[fused_event].istate= 1 [0] , 0 [1]; +//[TNFalpha].istate= 1 [0] , 0 [1]; +//[SPOP].istate= 1 [0] , 0 [1]; +//[Carcinogen].istate= 1 [0] , 0 [1]; \ No newline at end of file diff --git a/config/init2.csv b/config/init2.csv new file mode 100644 index 0000000..bcb5d10 --- /dev/null +++ b/config/init2.csv @@ -0,0 +1,1138 @@ +x,y,z,type,volume +-51.2137,-4.55442,-83.2907,default,8.5 +-37.5888,-33.2832,-84.4271,default,9.8791 +-37.6541,-13.6737,-86.5638,default,8.5 +-38.7093,0.223641,-85.6339,default,8.93259 +-35.4237,20.7316,-84.4495,default,10.0373 +-21.6863,-40.8023,-87.282,default,9.31441 +-20.457,-22.107,-86.0417,default,8.72424 +-21.191,-8.58699,-84.1779,default,8.68751 +-20.1745,10.7166,-86.0735,default,8.9461 +-22.5775,28.6424,-83.8703,default,9.1147 +-9.02799,-49.3179,-83.452,default,10.3831 +-6.88653,-30.1996,-87.0069,default,9.25676 +-6.70109,-17.1687,-86.3095,default,8.92614 +-6.68777,0.159854,-85.1603,default,10.1914 +-7.77875,19.9209,-83.5472,default,10.1998 +-7.84761,38.2974,-83.531,default,9.71243 +7.60351,-40.894,-85.683,default,10.0896 +5.94894,-24.3406,-83.397,default,10.0954 +8.5685,-6.01829,-85.6375,default,8.76963 +6.47517,10.8833,-86.7981,default,8.73724 +7.74972,27.7539,-87.4803,default,8.84193 +8.76834,45.41,-83.1479,default,10.2972 +19.9542,-48.817,-84.3397,default,9.44966 +23.8245,-34.3121,-86.4994,default,10.0918 +20.599,-15.664,-85.0455,default,8.5 +22.5894,3.45774,-86.9589,default,8.58914 +23.975,20.4049,-84.5403,default,8.88816 +23.4088,37.8392,-84.8241,default,9.8457 +35.923,-39.8056,-83.6807,default,9.99562 +35.2746,-26.0117,-86.1669,default,8.5 +37.2275,-5.58403,-85.3156,default,10.2046 +36.2089,11.1301,-83.5743,default,10.2277 +37.3746,26.7552,-83.8608,default,10.0868 +-70.5057,-14.7296,-69.1699,default,9.3986 +-57.77,-39.1177,-71.2849,default,9.97762 +-56.5964,-25.7059,-72.4555,default,9.30194 +-54.3462,-8.93067,-70.9266,default,8.5 +-56.197,10.0026,-69.7403,default,10.3383 +-57.7468,28.4292,-71.3538,default,8.5 +-54.5719,46.9411,-68.3717,default,9.52835 +-41.4945,-51.2596,-72.7088,default,9.08313 +-41.2889,-29.884,-71.187,default,9.44447 +-42.3187,-17.0337,-69.4272,default,10.4347 +-39.3438,1.83237,-68.9845,default,8.5 +-42.2973,16.7614,-68.753,default,8.5 +-42.564,34.2374,-69.8245,default,9.48534 +-41.2197,53.3538,-68.963,default,8.5 +-26.3138,-57.0233,-70.1267,default,8.69547 +-28.3779,-42.914,-68.3804,default,10.4235 +-26.1849,-24.6927,-70.2968,default,8.78999 +-24.2139,-8.96024,-72.3287,default,8.5 +-26.7609,11.1367,-69.3157,default,9.33999 +-25.9136,26.784,-69.0695,default,10.0291 +-27.5315,43.6636,-70.7154,default,9.33376 +-27.1511,62.3571,-69.6168,default,9.79464 +-13.7277,-63.7381,-68.929,default,9.87774 +-13.8522,-48.1681,-68.4329,default,8.5 +-11.2932,-31.1591,-72.7621,default,8.91585 +-13.0105,-14.8985,-70.9625,default,9.29638 +-9.69915,2.16642,-72.1614,default,9.45092 +-11.4425,16.464,-70.5036,default,8.82064 +-11.6378,36.7025,-71.2798,default,9.09843 +-10.6213,55.1183,-70.1981,default,9.75011 +2.42839,-56.3773,-68.5683,default,9.01971 +4.27379,-40.3643,-72.4412,default,8.76763 +3.14519,-22.6282,-68.3996,default,10.2393 +4.93459,-8.27177,-71.8139,default,9.90275 +2.19701,10.0154,-69.0748,default,8.5 +4.57629,26.7876,-69.6667,default,8.5 +4.80925,45.7232,-70.9163,default,9.40266 +3.59107,63.6778,-69.9177,default,9.87208 +16.5055,-66.2895,-69.6918,default,9.33398 +15.8373,-47.1268,-71.1983,default,8.71329 +19.7814,-30.3375,-70.7784,default,10.2304 +16.1407,-13.7382,-68.6453,default,8.5 +16.8303,1.02005,-71.2893,default,9.24351 +16.0228,18.2707,-69.0918,default,8.72477 +17.3892,35.5072,-70.6568,default,9.03495 +19.5416,55.1154,-70.1706,default,10.194 +31.1732,-57.8128,-69.489,default,8.5 +31.6423,-38.3552,-68.3793,default,9.87873 +31.7888,-21.9021,-69.5883,default,8.5 +33.8074,-6.30923,-68.7781,default,9.53103 +30.8196,12.4796,-71.8684,default,9.73152 +33.8598,28.5021,-68.486,default,10.0382 +34.0925,43.6135,-71.9384,default,8.5 +46.518,-51.3474,-68.5256,default,9.61922 +46.4042,-30.425,-71.9997,default,9.01313 +47.4938,-13.2805,-71.9913,default,9.9526 +45.1883,1.43848,-69.0932,default,8.5 +47.6824,16.9535,-68.4544,default,10.3912 +49.0084,36.903,-71.9228,default,10.2103 +46.9926,54.2787,-68.5909,default,8.5 +59.7823,-25.7485,-72.1046,default,10.0688 +62.6008,-5.53068,-71.9585,default,8.73835 +61.2494,9.98591,-68.8134,default,9.81409 +-80.4536,-8.30731,-55.2779,default,9.69228 +-80.0676,12.536,-54.4407,default,8.7296 +-65.6547,-48.1027,-54.3077,default,10.1245 +-67.905,-34.1545,-55.0026,default,8.95215 +-65.7414,-12.4622,-56.7221,default,8.50736 +-64.645,1.47282,-53.7336,default,9.72048 +-68.2673,19.5622,-57.7419,default,8.68328 +-66.7533,35.5918,-54.9025,default,8.5 +-52.1017,-59.4633,-54.6993,default,9.7421 +-53.278,-42.4426,-57.7591,default,8.54632 +-51.4119,-24.6579,-57.8428,default,8.5 +-49.6963,-4.70058,-57.0481,default,9.83619 +-51.9463,11.9796,-54.3061,default,9.7551 +-50.9111,27.7188,-57.9436,default,10.3779 +-52.1756,45.2031,-54.0744,default,9.75705 +-50.5619,59.386,-54.1583,default,10.0947 +-38.9515,-66.3592,-56.4023,default,9.78686 +-38.5833,-51.1908,-54.3222,default,9.22818 +-36.5204,-30.9569,-56.2356,default,9.62245 +-36.4406,-15.108,-55.9886,default,10.2702 +-38.1597,2.19579,-54.391,default,8.98033 +-36.2353,21.1679,-57.2353,default,10.2728 +-35.2113,36.8833,-55.0687,default,8.75833 +-37.4919,51.2259,-56.6891,default,10.0445 +-35.5725,70.2157,-57.8402,default,10.4064 +-23.9375,-76.0737,-57.1596,default,9.56038 +-21.903,-56.158,-56.5236,default,9.42137 +-21.2325,-40.4904,-54.5105,default,10.0066 +-24.1622,-22.4078,-56.9349,default,9.91108 +-21.5323,-7.39712,-56.3096,default,8.98657 +-22.5321,9.04005,-56.1996,default,9.44496 +-21.6519,25.4568,-55.8902,default,8.61865 +-21.5105,42.1984,-56.6652,default,8.5 +-22.32,63.6387,-54.5593,default,10.3642 +-22.1562,77.5114,-56.8165,default,9.14647 +-9.37247,-80.802,-55.9402,default,8.5 +-5.59702,-65.5046,-55.9136,default,9.0412 +-6.25705,-47.0426,-54.9532,default,9.62786 +-8.97529,-30.0237,-54.3384,default,9.80216 +-9.12349,-14.0305,-55.4416,default,8.61231 +-7.00974,0.291779,-56.8387,default,8.5 +-5.7966,21.2724,-55.0929,default,10.3787 +-8.51183,36.842,-55.6116,default,10.3709 +-5.7959,54.9486,-55.1889,default,10.4463 +-9.05592,70.2441,-55.0136,default,8.9171 +9.02318,-74.3486,-56.9427,default,8.95921 +6.47402,-58.1854,-56.6403,default,9.9375 +7.11598,-41.8006,-54.9472,default,8.5 +9.30573,-22.5079,-57.1718,default,9.348 +6.09518,-8.23973,-56.7602,default,9.37777 +5.47535,9.88043,-55.2109,default,8.95394 +8.24391,27.6465,-53.8571,default,10.1128 +8.67164,45.1262,-56.1819,default,10.2821 +8.61149,59.5525,-57.973,default,8.76315 +8.46926,79.8464,-54.1441,default,9.33081 +22.066,-64.1055,-56.8885,default,9.79249 +24.0832,-50.2688,-53.688,default,8.97699 +20.0578,-32.4524,-55.2811,default,9.10775 +19.9833,-12.6407,-57.8077,default,9.31056 +23.5401,1.12062,-56.2379,default,9.29185 +23.7389,20.8023,-55.7575,default,10.1452 +22.2786,38.5109,-55.715,default,10.0929 +22.8479,54.2008,-54.0889,default,10.4336 +22.0968,70.6442,-57.6913,default,9.08793 +38.8035,-55.9629,-56.6469,default,9.06067 +34.9061,-38.1022,-54.9593,default,8.60039 +38.5457,-25.4688,-56.3196,default,9.04343 +37.0393,-5.38715,-54.827,default,8.57831 +38.4456,8.03528,-55.0195,default,9.23354 +38.9179,25.2413,-54.8246,default,9.85015 +36.4869,46.2296,-56.6669,default,9.17439 +36.0146,60.5108,-54.0061,default,8.5 +52.6587,-50.9826,-56.4724,default,8.97539 +51.9003,-31.0409,-53.9052,default,9.95776 +52.5396,-14.8954,-53.763,default,8.5 +51.9538,-0.0779929,-54.1729,default,9.99184 +50.4365,18.2076,-56.0715,default,9.0008 +52.924,34.0487,-55.8525,default,9.24176 +52.7328,55.0406,-56.6279,default,10.1122 +64.5395,-40.8632,-56.7462,default,9.03274 +67.5971,-24.9348,-56.1821,default,9.38578 +67.6326,-4.61179,-54.6942,default,8.5 +65.741,12.1089,-53.7646,default,9.54477 +65.8272,26.482,-54.6461,default,8.5 +64.4898,46.1148,-54.0877,default,9.81335 +79.495,-17.0774,-56.7063,default,10.1836 +82.0603,1.16048,-54.1342,default,8.92226 +-87.339,-21.2044,-40.3427,default,9.37018 +-83.7117,-8.57137,-40.1209,default,10.0307 +-86.0366,12.2369,-39.1202,default,9.63572 +-86.6688,29.2633,-38.9191,default,9.84885 +-70.223,-47.6203,-39.8183,default,8.5 +-71.8916,-34.293,-41.8682,default,10.2288 +-71.8661,-14.4103,-41.5606,default,8.5 +-72.7209,3.82389,-41.0727,default,10.2704 +-70.4257,18.8437,-42.0669,default,9.73679 +-69.4887,37.5616,-43.2737,default,9.92192 +-72.6737,51.0324,-41.1348,default,9.59208 +-56.7295,-59.3128,-40.0359,default,10.3288 +-56.7253,-39.1702,-41.7862,default,9.50868 +-53.8017,-25.0217,-40.3444,default,9.31218 +-57.4563,-7.19447,-41.9372,default,10.0834 +-54.6568,9.3984,-39.7332,default,10.2811 +-55.4001,25.8247,-41.6886,default,9.89022 +-57.3201,42.3971,-40.4383,default,9.6706 +-53.7803,60.5905,-39.7575,default,9.62047 +-40.3915,-80.4985,-40.8318,default,8.5 +-41.4018,-65.9838,-38.9194,default,9.46189 +-42.9009,-47.5574,-41.8215,default,8.5 +-42.9674,-31.4699,-42.3279,default,8.64528 +-40.1078,-13.3298,-40.7293,default,9.60474 +-42.075,2.0114,-39.8614,default,9.25091 +-41.7758,19.9275,-42.3552,default,8.59492 +-41.3282,34.2403,-41.4646,default,8.78789 +-39.8897,54.1837,-40.8712,default,9.53739 +-40.7494,67.938,-42.23,default,10.3601 +-27.5978,-72.6844,-42.9771,default,9.39388 +-28.1389,-58.1303,-40.4029,default,10.4418 +-25.0507,-38.5256,-43.04,default,9.23225 +-24.549,-22.2175,-39.671,default,9.9908 +-24.4384,-5.04302,-40.3278,default,8.87426 +-25.4602,9.73004,-41.1855,default,8.5 +-28.2194,27.0146,-41.9463,default,9.3773 +-27.1138,44.2117,-41.8818,default,9.59228 +-27.9601,60.5592,-40.9723,default,9.41372 +-24.8054,77.2105,-41.8196,default,9.57316 +-12.9458,-83.0742,-42.2233,default,8.61093 +-13.1089,-67.697,-39.1017,default,10.0617 +-12.254,-49.3187,-42.076,default,9.18212 +-9.59978,-33.3308,-39.9162,default,9.50911 +-13.4078,-15.7272,-40.6675,default,8.69144 +-10.8838,0.0741679,-41.4586,default,8.66025 +-12.3652,20.2436,-39.2043,default,9.95302 +-9.52621,34.3289,-39.265,default,8.5 +-11.0927,52.8995,-39.0658,default,10.1789 +-11.1058,70.8353,-40.1804,default,9.43087 +-9.77385,87.2367,-39.8671,default,8.5 +2.85384,-89.5309,-42.1402,default,9.11671 +4.72972,-75.0006,-41.1473,default,8.55271 +2.15865,-59.8259,-39.2446,default,9.47364 +3.55339,-40.628,-39.531,default,8.5 +4.89916,-25.4899,-39.0563,default,9.5216 +1.15622,-7.97946,-42.4616,default,10.2613 +3.29397,10.3635,-41.2022,default,8.61838 +4.4974,27.4667,-39.0261,default,8.90471 +0.911987,42.8757,-40.0194,default,10.0973 +1.22502,60.5306,-40.9848,default,8.5 +4.19995,76.5228,-40.8089,default,9.14274 +17.6566,-82.3757,-42.1679,default,8.5 +18.4595,-65.2747,-38.9683,default,10.2625 +18.1282,-46.4505,-40.5286,default,8.89095 +17.7374,-31.7565,-41.3221,default,8.5 +19.2418,-15.5496,-41.7576,default,9.48375 +19.7647,2.02332,-42.3211,default,9.10927 +17.9601,17.6295,-40.0616,default,9.27102 +19.3148,37.0301,-43.2878,default,9.9124 +17.0716,51.9547,-39.7982,default,10.0976 +18.7888,68.4002,-40.7609,default,10.3155 +16.367,87.4287,-41.2298,default,10.0767 +33.0295,-75.6857,-42.571,default,8.64912 +30.4353,-56.5185,-40.2728,default,9.0958 +34.1525,-41.1558,-40.1444,default,10.005 +33.2054,-25.415,-41.2712,default,10.1242 +34.0555,-8.13325,-42.3771,default,8.5 +34.3424,9.98649,-42.6377,default,8.5 +33.9643,29.5344,-39.9485,default,8.93213 +33.509,46.479,-38.9324,default,10.038 +34.2634,59.5417,-39.838,default,9.38769 +33.6537,79.8825,-40.4942,default,8.95437 +47.9018,-65.2492,-41.6284,default,8.94443 +47.0765,-47.7181,-39.6932,default,9.52788 +47.7134,-29.8682,-39.3559,default,10.3176 +46.8568,-15.1857,-42.8916,default,10.067 +46.2689,3.41228,-42.3955,default,8.5 +47.7142,16.6131,-43.2803,default,10.1627 +46.7833,38.4757,-41.1358,default,9.52653 +46.3734,51.7632,-42.8842,default,9.67637 +46.937,69.3571,-39.5378,default,9.92643 +60.525,-55.1084,-38.9969,default,9.8308 +64.0986,-42.0239,-39.7094,default,8.94562 +61.0082,-23.437,-39.6998,default,8.55006 +63.9992,-7.39106,-42.5005,default,9.67674 +63.9823,8.04882,-39.5191,default,10.0114 +63.3148,26.3418,-42.625,default,10.0357 +61.5663,42.1113,-41.5605,default,8.88075 +62.1467,60.5554,-42.2004,default,9.23144 +74.9126,-32.6729,-43.1412,default,9.0112 +77.6674,-14.6984,-41.2798,default,8.62851 +76.2244,-0.343341,-41.5903,default,10.2851 +78.7959,19.9899,-42.841,default,8.99017 +76.5495,34.058,-41.7206,default,9.23964 +90.3873,-4.4781,-40.5319,default,8.7003 +-95.2517,-13.2803,-24.7572,default,8.77145 +-95.6816,1.12904,-25.6424,default,9.92316 +-81.0487,-41.5664,-24.2288,default,9.90428 +-81.9133,-23.4037,-27.5727,default,9.5595 +-79.0703,-4.55991,-26.7144,default,10.0423 +-82.8965,10.8886,-26.5122,default,10.1274 +-82.6557,27.757,-24.9813,default,10.0349 +-80.4063,44.6123,-28.1512,default,9.88358 +-64.1501,-67.9847,-26.035,default,8.5 +-64.5632,-48.9693,-25.992,default,8.77835 +-64.2031,-31.1423,-25.4737,default,9.74862 +-64.1852,-12.8761,-27.0439,default,9.28066 +-65.8477,4.47515,-26.1198,default,8.5 +-65.5186,20.4974,-26.8458,default,8.59094 +-64.7555,35.2026,-27.1252,default,10.0497 +-64.5742,50.6634,-26.1608,default,9.27992 +-66.8181,68.7466,-26.7169,default,9.4554 +-49.6126,-72.2148,-27.8335,default,8.99661 +-49.6343,-58.3236,-26.4492,default,9.25063 +-51.5183,-39.7653,-26.4475,default,9.3425 +-52.9145,-23.2304,-28.0736,default,9.77632 +-50.8356,-7.23692,-27.942,default,9.73264 +-53.489,8.49869,-26.3404,default,8.9409 +-51.2413,26.8153,-24.2423,default,9.14375 +-49.8849,45.6832,-24.4454,default,9.78011 +-50.3951,62.5937,-25.8518,default,8.75947 +-51.8761,78.5868,-28.3069,default,8.72318 +-36.5612,-81.9635,-26.1773,default,10.3133 +-35.1186,-67.6614,-27.044,default,8.88636 +-38.7878,-47.0895,-27.2707,default,10.1598 +-36.1385,-30.1598,-25.7805,default,9.32899 +-34.7438,-13.8239,-26.754,default,8.77558 +-36.678,4.53864,-27.7921,default,8.5 +-38.4474,18.3878,-27.4509,default,9.50184 +-38.6239,34.7271,-24.4748,default,8.5 +-38.1392,52.174,-28.2485,default,9.223 +-38.6265,67.6009,-25.607,default,8.5 +-35.4423,85.7452,-24.7254,default,10.2803 +-22.1616,-90.923,-24.8427,default,10.3383 +-20.0818,-72.1614,-27.0915,default,10.1729 +-20.0742,-59.9874,-26.1794,default,9.74517 +-21.9694,-40.6437,-26.677,default,8.61701 +-21.7506,-21.1018,-24.7522,default,10.094 +-19.931,-5.49239,-28.3544,default,8.5 +-21.3148,11.7015,-25.7034,default,8.5 +-22.8726,28.8553,-27.8912,default,8.64731 +-21.1433,44.8122,-28.102,default,9.74786 +-21.796,62.1662,-26.4303,default,9.66986 +-23.2379,78.8516,-28.0391,default,9.43208 +-5.59682,-80.8497,-28.4584,default,9.37792 +-9.16956,-66.8985,-26.6184,default,9.47884 +-8.66083,-48.6709,-24.2729,default,9.13807 +-8.49633,-29.713,-25.2832,default,8.77274 +-5.88593,-13.1599,-28.0137,default,9.41095 +-5.273,2.10286,-27.6221,default,8.53399 +-6.71341,21.3789,-25.7652,default,9.60397 +-7.05923,35.1477,-27.4604,default,9.34522 +-8.18402,51.4552,-26.5922,default,8.65073 +-9.53472,71.9869,-24.201,default,8.6207 +-9.20044,88.3003,-25.5007,default,8.64271 +9.41126,-90.0826,-25.3063,default,10.3115 +6.09152,-76.4381,-25.1917,default,9.7822 +9.38199,-58.7326,-25.8922,default,9.33001 +5.45889,-39.9542,-24.9873,default,9.62018 +8.18713,-25.7348,-27.1688,default,8.72878 +9.14196,-8.97796,-27.7804,default,10.2426 +5.1122,9.74022,-24.8907,default,9.14542 +9.33716,29.6506,-27.9936,default,10.081 +6.09072,43.7085,-25.3146,default,10.3766 +7.06326,63.6953,-24.5011,default,10.1832 +5.80807,77.9381,-28.4844,default,9.05381 +8.17679,95.7279,-26.7126,default,10.0208 +22.3165,-82.5714,-25.1377,default,9.14669 +23.5964,-65.6997,-25.8596,default,9.51617 +23.4863,-47.0534,-27.7351,default,10.114 +22.773,-31.7965,-26.0708,default,9.7203 +21.8128,-16.1318,-25.5694,default,10.0142 +22.3296,1.01867,-26.8838,default,9.03568 +23.4044,18.1721,-28.4673,default,9.62583 +23.0296,34.8937,-27.5028,default,9.48752 +20.2653,51.1255,-24.3739,default,9.78732 +19.9228,69.1019,-27.3735,default,9.41126 +23.4892,84.4608,-24.661,default,9.48309 +38.2773,-75.936,-26.9959,default,9.08221 +34.8313,-56.9276,-27.2902,default,8.68961 +37.4541,-39.9235,-27.2435,default,9.92192 +37.5488,-23.2548,-28.0321,default,9.98008 +37.3956,-7.24578,-24.6629,default,9.68117 +34.7348,9.06735,-26.3174,default,8.8148 +37.2796,25.3729,-24.6967,default,9.96675 +36.8391,42.2221,-27.3689,default,9.84583 +38.3171,63.6516,-24.9795,default,8.5 +36.4603,78.9462,-24.7545,default,8.5 +50.1993,-66.6778,-24.1931,default,10.2137 +49.6812,-50.7923,-24.9942,default,10.1728 +49.6156,-33.4501,-24.6935,default,8.55599 +52.7695,-15.5536,-26.8612,default,9.21838 +51.9022,1.73912,-28.4856,default,10.0155 +49.8611,17.8029,-28.5635,default,9.04577 +49.9547,34.9982,-24.8931,default,9.38364 +53.3119,54.8861,-24.6897,default,8.65695 +52.154,72.467,-27.4415,default,9.78828 +66.3826,-59.0227,-28.0585,default,8.99162 +66.6893,-42.2392,-24.9071,default,8.84857 +67.5258,-23.1873,-24.5327,default,10.3678 +65.4668,-5.39707,-26.8504,default,8.9529 +66.1582,9.27373,-24.8501,default,9.2484 +64.776,25.4136,-25.565,default,9.8348 +66.4943,46.9982,-25.76,default,10.0347 +64.942,61.8731,-27.5438,default,10.0508 +79.2056,-51.2631,-25.7538,default,10.1042 +81.8468,-34.1755,-24.6743,default,10.2512 +80.3768,-16.9386,-25.1791,default,8.88357 +79.6337,-0.262982,-26.4776,default,9.30496 +83.1011,17.7949,-24.8635,default,9.79833 +79.1435,33.7745,-28.3351,default,8.5 +78.9457,54.5493,-26.5313,default,10.3516 +-98.2453,0.925183,-12.0256,default,10.2755 +-84.2257,-42.1458,-11.7495,default,9.08598 +-83.9083,-23.252,-9.75055,default,10.4098 +-85.2503,-7.12372,-12.5742,default,8.91246 +-83.0738,11.4668,-12.1259,default,10.149 +-84.7212,29.5585,-13.1183,default,8.5 +-83.9718,42.137,-10.8065,default,9.39125 +-70.7955,-68.4058,-9.77546,default,8.78734 +-68.9679,-49.3692,-12.1125,default,9.51949 +-69.5035,-32.6429,-9.82646,default,9.37135 +-72.4746,-15.9198,-11.0894,default,9.40543 +-70.8933,3.36646,-10.0135,default,8.76929 +-68.4759,17.2165,-12.9737,default,8.58719 +-69.1137,36.3313,-11.8997,default,9.59908 +-71.7615,53.9384,-13.1484,default,8.9755 +-53.9428,-75.453,-9.5082,default,8.85847 +-56.7165,-58.0652,-12.483,default,9.39962 +-57.6584,-39.0943,-10.2814,default,8.57706 +-57.4144,-24.1005,-11.8577,default,8.5 +-54.9527,-7.16135,-11.8177,default,9.00601 +-53.8813,8.35716,-12.9015,default,10.0595 +-57.49,29.9467,-13.1672,default,8.5 +-54.5998,44.8418,-12.3232,default,9.28257 +-57.9679,59.9397,-10.4979,default,9.74725 +-42.6329,-83.4147,-13.6162,default,10.0889 +-39.1054,-64.6279,-11.4012,default,9.79525 +-40.945,-49.3848,-10.7006,default,8.52157 +-40.9075,-32.5876,-12.3925,default,9.80366 +-42.1224,-14.229,-13.6058,default,10.014 +-41.2493,3.30256,-10.7602,default,9.48602 +-38.9577,20.3229,-10.6542,default,10.0097 +-41.8577,37.0362,-13.5607,default,9.33057 +-42.902,52.0009,-12.6998,default,8.5 +-42.8093,70.793,-12.6103,default,8.74544 +-42.9795,85.0901,-13.8123,default,8.5 +-27.6061,-93.0417,-13.6215,default,9.62079 +-28.3775,-77.0486,-13.2099,default,10.1441 +-24.2309,-56.2541,-11.9654,default,10.3899 +-27.0806,-42.0674,-9.53317,default,10.4383 +-26.4134,-22.0264,-12.3218,default,10.2193 +-24.9677,-7.52181,-10.2463,default,8.54228 +-24.951,9.15696,-10.0409,default,9.43114 +-27.6119,28.4827,-9.97782,default,10.2555 +-28.3393,42.4446,-10.7491,default,9.06343 +-24.4549,59.1817,-13.1379,default,8.80537 +-24.6759,77.8548,-11.9789,default,9.85517 +-24.7328,94.5862,-13.7524,default,10.1999 +-13.5533,-83.2642,-11.1143,default,8.5 +-12.8717,-65.2204,-13.5124,default,8.5 +-12.918,-48.4548,-9.53417,default,9.49539 +-11.0665,-32.4761,-11.7445,default,10.4018 +-9.65385,-14.0764,-10.2891,default,8.5 +-10.3165,0.951775,-11.5805,default,10.2021 +-10.5212,16.8304,-11.4734,default,9.08701 +-11.6681,34.2643,-12.6419,default,8.56015 +-9.9689,50.8699,-10.5522,default,8.54843 +-10.1935,67.5805,-11.6251,default,9.0735 +-11.8392,87.3975,-12.7935,default,8.5 +4.54218,-91.5805,-10.6068,default,8.69412 +1.73871,-76.0106,-12.4592,default,8.5 +1.49129,-59.4622,-12.7083,default,8.86284 +1.75312,-41.004,-13.1989,default,9.63019 +1.10398,-21.2309,-10.2413,default,9.21799 +0.988925,-7.54821,-12.0345,default,8.63646 +3.40581,7.95431,-12.6772,default,10.1133 +3.26168,25.086,-13.6281,default,9.05314 +1.99401,44.0249,-10.6227,default,9.3009 +2.32347,59.5027,-10.6366,default,9.45512 +3.01735,76.7273,-10.15,default,8.91847 +3.32027,94.2246,-11.0535,default,10.2647 +18.9963,-85.2561,-10.0498,default,9.35595 +16.2683,-68.134,-10.206,default,9.47166 +15.9788,-51.5204,-9.77754,default,9.86583 +15.6376,-33.4239,-10.1814,default,9.65096 +16.2985,-16.3275,-11.5166,default,8.57311 +16.2765,1.38747,-11.2426,default,9.38448 +19.9303,21.0431,-10.7706,default,9.88972 +19.7685,38.045,-13.1853,default,8.5 +18.2553,54.4488,-11.9505,default,8.5 +17.3996,71.7536,-9.7049,default,10.3965 +15.7912,84.5222,-12.5414,default,8.5 +31.8832,-93.8062,-12.032,default,8.83098 +33.7815,-76.7252,-12.0981,default,9.41174 +32.915,-55.3233,-10.3329,default,9.45135 +34.2955,-39.046,-9.65797,default,9.62386 +31.4499,-21.184,-12.0392,default,9.89423 +33.6247,-6.55201,-11.0986,default,8.88235 +33.9083,11.7902,-12.9579,default,10.3784 +31.1872,28.7325,-10.7347,default,9.24443 +33.7682,46.1789,-13.1081,default,9.56238 +33.1864,63.6916,-9.99456,default,8.6173 +32.5341,79.3176,-9.57153,default,10.0567 +45.736,-82.7309,-10.8011,default,8.5 +48.7481,-68.0889,-12.1288,default,9.53328 +48.2745,-47.9032,-12.3134,default,9.34097 +48.8085,-31.8151,-13.1034,default,9.05733 +45.3395,-14.4188,-10.8594,default,9.15165 +46.5235,0.260725,-10.8298,default,10.1585 +47.7357,17.8754,-13.4998,default,10.1742 +48.3908,34.4718,-10.1511,default,9.51622 +45.9911,55.5107,-12.5476,default,8.5 +46.1936,67.9822,-9.65015,default,9.24156 +47.7753,85.7106,-13.0943,default,8.6403 +60.7972,-74.1023,-11.3302,default,10.3036 +60.1107,-55.4248,-13.3388,default,9.61516 +61.3028,-42.6742,-11.8065,default,9.39919 +62.7513,-25.7433,-12.4047,default,9.28468 +63.4579,-7.71699,-11.5504,default,9.83406 +60.7085,9.43498,-13.2692,default,10.2245 +62.0381,28.9144,-10.319,default,9.92591 +63.2034,46.1943,-11.2789,default,9.50542 +63.3386,63.8143,-10.7765,default,10.0981 +61.1622,77.6831,-13.7121,default,8.90529 +77.7239,-47.6748,-10.9928,default,8.5 +77.5151,-29.9394,-11.3095,default,8.60685 +74.9605,-14.2971,-10.9435,default,10.4528 +74.8944,0.696645,-10.6104,default,8.5 +77.1884,17.9062,-13.8128,default,8.69993 +74.7373,34.7208,-12.6393,default,8.5 +75.0677,51.3135,-10.3458,default,9.24246 +89.6603,-22.2055,-11.7533,default,8.5 +90.1295,-4.24824,-10.0757,default,9.67018 +89.62,12.1266,-10.716,default,8.94815 +89.5829,26.9814,-11.2267,default,8.57982 +89.1957,43.5781,-9.81823,default,10.0381 +-93.7351,-16.7883,2.35038,default,9.45997 +-95.7338,2.90696,3.16327,default,9.65336 +-95.9399,18.5505,2.1722,default,10.2032 +-79.8482,-55.7662,3.02606,default,8.5 +-82.7174,-41.7014,4.85127,default,9.80047 +-80.7886,-22.946,2.34977,default,9.80139 +-79.0268,-6.05337,3.75519,default,9.46528 +-82.0067,10.4321,2.55874,default,8.90491 +-80.6049,25.4132,1.21196,default,8.5 +-82.8366,44.0516,2.35589,default,10.2457 +-78.9526,61.124,3.35721,default,9.4202 +-64.102,-65.5156,1.46147,default,8.86781 +-64.2225,-46.9066,4.80097,default,10.2617 +-68.468,-33.3416,3.10274,default,8.92266 +-68.4907,-14.3586,1.4207,default,10.4365 +-67.762,-0.0687358,3.52591,default,10.3306 +-64.3596,17.0034,3.39228,default,10.4477 +-65.1953,36.802,3.18595,default,10.4249 +-65.7418,51.8249,3.62122,default,9.47993 +-64.8725,70.5213,3.19526,default,8.5 +-49.7993,-75.1665,2.92714,default,8.5823 +-50.1662,-59.6431,4.21791,default,8.71413 +-51.6159,-42.4253,3.52115,default,8.72965 +-52.2097,-24.4339,3.90038,default,8.58632 +-49.6998,-5.49337,2.36937,default,8.5 +-52.8067,10.2768,3.84857,default,8.5 +-53.0525,25.5959,3.06249,default,8.5 +-50.1145,42.8981,5.10304,default,9.8444 +-50.8895,63.7084,1.57545,default,9.04923 +-51.5362,77.8187,1.29143,default,9.76208 +-35.1206,-84.1124,3.75668,default,9.36644 +-39.0413,-67.4176,3.19619,default,9.15764 +-36.7631,-50.2966,4.61706,default,8.5 +-35.5977,-32.8759,2.51668,default,9.95707 +-38.2835,-13.9819,3.34434,default,8.97516 +-36.793,3.2073,4.13448,default,8.90095 +-38.2603,20.0752,2.37839,default,10.1518 +-38.5707,36.7987,1.04395,default,8.89588 +-35.5583,50.5694,2.85559,default,9.82839 +-35.4349,71.8035,1.52249,default,10.4423 +-34.977,87.9757,3.30346,default,9.58234 +-20.4709,-93.9292,1.6253,default,9.51832 +-20.396,-76.3795,4.59845,default,8.53528 +-23.7124,-57.6671,1.08318,default,9.2155 +-23.908,-40.2429,1.32045,default,9.25268 +-21.0551,-22.9972,3.70595,default,8.5 +-20.3947,-5.09517,3.38535,default,8.55675 +-20.212,9.72254,4.4041,default,10.1133 +-24.1934,27.5216,0.969725,default,8.5874 +-19.9637,47.0325,1.79598,default,9.19996 +-22.1828,63.9466,2.23764,default,9.89483 +-22.5229,76.7938,1.70986,default,9.60554 +-23.5922,96.0568,1.15691,default,9.90756 +-7.4651,-98.934,0.929601,default,10.0776 +-5.63692,-80.5666,3.7272,default,8.73414 +-9.19887,-66.9041,2.97025,default,10.3839 +-7.83299,-49.2237,2.01435,default,8.64791 +-7.58047,-29.8289,2.11543,default,9.4445 +-9.17806,-14.3046,3.13301,default,9.71029 +-8.47321,1.79866,3.98884,default,8.5 +-6.22558,17.232,1.02303,default,8.51996 +-6.1979,34.592,3.99087,default,9.22465 +-6.06438,51.8374,3.70008,default,8.5 +-7.99579,71.8464,2.06558,default,10.3283 +-9.34279,88.3144,3.75289,default,9.77079 +8.09689,-92.1459,3.05209,default,8.71605 +8.56241,-76.1541,1.87649,default,9.61678 +5.75799,-58.7743,1.50038,default,10.096 +6.80561,-42.8107,4.1444,default,9.83689 +7.29498,-24.8781,1.65803,default,9.5353 +9.49315,-8.67633,4.88919,default,10.1237 +5.48934,10.7607,3.17589,default,8.89902 +7.48964,25.2213,2.28255,default,9.91149 +8.37825,44.0642,2.15868,default,8.5 +6.63344,60.3534,1.32677,default,8.5 +8.82467,76.4799,2.35944,default,8.62821 +5.50615,97.7667,0.852267,default,9.70502 +20.0973,-85.3025,1.56332,default,8.5 +23.6045,-66.3319,2.61044,default,10.1485 +22.4481,-47.353,4.427,default,8.61569 +21.6682,-31.0106,1.03267,default,8.5 +20.8476,-14.3643,1.48261,default,8.5 +23.354,4.3938,0.981434,default,9.49255 +23.2571,21.0108,5.03159,default,9.56391 +21.9115,37.8318,5.22218,default,8.5 +23.0517,50.9854,3.93698,default,9.88732 +20.875,68.0303,0.907251,default,9.16445 +21.3825,89.5424,1.183,default,10.1186 +37.9323,-76.0558,1.68638,default,9.44408 +38.8808,-59.6001,4.01158,default,8.64248 +34.7439,-39.8988,2.85532,default,8.9796 +34.7224,-26.0126,1.03908,default,9.54414 +38.066,-8.93449,4.67906,default,9.35846 +36.8513,9.09404,1.1049,default,9.51894 +36.4099,27.3056,2.92365,default,9.98295 +35.4412,44.6587,1.08065,default,10.3932 +36.1567,62.8726,3.57102,default,10.293 +37.3943,79.938,1.99393,default,10.395 +50.5785,-83.4395,3.12033,default,8.5 +51.7827,-64.4546,4.36014,default,9.83279 +50.186,-48.5523,3.22385,default,10.1367 +53.3226,-33.7905,5.26197,default,8.5 +51.1424,-15.7653,3.00227,default,8.60239 +52.0446,1.17038,2.13075,default,8.51441 +52.8293,16.8413,1.68865,default,9.47502 +49.7305,34.3809,2.06104,default,9.80689 +51.0108,55.0179,5.24962,default,8.5 +49.4942,67.6309,2.94739,default,9.09874 +68.0616,-56.1252,4.85032,default,9.91865 +67.5741,-38.8549,2.62935,default,9.67029 +64.4535,-24.3364,4.54126,default,8.59961 +67.9933,-6.46241,4.57409,default,8.5 +65.0907,12.6911,4.30271,default,10.2544 +65.1839,25.4711,4.38377,default,8.5 +66.8215,44.4639,4.33427,default,9.40417 +67.4613,60.1319,4.34272,default,9.78995 +82.3886,-46.9536,5.05956,default,9.16647 +82.0147,-33.4872,3.25943,default,10.4059 +81.3058,-15.8358,4.05511,default,9.58771 +79.4432,-0.165153,1.62494,default,9.17655 +81.181,18.2513,2.83648,default,9.17519 +82.8324,35.9978,4.19781,default,10.3563 +82.6803,55.3748,5.04971,default,9.98006 +95.6087,-23.2664,2.07193,default,10.372 +96.4069,-7.70411,4.10148,default,9.30892 +94.1872,12.5324,1.86289,default,9.59168 +93.7707,26.4937,4.88746,default,10.0281 +-86.6087,-40.7377,19.6215,default,10.0139 +-84.8319,-20.9957,18.6934,default,9.39531 +-84.5733,-5.1944,19.2837,default,9.9256 +-86.6601,10.383,17.1769,default,9.41782 +-85.6979,27.0939,18.9838,default,8.5 +-84.2101,45.3729,19.3154,default,8.68184 +-71.9871,-63.5226,19.9194,default,9.46219 +-70.4577,-48.5683,16.2944,default,9.04696 +-68.5309,-34.0814,19.1376,default,8.5 +-72.1513,-13.0755,19.4914,default,9.90376 +-68.9667,2.11688,19.597,default,9.7357 +-70.0636,18.629,19.2509,default,9.64972 +-70.1324,34.2659,16.3661,default,8.77909 +-70.107,52.9093,15.8557,default,8.5 +-57.8908,-74.8658,17.5651,default,10.065 +-57.4126,-58.8361,19.0019,default,9.47117 +-56.1199,-39.2378,17.4664,default,10.2399 +-56.9759,-23.3952,16.7399,default,8.9323 +-55.011,-6.3545,15.9177,default,9.97374 +-57.4431,8.21505,17.4323,default,8.70387 +-55.1485,26.672,16.6167,default,9.65507 +-54.9046,46.8266,18.8524,default,8.5 +-54.1032,61.9395,18.2944,default,8.67427 +-53.6278,78.0522,19.6842,default,9.60026 +-41.4701,-84.8121,16.5991,default,9.64536 +-40.0294,-67.5793,17.7982,default,8.98447 +-40.3835,-47.6988,16.4127,default,9.09298 +-42.7424,-33.3895,18.297,default,9.56256 +-42.2248,-13.6146,16.2176,default,8.5 +-39.6637,2.26455,17.5041,default,8.8338 +-42.3265,18.915,18.4948,default,8.81873 +-40.9851,33.5993,18.567,default,8.97255 +-39.3495,53.3161,18.7743,default,8.97931 +-39.0462,71.6384,16.2175,default,10.2106 +-41.5823,87.6014,18.5429,default,8.98874 +-27.8086,-93.4499,16.718,default,10.4523 +-27.6558,-72.6446,18.6621,default,9.83112 +-25.2735,-56.8612,16.2003,default,8.5 +-24.2249,-40.4162,17.9451,default,8.88227 +-28.344,-24.8156,16.1065,default,9.59361 +-28.4633,-7.06581,16.0124,default,9.33032 +-26.4928,10.4801,16.0981,default,9.60486 +-27.459,28.0677,17.3732,default,9.05772 +-25.4089,46.0326,17.6171,default,9.58543 +-28.5354,62.1168,16.3342,default,9.01678 +-27.7903,80.2682,16.1718,default,10.1887 +-13.1623,-83.6982,17.6686,default,9.77088 +-13.761,-65.5736,16.7561,default,8.5 +-11.0962,-47.434,16.3375,default,9.7905 +-12.2622,-30.5919,19.5652,default,8.63701 +-11.3356,-16.2451,17.6646,default,9.71429 +-13.7417,1.80375,16.8025,default,10.0878 +-13.2593,20.8913,16.6433,default,10.0841 +-10.7728,37.4234,17.0485,default,8.97727 +-9.62062,52.0833,18.1043,default,10.1287 +-11.3794,68.3194,18.3938,default,8.59754 +-10.8446,85.3001,18.8072,default,8.5 +1.68404,-92.0426,17.3557,default,10.248 +4.86138,-72.1645,15.937,default,8.68782 +3.05842,-56.9821,17.3646,default,8.5 +3.10426,-39.9655,16.1098,default,9.887 +2.40844,-24.6465,16.362,default,8.82136 +5.22341,-8.40502,16.3835,default,8.57217 +4.41246,9.70572,15.931,default,9.89258 +2.19466,28.4143,16.5137,default,9.95865 +2.15192,46.4591,15.7865,default,8.5982 +2.63442,63.6965,15.923,default,10.4039 +0.907265,77.6366,15.9609,default,8.66392 +4.82644,93.126,17.8063,default,8.70908 +17.8014,-82.4023,17.0715,default,10.0453 +15.6289,-64.3112,16.3407,default,8.5 +15.8849,-50.3055,18.1775,default,9.61978 +19.0025,-33.992,18.4163,default,8.5 +18.7648,-16.9199,17.5983,default,9.30503 +17.4238,2.79728,18.8374,default,8.54447 +16.7898,21.1802,15.7018,default,9.14026 +16.6931,37.0179,17.0767,default,8.88866 +19.8853,52.9014,17.4458,default,8.85858 +16.2568,69.7035,17.4263,default,8.51644 +18.0595,85.6748,16.3177,default,9.17315 +33.2372,-92.5707,15.9317,default,9.05955 +34.4506,-74.1515,15.9016,default,9.51316 +33.2741,-55.2778,18.1662,default,9.15668 +33.7792,-38.7534,18.4162,default,8.5 +31.2691,-24.5316,16.207,default,9.37929 +30.6504,-8.209,18.538,default,9.30862 +30.5698,11.5718,17.0232,default,8.87722 +32.1286,26.8423,16.3501,default,8.78131 +33.5486,45.9379,16.3467,default,8.5 +30.3681,63.6907,19.6525,default,9.08213 +30.5745,77.7008,17.9648,default,9.25776 +45.0164,-80.6418,15.8893,default,9.99665 +49.0863,-68.1529,16.512,default,8.61752 +47.6112,-48.2628,18.6386,default,8.5 +47.1,-31.8143,16.3153,default,9.52674 +46.6533,-15.4268,17.6246,default,9.96599 +46.2273,4.49605,19.6096,default,9.61473 +49.1214,20.6973,17.3171,default,9.77667 +47.0406,34.593,18.9778,default,8.5 +45.1024,54.1613,16.1497,default,10.1386 +47.1791,68.7359,17.7413,default,8.7934 +46.0513,86.1259,19.6462,default,8.5 +61.0534,-75.4342,17.503,default,9.74749 +62.5345,-57.8631,17.9362,default,8.5 +63.0592,-38.0305,16.5743,default,10.097 +60.4605,-24.8221,16.0075,default,9.90118 +60.389,-7.45602,16.5793,default,8.93108 +62.6694,10.672,16.2822,default,9.45392 +61.7537,28.3826,16.1122,default,10.2254 +62.4656,44.9736,19.3895,default,8.67367 +62.4927,63.614,19.244,default,10.0225 +76.0613,-50.2152,19.534,default,8.70096 +75.6543,-33.6929,18.3759,default,10.0886 +77.9868,-16.9587,16.4139,default,8.5 +74.9795,0.918166,19.6644,default,8.71841 +76.7744,20.2087,15.9527,default,9.82373 +74.5916,38.2535,19.2534,default,10.3722 +76.7448,52.0407,18.6133,default,8.77615 +91.5586,-21.8575,18.6035,default,9.7875 +92.7717,-7.61224,19.9642,default,8.5 +91.8192,9.39288,16.022,default,9.05672 +89.4862,26.6683,16.7966,default,9.35384 +-93.741,2.45825,34.5412,default,8.55786 +-82.2922,-39.5168,31.019,default,9.85962 +-79.7882,-25.422,32.3765,default,9.32437 +-79.0259,-5.9999,34.1369,default,9.22038 +-80.319,10.0593,31.8796,default,8.73128 +-82.9103,25.974,30.4412,default,9.40262 +-79.8913,46.1122,30.9933,default,8.54151 +-65.7703,-67.0859,33.8225,default,9.46889 +-66.705,-47.6867,32.3685,default,9.70994 +-64.3314,-30.7219,34.2932,default,9.95636 +-67.0599,-15.5411,30.3671,default,8.5 +-65.7275,-0.0969909,34.1618,default,8.9441 +-66.6484,18.1535,34.1864,default,8.5 +-64.2491,35.2388,31.6509,default,8.58667 +-67.0748,53.0713,33.2135,default,9.91933 +-53.6269,-73.0012,30.3222,default,10.1149 +-50.2426,-59.1417,30.642,default,9.48167 +-49.5137,-38.5307,31.3878,default,9.72083 +-52.9414,-21.0331,31.0852,default,8.5 +-52.9029,-7.38088,34.3625,default,9.66627 +-51.529,11.8716,31.9002,default,8.5 +-50.887,29.6307,32.6474,default,8.5 +-52.9348,43.0429,33.0982,default,8.5 +-51.8682,60.1949,34.5719,default,8.5 +-35.4622,-85.5165,34.3758,default,10.1766 +-38.3705,-66.1788,31.0661,default,8.5 +-38.1939,-46.6858,33.1459,default,9.74583 +-34.8779,-33.5105,33.1937,default,10.2533 +-35.1901,-16.3048,32.7089,default,8.8572 +-35.4004,3.06439,32.2297,default,8.80953 +-38.5125,17.5068,32.7239,default,8.96634 +-37.1045,38.0735,31.643,default,9.65063 +-36.9325,52.1149,32.0982,default,8.9865 +-37.9232,69.2932,32.0028,default,8.5 +-21.1622,-91.0265,34.0553,default,9.86408 +-23.0818,-74.256,31.9509,default,8.5 +-22.9052,-56.9854,34.5008,default,8.61747 +-21.6082,-42.8476,31.7404,default,8.61331 +-20.0092,-21.3138,31.5304,default,8.5 +-20.5881,-4.95924,34.1509,default,9.37895 +-21.8761,11.1082,31.7512,default,8.93559 +-23.1526,29.6604,34.0507,default,9.49202 +-20.5693,43.9745,33.8318,default,9.19925 +-20.5291,59.6741,31.126,default,8.65751 +-21.7816,76.7731,32.6874,default,10.0526 +-6.83939,-81.2794,33.2686,default,10.2345 +-7.47714,-66.0085,31.9704,default,9.11861 +-9.19336,-46.7511,30.6,default,9.1191 +-5.64875,-32.688,30.9926,default,8.5 +-9.4462,-13.2222,31.3026,default,10.4144 +-7.37186,3.40402,32.13,default,9.30981 +-6.89958,21.0063,33.8359,default,10.0649 +-7.46256,38.2544,34.0678,default,9.13604 +-5.76266,51.2848,33.4714,default,8.5 +-7.32343,69.8957,32.3503,default,8.73803 +-6.8762,88.6307,30.8903,default,8.56897 +8.26507,-89.1868,34.6704,default,8.757 +7.53577,-74.5819,32.7854,default,10.4534 +6.25107,-59.0902,31.8574,default,8.79873 +8.5779,-42.9176,33.4569,default,10.0561 +6.88171,-23.9815,32.7623,default,8.90408 +7.22036,-5.78653,33.883,default,9.87605 +5.38294,8.39363,34.5142,default,9.10205 +8.16614,28.0659,30.9183,default,9.25309 +6.59018,42.6075,30.6092,default,10.1876 +8.61699,61.5866,30.8189,default,8.68436 +9.17263,79.0956,31.9936,default,9.46328 +23.2036,-82.1981,33.8642,default,9.93443 +22.5953,-68.5042,33.317,default,9.85623 +23.8608,-47.6783,33.3916,default,8.90151 +20.9023,-32.6736,32.9014,default,10.1635 +22.0531,-13.5771,31.9659,default,10.1553 +22.3637,0.0461592,30.7298,default,8.92445 +22.9899,19.3182,30.4569,default,9.06881 +22.128,38.1533,33.876,default,9.3486 +23.769,50.9125,32.9929,default,9.90615 +22.584,68.608,30.9086,default,8.75237 +20.7813,89.3755,34.2666,default,9.34689 +35.3852,-74.7553,32.8362,default,8.5 +36.941,-55.0603,32.7938,default,9.55435 +35.3006,-38.4617,30.6041,default,8.5 +37.7297,-21.8356,32.3801,default,8.5 +35.5312,-4.66709,33.2869,default,9.17157 +38.7134,9.15626,32.4279,default,8.59517 +38.0272,25.4907,33.2006,default,9.81869 +38.2917,43.1343,33.1397,default,9.76301 +34.9257,62.0718,33.6472,default,9.76121 +36.731,77.0675,32.1294,default,10.0224 +52.8661,-64.5876,31.9485,default,9.06145 +53.0064,-49.3836,32.0128,default,9.43641 +52.0251,-33.3447,32.5854,default,9.52844 +51.3397,-17.537,31.3262,default,9.93219 +53.3305,0.851273,34.1291,default,10.0205 +52.2061,17.9425,33.6498,default,8.9672 +53.3901,38.4276,32.2779,default,8.9671 +53.5995,53.2201,33.3319,default,9.60563 +51.4028,68.2519,32.3465,default,9.14929 +67.2307,-58.1439,32.6092,default,8.83388 +67.9713,-38.3676,31.3422,default,9.31078 +66.479,-21.7156,31.9256,default,9.12977 +66.8463,-4.45854,33.014,default,9.85842 +67.6112,9.81371,33.0919,default,8.94914 +66.0326,27.9644,34.5648,default,8.61621 +67.0099,46.1616,30.6241,default,9.11558 +66.6611,59.1087,31.7845,default,9.87652 +79.632,-30.1808,33.7507,default,9.91075 +80.0514,-16.3537,30.6753,default,8.8039 +78.8509,3.64417,33.9316,default,10.0827 +80.7702,19.7672,34.4365,default,8.73611 +80.3485,33.5385,31.9895,default,8.98096 +-86.2828,-6.29472,47.115,default,9.7781 +-85.6945,9.71627,47.8151,default,10.4049 +-68.8426,-49.9191,48.6955,default,10.4318 +-68.9422,-34.0206,47.7924,default,8.5 +-68.9268,-12.9511,47.8483,default,9.91875 +-71.3675,0.405122,46.5751,default,8.91111 +-68.4675,18.0395,46.6176,default,8.75571 +-70.5712,36.423,49.3864,default,9.25688 +-56.798,-59.4905,46.3448,default,8.92538 +-57.4936,-39.0635,47.7208,default,9.30218 +-56.9636,-23.2581,47.2619,default,8.5 +-57.072,-7.21485,49.0117,default,9.56046 +-53.8869,12.9321,46.1464,default,8.6949 +-57.841,29.7867,46.0355,default,8.5 +-56.2673,46.0139,47.0672,default,8.5 +-53.9989,61.3686,45.9555,default,8.73256 +-40.6304,-64.1484,45.9233,default,8.77308 +-40.0195,-50.6158,48.552,default,9.14813 +-43.203,-30.031,45.9014,default,10.1709 +-41.4575,-14.3477,49.216,default,8.5 +-41.5874,0.828111,49.2483,default,8.65928 +-42.4378,16.478,48.1496,default,10.2808 +-42.165,35.8751,45.0337,default,8.59133 +-41.1673,53.4324,49.1114,default,10.1348 +-42.5033,69.4293,48.7551,default,9.85071 +-27.8352,-76.7683,46.7411,default,9.0812 +-25.9028,-55.003,48.4576,default,8.59395 +-27.2819,-41.9721,46.7409,default,9.63897 +-28.041,-24.278,49.3767,default,8.5 +-25.4592,-8.71619,47.3049,default,8.5 +-26.4743,12.1987,46.6516,default,9.92574 +-26.838,29.728,48.4967,default,10.2075 +-26.2948,45.1148,49.1269,default,9.22863 +-25.6218,60.6432,46.8844,default,10.3198 +-25.4096,79.4711,48.4568,default,9.1597 +-12.1652,-80.8198,45.638,default,8.874 +-11.6216,-64.7534,48.3296,default,8.62741 +-13.7837,-47.4423,46.6876,default,10.3686 +-12.7966,-34.1487,49.0528,default,10.005 +-11.1473,-13.6762,49.0096,default,9.93402 +-10.9033,-0.100177,46.0945,default,9.49154 +-13.1973,19.4849,47.969,default,10.0132 +-11.037,37.1385,49.1742,default,8.84922 +-11.9847,52.4728,49.2712,default,9.02879 +-11.5684,69.6122,48.702,default,10.1432 +-12.981,86.5676,48.0385,default,8.5 +2.31431,-72.8791,45.5215,default,8.5 +1.49458,-59.8245,46.6354,default,8.99434 +2.41244,-42.2772,46.7147,default,9.40872 +1.43638,-22.2845,48.7757,default,9.3869 +4.64344,-5.13004,49.3113,default,9.50215 +3.36286,8.58054,49.2147,default,9.40384 +1.82222,29.6098,47.3371,default,8.5 +1.17055,45.5567,48.0753,default,8.53776 +1.46443,60.5821,45.6634,default,9.03964 +5.2163,79.6721,48.6177,default,10.1102 +18.9201,-84.5292,48.8481,default,8.82496 +18.4418,-65.9116,46.4987,default,9.13393 +16.9687,-49.2207,46.1571,default,8.5 +19.9597,-34.389,45.4429,default,10.2763 +16.1105,-14.8045,48.5712,default,9.22523 +18.9979,1.8287,48.8092,default,8.50641 +17.5787,17.5539,46.7714,default,9.55479 +15.8798,36.5412,49.2227,default,8.5 +19.5721,50.9898,45.1232,default,9.03341 +17.5129,71.37,47.0215,default,9.52319 +33.2937,-74.3602,48.9098,default,8.9766 +33.581,-57.1328,47.6663,default,9.60965 +33.4233,-39.1029,45.8185,default,9.85133 +30.7321,-22.6767,46.0924,default,9.98303 +32.1923,-4.95963,47.6927,default,9.48791 +33.2665,12.6428,47.8972,default,9.44032 +30.7635,25.1404,46.9229,default,9.75134 +33.0397,43.1572,48.6294,default,8.95476 +32.169,59.1392,48.4831,default,9.99243 +30.8855,76.1318,47.6351,default,9.44588 +45.757,-63.5319,46.6722,default,8.50235 +45.9849,-47.4184,47.6447,default,10.2055 +47.7553,-31.542,46.114,default,8.5 +45.2652,-13.6639,49.2607,default,9.26855 +46.0434,-0.52376,45.0699,default,8.5 +48.1198,20.9313,46.7505,default,10.0206 +45.3179,36.6379,48.9572,default,9.44979 +46.3961,54.9455,49.3503,default,9.69619 +45.5318,72.1402,48.4893,default,9.86394 +63.799,-58.8061,46.3625,default,8.74716 +62.2299,-42.3643,48.2178,default,9.36522 +59.9038,-24.0606,48.5719,default,8.5 +63.9221,-8.46561,46.6476,default,10.1425 +60.9551,8.03658,47.3713,default,9.86993 +61.7382,26.8974,45.8336,default,9.90075 +60.1938,43.4875,45.9354,default,10.1384 +61.2618,61.0221,46.9709,default,9.12844 +77.3851,-29.9735,48.4149,default,8.61289 +77.1094,-17.4473,47.8433,default,8.5 +75.5751,1.98638,45.9556,default,9.84126 +78.823,17.2583,48.5858,default,10.0526 +75.1546,34.6099,45.7224,default,10.2898 +-65.662,-30.2557,62.2953,default,8.57744 +-66.6526,-15.5015,63.5192,default,8.87947 +-66.7663,0.689272,61.4041,default,8.52153 +-65.9313,19.4833,63.9135,default,9.60852 +-51.9174,-58.5598,60.4095,default,9.06277 +-51.3658,-38.3451,63.5633,default,10.4312 +-51.02,-25.0413,63.9044,default,8.99047 +-52.9457,-8.68299,60.805,default,8.75928 +-53.7787,10.428,61.9368,default,10.3467 +-53.307,27.2012,62.8434,default,8.5119 +-51.5482,46.663,61.8233,default,9.49673 +-36.2627,-47.562,60.0535,default,9.31429 +-37.1514,-33.4632,64.1313,default,8.56914 +-35.6301,-15.6098,63.2703,default,9.77893 +-36.1664,1.42362,64.1335,default,8.73934 +-34.9234,19.7387,62.3537,default,8.80965 +-34.7965,37.223,60.7426,default,9.96828 +-38.6875,52.1798,63.5295,default,9.47991 +-38.605,68.0584,60.1284,default,9.61487 +-21.2998,-73.2138,63.7931,default,8.5 +-23.4885,-56.6924,62.3455,default,10.4 +-22.3889,-41.2679,61.5446,default,10.2717 +-21.5838,-22.6371,64.1099,default,8.53442 +-22.0564,-5.40829,62.0674,default,10.3597 +-22.2024,10.4739,60.6422,default,8.5 +-24.2129,26.7682,63.7341,default,9.01866 +-22.6534,44.459,62.6711,default,9.87176 +-21.9478,59.6768,59.8214,default,8.81698 +-7.99637,-67.7129,60.0462,default,8.52518 +-8.24022,-47.7423,63.5691,default,10.2311 +-5.27157,-29.5354,63.5789,default,9.05885 +-6.92179,-15.5571,60.4628,default,8.54701 +-9.11621,0.554997,60.6745,default,8.5 +-7.21178,20.8452,59.9841,default,8.92528 +-9.05107,36.1104,64.0546,default,9.68264 +-6.71439,52.3479,60.6772,default,9.64341 +-7.47742,67.5248,60.3543,default,10.3052 +5.28949,-73.7695,62.0082,default,8.5 +6.76275,-57.528,62.746,default,10.176 +7.84139,-39.3216,60.9747,default,8.5 +5.68805,-22.7484,62.6162,default,9.92312 +9.21381,-6.33232,62.1047,default,10.2402 +8.77802,12.277,62.0464,default,8.66534 +7.94831,26.1656,63.3684,default,8.5 +7.43754,42.028,59.8436,default,10.2988 +6.19489,63.1581,63.8471,default,9.3194 +21.3526,-63.6031,60.9446,default,8.5 +23.2108,-50.5582,62.067,default,8.5 +20.902,-32.4083,60.8161,default,8.5 +24.2186,-12.5968,60.379,default,8.5 +20.2363,2.81012,61.5041,default,8.5 +22.8782,19.7341,64.1221,default,10.3275 +21.7811,37.8287,63.5809,default,8.70203 +21.5281,53.1903,60.4003,default,8.5 +22.0353,69.2106,61.3601,default,9.0674 +34.5453,-59.7545,63.523,default,8.5 +36.0974,-39.3648,63.1047,default,9.23923 +38.3798,-22.7661,61.8986,default,8.81792 +35.5579,-5.07251,62.4685,default,8.95321 +38.1451,12.6327,61.1186,default,9.45337 +38.1452,25.7211,60.2478,default,8.5 +35.2731,43.3784,63.6578,default,9.23679 +38.7602,60.4519,63.3133,default,9.72555 +53.5871,-48.6113,61.6411,default,9.52246 +50.3103,-33.5035,60.8831,default,8.5 +50.7605,-15.3765,62.1088,default,9.58171 +49.9963,0.779865,62.7188,default,8.5 +50.0773,21.0699,60.9428,default,8.5 +50.6534,34.5458,61.5393,default,9.8158 +53.5324,53.1159,62.6347,default,10.1404 +66.7858,-41.0678,60.5157,default,10.4293 +64.3171,-21.5007,62.1217,default,8.5 +64.5769,-5.20585,61.6963,default,8.5 +66.6017,9.04052,60.4459,default,9.7064 +65.1252,25.0333,59.9684,default,8.80062 +-53.9146,-23.8645,75.5495,default,9.34551 +-56.5884,-4.71116,78.7377,default,8.5 +-54.818,10.6116,75.8704,default,9.32397 +-56.3464,29.7098,74.5824,default,10.447 +-40.1293,-49.015,77.1215,default,8.5 +-42.4591,-30.4236,77.7586,default,8.79456 +-39.8545,-16.3263,74.8299,default,9.98709 +-40.1956,2.81048,78.0168,default,9.51488 +-41.6126,17.6694,74.6472,default,8.54694 +-39.2098,33.6238,76.4292,default,9.87209 +-24.3652,-54.9946,76.5493,default,9.73996 +-26.0439,-41.1659,74.599,default,9.02504 +-27.3554,-22.9358,76.6221,default,10.0637 +-26.856,-4.30947,78.0077,default,9.34698 +-24.7471,12.5854,77.6133,default,9.04555 +-25.8087,26.2918,76.9768,default,9.31413 +-25.0491,43.8721,77.5693,default,9.28589 +-9.46698,-47.6131,75.8249,default,8.80812 +-12.3968,-30.7706,76.5987,default,10.2266 +-12.8263,-16.4977,74.6776,default,9.40462 +-13.7528,0.198027,78.639,default,10.2202 +-11.2917,20.8164,78.3823,default,8.95194 +-10.1569,36.8383,76.185,default,10.0821 +-12.0406,51.1707,76.3332,default,9.93362 +3.76026,-58.7874,76.1981,default,10.3992 +0.936995,-42.5267,78.4634,default,8.5 +5.22424,-23.2556,76.0635,default,10.0445 +1.26752,-7.67026,78.57,default,9.92445 +3.3955,11.3514,77.9879,default,8.90179 +1.35145,27.7876,78.3272,default,9.65841 +2.01928,42.0197,76.4331,default,10.3015 +4.28453,61.4925,76.0805,default,9.70352 +16.4292,-49.7591,74.9634,default,8.82222 +17.5909,-30.5242,78.1975,default,9.94785 +18.7266,-13.0997,74.7269,default,9.11763 +16.7022,3.3771,76.3238,default,8.78297 +18.6365,20.6702,76.3276,default,8.5 +18.9475,33.7963,75.8855,default,10.0972 +18.8707,54.2949,76.23,default,9.59276 +32.6984,-40.1614,76.0334,default,10.1849 +30.9429,-23.1768,78.5555,default,10.1291 +31.2857,-6.05988,77.6066,default,8.5572 +32.4232,11.7389,76.1685,default,9.07028 +34.6042,28.3593,76.7079,default,10.3011 +30.7374,46.6825,77.9844,default,10.3268 +49.1914,-30.4388,78.7307,default,9.26179 +45.6804,-13.8415,75.0329,default,8.5304 +47.6028,0.345682,77.9713,default,8.55106 +48.3389,20.1085,74.8,default,9.58572 +49.0192,36.2619,77.4491,default,8.5 +60.417,-6.04777,78.5115,default,8.5 +-36.2392,-15.759,89.4421,default,9.8315 +-36.5074,1.68876,90.9916,default,8.5 +-38.5393,16.8917,89.9126,default,10.0141 +-20.91,-24.5699,89.7274,default,10.4526 +-23.6763,-6.37268,92.9418,default,10.0382 +-22.8986,11.7681,89.2297,default,8.5 +-21.5783,27.6846,93.3965,default,10.1704 +-7.64763,-31.347,90.5585,default,9.99572 +-8.66331,-13.9081,89.3492,default,9.49792 +-6.29881,0.956566,92.4755,default,9.92513 +-5.47827,19.2008,93.2362,default,10.3778 +-7.62661,34.9087,92.401,default,8.5 +5.20829,-38.2988,92.1039,default,8.64182 +6.45184,-23.6029,92.0225,default,9.97299 +6.9948,-4.92843,91.3495,default,9.76217 +6.22652,10.8258,90.9693,default,9.29955 +5.518,28.5502,89.5488,default,9.47028 +23.5226,-31.8993,89.3932,default,8.5 +20.6108,-13.108,89.3247,default,8.96289 +22.6628,-0.207682,90.2156,default,8.56343 +20.0264,20.7919,90.8917,default,8.88242 +20.8702,36.709,90.1625,default,8.61361 +37.2156,-7.78745,89.5663,default,9.767 +35.4865,9.83066,91.1711,default,8.5238 diff --git a/config/prostate_drug_sensitivity.csv b/config/prostate_drug_sensitivity.csv new file mode 100644 index 0000000..91284e1 --- /dev/null +++ b/config/prostate_drug_sensitivity.csv @@ -0,0 +1,841 @@ +"","xmid","scal","CL","maxc","DRUG_ID_lib","IC50" +"1",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"2",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"3",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"4",14.8332455365279,2.82575365697899,905934,2,1032,4.73644487771815 +"5",8.5977181365736,2.82575365697899,905934,10,1058,2.02374455356964 +"6",10.7613865448833,2.82575365697899,905934,4,1058,2.60719447858199 +"7",14.4452580735478,2.82575365697899,905934,2,1168,4.46751246166089 +"8",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"9",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"10",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"11",11.2606158847515,2.82575365697899,905934,0.25,1559,0.180645165724661 +"12",8.95215386636085,2.82575365697899,905934,1,1559,-0.0331644126326732 +"13",15.8147252143953,2.82575365697899,905934,10,1736,7.0261926616429 +"14",15.8147252143953,2.82575365697899,905934,10,1736,7.0261926616429 +"15",10.3975060954322,2.82575365697899,905934,10,1912,3.27126250285819 +"16",12.6460145906971,2.82575365697899,905934,10,1924,4.82980982681614 +"17",13.1203009714627,2.82575365697899,905934,10,2043,5.15856009442182 +"18",15.3571272641322,2.82575365697899,905934,2,2047,5.09957202015393 +"19",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"20",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"21",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"22",13.0910387692171,1.86754539474537,905935,2,1032,3.52883916900419 +"23",10.0481638398596,1.86754539474537,905935,10,1058,3.02911690335763 +"24",10.447193076105,1.86754539474537,905935,4,1058,2.38941216154793 +"25",12.4791072011117,1.86754539474537,905935,2,1168,3.10468052787634 +"26",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"27",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"28",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"29",9.02960229688106,1.86754539474537,905935,0.25,1559,-1.36577561249869 +"30",7.14255507100334,1.86754539474537,905935,1,1559,-1.2874827155794 +"31",14.1084546201919,1.86754539474537,905935,10,1736,5.84349600999849 +"32",14.1084546201919,1.86754539474537,905935,10,1736,5.84349600999849 +"33",11.2403128135108,1.86754539474537,905935,10,1912,3.85545160325138 +"34",11.6795082127463,1.86754539474537,905935,10,1924,4.15987865594635 +"35",12.8718519154586,1.86754539474537,905935,10,2043,4.98634833173982 +"36",12.6375842554799,1.86754539474537,905935,2,2047,3.21452845129508 +"37",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"38",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"39",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"40",10.6851227088505,2.30653618101248,907788,2,1032,1.8611852350972 +"41",3.85680179514967,2.30653618101248,907788,10,1058,-1.26240824175893 +"42",5.77450936668732,2.30653618101248,907788,4,1058,-0.849445377283303 +"43",13.8806020165162,2.30653618101248,907788,2,1168,4.07612270774331 +"44",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"45",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"46",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"47",7.02401783651853,2.30653618101248,907788,0.25,1559,-2.75594082657382 +"48",5.71693783079737,2.30653618101248,907788,1,1559,-2.27564528618582 +"49",14.4878222003395,2.30653618101248,907788,10,1736,6.10645357857362 +"50",14.4878222003395,2.30653618101248,907788,10,1736,6.10645357857362 +"51",1.14891123577728,2.30653618101248,907788,10,1912,-3.1393749482528 +"52",2.34172699352085,2.30653618101248,907788,10,1924,-2.31257806884537 +"53",10.0117981023866,2.30653618101248,907788,10,2043,3.00391009495922 +"54",10.8871410593406,2.30653618101248,907788,2,2047,2.00121368516079 +"55",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"56",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"57",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"58",10.2783906793626,2.57592196481569,924100,2,1032,1.57926007561423 +"59",7.49508759962623,2.57592196481569,924100,10,1058,1.25945930568527 +"60",8.32311922367592,2.57592196481569,924100,4,1058,0.917116359435628 +"61",13.6403512936497,2.57592196481569,924100,2,1168,3.90959359656095 +"62",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"63",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"64",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"65",6.46625850175513,2.57592196481569,924100,0.25,1559,-3.14255013689605 +"66",7.58459608764889,2.57592196481569,924100,1,1559,-0.98108323119969 +"67",10.6822565834447,2.57592196481569,924100,10,1736,3.46863650078711 +"68",10.6822565834447,2.57592196481569,924100,10,1736,3.46863650078711 +"69",7.90636445181169,2.57592196481569,924100,10,1912,1.54453469620719 +"70",10.83310606157,2.57592196481569,924100,10,1924,3.57319739123862 +"71",14.6791577243851,2.57592196481569,924100,10,2043,6.23907725760682 +"72",12.143825806122,2.57592196481569,924100,2,2047,2.87228117424504 +"73",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"74",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"75",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"76",3.81033853654365,2.40272017901346,924105,2,1032,-2.90405203089543 +"77",5.76017945751733,2.40272017901346,924105,10,1058,0.0569126184519901 +"78",5.99553627577977,2.40272017901346,924105,4,1058,-0.696241198417997 +"79",8.16542751538186,2.40272017901346,924105,2,1168,0.114665615873975 +"80",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"81",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"82",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"83",5.38819990643229,2.40272017901346,924105,0.25,1559,-3.8898034127225 +"84",3.16781766867632,2.40272017901346,924105,1,1559,-4.04256073946854 +"85",6.88348617823547,2.40272017901346,924105,10,1736,0.835529504821806 +"86",6.88348617823547,2.40272017901346,924105,10,1736,0.835529504821806 +"87",9.87374251658438,2.40272017901346,924105,10,1912,2.90821725489986 +"88",9.73539066039704,2.40272017901346,924105,10,1924,2.81231905585837 +"89",13.7959178125883,2.40272017901346,924105,10,2043,5.62686200298683 +"90",11.4824422673119,2.40272017901346,924105,2,2047,2.41384503905002 +"91",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"92",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"93",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"94",11.9821270898956,2.11185431611028,1299075,2,1032,2.7602001649925 +"95",8.86177115379489,2.11185431611028,1299075,10,1058,2.20677215797492 +"96",7.23229160387356,2.11185431611028,1299075,4,1058,0.161012270292703 +"97",13.9404334098522,2.11185431611028,1299075,2,1168,4.11759466934317 +"98",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"99",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"100",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"101",7.77703805989411,2.11185431611028,1299075,0.25,1559,-2.23398698183641 +"102",9.00304300847153,2.11185431611028,1299075,1,1559,0.00210925274245933 +"103",14.6822921303097,2.11185431611028,1299075,10,1736,6.24124986223617 +"104",14.6822921303097,2.11185431611028,1299075,10,1736,6.24124986223617 +"105",7.1945499157114,2.11185431611028,1299075,10,1912,1.05114245742769 +"106",9.09188553804903,2.11185431611028,1299075,10,1924,2.36627529462696 +"107",13.1125726236745,2.11185431611028,1299075,10,2043,5.15320321194206 +"108",9.8883688502507,2.11185431611028,1299075,2,2047,1.3089175444085 +"109",13.6000061865013,2.82575365697899,905934,5,1560,4.7979192311658 +"110",13.6000061865013,2.82575365697899,905934,5,1560,4.7979192311658 +"111",12.9888204867694,1.86754539474537,905935,5,1560,4.37427758659803 +"112",12.9888204867694,1.86754539474537,905935,5,1560,4.37427758659803 +"113",11.0099734211479,2.30653618101248,907788,5,1560,3.00264532230322 +"114",11.0099734211479,2.30653618101248,907788,5,1560,3.00264532230322 +"115",9.83263307884059,2.57592196481569,924100,5,1560,2.1865751834734 +"116",9.83263307884059,2.57592196481569,924100,5,1560,2.1865751834734 +"117",8.29681849576314,2.40272017901346,924105,5,1560,1.12202963535042 +"118",8.29681849576314,2.40272017901346,924105,5,1560,1.12202963535042 +"119",11.3508955787036,2.11185431611028,1299075,5,1560,3.23895455460336 +"120",11.3508955787036,2.11185431611028,1299075,5,1560,3.23895455460336 +"121",10.7613865448833,2.82575365697899,905934,4,1058,2.60719447858199 +"122",13.6000061865013,2.82575365697899,905934,5,1560,4.7979192311658 +"123",13.6000061865013,2.82575365697899,905934,5,1560,4.7979192311658 +"124",10.447193076105,1.86754539474537,905935,4,1058,2.38941216154793 +"125",12.9888204867694,1.86754539474537,905935,5,1560,4.37427758659803 +"126",12.9888204867694,1.86754539474537,905935,5,1560,4.37427758659803 +"127",5.77450936668732,2.30653618101248,907788,4,1058,-0.849445377283303 +"128",11.0099734211479,2.30653618101248,907788,5,1560,3.00264532230322 +"129",11.0099734211479,2.30653618101248,907788,5,1560,3.00264532230322 +"130",8.32311922367592,2.57592196481569,924100,4,1058,0.917116359435628 +"131",9.83263307884059,2.57592196481569,924100,5,1560,2.1865751834734 +"132",9.83263307884059,2.57592196481569,924100,5,1560,2.1865751834734 +"133",5.99553627577977,2.40272017901346,924105,4,1058,-0.696241198417997 +"134",8.29681849576314,2.40272017901346,924105,5,1560,1.12202963535042 +"135",8.29681849576314,2.40272017901346,924105,5,1560,1.12202963535042 +"136",7.23229160387356,2.11185431611028,1299075,4,1058,0.161012270292703 +"137",11.3508955787036,2.11185431611028,1299075,5,1560,3.23895455460336 +"138",11.3508955787036,2.11185431611028,1299075,5,1560,3.23895455460336 +"139",11.2606158847515,2.82575365697899,905934,0.25,1559,0.180645165724661 +"140",9.02960229688106,1.86754539474537,905935,0.25,1559,-1.36577561249869 +"141",7.02401783651853,2.30653618101248,907788,0.25,1559,-2.75594082657382 +"142",6.46625850175513,2.57592196481569,924100,0.25,1559,-3.14255013689605 +"143",5.38819990643229,2.40272017901346,924105,0.25,1559,-3.8898034127225 +"144",7.77703805989411,2.11185431611028,1299075,0.25,1559,-2.23398698183641 +"145",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"146",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"147",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"148",14.8332455365279,2.82575365697899,905934,2,1032,4.73644487771815 +"149",8.5977181365736,2.82575365697899,905934,10,1058,2.02374455356964 +"150",14.4452580735478,2.82575365697899,905934,2,1168,4.46751246166089 +"151",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"152",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"153",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"154",8.95215386636085,2.82575365697899,905934,1,1559,-0.0331644126326732 +"155",15.8147252143953,2.82575365697899,905934,10,1736,7.0261926616429 +"156",15.8147252143953,2.82575365697899,905934,10,1736,7.0261926616429 +"157",10.3975060954322,2.82575365697899,905934,10,1912,3.27126250285819 +"158",12.6460145906971,2.82575365697899,905934,10,1924,4.82980982681614 +"159",13.1203009714627,2.82575365697899,905934,10,2043,5.15856009442182 +"160",15.3571272641322,2.82575365697899,905934,2,2047,5.09957202015393 +"161",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"162",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"163",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"164",13.0910387692171,1.86754539474537,905935,2,1032,3.52883916900419 +"165",10.0481638398596,1.86754539474537,905935,10,1058,3.02911690335763 +"166",12.4791072011117,1.86754539474537,905935,2,1168,3.10468052787634 +"167",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"168",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"169",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"170",7.14255507100334,1.86754539474537,905935,1,1559,-1.2874827155794 +"171",14.1084546201919,1.86754539474537,905935,10,1736,5.84349600999849 +"172",14.1084546201919,1.86754539474537,905935,10,1736,5.84349600999849 +"173",11.2403128135108,1.86754539474537,905935,10,1912,3.85545160325138 +"174",11.6795082127463,1.86754539474537,905935,10,1924,4.15987865594635 +"175",12.8718519154586,1.86754539474537,905935,10,2043,4.98634833173982 +"176",12.6375842554799,1.86754539474537,905935,2,2047,3.21452845129508 +"177",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"178",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"179",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"180",10.6851227088505,2.30653618101248,907788,2,1032,1.8611852350972 +"181",3.85680179514967,2.30653618101248,907788,10,1058,-1.26240824175893 +"182",13.8806020165162,2.30653618101248,907788,2,1168,4.07612270774331 +"183",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"184",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"185",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"186",5.71693783079737,2.30653618101248,907788,1,1559,-2.27564528618582 +"187",14.4878222003395,2.30653618101248,907788,10,1736,6.10645357857362 +"188",14.4878222003395,2.30653618101248,907788,10,1736,6.10645357857362 +"189",1.14891123577728,2.30653618101248,907788,10,1912,-3.1393749482528 +"190",2.34172699352085,2.30653618101248,907788,10,1924,-2.31257806884537 +"191",10.0117981023866,2.30653618101248,907788,10,2043,3.00391009495922 +"192",10.8871410593406,2.30653618101248,907788,2,2047,2.00121368516079 +"193",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"194",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"195",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"196",10.2783906793626,2.57592196481569,924100,2,1032,1.57926007561423 +"197",7.49508759962623,2.57592196481569,924100,10,1058,1.25945930568527 +"198",13.6403512936497,2.57592196481569,924100,2,1168,3.90959359656095 +"199",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"200",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"201",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"202",7.58459608764889,2.57592196481569,924100,1,1559,-0.98108323119969 +"203",10.6822565834447,2.57592196481569,924100,10,1736,3.46863650078711 +"204",10.6822565834447,2.57592196481569,924100,10,1736,3.46863650078711 +"205",7.90636445181169,2.57592196481569,924100,10,1912,1.54453469620719 +"206",10.83310606157,2.57592196481569,924100,10,1924,3.57319739123862 +"207",14.6791577243851,2.57592196481569,924100,10,2043,6.23907725760682 +"208",12.143825806122,2.57592196481569,924100,2,2047,2.87228117424504 +"209",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"210",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"211",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"212",3.81033853654365,2.40272017901346,924105,2,1032,-2.90405203089543 +"213",5.76017945751733,2.40272017901346,924105,10,1058,0.0569126184519901 +"214",8.16542751538186,2.40272017901346,924105,2,1168,0.114665615873975 +"215",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"216",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"217",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"218",3.16781766867632,2.40272017901346,924105,1,1559,-4.04256073946854 +"219",6.88348617823547,2.40272017901346,924105,10,1736,0.835529504821806 +"220",6.88348617823547,2.40272017901346,924105,10,1736,0.835529504821806 +"221",9.87374251658438,2.40272017901346,924105,10,1912,2.90821725489986 +"222",9.73539066039704,2.40272017901346,924105,10,1924,2.81231905585837 +"223",13.7959178125883,2.40272017901346,924105,10,2043,5.62686200298683 +"224",11.4824422673119,2.40272017901346,924105,2,2047,2.41384503905002 +"225",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"226",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"227",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"228",11.9821270898956,2.11185431611028,1299075,2,1032,2.7602001649925 +"229",8.86177115379489,2.11185431611028,1299075,10,1058,2.20677215797492 +"230",13.9404334098522,2.11185431611028,1299075,2,1168,4.11759466934317 +"231",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"232",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"233",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"234",9.00304300847153,2.11185431611028,1299075,1,1559,0.00210925274245933 +"235",14.6822921303097,2.11185431611028,1299075,10,1736,6.24124986223617 +"236",14.6822921303097,2.11185431611028,1299075,10,1736,6.24124986223617 +"237",7.1945499157114,2.11185431611028,1299075,10,1912,1.05114245742769 +"238",9.09188553804903,2.11185431611028,1299075,10,1924,2.36627529462696 +"239",13.1125726236745,2.11185431611028,1299075,10,2043,5.15320321194206 +"240",9.8883688502507,2.11185431611028,1299075,2,2047,1.3089175444085 +"241",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"242",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"243",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"244",8.5977181365736,2.82575365697899,905934,10,1058,2.02374455356964 +"245",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"246",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"247",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"248",8.95215386636085,2.82575365697899,905934,1,1559,-0.0331644126326732 +"249",15.8147252143953,2.82575365697899,905934,10,1736,7.0261926616429 +"250",15.8147252143953,2.82575365697899,905934,10,1736,7.0261926616429 +"251",10.3975060954322,2.82575365697899,905934,10,1912,3.27126250285819 +"252",12.6460145906971,2.82575365697899,905934,10,1924,4.82980982681614 +"253",13.1203009714627,2.82575365697899,905934,10,2043,5.15856009442182 +"254",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"255",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"256",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"257",10.0481638398596,1.86754539474537,905935,10,1058,3.02911690335763 +"258",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"259",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"260",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"261",7.14255507100334,1.86754539474537,905935,1,1559,-1.2874827155794 +"262",14.1084546201919,1.86754539474537,905935,10,1736,5.84349600999849 +"263",14.1084546201919,1.86754539474537,905935,10,1736,5.84349600999849 +"264",11.2403128135108,1.86754539474537,905935,10,1912,3.85545160325138 +"265",11.6795082127463,1.86754539474537,905935,10,1924,4.15987865594635 +"266",12.8718519154586,1.86754539474537,905935,10,2043,4.98634833173982 +"267",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"268",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"269",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"270",3.85680179514967,2.30653618101248,907788,10,1058,-1.26240824175893 +"271",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"272",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"273",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"274",5.71693783079737,2.30653618101248,907788,1,1559,-2.27564528618582 +"275",14.4878222003395,2.30653618101248,907788,10,1736,6.10645357857362 +"276",14.4878222003395,2.30653618101248,907788,10,1736,6.10645357857362 +"277",1.14891123577728,2.30653618101248,907788,10,1912,-3.1393749482528 +"278",2.34172699352085,2.30653618101248,907788,10,1924,-2.31257806884537 +"279",10.0117981023866,2.30653618101248,907788,10,2043,3.00391009495922 +"280",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"281",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"282",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"283",7.49508759962623,2.57592196481569,924100,10,1058,1.25945930568527 +"284",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"285",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"286",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"287",7.58459608764889,2.57592196481569,924100,1,1559,-0.98108323119969 +"288",10.6822565834447,2.57592196481569,924100,10,1736,3.46863650078711 +"289",10.6822565834447,2.57592196481569,924100,10,1736,3.46863650078711 +"290",7.90636445181169,2.57592196481569,924100,10,1912,1.54453469620719 +"291",10.83310606157,2.57592196481569,924100,10,1924,3.57319739123862 +"292",14.6791577243851,2.57592196481569,924100,10,2043,6.23907725760682 +"293",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"294",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"295",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"296",5.76017945751733,2.40272017901346,924105,10,1058,0.0569126184519901 +"297",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"298",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"299",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"300",3.16781766867632,2.40272017901346,924105,1,1559,-4.04256073946854 +"301",6.88348617823547,2.40272017901346,924105,10,1736,0.835529504821806 +"302",6.88348617823547,2.40272017901346,924105,10,1736,0.835529504821806 +"303",9.87374251658438,2.40272017901346,924105,10,1912,2.90821725489986 +"304",9.73539066039704,2.40272017901346,924105,10,1924,2.81231905585837 +"305",13.7959178125883,2.40272017901346,924105,10,2043,5.62686200298683 +"306",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"307",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"308",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"309",8.86177115379489,2.11185431611028,1299075,10,1058,2.20677215797492 +"310",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"311",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"312",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"313",9.00304300847153,2.11185431611028,1299075,1,1559,0.00210925274245933 +"314",14.6822921303097,2.11185431611028,1299075,10,1736,6.24124986223617 +"315",14.6822921303097,2.11185431611028,1299075,10,1736,6.24124986223617 +"316",7.1945499157114,2.11185431611028,1299075,10,1912,1.05114245742769 +"317",9.09188553804903,2.11185431611028,1299075,10,1924,2.36627529462696 +"318",13.1125726236745,2.11185431611028,1299075,10,2043,5.15320321194206 +"319",10.7613865448833,2.82575365697899,905934,4,1058,2.60719447858199 +"320",10.447193076105,1.86754539474537,905935,4,1058,2.38941216154793 +"321",5.77450936668732,2.30653618101248,907788,4,1058,-0.849445377283303 +"322",8.32311922367592,2.57592196481569,924100,4,1058,0.917116359435628 +"323",5.99553627577977,2.40272017901346,924105,4,1058,-0.696241198417997 +"324",7.23229160387356,2.11185431611028,1299075,4,1058,0.161012270292703 +"325",11.2606158847515,2.82575365697899,905934,0.25,1559,0.180645165724661 +"326",13.6000061865013,2.82575365697899,905934,5,1560,4.7979192311658 +"327",13.6000061865013,2.82575365697899,905934,5,1560,4.7979192311658 +"328",9.02960229688106,1.86754539474537,905935,0.25,1559,-1.36577561249869 +"329",12.9888204867694,1.86754539474537,905935,5,1560,4.37427758659803 +"330",12.9888204867694,1.86754539474537,905935,5,1560,4.37427758659803 +"331",7.02401783651853,2.30653618101248,907788,0.25,1559,-2.75594082657382 +"332",11.0099734211479,2.30653618101248,907788,5,1560,3.00264532230322 +"333",11.0099734211479,2.30653618101248,907788,5,1560,3.00264532230322 +"334",6.46625850175513,2.57592196481569,924100,0.25,1559,-3.14255013689605 +"335",9.83263307884059,2.57592196481569,924100,5,1560,2.1865751834734 +"336",9.83263307884059,2.57592196481569,924100,5,1560,2.1865751834734 +"337",5.38819990643229,2.40272017901346,924105,0.25,1559,-3.8898034127225 +"338",8.29681849576314,2.40272017901346,924105,5,1560,1.12202963535042 +"339",8.29681849576314,2.40272017901346,924105,5,1560,1.12202963535042 +"340",7.77703805989411,2.11185431611028,1299075,0.25,1559,-2.23398698183641 +"341",11.3508955787036,2.11185431611028,1299075,5,1560,3.23895455460336 +"342",11.3508955787036,2.11185431611028,1299075,5,1560,3.23895455460336 +"343",14.8332455365279,2.82575365697899,905934,2,1032,4.73644487771815 +"344",14.4452580735478,2.82575365697899,905934,2,1168,4.46751246166089 +"345",15.3571272641322,2.82575365697899,905934,2,2047,5.09957202015393 +"346",13.0910387692171,1.86754539474537,905935,2,1032,3.52883916900419 +"347",12.4791072011117,1.86754539474537,905935,2,1168,3.10468052787634 +"348",12.6375842554799,1.86754539474537,905935,2,2047,3.21452845129508 +"349",10.6851227088505,2.30653618101248,907788,2,1032,1.8611852350972 +"350",13.8806020165162,2.30653618101248,907788,2,1168,4.07612270774331 +"351",10.8871410593406,2.30653618101248,907788,2,2047,2.00121368516079 +"352",10.2783906793626,2.57592196481569,924100,2,1032,1.57926007561423 +"353",13.6403512936497,2.57592196481569,924100,2,1168,3.90959359656095 +"354",12.143825806122,2.57592196481569,924100,2,2047,2.87228117424504 +"355",3.81033853654365,2.40272017901346,924105,2,1032,-2.90405203089543 +"356",8.16542751538186,2.40272017901346,924105,2,1168,0.114665615873975 +"357",11.4824422673119,2.40272017901346,924105,2,2047,2.41384503905002 +"358",11.9821270898956,2.11185431611028,1299075,2,1032,2.7602001649925 +"359",13.9404334098522,2.11185431611028,1299075,2,1168,4.11759466934317 +"360",9.8883688502507,2.11185431611028,1299075,2,2047,1.3089175444085 +"361",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"362",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"363",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"364",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"365",13.6000061865013,2.82575365697899,905934,5,1560,4.7979192311658 +"366",13.6000061865013,2.82575365697899,905934,5,1560,4.7979192311658 +"367",13.1203009714627,2.82575365697899,905934,10,2043,5.15856009442182 +"368",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"369",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"370",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"371",10.0481638398596,1.86754539474537,905935,10,1058,3.02911690335763 +"372",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"373",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"374",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"375",7.14255507100334,1.86754539474537,905935,1,1559,-1.2874827155794 +"376",12.9888204867694,1.86754539474537,905935,5,1560,4.37427758659803 +"377",12.9888204867694,1.86754539474537,905935,5,1560,4.37427758659803 +"378",11.2403128135108,1.86754539474537,905935,10,1912,3.85545160325138 +"379",11.6795082127463,1.86754539474537,905935,10,1924,4.15987865594635 +"380",12.8718519154586,1.86754539474537,905935,10,2043,4.98634833173982 +"381",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"382",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"383",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"384",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"385",11.0099734211479,2.30653618101248,907788,5,1560,3.00264532230322 +"386",11.0099734211479,2.30653618101248,907788,5,1560,3.00264532230322 +"387",10.0117981023866,2.30653618101248,907788,10,2043,3.00391009495922 +"388",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"389",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"390",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"391",7.49508759962623,2.57592196481569,924100,10,1058,1.25945930568527 +"392",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"393",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"394",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"395",7.58459608764889,2.57592196481569,924100,1,1559,-0.98108323119969 +"396",9.83263307884059,2.57592196481569,924100,5,1560,2.1865751834734 +"397",9.83263307884059,2.57592196481569,924100,5,1560,2.1865751834734 +"398",7.90636445181169,2.57592196481569,924100,10,1912,1.54453469620719 +"399",10.83310606157,2.57592196481569,924100,10,1924,3.57319739123862 +"400",14.6791577243851,2.57592196481569,924100,10,2043,6.23907725760682 +"401",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"402",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"403",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"404",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"405",8.29681849576314,2.40272017901346,924105,5,1560,1.12202963535042 +"406",8.29681849576314,2.40272017901346,924105,5,1560,1.12202963535042 +"407",13.7959178125883,2.40272017901346,924105,10,2043,5.62686200298683 +"408",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"409",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"410",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"411",8.86177115379489,2.11185431611028,1299075,10,1058,2.20677215797492 +"412",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"413",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"414",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"415",9.00304300847153,2.11185431611028,1299075,1,1559,0.00210925274245933 +"416",11.3508955787036,2.11185431611028,1299075,5,1560,3.23895455460336 +"417",11.3508955787036,2.11185431611028,1299075,5,1560,3.23895455460336 +"418",7.1945499157114,2.11185431611028,1299075,10,1912,1.05114245742769 +"419",9.09188553804903,2.11185431611028,1299075,10,1924,2.36627529462696 +"420",13.1125726236745,2.11185431611028,1299075,10,2043,5.15320321194206 +"421",11.2606158847515,2.82575365697899,905934,0.25,1559,0.180645165724661 +"422",9.02960229688106,1.86754539474537,905935,0.25,1559,-1.36577561249869 +"423",7.02401783651853,2.30653618101248,907788,0.25,1559,-2.75594082657382 +"424",6.46625850175513,2.57592196481569,924100,0.25,1559,-3.14255013689605 +"425",5.38819990643229,2.40272017901346,924105,0.25,1559,-3.8898034127225 +"426",7.77703805989411,2.11185431611028,1299075,0.25,1559,-2.23398698183641 +"427",14.8332455365279,2.82575365697899,905934,2,1032,4.73644487771815 +"428",10.7613865448833,2.82575365697899,905934,4,1058,2.60719447858199 +"429",14.4452580735478,2.82575365697899,905934,2,1168,4.46751246166089 +"430",15.3571272641322,2.82575365697899,905934,2,2047,5.09957202015393 +"431",13.0910387692171,1.86754539474537,905935,2,1032,3.52883916900419 +"432",10.447193076105,1.86754539474537,905935,4,1058,2.38941216154793 +"433",12.4791072011117,1.86754539474537,905935,2,1168,3.10468052787634 +"434",12.6375842554799,1.86754539474537,905935,2,2047,3.21452845129508 +"435",10.6851227088505,2.30653618101248,907788,2,1032,1.8611852350972 +"436",5.77450936668732,2.30653618101248,907788,4,1058,-0.849445377283303 +"437",13.8806020165162,2.30653618101248,907788,2,1168,4.07612270774331 +"438",10.8871410593406,2.30653618101248,907788,2,2047,2.00121368516079 +"439",10.2783906793626,2.57592196481569,924100,2,1032,1.57926007561423 +"440",8.32311922367592,2.57592196481569,924100,4,1058,0.917116359435628 +"441",13.6403512936497,2.57592196481569,924100,2,1168,3.90959359656095 +"442",12.143825806122,2.57592196481569,924100,2,2047,2.87228117424504 +"443",3.81033853654365,2.40272017901346,924105,2,1032,-2.90405203089543 +"444",5.99553627577977,2.40272017901346,924105,4,1058,-0.696241198417997 +"445",8.16542751538186,2.40272017901346,924105,2,1168,0.114665615873975 +"446",11.4824422673119,2.40272017901346,924105,2,2047,2.41384503905002 +"447",11.9821270898956,2.11185431611028,1299075,2,1032,2.7602001649925 +"448",7.23229160387356,2.11185431611028,1299075,4,1058,0.161012270292703 +"449",13.9404334098522,2.11185431611028,1299075,2,1168,4.11759466934317 +"450",9.8883688502507,2.11185431611028,1299075,2,2047,1.3089175444085 +"451",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"452",8.5977181365736,2.82575365697899,905934,10,1058,2.02374455356964 +"453",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"454",8.95215386636085,2.82575365697899,905934,1,1559,-0.0331644126326732 +"455",15.8147252143953,2.82575365697899,905934,10,1736,7.0261926616429 +"456",15.8147252143953,2.82575365697899,905934,10,1736,7.0261926616429 +"457",10.3975060954322,2.82575365697899,905934,10,1912,3.27126250285819 +"458",12.6460145906971,2.82575365697899,905934,10,1924,4.82980982681614 +"459",14.1084546201919,1.86754539474537,905935,10,1736,5.84349600999849 +"460",14.1084546201919,1.86754539474537,905935,10,1736,5.84349600999849 +"461",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"462",3.85680179514967,2.30653618101248,907788,10,1058,-1.26240824175893 +"463",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"464",5.71693783079737,2.30653618101248,907788,1,1559,-2.27564528618582 +"465",14.4878222003395,2.30653618101248,907788,10,1736,6.10645357857362 +"466",14.4878222003395,2.30653618101248,907788,10,1736,6.10645357857362 +"467",1.14891123577728,2.30653618101248,907788,10,1912,-3.1393749482528 +"468",2.34172699352085,2.30653618101248,907788,10,1924,-2.31257806884537 +"469",10.6822565834447,2.57592196481569,924100,10,1736,3.46863650078711 +"470",10.6822565834447,2.57592196481569,924100,10,1736,3.46863650078711 +"471",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"472",5.76017945751733,2.40272017901346,924105,10,1058,0.0569126184519901 +"473",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"474",3.16781766867632,2.40272017901346,924105,1,1559,-4.04256073946854 +"475",6.88348617823547,2.40272017901346,924105,10,1736,0.835529504821806 +"476",6.88348617823547,2.40272017901346,924105,10,1736,0.835529504821806 +"477",9.87374251658438,2.40272017901346,924105,10,1912,2.90821725489986 +"478",9.73539066039704,2.40272017901346,924105,10,1924,2.81231905585837 +"479",14.6822921303097,2.11185431611028,1299075,10,1736,6.24124986223617 +"480",14.6822921303097,2.11185431611028,1299075,10,1736,6.24124986223617 +"481",14.8332455365279,2.82575365697899,905934,2,1032,4.73644487771815 +"482",10.7613865448833,2.82575365697899,905934,4,1058,2.60719447858199 +"483",14.4452580735478,2.82575365697899,905934,2,1168,4.46751246166089 +"484",15.3571272641322,2.82575365697899,905934,2,2047,5.09957202015393 +"485",13.0910387692171,1.86754539474537,905935,2,1032,3.52883916900419 +"486",10.447193076105,1.86754539474537,905935,4,1058,2.38941216154793 +"487",12.4791072011117,1.86754539474537,905935,2,1168,3.10468052787634 +"488",12.6375842554799,1.86754539474537,905935,2,2047,3.21452845129508 +"489",10.6851227088505,2.30653618101248,907788,2,1032,1.8611852350972 +"490",5.77450936668732,2.30653618101248,907788,4,1058,-0.849445377283303 +"491",13.8806020165162,2.30653618101248,907788,2,1168,4.07612270774331 +"492",10.8871410593406,2.30653618101248,907788,2,2047,2.00121368516079 +"493",10.2783906793626,2.57592196481569,924100,2,1032,1.57926007561423 +"494",8.32311922367592,2.57592196481569,924100,4,1058,0.917116359435628 +"495",13.6403512936497,2.57592196481569,924100,2,1168,3.90959359656095 +"496",12.143825806122,2.57592196481569,924100,2,2047,2.87228117424504 +"497",3.81033853654365,2.40272017901346,924105,2,1032,-2.90405203089543 +"498",5.99553627577977,2.40272017901346,924105,4,1058,-0.696241198417997 +"499",8.16542751538186,2.40272017901346,924105,2,1168,0.114665615873975 +"500",11.4824422673119,2.40272017901346,924105,2,2047,2.41384503905002 +"501",11.9821270898956,2.11185431611028,1299075,2,1032,2.7602001649925 +"502",7.23229160387356,2.11185431611028,1299075,4,1058,0.161012270292703 +"503",13.9404334098522,2.11185431611028,1299075,2,1168,4.11759466934317 +"504",9.8883688502507,2.11185431611028,1299075,2,2047,1.3089175444085 +"505",11.2606158847515,2.82575365697899,905934,0.25,1559,0.180645165724661 +"506",13.6000061865013,2.82575365697899,905934,5,1560,4.7979192311658 +"507",13.6000061865013,2.82575365697899,905934,5,1560,4.7979192311658 +"508",9.02960229688106,1.86754539474537,905935,0.25,1559,-1.36577561249869 +"509",12.9888204867694,1.86754539474537,905935,5,1560,4.37427758659803 +"510",12.9888204867694,1.86754539474537,905935,5,1560,4.37427758659803 +"511",7.02401783651853,2.30653618101248,907788,0.25,1559,-2.75594082657382 +"512",11.0099734211479,2.30653618101248,907788,5,1560,3.00264532230322 +"513",11.0099734211479,2.30653618101248,907788,5,1560,3.00264532230322 +"514",6.46625850175513,2.57592196481569,924100,0.25,1559,-3.14255013689605 +"515",9.83263307884059,2.57592196481569,924100,5,1560,2.1865751834734 +"516",9.83263307884059,2.57592196481569,924100,5,1560,2.1865751834734 +"517",5.38819990643229,2.40272017901346,924105,0.25,1559,-3.8898034127225 +"518",8.29681849576314,2.40272017901346,924105,5,1560,1.12202963535042 +"519",8.29681849576314,2.40272017901346,924105,5,1560,1.12202963535042 +"520",7.77703805989411,2.11185431611028,1299075,0.25,1559,-2.23398698183641 +"521",11.3508955787036,2.11185431611028,1299075,5,1560,3.23895455460336 +"522",11.3508955787036,2.11185431611028,1299075,5,1560,3.23895455460336 +"523",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"524",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"525",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"526",8.5977181365736,2.82575365697899,905934,10,1058,2.02374455356964 +"527",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"528",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"529",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"530",8.95215386636085,2.82575365697899,905934,1,1559,-0.0331644126326732 +"531",15.8147252143953,2.82575365697899,905934,10,1736,7.0261926616429 +"532",15.8147252143953,2.82575365697899,905934,10,1736,7.0261926616429 +"533",10.3975060954322,2.82575365697899,905934,10,1912,3.27126250285819 +"534",12.6460145906971,2.82575365697899,905934,10,1924,4.82980982681614 +"535",13.1203009714627,2.82575365697899,905934,10,2043,5.15856009442182 +"536",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"537",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"538",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"539",10.0481638398596,1.86754539474537,905935,10,1058,3.02911690335763 +"540",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"541",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"542",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"543",7.14255507100334,1.86754539474537,905935,1,1559,-1.2874827155794 +"544",14.1084546201919,1.86754539474537,905935,10,1736,5.84349600999849 +"545",14.1084546201919,1.86754539474537,905935,10,1736,5.84349600999849 +"546",11.2403128135108,1.86754539474537,905935,10,1912,3.85545160325138 +"547",11.6795082127463,1.86754539474537,905935,10,1924,4.15987865594635 +"548",12.8718519154586,1.86754539474537,905935,10,2043,4.98634833173982 +"549",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"550",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"551",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"552",3.85680179514967,2.30653618101248,907788,10,1058,-1.26240824175893 +"553",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"554",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"555",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"556",5.71693783079737,2.30653618101248,907788,1,1559,-2.27564528618582 +"557",14.4878222003395,2.30653618101248,907788,10,1736,6.10645357857362 +"558",14.4878222003395,2.30653618101248,907788,10,1736,6.10645357857362 +"559",1.14891123577728,2.30653618101248,907788,10,1912,-3.1393749482528 +"560",2.34172699352085,2.30653618101248,907788,10,1924,-2.31257806884537 +"561",10.0117981023866,2.30653618101248,907788,10,2043,3.00391009495922 +"562",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"563",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"564",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"565",7.49508759962623,2.57592196481569,924100,10,1058,1.25945930568527 +"566",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"567",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"568",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"569",7.58459608764889,2.57592196481569,924100,1,1559,-0.98108323119969 +"570",10.6822565834447,2.57592196481569,924100,10,1736,3.46863650078711 +"571",10.6822565834447,2.57592196481569,924100,10,1736,3.46863650078711 +"572",7.90636445181169,2.57592196481569,924100,10,1912,1.54453469620719 +"573",10.83310606157,2.57592196481569,924100,10,1924,3.57319739123862 +"574",14.6791577243851,2.57592196481569,924100,10,2043,6.23907725760682 +"575",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"576",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"577",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"578",5.76017945751733,2.40272017901346,924105,10,1058,0.0569126184519901 +"579",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"580",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"581",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"582",3.16781766867632,2.40272017901346,924105,1,1559,-4.04256073946854 +"583",6.88348617823547,2.40272017901346,924105,10,1736,0.835529504821806 +"584",6.88348617823547,2.40272017901346,924105,10,1736,0.835529504821806 +"585",9.87374251658438,2.40272017901346,924105,10,1912,2.90821725489986 +"586",9.73539066039704,2.40272017901346,924105,10,1924,2.81231905585837 +"587",13.7959178125883,2.40272017901346,924105,10,2043,5.62686200298683 +"588",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"589",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"590",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"591",8.86177115379489,2.11185431611028,1299075,10,1058,2.20677215797492 +"592",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"593",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"594",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"595",9.00304300847153,2.11185431611028,1299075,1,1559,0.00210925274245933 +"596",14.6822921303097,2.11185431611028,1299075,10,1736,6.24124986223617 +"597",14.6822921303097,2.11185431611028,1299075,10,1736,6.24124986223617 +"598",7.1945499157114,2.11185431611028,1299075,10,1912,1.05114245742769 +"599",9.09188553804903,2.11185431611028,1299075,10,1924,2.36627529462696 +"600",13.1125726236745,2.11185431611028,1299075,10,2043,5.15320321194206 +"601",10.7613865448833,2.82575365697899,905934,4,1058,2.60719447858199 +"602",10.447193076105,1.86754539474537,905935,4,1058,2.38941216154793 +"603",5.77450936668732,2.30653618101248,907788,4,1058,-0.849445377283303 +"604",8.32311922367592,2.57592196481569,924100,4,1058,0.917116359435628 +"605",5.99553627577977,2.40272017901346,924105,4,1058,-0.696241198417997 +"606",7.23229160387356,2.11185431611028,1299075,4,1058,0.161012270292703 +"607",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"608",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"609",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"610",8.5977181365736,2.82575365697899,905934,10,1058,2.02374455356964 +"611",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"612",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"613",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"614",8.95215386636085,2.82575365697899,905934,1,1559,-0.0331644126326732 +"615",15.8147252143953,2.82575365697899,905934,10,1736,7.0261926616429 +"616",15.8147252143953,2.82575365697899,905934,10,1736,7.0261926616429 +"617",10.3975060954322,2.82575365697899,905934,10,1912,3.27126250285819 +"618",12.6460145906971,2.82575365697899,905934,10,1924,4.82980982681614 +"619",13.1203009714627,2.82575365697899,905934,10,2043,5.15856009442182 +"620",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"621",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"622",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"623",10.0481638398596,1.86754539474537,905935,10,1058,3.02911690335763 +"624",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"625",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"626",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"627",7.14255507100334,1.86754539474537,905935,1,1559,-1.2874827155794 +"628",14.1084546201919,1.86754539474537,905935,10,1736,5.84349600999849 +"629",14.1084546201919,1.86754539474537,905935,10,1736,5.84349600999849 +"630",11.2403128135108,1.86754539474537,905935,10,1912,3.85545160325138 +"631",11.6795082127463,1.86754539474537,905935,10,1924,4.15987865594635 +"632",12.8718519154586,1.86754539474537,905935,10,2043,4.98634833173982 +"633",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"634",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"635",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"636",3.85680179514967,2.30653618101248,907788,10,1058,-1.26240824175893 +"637",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"638",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"639",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"640",5.71693783079737,2.30653618101248,907788,1,1559,-2.27564528618582 +"641",14.4878222003395,2.30653618101248,907788,10,1736,6.10645357857362 +"642",14.4878222003395,2.30653618101248,907788,10,1736,6.10645357857362 +"643",1.14891123577728,2.30653618101248,907788,10,1912,-3.1393749482528 +"644",2.34172699352085,2.30653618101248,907788,10,1924,-2.31257806884537 +"645",10.0117981023866,2.30653618101248,907788,10,2043,3.00391009495922 +"646",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"647",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"648",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"649",7.49508759962623,2.57592196481569,924100,10,1058,1.25945930568527 +"650",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"651",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"652",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"653",7.58459608764889,2.57592196481569,924100,1,1559,-0.98108323119969 +"654",10.6822565834447,2.57592196481569,924100,10,1736,3.46863650078711 +"655",10.6822565834447,2.57592196481569,924100,10,1736,3.46863650078711 +"656",7.90636445181169,2.57592196481569,924100,10,1912,1.54453469620719 +"657",10.83310606157,2.57592196481569,924100,10,1924,3.57319739123862 +"658",14.6791577243851,2.57592196481569,924100,10,2043,6.23907725760682 +"659",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"660",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"661",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"662",5.76017945751733,2.40272017901346,924105,10,1058,0.0569126184519901 +"663",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"664",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"665",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"666",3.16781766867632,2.40272017901346,924105,1,1559,-4.04256073946854 +"667",6.88348617823547,2.40272017901346,924105,10,1736,0.835529504821806 +"668",6.88348617823547,2.40272017901346,924105,10,1736,0.835529504821806 +"669",9.87374251658438,2.40272017901346,924105,10,1912,2.90821725489986 +"670",9.73539066039704,2.40272017901346,924105,10,1924,2.81231905585837 +"671",13.7959178125883,2.40272017901346,924105,10,2043,5.62686200298683 +"672",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"673",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"674",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"675",8.86177115379489,2.11185431611028,1299075,10,1058,2.20677215797492 +"676",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"677",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"678",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"679",9.00304300847153,2.11185431611028,1299075,1,1559,0.00210925274245933 +"680",14.6822921303097,2.11185431611028,1299075,10,1736,6.24124986223617 +"681",14.6822921303097,2.11185431611028,1299075,10,1736,6.24124986223617 +"682",7.1945499157114,2.11185431611028,1299075,10,1912,1.05114245742769 +"683",9.09188553804903,2.11185431611028,1299075,10,1924,2.36627529462696 +"684",13.1125726236745,2.11185431611028,1299075,10,2043,5.15320321194206 +"685",11.2606158847515,2.82575365697899,905934,0.25,1559,0.180645165724661 +"686",9.02960229688106,1.86754539474537,905935,0.25,1559,-1.36577561249869 +"687",7.02401783651853,2.30653618101248,907788,0.25,1559,-2.75594082657382 +"688",6.46625850175513,2.57592196481569,924100,0.25,1559,-3.14255013689605 +"689",5.38819990643229,2.40272017901346,924105,0.25,1559,-3.8898034127225 +"690",7.77703805989411,2.11185431611028,1299075,0.25,1559,-2.23398698183641 +"691",14.8332455365279,2.82575365697899,905934,2,1032,4.73644487771815 +"692",14.4452580735478,2.82575365697899,905934,2,1168,4.46751246166089 +"693",15.3571272641322,2.82575365697899,905934,2,2047,5.09957202015393 +"694",13.0910387692171,1.86754539474537,905935,2,1032,3.52883916900419 +"695",12.4791072011117,1.86754539474537,905935,2,1168,3.10468052787634 +"696",12.6375842554799,1.86754539474537,905935,2,2047,3.21452845129508 +"697",10.6851227088505,2.30653618101248,907788,2,1032,1.8611852350972 +"698",13.8806020165162,2.30653618101248,907788,2,1168,4.07612270774331 +"699",10.8871410593406,2.30653618101248,907788,2,2047,2.00121368516079 +"700",10.2783906793626,2.57592196481569,924100,2,1032,1.57926007561423 +"701",13.6403512936497,2.57592196481569,924100,2,1168,3.90959359656095 +"702",12.143825806122,2.57592196481569,924100,2,2047,2.87228117424504 +"703",3.81033853654365,2.40272017901346,924105,2,1032,-2.90405203089543 +"704",8.16542751538186,2.40272017901346,924105,2,1168,0.114665615873975 +"705",11.4824422673119,2.40272017901346,924105,2,2047,2.41384503905002 +"706",11.9821270898956,2.11185431611028,1299075,2,1032,2.7602001649925 +"707",13.9404334098522,2.11185431611028,1299075,2,1168,4.11759466934317 +"708",9.8883688502507,2.11185431611028,1299075,2,2047,1.3089175444085 +"709",13.6000061865013,2.82575365697899,905934,5,1560,4.7979192311658 +"710",13.6000061865013,2.82575365697899,905934,5,1560,4.7979192311658 +"711",12.9888204867694,1.86754539474537,905935,5,1560,4.37427758659803 +"712",12.9888204867694,1.86754539474537,905935,5,1560,4.37427758659803 +"713",11.0099734211479,2.30653618101248,907788,5,1560,3.00264532230322 +"714",11.0099734211479,2.30653618101248,907788,5,1560,3.00264532230322 +"715",9.83263307884059,2.57592196481569,924100,5,1560,2.1865751834734 +"716",9.83263307884059,2.57592196481569,924100,5,1560,2.1865751834734 +"717",8.29681849576314,2.40272017901346,924105,5,1560,1.12202963535042 +"718",8.29681849576314,2.40272017901346,924105,5,1560,1.12202963535042 +"719",11.3508955787036,2.11185431611028,1299075,5,1560,3.23895455460336 +"720",11.3508955787036,2.11185431611028,1299075,5,1560,3.23895455460336 +"721",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"722",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"723",12.4565199603777,2.82575365697899,905934,10,1032,4.69846215807905 +"724",14.8332455365279,2.82575365697899,905934,2,1032,4.73644487771815 +"725",8.5977181365736,2.82575365697899,905934,10,1058,2.02374455356964 +"726",10.7613865448833,2.82575365697899,905934,4,1058,2.60719447858199 +"727",14.4452580735478,2.82575365697899,905934,2,1168,4.46751246166089 +"728",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"729",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"730",15.1868772220085,2.82575365697899,905934,1,1372,4.28841650290575 +"731",11.2606158847515,2.82575365697899,905934,0.25,1559,0.180645165724661 +"732",8.95215386636085,2.82575365697899,905934,1,1559,-0.0331644126326732 +"733",13.6000061865013,2.82575365697899,905934,5,1560,4.7979192311658 +"734",13.6000061865013,2.82575365697899,905934,5,1560,4.7979192311658 +"735",15.8147252143953,2.82575365697899,905934,10,1736,7.0261926616429 +"736",15.8147252143953,2.82575365697899,905934,10,1736,7.0261926616429 +"737",10.3975060954322,2.82575365697899,905934,10,1912,3.27126250285819 +"738",12.6460145906971,2.82575365697899,905934,10,1924,4.82980982681614 +"739",13.1203009714627,2.82575365697899,905934,10,2043,5.15856009442182 +"740",15.3571272641322,2.82575365697899,905934,2,2047,5.09957202015393 +"741",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"742",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"743",10.4707451345632,1.86754539474537,905935,10,1032,3.32202793633879 +"744",13.0910387692171,1.86754539474537,905935,2,1032,3.52883916900419 +"745",10.0481638398596,1.86754539474537,905935,10,1058,3.02911690335763 +"746",10.447193076105,1.86754539474537,905935,4,1058,2.38941216154793 +"747",12.4791072011117,1.86754539474537,905935,2,1168,3.10468052787634 +"748",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"749",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"750",12.6091649089152,1.86754539474537,905935,1,1372,2.50168248079046 +"751",9.02960229688106,1.86754539474537,905935,0.25,1559,-1.36577561249869 +"752",7.14255507100334,1.86754539474537,905935,1,1559,-1.2874827155794 +"753",12.9888204867694,1.86754539474537,905935,5,1560,4.37427758659803 +"754",12.9888204867694,1.86754539474537,905935,5,1560,4.37427758659803 +"755",14.1084546201919,1.86754539474537,905935,10,1736,5.84349600999849 +"756",14.1084546201919,1.86754539474537,905935,10,1736,5.84349600999849 +"757",11.2403128135108,1.86754539474537,905935,10,1912,3.85545160325138 +"758",11.6795082127463,1.86754539474537,905935,10,1924,4.15987865594635 +"759",12.8718519154586,1.86754539474537,905935,10,2043,4.98634833173982 +"760",12.6375842554799,1.86754539474537,905935,2,2047,3.21452845129508 +"761",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"762",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"763",6.91178323358013,2.30653618101248,907788,10,1032,0.855143528952105 +"764",10.6851227088505,2.30653618101248,907788,2,1032,1.8611852350972 +"765",3.85680179514967,2.30653618101248,907788,10,1058,-1.26240824175893 +"766",5.77450936668732,2.30653618101248,907788,4,1058,-0.849445377283303 +"767",13.8806020165162,2.30653618101248,907788,2,1168,4.07612270774331 +"768",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"769",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"770",13.3166678038932,2.30653618101248,907788,1,1372,2.99208611768243 +"771",7.02401783651853,2.30653618101248,907788,0.25,1559,-2.75594082657382 +"772",5.71693783079737,2.30653618101248,907788,1,1559,-2.27564528618582 +"773",11.0099734211479,2.30653618101248,907788,5,1560,3.00264532230322 +"774",11.0099734211479,2.30653618101248,907788,5,1560,3.00264532230322 +"775",14.4878222003395,2.30653618101248,907788,10,1736,6.10645357857362 +"776",14.4878222003395,2.30653618101248,907788,10,1736,6.10645357857362 +"777",1.14891123577728,2.30653618101248,907788,10,1912,-3.1393749482528 +"778",2.34172699352085,2.30653618101248,907788,10,1924,-2.31257806884537 +"779",10.0117981023866,2.30653618101248,907788,10,2043,3.00391009495922 +"780",10.8871410593406,2.30653618101248,907788,2,2047,2.00121368516079 +"781",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"782",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"783",9.67852155343416,2.57592196481569,924100,10,1032,2.77290039470609 +"784",10.2783906793626,2.57592196481569,924100,2,1032,1.57926007561423 +"785",7.49508759962623,2.57592196481569,924100,10,1058,1.25945930568527 +"786",8.32311922367592,2.57592196481569,924100,4,1058,0.917116359435628 +"787",13.6403512936497,2.57592196481569,924100,2,1168,3.90959359656095 +"788",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"789",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"790",11.3459623634984,2.57592196481569,924100,1,1372,1.62609719795866 +"791",6.46625850175513,2.57592196481569,924100,0.25,1559,-3.14255013689605 +"792",7.58459608764889,2.57592196481569,924100,1,1559,-0.98108323119969 +"793",9.83263307884059,2.57592196481569,924100,5,1560,2.1865751834734 +"794",9.83263307884059,2.57592196481569,924100,5,1560,2.1865751834734 +"795",10.6822565834447,2.57592196481569,924100,10,1736,3.46863650078711 +"796",10.6822565834447,2.57592196481569,924100,10,1736,3.46863650078711 +"797",7.90636445181169,2.57592196481569,924100,10,1912,1.54453469620719 +"798",10.83310606157,2.57592196481569,924100,10,1924,3.57319739123862 +"799",14.6791577243851,2.57592196481569,924100,10,2043,6.23907725760682 +"800",12.143825806122,2.57592196481569,924100,2,2047,2.87228117424504 +"801",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"802",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"803",4.28200888142533,2.40272017901346,924105,10,1032,-0.967677148752849 +"804",3.81033853654365,2.40272017901346,924105,2,1032,-2.90405203089543 +"805",5.76017945751733,2.40272017901346,924105,10,1058,0.0569126184519901 +"806",5.99553627577977,2.40272017901346,924105,4,1058,-0.696241198417997 +"807",8.16542751538186,2.40272017901346,924105,2,1168,0.114665615873975 +"808",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"809",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"810",4.35680600178699,2.40272017901346,924105,1,1372,-3.21841682865421 +"811",5.38819990643229,2.40272017901346,924105,0.25,1559,-3.8898034127225 +"812",3.16781766867632,2.40272017901346,924105,1,1559,-4.04256073946854 +"813",8.29681849576314,2.40272017901346,924105,5,1560,1.12202963535042 +"814",8.29681849576314,2.40272017901346,924105,5,1560,1.12202963535042 +"815",6.88348617823547,2.40272017901346,924105,10,1736,0.835529504821806 +"816",6.88348617823547,2.40272017901346,924105,10,1736,0.835529504821806 +"817",9.87374251658438,2.40272017901346,924105,10,1912,2.90821725489986 +"818",9.73539066039704,2.40272017901346,924105,10,1924,2.81231905585837 +"819",13.7959178125883,2.40272017901346,924105,10,2043,5.62686200298683 +"820",11.4824422673119,2.40272017901346,924105,2,2047,2.41384503905002 +"821",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"822",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"823",9.98511560625003,2.11185431611028,1299075,10,1032,2.98541519799186 +"824",11.9821270898956,2.11185431611028,1299075,2,1032,2.7602001649925 +"825",8.86177115379489,2.11185431611028,1299075,10,1058,2.20677215797492 +"826",7.23229160387356,2.11185431611028,1299075,4,1058,0.161012270292703 +"827",13.9404334098522,2.11185431611028,1299075,2,1168,4.11759466934317 +"828",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"829",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"830",13.7097527994872,2.11185431611028,1299075,1,1372,3.26455187409888 +"831",7.77703805989411,2.11185431611028,1299075,0.25,1559,-2.23398698183641 +"832",9.00304300847153,2.11185431611028,1299075,1,1559,0.00210925274245933 +"833",11.3508955787036,2.11185431611028,1299075,5,1560,3.23895455460336 +"834",11.3508955787036,2.11185431611028,1299075,5,1560,3.23895455460336 +"835",14.6822921303097,2.11185431611028,1299075,10,1736,6.24124986223617 +"836",14.6822921303097,2.11185431611028,1299075,10,1736,6.24124986223617 +"837",7.1945499157114,2.11185431611028,1299075,10,1912,1.05114245742769 +"838",9.09188553804903,2.11185431611028,1299075,10,1924,2.36627529462696 +"839",13.1125726236745,2.11185431611028,1299075,10,2043,5.15320321194206 +"840",9.8883688502507,2.11185431611028,1299075,2,2047,1.3089175444085 diff --git a/custom_modules/boolean_model_interface.cpp b/custom_modules/boolean_model_interface.cpp new file mode 100644 index 0000000..0e6815d --- /dev/null +++ b/custom_modules/boolean_model_interface.cpp @@ -0,0 +1,196 @@ +#include "./boolean_model_interface.h" + + +void update_custom_variables( Cell* pCell ) +{ + // first density is oxygen - shouldn't be changed: index from 1 + for (int i = 0; i < microenvironment.number_of_densities(); i++) + { + const std::string& drug_name = microenvironment.density_names[i]; + if (drug_name != "oxygen") { + int drug_index = microenvironment.find_density_index(drug_name); + + // Cache the string operations + std::string conc_var_name = drug_name + "_concentration"; + std::string node_var_name = drug_name + "_node"; + + int index_drug_conc = pCell->custom_data.find_variable_index(conc_var_name); + int index_drug_node = pCell->custom_data.find_variable_index(node_var_name); + + const string& drug_target = get_value(drug_targets, drug_name); + std::string anti_target = "anti_" + drug_target; + + pCell->custom_data.variables.at(index_drug_conc).value = pCell->nearest_density_vector()[drug_index]; + pCell->custom_data.variables.at(index_drug_node).value = pCell->phenotype.intracellular->get_boolean_variable_value(anti_target); + } + } +} + + +// void set_boolean_node (Cell* pCell, std::string drug_name, int drug_index, double threshold) { +void set_boolean_node (Cell* pCell, std::string drug_name, int drug_index) { + if (drug_index != -1) + { + string drug_target = get_value(drug_targets, drug_name); + std::string node_name = "anti_" + drug_target; + // get internalized substrate concentration + double drug_conc = pCell->nearest_density_vector()[drug_index]; + double cell_viability = get_cell_viability_for_drug_conc(drug_conc, parameters.strings("cell_line"), drug_name); + double cell_inhibition = 1 - cell_viability; + double random_num = (double) rand()/RAND_MAX; + if (random_num <= cell_inhibition) + { + pCell->phenotype.intracellular->set_boolean_variable_value(node_name, 1); + } + else + { + pCell->phenotype.intracellular->set_boolean_variable_value(node_name, 0); + } + + } +} + +void set_input_nodes(Cell* pCell) { + + if (PhysiCell::parameters.ints("simulation_mode") == 0) + { + // single inhibition - just one drug is present + + std::string drug_name = microenvironment.density_names[1]; + int drug_index = microenvironment.find_density_index(drug_name); + // int drug_threshold = PhysiCell::parameters.doubles( "threshold_" + drug_name); + + if (pCell->type_name == drug_name + "_sensitive") + { + // cell is sensitive to the drug -> set boolean node + // set_boolean_node(pCell, drug_name, drug_index, drug_threshold); + set_boolean_node(pCell, drug_name, drug_index); + } + } + else if (PhysiCell::parameters.ints("simulation_mode") == 1) + { + // double inhibition - two drugs are present - we have 4 cell strains + + std::string drug1_name = microenvironment.density_names[1]; + int drug1_index = microenvironment.find_density_index(drug1_name); + // int drug1_threshold = PhysiCell::parameters.doubles( "threshold_" + drug1_name); + + std::string drug2_name = microenvironment.density_names[2]; + int drug2_index = microenvironment.find_density_index(drug2_name); + // int drug2_threshold = PhysiCell::parameters.doubles( "threshold_" + drug2_name); + + // if (pCell->type_name == drug1_name + "_sensitive") + // { + // cell is sensitive to both drugs + // set_boolean_node(pCell, drug1_name, drug1_index, drug1_threshold); + // set_boolean_node(pCell, drug2_name, drug2_index, drug2_threshold); + set_boolean_node(pCell, drug1_name, drug1_index); + set_boolean_node(pCell, drug2_name, drug2_index); + // } + // else if (pCell->type_name == drug2_name + "_resistant") + // { + // cell is only sensitive to the first drug + // set_boolean_node(pCell, drug1_name, drug1_index, drug1_threshold); + // set_boolean_node(pCell, drug1_name, drug1_index); + // } + // else if (pCell->type_name == drug2_name + "_sensitive") + // { + // cell is only sensitive to the second drug + // set_boolean_node(pCell, drug2_name, drug2_index, drug2_threshold); + // set_boolean_node(pCell, drug2_name, drug2_index); + // } + + // else: cell is sensitive to no drug --> no boolean node is set + } +} + +void from_nodes_to_cell(Cell* pCell, Phenotype& phenotype, double dt) +{ + + // Prostate live model + // map apoptosis, proliferation and invasion values to agent-based model + + if( pCell->phenotype.cycle.model().code == PhysiCell_constants::live_cells_cycle_model ) + { + int start_phase_index = phenotype.cycle.model().find_phase_index( PhysiCell_constants::live ); + int end_phase_index = phenotype.cycle.model().find_phase_index( PhysiCell_constants::live ); + int apoptosis_index = phenotype.death.find_death_model_index(PhysiCell_constants::apoptosis_death_model); + + // Update Apoptosis + if(pCell->phenotype.intracellular->get_boolean_variable_value("Apoptosis")) + { + // simple implementation, just lead immediately to death + // pCell->start_death(apoptosis_index); + + // increase death rate whenever the node is ON + pCell->phenotype.death.rates[apoptosis_index] = PhysiCell::parameters.doubles("apoptosis_rate_multiplier") * pCell->phenotype.death.rates[apoptosis_index]; + } + + // Update Adhesion + // if( pCell->phenotype.intracellular->get_boolean_variable_value("EMT")){ // nothing happens for now } + + // Update pReference_live_phenotype for proliferation node + if (pCell->phenotype.intracellular->get_boolean_variable_value("Proliferation")) + { + // multiplier implementation + //pCell->parameters.pReference_live_phenotype->cycle.data.transition_rate(start_phase_index,end_phase_index) *= 2.5; + //std::cout << "Rate up! " << std::endl; + + //switch implementation + double high_transition_rate = PhysiCell::parameters.doubles("base_transition_rate") * PhysiCell::parameters.doubles("transition_rate_multiplier"); + pCell->parameters.pReference_live_phenotype->cycle.data.transition_rate(start_phase_index,end_phase_index) = high_transition_rate; + + // pCell->parameters.pReference_live_phenotype->cycle.data.transition_rate(start_phase_index,end_phase_index) = PhysiCell::parameters.doubles("base_transition_rate"); + } + else + { + //multiplier implementation + //pCell->parameters.pReference_live_phenotype->cycle.data.transition_rate(start_phase_index,end_phase_index) *= 0.4; + //std::cout << "Rate down! " << std::endl; + + //switch implementation + pCell->parameters.pReference_live_phenotype->cycle.data.transition_rate(start_phase_index,end_phase_index) = PhysiCell::parameters.doubles("base_transition_rate"); + } + + // Update Migration + if(pCell->phenotype.intracellular->get_boolean_variable_value("Migration")) + { + pCell->phenotype.motility.is_motile = true; + pCell->phenotype.motility.migration_speed = PhysiCell::parameters.doubles("migration_speed"); + pCell->phenotype.motility.migration_bias = PhysiCell::parameters.doubles("migration_bias"); + pCell->phenotype.motility.persistence_time = PhysiCell::parameters.doubles("persistence"); + + // pCell->evolve_coef(pCell->phenotype.intracellular->get_boolean_variable_value("Migration"), phenotype.motility.migration_speed, dt ); + // pCell->phenotype.motility.migration_speed = PhysiCell::parameters.doubles("max_motility_speed") * migration_coeff + } + else + { + pCell->phenotype.motility.is_motile = false; + } + + // Update Invasion + // if(pCell->phenotype.intracellular->get_boolean_variable_value("Invasion")){// nothing happens for now } + } + + pCell->set_internal_uptake_constants(dt); +} + +void boolean_model_interface_main (Cell* pCell, Phenotype& phenotype, double dt){ + + if( phenotype.death.dead == true ) + { + pCell->functions.update_phenotype = NULL; + return; + } +} + +void pre_update_intracellular(Cell* pCell, Phenotype& phenotype, double dt) +{ + set_input_nodes(pCell); +} + +void post_update_intracellular(Cell* pCell, Phenotype& phenotype, double dt) +{ + update_custom_variables(pCell); + from_nodes_to_cell(pCell, phenotype, dt); +} \ No newline at end of file diff --git a/custom_modules/boolean_model_interface.h b/custom_modules/boolean_model_interface.h new file mode 100644 index 0000000..b73c501 --- /dev/null +++ b/custom_modules/boolean_model_interface.h @@ -0,0 +1,35 @@ +#ifndef __BOOLEAN_MODEL_INTERFACE_H__ +#define __BOOLEAN_MODEL_INTERFACE_H__ + +#include "../core/PhysiCell.h" +#include "../modules/PhysiCell_standard_modules.h" +#include "../addons/PhysiBoSS/src/maboss_network.h" +#include "./drug_sensitivity.h" + + +/** + * \boolean network interface + * \brief custom module for prostate example + * + * \details Modules needed for the prostate example. This custom module can be used to study the inhibition of prostate cell lines. + * + * + * \date 21/08/2025 + * \author Annika Meert, Arnau Montagud, Gerard Pradas and Miguel Ponce de Leon, BSC-CNS + */ + +using namespace BioFVM; +using namespace PhysiCell; + +void update_custom_variables( Cell* pCell ); + +// void set_boolean_node (Cell* pCell, std::string drug_name, int index, double threshold); +void set_boolean_node (Cell* pCell, std::string drug_name, int drug_index); +void set_input_nodes(Cell* pCell); +void from_nodes_to_cell(Cell* pCell, Phenotype& phenotype, double dt); +void boolean_model_interface_main (Cell* pCell, Phenotype& phenotype, double dt); + +void pre_update_intracellular(Cell* pCell, Phenotype& phenotype, double dt); +void post_update_intracellular(Cell* pCell, Phenotype& phenotype, double dt); + +#endif \ No newline at end of file diff --git a/custom_modules/custom.cpp b/custom_modules/custom.cpp index d3b6fda..0872ead 100644 --- a/custom_modules/custom.cpp +++ b/custom_modules/custom.cpp @@ -1,74 +1,31 @@ -/* -############################################################################### -# If you use PhysiCell in your project, please cite PhysiCell and the version # -# number, such as below: # -# # -# We implemented and solved the model using PhysiCell (Version x.y.z) [1]. # -# # -# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, # -# PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellu- # -# lar Systems, PLoS Comput. Biol. 14(2): e1005991, 2018 # -# DOI: 10.1371/journal.pcbi.1005991 # -# # -# See VERSION.txt or call get_PhysiCell_version() to get the current version # -# x.y.z. Call display_citations() to get detailed information on all cite-# -# able software used in your PhysiCell application. # -# # -# Because PhysiCell extensively uses BioFVM, we suggest you also cite BioFVM # -# as below: # -# # -# We implemented and solved the model using PhysiCell (Version x.y.z) [1], # -# with BioFVM [2] to solve the transport equations. # -# # -# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, # -# PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellu- # -# lar Systems, PLoS Comput. Biol. 14(2): e1005991, 2018 # -# DOI: 10.1371/journal.pcbi.1005991 # -# # -# [2] A Ghaffarizadeh, SH Friedman, and P Macklin, BioFVM: an efficient para- # -# llelized diffusive transport solver for 3-D biological simulations, # -# Bioinformatics 32(8): 1256-8, 2016. DOI: 10.1093/bioinformatics/btv730 # -# # -############################################################################### -# # -# BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # -# # -# Copyright (c) 2015-2021, Paul Macklin and the PhysiCell Project # -# All rights reserved. # -# # -# Redistribution and use in source and binary forms, with or without # -# modification, are permitted provided that the following conditions are met: # -# # -# 1. Redistributions of source code must retain the above copyright notice, # -# this list of conditions and the following disclaimer. # -# # -# 2. Redistributions in binary form must reproduce the above copyright # -# notice, this list of conditions and the following disclaimer in the # -# documentation and/or other materials provided with the distribution. # -# # -# 3. Neither the name of the copyright holder nor the names of its # -# contributors may be used to endorse or promote products derived from this # -# software without specific prior written permission. # -# # -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE # -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # -# POSSIBILITY OF SUCH DAMAGE. # -# # -############################################################################### -*/ + +#define _USE_MATH_DEFINES +#include +#include #include "./custom.h" +#include "../BioFVM/BioFVM.h" + +/** + * \main prostate custom + * \brief Custom module file for prostate example + * + * \details Modules needed for the prostate example. + * + * + * \date 20/08/2025 + * \author Arnau Montagud, Annika Meert, Gerard Pradas and Miguel Ponce de Leon, BSC-CNS + */ + +// declare cell definitions here void create_cell_types( void ) { + // use the same random seed so that future experiments have the + // same initial histogram of oncoprotein, even if threading means + // that future division and other events are still not identical + // for all runs + // set the random seed if (parameters.ints.find_index("random_seed") != -1) { @@ -81,38 +38,52 @@ void create_cell_types( void ) This is a good place to set default functions. */ - + initialize_default_cell_definition(); cell_defaults.phenotype.secretion.sync_to_microenvironment( µenvironment ); - + cell_defaults.functions.volume_update_function = standard_volume_update_function; cell_defaults.functions.update_velocity = standard_update_cell_velocity; + // cell_defaults.functions.pre_update_intracellular = pre_update_intracellular; + // cell_defaults.functions.post_update_intracellular = post_update_intracellular; + cell_defaults.functions.update_migration_bias = NULL; - cell_defaults.functions.update_phenotype = NULL; // update_cell_and_death_parameters_O2_based; + cell_defaults.functions.update_phenotype = NULL; // tumor_cell_phenotype_with_signaling; cell_defaults.functions.custom_cell_rule = NULL; cell_defaults.functions.contact_function = NULL; cell_defaults.functions.add_cell_basement_membrane_interactions = NULL; cell_defaults.functions.calculate_distance_to_membrane = NULL; + // cell_defaults.functions.set_orientation = NULL; + /* This parses the cell definitions in the XML config file. */ - - initialize_cell_definitions_from_pugixml(); + + initialize_cell_definitions_from_pugixml(); /* This builds the map of cell definitions and summarizes the setup. */ - + + // set molecular properties for each drug defined in PhysiCell_settings.xml + // starts with the second density because the first density is oxygen + // for (int i = 0; i < microenvironment.number_of_densities(); i++) + // { + // if (microenvironment.density_names[i] != "oxygen") { + // cell_defaults.phenotype.molecular.fraction_released_at_death[i] = 0.0; + // } + // } + build_cell_definitions_maps(); /* This intializes cell signal and response dictionaries */ - setup_signal_behavior_dictionaries(); + setup_signal_behavior_dictionaries(); /* Cell rule definitions @@ -125,84 +96,186 @@ void create_cell_types( void ) This is a good place to set custom functions. */ + + cell_defaults.functions.pre_update_intracellular = pre_update_intracellular; + cell_defaults.functions.post_update_intracellular = post_update_intracellular; cell_defaults.functions.update_phenotype = phenotype_function; cell_defaults.functions.custom_cell_rule = custom_function; cell_defaults.functions.contact_function = contact_function; + + Cell_Definition* pCD = find_cell_definition( "default"); + + pCD->functions.pre_update_intracellular = pre_update_intracellular; + pCD->functions.post_update_intracellular = post_update_intracellular; + pCD->functions.custom_cell_rule = custom_function; + pCD->functions.contact_function = contact_function; + pCD->functions.update_velocity = standard_update_cell_velocity; + /* This builds the map of cell definitions and summarizes the setup. */ - + display_cell_definitions( std::cout ); - + return; } +double get_decay_rate(double half_life){ + // natural logarithm of 2 / half-life = k (reaction rate coefficient) + double decay_rate = log(2)/(half_life); + return decay_rate; +} + void setup_microenvironment( void ) { - // set domain parameters - - // put any custom code to set non-homogeneous initial conditions or - // extra Dirichlet nodes here. - + // // make sure to override and go back to 2D + // if( default_microenvironment_options.simulate_2D == true ) + // { + // std::cout << "Warning: overriding XML config option and setting to 3D!" << std::endl; + // default_microenvironment_options.simulate_2D = false; + // } + + // set intial conditions and dirichlet boundary conditions for the drugs; vector already contains the condition for oxygen + // double oxygen_condition = 160.0; + // vector condition_vector = {oxygen_condition}; + // vector activation_vector {1}; + // vector decay_vector {0.1}; + // for (int i = 0; i < microenvironment.number_of_densities(); i++) + // { + // std::string drug_name = microenvironment.density_names[i]; + // if (drug_name != "oxygen") { + // // int current_drug_level= parameters.ints("current_concentration_level_" + drug_name); + // // int total_drug_levels = parameters.ints("total_concentration_levels"); + // string cell_line = parameters.strings("cell_line"); + // int simulation_mode = parameters.ints("simulation_mode"); + + // //drug_conc can either be an IC value or an actual drug concentration + // string drug_conc = parameters.strings("drug_concentration_" + drug_name); + // double drug_concentration; + // // check if drug_conc contains the string "IC" + // if(drug_conc.find("IC") != string::npos) { + // drug_concentration = get_drug_concentration_from_IC(cell_line, drug_name, drug_conc, simulation_mode); + // } + // else { + // drug_concentration = stod(drug_conc); + // } + // // double drug_concentration = get_drug_concentration_from_level(cell_line, drug_name, current_drug_level, total_drug_levels, simulation_mode); + // condition_vector.push_back(drug_concentration); + // activation_vector.push_back(1); + + // // double half_life = get_value(half_lives, drug_name); + // // double decay_rate = get_decay_rate(half_life); + // // decay_vector.push_back(decay_rate); + + // } + // } + // default_microenvironment_options.Dirichlet_activation_vector = activation_vector; + // default_microenvironment_options.Dirichlet_condition_vector = condition_vector; + // default_microenvironment_options.Dirichlet_zmax_values = condition_vector; + // default_microenvironment_options.Dirichlet_zmin_values = condition_vector; + // default_microenvironment_options.Dirichlet_ymax_values = condition_vector; + // default_microenvironment_options.Dirichlet_ymin_values = condition_vector; + // default_microenvironment_options.Dirichlet_xmax_values = condition_vector; + // default_microenvironment_options.Dirichlet_xmin_values = condition_vector; + + // initialize BioFVM - initialize_microenvironment(); + + // microenvironment.decay_rates = decay_vector; return; } void setup_tissue( void ) { - double Xmin = microenvironment.mesh.bounding_box[0]; - double Ymin = microenvironment.mesh.bounding_box[1]; - double Zmin = microenvironment.mesh.bounding_box[2]; + // place a cluster of tumor cells at the center + load_cells_from_pugixml(); - double Xmax = microenvironment.mesh.bounding_box[3]; - double Ymax = microenvironment.mesh.bounding_box[4]; - double Zmax = microenvironment.mesh.bounding_box[5]; - - if( default_microenvironment_options.simulate_2D == true ) - { - Zmin = 0.0; - Zmax = 0.0; - } - - double Xrange = Xmax - Xmin; - double Yrange = Ymax - Ymin; - double Zrange = Zmax - Zmin; - - // create some of each type of cell - +} + +// old setup_tissue function, needs to be updated to new structure +void setup_tissue_resistant( void ) +{ Cell* pC; - - for( int k=0; k < cell_definitions_by_index.size() ; k++ ) + + std::vector cells = read_init_file(parameters.strings("init_cells_filename"), ';', true); + + for (int i = 0; i < cells.size(); i++) { - Cell_Definition* pCD = cell_definitions_by_index[k]; - std::cout << "Placing cells of type " << pCD->name << " ... " << std::endl; - for( int n = 0 ; n < parameters.ints("number_of_cells") ; n++ ) + float x = cells[i].x; + float y = cells[i].y; + float z = cells[i].z; + float radius = cells[i].radius; + int phase = cells[i].phase; + double elapsed_time = cells[i].elapsed_time; + + double random_num_1 = (double) rand()/RAND_MAX; + double random_num_2 = (double) rand()/RAND_MAX; + + if (PhysiCell::parameters.ints("simulation_mode") == 0) + { + // single inhibition - just one drug is present + if (random_num_1 < PhysiCell::parameters.doubles("prop_drug_resistant_" + microenvironment.density_names[1])) + { + // cell is sensitive to the drug + pC = create_cell(get_cell_definition(microenvironment.density_names[1] + "_resistant")); + } + else + { + // cell is not sensitive to the drug + pC = create_cell(get_cell_definition(microenvironment.density_names[1] + "_sensitive")); + } + } + else if (PhysiCell::parameters.ints("simulation_mode") == 1) { - std::vector position = {0,0,0}; - position[0] = Xmin + UniformRandom()*Xrange; - position[1] = Ymin + UniformRandom()*Yrange; - position[2] = Zmin + UniformRandom()*Zrange; + // double inhibition - two drugs are present - we have 4 cell strains + if (random_num_1 < PhysiCell::parameters.doubles("prop_drug_resistant_" + microenvironment.density_names[1])) + { + if (random_num_2 < PhysiCell::parameters.doubles("prop_drug_resistant_" + microenvironment.density_names[2])) + { + // cell is resistant to both drugs + pC = create_cell(get_cell_definition(microenvironment.density_names[1] + "_resistant")); + } + else + { + // cell is only resistant to the first drug + pC = create_cell(get_cell_definition(microenvironment.density_names[2] + "_sensitive")); + } + } + else + { + if (random_num_2 < PhysiCell::parameters.doubles("prop_drug_resistant_" + microenvironment.density_names[2])) + { + // cell is only resistant to the second drug + pC = create_cell(get_cell_definition(microenvironment.density_names[2] + "_resistant")); + } + else + { + // cell is resistant to no drug + pC = create_cell(get_cell_definition(microenvironment.density_names[1] + "_sensitive")); + } + + } - pC = create_cell( *pCD ); - pC->assign_position( position ); } + else + { + pC = create_cell(get_cell_definition("default")); + } + + pC->assign_position( x, y, z ); + + pC->phenotype.cycle.data.elapsed_time_in_phase = elapsed_time; + + update_custom_variables(pC); } - std::cout << std::endl; - - // load cells from your CSV file (if enabled) - load_cells_from_pugixml(); - + return; } -std::vector my_coloring_function( Cell* pCell ) -{ return paint_by_number_cell_coloring(pCell); } - void phenotype_function( Cell* pCell, Phenotype& phenotype, double dt ) { return; } @@ -213,34 +286,140 @@ void contact_function( Cell* pMe, Phenotype& phenoMe , Cell* pOther, Phenotype& { return; } void treatment_function () +{ return; } + +void tumor_cell_phenotype_with_signaling( Cell* pCell, Phenotype& phenotype, double dt) { - if (PhysiCell::parameters.bools.find_index("treatment") != -1) + update_cell_and_death_parameters_O2_based(pCell, phenotype, dt); + + // update motility state variable + static int index_motility_state = pCell->custom_data.find_variable_index("motility_state"); + pCell->custom_data.variables.at(index_motility_state).value = int(pCell->phenotype.motility.is_motile); + + boolean_model_interface_main (pCell, phenotype, dt); +} + +// coloring function, not used + +// std::vector prolif_apoptosis_coloring( Cell* pCell ) +// { +// std::vector output; +// if (pCell->phenotype.cycle.current_phase().code == PhysiCell_constants::apoptosis_death_model) +// { +// //apoptotic cells are colored red +// output = {"crimson", "black","darkred", "darkred"}; +// } + +// else if (pCell->phenotype.cycle.current_phase().code == PhysiCell_constants::necrosis_death_model) +// { +// //necrotic cells are colored brown +// output = {"peru", "black","saddlebrown", "saddlebrown"}; +// } + +// else if (PhysiCell::parameters.ints("simulation_mode") == 0) +// { +// std::string drug_name = microenvironment.density_names[1]; +// if (pCell->type_name == drug_name + "_sensitive") +// { +// //drug sensitive living cells are colored blue +// output = {"deepskyblue", "black", "darkblue", "darkblue"}; +// } +// else +// { +// //drug resistant living cells are colored green +// output = {"limegreen", "black", "darkgreen", "darkgreen"}; +// } +// } +// else if (PhysiCell::parameters.ints("simulation_mode") == 1) +// { +// // // color living cells just in one color +// // output = {"limegreen", "black", "darkgreen", "darkgreen"}; + +// // In case we want to color all 4 strains differently: +// // double inhibitions --> 4 cell strains +// std::string drug1_name = microenvironment.density_names[1]; +// std::string drug2_name = microenvironment.density_names[2]; +// if (pCell->type_name == drug1_name + "_sensitive") +// { +// //cells that are sensitive to both drugs are colored blue +// output = {"deepskyblue", "black", "darkblue", "darkblue"}; +// } +// else if (pCell->type_name == drug2_name + "_resistant") +// { +// // cells that are just sensitive to the first drug +// output = {"limegreen", "black", "darkgreen", "darkgreen"}; + +// } +// else if (pCell->type_name == drug2_name + "_sensitive") +// { +// // cells are just sensitive to the second drug +// output = {"gold", "black", "orange", "orange"}; +// } +// else +// { +// // cells aren't sensitive to any drug +// output = {"mediumorchid", "black", "mediumpurple", "mediumpurple"}; +// } +// } +// else +// { +// // no drug simulation - living cells are colored green +// output = {"limegreen", "black", "darkgreen", "darkgreen"}; +// } +// return output; + +// } + +// *********************************************************** +// * NOTE: Funtion to read init files created with PhysiBoSS * +// *********************************************************** +std::vector read_init_file(std::string filename, char delimiter, bool header) +{ + // File pointer + std::fstream fin; + std::vector result; + + // Open an existing file + fin.open(filename, std::ios::in); + + // Read the Data from the file + // as String Vector + std::vector row; + std::string line, word; + + if(header) + getline(fin, line); + + do { - int treatment_substrate_index = BioFVM::microenvironment.find_density_index(PhysiCell::parameters.strings("treatment_substrate")); + row.clear(); - if (PhysiCell::parameters.bools("treatment")){ - - if ( - (((int)PhysiCell::PhysiCell_globals.current_time) % PhysiCell::parameters.ints("treatment_period")) == 0 - && !BioFVM::microenvironment.get_substrate_dirichlet_activation(treatment_substrate_index) - ) - { - std::cout << PhysiCell::parameters.strings("treatment_substrate") << " activation at t=" << PhysiCell::PhysiCell_globals.current_time << std::endl; - BioFVM::microenvironment.set_substrate_dirichlet_activation(treatment_substrate_index, true); - } + // read an entire row and + // store it in a string variable 'line' + getline(fin, line); - if ( - (((int)PhysiCell::PhysiCell_globals.current_time) % PhysiCell::parameters.ints("treatment_period")) == PhysiCell::parameters.ints("treatment_duration") - && BioFVM::microenvironment.get_substrate_dirichlet_activation(treatment_substrate_index) - ) - { - std::cout << PhysiCell::parameters.strings("treatment_substrate") << " inactivation at t=" << PhysiCell::PhysiCell_globals.current_time << std::endl; - BioFVM::microenvironment.set_substrate_dirichlet_activation(treatment_substrate_index, false); - } - - } else if ( BioFVM::microenvironment.get_substrate_dirichlet_activation(treatment_substrate_index) ){ - std::cout << PhysiCell::parameters.strings("treatment_substrate") << " inactivation (NO TREATMENT) at t=" << PhysiCell::PhysiCell_globals.current_time << std::endl; - BioFVM::microenvironment.set_substrate_dirichlet_activation(treatment_substrate_index, false); + // used for breaking words + std::stringstream s(line); + + // read every column data of a row and + // store it in a string variable, 'word' + while (getline(s, word, delimiter)) { + + // add all the column data + // of a row to a vector + row.push_back(word); } - } + + init_record record; + record.x = std::stof(row[2]); + record.y = std::stof(row[3]); + record.z = std::stof(row[4]); + record.radius = std::stof(row[5]); + record.phase = std::stoi(row[13]); + record.elapsed_time = std::stod(row[14]); + + result.push_back(record); + } while (!fin.eof()); + + return result; } \ No newline at end of file diff --git a/custom_modules/custom.h b/custom_modules/custom.h index bb5843d..dd07b75 100644 --- a/custom_modules/custom.h +++ b/custom_modules/custom.h @@ -1,93 +1,58 @@ -/* -############################################################################### -# If you use PhysiCell in your project, please cite PhysiCell and the version # -# number, such as below: # -# # -# We implemented and solved the model using PhysiCell (Version x.y.z) [1]. # -# # -# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, # -# PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellu- # -# lar Systems, PLoS Comput. Biol. 14(2): e1005991, 2018 # -# DOI: 10.1371/journal.pcbi.1005991 # -# # -# See VERSION.txt or call get_PhysiCell_version() to get the current version # -# x.y.z. Call display_citations() to get detailed information on all cite-# -# able software used in your PhysiCell application. # -# # -# Because PhysiCell extensively uses BioFVM, we suggest you also cite BioFVM # -# as below: # -# # -# We implemented and solved the model using PhysiCell (Version x.y.z) [1], # -# with BioFVM [2] to solve the transport equations. # -# # -# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, # -# PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellu- # -# lar Systems, PLoS Comput. Biol. 14(2): e1005991, 2018 # -# DOI: 10.1371/journal.pcbi.1005991 # -# # -# [2] A Ghaffarizadeh, SH Friedman, and P Macklin, BioFVM: an efficient para- # -# llelized diffusive transport solver for 3-D biological simulations, # -# Bioinformatics 32(8): 1256-8, 2016. DOI: 10.1093/bioinformatics/btv730 # -# # -############################################################################### -# # -# BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # -# # -# Copyright (c) 2015-2021, Paul Macklin and the PhysiCell Project # -# All rights reserved. # -# # -# Redistribution and use in source and binary forms, with or without # -# modification, are permitted provided that the following conditions are met: # -# # -# 1. Redistributions of source code must retain the above copyright notice, # -# this list of conditions and the following disclaimer. # -# # -# 2. Redistributions in binary form must reproduce the above copyright # -# notice, this list of conditions and the following disclaimer in the # -# documentation and/or other materials provided with the distribution. # -# # -# 3. Neither the name of the copyright holder nor the names of its # -# contributors may be used to endorse or promote products derived from this # -# software without specific prior written permission. # -# # -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE # -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # -# POSSIBILITY OF SUCH DAMAGE. # -# # -############################################################################### -*/ +#ifndef __CUSTOM_H__ +#define __CUSTOM_H__ #include "../core/PhysiCell.h" -#include "../modules/PhysiCell_standard_modules.h" +#include "../modules/PhysiCell_standard_modules.h" +#include "drug_sensitivity.h" +#include "boolean_model_interface.h" + +/** + * \main drug custom + * \brief Custom module file for example + * + * \details Modules needed for the drug example. This custom module can be used to study the inhibition of cell lines with inhibitors. + * + * + * \date 20/08/2025 + * \author Arnau Montagud, Annika Meert, Gerard Pradas and Miguel Ponce de Leon, BSC-CNS + */ using namespace BioFVM; using namespace PhysiCell; -// setup functions to help us along - void create_cell_types( void ); -void setup_tissue( void ); +double get_decay_rate(double half_life); // set up the BioFVM microenvironment void setup_microenvironment( void ); -// custom pathology coloring function - -std::vector my_coloring_function( Cell* ); - -// custom functions can go here +void setup_tissue( void ); +void setup_tissue_resistant( void ); void phenotype_function( Cell* pCell, Phenotype& phenotype, double dt ); void custom_function( Cell* pCell, Phenotype& phenotype , double dt ); - void contact_function( Cell* pMe, Phenotype& phenoMe , Cell* pOther, Phenotype& phenoOther , double dt ); +void treatment_function (); + +// custom cell phenotype functions could go here +void tumor_cell_phenotype_with_signaling( Cell* pCell, Phenotype& phenotype, double dt ); + +// needed for setup_tissue_resistant +struct init_record +{ + float x; + float y; + float z; + float radius; + int phase; + double elapsed_time; +}; + +// custom pathology coloring function +// std::vector prolif_apoptosis_coloring( Cell* ); + +std::vector read_init_file(std::string filename, char delimiter, bool header); + +inline float sphere_volume_from_radius(float radius) {return 4/3 * PhysiCell_constants::pi * std::pow(radius, 3);} -void treatment_function (); \ No newline at end of file +#endif \ No newline at end of file diff --git a/custom_modules/drug_sensitivity.cpp b/custom_modules/drug_sensitivity.cpp new file mode 100644 index 0000000..a0c15e5 --- /dev/null +++ b/custom_modules/drug_sensitivity.cpp @@ -0,0 +1,172 @@ + +#include "./drug_sensitivity.h" + +/** + * \drug sensitivity + * \brief drug sensitivity module for prostate example + * + * \details Module needed for the prostate example. + * + * + * \date 15/02/2020 + * \author Annika Meert, BSC-CNS + */ + +using namespace std; + +vector> drug_targets = { + { "Ipatasertib", "AKT"}, + { "Afuresertib", "AKT"}, + { "Afatinib", "EGFR"}, + { "Erlotinib", "EGFR"}, + { "Ulixertinib", "ERK"}, + { "Luminespib", "HSPs"}, + { "Trametinib", "MEK1_2"}, + { "Selumetinib", "MEK1_2"}, + { "Pictilisib", "PI3K"}, + { "Alpelisib", "PI3K"}, + { "BIBR1532", "TERT"} +}; + +vector> half_lives = { + { "Ipatasertib", 2748}, + { "Afuresertib", 2448}, + { "Afatinib", 2220}, + { "Erlotinib", 2172}, + { "Ulixertinib", 105}, + { "Luminespib", 7200}, + { "Trametinib", 5760}, + { "Selumetinib", 822}, + { "Pictilisib", 1062}, + { "Alpelisib", 822}, + +}; + +// Update function definitions to match declarations +string get_value(const vector>& dict, const string& key) { + vector>::const_iterator dict_iterator = + find_if(dict.begin(), dict.end(), + [&key](const pair& element) -> bool { + return element.first == key; + }); + if (dict_iterator != dict.end()) { + return dict_iterator->second; + } + return ""; // or throw an exception +} + +int get_value(const vector>& dict, const string& key) { + vector>::const_iterator dict_iterator = + find_if(dict.begin(), dict.end(), + [&key](const pair& element) -> bool { + return element.first == key; + }); + if (dict_iterator != dict.end()) { + return dict_iterator->second; + } + return -1; // or throw an exception +} + +// string get_value (const vector> dict, string key) { + // vector< pair>::const_iterator dict_iterator = find_if( dict.begin(), dict.end(),[&key](const pair < string, string>& element){ return element.first == key;} ); + // return (*dict_iterator).second; +// } + +// int get_value (const vector> dict, string key) { +// vector< pair>::const_iterator dict_iterator = find_if( dict.begin(), dict.end(),[&key](const pair < string, int>& element){ return element.first == key;} ); +// return (*dict_iterator).second; +// } + + +vector get_drug_sensitivity_values (string drug_name) { + double max_conc = parameters.doubles(drug_name+"_maxc"); + double xmid = parameters.doubles(drug_name+"_xmid"); + double scale = parameters.doubles(drug_name+"_scal"); + + return {max_conc, xmid, scale}; +} + + +double get_drug_concentration_from_IC (string cell_line, string drug_name, string IC_value, int simulation_mode) { + std::stringstream ss; + ss << IC_value[3] << "." << IC_value[2]; + double inhibition_value = stod(ss.str()); + std::cout << "Inhibition value for "<< drug_name << " is: " << inhibition_value << '\n'; + double final_viability = 1.0 - inhibition_value; + + // call functions to retrieve data from datastructure cell line and drug + vector drug_sens_vals = get_drug_sensitivity_values(drug_name); + // call linear_mixed_model_function + double max_conc = drug_sens_vals[0]; + double xmid = drug_sens_vals[1]; + double scale = drug_sens_vals[2]; + + // get the drug concentration for the cell viability + double x = get_x_for_cell_viability(xmid, scale, final_viability); + double drug_conc = get_conc_from_x(x, max_conc); + + return drug_conc; +} + +// returns x: the concentration scaled for 9 different concentrations +double get_x_from_conc(double x_conc, double max_conc) { + double x = (log (x_conc / max_conc) / log (2) ) + 9; + return(x); +} + +// returns conc: concentration in micromolar +double get_conc_from_x (double x, double max_conc) { + double x_conc = max_conc * pow(2 , (x - 9)); + return(x_conc); +} + +// returns the natural logarithm for x +double get_lx_from_x (double x, double max_conc) { + double lx = log (get_conc_from_x(x, max_conc)); + return(lx); +} + +// two parameter logistic function used to model GDSC dose response data +// this model is described further in published in Vis, D.J. et al Pharmacogenomics 2016, 17(7):691-700) +// double logist3 (double x, double xmid, double scale) { +// //https://github.com/CancerRxGene/gdscIC50/blob/master/R/nlme_fit.R + +// return; +// } + + +// this function then has to be called whenever we translate concentration into maboss +// check in the datastructure for cell line and drug for the important values and enter concentration +// then we receive a y_hat that we can use to calculate the maboss activity +double get_cell_viability_for_x(double x, double max_conc, double xmid, double scale) +{ + // double y_hat = 1 - logist3(x, xmid, scale); + double y_hat = 1/(1 + pow( exp(1), (x- xmid) /scale)); + return(y_hat); +} + + +double get_x_for_cell_viability (double xmid, double scale, double cell_viability) { + double x = (log((1/cell_viability) - 1) * scale) + xmid; + return x; +} + +double get_cell_viability_for_drug_conc (double drug_conc, string cell_line, string drug_name) +{ + //std::cout << "Concentration of " << drug_name << ": " << drug_conc << std::endl; + // call functions to retrieve data from datastructure cell line and drug + vector drug_sens_vals = get_drug_sensitivity_values(drug_name); + // call linear_mixed_model_function + double max_conc = drug_sens_vals[0]; + double xmid = drug_sens_vals[1]; + double scale = drug_sens_vals[2]; + // transfor drug concentration into lx + double x = get_x_from_conc(drug_conc, max_conc); + double y_hat = get_cell_viability_for_x(x, max_conc, xmid, scale); + // return cell viability value y_hat + //std::cout << "Cell viability for " << drug_name << ": " << y_hat << std::endl; + return y_hat; +} + + + diff --git a/custom_modules/drug_sensitivity.h b/custom_modules/drug_sensitivity.h new file mode 100644 index 0000000..4febc44 --- /dev/null +++ b/custom_modules/drug_sensitivity.h @@ -0,0 +1,44 @@ +#include +#include +#include +#include // std::pair +#include // std::runtime_error +#include // std::stringstream +#include +#include +#include +#include "../core/PhysiCell.h" +#include "../modules/PhysiCell_standard_modules.h" + +/** + * \main rdrug:sensitivity + * \brief Custom module file for prostate example + * + * \details Modules needed for the prostate example. This custom module can be used to study the inhibition of prostate cell lines + * + * + * \date 19/10/2020 + * \author Annika Meert, BSC-CNS + */ + +using namespace std; +using namespace PhysiCell; +using namespace BioFVM; + +extern vector> drug_targets; +extern vector> half_lives; + +// Function declarations +string get_value(const vector>& dict, const string& key); +int get_value(const vector>& dict, const string& key); + +vector get_drug_sensitivity_values (string drug_name); +double get_drug_concentration_from_level (string cell_line, string drug_name, int conc_level, int num_of_conc_levels, int simulation_mode); +double get_drug_concentration_from_IC (string cell_line, string drug_name, string IC_value, int simulation_mode); + +double get_x_from_conc(double x_conc, double max_conc); +double get_conc_from_x (double x, double max_conc); +double get_lx_from_x (double x, double max_conc); +double get_x_for_cell_viability (double xmid, double scale, double cell_viability); +double linear_mixed_model_function(double x, double max_conc, double xmid, double scale); +double get_cell_viability_for_drug_conc (double drug_conc, string cell_line, string drug_name); \ No newline at end of file diff --git a/main.cpp b/main.cpp index e1dfd12..e07e6d2 100644 --- a/main.cpp +++ b/main.cpp @@ -1,70 +1,10 @@ -/* -############################################################################### -# If you use PhysiCell in your project, please cite PhysiCell and the version # -# number, such as below: # -# # -# We implemented and solved the model using PhysiCell (Version x.y.z) [1]. # -# # -# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, # -# PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellu- # -# lar Systems, PLoS Comput. Biol. 14(2): e1005991, 2018 # -# DOI: 10.1371/journal.pcbi.1005991 # -# # -# See VERSION.txt or call get_PhysiCell_version() to get the current version # -# x.y.z. Call display_citations() to get detailed information on all cite-# -# able software used in your PhysiCell application. # -# # -# Because PhysiCell extensively uses BioFVM, we suggest you also cite BioFVM # -# as below: # -# # -# We implemented and solved the model using PhysiCell (Version x.y.z) [1], # -# with BioFVM [2] to solve the transport equations. # -# # -# [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, # -# PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellu- # -# lar Systems, PLoS Comput. Biol. 14(2): e1005991, 2018 # -# DOI: 10.1371/journal.pcbi.1005991 # -# # -# [2] A Ghaffarizadeh, SH Friedman, and P Macklin, BioFVM: an efficient para- # -# llelized diffusive transport solver for 3-D biological simulations, # -# Bioinformatics 32(8): 1256-8, 2016. DOI: 10.1093/bioinformatics/btv730 # -# # -############################################################################### -# # -# BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # -# # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # -# All rights reserved. # -# # -# Redistribution and use in source and binary forms, with or without # -# modification, are permitted provided that the following conditions are met: # -# # -# 1. Redistributions of source code must retain the above copyright notice, # -# this list of conditions and the following disclaimer. # -# # -# 2. Redistributions in binary form must reproduce the above copyright # -# notice, this list of conditions and the following disclaimer in the # -# documentation and/or other materials provided with the distribution. # -# # -# 3. Neither the name of the copyright holder nor the names of its # -# contributors may be used to endorse or promote products derived from this # -# software without specific prior written permission. # -# # -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" # -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # -# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE # -# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR # -# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF # -# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS # -# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN # -# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) # -# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE # -# POSSIBILITY OF SUCH DAMAGE. # -# # -############################################################################### -*/ +/** + * \main main-prostate file + * \brief Main file of the prostate example + * \date 20/08/2025 + * \author Arnau Montagud, Annika Meert, Gerard Pradas and Miguel Ponce de Leon, BSC-CNS + */ #include #include #include @@ -72,15 +12,16 @@ #include #include #include - #include "./core/PhysiCell.h" #include "./modules/PhysiCell_standard_modules.h" // put custom code modules here! -#include "./custom_modules/custom.h" -#include "./addons/PhysiBoSS/src/maboss_intracellular.h" - +#include "./addons/PhysiBoSS/src/maboss_intracellular.h" +#include "./custom_modules/custom.h" +#include "./custom_modules/drug_sensitivity.h" +#include "./custom_modules/boolean_model_interface.h" + using namespace BioFVM; using namespace PhysiCell; @@ -90,31 +31,51 @@ int main( int argc, char* argv[] ) bool XML_status = false; char copy_command [1024]; + char copy_command_2 [1024]; if( argc > 1 ) - { + { XML_status = load_PhysiCell_config_file( argv[1] ); sprintf( copy_command , "cp %s %s/PhysiCell_settings.xml" , argv[1] , PhysiCell_settings.folder.c_str() ); + sprintf( copy_command_2 , "cp %s %s" , argv[1] , PhysiCell_settings.folder.c_str() ); } else - { - XML_status = load_PhysiCell_config_file( "./config/PhysiCell_settings.xml" ); - sprintf( copy_command , "cp ./config/PhysiCell_settings.xml %s" , PhysiCell_settings.folder.c_str() ); + { + XML_status = load_PhysiCell_config_file( "./config/PhysiCell_settings_LNCaP.xml" ); + sprintf( copy_command , "cp ./config/PhysiCell_settings_LNCaP.xml %s" , PhysiCell_settings.folder.c_str() ); } if( !XML_status ) { exit(-1); } - + // copy config file to output directry system( copy_command ); + if ( argc > 1 ) + { + system( copy_command_2 ); + } + // OpenMP setup omp_set_num_threads(PhysiCell_settings.omp_num_threads); + // PNRG setup + SeedRandom( parameters.ints("random_seed") ); // or specify a seed here + // time setup std::string time_units = "min"; /* Microenvironment setup */ + // store each column of drug sensitivity csv file in a custom vector variable + // std::vector>> csv_file = read_csv( parameters.strings("drug_sensitivity_file") ); + // for (std::pair> &element : csv_file ) { + // if (element.first != "\"\""){ + // cell_defaults.custom_data.add_vector_variable( element.first, element.second ); + // } + // } + + /* Microenvironment setup */ setup_microenvironment(); // modify this in the custom code + /* PhysiCell setup */ @@ -142,6 +103,10 @@ int main( int argc, char* argv[] ) char filename[1024]; sprintf( filename , "%s/initial" , PhysiCell_settings.folder.c_str() ); save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); + // save_PhysiCell_to_MultiCellDS_xml_pugi( filename , microenvironment , PhysiCell_globals.current_time ); + sprintf( filename , "%s/states_initial.csv", PhysiCell_settings.folder.c_str()); + MaBoSSIntracellular::save( filename); + // save a quick SVG cross section through z = 0, after setting its // length bar to 200 microns @@ -150,15 +115,18 @@ int main( int argc, char* argv[] ) // for simplicity, set a pathology coloring function - std::vector (*cell_coloring_function)(Cell*) = my_coloring_function; + std::vector (*cell_coloring_function)(Cell*) = paint_by_number_cell_coloring; + // std::string (*ECM_coloring_function)(double, double, double) = my_coloring_function_for_stroma; + // std::vector (*cell_coloring_function)(Cell*) = prolif_apoptosis_coloring; sprintf( filename , "%s/initial.svg" , PhysiCell_settings.folder.c_str() ); - SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function ); + SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function); sprintf( filename , "%s/legend.svg" , PhysiCell_settings.folder.c_str() ); create_plot_legend( filename , cell_coloring_function ); - + add_software_citation( "PhysiBoSS" , PhysiBoSS_Version , PhysiBoSS_DOI, PhysiBoSS_URL); + // SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function ); display_citations(); @@ -183,7 +151,8 @@ int main( int argc, char* argv[] ) while( PhysiCell_globals.current_time < PhysiCell_settings.max_time + 0.1*diffusion_dt ) { // save data if it's time. - if( PhysiCell_globals.current_time > PhysiCell_globals.next_full_save_time - 0.5 * diffusion_dt ) + // if( PhysiCell_globals.current_time > PhysiCell_globals.next_full_save_time - 0.5 * diffusion_dt ) + if( fabs( PhysiCell_globals.current_time - PhysiCell_globals.next_full_save_time ) < 0.01 * diffusion_dt ) { display_simulation_status( std::cout ); if( PhysiCell_settings.enable_legacy_saves == true ) @@ -196,6 +165,9 @@ int main( int argc, char* argv[] ) sprintf( filename , "%s/output%08u" , PhysiCell_settings.folder.c_str(), PhysiCell_globals.full_output_index ); save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); + sprintf( filename , "%s/states_%08u.csv", PhysiCell_settings.folder.c_str(), PhysiCell_globals.full_output_index); + MaBoSSIntracellular::save( filename); + } PhysiCell_globals.full_output_index++; @@ -203,7 +175,8 @@ int main( int argc, char* argv[] ) } // save SVG plot if it's time - if( PhysiCell_globals.current_time > PhysiCell_globals.next_SVG_save_time - 0.5 * diffusion_dt ) + // if( PhysiCell_globals.current_time > PhysiCell_globals.next_full_save_time - 0.5 * diffusion_dt ) + if( fabs( PhysiCell_globals.current_time - PhysiCell_globals.next_SVG_save_time ) < 0.01 * diffusion_dt ) { if( PhysiCell_settings.enable_SVG_saves == true ) { @@ -214,23 +187,22 @@ int main( int argc, char* argv[] ) PhysiCell_globals.next_SVG_save_time += PhysiCell_settings.SVG_save_interval; } } - // Configure treatments - treatment_function(); - + // treatment_function(); + // update the microenvironment microenvironment.simulate_diffusion_decay( diffusion_dt ); // run PhysiCell ((Cell_Container *)microenvironment.agent_container)->update_all_cells( PhysiCell_globals.current_time ); - + /* Custom add-ons could potentially go here. */ - + PhysiCell_globals.current_time += diffusion_dt; } - + if( PhysiCell_settings.enable_legacy_saves == true ) { log_output(PhysiCell_globals.current_time, PhysiCell_globals.full_output_index, microenvironment, report_file); @@ -246,9 +218,12 @@ int main( int argc, char* argv[] ) sprintf( filename , "%s/final" , PhysiCell_settings.folder.c_str() ); save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); + sprintf( filename , "%s/states_final.csv", PhysiCell_settings.folder.c_str()); + MaBoSSIntracellular::save( filename ); sprintf( filename , "%s/final.svg" , PhysiCell_settings.folder.c_str() ); SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function ); + // timer diff --git a/model.yml b/model.yml index 0245cd9..0f6bfc3 100644 --- a/model.yml +++ b/model.yml @@ -1,5 +1,5 @@ -short_name: template-model -version: 1.0.0 -binary: project +short_name: prostate +version: 2.0.0 +binary: prostate config: - - config/PhysiCell_settings.xml + - config/PhysiCell_settings_LNCaP_Luminespib_2.xml diff --git a/scripts/moviemaker.ipynb b/scripts/moviemaker.ipynb new file mode 100644 index 0000000..d39b48d --- /dev/null +++ b/scripts/moviemaker.ipynb @@ -0,0 +1,90 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 17, + "id": "8ca35bfa", + "metadata": {}, + "outputs": [], + "source": [ + "import os\n", + "import glob\n", + "import imageio\n", + "import cairosvg\n", + "import tempfile\n" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "92f57575", + "metadata": {}, + "outputs": [], + "source": [ + "# cairosvg.svg2png(url='../../../../output/initial.svg', write_to='../../../../output/initial.png')" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "f5700158", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_137330/3555308218.py:17: DeprecationWarning: Starting with ImageIO v3 the behavior of this function will switch to that of iio.v3.imread. To keep the current behavior (and make this warning disappear) use `import imageio.v2 as imageio` or call `imageio.v2.imread` directly.\n", + " images.append(imageio.imread(png_path))\n" + ] + } + ], + "source": [ + "# Path to the output folder containing SVGs\n", + "output_dir = \"../../../../output\"\n", + "\n", + "# Get all snapshot SVG files sorted numerically\n", + "svg_files = sorted(glob.glob(os.path.join(output_dir, \"snapshot*.svg\")))\n", + "\n", + "# Create a list to store images\n", + "images = []\n", + "\n", + "# Create a temporary directory for PNG conversions\n", + "with tempfile.TemporaryDirectory() as tmp_dir:\n", + " for svg_file in svg_files:\n", + " # Convert SVG to PNG\n", + " png_path = os.path.join(tmp_dir, os.path.basename(svg_file).replace('.svg', '.png'))\n", + " cairosvg.svg2png(url=svg_file, write_to=png_path)\n", + " # Read the PNG\n", + " images.append(imageio.imread(png_path))\n", + "\n", + " # Save the GIF\n", + " output_gif = os.path.join(output_dir, \"simulation.gif\")\n", + " imageio.mimsave(output_gif, images, duration=0.5, loop=0) # 0.5 seconds per frame\n", + "\n", + "# print(f\"Created GIF with {len(images)} frames at: {output_gif}\")" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/scripts/time_course_cells.ipynb b/scripts/time_course_cells.ipynb new file mode 100644 index 0000000..c98c5f5 --- /dev/null +++ b/scripts/time_course_cells.ipynb @@ -0,0 +1,625 @@ +{ + "cells": [ + { + "attachments": {}, + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### plot_time_course" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "#!/usr/bin/env python3\n", + "# coding: utf-8\n", + "\n", + "import os, re, sys\n", + "import glob, json\n", + "import argparse\n", + "\n", + "import numpy as np\n", + "import pandas as pd\n", + "from scipy.io import loadmat\n", + "\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "\n", + "from pctk import multicellds \n", + "\n", + "# import re, os, sys\n", + "# import numpy as np\n", + "# import pandas as pd\n", + "# import matplotlib.pyplot as plt\n", + "# from pctk import multicellds \n", + "\n", + "\n", + "# modules_path = \"../\"\n", + "# modules_path = os.path.dirname(os.path.realpath(__file__))\n", + "# modules_path= os.path.join(modules_path, 'scripts/')\n", + "# modules_path= os.path.join(modules_path, 'modules')\n", + "# sys.path.append(modules_path)\n", + "\n", + "sns.set(style=\"ticks\", palette=\"Paired\")\n", + "sns.set_context('paper')\n", + "\n", + "def create_parser():\n", + " parser = argparse.ArgumentParser(description=\"Plot total cell grouped as Alive/Necrotic/Apoptotic vs Time\")\n", + " \n", + " parser.add_argument(\"data_folder\", action=\"store\", help=\"folder were the data is stored\")\n", + " \n", + " parser.add_argument(\"--format\", action=\"store\", dest=\"format\", choices=(\"physicell\", \"physiboss\"),\n", + " help=\"Format of the input data\", default=\"physicell\")\n", + "\n", + " parser.add_argument(\"--figout\", action=\"store\", dest=\"fig_fname\", default=\"./cell_vs_time.png\",\n", + " help=\"File name to save the plot\")\n", + " \n", + " parser.add_argument(\"--csvout\", action=\"store\", dest=\"csv_fname\", default=None,\n", + " help=\"File name to store the summary table used for the plot\")\n", + "\n", + " return parser\n", + " \n", + "def pb_output_iterator(data_folder, sep=\";\"):\n", + " globing = os.path.join(data_folder, \"cells_[0-9]*.txt\")\n", + " for fname in sorted(glob.glob(globing)):\n", + " df = pd.read_csv(fname, sep=sep)\n", + " t = df.Time[0]\n", + " yield (t, df)\n", + "\n", + "def count_pb_files(data_folder):\n", + " globing = os.path.join(data_folder, \"cells_[0-9]*.txt\")\n", + " return len(glob.glob(globing))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def get_timeserie_mean(mcds, filter_alive=True):\n", + " time = []\n", + " values = []\n", + " filter_alive = True\n", + " for t, df in mcds.cells_as_frames_iterator():\n", + " time.append(t)\n", + " df = df.iloc[:,3:]\n", + " if filter_alive:\n", + " mask = df['current_phase'] <= 14\n", + " df = df[mask]\n", + " values.append(df.mean(axis=0).values)\n", + " # if filter_alive:\n", + " # # Fix: Use boolean indexing properly\n", + " # mask = (df['current_phase'].astype(float) <= 14).values # Convert to numeric and create boolean mask\n", + " # df = df[mask]\n", + " # if len(df) > 0: # Check if any cells remain after filtering\n", + " # values.append(df.mean(axis=0).values)\n", + " # else:\n", + " # # Handle empty dataframe case\n", + " # empty_values = np.zeros(len(df.columns))\n", + " # values.append(empty_values)\n", + "\n", + " cell_columns = df.columns.tolist()\n", + " df = pd.DataFrame(values, columns=cell_columns)\n", + " df['time'] = time\n", + " return df[['time'] + cell_columns]\n", + "\n", + "\n", + "def get_timeserie_density(mcds):\n", + " data = []\n", + " for t,m in mcds.microenvironment_as_matrix_iterator():\n", + " data.append((t, m[5,:].sum()))\n", + " df = pd.DataFrame(data=data, columns=['time', 'drug_A_internal_density'])\n", + " return df\n", + "\n", + "def plot_molecular_model(df_cell_variables, list_of_variables, ax1):\n", + "\n", + " threshold = 0.5\n", + "\n", + " for label in list_of_variables:\n", + " y = df_cell_variables[label]\n", + " time = df_cell_variables[\"time\"]\n", + " ax1.plot(time, y, label= label)\n", + "\n", + " ax1.set_ylabel(\"Quantity\")\n", + " ax1.yaxis.grid(True)\n", + " # ax1.set_xlim((0,time.values[-1]))\n", + " # ax1.set_ylim((0,1))\n", + " # ax1.set_xlabel(\"time (min)\")\n", + " \n", + "def plot_cells(df_time_course, color_dict, ax):\n", + "\n", + " # Alive/Apoptotic/Necrotic vs Time\n", + " for k in color_dict:\n", + " axes[0].plot(df_time_course.time, df_time_course[k], \"-\", c=color_dict[k], label=k)\n", + " \n", + " # setting axes labels\n", + " # axes[0].set_xlabel(\"time (min)\")\n", + " ax.set_ylabel(\"Number of cells\")\n", + " \n", + " # Showing legend\n", + " ax.legend()\n", + " ax.yaxis.grid(True)" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{0: 'Ki67_positive_premitotic', 1: 'Ki67_positive_postmitotic', 2: 'Ki67_positive', 3: 'Ki67_negative', 4: 'G0G1_phase', 5: 'G0_phase', 6: 'G1_phase', 7: 'G1a_phase', 8: 'G1b_phase', 9: 'G1c_phase', 10: 'S_phase', 11: 'G2M_phase', 12: 'G2_phase', 13: 'M_phase', 14: 'live', 100: 'apoptotic', 101: 'necrotic_swelling', 102: 'necrotic_lysed', 103: 'necrotic', 104: 'debris'}\n", + "{'Ki67_positive_premitotic': 'alive', 'Ki67_positive_postmitotic': 'alive', 'Ki67_positive': 'alive', 'Ki67_negative': 'alive', 'G0G1_phase': 'alive', 'G0_phase': 'alive', 'G1_phase': 'alive', 'G1a_phase': 'alive', 'G1b_phase': 'alive', 'G1c_phase': 'alive', 'S_phase': 'alive', 'G2M_phase': 'alive', 'G2_phase': 'alive', 'M_phase': 'alive', 'live': 'alive', 'apoptotic': 'apoptotic', 'necrotic_lysed': 'necrotic', 'necrotic_swelling': 'necrotic'}\n" + ] + } + ], + "source": [ + "# parser = create_parser()\n", + "# args = parser.parse_args()\n", + "# name = \"output_nodrug_new_dt6\"\n", + "name = \"output_lumi\"\n", + "# name = \"output_picti\"\n", + "# name = \"output_lumi_picti\"\n", + "data_folder = f\"../../../../{name}\"\n", + "# print (data_folder)\n", + "fig_fname = name\n", + "csv_fname = name\n", + "\n", + "phases_dict = multicellds.default_phases_dict\n", + "phase_grouping = multicellds.default_phase_grouping\n", + "print(phases_dict)\n", + "print(phase_grouping)\n", + "\n", + "# Globing output files according to the output format specified\n", + "# if args.format == 'physicell':\n", + "phase_col = \"current_phase\"\n", + "mcds = multicellds.MultiCellDS(output_folder=data_folder)\n", + "df_iterator = mcds.cells_as_frames_iterator()\n", + "num_of_files = mcds.cells_file_count()\n", + "# elif args.format == 'physiboss':\n", + "# phase_col = \"phase\"\n", + "# df_iterator = pb_output_iterator(args.data_folder)\n", + "# num_of_files = count_pb_files(args.data_folder)\n", + "\n", + "# Initializing a Pandas Databrafe to store the data\n", + "columns = [\"time\", \"alive\", \"apoptotic\", \"necrotic\"]\n", + "data = np.zeros((num_of_files, 4), dtype=int)\n", + "df_time_course = pd.DataFrame(columns=columns, data=data)" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Reading cell_output files from 35 input files from ../../../../output_lumi\n", + "\tProcessing time step: 0\n", + "\tProcessing time step: 240\n", + "\tProcessing time step: 480\n", + "\tProcessing time step: 720\n", + "\tProcessing time step: 960\n", + "\tProcessing time step: 1200\n", + "\tProcessing time step: 1680\n", + "\tProcessing time step: 1920\n", + "\tProcessing time step: 2160\n", + "\tProcessing time step: 2400\n", + "\tProcessing time step: 2640\n", + "\tProcessing time step: 2880\n", + "\tProcessing time step: 3120\n", + "\tProcessing time step: 3360\n", + "\tProcessing time step: 3600\n", + "\tProcessing time step: 3840\n", + "\tProcessing time step: 4080\n", + "\tProcessing time step: 4320\n", + "\tProcessing time step: 4560\n", + "\tProcessing time step: 4800\n", + "\tProcessing time step: 5040\n", + "\tProcessing time step: 5280\n", + "\tProcessing time step: 5520\n", + "\tProcessing time step: 5760\n", + "\tProcessing time step: 6000\n", + "\tProcessing time step: 6240\n", + "\tProcessing time step: 6480\n", + "\tProcessing time step: 6720\n", + "\tProcessing time step: 6960\n", + "\tProcessing time step: 7200\n", + "\tProcessing time step: 7440\n", + "\tProcessing time step: 7680\n", + "\tProcessing time step: 7920\n", + "\tProcessing time step: 8160\n", + "\tProcessing time step: 8400\n" + ] + } + ], + "source": [ + "print(\"Reading cell_output files from %i input files from %s\" % (num_of_files, data_folder))\n", + "# Iterating over all cell_output files\n", + "for i, (t, df) in enumerate(df_iterator):\n", + " print(\"\\tProcessing time step: %.0f\" % t)\n", + "\n", + " # Rename the phases integer codes using the phases_dict as the mapping\n", + " s = df[phase_col]\n", + " s.replace(to_replace=phases_dict, inplace=True)\n", + " \n", + " # Count the number of cells in each phase\n", + " counts = s.value_counts()\n", + "\n", + " df_time_course.loc[i, 'time'] = t\n", + " # group the previous phases count into the three general classes:\n", + " # Alive, Apoptotic, Necrotic\n", + " for k, v in counts.to_dict().items():\n", + " if k not in phase_grouping:\n", + " continue\n", + " df_time_course.loc[i, phase_grouping[k]] += v" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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+c9/1pIlS9SlSxf94he/qDI+NTVVzz//vDwej8aNG6dnn31WrVq1Ul5enubMmaOPPvpIc+fOVdeuXXXTTTfVy+d3MQ58/4VSlrwmd1HVrcgNKSyimUZN+ZW69r/OL8976qmndPvtt+u1117Tyy+/XGO/9PR0/exnP1NoaKimTp2qtm3b6vDhw/rggw+0efNmJScnKzIyUtLZP3PTp0/Xvn37dN111+m2226TxWJRRkaGPv/88yoh2ssvv6zi4mJNmjRJsbGxatWqlSTp6aef1vLly5WUlKTHH39cTqdTycnJmjlzpv7whz9o4sSJvvHz5s1TXl5epaC7a9euNa7nQmsEAAAAAAAAgKbgaPFRLTy1UNll2VXagowg3Rh3o0ZEj5DF4KY0NIxGGfQtW7ZMktSxY0e9+uqrlY4h7NKli15//XXdeOONyszM1GeffVYp6Pvb3/6mnJwchYaG6q233lL79u0lScHBwbrrrrtUVFSkV199VQsXLtQ999yjzp07V5r7T3/6k1wul1q0aKG//vWvioqKkiSFh4fr0Ucf1enTp/XRRx9p3rx5mjZtmqKjK1+0+corr8jj8ahHjx567bXXFBQUJElq1qyZXnzxRR07dkwpKSn63//9X40fP15Wq392q12qLxe+otLiooYuowp3UZ6+XPiK34K+AQMGaPz48VqxYoXuvfde9erVq9p+zzzzjKKjo7V48WLFxMT43h8/frzuuOMOvfvuu3r44YclSXPmzNG+ffv09NNP69577630HK/XW3VNbreWLVtW6bjOzZs3a/ny5bruuuv05z//2ffn4s4779SECRP00ksvady4cQoPD9fEiROVnJyskpISX/h3PhdaIwAAAAAAAABcycrNcq3JXaMNeRuq3cXXMbSjprWcphbBLRqgOuDfGmXEnJOTI0lKSEio9q6xoKAgX0DjcrkqtS1fvlySdNNNN/lCvnPNmDFDdrtdHo9HK1asqNTmcrn0+eefS5LuuOMOX8h3rvvvv1+SVFRUpLVr11Zqy8zM1Pbt2yVJM2fO9IV855o1a5Yk6dixY9q6dWuVdtS/J554QlarVa+88kq17fv27VN6erpuvvlmeb1e5ebm+n61b99eHTt2VEpKiqSzIdnKlSvVvn173XPPPVWeZbFU/St45513VrmTr+LP3YMPPlgp/I2NjdX06dNVWFiozZs3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93/XuCuvOhVHcEpnz22NiIiotp/b7a52TMXXFWe01qRi/LljL2R8RfuPxwMAAAAAgMuPx/ToaPFR7XPt017XXh0rOSZTdT9AKcIaoZ72nuph76Hu9u6KsFb//QoAAADgx/x2R1+g/O///q/y8/N15513qkuXLpUuMJSksrIy39cVbUFBQQoODvYdwSmdveOvpqDv1KlTkqSIiIhKYVvF+IKCArnd7hrv6asYf+58576uaK9JTeMBAAAAAMDlIa8szxfs7XfvV7G37nfkWWVVx7CO6mnvqZ72nmoV3EoWw1KP1QIAAOBK1eiCvqysLEnSBx98UOs9d5I0cOBASdLdd9+t3/72t+revbuvbd++feratWu14zIyMiRJ3bp1q/T+ueMzMjLUr1+/Wsef2//c12fOnFFubq5iY2OrjPV4PDp48GC14wEAAAAAQMMo85bpoPug9rr2ap9rn7LLsi9ofKwtVj3Dz+7a6xrWVaGW0HqqFAAAAE2J34O+9evXKz09XadOnaq0u66CYRiaPXu2v6etky5duqhNmzY6fvy4vvrqK914441V+rhcLm3btk2SNHLkyEptSUlJCg0NVXFxsb766qtqg75jx47pwIED1Y4/9/XGjRs1adKkKuN37Njh24n44/EAAAAAACAwTNNUdln22WDPuU8Hiw+q3Cyv8/ggI0jdwrr57tprHty8HqsFAABAU+W3oO/48eOaNWuW9u/fL9Os+Rz6Sw36znc34BtvvKG5c+dKkvbu3VulfeLEiXrzzTf16aef6pe//KXatWtXqf3999+Xy+WS1WrVLbfcUqnNbrfrhhtu0Mcff6wPPvhAd999tyIjIyv1mT9/vqSz9+uNGzeuUlv79u2VlJSk7du365133tHNN9+soKCgSn3eeustSVLbtm01ePDgWtcKAAAAAAD8x+1xa797v2/XXn55/gWNbx3c2hfsdQrrJJvR6A5SAgAAQCPjt//F+dJLLykjI0PTpk3TrbfeqpYtW8pqtfrr8X4zc+ZMJScnKycnR7NmzdIf/vAH9e3bV6WlpUpOTtbrr78uSZo2bZo6d+5cZfyjjz6qtWvXKicnRw888IB+97vfqVOnTnK5XPr73/+uDz/8UJL04IMPKjo6usr4J598UnfddZf27Nmjxx9/XP/1X/+l+Ph45efn67XXXtPGjRslSb/5zW8uy88PAAAA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0YviYx/7WCxevDh27doVX/rSl+L//t//GxERl112WbzlLW8Zdv6qVavijW98YxSLxVi+fHl84AMfiAULFsS2bdvik5/8ZHz961+PiIhPfvKTceaZZ07I50vQBwCM1Wij8rb1b4tSlCb8mvlMPubVzRsU6C1oWBCtuda9zrIAAAAAcChLZdD33//93/Fbv/VbIx7/4Ac/WAnM/uu//isWLlxYOfapT30qrrnmmmhsbIxvf/vblZCw7J//+Z/jn/7pnyKXy8Xtt98eixcvHnT88ssvj9tuuy0OP/zw+I//+I9obW2tee2Wlpb43ve+F21tbYOOX3DBBfGzn/0sjj/++Ljllluirq5u0PE3v/nN8cMf/jCOPPLIuPvuuyOXy439EzMCQR8AUFZKStFR6Ihn+p85IKPyqmUiE3Pq5gyM0is/GhbEYXWHRS4z/t95AAAAAA41qVzIZLSQLyLi9a9/fSXo+8UvfjEo6PvmN78ZERFnnnnmsJAvIuLCCy+Mz3/+89HV1RXf+ta34h3veEflWFdXV9x1110REfFHf/RHw0K+iIg/+7M/i69//euxc+fO+M53vhOve93rKseeeuqp+NnPfhYRA4He0JAvIuLP//zP44c//GGsX78+fvrTn+71XgEAhuop9VSCuwM1Kq8sE5loy7fFnLo5MTc/d+Bj3dyYWzc35tfPj/ps7anRAQAAANh3qQz69qahoaGyXSwWK9uPP/54bNiwISIG1vCrZcaMGfHiF7847rnnnrjvvvsGBX0/+9nPoqenZ9TzFy1aFM95znPisccei/vuu29Q0HffffdVtl/2spfVPH/ZsmUxY8aM2LVrV9x3331jCvqq1yaspbyWIAAwPRSSQnQUOmJb/7YDPiovIqI+U18J78pB3pz8nJhTNydm182OfGZa/ooJAAAAcNDJTnUBk+H++++vbB9//PGV7UceeaTm/qGOO+64iIh49NFHB+2vPr/cZrTzq9tXP587d27MnTu35rm5XC6OOeaYmuePZOnSpaM+Tj311ErbdevWVbY3btwYq1evjkKhEBERPT09sXr16tiyZUulzZNPPhlr1qypPO/o6IjVq1dHR0dHZd+aNWviySefrDzfsmVLrF69uhKKFgqFWL16dWzcuLHS5qmnnorVq1dXnu/atStWr14d7e3tlX2PPvrooK9Be3t7rF69Onbt2lXZt3r16njqqafck3tyT+7JPbmnaXNPpaQUOwo74uGnH47bf3l73LXxrrht623xlY1fiU888on40KMfivc+9t74+K8+Hl/Y8IX4xtZvxPe3fT8e3PlgPNX71ISFfDOSGXF0/dHxkpkviTPmnBGn9Z8W59adG3+z+G/iI8d8JP6o7o9iWfuyeOWsV8YpbafEs3PPji2PbIn2rXs+V9P56+Se3JN7ck/uyT25J/fkntyTe3JP7sk9uSf3NJH3tL+m3dutd+zYEf/8z/8cEREvfvGLK6FZRAz6Qs+fP3/EPsrHdu7cGbt27YoZM2YMOr+trS2ampr2en719aqfj3bt8vH//d//HXY+AJBuSZJEV7ErtvRtiaeyT8X6vvVRfLoY2wvbY3Nhc+zI7Yjux7qjGLtnJKiLiF1VHWQmrpb6qI+59QOj8rK7stEarbFk4ZKYUzcnks4ktm7aGkcfcXTl96DVG1dHa7Y1ZuRmTFwRAAAAAIxLJkmSZKqLmCilUine/va3x/e///2or6+PlStXxgknnFA5/vnPfz4++clPRsRAYprP1845/+3f/i0+8IEPRETEvffeG/PmzYuIiA984APxb//2bzF//vy45557Rqzjk5/8ZHz+85+Purq6+MUvflHZf8kll8R9990XL3rRi+Kmm24a8fz3vOc98e1vfzuOPvro+M///M+93vdYpu4sj+pbtWpVNDc377VPAGDf9Zf6Y3th+6BHR6Ejtvfved6X9B2QWmqtlVe9Xl5ztjkymQlMDgEAAAA44KbViL6PfvSj8f3vfz8iIv7mb/5mUMg3nQnuAGDyFZNidBY6awZ52wrboqO/I3aVdu29ownUkGnYs0ZeOcjbHepZKw8AAABg+ps2r/58/OMfjxtuuCEiIq688sp4/etfP6xNeeqpiIF5W1taWmr21d3dXfOc8nZ5jtaRlM+vPndfzi8fH3o+ADB5eku90d7fHu397TXDvB2FHVGK0gGrJxe5aMu3xaz8rJhVNytm5Wfteb770ZhtNCoPAAAA4BA2LYK+T3ziE3HddddFRMRf/dVfxZve9Kaa7cpTcEZEbN68ecSgb/PmzRER0dLSMihsK5/f0dER3d3dI67TVz6/+nrVz8vHRzLS+QDA/kuSJHYWd8Yz/c9UHu2F9sr2zuLOA1ZLJjLRkmsZFNpVh3mz87NjRm5GZDPZA1YTAAAAAOmT+qDv4x//eCXku/zyy+PNb37ziG2PO+64yvbatWvjOc95Ts12jzzySEREHHvssSOe/8gjj8TJJ5886vnV7aufP/PMM9He3h5z5swZdm6xWIzHH3+85vkAwOgKSSG29W+L9v72eKawO8zr3xPm9Sf9B6SOpmzToNCuLd9WCfJm5WdFa77VtJoAAAAAjFuqX2EaGvL96Z/+6ajtjznmmDjiiCNiw4YNce+998arXvWqYW26urrigQceiIiIl770pYOOLVu2LBobG6OnpyfuvffemkHf+vXr47HHHqt5fvXze+65J17zmtcMO//nP/957Nq1q+b5AEBEd7F70Ei86jBve2F7JJFM6vXzmfygkXiDptPcHeY1ZBsmtQYAAAAAiEhx0Fcd8l1xxRVxySWXjOm8s88+O6655pr4j//4j3j7298eixYtGnT8xhtvjK6ursjlcvGHf/iHg441NzfH7//+78dtt90WN910U1x88cUxc+bMQW2++MUvRsTA+nrLly8fdOyoo46KZcuWxc9+9rO4/vrr46yzzoq6urpBbb7whS9ERMSRRx4ZL3nJS8Z0TwAwnZSSUnQWO2sGec/0PxNdpa5JvX5bbvDou0GBXt2smJGdYV08AAAAAA4KqQz6rrrqqkrId+WVV464Jl8tb37zm+Pmm2+OrVu3xp//+Z/Hxz/+8TjxxBOjr68vbr755vj0pz8dERFveMMbYvHixcPOf8c73hHf+c53YuvWrfHWt741PvrRj8bRRx8dXV1dcd1118XXvva1iIh429veFm1tbcPOv/zyy+ONb3xjrFmzJv7yL/8y3v/+98f8+fNj+/bt8alPfSruueeeiIi47LLLIpfL7eunBgBSoZAUBoV3g7YL7VFICpN27XwmH3Pyc2JO3ZyYWzc35tbNrWzPyc+Jumzd3jsBAAAAgINAJkmSyZ3faoJt2LAhfud3ficiIrLZbM117qpdcsklw9bt+8UvfhFvfvObY/v27RExMPqur68v+vsH1u357d/+7bjmmmuivr6+Zp8/+MEP4p3vfGd0d3dHRMTMmTOjq6srisViRES89rWvjY997GMjvtt/5cqV8aEPfSgKhYEXMVtbW6OzszPKX4pLL700VqxYsbdPxZh1dXXF0qVLIyJi1apV0dzcPGF9A8BQpaQUu4q7orPYGZ2FzthR3BE7CjsqYV57oT06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unTUx6mnnlppu27dusr2xo0bY/Xq1VEoDLyQ2dPTE6tXrx50vSeffDLWrFlTed7R0RGrV6+Ojo6Oyr41a9bEk08+Oaje1atXR09PT0REFAqFWL16dWzcuLHS5qmnnorVq1dXnu/atStWr14d7e3tlX2PPvpoPProo5Xn7e3tsXr16ti1a1dl3+rVq+Opp56asHu6974bD46QDwAAAAAAUq5757b4wb9dddBkAGUHY66xvwR9B1j1F7OpqWnEdtXHqs8BAAAAAACAiIhMkoy2qjgT7Vvf+lZcdtllERFx1113xbOf/eya7e6777645JJLIiLia1/7WixdunTEPscydWd5VN+qVauiubl5f0o/JKz9xhfjvnuN6gMAAAAAgPEydefks0bfATZjxozK9mhr51Ufqz6nFsHdxDn+dW+J57zmT6Jny8bI5HMRuXxELheZnMVCAQAAAABgXzQ0z4xs1uvrk0nQd4DNmzevsr158+Y44YQTarbbvHlzzXOYfLlcPmYsPGqqywAAAAAAABiVNfoOsOc85zmRzQ582h955JER25WPHX744TFr1qwDURoAAAAAAAApIug7wJqamuJFL3pRRETce++9NdskSRI//OEPIyLipS996QGrDQAAAAAAgPQQ9E2B17zmNRER8ZOf/CQefPDBYcfvuOOOeOqppwa1BQAAAAAAgGqCvilwzjnnxPHHHx9JksSKFSvixz/+cURElEqluOOOO+IDH/hAREScdtppccopp0xlqQAAAAAAABykMkmSJFNdxKFo3bp1cfHFF8f69esjYmBKz1KpFL29vRER8bznPS/+5V/+Jdra2sZ9ra6urli6dGlERKxatSqam5vH3ScAAAAAAABTKz/VBRyqFi1aFLfddltcd911cffdd8e6desin8/HscceG3/wB38QF154YdTX1091mQAAAAAAABykjOg7BBjRBwAAAAAAMP1Yow8AAAAAAABSSNAHAAAAAAAAKSToAwAAAAAAgBQS9AEAAAAAAEAKCfoAAAAAAAAghQR9AAAAAAAAkEKCPgAAAAAAAEghQR8AAAAAAACkkKAPAAAAAAAAUkjQBwAAAAAAACkk6AMAAAAAAIAUyk91AUy+JEkq293d3VNYCQAAAAAAALU0NTVFJpPZp3MEfYeAnp6eyvapp546hZUAAAAAAABQy6pVq6K5uXmfzjF1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4Qujo6MjHnnkkXH3VV4T7/HHHx93X1Ph8ccfj2w2G8cff/xUlwIAAKSMoA8AAIAD7k1velNERHzgAx+IzZs3Dzve1dUV//M//zOmvl784hdHLpcbc/uDSV9fX/zyl7+M5z73uXtdYxAAAGAoU3cCAABwwJ1yyinxnve8J/7pn/4pzjjjjDjttNNi0aJF0dXVFRs2bIif/vSn8aIXvSi+9KUv7bWvmTNnximnnBI/+clPoqOjI9ra2g7AHUyMn/zkJ9Hf3x9nnHHGVJcCAACkkBF9AAAATIk/+7M/ixtuuCFe/vKXx89//vP413/917jzzjtj8+bN8YY3vCHe9a53jbmv888/P/r7++P222+fvIInwa233hp1dXXx+te/fqpLAQAAUiiTJEky1UUAAADAeBSLxfjDP/zDqKuri1tvvTUymcxUl7RXzzzzTJx++unxB3/wB/HRj350qssBAABSyIg+AAAAUi+Xy8UVV1wRa9asibvuumuqyxmTz3/+85HNZuOd73znVJcCAACklKAPAACAaeHlL395vO9974ve3t6pLmWvkiSJww8/PK666qqYN2/eVJcDAACklKk7AQAAAAAAIIWM6AMAAAAAAIAUEvQBAAAAAABACgn6AAAAAAAAIIUEfQAAAAAAAJBCgj4AAAAAAABIIUEfAAAAAAAApJCgDwAAAAAAAFJI0AcAAAAAAAApJOgDAAAAAACAFBL0AQAAAAAAQAoJ+gAAAAAAACCFBH0AAAAAAACQQoI+AAAAAAAASCFBHwAAAAAAAKSQoA8AAAAAAABSSNAHAAAAAAAAKSToAwAAAAAAgBQS9AEAAAAAAEAKCfoAAAAAAAAghQR9AAAAAAAAkEKCPgAAAAAAAEghQR8AAAAAAACkUH6qC0izL3zhC/Hwww/Hww8/HL/+9a8jm83Gww8/vM/9bNu2LT71qU/Fd7/73di+fXsceeSR8brXvS4uueSSyOd9iQAAAAAAABgukyRJMtVFpNWSJUuitbU1nvvc58bjjz8e7e3t+xz07dy5M84777x44okn4oILLoglS5bEAw88ELfeemu8+tWvjquuumqSqgcAAAAAACDNDBcbh7vvvjue9axnRUTERRddFO3t7fvcx5e+9KV49NFH46//+q/jT/7kTyIi4txzz422trb48pe/HK997WvjlFNOmdC6AQAAAAAASD9B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ZuTIkbn22mszePDgXlw9AAAAAAAApfJG3x5oamrK9OnT09bWlssuuywXX3xxVq9encbGxqxatWqXnnHLLbfk/PPPz5YtW3LRRRfliiuuyMSJE9Pa2pq2trZe/gQAAAAAAACUyht9PbRp06Zcd911qaury4IFCzrevBs3blzGjRuXq6++OvPnz9/hMx544IF85StfyUUXXZQZM2a8EcsGAAAAAABgH+GNvh6677770tLSkokTJ3Y6XrOuri6nn356li1blrVr1+7wGd/61rdy0EEHZdq0aUmS559/Pi+++OJur6W1tXWHP94MBAAAAAAA2Pd4o6+HVqxYkSSpr6/vcq2+vj4LFy7MypUrM2TIkG7vb2trywMPPJD3vve9WbRoUW688casW7cu/fv3z7vf/e7MnDkzw4YN26W1dLcGAAAAAAAA9m1CXw+tX78+yStv8L1W+1j7nO488cQTefHFF7Ny5cr8x3/8Rz7xiU/kuOOOy6OPPpqbb745kydPzsKFC/PWt761dz4AAAAAAAAARRP6eqj9OMwBAwZ0uXbAAQd0mtOdlpaWJMn//u//5pprrsnEiROTJGPGjMnRRx+dz33uc/nGN76R66+/fqdrWb58+U7XOnr06J0+BwAAAAAAgHL4jr4eqq6uTpJs3bq1y7UXXnih05zuDBw4MEmy3377Zfz48Z2ujR8/Pvvvv39+9atf7dJaampqdvizo3UAAAAAAABQJqGvh4444ogkSXNzc5dr7WPtc7pz5JFHJkne9KY3dXkrsH///jnooIOyadOm12u5AAAAAAAA7GOEvh4aOXJkku6PzWwfGzFixHbvP+SQQzJkyJBs2rQpra2tna698MIL2bBhQw455JDXccUAAAAAAADsS4S+HhozZkwGDRqUpqamju/bS155m2/x4sVpaGjIMccckyTZvHlz1qxZkw0bNnR6xtlnn51KpZIFCxZ0Gl+wYEFefvnlfOADH+j1zwEAAAAAAECZ+vf1AkpVW1ubmTNn5oorrkhjY2MmTZqUbdu25dZbb02lUsmsWbM65i5dujSXX355pk2blunTp3eMT506NUuWLMns2bPzu9/9Ln/xF3+R//mf/0lTU1OOPPLITnMBAAAAAADg1YS+PTBp0qTU1tZmzpw5mT17dqqqqtLQ0JAZM2Zk+PDhO72/pqYmt912W77xjW9kyZIlufPO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tGmZPn16x/iFF16Ye++9N7Nnz866desybNiwPPjgg/nJT36SM888M6NGjeqLjwYAAAAAAEABhL49MGnSpNTW1mbOnDmZPXt2qqqq0tDQkBkzZmT48OE7vX/w4MG5/fbbc8MNN+See+7JHXfckaOPPjqXXnpppk6d+gZ8AgAAAAAAAEol9O2hsWPHZuzYsTucM2HChEyYMKHbawcffHCuuuqqXHXVVb2xPAAAAAAAAPZRvqMPAAAAAAAACtSvUqlU+noRAAAAAAAAwO7xRh8AAAAAAAAUSOgDAAAAAACAAgl9AAAAAAAAUCChDwAAAAAAAAok9AEAAAAAAECBhD4AAAAAAAAokNAHAAAAAAAABRL6AAAAAAAAoED9+3oBsDdZsmRJbrnllqxevTpVVVVpaGjIJZdckuHDh/f10gD2eo8//njuvvvu/PKXv8wf/vCHPP/88znqqKMyevTo/O3f/m0OP/zwTvPb2tryzW9+Mz/72c/y9NNP5/DDD8+4cePyyU9+MtXV1V2ev2rVqtxwww158MEHs23btgwdOjSf+MQncuqpp3a7nh/+8Ie57bbb8vjjj6empiYnnXRSLr300hx99NG98vkB9matra0588wzs27dunz0ox/Ntdde2+m6PRmg97W0tOTmm2/OkiVLsm7dugwcODBvectbMmXKlIwfP75jnj0ZoPe0tLRk3rx5ueeee7J27doMGDAgQ4YMyYQJE3LOOeekqqqqY679mFL0q1Qqlb5eBOwNmpqaMmvWrAwdOjSTJk3K1q1bc9ttt+W5557LggULxD6AnfjKV76SW2+9Ne9///tzwgknpLq6Og899FAWLVqUP/mTP8ntt9+et73tbUmSl156Keeff34eeOCBjB8/PieeeGIee+yx3H777WloaMj3vve97L///h3PXrVqVRobGzNgwIB8/OMfz8EHH5y77rorDz74YK655ppMnDix01puuOGGfOtb38oJJ5yQ8ePHZ8OGDfn+97+f/v37Z+HChamrq3tDf28A+tqXvvSlNDU1pbW1tUvosycD9L7169fnvPPOy3PPPZezzz47xx57bNra2vL444/nsMMOy8UXX5zEngzQm1588cVMmjQpjz76aMaPH5/jjz8+W7duzb333ptly5blzDPPzPXXX5/EfkxhKkBl48aNlRNOOKHyvve9r7J58+aO8aeeeqpSX19fmTx5ch+uDqAMK1eurGzcuLHL+B133FEZOnRo5VOf+lTHWFNTU2Xo0KGVq6++utPc733ve5WhQ4dWmpqaOo1Pnjy5MmzYsMrKlSs7xrZt21b5yEc+UjnhhBMqmzZt6hj/7W9/W3n7299eOfvssyvbtm3rGH/kkUcqw4cPr3zmM5/Z488KUJIVK1ZUhg8fXpk7d25l6NChlc997nOdrtuTAXrfeeedVznppJMqTz755A7n2ZMBes8vf/nLytChQytf/vKXO42/9NJLlbPPPrsybNiwjn3TfkxJfEcfJLnvvvvS0tKSiRMnZvDgwR3jdXV1Of3007Ns2bKsXbu2D1cIsPcbMWJEamtru4yfccYZSZLHHnusY2zRokVJkgsuuKDT3L/+679OTU1Nx/UkWbt2bZYtW5YTTzwxI0aM6Bjv379/zj333LS0tORf/uVfOsb/+Z//OS+99FLOPffc9O//f6eUv+Md78i73/3u3HvvvdmyZcseflqAMmzbti2f//znc/LJJ2fMmDHdzrEnA/SuBx98ML/61a/yiU98IkceeWReeumlPP/8893OtScD9J7NmzcnSY444ohO4/vtt18OP/zw7L///hkwYEAS+zFlEfogyYoVK5Ik9fX1Xa61j61cufINXRPAvmL9+vVJkkMOOSRJUqlU8vDDD+fwww/vcu78AQcckHe84x15+OGHU/n/Txdv339POOGELs9uH3v1Hr2zPX3Lli1ZvXr1nn4sgCLcfPPNWbt2ba644opur9uTAXrfL37xiyTJm9/85kyfPj3vfOc7c8IJJ+S9731vvv3tb+fll19OYk8G6G3tXzNy00035Wc/+1mefPLJPP744/nOd76TX/ziF7nooosycOBA+zHFEfog//cvobs7+7h9rH0OALvnhhtuSJJ85CMfSZJs3Lgxra2t2z1vvq6uLq2trdm0aVOSpLm5OUnX/+Lu1WPtc5Jd29NfPR9gX/Xb3/423/rWt3LJJZdsd8+1JwP0vjVr1iRJPv/5z+fpp5/ONddck3/8x3/M0Ucfna997Wv5whe+kMSeDNDbDjvssHzjG9/I4MGDM2PGjJx88sk57bTT8o1vfCNf/OIXM3369CT2Y8rTf+dTYN/X1taWJB2vZr/aAQcc0GkOALvu29/+dpYsWZIxY8bk7LPPTpKO4ye623NfPd4+b0d79IABA9KvX79OR1rY0wFeeStk1qxZGTp0aKZMmbLdefZkgN7XfkznoEGDcuutt3bsiePGjcsZZ5yRH/7whzn//PNTXV2dxJ4M0Jtqa2vztre9LX/1V3+Vk046KVu2bMmiRYty5ZVXpl+/fpk4caK/I1Mcb/RB0vGX6a1bt3a59sILL3SaA8CumTdvXr72ta/lL//yL/OVr3wl/fr1S5IMHDgwSfd77qvH2+ftaI/eunVrKpVKx9ydzbenA38sbr/99jz00EO5+uqrs//++293nj0ZoPe174tnnHFGp3+pW1VVlTPPPDOVSiW//vWv7ckAvWzVqlWZPHlyjj322Fx99dUZO3ZsPvzhD+e73/1u6uvrc8011+TZZ5+1H1McoQ/S/SvU7Xb06jUA3Zs7d26+9KUvZdSoUbnppps6/QX1wAMPTHV19XaPoWhubk5NTU1qa2uT7PgI5e6Ou9iVPX17x28A7As2b96cr371qxk7dmwGDRqUJ554Ik888USefPLJJElLS0ueeOKJbNy40Z4M8AZo3+cOO+ywLtfaxzZt2mRPBuhl8+bNy9atWzN27NhO4/369ctpp52WLVu25KGHHrIfUxyhD5KMHDkySbJ8+fIu19rHRowY8YauCaBUN998c6677rq8973vzXe+850u/xVav379ctxxx+Xpp5/OunXrOl3bunVrHn300Rx33HEdbwC277/d7dH//d//neT/9vFX//NDDz3UZf7y5cszcODA/Pmf/3nPPyDAXm7Tpk1paWnJT3/605x66qkdP+eee26S5J577smpp56auXPn2pMB3gDHH398kuSpp57qcq197JBDDrEnA/Syp59+Okny8ssvd7n24osvJkleeukl+zHFEfogyZgxYzJo0KA0NTWlpaWlY7y5uTmLFy9OQ0NDjjnmmD5cIUAZvvOd7+QrX/lKTj755Nx4440dZ8u/1vjx45O88ubfq91xxx1pbW3NWWed1TF2zDHH5IQTTsgDDzyQhx9+uGP8xRdfzK233ppBgwbllFNO6Rg/88wzs//+++f73/9+x1/Uk+TRRx/Nr3/965x66qmOwAD2aYcccki+/vWvd/m58sorkySjRo3K17/+9Zx55plJ7MkAve2UU07Jm970pixatKjTv3N4/vnnc+edd6aqqirvec97ktiTAXrTsccemyT58Y9/3Gl827Ztueuuu7Lffvt1RDv7MSXpV6lUKn29CNgb/OAHP8gVV1yRoUOHZtKkSdm2bVtuvfXWPPfcc5k/f37e8Y539PUSAfZq8+fPz1VXXZVDDz00l156afr379/p+qBBgzJmzJgkr/wXcuedd16WLVuWD3/4w3nXu96Vxx57LLfffnvq6+vz/e9/v9N3Sj3yyCOZMmVKBgwYkPPPPz8HHXRQ7r777ixbtixXXXVVJk2a1OnX+upXv5rvfOc7OeGEEzJ+/Pg899xzmTdvXvbff/8sXLgwRx55ZO//hgDsZdauXZtTTjklH/3oR3Pttdd2jNuTAXrfnXfemZkzZ+atb31rPvrRj6Zfv3750Y9+lDVr1mTGjBm56KKLktiTAXrTk08+mQkTJuS5557LySefnPe+971pa2vLXXfdlcceeyznnntuZs2alcR+TFmEPniVe+65J3PmzMnq1atTVVWVhoaGzJgxI8OHD+/rpQHs9T772c/mJz/5yXavH3300fn5z3/e8b+ff/75fPOb38zixYvzzDPP5LDDDsvpp5+eT37ykxk0aFCX+1etWpWvfe1refDBB7Nt27YMHTo0f/M3f9PlbP0kqVQq+cEPfpD58+fn8ccfT01NTU466aTMmDHDG9rAH63thb7EngzwRvjFL36Rm2++OY888khefvnlDB06NOeff37OOOOMTvPsyQC9Z+3atbnxxhtz//3355lnnklVVVWOPfbYnHPOOZk4cWLHcZyJ/ZhyCH0AAAAAAABQIN/RBwAAAAAAAAUS+gAAAAAAAKBAQh8AAAAAAAAUSOgDAAAAAACAAgl9AAAAAAAAUCChDwAAAAAAAAok9AEAAAAAAECBhD4AAAAAAAAokNAHAAAAAAAABRL6AAAAAAAAoEBCHwAAAAAAABRI6AMAAAAAAIACCX0AAAAAAABQIKEPAAAAAAAACiT0AQAAAAAAQIGEPgAAAAAAACiQ0AcAAAAAAAAF+v8AuW1o6XoGXO8AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# print(\"Finish processing files\") \n", + "# Set time column as the dataframe index\n", + "sns.set_context('paper')\n", + "patch_color = \"lightgrey\"\n", + "\n", + "# print(\"Creating figure\")\n", + "# Create a figure\n", + "# fig, ax = plt.subplots(1, 1, figsize=(8,3), dpi=300)\n", + "fig, axes = plt.subplots(3, 1, figsize=(12,12), dpi=150, sharex=True)\n", + "\n", + "# plot Alive vs Time\n", + "curve_params = {}\n", + "curve_params['alive'] = {'color': '#75db75', 'label': 'Alive'}\n", + "curve_params['apoptotic'] = {'color': '#ef4242', 'label': 'Apoptotic'}\n", + "curve_params['necrotic'] = {'color':'#97723d', 'label': 'Necrotic'}\n", + "line_width = 2.\n", + "for k,pdict in curve_params.items():\n", + " c = pdict['color']\n", + " l = pdict['label']\n", + " axes[0].plot(df_time_course.time, df_time_course[k], \"-\", c=c, label=l, linewidth=line_width)\n", + "\n", + "# setting axes labels\n", + "axes[0].set_xlabel(\"Time (min)\")\n", + "axes[0].set_ylabel(\"Number of cells\")\n", + "\n", + "axes[0].tick_params(axis='x', labelsize=12)\n", + "axes[0].tick_params(axis='y', labelsize=12)\n", + "\n", + "# Showing legend\n", + "axes[0].spines['right'].set_visible(False)\n", + "axes[0].spines['top'].set_visible(False)\n", + "axes[0].yaxis.grid(linestyle='dotted')\n", + "axes[0].legend()\n", + "\n", + "# fig.tight_layout()\n", + "# fig.savefig(fig_fname)\n", + "# print(\"Saving fig as %s\" % fig_fname)\n", + "\n", + "# if csv_fname:\n", + "# df_time_course.to_csv(csv_fname+\".csv\", sep=\"\\t\")\n", + "# print(\"Saving csv as %s\" % csv_fname)\n", + "\n", + "# name = \"output\"\n", + "\n", + "color_dict = {\"alive\": \"g\", \"apoptotic\": \"r\", \"necrotic\":\"k\"}\n", + "\n", + "# instance_folder = \"../../../../\"\n", + "# instance_folder = sys.argv[1]\n", + "\n", + "output_data = data_folder\n", + "\n", + "mcds = multicellds.MultiCellDS(output_folder=output_data)\n", + "\n", + "# df_time_course = mcds.get_cells_summary_frame()\n", + "# df_cell_variables = get_timeserie_mean(mcds)\n", + "# df_time_tnf = get_timeserie_density(mcds)\n", + "\n", + "# df_time_course.to_csv(instance_folder + name + \"_time_course.tsv\", sep=\"\\t\")\n", + "# df_cell_variables.to_csv(instance_folder + name + \"_cell_variables.tsv\", sep=\"\\t\")\n", + "# df_time_tnf.to_csv(instance_folder + name + \"_tnf_time.tsv\", sep=\"\\t\")\n", + "\n", + "# plot_cells(df_time_course, color_dict, axes[0])\n", + "\n", + "# list_of_variables = ['drug_A_internal_density', 'drug_A_external_density']\n", + "# plot_molecular_model(df_cell_variables, list_of_variables, axes[1])\n", + "# threshold = 0.5\n", + "\n", + "# axes[1].hlines(threshold, 0, df_time_course.time.iloc[-1], label=\"Activation threshold\")\n", + "# ax2 = axes[1].twinx()\n", + "# ax2.plot(df_time_tnf.time, df_time_tnf['drug_A_internal_density'], 'r', label=\"[drug_A]\")\n", + "# ax2.set_ylabel(\"[TNF]\")\n", + "# ax2.set_ylim([0, 1000])\n", + "# axes[1].legend(loc=\"center right\")\n", + "# ax2.legend(loc=\"upper right\")\n", + "\n", + "# list_of_variables = ['Proliferation_node', 'Apoptosis_node', 'Luminespib_node', 'Pictilisib_node']\n", + "# plot_molecular_model(df_cell_variables, list_of_variables, axes[2])\n", + "# axes[2].set_xlabel(\"time (min)\")\n", + "# axes[2].set_ylabel(\"Node mean activation\")\n", + "# ax2 = axes[2].twinx()\n", + "# ax2.plot(df_time_tnf.time, df_time_tnf['drug_A_internal_density'], 'r', label=\"[drug_A]\")\n", + "# axes[2].legend(loc=\"center right\")\n", + "# ax2.legend(loc=\"upper right\")\n", + "\n", + "fig.tight_layout()" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "ename": "KeyError", + "evalue": "'drug_A_internal_density'", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "File \u001b[0;32m~/anaconda3/lib/python3.12/site-packages/pandas/core/indexes/base.py:3805\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3804\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[0;32m-> 3805\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_engine\u001b[38;5;241m.\u001b[39mget_loc(casted_key)\n\u001b[1;32m 3806\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n", + "File \u001b[0;32mindex.pyx:167\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32mindex.pyx:191\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32mindex.pyx:234\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine._get_loc_duplicates\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32mindex.pyx:242\u001b[0m, in \u001b[0;36mpandas._libs.index.IndexEngine._maybe_get_bool_indexer\u001b[0;34m()\u001b[0m\n", + "File \u001b[0;32mindex.pyx:134\u001b[0m, in \u001b[0;36mpandas._libs.index._unpack_bool_indexer\u001b[0;34m()\u001b[0m\n", + "\u001b[0;31mKeyError\u001b[0m: 'drug_A_internal_density'", + "\nThe above exception was the direct cause of the following exception:\n", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[6], line 65\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;66;03m# df_time_course.to_csv(instance_folder + name + \"_time_course.tsv\", sep=\"\\t\")\u001b[39;00m\n\u001b[1;32m 59\u001b[0m \u001b[38;5;66;03m# df_cell_variables.to_csv(instance_folder + name + \"_cell_variables.tsv\", sep=\"\\t\")\u001b[39;00m\n\u001b[1;32m 60\u001b[0m \u001b[38;5;66;03m# df_time_tnf.to_csv(instance_folder + name + \"_tnf_time.tsv\", sep=\"\\t\")\u001b[39;00m\n\u001b[1;32m 61\u001b[0m \n\u001b[1;32m 62\u001b[0m \u001b[38;5;66;03m# plot_cells(df_time_course, color_dict, axes[0])\u001b[39;00m\n\u001b[1;32m 64\u001b[0m list_of_variables \u001b[38;5;241m=\u001b[39m [\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdrug_A_internal_density\u001b[39m\u001b[38;5;124m'\u001b[39m, \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdrug_A_external_density\u001b[39m\u001b[38;5;124m'\u001b[39m]\n\u001b[0;32m---> 65\u001b[0m plot_molecular_model(df_cell_variables, list_of_variables, axes[\u001b[38;5;241m1\u001b[39m])\n\u001b[1;32m 66\u001b[0m \u001b[38;5;66;03m# threshold = 0.5\u001b[39;00m\n\u001b[1;32m 67\u001b[0m \n\u001b[1;32m 68\u001b[0m \u001b[38;5;66;03m# axes[1].hlines(threshold, 0, df_time_course.time.iloc[-1], label=\"Activation threshold\")\u001b[39;00m\n\u001b[1;32m 69\u001b[0m ax2 \u001b[38;5;241m=\u001b[39m axes[\u001b[38;5;241m1\u001b[39m]\u001b[38;5;241m.\u001b[39mtwinx()\n", + "Cell \u001b[0;32mIn[2], line 41\u001b[0m, in \u001b[0;36mplot_molecular_model\u001b[0;34m(df_cell_variables, list_of_variables, ax1)\u001b[0m\n\u001b[1;32m 38\u001b[0m threshold \u001b[38;5;241m=\u001b[39m \u001b[38;5;241m0.5\u001b[39m\n\u001b[1;32m 40\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m label \u001b[38;5;129;01min\u001b[39;00m list_of_variables:\n\u001b[0;32m---> 41\u001b[0m y \u001b[38;5;241m=\u001b[39m df_cell_variables[label]\n\u001b[1;32m 42\u001b[0m time \u001b[38;5;241m=\u001b[39m df_cell_variables[\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mtime\u001b[39m\u001b[38;5;124m\"\u001b[39m]\n\u001b[1;32m 43\u001b[0m ax1\u001b[38;5;241m.\u001b[39mplot(time, y, label\u001b[38;5;241m=\u001b[39m label)\n", + "File \u001b[0;32m~/anaconda3/lib/python3.12/site-packages/pandas/core/frame.py:4102\u001b[0m, in \u001b[0;36mDataFrame.__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 4100\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcolumns\u001b[38;5;241m.\u001b[39mnlevels \u001b[38;5;241m>\u001b[39m \u001b[38;5;241m1\u001b[39m:\n\u001b[1;32m 4101\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_getitem_multilevel(key)\n\u001b[0;32m-> 4102\u001b[0m indexer \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mcolumns\u001b[38;5;241m.\u001b[39mget_loc(key)\n\u001b[1;32m 4103\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m is_integer(indexer):\n\u001b[1;32m 4104\u001b[0m indexer \u001b[38;5;241m=\u001b[39m [indexer]\n", + "File \u001b[0;32m~/anaconda3/lib/python3.12/site-packages/pandas/core/indexes/base.py:3812\u001b[0m, in \u001b[0;36mIndex.get_loc\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 3807\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(casted_key, \u001b[38;5;28mslice\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m (\n\u001b[1;32m 3808\u001b[0m \u001b[38;5;28misinstance\u001b[39m(casted_key, abc\u001b[38;5;241m.\u001b[39mIterable)\n\u001b[1;32m 3809\u001b[0m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28many\u001b[39m(\u001b[38;5;28misinstance\u001b[39m(x, \u001b[38;5;28mslice\u001b[39m) \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m casted_key)\n\u001b[1;32m 3810\u001b[0m ):\n\u001b[1;32m 3811\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m InvalidIndexError(key)\n\u001b[0;32m-> 3812\u001b[0m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key) \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01merr\u001b[39;00m\n\u001b[1;32m 3813\u001b[0m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[1;32m 3814\u001b[0m \u001b[38;5;66;03m# If we have a listlike key, _check_indexing_error will raise\u001b[39;00m\n\u001b[1;32m 3815\u001b[0m \u001b[38;5;66;03m# InvalidIndexError. Otherwise we fall through and re-raise\u001b[39;00m\n\u001b[1;32m 3816\u001b[0m \u001b[38;5;66;03m# the TypeError.\u001b[39;00m\n\u001b[1;32m 3817\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_check_indexing_error(key)\n", + "\u001b[0;31mKeyError\u001b[0m: 'drug_A_internal_density'" + ] + }, + { + "data": { + "image/png": "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tm3bpoULF2rbtm1KSEhQcHCwLr30UrlcLs2ZM0c33XSThg0bJklq166dd5zHH39cixYt0rBhw/Twww+rqKhICQkJmjJlip577jmNHz9ekvT8889rzpw5ysnJ8b55IEm9evWq9XtVUFCgSZMmac+ePRo9erRuuOEGmc1mJScn68svvyT0BwAAAAAAaAZ7nHv0cebHyirPqvF6f3t/jW8/XtHW6CauDE2N0B/14vznP6WiouYuoxojN1fOf/7zlEJ/t9uthQsX6oILLlBsbKwk6frrr9fbb7+tTz75RHfddZdP+0OHDumxxx7TlClTvK8NHz5cDz30kF5++WX99a9/lVSxV/53332nW265Rc8884y37XXXXadrr71WTz/9tL744guZzT/vsrVnzx69/PLLuvzyyyVJkyZNUu/evfXCCy/orbfe0u9+9zv1799feXl5mjNnjoYMGeIN8Ctt2LBBixYt0ujRo/XKK6/I8tMnIW655RZdffXV+stf/qKxY8cqJCRE48ePV0JCgkpLS6uNU5uZM2dqz549evzxx3XnnXf6XGvJ5yAAAAAAAAC0RXmuPH12/DNtK9xW4/XwgHBd2+5anRlyJls4nybY0x+nvdWrV+vYsWO6/vrrva/1799fAwcOVEJCQrX2ISEhuu2223xeu+KKK9SjRw8tX75chlFxKMqXX34pSZo2bZpP2549e+rqq6/WgQMHtGfPHp9rPXr08Ab+lW6//XaFhIR4xzuRynb33nuvN/CXpKioKE2aNEn5+fnasGFDvcb6JY/Ho8WLF6tr16664447ql2v+gYGAAAAAAAAGo/bcGtd7jr94+A/agz8zTJrVMQoPdLtEZ3lOIvA/zRCQod6sT/yiEwREc1dRjWmiAjZH3nklMb48MMPZbfb1a9fP6WlpXm/Ro0apZSUFG3evNmnfbdu3RQYGFhtnF69eikvL0+5P22BlJqaqoiICLVv375a28r98w8dOuTzeu/evau1DQwMVNeuXXXw4MF63U9qamqtY1XOW9mmoXJycpSXl6f+/fsT8AMAAAAAADSTQyWH9O+0f+vT45+q1Citdr27rbse7Pqgrml3jWxmWzNUiObE9j6ol8CLLpL1ggva3EG+GRkZWrt2rdxud7UV9pUSEhI0fPjw+tf007umhmH49R3U+o5V+UmDxtCYYwMAAAAAAKBuTrdTS7OW6rv872Soek5jN9t1RfQVGhE2QmYTCzZPV4T+qDeTxdIiV/ufio8++khut1tPPfWUdz//qubPn6+lS5fqT3/6k0JDQyVVrM4vKyurtto/JSVF4eHhCg8Pl1TxiYD9+/fr+PHjPofsSvJu69O1a1ef1/fu3VuthrKyMqWmpqpbt27e1+p6A6Cy3d69ezV48OB6zVtfUVFRCg8P165du+TxeFjtDwAAAAAA0AQMw1BiYaIWH1+sQndhjW2Ghw7Xle2ulMPiaOLq0NK06tB//fr1WrBggbZt26bjx4/LZDKpffv2GjJkiG666SaNHDmy1r7Hjx/XG2+8oVWrVik9PV02m029e/fWhAkTdMMNN5xwVfWhQ4f0xhtvaN26dcrMzJTD4dCAAQN04403aty4cSesPSkpSW+99ZY2btyo7OxsRUREaPDgwZo8ebLOPffcBn8v0HCGYeijjz5Sly5ddOutt9baZt26dfrss880adIkSVJRUZHeffddn4N8v/jiCx04cEATJ070/t659NJLtWbNGr366qt66qmnvG0PHjyoxYsXq3v37t7tdiodOHBAS5cu9fnUwTvvvKOioiJdeuml3tfsdrskKS8vr1rNl112mebNm6c5c+bolVde8Qbz2dnZmjdvnkJDQ3XOOed424eEhCgvL69en0wwm826+uqr9d577+ndd9+ttq8/bwQAAAAAAAD417GyY/o482OlFKfUeD02MFbXt79ePYN7NnFlaKlaZehvGIaefvppffDBB97XgoKCZDKZvPuxL168WL/+9a/1xBNPVOu/Y8cOTZkyxbv3ut1uV1FRkbZs2aItW7Zo6dKlmj17do37tkvSmjVr9OCDD6q4uFiS5HA4lJubq3Xr1mndunW6/vrrNWPGjFoD1A8//FDPPPOMXC6XJCk0NFTHjx/XihUrtGLFCt133326//77T+VbhHr45ptvlJaW5hPe/9KoUaNkt9uVkJDgDf27deumOXPmaO/evTrrrLO0b98+vf/++2rXrp0efPBBb98JEybos88+03vvvacjR45o1KhRyszM1Pz582UYhp599tlqAXnfvn31+OOPa/PmzYqLi9P27dv18ccfKy4uTnfeeae3Xe/evRUSEqJ58+bJZrMpLCxMUVFROvfcc3Xuuedq/PjxWrRokW6//XaNHTtWTqdTCQkJysrK0nPPPSeH4+d3fAcPHqxVq1bp2WefVXx8vCwWi8455xxFR0fX+D156KGHtHHjRs2YMUPfffedRo4cKavVquTkZO3fv19vv/32Sf08AAAAAAAA8LNyT7m+yvlKa3LWyC13tetWk1WXRl2qURGjZDGd/PbXaHta5ZLchQsXegP/cePGadmyZdq2bZu2bt2qL774Qpdccokk6b///a+WL1/u07egoED33HOPcnNzFRcXp4SEBCUmJioxMVFPPfWUrFar1q1bpxkzZtQ4d2pqqh566CEVFxdr6NChWrp0qbZs2aLNmzdr2rRp3vreeOONGvsnJibq6aeflsvl0tixY7VmzRpt3rxZGzZs0E033SRJmjVrlpYsWeKX7xVqt2DBAkmqdS9/SbLZbLrwwguVlJSkH3/8UZLUoUMHvf3220pPT9cLL7yghQsX6uKLL9b8+fN9tggKCAjQ3Llzdd9992n//v3629/+pvfee0/x8fF67733fFbbVxo4cKBmz56t7du367nnntPKlSt13XXX6X//+593dX9lXTNnzpTD4dCMGTP08MMP69VXX/Ve//vf/64//vGPysvL0z//+U/NnTtXXbp00RtvvKHx48f7zHnHHXdo4sSJWrZsmf7whz/o4YcfrnGboUphYWF6//33dc899yglJUX/+Mc/9NJLLykpKalen3IBAAAAAABA3XYW7dQ/D/1TK3NW1hj4DwgZoEe7PaqLIy8m8Ec1JqMVnsx52223aePGjerevbuWLFmigADfDyyUl5friiuuUGpqqq666iq9+OKL3msvvfSSZs+eLZvNpsWLF1fb2/y1117Tiy++KIvFos8//1w9e/p+LGb69On69NNP1b59ey1ZskRhYWE+15966il98MEHcjgcWrlypXd/90qTJk3Sli1b1LdvXy1cuFBWq9Xn+pQpU7Ru3Tp17txZy5cvl+UUDqmt5HQ6FR8fL6niTYeq4XFV+/btkyTFxcWd8pxt1ZgxY9S5c2e9++67fh+7X79+mjBhgv7+97/7feyWhN9nAAAAAAAANct15erTzE+1o2hHjdcjAiI0vv14DQwZ2MSVoTVplSv9MzMzJUn9+/evFvhLktVq1RlnnCGpIvCuatGiRZKkK6+8ssbDTCdPniy73S63263PPvvM55rT6dSXX34pSbr55purBf6SdPfdd0uSCgsLtWLFCp9rqamp2rJli6SK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VZwJUFvon5GRIUlyOBw+wXtl/7y8PBUXF9e6r39l/6rzVX1eeb02tfUHAAAAANTOMAxlu7K117nXG/Lnu/MbPE47azvvSv5ewb0UGhDaCNUCAAA0Dr+F/jExMd6DCGpTXl5+ykF25UG08+fPr3OLHEkaOnSoJOn222/Xn/70J/Xp08d7bc+ePerVq1eN/ZKTkyVJvXv39nm9av/k5GQNGjSozv5V21d9npWVpezsbEVFRVXr63a7tW/fvhr7AwAAAAB85ZTneFfypxSnKNeV2+AxogKiKgJ+e8VK/oiACL/XCQAA0FT8FvpXbt3z4IMP1riCPj8/X8uWLdMNN9zgrykbLC4uTp06ddKRI0f09ddf64orrqjWxul0avPmzZKk888/3+fasGHDZLPZVFJSoq+//rrG0P/w4cNKSUmpsX/V52vXrtV1111Xrf/333/v/YTCL/sDAAAAwOku15VbsR+/syLkz3ZlN3iMiIAIn5X8kdbIRqgUAACgefgt9J82bZqSk5N1ww03aNq0aRoxYoSio6OVlZWljRs36tVXX9XgwYNP+RDfd999t87rdR3kK0njx4/X7NmztWTJEv3ud79Tly5dfK6/9957cjqdslgsuuaaa3yu2e12XXbZZfr00081f/583X777QoN9f2Y59y5cyVV7Mc/duxYn2tdu3bVsGHDtGXLFr311lu66qqrZLVafdq8/vrrkqTOnTtrxIgRdd4rAAAAALR1ea4876G7KcUpyirPavAYoZZQb8Df295bUQFRMplMjVAtAABA8zvp0L9///41/iXJMAw99thjNb5+8OBBDR48WD/++OPJTnvKpkyZooSEBGVmZmrq1Kl67rnndOaZZ6qsrEwJCQl6+eWXJUk33nijevbsWa3/Aw88oBUrVigzM1P33HOP/vrXv6pHjx5yOp1688039f7770uS7r33XoWHh1frP336dN16663atWuXHn74Yf35z39WbGyscnNz9dJLL2nt2rWSpEcffVQWi6URvxMAAAAA0PLku/K9+/GnFKfoePnxBo/hsDgUFxznDfrbW9sT8gMAgNOGyTAM42Q63nbbbSc96YlW65+KE630l6QdO3ZoypQpys3NlVSxKr+srMx7CPAFF1yg2bNn13oo8Zo1a/Tggw+quLhYkhQaGiqn0ym32y1Juv766zVjxoxa/1L54Ycf6pln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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "# print(\"Finish processing files\") \n", + "# Set time column as the dataframe index\n", + "sns.set_context('paper')\n", + "patch_color = \"lightgrey\"\n", + "\n", + "# print(\"Creating figure\")\n", + "# Create a figure\n", + "# fig, ax = plt.subplots(1, 1, figsize=(8,3), dpi=300)\n", + "fig, axes = plt.subplots(3, 1, figsize=(12,12), dpi=150, sharex=True)\n", + "\n", + "# plot Alive vs Time\n", + "curve_params = {}\n", + "curve_params['alive'] = {'color': '#75db75', 'label': 'Alive'}\n", + "curve_params['apoptotic'] = {'color': '#ef4242', 'label': 'Apoptotic'}\n", + "curve_params['necrotic'] = {'color':'#97723d', 'label': 'Necrotic'}\n", + "line_width = 2.\n", + "for k,pdict in curve_params.items():\n", + " c = pdict['color']\n", + " l = pdict['label']\n", + " axes[0].plot(df_time_course.time, df_time_course[k], \"-\", c=c, label=l, linewidth=line_width)\n", + "\n", + "# setting axes labels\n", + "axes[0].set_xlabel(\"Time (min)\")\n", + "axes[0].set_ylabel(\"Number of cells\")\n", + "\n", + "axes[0].tick_params(axis='x', labelsize=12)\n", + "axes[0].tick_params(axis='y', labelsize=12)\n", + "\n", + "# Showing legend\n", + "axes[0].spines['right'].set_visible(False)\n", + "axes[0].spines['top'].set_visible(False)\n", + "axes[0].yaxis.grid(linestyle='dotted')\n", + "axes[0].legend()\n", + "\n", + "# fig.tight_layout()\n", + "# fig.savefig(fig_fname)\n", + "# print(\"Saving fig as %s\" % fig_fname)\n", + "\n", + "# if csv_fname:\n", + "# df_time_course.to_csv(csv_fname+\".csv\", sep=\"\\t\")\n", + "# print(\"Saving csv as %s\" % csv_fname)\n", + "\n", + "# name = \"output\"\n", + "\n", + "color_dict = {\"alive\": \"g\", \"apoptotic\": \"r\", \"necrotic\":\"k\"}\n", + "\n", + "# instance_folder = \"../../../../\"\n", + "# instance_folder = sys.argv[1]\n", + "\n", + "output_data = data_folder\n", + "\n", + "mcds = multicellds.MultiCellDS(output_folder=output_data)\n", + "\n", + "# df_time_course = mcds.get_cells_summary_frame()\n", + "df_cell_variables = get_timeserie_mean(mcds)\n", + "df_time_tnf = get_timeserie_density(mcds)\n", + "\n", + "# df_time_course.to_csv(instance_folder + name + \"_time_course.tsv\", sep=\"\\t\")\n", + "# df_cell_variables.to_csv(instance_folder + name + \"_cell_variables.tsv\", sep=\"\\t\")\n", + "# df_time_tnf.to_csv(instance_folder + name + \"_tnf_time.tsv\", sep=\"\\t\")\n", + "\n", + "# plot_cells(df_time_course, color_dict, axes[0])\n", + "\n", + "list_of_variables = ['drug_A_internal_density', 'drug_A_external_density']\n", + "plot_molecular_model(df_cell_variables, list_of_variables, axes[1])\n", + "# threshold = 0.5\n", + "\n", + "# axes[1].hlines(threshold, 0, df_time_course.time.iloc[-1], label=\"Activation threshold\")\n", + "ax2 = axes[1].twinx()\n", + "ax2.plot(df_time_tnf.time, df_time_tnf['drug_A_internal_density'], 'r', label=\"[drug_A]\")\n", + "# ax2.set_ylabel(\"[TNF]\")\n", + "# ax2.set_ylim([0, 1000])\n", + "axes[1].legend(loc=\"center right\")\n", + "ax2.legend(loc=\"upper right\")\n", + "\n", + "list_of_variables = ['Proliferation_node', 'Apoptosis_node', 'Luminespib_node', 'Pictilisib_node']\n", + "plot_molecular_model(df_cell_variables, list_of_variables, axes[2])\n", + "axes[2].set_xlabel(\"time (min)\")\n", + "axes[2].set_ylabel(\"Node mean activation\")\n", + "# ax2 = axes[2].twinx()\n", + "# ax2.plot(df_time_tnf.time, df_time_tnf['drug_A_internal_density'], 'r', label=\"[drug_A]\")\n", + "axes[2].legend(loc=\"center right\")\n", + "# ax2.legend(loc=\"upper right\")\n", + "\n", + "fig.tight_layout()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# # fig, ax1 = plt.subplots(1, 1, figsize=(8,3), dpi=300)\n", + "\n", + "# list_of_variables = ['time','Proliferation_node', 'Apoptosis_node', 'TNFalpha_node']\n", + "\n", + "# df_nodes = df_cell_variables[list_of_variables]\n", + "\n", + "# fig, ax = plt.subplots(figsize=(10,6))\n", + "\n", + "# # Plot each node variable vs time\n", + "# a = 0\n", + "# for col in list_of_variables[1:]: # Skip 'time' column\n", + "# ax.plot(df_nodes['time'], df_nodes[col], label=col.replace('_node', ''))\n", + "# a=a+1\n", + "\n", + "\n", + "# # Customize plot\n", + "# ax.set_xlabel('Time (min)')\n", + "# ax.set_ylabel('Node Activation')\n", + "# ax.set_title('Boolean Node States Over Time')\n", + "# ax.grid(True, linestyle='--', alpha=0.7)\n", + "# ax.legend(loc='center right')\n", + "# plt.tight_layout()\n", + "# plt.show()\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# def plot_columns_by_name(df, column_names, title=None, figsize=(10,6), ylabel=\"Value\"):\n", + "# \"\"\"\n", + "# Plot selected columns from a DataFrame\n", + " \n", + "# Args:\n", + "# df (pandas.DataFrame): DataFrame containing the data\n", + "# column_names (list): List of column names to plot\n", + "# title (str, optional): Plot title\n", + "# figsize (tuple, optional): Figure size (width, height)\n", + "# ylabel (str, optional): Y-axis label\n", + "# \"\"\"\n", + "# fig, ax = plt.subplots(figsize=figsize)\n", + " \n", + "# for col in column_names:\n", + "# if col in df.columns:\n", + "# ax.plot(df['time'], df[col], label=col)\n", + "# else:\n", + "# print(f\"Warning: Column '{col}' not found in DataFrame\")\n", + " \n", + "# ax.set_xlabel(\"Time (min)\")\n", + "# ax.set_ylabel(ylabel)\n", + "# ax.grid(True)\n", + " \n", + "# if title:\n", + "# ax.set_title(title)\n", + " \n", + "# ax.legend(loc='best')\n", + "# plt.tight_layout()\n", + "# return fig, ax\n", + "\n", + "# # Example usage:\n", + "# columns_to_plot = ['Proliferation_node']\n", + "# plot_columns_by_name(df_cell_variables, columns_to_plot, \n", + "# title=\"Node Activations Over Time\",\n", + "# ylabel=\"Node Activation\")\n", + "# plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "# # df_time_course = mcds.get_cells_summary_frame()\n", + "# # df_cell_variables = get_timeserie_mean(mcds)\n", + "\n", + "# # instance_folder = \"../../../../output\"\n", + "# df_time_tnf = get_timeserie_density(mcds)\n", + "\n", + "# # df_time_course.to_csv(instance_folder + name + \"_time_course.tsv\", sep=\"\\t\")\n", + "# # df_cell_variables.to_csv(instance_folder + name + \"_cell_variables.tsv\", sep=\"\\t\")\n", + "# df_time_tnf.to_csv( name + \"_drug_time.tsv\", sep=\"\\t\")\n", + "# # plt.plot(df_time_tnf.time, df_time_tnf['drug_A'], 'r', label=\"[TNF]\")\n", + "\n", + "# fig, ax = plt.subplots(figsize=(8,3), dpi=300)\n", + "\n", + "# # Plot the data\n", + "# ax.plot(df_time_tnf.time, df_time_tnf['drug_A_internal_density'], 'r', label=\"[drug]\")\n", + "# # ax.set_yscale('log')\n", + "# # Add grid with log scale compatibility\n", + "# ax.grid(True, which=\"both\", ls=\"-\", alpha=0.2)\n", + "\n", + "# # Add labels and legend\n", + "# ax.set_xlabel(\"Time (min)\")\n", + "# ax.set_ylabel(\"Drug density\")\n", + "# ax.legend()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "base", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.7" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 11213ab09d043e3a1b3fd66fe2158f04ae0a881f Mon Sep 17 00:00:00 2001 From: Arnau Montagud Date: Tue, 2 Sep 2025 16:47:33 +0200 Subject: [PATCH 02/11] Update config/PhysiCell_settings_LNCaP.xml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Vincent Noël --- config/PhysiCell_settings_LNCaP.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/config/PhysiCell_settings_LNCaP.xml b/config/PhysiCell_settings_LNCaP.xml index 3abc8b7..b701d6e 100644 --- a/config/PhysiCell_settings_LNCaP.xml +++ b/config/PhysiCell_settings_LNCaP.xml @@ -125,9 +125,12 @@ 5.31667e-05 - + + 516 + + 0.05 0 From a22bad312bff5237a81227a5a0198d4393dd9be4 Mon Sep 17 00:00:00 2001 From: Arnau Montagud Date: Tue, 2 Sep 2025 16:47:51 +0200 Subject: [PATCH 03/11] Update config/PhysiCell_settings_LNCaP.xml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Vincent Noël --- config/PhysiCell_settings_LNCaP.xml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/config/PhysiCell_settings_LNCaP.xml b/config/PhysiCell_settings_LNCaP.xml index b701d6e..8854269 100644 --- a/config/PhysiCell_settings_LNCaP.xml +++ b/config/PhysiCell_settings_LNCaP.xml @@ -143,10 +143,14 @@ 0.0 - + + 0 + 86400 + + 0.05 0 From fde92d98f437e88b0af63a1221f831a206e680ba Mon Sep 17 00:00:00 2001 From: Arnau Montagud Date: Tue, 2 Sep 2025 16:48:00 +0200 Subject: [PATCH 04/11] Update config/PhysiCell_settings_LNCaP_Pictilisib_2.xml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Vincent Noël --- config/PhysiCell_settings_LNCaP_Pictilisib_2.xml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/config/PhysiCell_settings_LNCaP_Pictilisib_2.xml b/config/PhysiCell_settings_LNCaP_Pictilisib_2.xml index 0903037..c608bf1 100644 --- a/config/PhysiCell_settings_LNCaP_Pictilisib_2.xml +++ b/config/PhysiCell_settings_LNCaP_Pictilisib_2.xml @@ -140,10 +140,14 @@ 0.0 - + + 0 + 86400 + + 0.05 0 From 2484eeb3dbb5e25970f85fc0493d5e0239b1ed6e Mon Sep 17 00:00:00 2001 From: Arnau Montagud Date: Tue, 2 Sep 2025 16:48:08 +0200 Subject: [PATCH 05/11] Update config/PhysiCell_settings_LNCaP_Pictilisib_2.xml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Vincent Noël --- config/PhysiCell_settings_LNCaP_Pictilisib_2.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/config/PhysiCell_settings_LNCaP_Pictilisib_2.xml b/config/PhysiCell_settings_LNCaP_Pictilisib_2.xml index c608bf1..cccc9a7 100644 --- a/config/PhysiCell_settings_LNCaP_Pictilisib_2.xml +++ b/config/PhysiCell_settings_LNCaP_Pictilisib_2.xml @@ -125,9 +125,12 @@ 5.31667e-05 - + + 516 + + 0.05 0 From fc92c6b21106663f75d57073724aea508fecb9f4 Mon Sep 17 00:00:00 2001 From: Arnau Montagud Date: Tue, 2 Sep 2025 16:48:17 +0200 Subject: [PATCH 06/11] Update config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Vincent Noël --- .../PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml b/config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml index 27ff02c..28ff40e 100644 --- a/config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml +++ b/config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml @@ -140,10 +140,14 @@ 0.0 - + + 0 + 86400 + + 0.05 0 From a0f4ba02d7ff8c77548863d25942d459449b674d Mon Sep 17 00:00:00 2001 From: Arnau Montagud Date: Tue, 2 Sep 2025 16:48:39 +0200 Subject: [PATCH 07/11] Update config/PhysiCell_settings_LNCaP_Luminespib_2.xml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Vincent Noël --- config/PhysiCell_settings_LNCaP_Luminespib_2.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/config/PhysiCell_settings_LNCaP_Luminespib_2.xml b/config/PhysiCell_settings_LNCaP_Luminespib_2.xml index f861888..c1e7a66 100644 --- a/config/PhysiCell_settings_LNCaP_Luminespib_2.xml +++ b/config/PhysiCell_settings_LNCaP_Luminespib_2.xml @@ -125,9 +125,12 @@ 5.31667e-05 - + + 516 + + 0.05 0 From 22f85817d21901077cca534c6277995087e3dd94 Mon Sep 17 00:00:00 2001 From: Arnau Montagud Date: Tue, 2 Sep 2025 16:48:45 +0200 Subject: [PATCH 08/11] Update config/PhysiCell_settings_LNCaP_Luminespib_2.xml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Vincent Noël --- config/PhysiCell_settings_LNCaP_Luminespib_2.xml | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/config/PhysiCell_settings_LNCaP_Luminespib_2.xml b/config/PhysiCell_settings_LNCaP_Luminespib_2.xml index c1e7a66..4a11b4a 100644 --- a/config/PhysiCell_settings_LNCaP_Luminespib_2.xml +++ b/config/PhysiCell_settings_LNCaP_Luminespib_2.xml @@ -143,10 +143,14 @@ 0.0 - + + 0 + 86400 + + 0.05 0 From a8fc95917114bbd1886a482c2be2cc8e81ee0199 Mon Sep 17 00:00:00 2001 From: Arnau Montagud Date: Tue, 2 Sep 2025 16:48:52 +0200 Subject: [PATCH 09/11] Update config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Vincent Noël --- .../PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml b/config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml index 28ff40e..54afa89 100644 --- a/config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml +++ b/config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml @@ -125,9 +125,12 @@ 5.31667e-05 - + + 516 + + 0.05 0 From 4c6f73fce06741d3e4e4ffd925ac6c088d1ebd4f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vincent=20No=C3=ABl?= Date: Fri, 5 Sep 2025 09:06:51 -0300 Subject: [PATCH 10/11] Update model.yml --- model.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/model.yml b/model.yml index 0f6bfc3..088ec1e 100644 --- a/model.yml +++ b/model.yml @@ -1,5 +1,5 @@ short_name: prostate -version: 2.0.0 +version: 1.0.0 binary: prostate config: - config/PhysiCell_settings_LNCaP_Luminespib_2.xml From 6c88f0da72ff0d782c8216e4c2bd13a887c58a45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vincent=20No=C3=ABl?= Date: Fri, 5 Sep 2025 09:07:27 -0300 Subject: [PATCH 11/11] Update model.yml --- model.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/model.yml b/model.yml index 088ec1e..37481dc 100644 --- a/model.yml +++ b/model.yml @@ -2,4 +2,7 @@ short_name: prostate version: 1.0.0 binary: prostate config: + - config/PhysiCell_settings_LNCaP.xml - config/PhysiCell_settings_LNCaP_Luminespib_2.xml + - config/PhysiCell_settings_LNCaP_Pictilisib_2.xml + - config/PhysiCell_settings_LNCaP_Luminespib_Pictilisib_2.xml