diff --git a/.github/workflows/build_binaries.yml b/.github/workflows/build_binaries.yml new file mode 100644 index 000000000..30e3c7ce4 --- /dev/null +++ b/.github/workflows/build_binaries.yml @@ -0,0 +1,259 @@ +name: Build binaries + +on: + push: + pull_request: + release: + types: [created] + +jobs: + + ubuntu: + strategy: + matrix: + projects: [ + {short_name: "physiboss-tutorial", project: "physiboss-tutorial", name: "PhysiBoSS tutorial", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "physiboss-tutorial-invasion", project: "physiboss-tutorial-invasion", name: "PhysiBoSS Cancer Invasion", binary: "invasion_model", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "physiboss-cell-lines", project: "physiboss-cell-lines-sample", name: "PhysiBoSS Cell Lines", binary: "PhysiBoSS_Cell_Lines", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "template_BM", project: "template_BM", name: "PhysiBoSS Template", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "template", project: "template", name: "PhysiCell Template", binary: "project", extra_run: ""}, + {short_name: "rules", project: "rules-sample", name: "PhysiCell Rules", binary: "project", extra_run: ""}, + {short_name: "physimess", project: "physimess-sample", name: "PhysiMeSS", binary: "project", extra_run: ""}, + {short_name: "interaction", project: "interaction-sample", name: "PhysiCell Interaction", binary: "interaction_demo", extra_run: ""}, + ] + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + + - name: Build ${{ matrix.projects.name }} + run: | + make ${{ matrix.projects.project }} + make clean + ${{ matrix.projects.extra_run }} + make static STATIC_OPENMP=/usr/lib/gcc/x86_64-linux-gnu/11/libgomp.a + + - name: Checking binary for ${{ matrix.projects.name }} + run: | + ldd ${{ matrix.projects.binary }} + + - name: Build ${{ matrix.projects.name }} project archive + run: | + rm -fr config/PhysiCell_settings-backup.xml + tar -zcvf ${{ matrix.projects.short_name }}-linux.tar.gz ${{ matrix.projects.binary }} Makefile main.cpp config/ custom_modules/ + + - uses: actions/upload-release-asset@v1 + if: github.event_name == 'release' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_name: ${{ matrix.projects.short_name }}-linux.tar.gz + asset_path: ${{ github.workspace }}/${{ matrix.projects.short_name }}-linux.tar.gz + asset_content_type: application/gzip + + + windows: + strategy: + matrix: + projects: [ + {short_name: "physiboss-tutorial", project: "physiboss-tutorial", name: "PhysiBoSS tutorial", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "physiboss-tutorial-invasion", project: "physiboss-tutorial-invasion", name: "PhysiBoSS Cancer Invasion", binary: "invasion_model", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "physiboss-cell-lines", project: "physiboss-cell-lines-sample", name: "PhysiBoSS Cell Lines", binary: "PhysiBoSS_Cell_Lines", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "template_BM", project: "template_BM", name: "PhysiBoSS Template", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "template", project: "template", name: "PhysiCell Template", binary: "project", extra_run: ""}, + {short_name: "rules", project: "rules-sample", name: "PhysiCell Rules", binary: "project", extra_run: ""}, + {short_name: "physimess", project: "physimess-sample", name: "PhysiMeSS", binary: "project", extra_run: ""}, + {short_name: "interaction", project: "interaction-sample", name: "PhysiCell Interaction", binary: "interaction_demo", extra_run: ""}, + ] + + runs-on: windows-latest + + defaults: + run: + shell: msys2 {0} + + steps: + - uses: actions/checkout@v4 + + - uses: msys2/setup-msys2@v2 + with: + update: true + install: mingw-w64-x86_64-binutils mingw-w64-x86_64-gcc mingw-w64-x86_64-headers-git mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-libwinpthread-git mingw-w64-x86_64-lapack mingw-w64-x86_64-openblas mingw-w64-x86_64-libxml2 mingw-w64-x86_64-bzip2 mingw-w64-x86_64-python mingw-w64-x86_64-python-zstandard mingw-w64-x86_64-python-cffi make bison flex mingw-w64-x86_64-ca-certificates + + - name: Build ${{ matrix.projects.name }} project + run: | + make ${{ matrix.projects.project }} + make clean + python beta/setup_windows_dep.py + ${{ matrix.projects.extra_run }} + make static + + - name: Checking binary for ${{ matrix.projects.name }} + run: | + ldd .\\${{ matrix.projects.binary }}.exe + + - name: Build ${{ matrix.projects.name }} project archive + run: | + rm -fr config/PhysiCell_settings-backup.xml + tar -zcvf ${{ matrix.projects.short_name }}-win.tar.gz ${{ matrix.projects.binary }}.exe *.dll Makefile main.cpp config/ custom_modules/ + + - uses: actions/upload-release-asset@v1 + if: github.event_name == 'release' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_name: ${{ matrix.projects.short_name }}-win.tar.gz + asset_path: ${{ github.workspace }}\${{ matrix.projects.short_name }}-win.tar.gz + asset_content_type: application/gzip + + + macos_step0a: + strategy: + matrix: + projects: [ + {short_name: "physiboss-tutorial", project: "physiboss-tutorial", name: "PhysiBoSS tutorial", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "physiboss-tutorial-invasion", project: "physiboss-tutorial-invasion", name: "PhysiBoSS Cancer Invasion", binary: "invasion_model", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "physiboss-cell-lines", project: "physiboss-cell-lines-sample", name: "PhysiBoSS Cell Lines", binary: "PhysiBoSS_Cell_Lines", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "template_BM", project: "template_BM", name: "PhysiBoSS Template", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "template", project: "template", name: "PhysiCell Template", binary: "project", extra_run: ""}, + {short_name: "rules", project: "rules-sample", name: "PhysiCell Rules", binary: "project", extra_run: ""}, + {short_name: "physimess", project: "physimess-sample", name: "PhysiMeSS", binary: "project", extra_run: ""}, + {short_name: "interaction", project: "interaction-sample", name: "PhysiCell Interaction", binary: "interaction_demo", extra_run: ""}, + ] + + runs-on: macos-12 + + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run : brew install gcc@13 + + - name: Build ${{ matrix.projects.name }} project + run: | + export MACOSX_DEPLOYMENT_TARGET=12 + make ${{ matrix.projects.project }} + make clean + ${{ matrix.projects.extra_run }} + make PHYSICELL_CPP=g++-13 static + cp ${{ matrix.projects.binary }} ${{ matrix.projects.binary }}_macos12 + + - name: Caching produced project binary + uses: actions/cache@v4 + with: + path: | + ${{ github.workspace }}/${{ matrix.projects.binary }}_macos12 + key: ${{ runner.os }}-macos12-${{ github.run_id }} + + - name: Look at the generated binary + run: | + otool -L ${{ matrix.projects.binary }} + otool -l ${{ matrix.projects.binary }} + lipo -archs ${{ matrix.projects.binary }} + + macos_step0b: + strategy: + matrix: + projects: [ + {short_name: "physiboss-tutorial", project: "physiboss-tutorial", name: "PhysiBoSS tutorial", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "physiboss-tutorial-invasion", project: "physiboss-tutorial-invasion", name: "PhysiBoSS Cancer Invasion", binary: "invasion_model", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "physiboss-cell-lines", project: "physiboss-cell-lines-sample", name: "PhysiBoSS Cell Lines", binary: "PhysiBoSS_Cell_Lines", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "template_BM", project: "template_BM", name: "PhysiBoSS Template", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "template", project: "template", name: "PhysiCell Template", binary: "project", extra_run: ""}, + {short_name: "rules", project: "rules-sample", name: "PhysiCell Rules", binary: "project", extra_run: ""}, + {short_name: "physimess", project: "physimess-sample", name: "PhysiMeSS", binary: "project", extra_run: ""}, + {short_name: "interaction", project: "interaction-sample", name: "PhysiCell Interaction", binary: "interaction_demo", extra_run: ""}, + ] + + runs-on: macos-14 + + steps: + - uses: actions/checkout@v4 + + - name: Install dependencies + run : brew install gcc@13 + + - name: Build ${{ matrix.projects.name }} project + run: | + export MACOSX_DEPLOYMENT_TARGET=12 + make ${{ matrix.projects.project }} + make clean + ${{ matrix.projects.extra_run }} + make PHYSICELL_CPP=g++-13 static + cp ${{ matrix.projects.binary }} ${{ matrix.projects.binary }}_macosm1 + + - name: Caching produced project binary + uses: actions/cache@v4 + with: + path: | + ${{ github.workspace }}/${{ matrix.projects.binary }}_macosm1 + key: ${{ runner.os }}-macosm1-${{ github.run_id }} + + - name: Look at the generated binary + run: | + otool -L ${{ matrix.projects.binary }} + otool -l ${{ matrix.projects.binary }} + lipo -archs ${{ matrix.projects.binary }} + + macos_step1: + strategy: + matrix: + projects: [ + {short_name: "physiboss-tutorial", project: "physiboss-tutorial", name: "PhysiBoSS tutorial", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "physiboss-tutorial-invasion", project: "physiboss-tutorial-invasion", name: "PhysiBoSS Cancer Invasion", binary: "invasion_model", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "physiboss-cell-lines", project: "physiboss-cell-lines-sample", name: "PhysiBoSS Cell Lines", binary: "PhysiBoSS_Cell_Lines", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "template_BM", project: "template_BM", name: "PhysiBoSS Template", binary: "project", extra_run: "make Compile_MaBoSS PHYSICELL_CPP=g++-11"}, + {short_name: "template", project: "template", name: "PhysiCell Template", binary: "project", extra_run: ""}, + {short_name: "rules", project: "rules-sample", name: "PhysiCell Rules", binary: "project", extra_run: ""}, + {short_name: "physimess", project: "physimess-sample", name: "PhysiMeSS", binary: "project", extra_run: ""}, + {short_name: "interaction", project: "interaction-sample", name: "PhysiCell Interaction", binary: "interaction_demo", extra_run: ""}, + ] + + runs-on: macos-12 + needs: [macos_step0a, macos_step0b] + + steps: + - uses: actions/checkout@v4 + + - name: Caching produced project binary + uses: actions/cache@v4 + with: + path: | + ${{ github.workspace }}/${{ matrix.projects.binary }}_macosm1 + key: ${{ runner.os }}-macosm1-${{ github.run_id }} + + - name: Caching produced project binary + uses: actions/cache@v4 + with: + path: | + ${{ github.workspace }}/${{ matrix.projects.binary }}_macos12 + key: ${{ runner.os }}-macos12-${{ github.run_id }} + + - name: Creating universal binary + run: | + lipo -create -output ${{ matrix.projects.binary }} ${{ matrix.projects.binary }}_macos12 ${{ matrix.projects.binary }}_macosm1 + + - name: Checking universal binary + run: | + lipo -archs ${{ matrix.projects.binary }} + otool -l ${{ matrix.projects.binary }} + otool -L ${{ matrix.projects.binary }} + + - name: Build project archive + run: | + make ${{ matrix.projects.project }} + rm -fr config/PhysiCell_settings-backup.xml + tar -zcvf ${{ matrix.projects.short_name }}-macos.tar.gz ${{ matrix.projects.binary }} Makefile main.cpp config/ custom_modules/ + + - uses: actions/upload-release-asset@v1 + if: github.event_name == 'release' + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ github.event.release.upload_url }} + asset_name: ${{ matrix.projects.short_name }}-macos.tar.gz + asset_path: ${{ github.workspace }}/${{ matrix.projects.short_name }}-macos.tar.gz + asset_content_type: application/gzip \ No newline at end of file diff --git a/.github/workflows/test-macosx.yml b/.github/workflows/test-macosx.yml deleted file mode 100644 index f1e7581c1..000000000 --- a/.github/workflows/test-macosx.yml +++ /dev/null @@ -1,69 +0,0 @@ -name: Tests MacOSX - -on: - push: - pull_request: - -jobs: - build_virus_macrophage: - - runs-on: macos-11 - - steps: - - uses: actions/checkout@v2 - - - name: Install dependencies - run : brew install gcc@10 - - - name: Build Virus Macrophage project - run: | - make virus-macrophage-sample - make PHYSICELL_CPP=g++-10 - - - name: Run Virus Macrophage cell lines project - run: | - ./virus-sample - - - build_physiboss_cell_lines: - - runs-on: macos-11 - - steps: - - uses: actions/checkout@v2 - - - name: Install dependencies - run : brew install gcc@11 - - - name: Build PhysiBoSS cell lines project - run: | - make physiboss-cell-lines-sample - make clean - make PHYSICELL_CPP=g++-11 - - - name: Run PhysiBoSS cell lines project - run: | - ./PhysiBoSS_Cell_Lines - - build_physimess: - - runs-on: macos-11 - - steps: - - uses: actions/checkout@v2 - - - name: Install dependencies - run : brew install gcc@11 - - - name: Build PhysiMeSS project - run: | - make physimess-sample - make clean - make PHYSICELL_CPP=g++-11 - - - name: Run PhysiMeSS project - run: | - ./project - ./project config/Fibre_Initialisation/mymodel_initialisation.xml - ./project config/Cell_Fibre_Mechanics/mymodel_rotating.xml - \ No newline at end of file diff --git a/.github/workflows/test-ubuntu.yml b/.github/workflows/test-ubuntu.yml deleted file mode 100644 index a15764a15..000000000 --- a/.github/workflows/test-ubuntu.yml +++ /dev/null @@ -1,50 +0,0 @@ -name: Tests Ubuntu - -on: - push: - pull_request: - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v2 - - - name: Install dependencies - run: sudo apt-get install flex bison - - - name: Build Virus Macrophage project - run: | - make virus-macrophage-sample - make - - - name: Run Virus Macrophage cell lines project - run: | - ./virus-sample - - - name: Build PhysiBoSS cell lines project - run: | - make reset - make physiboss-cell-lines-sample - make clean - make - - - name: Run PhysiBoSS cell lines project - run: | - ./PhysiBoSS_Cell_Lines - - - name: Build PhysiMeSS project - run: | - make reset - make physimess-sample - make clean - make - - - name: Run PhysiMeSS project - run: | - ./project - ./project config/Fibre_Initialisation/mymodel_initialisation.xml - ./project config/Cell_Fibre_Mechanics/mymodel_rotating.xml - \ No newline at end of file diff --git a/.github/workflows/test-windows.yml b/.github/workflows/test-windows.yml deleted file mode 100644 index 366542847..000000000 --- a/.github/workflows/test-windows.yml +++ /dev/null @@ -1,56 +0,0 @@ -name: Tests Windows - -on: - push: - pull_request: - -jobs: - build: - - runs-on: windows-latest - - defaults: - run: - shell: msys2 {0} - - steps: - - uses: actions/checkout@v2 - - - uses: msys2/setup-msys2@v2 - with: - update: true - install: base-devel flex bison gcc make diffutils mingw-w64-x86_64-toolchain mingw-w64-x86_64-ca-certificates - - - name: Build Virus Macrophage project - run: | - make virus-macrophage-sample - make - - - name: Run Virus Macrophage cell lines project - run: | - .\\virus-sample.exe - - - name: Build PhysiBoSS cell lines project - run: | - make reset - make physiboss-cell-lines-sample - make clean - make - - - name: Run PhysiBoSS cell lines project - run: | - .\\PhysiBoSS_Cell_Lines.exe - - - name: Build PhysiMeSS project - run: | - make reset - make physimess-sample - make clean - make - - - name: Run PhysiMeSS project - run: | - .\\project - .\\project config\\Fibre_Initialisation\\mymodel_initialisation.xml - .\\project config\\Cell_Fibre_Mechanics\\mymodel_rotating.xml - \ No newline at end of file diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 000000000..eed0d1f71 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,65 @@ +name: Tests + +on: + push: + pull_request: + workflow_dispatch: + +jobs: + + tests: + strategy: + fail-fast: false + matrix: + os: [ + {name: "Ubuntu", os: "ubuntu-latest", shell: "bash", compiler: "g++"}, + {name: "MacOS 12", os: "macos-12", shell: "bash", compiler: "g++-12"}, + {name: "MacOS 14 (M1)", os: "macos-14", shell: "bash", compiler: "g++-13"}, + {name: "Windows", os: "windows-latest", shell: "msys2", compiler: "g++"}, + ] + projects: [ + {project: "template", name: "PhysiCell Template", binary: "project", max_time: 120, config: "config/PhysiCell_settings.xml", output_folder: "output"}, + {project: "template_BM", name: "PhysiBoSS Template", binary: "project", max_time: 120, config: "config/PhysiCell_settings.xml", output_folder: "output"}, + {project: "physiboss-cell-lines-sample", name: "PhysiBoSS Cell Lines", binary: "PhysiBoSS_Cell_Lines", max_time: 120, config: "config/PhysiCell_settings.xml", output_folder: "output"}, + {project: "physimess-sample", name: "PhysiMeSS Sample", binary: "project", config: "config/Fibre_Degradation/mymodel_matrix_degradation.xml", max_time: 120, output_folder: ""}, + {project: "physiboss-tutorial", name: "PhysiBoSS Tutorial", binary: "project", config: "config/cell_cycle/PhysiCell_settings.xml", max_time: 300, output_folder: "output"}, + {project: "worm-sample", name: "PhysiCell worm", binary: "worm", config: "config/PhysiCell_settings.xml", max_time: 120, output_folder: "output"}, + {project: "virus-macrophage-sample", name: "Virus Macrophage", binary: "virus-sample", config: "config/PhysiCell_settings.xml", max_time: 120, output_folder: "output"}, + {project: "mechano-sample", name: "PhysiCell Mechano", binary: "project", config: "config/PhysiCell_settings.xml", max_time: 120, output_folder: "output"}, + {project: "cancer-biorobots-sample", name: "PhysiCell Cancer Biorobots", binary: "cancer_biorobots", config: "config/PhysiCell_settings.xml", max_time: 120, output_folder: ""}, + {project: "biorobots-sample", name: "PhysiCell Biorobots", binary: "biorobots", config: "config/PhysiCell_settings.xml", max_time: 120, output_folder: ""}, + {project: "celltypes3-sample", name: "PhysiCell Celltypes3", binary: "celltypes3", config: "config/PhysiCell_settings.xml", max_time: 120, output_folder: ""}, + {project: "custom-division-sample", name: "PhysiCell custom division", binary: "project", config: "config/PhysiCell_settings.xml", max_time: 120, output_folder: ""}, + {project: "interaction-sample", name: "PhysiCell interactions", binary: "interaction_demo", config: "config/PhysiCell_settings.xml", max_time: 120, output_folder: ""}, + {project: "pred-prey-farmer", name: "PhysiCell prey predator", binary: "pred_prey", config: "config/PhysiCell_settings.xml", max_time: 120, output_folder: ""}, + ] + + name: Testing ${{ matrix.projects.name }} on ${{ matrix.os.name }} + + runs-on: ${{ matrix.os.os }} + + defaults: + run: + shell: ${{ matrix.os.shell }} {0} + + steps: + - uses: actions/checkout@v4 + + - if: matrix.os.name == 'Windows' + uses: msys2/setup-msys2@v2 + with: + update: true + install: mingw-w64-x86_64-binutils mingw-w64-x86_64-gcc mingw-w64-x86_64-headers-git mingw-w64-x86_64-gcc-libs mingw-w64-x86_64-libwinpthread-git mingw-w64-x86_64-lapack mingw-w64-x86_64-openblas mingw-w64-x86_64-libxml2 mingw-w64-x86_64-bzip2 mingw-w64-x86_64-python mingw-w64-x86_64-python-zstandard mingw-w64-x86_64-python-cffi make bison flex mingw-w64-x86_64-ca-certificates mingw-w64-x86_64-diffutils + + - name: Build ${{ matrix.projects.name }} project + run: | + make data-cleanup && make ${{ matrix.projects.project }} && make PHYSICELL_CPP=${{ matrix.os.compiler }} + + - name: Run ${{ matrix.projects.name }} project + run: | + python beta/test_run_sample.py ${{ matrix.projects.binary }} ${{ matrix.projects.config }} ${{ matrix.projects.max_time }} + + - name: Check ${{ matrix.projects.name }} project simulation results + if: matrix.projects.output_folder != '' + run: | + python beta/test_diff_svg.py ${{ matrix.projects.output_folder }} tests/cases/output_${{ matrix.projects.project }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 0e6c23e7c..c6e78d6e8 100644 --- a/.gitignore +++ b/.gitignore @@ -1,30 +1,21 @@ -*.o -*.exe +*.asv +._.DS_Store .DS_Store -Makefile-backup +*.exe +*.o +addons/libRoadrunner/roadrunner/ +addons/libRoadrunner/roadrunner-win64-vs14-cp35m.zip +addons/PhysiBoSS/MaBoSS/ +addons/PhysiBoSS/libMaBoSS-*.tar.gz +biorobots +cancer_immune_3D config/PhysiCell_settings-backup.xml -documentation/.DS_Store -unit_tests/.DS_Store -sample_projects/.DS_Store -sample_projects/biorobots/.DS_Store -sample_projects/cancer_biorobots/.DS_Store -sample_projects/cancer_immune/.DS_Store -sample_projects/celltypes3/.DS_Store -sample_projects/heterogeneity/.DS_Store -sample_projects/template/.DS_Store -pmb_debug.log heterogeneity -**/.DS_Store -**/._.DS_Store -cancer_immune_3D -biorobots -project -initial.svg initial.svg interaction_demo -addons/libRoadrunner/roadrunner/ -addons/libRoadrunner/roadrunner-win64-vs14-cp35m.zip -addons/PhysiBoSS/MaBoSS-env-2.0/ -addons/PhysiBoSS/libMaBoSS-*.tar.gz +Makefile-backup +pmb_debug.log +project +studio_debug.log user_projects/* -!user_projects/empty.txt \ No newline at end of file +!user_projects/empty.txt diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 95d0bac31..000000000 --- a/.travis.yml +++ /dev/null @@ -1,33 +0,0 @@ -# Enable C++ support -language: cpp - -os: linux - -# Compiler selection -compiler: - - g++ - -# Build steps -script: - - make biorobots-sample - - make reset - - make cancer-biorobots-sample - - make reset - - make cancer-immune-sample - - make reset - - make celltypes3-sample - - make reset - - make heterogeneity-sample - - make reset - - make pred-prey-farmer - - make reset - - make virus-macrophage-sample - - make reset - - make worm-sample - -notifications: - email: - recipients: - - randy.heiland@gmail.com - on_success: always # default: change (always, never) - on_failure: always # default: always diff --git a/BioFVM/BioFVM_matlab.cpp b/BioFVM/BioFVM_matlab.cpp index ed056f45f..f64f72936 100644 --- a/BioFVM/BioFVM_matlab.cpp +++ b/BioFVM/BioFVM_matlab.cpp @@ -108,7 +108,8 @@ std::vector< std::vector > read_matlab( std::string filename ) type_data_format > 5 || // unknown format type_matrix_type != 0 ) // want full matrices, not sparse { - std::cout << "Error reading file " << filename << ": I can't read this format yet!" << std::endl; + std::cout << "Error reading file " << filename << ": I can't read this format yet!" << std::endl + << "\t Make sure you save the .mat file in '-v4'" << std::endl; return output; } diff --git a/BioFVM/BioFVM_microenvironment.cpp b/BioFVM/BioFVM_microenvironment.cpp index 1c330870f..47e3d5621 100644 --- a/BioFVM/BioFVM_microenvironment.cpp +++ b/BioFVM/BioFVM_microenvironment.cpp @@ -475,146 +475,24 @@ void Microenvironment::add_density( void ) { // fix in PhysiCell preview November 2017 // default_microenvironment_options.use_oxygen_as_first_field = false; - - // update 1, 0 - zero.push_back( 0.0 ); - one.push_back( 1.0 ); - - // update units - density_names.push_back( "unnamed" ); - density_units.push_back( "none" ); - - // update coefficients - diffusion_coefficients.push_back( 0.0 ); - decay_rates.push_back( 0.0 ); - - // update sources and such - for( unsigned int i=0; i < temporary_density_vectors1.size() ; i++ ) - { - temporary_density_vectors1[i].push_back( 0.0 ); - temporary_density_vectors2[i].push_back( 0.0 ); - } - - // resize the gradient data structures - for( unsigned int k=0 ; k < mesh.voxels.size() ; k++ ) - { - gradient_vectors[k].resize( number_of_densities() ); - for( unsigned int i=0 ; i < number_of_densities() ; i++ ) - { - (gradient_vectors[k])[i].resize( 3, 0.0 ); - } - } - - gradient_vector_computed.resize( mesh.voxels.size() , false ); - - one_half = one; - one_half *= 0.5; - - one_third = one; - one_third /= 3.0; - - dirichlet_value_vectors.assign( mesh.voxels.size(), one ); - dirichlet_activation_vector.push_back( true ); - dirichlet_activation_vectors.assign( mesh.voxels.size(), dirichlet_activation_vector ); - - // Fixes in PhysiCell preview November 2017 - default_microenvironment_options.Dirichlet_condition_vector.push_back( 1.0 ); // = one; - default_microenvironment_options.Dirichlet_activation_vector.push_back( false ); - - default_microenvironment_options.initial_condition_vector.push_back( 1.0 ); - - default_microenvironment_options.Dirichlet_all.push_back( true ); -// default_microenvironment_options.Dirichlet_interior.push_back( true ); - default_microenvironment_options.Dirichlet_xmin.push_back( false ); - default_microenvironment_options.Dirichlet_xmax.push_back( false ); - default_microenvironment_options.Dirichlet_ymin.push_back( false ); - default_microenvironment_options.Dirichlet_ymax.push_back( false ); - default_microenvironment_options.Dirichlet_zmin.push_back( false ); - default_microenvironment_options.Dirichlet_zmax.push_back( false ); - - default_microenvironment_options.Dirichlet_xmin_values.push_back( 1.0 ); - default_microenvironment_options.Dirichlet_xmax_values.push_back( 1.0 ); - default_microenvironment_options.Dirichlet_ymin_values.push_back( 1.0 ); - default_microenvironment_options.Dirichlet_ymax_values.push_back( 1.0 ); - default_microenvironment_options.Dirichlet_zmin_values.push_back( 1.0 ); - default_microenvironment_options.Dirichlet_zmax_values.push_back( 1.0 ); - - return; + return add_density( "unnamed" , "none" ); } void Microenvironment::add_density( std::string name , std::string units ) { // fix in PhysiCell preview November 2017 // default_microenvironment_options.use_oxygen_as_first_field = false; - - // update 1, 0 - zero.push_back( 0.0 ); - one.push_back( 1.0 ); - - // update units - density_names.push_back( name ); - density_units.push_back( units ); - - // update coefficients - diffusion_coefficients.push_back( 0.0 ); - decay_rates.push_back( 0.0 ); - - // update sources and such - for( unsigned int i=0; i < temporary_density_vectors1.size() ; i++ ) - { - temporary_density_vectors1[i].push_back( 0.0 ); - temporary_density_vectors2[i].push_back( 0.0 ); - } - - // resize the gradient data structures, - for( unsigned int k=0 ; k < mesh.voxels.size() ; k++ ) - { - gradient_vectors[k].resize( number_of_densities() ); - for( unsigned int i=0 ; i < number_of_densities() ; i++ ) - { - (gradient_vectors[k])[i].resize( 3, 0.0 ); - } - } - gradient_vector_computed.resize( mesh.voxels.size() , false ); - - one_half = one; - one_half *= 0.5; - - one_third = one; - one_third /= 3.0; - - dirichlet_value_vectors.assign( mesh.voxels.size(), one ); - dirichlet_activation_vector.push_back( false ); - dirichlet_activation_vectors.assign( mesh.voxels.size(), dirichlet_activation_vector ); - - // fix in PhysiCell preview November 2017 - default_microenvironment_options.Dirichlet_condition_vector.push_back( 1.0 ); // = one; - default_microenvironment_options.Dirichlet_activation_vector.push_back( false ); // assign( number_of_densities(), false ); - - default_microenvironment_options.Dirichlet_all.push_back( false ); - default_microenvironment_options.Dirichlet_xmin.push_back( false ); - default_microenvironment_options.Dirichlet_xmax.push_back( false ); - default_microenvironment_options.Dirichlet_ymin.push_back( false ); - default_microenvironment_options.Dirichlet_ymax.push_back( false ); - default_microenvironment_options.Dirichlet_zmin.push_back( false ); - default_microenvironment_options.Dirichlet_zmax.push_back( false ); - - default_microenvironment_options.Dirichlet_xmin_values.push_back( 1.0 ); - default_microenvironment_options.Dirichlet_xmax_values.push_back( 1.0 ); - default_microenvironment_options.Dirichlet_ymin_values.push_back( 1.0 ); - default_microenvironment_options.Dirichlet_ymax_values.push_back( 1.0 ); - default_microenvironment_options.Dirichlet_zmin_values.push_back( 1.0 ); - default_microenvironment_options.Dirichlet_zmax_values.push_back( 1.0 ); - - default_microenvironment_options.initial_condition_vector.push_back( 1.0 ); - - return; + return add_density( name , units , 0.0 , 0.0 ); } void Microenvironment::add_density( std::string name , std::string units, double diffusion_constant, double decay_rate ) { // fix in PhysiCell preview November 2017 - // default_microenvironment_options.use_oxygen_as_first_field = false; + if ( find_density_index( name ) != -1 ) + { + std::cout << "ERROR: density named " << name << " already exists. You probably want your substrates all have unique names!" << std::endl; + exit(-1); + } // update 1, 0 zero.push_back( 0.0 ); @@ -1319,9 +1197,29 @@ void initialize_microenvironment( void ) default_microenvironment_options.initial_condition_vector = default_microenvironment_options.Dirichlet_condition_vector; } - // set the initial condition - for( unsigned int n=0; n < microenvironment.number_of_voxels() ; n++ ) - { microenvironment.density_vector(n) = default_microenvironment_options.initial_condition_vector; } + // set the initial condition + + if (default_microenvironment_options.initial_condition_from_file_enabled) + { + if (default_microenvironment_options.initial_condition_file_type=="matlab") + { + load_initial_conditions_from_matlab(default_microenvironment_options.initial_condition_file); + } + else if (default_microenvironment_options.initial_condition_file_type=="csv" || default_microenvironment_options.initial_condition_file_type=="CSV") + { + load_initial_conditions_from_csv(default_microenvironment_options.initial_condition_file); + } + else // eventually can add other file types + { + std::cout << "ERROR : Load BioFVM initial conditions from " << default_microenvironment_options.initial_condition_file_type << " not yet supported." << std::endl; + exit(-1); + } + } + else // do what was done before + { + for (unsigned int n = 0; n < microenvironment.number_of_voxels(); n++) + { microenvironment.density_vector(n) = default_microenvironment_options.initial_condition_vector; } + } // now, figure out which sides have BCs (for at least one substrate): @@ -1531,14 +1429,188 @@ void initialize_microenvironment( void ) // April 2023: no longer necessary after flipping our approach and doing an "additive" instead of "subtractive" DCs handling. I.e., we assume DC activation is false by default; make true on-demand. - // // set the Dirichlet condition activation vector to match the microenvironment options + // // set the Dirichlet condition activation vector to match the microenvironment options // for( int i=0 ; i < default_microenvironment_options.Dirichlet_activation_vector.size(); i++ ) // { - // microenvironment.set_substrate_dirichlet_activation( i , default_microenvironment_options.Dirichlet_activation_vector[i] ); + // microenvironment.set_substrate_dirichlet_activation( i , default_microenvironment_options.Dirichlet_activation_vector[i] ); // } + + microenvironment.display_information(std::cout); + return; +} + +void load_initial_conditions_from_matlab(std::string filename) +{ + // The .mat file needs to contain exactly one matrix where each row corresponds to a single voxel. + // Each row is a vector of values as follows: [x coord, y coord, z coord, substrate id 0 value, substrate id 1 value, ...] + // Thus, your matrix should be of size #voxels x (3 + #densities) (rows x columns) + // M will be read in such that each element of M is one of these rows + std::vector< std::vector > M = read_matlab( filename ); + int num_mat_voxels = M.size(); + int num_mat_features = M[1].size(); + if (num_mat_voxels != microenvironment.number_of_voxels()) + { + std::cout << "ERROR : Wrong number of voxels supplied in the .mat file specifying BioFVM initial conditions." << std::endl + << "\tExpected: " << microenvironment.number_of_voxels() << std::endl + << "\tFound: " << num_mat_voxels << std::endl + << "\tRemember, save your matrix as a #voxels x (3 + #densities) matrix." << std::endl; + exit(-1); + } + if (num_mat_features != (microenvironment.number_of_densities() + 3)) + { + std::cout << "ERROR : Wrong number of density values supplied in the .mat file specifying BioFVM initial conditions." << std::endl + << "\tExpected: " << microenvironment.number_of_densities() << std::endl + << "\tFound: " << num_mat_features - 3 << std::endl + << "\tRemember, save your matrix as a #voxels x (3 + #densities) matrix." << std::endl; + exit(-1); + } + std::vector voxel_set = {}; // set to check that no voxel value is set twice + int voxel_ind; + std::vector position; + for (unsigned int i = 0; i < num_mat_voxels; i++) + { + position = {M[i][0], M[i][1], M[i][2]}; + voxel_ind = microenvironment.mesh.nearest_voxel_index(position); + for (unsigned int ci = 0; ci < microenvironment.number_of_densities(); ci++) + { + microenvironment.density_vector(voxel_ind)[ci] = M[i][ci+3]; + } + for (unsigned int j = 0; j < i; j++) + { + if (voxel_ind==voxel_set[j]) + { + std::cout << "ERROR : the matlab-supplied initial conditions for BioFVM repeat the same voxel. Fix the .mat file and try again." << std::endl + << "\tPosition that was repeated: " << position << std::endl; + exit(-1); + } + } + voxel_set.push_back(voxel_ind); + } + + return; +} + +void load_initial_conditions_from_csv(std::string filename) +{ + // The .csv file needs to contain one row per voxel. + // Each row is a vector of values as follows: [x coord, y coord, z coord, substrate id 0 value, substrate id 1 value, ...] + // Thus, your table should be of size #voxels x (3 + #densities) (rows x columns) + // Do not include a header row. + + // open file + std::ifstream file( filename, std::ios::in ); + if( !file ) + { + std::cout << "ERROR: " << filename << " not found during cell loading. Quitting." << std::endl; + exit(-1); + } + + // determine if header row exists + std::string line; + std::getline( file , line ); + char c = line.c_str()[0]; + std::vector substrate_indices; + bool header_provided = false; + if( c == 'X' || c == 'x' ) + { + // do not support this with a header yet + if ((line.c_str()[2] != 'Y' && line.c_str()[2] != 'y') || (line.c_str()[4] != 'Z' && line.c_str()[4] != 'z')) + { + std::cout << "ERROR: Header row starts with x but then not y,z? What is this? Exiting now." << std::endl; + file.close(); + exit(-1); + } + std::vector< std::string> column_names; // this will include x,y,z (so make sure to skip those below) + std::stringstream stream(line); + std::string field; + + while (std::getline(stream, field, ',')) + { + column_names.push_back(field); + } + for (int i = 3; i voxel_set = {}; // set to check that no voxel value is set twice + + while (std::getline(file, line)) + { + get_row_from_substrate_initial_condition_csv(voxel_set, line, substrate_indices, header_provided); + } + + if (voxel_set.size() != microenvironment.number_of_voxels()) + { + std::cout << "ERROR : Wrong number of voxels supplied in the .csv file specifying BioFVM initial conditions." << std::endl + << "\tExpected: " << microenvironment.number_of_voxels() << std::endl + << "\tFound: " << voxel_set.size() << std::endl + << "\tRemember, your table should have dimensions #voxels x (3 + #densities)." << std::endl; + exit(-1); + } + + file.close(); - microenvironment.display_information( std::cout ); return; } +void get_row_from_substrate_initial_condition_csv(std::vector &voxel_set, const std::string line, const std::vector substrate_indices, const bool header_provided) +{ + static bool warning_issued = false; + std::vector data; + csv_to_vector(line.c_str(), data); + + if (!(warning_issued) && !(header_provided) && (data.size() != (microenvironment.number_of_densities() + 3))) + { + std::cout << "WARNING: Wrong number of density values supplied in the .csv file specifying BioFVM initial conditions." << std::endl + << "\tExpected: " << microenvironment.number_of_voxels() << std::endl + << "\tFound: " << data.size() - 3 << std::endl + << "\tRemember, save your csv with columns as: x, y, z, substrate_0, substrate_1,...." << std::endl + << "\tThis could also be resolved by including a header row \"x,y,z,[substrate_i0,substrate_i1]\"" << std::endl; + warning_issued = true; + } + + std::vector position = {data[0], data[1], data[2]}; + int voxel_ind = microenvironment.mesh.nearest_voxel_index(position); + for (unsigned int ci = 0; ci < substrate_indices.size(); ci++) // column index, counting from the first substrate (or just the index of the vector substrate_indices) + { + microenvironment.density_vector(voxel_ind)[substrate_indices[ci]] = data[ci + 3]; + } + for (unsigned int j = 0; j < voxel_set.size(); j++) + { + if (voxel_ind == voxel_set[j]) + { + std::cout << "ERROR : the csv-supplied initial conditions for BioFVM repeat the same voxel. Fix the .csv file and try again." << std::endl + << "\tPosition that was repeated: " << position << std::endl; + exit(-1); + } + } + voxel_set.push_back(voxel_ind); +} }; diff --git a/BioFVM/BioFVM_microenvironment.h b/BioFVM/BioFVM_microenvironment.h index 4896b44ad..8b894e880 100644 --- a/BioFVM/BioFVM_microenvironment.h +++ b/BioFVM/BioFVM_microenvironment.h @@ -49,6 +49,7 @@ #ifndef __BioFVM_microenvironment_h__ #define __BioFVM_microenvironment_h__ +#include #include "BioFVM_mesh.h" #include "BioFVM_agent_container.h" #include "BioFVM_MultiCellDS.h" @@ -339,6 +340,10 @@ class Microenvironment_Options std::vector Dirichlet_zmax_values; std::vector initial_condition_vector; + + bool initial_condition_from_file_enabled; + std::string initial_condition_file_type; + std::string initial_condition_file; bool simulate_2D; std::vector X_range; @@ -359,6 +364,9 @@ extern Microenvironment microenvironment; void initialize_microenvironment( void ); +void load_initial_conditions_from_matlab( std::string filename ); +void load_initial_conditions_from_csv( std::string filename ); +void get_row_from_substrate_initial_condition_csv(std::vector &voxel_set, const std::string line, const std::vector substrate_indices, const bool header_provided); }; #endif diff --git a/CITATION.txt b/CITATION.txt index 4ff6d0820..00af47ec6 100644 --- a/CITATION.txt +++ b/CITATION.txt @@ -1,7 +1,7 @@ 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 1.13.1) [1]. +We implemented and solved the model using PhysiCell (Version 1.14.0) [1]. [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellu- @@ -11,7 +11,7 @@ We implemented and solved the model using PhysiCell (Version 1.13.1) [1]. Because PhysiCell extensively uses BioFVM, we suggest you also cite BioFVM as below: -We implemented and solved the model using PhysiCell (Version 1.13.1) [1], +We implemented and solved the model using PhysiCell (Version 1.14.0) [1], with BioFVM [2] to solve the transport equations. [1] A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, @@ -23,16 +23,36 @@ with BioFVM [2] to solve the transport equations. llelized diffusive transport solver for 3-D biological simulations, Bioinformatics 32(8): 1256-8, 2016. DOI: 10.1093/bioinformatics/btv730 -If you use PhysiBoSS, please cite: +If you use PhysiBoSS, please cite as below: - G. Letort, A. Montagud, G. Stoll, R. Heiland, E. Barillot, P. Macklin, +We implemented and solved the model using PhysiCell (Version 1.14.0) [1], +with PhysiBoSS[2,3] to simulate the intracellular mechanisms. + +[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] G. Letort, A. Montagud, G. Stoll, R. Heiland, E. Barillot, P. Macklin, A. Zinovyev, and L. Calzone. PhysiBoSS: a multi-scale agent based modelling framework integrating physical dimension and cell signalling. Bioinformatics 35(7):1188-96, 2019. DOI: 10.1093/bioinformatics/bty766. +[3] M. Ponce-de-Leon, A. Montagud, V. Noël, A. Meert, G. Pradas, E. Barillot, + L. Calzone, and A. Valencia. PhysiBoSS 2.0: a sustainable integration of + stochastic Boolean and agent-based modelling frameworks. NPJ Systems + Biology and Applications 9(1):54, 2023. + DOI: 10.1038/s41540-023-00314-4 + If you use libRoadrunner, please cite: Endre T. Somogyi, Jean-Marie Bouteiller, James A. Glazier, Matthias König, J. Kyle Medley, Maciej H. Swat, Herbert M. Sauro, libRoadRunner: a high performance SBML simulation and analysis library, Bioinformatics 31(20): 3315–21, 2015: DOI: 10.1093/bioinformatics/btv363 + +If you use PhysiMeSS, please cite: + + V. Noël, M. Ruscone, R. Shuttle-worth, and C.K. Macnamara. PhysiMeSS-- + A New PhysiCell Addon for Extracellular Matrix Modelling, bioRxiv [preprint] + 2023.10.27.564365, 2023. DOI: 10.1101/2023.10.27.564365. diff --git a/Makefile b/Makefile index 7302163a0..440b03cf0 100644 --- a/Makefile +++ b/Makefile @@ -73,19 +73,19 @@ name: list-projects: @echo "Sample projects: template biorobots-sample cancer-biorobots-sample cancer-immune-sample" @echo " celltypes3-sample heterogeneity-sample pred-prey-farmer virus-macrophage-sample" - @echo " worm-sample interaction-sample mechano-sample rules-sample physimess-sample" + @echo " worm-sample interaction-sample mechano-sample rules-sample physimess-sample custom-division-sample" @echo "" - @echo "Sample intracellular projects: ode-energy-sample physiboss-cell-lines-sample cancer-metabolism-sample" + @echo "Sample intracellular projects: template_BM ode-energy-sample physiboss-cell-lines-sample" + @echo " cancer-metabolism-sample physiboss-tutorial physiboss-tutorial-invasion" @echo "" template: - cp ./sample_projects/template/custom_modules/* ./custom_modules/ + cp -r ./sample_projects/template/custom_modules/* ./custom_modules/ touch main.cpp && cp main.cpp main-backup.cpp cp ./sample_projects/template/main.cpp ./main.cpp cp Makefile Makefile-backup cp ./sample_projects/template/Makefile . - cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml - cp ./sample_projects/template/config/* ./config/ + cp -r ./sample_projects/template/config/* ./config # sample projects @@ -197,6 +197,16 @@ physimess-sample: cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml cp -r ./sample_projects/physimess/config/* ./config/ + +custom-division-sample: + cp ./sample_projects/custom_division/custom_modules/* ./custom_modules/ + touch main.cpp && cp main.cpp main-backup.cpp + cp ./sample_projects/custom_division/main.cpp ./main.cpp + cp Makefile Makefile-backup + cp ./sample_projects/custom_division/Makefile . + cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml + cp ./sample_projects/custom_division/config/* ./config/ + # ---- intracellular projects ode-energy-sample: cp ./sample_projects_intracellular/ode/ode_energy/custom_modules/* ./custom_modules/ @@ -216,6 +226,24 @@ physiboss-cell-lines-sample: cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml cp ./sample_projects_intracellular/boolean/physiboss_cell_lines/config/* ./config/ +physiboss-tutorial: + cp ./sample_projects_intracellular/boolean/tutorial/custom_modules/* ./custom_modules/ + touch main.cpp && cp main.cpp main-backup.cpp + cp ./sample_projects_intracellular/boolean/tutorial/main.cpp ./main.cpp + cp Makefile Makefile-backup + cp ./sample_projects_intracellular/boolean/tutorial/Makefile . + cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml + cp -r ./sample_projects_intracellular/boolean/tutorial/config/* ./config/ + +physiboss-tutorial-invasion: + cp ./sample_projects_intracellular/boolean/cancer_invasion/custom_modules/* ./custom_modules/ + touch main.cpp && cp main.cpp main-backup.cpp + cp ./sample_projects_intracellular/boolean/cancer_invasion/main.cpp ./main.cpp + cp Makefile Makefile-backup + cp ./sample_projects_intracellular/boolean/cancer_invasion/Makefile . + cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml + cp -r ./sample_projects_intracellular/boolean/cancer_invasion/config/* ./config/ + ecoli-acetic-switch-sample: cp ./sample_projects_intracellular/fba/ecoli_acetic_switch/custom_modules/* ./custom_modules/ touch main.cpp && cp main.cpp main-backup.cpp @@ -234,6 +262,16 @@ cancer-metabolism-sample: cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml cp ./sample_projects_intracellular/fba/cancer_metabolism/config/* ./config/ +template_BM: + cp ./sample_projects_intracellular/boolean/template_BM/custom_modules/* ./custom_modules/ + touch main.cpp && cp main.cpp main-backup.cpp + cp ./sample_projects_intracellular/boolean/template_BM/main.cpp ./main.cpp + cp Makefile Makefile-backup + cp ./sample_projects_intracellular/boolean/template_BM/Makefile . + cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml + cp -r ./sample_projects_intracellular/boolean/template_BM/config/* ./config/ + mkdir ./scripts/ + cp ./sample_projects_intracellular/boolean/template_BM/scripts/* ./scripts/ # early examples for convergence testing @@ -360,7 +398,7 @@ PhysiCell_geometry.o: ./modules/PhysiCell_geometry.cpp reset: rm -f *.cpp PhysiCell_cell.o cp ./sample_projects/Makefile-default Makefile - rm -f ./custom_modules/* + rm -rf ./custom_modules/* touch ./custom_modules/empty.txt touch ALL_CITATIONS.txt touch ./core/PhysiCell_cell.cpp @@ -464,15 +502,15 @@ save: cp main.cpp ./user_projects/$(PROJ) cp Makefile ./user_projects/$(PROJ) cp VERSION.txt ./user_projects/$(PROJ) - cp ./config/* ./user_projects/$(PROJ)/config - cp ./custom_modules/* ./user_projects/$(PROJ)/custom_modules + cp -r ./config/* ./user_projects/$(PROJ)/config + cp -r ./custom_modules/* ./user_projects/$(PROJ)/custom_modules load: echo "Loading project from $(PROJ) ... " cp ./user_projects/$(PROJ)/main.cpp . cp ./user_projects/$(PROJ)/Makefile . - cp ./user_projects/$(PROJ)/config/* ./config/ - cp ./user_projects/$(PROJ)/custom_modules/* ./custom_modules/ + cp -r ./user_projects/$(PROJ)/config/* ./config/ + cp -r ./user_projects/$(PROJ)/custom_modules/* ./custom_modules/ pack: @echo " " diff --git a/README.md b/README.md index b56816e80..a126a6c89 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ # PhysiCell: an Open Source Physics-Based Cell Simulator for 3-D Multicellular Systems -**Versions:** 1.13.0 - -**Release dates:** 29 July 2023 - - * 1.13.0 : 29 July 2023 - * 1.13.1 : 6 August 2023 +**Versions:** 1.14.0 - + +**Release dates:** 15 September 2024 - +* 1.14.0 : 15 September 2024 ## Overview: PhysiCell is a flexible open source framework for building agent-based multicellular models in 3-D tissue environments. @@ -42,6 +42,7 @@ Visit http://MathCancer.org/blog for the latest tutorials and help. * mechano-sample * rules-sample * physimess-sample + * custom-division-sample **`make list-projects`** : list all available sample projects @@ -64,13 +65,13 @@ Visit http://MathCancer.org/blog for the latest tutorials and help. **`make upgrade`** : fetch the latest release of PhysiCell and overwrite the core library and sample projects. ### Key Links -**Homepage:** http://PhysiCell.MathCancer.org +**Homepage:** http://PhysiCell.org -**Downloads:** http://PhysiCell.sf.net +**Setup Guide:** https://github.com/physicell-training/ws2023/blob/main/agenda.md#set-up-physicell -**Support:** https://join.slack.com/t/physicellcomm-sf93727/shared_invite/zt-qj1av6yd-yVeer8VkQaNDjDz7fF00jA +**Downloads:** https://PhysiCell.sf.net AND https://github.com/MathCancer/PhysiCell/releases -**Quick Start:** Look at QuickStart.md in the documentation folder. +**Support:** https://join.slack.com/t/physicellcomm-sf93727/shared_invite/zt-qj1av6yd-yVeer8VkQaNDjDz7fF00jA **User Guide:** Look at UserGuide.pdf in the documentation folder. @@ -85,76 +86,101 @@ See changes.md for the full change log. * * * ## Release summary: -Version 1.13.x introduces PhysiMeSS (MicroEnvironment Structures Simulation) as a PhysiCell add-on created to model rod-shaped microenvironment elements such as the matrix fibres (e.g. collagen) of the ECM. These releases also introduce numerous bug fixes, particularly to handling of Dirichlet boundary conditions, while introducing numerous minor feature enhancements such as packing and unpacking user projects (to facilitate code sharing). - -### Version 1.13.1 (6 August 2023): -Version 1.13.1 primarily introduces bug fixes for smoother addon support, as well as new makefile rules to pack a user project for sharing (`make pack PROJ=name`) and to unpack a shared project (`make unpack PROJ=name`). These will create (pack) or expand (unpack) zipped projects in the `./user_projects` folder. To share, send the zipped file and encourage the recipient to store it in their own `./user_projects` folder. - -### Version 1.13.0 (29 July 2023): -Version 1.13.0 introduces PhysiMeSS (MicroEnvironment Structures Simulation) as a PhysiCell add-on created by Cicely Macnamara, Vincent Noël and collaborators, which allows the user to specify rod-shaped microenvironment elements such as the matrix fibres (e.g. collagen) of the ECM. This allows the PhysiCell user the ability to investigate fine-grained processes between cellular and fibrous ECM agents. We are providing an sample project together with this addon to demonstrate, via many examples, the possibilities of PhysiMeSS. For more information, consult the PhysiMeSS README available in [./addons/PhysiMeSS/README.md](./addons/PhysiMeSS/README.md). Version 1.13.0 also updates the bundled PhysiBoSS addon, introduces a variety of bug fixes (particularly in handling of Dirichlet boundary conditions), and improves SVG plots. - -We are grateful for immense contributions by Cicely Macnamara, Vincent Noël, Randy Heiland, Daniel Bergman, Marco Ruscone, Furkan Kurtoglu, and Elmar Bucher in this release. - -**NOTE 1:** MacOS users need to define a PHYSICELL_CPP environment variable to specify their OpenMP-enabled g++. See the [Quickstart](documentation/Quickstart.md) for details. - -**NOTE 2:** Windows users need to follow an updated (from v1.8) MinGW64 installation procedure. This will install an updated version of g++, plus libraries that are needed for some of the intracellular models. See the [Quickstart](documentation/Quickstart.md) for details. - -### Major new features and changes in the 1.13.z versions -#### 1.13.1 -+ None in this release -#### 1.13.0 -+ Introduced PhysiMeSS, a major addon for modeling fibers of the extracellular matrix. Major thanks to Cicely Macnamara, Vincent Noël, and team! +Version 1.14 upgrades the Cell Beheavior Hypothesis Grammar (to version 3), including refinements to cell phagocytosis, effector attack, and cell damage/integrity in response to community discussions and peer review. It also introduces numerous refinements to cell division, random seeds, and randomized parameter initialization, as well as upgrades to PhysiBoSS and PhysiMeSS and bug fixes. Other refinements are "under the hood," including new GitHub actions and improved automation of testing, as well as improvements to MultiCellDS output. + +### Version 1.14.0 (15 Sep 2024): +Version 1.14.0 Introduces Cell Behavior Hypothesis Grammar (CBHG) 3.0, enhancing the modeling of cellular behaviors with the addition of a new `Cell_Integrity` class and refined phagocytosis behaviors (now split into separate rates for apoptotic, necrotic, and other dead cells). The built-in "attack" model has been refined to include formation of a persistent synapse (with a spring adhesion) throughout the attack (which is tunable via the `attack_duration` parameter), and a clarified `attack_damage_rate` to denote the rate at which an attacker damages its target cell. The attacking cell also tracks how long it has attacked (may be useful for exhaustion modeling), whether it is or is not attacking, and the identity (cell pointer) of the cell it is attacking. + +The new `Cell_Integrity` class (within `Phenotype`) allows more control over cell damage. Attacking cells (see above) can increase damage, as well as a new generalized `damage_rate` that can (for example) be used to model damage from other sources such as cytotoxic drugs or toxins. A built-in model for damage repair (with default rate `damage_repair_rate` = 0) can be used for simple modeling of damage repair (e.g., DNA damage response during a cycle damage checkpoint). + +This release also includes an option to set the random number generator seed value, new capabilities to draw initial parameters from a random distribution, and support for user-defined custom functions the evaluated during cell division (which allow users to individually set properties of daughter cells, such as during asymmetric division). Beyond bug fixes, the release includes a systematic testing package, utilizing scripts and GitHub Actions for automated testing. + +We are grateful for contributions by Vincent Noël, Randy Heiland, Daniel Bergman, Heber Rocha, and Elmar Bucher in this release. + +**NOTE 1:** MacOS users need to define a PHYSICELL_CPP environment variable to specify their OpenMP-enabled g++. See the [Setup Guides](https://github.com/physicell-training/ws2023/blob/main/agenda.md#set-up-physicell) for details. + +**NOTE 2:** Windows users need to follow an updated (from v1.8) MinGW64 installation procedure. This will install an updated version of g++, plus libraries that are needed for some of the intracellular models. See the [Setup Guides](https://github.com/physicell-training/ws2023/blob/main/agenda.md#set-up-physicell) for details. + +### Major new features and changes in the 1.14.z versions +#### 1.14.0 ++ Introduced changes to Rules: + + `damage rate` (a part of `Cell_Integrity`) is now a generalized term for a rate of damage caused by non-attack means + + `attack damage rate` means what `damage rate` used to mean: how fast an attacking cell deals damage to a target cell throughout the duration of the atttack + + `phagocytose dead cell` is replaced by death-model-specific rates: + + `phagocytose apoptotic cell` + + `phagocytose necrotic cell` + + `phagocytose other dead cell` ++ New `Cell_Integrity` class in PhysiCell_phenotype.h. `damage` was moved from Cell_State into Cell_Integrity + + the cancer-biorobots-sample `custom.cpp` was updated to reflect this change. ++ `contact with dead cell` has been supplemented with additional (refined) signals `contact with apoptotic cell`, `contact with necrotic cell`, and `contact with other dead cell` ++ Seed for random numbers: in the top most tag of a config file (for options that apply to the overall simulation), there is now a . Traditionally, this has been provided in and if it is still present there, it will override the one in . Users are encouraged to migrate away from its use in as this will likely be removed from sample projects in a future release. + + Setting as an integer will have the same behavior as the `user_parameter` + + 0 + + Setting as “”, “random”, or “system_clock” will use the system clock to set the random seed + + + + + + random + + system_clock ++ New option for a user-defined custom function for cell division. If provided, the custom function will receive pointers to the two daughter cells. A new sample project, `custom-division-sample`, is provided. ++ Initial parameter distributions + + Users can now start cells with heterogeneity in any behavior or also the total volume + + For ease of access, in studio navigate to Cell Types > Misc > Parameter Distributions + + Five distributions supported: + + Uniform + + Set min and max; behavior ~ U(min, max) + + Log uniform + + Set min and max; z ~ U(log(min), log(max)); behavior ~ exp(z) + + Note: min and max are on the behavior scale, not the logarithmic scale + + Normal + + Set μ and σ; behavior ~ N(μ, σ) + + Optionally set lb, ub to impose lb <= behavior <= ub + + Log normal + + Set μ and σ; z ~ N(μ, σ); behavior ~ exp(z) + + Optionally set lb, ub to impose lb <= behavior <= ub + + Note: μ and σ are on the logarithmic scale + + Note: lb and ub are on the behavior scale + + Log10 normal + + Same as log normal, except behavior ~ 10^z + + Implemented because log10 values are more human-interpretable + + Can enforce that the base value is within the distribution to help constrain parameter sweeps + + “Enable” attributes make it easy to toggle on/off individual distributions or for an entire cell type ++ MultiCellDS update: + + PhysiBoSS intracellular data is now part of data export + + Spring attachments are now part of data export + + Streamlined MultiCellDS with incorporation of more single-cell parameters/state variables ++ Update to PhysiBoSS 2.2.3 + + Added steepness parameter to output mapping, controlling the Hill coefficient used. + + Added use_for_dead parameter to input and output mapping, to define if this mapping should be used on dead cells. + + Added three new sample projects: + + template_BM: adaptation of the template project of PhysiCell, with PhysiBoSS support + + physiboss-tutorial: three toy models presented in the PhysiBoSS tutorial ([10.48550/arXiv.2406.18371](https://doi.org/10.48550/arXiv.2406.18371)). + + physiboss-tutorial-invasion: update of the cancer invasion model by Ruscone et al., also presented in the PhysiBoSS tutorial. ++ Update to PhysiMeSS 1.0.1 + + Most parameters are now defined in custom_data, to make them specific to a cell definition. This introduces the possibility to have multiple types of fibers. ++ Introducing experimental pre-compiled binaries, available via python beta/download_binary.py. ++ Non-monotonic rules: a single signal can now both cause an increase *and* a decrease in a behavior for a cell type (bringing the implementation in better compliance with the specification at https://www.biorxiv.org/content/10.1101/2023.09.17.557982) ++ Initialize substrate initial conditions using a .mat or .csv file + + implemented in PhysiCell Studio; see output there for formatting of the csv ++ Substrate heatmaps on SVGs improvements: + + set colormaps in the config file + + set the svg substrate color function by default for config-only based implementation ### Minor new features and changes: -#### 1.13.1 -+ Continued modernization of sample projects for PhysiCell Studio compatibiltiy. See [PR 198](https://github.com/MathCancer/PhysiCell/pull/198). -+ Updated inhibitor behaviors in PhysiBoSS, and further code cleanup. See [PR 194](https://github.com/MathCancer/PhysiCell/pull/194). Thanks, Marco Ruscone! -+ PhysiBoSS cell line example migrated to newer MultiCellDS output. See [PR 193](https://github.com/MathCancer/PhysiCell/pull/193). Thanks, Vincent Noël! -+ Added a new makefile rule to simplify sharing user projects: `make pack PROJ=name` will zip all of the `name` user project in `./user_projects/name.zip`. Send this zip file for sharing your project, and have your recipient: - 1. Place `name.zip` in thier `./user_projects/` folder (preferably PhysiCell version 1.13.1 or later) - 2. Have them run the new rule `make unpack PROJ=name` to expand the project. - 3. After this, the usual rules apply. `make load PROJ=name` to load the project, and a subsequent `make` to compile it. -+ Added a new makefile rule to simplify use of shared user projects: `make unpack PROJ=name` will unzip the contents of `./user_projects/name.zip` into a new user project called `name`. Type `make load PROJ=name` to load this project, and `make` to compile it. -#### 1.13.0 -+ Preparations for a new derived `Cell` class for use in PhysiBoSS, including a new `instantiate_cell` function in `Cell_Functions` to help facilitate this. See [PR 153](https://github.com/MathCancer/PhysiCell/pull/153) (Thanks, Vincent Noël!) -+ Various safety refinements (`const` accessors) in vector operations ([PR 160](https://github.com/MathCancer/PhysiCell/pull/160)). Thanks, Vincent Noël! -+ Made changes to cell SVG plotting to support broader types of plotting in advance of PhysiMeSS [PR 162](https://github.com/MathCancer/PhysiCell/pull/162). Thanks, Vincent Noēl! -+ Added a safe way to query the current velocity via `Basic_Agent::get_previous_velocity()` in preparation for PhysiMeSS. [PR 163](https://github.com/MathCancer/PhysiCell/pull/163). Thanks, Vincent Noël! -+ Refined control of object counts in SVG for upcoming PhysiMeSS release. [PR 164](https://github.com/MathCancer/PhysiCell/pull/164). Thanks, Vincent! -+ Refined SVG plot options to incorporate substrates. [PR 181](https://github.com/MathCancer/PhysiCell/pull/181). Thanks, Marco Ruscone! -+ Updated PhysiBoSS to Version 2.2.1. See [PR 188](https://github.com/MathCancer/PhysiCell/pull/188). Thanks, Vincent Noël! -+ Updated unit tests (including `custom_DCs_2substrates`) -+ Added `damage rate` (from effector attack) to supported behaviors in the modeling gramamr -+ minor cleanup - -### Beta features (not fully supported): -#### 1.13.1 -+ The dFBA addon is considered "beta" and unsupported at this time. Compatability work is underway. Thank you, Miguel Ponce de Leon and team! -#### 1.13.0 -+ None in this release. +#### 1.14.0 ++ Scripts in `/beta` to help with testing, both manually and via GitHub Actions: `test_build_samples.sh` and `test*.py` ++ The Makefiles for all sample projects now do a recursive copy (`cp -r`) for files in the /config directory ++ throw error if duplicate substrate or user_parameter name found + ### Bugfixes: -#### 1.13.1 -+ Bugfixes to and refinements to the libRoadrunner setup scripts. See [PR 196](https://github.com/MathCancer/PhysiCell/pull/196). Thanks to Randy Heiland and Furkan Kurtoglu. -+ Updated PHysiBoSS cell line example project to remove “default phenotype” function. See [PR 195](https://github.com/MathCancer/PhysiCell/pull/195). Thanks, Vincent Noël! -+ Fixed default cell constructor to improve backwards compatibility by including new SVG plot function pointers. See [PR 200](https://github.com/MathCancer/PhysiCell/pull/200). Thanks to John Metzcar for catching this and for careful detective work to isolate the cause! -+ Numerous bugfixes to PhysiCell zip distribution, including a better release protocol. Major thanks to Furkan Kurtoglu, Elmar Bucher, John Metzcar, and Randy Heiland for help! -#### 1.13.0 -+ Fix typographical errors in Makefiles in sample projects. -+ Set correct value (100) of `cell_BM_repulsion_strength` in `PhysiCell_phenotype.cpp` (Thanks, Elmar Bucher!) -+ Improved handling of `voxel_index` in `remove_agent_from_voxel` in preparation for voxel-spanning objects such as PhysiMeSS. [PR 159](https://github.com/MathCancer/PhysiCell/pull/159). Thanks, Vincent Noël! -+ Fixed bug to ensure cell definitions without `intracellular` defined get a `NULL` intracellular model function. [PR 182](and [PR 182](https://github.com/MathCancer/PhysiCell/pull/182). THanks, Marco Ruscone! -+ Fixed a whitespaced bug in SVG output. [PR 179](https://github.com/MathCancer/PhysiCell/pull/179). Thanks, Vincent Noël! -+ Fixed a PhysiBoSS bug where dead cells could execute models. [PR 180](https://github.com/MathCancer/PhysiCell/pull/180) Thanks, Vincent Noël! -+ Fixed bugs involving Dirichlet conditions and multiple substrates (thanks to Daniel Bergman for pointing it out!) See [Issue 124](rf. https://github.com/MathCancer/PhysiCell/issues/124) and [PR 149](https://github.com/MathCancer/PhysiCell/pull/180). Thank you, Daniel Bergman and Randy Heiland! -+ `cancer_biorobots` Makefille PROGRAM_NAME is now `cancer_biorobots` instead of `project` -+ Deleted a meaningless line `dt;` in PhysiCell_standard_models.cpp -+ Added missing commas to cell_rules.csv in rules_sample project -+ Fixed typo: `PhyisiCell_rules.o` to `PhysiCell_rules.o` in Makefile-default (thanks to Joseph Abrams for pointing it out!) -+ Fixed errors in SBML ODE models. See [PR 185](https://github.com/MathCancer/PhysiCell/pull/185) and [PR 186](https://github.com/MathCancer/PhysiCell/pull/186). Thanks, Furkan Kurtoglu and Vincent Noël! -+ Fixed errors the PhysiBoSS readme. See [PR 187](https://github.com/MathCancer/PhysiCell/pull/187). Thanks, Vincent Noël! +#### 1.14.0 ++ `sample_projects_intracellular/ode/ode_energy/main.cpp` was updated to use `save_PhysiCell_to_MultiCellDS_v2` ++ `Cell::convert_to_cell_definition` now retains the cell volume ++ fix bug in storing rules that occasionally resulted in seg faults ### Notices for intended changes that may affect backwards compatibility: ++ Future releases may further refine `Cell_Integrity` with more specific forms of damage (and accompanying damage and repair rates). + + We intend to deprecate the unused phenotype variables `relative_maximum_attachment_distance`, `relative_detachment_distance`, and `maximum_attachment_rate` from `phenotype.mechanics.` + We intend to merge `Custom_Variable` and `Custom_Vector_Variable` in the future. @@ -174,15 +200,11 @@ We are grateful for immense contributions by Cicely Macnamara, Vincent Noël, Ra + Further XML-based simulation setup. + Read saved simulation states (as MultiCellDS digital snapshots) - -+ Add a new standard phenotype function that uses mechanobiology, where high pressure can arrest cycle progression. (See https://twitter.com/MathCancer/status/1022555441518338048.) + Create an angiogenesis sample project + Create a small library of angiogenesis and vascularization codes as an optional standard module in ./modules (but not as a core component) -+ Improved plotting options in SVG - + Further update sample projects to make use of more efficient interaction testing available + Major refresh of documentation. diff --git a/VERSION.txt b/VERSION.txt index b50dd27dd..cd99d386a 100644 --- a/VERSION.txt +++ b/VERSION.txt @@ -1 +1 @@ -1.13.1 +1.14.0 \ No newline at end of file diff --git a/beta/setup_libmaboss.py b/addons/PhysiBoSS/setup_libmaboss.py similarity index 66% rename from beta/setup_libmaboss.py rename to addons/PhysiBoSS/setup_libmaboss.py index 0a32db52f..888dd2748 100644 --- a/beta/setup_libmaboss.py +++ b/addons/PhysiBoSS/setup_libmaboss.py @@ -9,9 +9,8 @@ import os import sys import tarfile -import zipfile -if os.path.exists(os.path.join(os.path.dirname(os.path.dirname(__file__)), "addons", "PhysiBoSS", "MaBoSS-env-2.0")): +if os.path.exists(os.path.join(os.path.dirname(__file__), "MaBoSS")): print('libMaBoSS already installed') else: @@ -21,35 +20,26 @@ # Assume Windows mb_file = "" url = "" - maboss_version = "v2.5.2" + maboss_version = "v2.5.6" if os_type.lower() == 'darwin': if "ARM64" in platform.uname().version: mb_file = "libMaBoSS-macos-arm64.tar.gz" - url = "https://github.com/PhysiCell-Tools/intracellular_libs/raw/main/boolean/libMaBoSS-macos-arm64.tar.gz" else: mb_file = "libMaBoSS-osx64.tar.gz" - url = "https://github.com/sysbio-curie/MaBoSS-env-2.0/releases/download/" + maboss_version + "/" + mb_file elif os_type.lower().startswith("win") or os_type.lower().startswith("msys_nt") or os_type.lower().startswith("mingw64_nt"): mb_file = "libMaBoSS-win64.tar.gz" - url = "https://github.com/sysbio-curie/MaBoSS-env-2.0/releases/download/" + maboss_version + "/" + mb_file elif os_type.lower().startswith("linux"): mb_file = "libMaBoSS-linux64.tar.gz" - url = "https://github.com/sysbio-curie/MaBoSS-env-2.0/releases/download/" + maboss_version + "/" + mb_file else: print("Your operating system seems to be unsupported. Please submit a ticket at https://sourceforge.net/p/physicell/tickets/ ") sys.exit(1) - # url = "https://github.com/sysbio-curie/MaBoSS-env-2.0/releases/download/v2.4.1/" + mb_file + url = "https://github.com/sysbio-curie/MaBoSS/releases/download/" + maboss_version + "/" + mb_file - fname = mb_file - - home = os.path.expanduser("~") print('libMaBoSS will now be installed into the addon PhysiBoSS addon folder:') - dir_name = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'addons', 'PhysiBoSS') + dir_name = os.path.dirname(__file__) print(dir_name + '\n') - # print(' - Press ENTER to confirm the installation') - # print(' - Press CTL-C to abort the installation') - + if not os.path.exists(dir_name): try: os.makedirs(dir_name) @@ -59,15 +49,9 @@ print('Beginning download of libMaBoSS into ' + dir_name + ' ...') print(url) - my_file = os.path.join(dir_name, fname) + my_file = os.path.join(dir_name, mb_file) print('my_file = ',my_file) - # if os_type.lower().startswith("win"): - # rrlib_dir = my_file[:-4] - # else: # darwin or linux - # rrlib_dir = my_file[:-7] - # print('rrlib_dir = ',rrlib_dir) - def download_cb(blocknum, blocksize, totalsize): readsofar = blocknum * blocksize if totalsize > 0: diff --git a/addons/PhysiBoSS/src/maboss_intracellular.cpp b/addons/PhysiBoSS/src/maboss_intracellular.cpp index 80d028fbc..e85eafb41 100644 --- a/addons/PhysiBoSS/src/maboss_intracellular.cpp +++ b/addons/PhysiBoSS/src/maboss_intracellular.cpp @@ -69,16 +69,19 @@ void MaBoSSIntracellular::update_inputs(PhysiCell::Cell* cell, PhysiCell::Phenot int i=0; for (auto& input: listOfInputs) { - if (input.second.isNode()) { - maboss.set_node_value( - input.first, - input.second.updateNode(maboss.get_node_value(input.second.intracellular_name), signals[i]) - ); - } else if (input.second.isParameter()) { - maboss.set_parameter_value( - input.first, - input.second.updateParameter(signals[i]) - ); + if (cell->phenotype.death.dead == false || input.second.use_for_dead == true) { + + if (input.second.isNode()) { + maboss.set_node_value( + input.first, + input.second.updateNode(maboss.get_node_value(input.second.intracellular_name), signals[i]) + ); + } else if (input.second.isParameter()) { + maboss.set_parameter_value( + input.first, + input.second.updateParameter(signals[i]) + ); + } } i++; } @@ -86,15 +89,18 @@ void MaBoSSIntracellular::update_inputs(PhysiCell::Cell* cell, PhysiCell::Phenot void MaBoSSIntracellular::update_outputs(PhysiCell::Cell* cell, PhysiCell::Phenotype& phenotype, double dt) { - std::vector signals = std::vector(listOfOutputs.size(), 0.0); - int i=0; + for (auto& output: listOfOutputs) { - signals[i] = output.second.update(maboss.get_node_value(output.second.intracellular_name)); + if (cell->phenotype.death.dead == false || output.second.use_for_dead == true) { + PhysiCell::set_single_behavior( + cell, indicesOfOutputs[i], + output.second.update(maboss.get_node_value(output.second.intracellular_name)) + ); + } i++; } - PhysiCell::set_selected_behaviors(cell, indicesOfOutputs, signals); } @@ -366,7 +372,8 @@ void MaBoSSIntracellular::initialize_intracellular_from_pugixml(pugi::xml_node& node_input.attribute( "physicell_name" ).value(), intracellular_name, (settings && settings.child( "scaling" ) ? PhysiCell::xml_get_my_double_value( settings.child( "scaling" )) : 1.0), - (settings && settings.child( "smoothing" ) ? PhysiCell::xml_get_my_int_value( settings.child( "smoothing" )) : 0) + (settings && settings.child( "smoothing" ) ? PhysiCell::xml_get_my_int_value( settings.child( "smoothing" )) : 0), + (settings && settings.child( "use_for_dead" ) ? PhysiCell::xml_get_my_bool_value( settings.child( "use_for_dead" )) : false) ); // This construct is a trick to avoid making inputs and outputs constructible and assignable, or using c++17 insert_or_assign @@ -382,7 +389,8 @@ void MaBoSSIntracellular::initialize_intracellular_from_pugixml(pugi::xml_node& PhysiCell::xml_get_my_string_value(settings.child("action")), PhysiCell::xml_get_my_double_value(settings.child("threshold")), (settings && settings.child( "inact_threshold" ) ? PhysiCell::xml_get_my_double_value( settings.child( "inact_threshold" )) : PhysiCell::xml_get_my_double_value(settings.child("threshold"))), - (settings && settings.child( "smoothing" ) ? PhysiCell::xml_get_my_int_value( settings.child( "smoothing" )) : 0) + (settings && settings.child( "smoothing" ) ? PhysiCell::xml_get_my_int_value( settings.child( "smoothing" )) : 0), + (settings && settings.child( "use_for_dead" ) ? PhysiCell::xml_get_my_bool_value( settings.child( "use_for_dead" )) : false) ); auto const res = listOfInputs.insert(std::pair(intracellular_name, input)); @@ -403,7 +411,9 @@ void MaBoSSIntracellular::initialize_intracellular_from_pugixml(pugi::xml_node& PhysiCell::xml_get_my_string_value(settings.child("action")), PhysiCell::xml_get_my_double_value(settings.child("value")), (settings && settings.child( "base_value" ) ? PhysiCell::xml_get_my_double_value( settings.child( "base_value" )) : PhysiCell::xml_get_my_double_value(settings.child("value"))), - (settings && settings.child( "smoothing" ) ? PhysiCell::xml_get_my_int_value( settings.child( "smoothing" )) : 0) + (settings && settings.child( "smoothing" ) ? PhysiCell::xml_get_my_int_value( settings.child( "smoothing" )) : 0), + (settings && settings.child( "steepness" ) ? PhysiCell::xml_get_my_int_value( settings.child( "steepness" )) : 10), + (settings && settings.child( "use_for_dead" ) ? PhysiCell::xml_get_my_bool_value( settings.child( "use_for_dead" )) : false) ); auto const res = listOfOutputs.insert(std::pair(physicell_name, output)); @@ -442,13 +452,16 @@ void MaBoSSIntracellular::display(std::ostream& os) os << "\t\t " << listOfInputs.size() << " input mapping defined" << std::endl; for (const auto& input : listOfInputs) os << "\t\t\t" << input.second.physicell_name << " = " << input.first - << "(" << input.second.threshold << ", " << input.second.inact_threshold << ", " << input.second.smoothing << ")" + << "(" << input.second.threshold << ", " << input.second.inact_threshold + << ", " << input.second.smoothing << ", " << input.second.use_for_dead << ")" << std::endl; os << "\t\t " << listOfOutputs.size() << " output mapping defined" << std::endl; for (const auto& output : listOfOutputs) os << "\t\t\t" << output.first << " = " << output.second.intracellular_name - << "(" << output.second.value << ", " << output.second.base_value << ", " << output.second.smoothing << ")" + << "(" << output.second.value << ", " << output.second.base_value + << ", " << output.second.smoothing << ", " << output.second.steepness + << ", " << output.second.use_for_dead << ")" << std::endl; os << "\t\t global inheritance = " << inherit_state << std::endl; @@ -460,14 +473,14 @@ void MaBoSSIntracellular::display(std::ostream& os) std::cout << std::endl; } -void MaBoSSIntracellular::save(std::string filename, std::vector& cells) +void MaBoSSIntracellular::save(std::string filename) { std::ofstream state_file( filename ); state_file << "ID,state" << std::endl; - for( auto cell : cells ) - if (cell->phenotype.intracellular != NULL) + for( auto cell : *PhysiCell::all_cells ) + if (cell->phenotype.intracellular != NULL && cell->phenotype.intracellular->intracellular_type == "maboss") state_file << cell->ID << "," << static_cast(cell->phenotype.intracellular)->get_state() << std::endl; state_file.close(); diff --git a/addons/PhysiBoSS/src/maboss_intracellular.h b/addons/PhysiBoSS/src/maboss_intracellular.h index a195be2d9..06242a8c7 100644 --- a/addons/PhysiBoSS/src/maboss_intracellular.h +++ b/addons/PhysiBoSS/src/maboss_intracellular.h @@ -10,7 +10,9 @@ #include "maboss_network.h" #include "utils.h" -static std::string PhysiBoSS_Version = "2.2.2"; +static std::string PhysiBoSS_Version = "2.2.3"; +static std::string PhysiBoSS_DOI = "10.1038/s41540-023-00314-4"; +static std::string PhysiBoSS_URL = "https://github.com/PhysiBoSS/PhysiBoSS"; class MaBoSSIntracellular : public PhysiCell::Intracellular { private: @@ -68,12 +70,10 @@ class MaBoSSIntracellular : public PhysiCell::Intracellular { } void update(PhysiCell::Cell * cell, PhysiCell::Phenotype& phenotype, double dt) { - if (!cell->phenotype.death.dead) { - this->update_inputs(cell, phenotype, dt); - this->maboss.run_simulation(); - this->update_outputs(cell, phenotype, dt); - this->next_physiboss_run += this->maboss.get_time_to_update(); - } + this->update_inputs(cell, phenotype, dt); + this->maboss.run_simulation(); + this->update_outputs(cell, phenotype, dt); + this->next_physiboss_run += this->maboss.get_time_to_update(); } bool need_update() { @@ -120,7 +120,7 @@ class MaBoSSIntracellular : public PhysiCell::Intracellular { void display(std::ostream& os); - static void save(std::string filename, std::vector& cells); + static void save(std::string filename); // unneeded for this type int update_phenotype_parameters(PhysiCell::Phenotype& phenotype) {return 0;} diff --git a/addons/PhysiBoSS/src/maboss_network.cpp b/addons/PhysiBoSS/src/maboss_network.cpp index 5e31f3a1f..ebcee8be3 100644 --- a/addons/PhysiBoSS/src/maboss_network.cpp +++ b/addons/PhysiBoSS/src/maboss_network.cpp @@ -1,4 +1,5 @@ #include "maboss_network.h" +#include /* Default constructor */ void MaBoSSNetwork::init_maboss( std::string networkFile, std::string configFile) @@ -19,6 +20,18 @@ void MaBoSSNetwork::init_maboss( std::string networkFile, std::string configFile #pragma omp critical { + std::ifstream f_bnd(networkFile.c_str()); + if (!f_bnd.good()) { + std::cerr << "PhysiBoSS ERROR : Could not open the BND file " << networkFile.c_str() << std::endl; + exit(1); + } + + std::ifstream f_cfg(configFile.c_str()); + if (!f_cfg.good()) { + std::cerr << "PhysiBoSS ERROR : Could not open the CFG file " << configFile.c_str() << std::endl; + exit(1); + } + // Initialize MaBoSS Objects for a model this->network = new Network(); this->network->parse(networkFile.c_str()); diff --git a/addons/PhysiBoSS/src/utils.h b/addons/PhysiBoSS/src/utils.h index 76527da61..332eacb84 100644 --- a/addons/PhysiBoSS/src/utils.h +++ b/addons/PhysiBoSS/src/utils.h @@ -17,12 +17,14 @@ class MaBoSSInput double scaling; int smoothing; double smoothed_value; - MaBoSSInput(std::string physicell_name, std::string intracellular_name, std::string action, double threshold, double inact_threshold, int smoothing) : physicell_name(physicell_name), intracellular_name(intracellular_name), action(action), threshold(threshold), inact_threshold(inact_threshold), smoothing(smoothing) { + bool use_for_dead; + + MaBoSSInput(std::string physicell_name, std::string intracellular_name, std::string action, double threshold, double inact_threshold, int smoothing, bool use_for_dead) : physicell_name(physicell_name), intracellular_name(intracellular_name), action(action), threshold(threshold), inact_threshold(inact_threshold), smoothing(smoothing), use_for_dead(use_for_dead){ type = NODE; smoothed_value = 0; } - MaBoSSInput(std::string physicell_name, std::string intracellular_parameter, double scaling, int smoothing) : physicell_name(physicell_name), intracellular_parameter(intracellular_parameter), scaling(scaling), smoothing(smoothing) { + MaBoSSInput(std::string physicell_name, std::string intracellular_parameter, double scaling, int smoothing, bool use_for_dead) : physicell_name(physicell_name), intracellular_parameter(intracellular_parameter), scaling(scaling), smoothing(smoothing), use_for_dead(use_for_dead) { type = PARAMETER; smoothed_value = 0; } @@ -83,13 +85,15 @@ class MaBoSSOutput int smoothing; double probability; bool initialized = false; + int steepness; + bool use_for_dead; MaBoSSOutput(std::string physicell_name, std::string intracellular_name, std::string action, double value, double base_value, - int smoothing) + int smoothing, int steepness, bool use_for_dead) : physicell_name(physicell_name), intracellular_name(intracellular_name), action(action), value(value), base_value(base_value), - smoothing(smoothing) { + smoothing(smoothing), steepness(steepness), use_for_dead(use_for_dead) { probability = 0.5; } @@ -115,10 +119,10 @@ class MaBoSSOutput } if (action == "activation") { - double hill = PhysiCell::Hill_response_function(hill_input * 2, 1, 10); + double hill = PhysiCell::Hill_response_function(hill_input * 2, 1, steepness); return (value - base_value) * hill + base_value; } else if (action == "inhibition") { - double hill = PhysiCell::Hill_response_function(hill_input * 2, 1, 10); + double hill = PhysiCell::Hill_response_function(hill_input * 2, 1, steepness); return ((value - base_value) * (1 - hill)) + base_value; } diff --git a/addons/PhysiMeSS/PhysiMeSS.cpp b/addons/PhysiMeSS/PhysiMeSS.cpp index e1f572b3b..da010c21d 100644 --- a/addons/PhysiMeSS/PhysiMeSS.cpp +++ b/addons/PhysiMeSS/PhysiMeSS.cpp @@ -22,7 +22,7 @@ void remove_physimess_out_of_bounds_fibres() void physimess_update_cell_velocity( Cell* pCell, Phenotype& phenotype, double dt) { - double movement_threshold = PhysiCell::parameters.doubles("fibre_stuck_threshold"); + double movement_threshold = pCell->custom_data["fibre_stuck_threshold"]; if (!isFibre(pCell) && phenotype.motility.is_motile) { // Here I changed this, because here we don't have access to the old position, and I didn't want to track the old position @@ -139,7 +139,8 @@ void physimess_mechanics( double dt ) { last_update_time = PhysiCell_globals.current_time; - #pragma omp parallel for + //#pragma omp parallel for + // This is not parallel because we are modifying the agend grid for( int i=0; i < (*all_cells).size(); i++ ) { Cell* pC = (*all_cells)[i]; @@ -165,7 +166,8 @@ void physimess_mechanics( double dt ) } } - #pragma omp parallel for + // #pragma omp parallel for + // This is not parallel because we are modifying the agend grid for( int i=0; i < (*all_cells).size(); i++ ) { Cell* pC = (*all_cells)[i]; diff --git a/addons/PhysiMeSS/PhysiMeSS.h b/addons/PhysiMeSS/PhysiMeSS.h index de1911a17..005fdf4fd 100644 --- a/addons/PhysiMeSS/PhysiMeSS.h +++ b/addons/PhysiMeSS/PhysiMeSS.h @@ -10,7 +10,7 @@ using namespace PhysiCell; -static std::string PhysiMeSS_Version = "1.0.0"; +static std::string PhysiMeSS_Version = "1.0.1"; void remove_physimess_out_of_bounds_fibres(); @@ -20,4 +20,4 @@ void physimess_update_cell_velocity( Cell* pCell, Phenotype& phenotype, double d void fibre_agent_SVG(std::ofstream& os, PhysiCell::Cell* pCell, double z_slice, std::vector (*cell_coloring_function)(Cell*), double X_lower, double Y_lower); void fibre_agent_legend(std::ofstream& os, Cell_Definition* cell_definition, double& cursor_x, double& cursor_y, std::vector (*cell_coloring_function)(Cell*), double temp_cell_radius); -#endif \ No newline at end of file +#endif diff --git a/addons/PhysiMeSS/PhysiMeSS_cell.cpp b/addons/PhysiMeSS/PhysiMeSS_cell.cpp index 0eb9714e4..70a67b124 100644 --- a/addons/PhysiMeSS/PhysiMeSS_cell.cpp +++ b/addons/PhysiMeSS/PhysiMeSS_cell.cpp @@ -95,10 +95,10 @@ void PhysiMeSS_Cell::add_potentials_from_fibre(PhysiMeSS_Fibre* pFibre) double xip = pow(xi, p_exponent); double xiq = pow((1 - xi * xi), q_exponent); - fibre_adhesion = PhysiCell::parameters.doubles("vel_adhesion") * xip * - (1 - cell_velocity / PhysiCell::parameters.doubles("cell_velocity_max")); + fibre_adhesion = this->custom_data["vel_adhesion"] * xip * + (1 - cell_velocity / this->custom_data["cell_velocity_max"]); - fibre_repulsion = PhysiCell::parameters.doubles("vel_contact") * xiq; + fibre_repulsion = this->custom_data["vel_contact"] * xiq; axpy(&(velocity), fibre_adhesion, pFibre->state.orientation); naxpy(&(velocity), fibre_repulsion, previous_velocity); @@ -119,8 +119,8 @@ void PhysiMeSS_Cell::degrade_fibre(PhysiMeSS_Fibre* pFibre) distance = std::max(sqrt(distance), 0.00001); // Fibre degradation by cell - switched on by flag fibre_degradation - double stuck_threshold = PhysiCell::parameters.doubles("fibre_stuck_time"); - if (PhysiCell::parameters.bools("fibre_degradation") && stuck_counter >= stuck_threshold) { + double stuck_threshold = this->custom_data["fibre_stuck_time"]; + if (this->custom_data["fibre_degradation"] > 0.5 && stuck_counter >= stuck_threshold) { // if (stuck_counter >= stuck_threshold){ // std::cout << "Cell " << ID << " is stuck at time " << PhysiCell::PhysiCell_globals.current_time // << " near fibre " << pFibre->ID << std::endl;; @@ -129,7 +129,7 @@ void PhysiMeSS_Cell::degrade_fibre(PhysiMeSS_Fibre* pFibre) double dotproduct = dot_product(displacement, phenotype.motility.motility_vector); if (dotproduct >= 0) { double rand_degradation = PhysiCell::UniformRandom(); - double prob_degradation = PhysiCell::parameters.doubles("fibre_degradation_rate"); + double prob_degradation = this->custom_data["fibre_degradation_rate"]; if (rand_degradation <= prob_degradation) { //std::cout << " --------> fibre " << (*other_agent).ID << " is flagged for degradation " << std::endl; // (*other_agent).parameters.degradation_flag = true; diff --git a/addons/PhysiMeSS/PhysiMeSS_fibre.cpp b/addons/PhysiMeSS/PhysiMeSS_fibre.cpp index cf2aced0b..8f341f812 100644 --- a/addons/PhysiMeSS/PhysiMeSS_fibre.cpp +++ b/addons/PhysiMeSS/PhysiMeSS_fibre.cpp @@ -49,15 +49,15 @@ std::vector* getFibreCellDefinitions() { return result; } - + PhysiMeSS_Fibre::PhysiMeSS_Fibre() { // std::cout << "PhysiMeSS_Fibre constructor,"; fibres_crosslinkers.clear(); fibres_crosslink_point.clear(); - mLength = PhysiCell::NormalRandom(PhysiCell::parameters.doubles("fibre_length"), PhysiCell::parameters.doubles("length_normdist_sd")) / 2.0; - mRadius = PhysiCell::parameters.doubles("fibre_radius"); + // mLength = PhysiCell::NormalRandom(PhysiCell::parameters.doubles("fibre_length"), PhysiCell::parameters.doubles("length_normdist_sd")) / 2.0; + // mRadius = PhysiCell::parameters.doubles("fibre_radius"); // std::cout << "mLength = " << mLength; X_crosslink_count = 0; fail_count = 0; @@ -65,10 +65,12 @@ PhysiMeSS_Fibre::PhysiMeSS_Fibre() void PhysiMeSS_Fibre::assign_fibre_orientation() { + mLength = PhysiCell::NormalRandom(this->custom_data["fibre_length"], this->custom_data["length_normdist_sd"]) / 2.0; + mRadius = this->custom_data["fibre_radius"]; this->assign_orientation(); if (default_microenvironment_options.simulate_2D) { - if (PhysiCell::parameters.bools("anisotropic_fibres")){ - double theta = PhysiCell::NormalRandom(PhysiCell::parameters.doubles("fibre_angle"),PhysiCell::parameters.doubles("angle_normdist_sd")); + if (this->custom_data["anisotropic_fibres"] > 0.5){ + double theta = PhysiCell::NormalRandom(this->custom_data["fibre_angle"], this->custom_data["angle_normdist_sd"]); this->state.orientation[0] = cos(theta); this->state.orientation[1] = sin(theta); } @@ -135,7 +137,7 @@ void PhysiMeSS_Fibre::check_out_of_bounds(std::vector& position) break after 10 failures It needs re-writing at some stage to handle the 3D case properly */ - if (PhysiCell::parameters.bools("anisotropic_fibres")) { + if (this->custom_data["anisotropic_fibres"]) { if (xs < Xmin || xe > Xmax || xe < Xmin || xs > Xmax || ys < Ymin || ye > Ymax || ye < Ymin || ys > Ymax) { fail_count = 10; @@ -205,7 +207,7 @@ void PhysiMeSS_Fibre::add_potentials_from_cell(PhysiMeSS_Cell* cell) // cell-fibre pushing only if fibre no crosslinks if (X_crosslink_count == 0) { //fibre pushing turned on - if (PhysiCell::parameters.bools("fibre_pushing")) { + if (cell->custom_data["fibre_pushing"] > 0.5) { // as per PhysiCell static double simple_pressure_scale = 0.027288820670331; // temp_r = 1 - distance/R; @@ -227,7 +229,7 @@ void PhysiMeSS_Fibre::add_potentials_from_cell(PhysiMeSS_Cell* cell) } // fibre rotation turned on (2D) - if (PhysiCell::parameters.bools("fibre_rotation")) { + if (cell->custom_data["fibre_rotation"] > 0.5) { std::vector old_orientation(3, 0.0); for (int i = 0; i < 2; i++) { old_orientation[i] = state.orientation[i]; @@ -235,7 +237,7 @@ void PhysiMeSS_Fibre::add_potentials_from_cell(PhysiMeSS_Cell* cell) double moment_arm_magnitude = sqrt( point_of_impact[0] * point_of_impact[0] + point_of_impact[1] * point_of_impact[1]); - double impulse = PhysiCell::parameters.doubles("fibre_sticky")*(*cell).phenotype.motility.migration_speed * moment_arm_magnitude; + double impulse = cell->custom_data["fibre_sticky"]*(*cell).phenotype.motility.migration_speed * moment_arm_magnitude; double fibre_length = 2 * mLength; double angular_velocity = impulse / (0.5 * fibre_length * fibre_length); double angle = angular_velocity; @@ -246,7 +248,7 @@ void PhysiMeSS_Fibre::add_potentials_from_cell(PhysiMeSS_Cell* cell) } // fibre rotation around other fibre (2D only and fibres intersect at a single point) - if (PhysiCell::parameters.bools("fibre_rotation") && X_crosslink_count == 1) { + if (cell->custom_data["fibre_rotation"] > 0.5 && X_crosslink_count == 1) { double distance_fibre_centre_to_crosslink = 0.0; std::vector fibre_centre_to_crosslink(3, 0.0); for (int i = 0; i < 2; i++) { @@ -261,7 +263,7 @@ void PhysiMeSS_Fibre::add_potentials_from_cell(PhysiMeSS_Cell* cell) } double moment_arm_magnitude = sqrt( point_of_impact[0] * point_of_impact[0] + point_of_impact[1] * point_of_impact[1]); - double impulse = PhysiCell::parameters.doubles("fibre_sticky")*(*cell).phenotype.motility.migration_speed * moment_arm_magnitude; + double impulse = cell->custom_data["fibre_sticky"]*(*cell).phenotype.motility.migration_speed * moment_arm_magnitude; double fibre_length = 2 * mLength; double angular_velocity = impulse / (0.5 * fibre_length * fibre_length); double angle = angular_velocity; diff --git a/beta/download_binary.py b/beta/download_binary.py new file mode 100644 index 000000000..ca6aadb8f --- /dev/null +++ b/beta/download_binary.py @@ -0,0 +1,111 @@ +# This script attempts to download the MaBoSS (binary) library(s) and +# headers for your particular operating system. It installs them in a standard +# location (relative to a PhysiCell installation) which will be used by a PhysiCell Makefile. +# +# Authors: Randy Heiland, Vincent Noel + +import platform +import urllib.request +import os +import sys +import tarfile +import stat +import shutil + +physicell_version = "1.14.0" +repo_physicell = "MathCancer/PhysiCell" +physiboss_version = "v2.2.3" +repo_physiboss = "sysbio-curie/PhysiBoSS" +list_models = { + "physiboss-tutorial": "https://github.com/" + repo_physiboss + "/releases/download/" + physiboss_version + "/", + "physiboss-tutorial-invasion": "https://github.com/" + repo_physiboss + "/releases/download/" + physiboss_version + "/", + "physiboss-cell-lines": "https://github.com/" + repo_physiboss + "/releases/download/" + physiboss_version + "/", + "template_BM": "https://github.com/" + repo_physiboss + "/releases/download/" + physiboss_version + "/", + "template": "https://github.com/" + repo_physicell + "/releases/download/" + physicell_version + "/", + "rules": "https://github.com/" + repo_physicell + "/releases/download/" + physicell_version + "/", + "physimess": "https://github.com/" + repo_physicell + "/releases/download/" + physicell_version + "/", + "interaction": "https://github.com/" + repo_physicell + "/releases/download/" + physicell_version + "/", +} + +def print_usage(): + print("Usage : python download_binary.py ") + print("") + print("Models available : %s" % (",".join(list_models.keys()))) + +if len(sys.argv) < 2: + print_usage() + exit(1) + +model = sys.argv[1] + +if model in ["-h", "--help"] or model not in list_models.keys(): + print_usage() + exit(1) + +print('> Chosen model: ', model) + +os_type = platform.system() +print('> Operating system: ', os_type) + +mb_file = "" +if os_type.lower() == 'darwin': + mb_file = model + "-macos.tar.gz" +elif os_type.lower().startswith("win") or os_type.lower().startswith("msys_nt") or os_type.lower().startswith("mingw64_nt"): + mb_file = model + "-win.tar.gz" +elif os_type.lower().startswith("linux"): + mb_file = model + "-linux.tar.gz" +else: + print("Your operating system seems to be unsupported. Please create an new issue at https://github.com/PhysiBoSS/PhysiBoSS/issues/ ") + sys.exit(1) + +url = list_models[model] + mb_file +print('> Downloading from: ', url) + +dir_name = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) +print('> Loading into directory: ', dir_name) + +my_file = os.path.join(dir_name, mb_file) +print('> File: ',my_file) + +def download_cb(blocknum, blocksize, totalsize): + readsofar = blocknum * blocksize + if totalsize > 0: + percent = readsofar * 1e2 / totalsize + s = "\r%5.1f%% %*d / %d" % ( + percent, len(str(totalsize)), readsofar, totalsize) + sys.stderr.write(s) + if readsofar >= totalsize: # near the end + sys.stderr.write("\n") + else: # total size is unknown + sys.stderr.write("read %d\n" % (readsofar,)) + +urllib.request.urlretrieve(url, my_file, download_cb) + +print('> Creating backup of XML settings, Makefile, main.cpp') +if os.path.exists("Makefile"): + shutil.copyfile("Makefile", "Makefile-backup") +if os.path.exists("main.cpp"): + shutil.copyfile("main.cpp", "main-backup.cpp") +if os.path.exists(os.path.join("config", "PhysiCell_settings.xml")): + shutil.copyfile(os.path.join("config", "PhysiCell_settings.xml"), os.path.join("PhysiCell_settings-backup.xml")) + +os.chdir(dir_name) +print('> Uncompressing the model') + +try: + tar = tarfile.open(mb_file) + tar.extractall() + binary_name = [names for names in tar.getnames() if not names.endswith(".dll")][0] + tar.close() + os.remove(mb_file) + +except: + print('! Error untarring the file') + exit(1) + +new_name = "project" if not mb_file.endswith("win.tar.gz") else "project.exe" +os.rename(binary_name, new_name) +st = os.stat(new_name) +os.chmod(new_name, st.st_mode | stat.S_IEXEC) + +print('> Done. You can now run %s\n' % new_name) \ No newline at end of file diff --git a/beta/setup_windows_dep.py b/beta/setup_windows_dep.py new file mode 100644 index 000000000..d7967e659 --- /dev/null +++ b/beta/setup_windows_dep.py @@ -0,0 +1,63 @@ +# This script attempts to download the windows mingw64 libraries which cannot be statically +# included in the binary, and puts them in the root folder of PhysiCell +# +# Authors: Vincent Noel + +import urllib.request +import os +import sys +import tarfile +from pathlib import Path +import tempfile +import zstandard +import shutil + +if zstandard is None: + raise ImportError("pip install zstandard") + +libs = { + "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-gcc-libs-13.2.0-3-any.pkg.tar.zst": [ + "mingw64/bin/libgcc_s_seh-1.dll", "mingw64/bin/libgomp-1.dll" + ], + "https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-libwinpthread-git-11.0.0.r551.g86a5e0f41-1-any.pkg.tar.zst": [ + "mingw64/bin/libwinpthread-1.dll" + ] +} + +for url, files in libs.items(): + + fname = url.split("/")[-1] + + with tempfile.TemporaryDirectory() as temp_dir: + + def download_cb(blocknum, blocksize, totalsize): + readsofar = blocknum * blocksize + if totalsize > 0: + percent = readsofar * 1e2 / totalsize + s = "\r%5.1f%% %*d / %d" % ( + percent, len(str(totalsize)), readsofar, totalsize) + sys.stderr.write(s) + if readsofar >= totalsize: # near the end + sys.stderr.write("\n") + else: # total size is unknown + sys.stderr.write("read %d\n" % (readsofar,)) + + urllib.request.urlretrieve(url, os.path.join(temp_dir, fname), download_cb) + + + archive = Path(os.path.join(temp_dir, fname)) + out_path = Path(temp_dir) + + dctx = zstandard.ZstdDecompressor() + + with tempfile.TemporaryFile(suffix=".tar") as ofh: + with archive.open("rb") as ifh: + dctx.copy_stream(ifh, ofh) + ofh.seek(0) + with tarfile.open(fileobj=ofh) as z: + z.extractall(out_path) + + for file_path in files: + shutil.copyfile(os.path.join(out_path, file_path), os.path.join(os.getcwd(), file_path.split("/")[-1])) + +print('Done.\n') diff --git a/beta/test_build_all.sh b/beta/test_build_all.sh deleted file mode 100644 index a79902e9e..000000000 --- a/beta/test_build_all.sh +++ /dev/null @@ -1,55 +0,0 @@ -# Copy this file to the root dir and run it from a bash shell: sh test_build_all.sh -# (created from the following info) -# -# $ make list-projects -# Sample projects: template biorobots-sample cancer-biorobots-sample cancer-immune-sample -# celltypes3-sample heterogeneity-sample pred-prey-farmer virus-macrophage-sample -# worm-sample interaction-sample -# -# Sample intracellular projects: ode-energy-sample physiboss-cell-lines-sample cancer-metabolism-sample -# - -make reset -make template -make -j2 -make reset -make biorobots-sample -make -make reset -make cancer-biorobots-sample -make -make reset -make cancer-immune-sample -make -make reset -make celltypes3-sample -make -make reset -make heterogeneity-sample -make -make reset -make pred-prey-farmer -make -make reset -make virus-macrophage-sample -make -make reset -make worm-sample -make -make reset -make interaction-sample -make -make reset -make mechano-sample -make - -# now the intracellular models, requiring additional libs -make reset -make ode-energy-sample -make -make reset -make physiboss-cell-lines-sample cancer-metabolism-sample -make -make reset -make cancer-metabolism-sample -make diff --git a/beta/test_build_samples.sh b/beta/test_build_samples.sh new file mode 100644 index 000000000..c3781f012 --- /dev/null +++ b/beta/test_build_samples.sh @@ -0,0 +1,116 @@ +# Copy this file to the root dir and run it from a Unix bash shell: sh test_build_samples.sh +# +# WARNING: this is primarily intended to be used by core developers when testing a new release. +# It will create new directories in /user_projects +# +# This script is intended to serve as a first step in a two-step process. The second step is +# to run the beta/test_run_samples.py Python script (see its header for instructions). +# +# +# This test_build_samples.sh script is based on the following: +# +# $ make list-projects +# Sample projects: template biorobots-sample cancer-biorobots-sample cancer-immune-sample +# celltypes3-sample heterogeneity-sample pred-prey-farmer virus-macrophage-sample +# worm-sample interaction-sample mechano-sample rules-sample physimess-sample custom-division-sample +# +# Note that it does not currently test building the intracellular projects: +# Sample intracellular projects: template_BM ode-energy-sample physiboss-cell-lines-sample +# cancer-metabolism-sample physiboss-tutorial physiboss-tutorial-invasion +# +# After running the script, you can: +# 1) confirm all executables were created +# $ ls -l template_sample biorobots cancer_biorobots cancer_immune_3D celltypes3 heterogeneity pred_prey virus-sample worm interaction_demo mechano_sample rules_sample physimess_sample custom_division_sample +# and then: +# 2) confirm the user_projects were created; delete them +# $ cd user_projects +# $ ls +# $ rm -rf template biorobots cancer_biorobots cancer_immune celltypes3 hetero pred_prey virus_mac worm interaction mechano rules physimess custom_division + +make reset +make template +make +mv project template_sample +make save PROJ=template +# +echo "\n-----------------------------------------" +make reset +make biorobots-sample +make +make save PROJ=biorobots +# +echo "\n-----------------------------------------" +make reset +make cancer-biorobots-sample +make +make save PROJ=cancer_biorobots +# +echo "\n-----------------------------------------" +make reset +make cancer-immune-sample +make +make save PROJ=cancer_immune +# +echo "\n-----------------------------------------" +make reset +make celltypes3-sample +make +make save PROJ=celltypes3 +# +echo "\n-----------------------------------------" +make reset +make heterogeneity-sample +make +make save PROJ=hetero +# +echo "\n-----------------------------------------" +make reset +make pred-prey-farmer +make +make save PROJ=pred_prey +# +echo "\n-----------------------------------------" +make reset +make virus-macrophage-sample +make +make save PROJ=virus_mac +# +echo "\n-----------------------------------------" +make reset +make worm-sample +make +make save PROJ=worm +# +echo "\n-----------------------------------------" +make reset +make interaction-sample +make +make save PROJ=interaction +# +echo "\n-----------------------------------------" +make reset +make mechano-sample +make +mv project mechano_sample +make save PROJ=mechano +# +echo "\n-----------------------------------------" +make reset +make rules-sample +make +mv project rules_sample +make save PROJ=rules +# +echo "\n-----------------------------------------" +make reset +make physimess-sample +make +mv project physimess_sample +make save PROJ=physimess +# +echo "\n-----------------------------------------" +make reset +make custom-division-sample +make +mv project custom_division_sample +make save PROJ=custom_division diff --git a/beta/test_diff_svg.py b/beta/test_diff_svg.py new file mode 100644 index 000000000..ab90e2ea3 --- /dev/null +++ b/beta/test_diff_svg.py @@ -0,0 +1,49 @@ +# compare diffs between .svg files + +import os +import sys +import glob +import subprocess + +if (len(sys.argv) < 3): + usage_str = "Usage: %s " % (sys.argv[0]) + print(usage_str) + print("e.g.: python test_diff_svg.py ~/blah1 ~/blah2") + exit(1) +else: + dir1 = sys.argv[1] + dir2 = sys.argv[2] + +svg_files = glob.glob(f'{dir1}/snap*.svg') +svg_files.sort() +if len(svg_files) == 0: + print("No svg files found in ",dir1) + exit(1) +svg_files_ref = glob.glob(f'{dir2}/snap*.svg') +svg_files_ref.sort() +if len(svg_files) != len(svg_files_ref): + print("Number of svg files in ",dir1," and ",dir2," differ (",len(svg_files)," vs ",len(svg_files_ref),")") + exit(1) +for filename in svg_files_ref: + f = os.path.basename(filename) + f1 = os.path.join(dir1,f) + f2 = os.path.join(dir2,f) + cmd = ["diff", f1, f2] + # print("Running: ", " ".join(cmd)) + res = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + out, err = res.communicate() + if res.returncode > 1: + print("Error running diff") + print(err) + print(out) + exit(1) + vstr = out.splitlines() + # print(vstr) + if len(vstr) == 0 or (len(vstr) == 4 and vstr[1].startswith(b"< 0 days") and vstr[3].startswith(b"> 0 days")): + print(filename, ": OK") + else: + print(filename, ": ERR") + print(out) + print(err) + exit(1) +exit(0) \ No newline at end of file diff --git a/beta/test_diffs_svg.py b/beta/test_diffs_svg.py new file mode 100644 index 000000000..82616139e --- /dev/null +++ b/beta/test_diffs_svg.py @@ -0,0 +1,78 @@ +# compare diffs between .svg files in different runs +# e.g., +# python beta/test_diffs_svg.py ~/git/new-build-test/samples_test ~/git/fix_constants/samples_test + + +import os +import sys +from pathlib import Path +import glob + +# print(len(sys.argv)) +if (len(sys.argv) < 3): + usage_str = "Usage: %s " % (sys.argv[0]) + print(usage_str) + print("e.g.: python test_diffs_svg.py ~/blah1 ~/blah2") + exit(1) +else: + dir1 = sys.argv[1] + dir2 = sys.argv[2] + + +# svg_files = Path(dir1).glob(f'{dir1}/out_heterog/snap*.svg') +#print("svg_files=",svg_files) + + +#for filename in glob.iglob(f'{dir1}/snap*.svg'): + +# output_biorobots/ output_interaction/ output_template/ +# output_cancer_biorobots/ output_mechano/ output_virus_mac/ +# output_cancer_immune/ output_physimess/ output_worm/ +# output_celltypes3/ output_pred_prey/ +# output_hetero/ output_rules/ + +# note that we omit 'output_physimess' only because, currently, it fails the recursive copy of +# additional files needed in config/subdirs (until the Makefiles and "make load PROJ" is updated) +for out_dir in ['output_template','output_biorobots','output_cancer_biorobots','output_celltypes3','output_heterog','output_interaction','output_mechano','output_pred_prey','output_virus_mac','output_worm','output_rules','output_cancer_immune']: +#for out_dir in ['out_template']: + print("---------- processing ",out_dir) + svg_files = glob.glob(f'{dir1}/{out_dir}/snap*.svg') + svg_files.sort() + for filename in svg_files: + f = os.path.basename(filename) + f1 = os.path.join(dir1,out_dir,f) + f2 = os.path.join(dir2,out_dir,f) + # print(f1,f2) + # cmd = f"diff {f1} {f2} | wc -l" + cmd = f"diff {f1} {f2} | wc -l > diff_result.txt" + print(cmd) + os.system(cmd) + with open('diff_result.txt') as f: + vstr = f.readline() + print(vstr) + # Note: a "diff" will almost certainly return 4 lines, showing different run times + # 1340c1340 + # < 0 days, 0 hours, 1 minutes, and 12.1327 seconds + # --- + # > 0 days, 0 hours, 1 minutes, and 12.4215 seconds + if (int(vstr) == 0): + print("======----------------> WOW: exact match! (same sim time)") + # userinput = input("\nPress Enter to skip remaining files for this sample:") + # break + elif (int(vstr) != 4): # hard-coded "4" + print("======----------------> Warning: not a match!") + userinput = input("\nPress Enter to skip remaining files for this sample:") + # print("Username is: " + username) + break + # sys.exit(1) + +# for fname in os.listdir(dir1): +# fname1 = os.path.join(dir1, fname) +# fname2 = os.path.join(dir2, fname) +# # checking if it is a file +# if os.path.isfile(f): +# print(f) + +# cmd = "diff " + dir1 + "out_heterog" + " > " + log_file + " " + background_str +# print("----- cmd = ",cmd) +# # os.system(cmd) # <------ Execute the simulation diff --git a/beta/test_plot_svgs_montage.py b/beta/test_plot_svgs_montage.py new file mode 100644 index 000000000..393507227 --- /dev/null +++ b/beta/test_plot_svgs_montage.py @@ -0,0 +1,54 @@ +# +# This Python script assumes you have run +# * beta/test_build_samples.sh +# * beta/test_run_samples.py +# (see their respective headers for info on running them). +# +# Dependency: ImageMagick +# +# This script attempts to generate a montage of the final .svg file generated for +# each sample project (generated by the 2nd script above) that are created in: +# +# output_biorobots/ output_hetero/ output_rules/ +# output_cancer_biorobots/ output_interaction/ output_template/ +# output_cancer_immune/ output_mechano/ output_virus_mac/ +# output_celltypes3/ output_physimess/ output_worm/ +# output_custom_division/ output_pred_prey/ +# + +import subprocess +import os +import glob +import time + +output_dirs = ["output_template", "output_biorobots", "output_cancer_biorobots", "output_celltypes3", "output_hetero", "output_pred_prey", "output_virus_mac", "output_worm", "output_interaction", "output_mechano", "output_rules", "output_physimess", "output_custom_division"] +# output_dirs = ["output_template"] + +# optionally the 3D model +output_dirs.append("output_cancer_immune") + +all_svgs = [] +count = 0 +for outdir in output_dirs: + svg_pattern = outdir + "/" + "*.svg" + svg_files = glob.glob(svg_pattern) + svg_files.sort() + # print("svg_files= ",svg_files) + all_svgs.append(svg_files[-1]) + count += 1 + +print("\n\nall_svgs= ",all_svgs) +print("-----------\n") +for k in range(count): + cmd = ["convert"] + cmd.append("-resize") + cmd.append("300x") + fname = all_svgs[k] + cmd.append(fname) + outfile = f'p{k:02}.jpg' + cmd.append(outfile) + print(cmd) + p = subprocess.run(cmd) + +print("To assemble the montage, run:") +print("montage -geometry +0+0 -tile 3x9 p*.jpg final_montage.jpg") diff --git a/beta/test_run_sample.py b/beta/test_run_sample.py new file mode 100644 index 000000000..60ec82ab2 --- /dev/null +++ b/beta/test_run_sample.py @@ -0,0 +1,55 @@ +import subprocess +import xml.etree.ElementTree as ET +import os +import sys +import time + +def make_cellcycle_deterministic(root): + for phase_transition_rates in root.findall(".//phase_transition_rates"): + for rate in phase_transition_rates.iter(): + if rate.tag == "rate": + rate.attrib["fixed_duration"] = "true" + +def make_deathmodel_deterministic(root): + for phase_durations in root.findall(".//phase_durations"): + for duration in phase_durations.iter(): + if duration.tag == "duration": + duration.attrib["fixed_duration"] = "true" + +def make_chemotaxis_deterministic(root): + for migration_bias in root.findall(".//migration_bias"): + migration_bias.text = "1.0" + + m_dt = float(root.find(".//dt_mechanics").text) * 0.5 + for persistence_time in root.findall(".//persistence_time"): + persistence_time.text = str(m_dt) + +def disable_automated_spring_adhesions(root): + spring_adhesion = root.find(".//disable_automated_spring_adhesions") + if spring_adhesion is not None: + spring_adhesion.text = "true" + +def run_sample(myexec, xml_file, max_time): + + print("\n\n------------ ",myexec, " ----------------------------------") + # update max_time and omp_num_threads (=1) + tree = ET.parse(xml_file) + root = tree.getroot() + root.find(".//max_time").text = str(max_time) + + root.find(".//omp_num_threads").text = "1" + make_cellcycle_deterministic(root) + make_deathmodel_deterministic(root) + make_chemotaxis_deterministic(root) + disable_automated_spring_adhesions(root) + + tree.write(xml_file) + subprocess.run(["cat", xml_file]) + cmd = [os.path.join(os.getcwd(), myexec), xml_file] + print("Running: ", " ".join(cmd)) + res = subprocess.Popen(cmd, cwd=os.getcwd()) + res.wait() + exit(res.returncode) + +if __name__=="__main__": + run_sample(*sys.argv[1:]) diff --git a/beta/test_run_samples.py b/beta/test_run_samples.py new file mode 100644 index 000000000..dfaa5b74c --- /dev/null +++ b/beta/test_run_samples.py @@ -0,0 +1,84 @@ +# +# This Python script assumes you have run the beta/test_build_samples.sh script first. +# See its header for instructions. That script will create folders in /user_projects. +# +# Copy this Python script from /beta to the root dir if you want to edit it, then run it. +# It will do the following: +# - load each sample project (from user_projects; created by test_build_sample.sh) +# - compile it +# - modify each project's .xml: max_time, # threads, output folder +# - run it +# +# WARNING: this is primarily intended to be used by core developers when testing a new release. +# It will create new output directories ("output_") +# +# Run via (if you didn't copy it to the root dir and edit it): +# $ python beta/test_run_samples.py +# or, pipe the terminal output to a file: +# $ python beta/test_run_samples.py > test_run_samples.out +# +# Any serious error should show up in your terminal output. Some "errors" may be benign, e.g., +# "Error: Could not find section of XML config file" +# +# Reminder: +# $ ls user_projects/ +# biorobots/ hetero/ pred_prey/ worm/ +# cancer_biorobots/ interaction/ rules/ +# cancer_immune/ custom_division/ mechano/ template/ +# celltypes3/ physimess/ virus_mac/ + +# Sample projects: template biorobots-sample cancer-biorobots-sample cancer-immune-sample +# celltypes3-sample heterogeneity-sample pred-prey-farmer virus-macrophage-sample +# worm-sample interaction-sample mechano-sample rules-sample physimess-sample custom-division-sample +# +# It does not currently test running the intracellular projects: +# Sample intracellular projects: template_BM ode-energy-sample physiboss-cell-lines-sample +# cancer-metabolism-sample physiboss-tutorial physiboss-tutorial-invasion +# +# +# If you want to cleanup the created execs: +# $ rm -rf template biorobots cancer_biorobots cancer_immune_3D celltypes3 hetero pred_prey virus_mac worm interaction mechano rules physimess custom_division + +import subprocess +import xml.etree.ElementTree as ET +import os +import time + +user_proj = ["template", "biorobots", "cancer_biorobots", "celltypes3", "hetero", "pred_prey", "virus_mac", "worm", "interaction", "mechano", "rules", "physimess", "custom_division"] + +model_execs = ["project", "biorobots", "cancer_biorobots", "celltypes3", "heterogeneity", "pred_prey", "virus-sample", "worm", "interaction_demo", "project", "project", "project", "project"] + + +# Using dummy max_time values of 99 for many projects; 61 for the more time-consuming cancer_immune_3D. +# Users can change them as they wish. +max_times = [1440, 10, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 3600] + +# if you want to include the 3D cancer_immune sample, uncomment these 3 lines +user_proj.append("cancer_immune") +model_execs.append("cancer_immune_3D") +max_times.append(61) + +for (uproj, myexec, max_time) in zip(user_proj, model_execs, max_times): + print("\n\n------------ ",uproj,myexec, " ----------------------------------") + subprocess.run(["make","reset"]) + # make load PROJ=template + s= "PROJ=" + uproj + print("\n ---- doing: make load ",s) + subprocess.run(["make","load",s]) + subprocess.run(["make"]) + + # update max_time and omp_num_threads (=1) + tree = ET.parse('config/PhysiCell_settings.xml') + root = tree.getroot() + root.find(".//max_time").text = str(max_time) + root.find(".//omp_num_threads").text = "1" + new_output_dir = "output_" + uproj + root.find(".//save//folder").text = new_output_dir + tree.write('config/PhysiCell_settings.xml') + try: + os.makedirs(new_output_dir) + except: + pass + time.sleep(1) + + subprocess.run([myexec]) \ No newline at end of file diff --git a/changes.md b/changes.md index 454c4ce04..8ae2f4ce8 100644 --- a/changes.md +++ b/changes.md @@ -1,7 +1,220 @@ # PhysiCell: an Open Source Physics-Based Cell Simulator for 3-D Multicellular Systems -**Versions:** 1.13.0 - -**Release dates:** 29 July 2023 - +**Versions:** 1.14.0 - + +**Release dates:** 15 September 2024 - +* 1.14.0 : 15 September 2024 + +## Overview: +PhysiCell is a flexible open source framework for building agent-based multicellular models in 3-D tissue environments. + +**Reference:** A Ghaffarizadeh, R Heiland, SH Friedman, SM Mumenthaler, and P Macklin, PhysiCell: an Open Source Physics-Based Cell Simulator for Multicellular Systems, PLoS Comput. Biol. 14(2): e1005991, 2018. DOI: [10.1371/journal.pcbi.1005991](https://dx.doi.org/10.1371/journal.pcbi.1005991) + +Visit http://MathCancer.org/blog for the latest tutorials and help. + +**Notable recognition:** ++ [2019 PLoS Computational Biology Research Prize for Public Impact](https://blogs.plos.org/biologue/2019/05/31/announcing-the-winners-of-the-2019-plos-computational-biology-research-prize/) + +### Key makefile rules: + +**`make`**: compiles the current project. If no + project has been defined, it first + populates the cancer heterogeneity 2D + sample project and compiles it + +**`make project-name`**: populates the indicated sample project. + Use "make" to compile it. + + * **`project-name`** choices: + * template + * biorobots-sample + * cancer-biorobots-sample + * cancer-immune-sample + * celltypes3-sample + * heterogeneity-sample + * pred-prey-farmer + * virus-macrophage-sample + * worm-sample + * ode-energy-sample + * physiboss-cell-lines-sample + * cancer-metabolism-sample + * interaction-sample + * mechano-sample + * rules-sample + * physimess-sample + * custom-division-sample + +**`make list-projects`** : list all available sample projects + +**`make clean`** : removes all .o files and the executable, so that the next "make" recompiles the entire project + +**`make data-cleanup`** : clears out all simulation data + +**`make reset`** : de-populates the sample project and returns to the original PhysiCell state. Use this when switching to a new PhysiCell sample project. + +**`make save PROJ=name`**: save the current project (including the `Makefile`, `main.cpp`, and everything in `./config` and `./custom_modules/`) in `./user_projects/name`, where `name` is your choice for the project. If the project already exists, overwrite it. + +**`make load PROJ=name`**: load the user project `name` from `./user_projects/name` (including the `Makefile`, `main.cpp`, and everything in `./config` and `./custom_modules/`). + +**`make list-user-projects`**: list all user projects in `./user_projects/`. (Use these names without the trailing `/` in `make load PROJ=name`.) + +**`make jpeg`** : uses ImageMagick to convert the SVG files in the output directory to JPG (with appropriate sizing to make movies). Supply `OUTPUT=foldername` to select a different folder. + +**`make movie`** : uses ffmpeg to convert the JPG files in the output directory an mp4 movie. Supply `OUTPUT=foldername` to select a different folder, or `FRAMERATE=framerate` to override the frame rate. + +**`make upgrade`** : fetch the latest release of PhysiCell and overwrite the core library and sample projects. + +### Key Links +**Homepage:** http://PhysiCell.org + +**Setup Guide:** https://github.com/physicell-training/ws2023/blob/main/agenda.md#set-up-physicell + +**Downloads:** https://PhysiCell.sf.net AND https://github.com/MathCancer/PhysiCell/releases + +**Support:** https://join.slack.com/t/physicellcomm-sf93727/shared_invite/zt-qj1av6yd-yVeer8VkQaNDjDz7fF00jA + +**User Guide:** Look at UserGuide.pdf in the documentation folder. + +**Setup and Training:** See this year's workshop and hackathon at https://github.com/PhysiCell-Training/ws2023 + +**Older Tutorials:** http://www.mathcancer.org/blog/physicell-tutorials/ + +**Latest info:** follow [@PhysiCell](https://twitter.com/PhysiCell) on Twitter (http://twitter.com/PhysiCell) + +See changes.md for the full change log. + +* * * + +## Release summary: +Version 1.14 upgrades the Cell Beheavior Hypothesis Grammar (to version 3), including refinements to cell phagocytosis, effector attack, and cell damage/integrity in response to community discussions and peer review. It also introduces numerous refinements to cell division, random seeds, and randomized parameter initialization, as well as upgrades to PhysiBoSS and PhysiMeSS and bug fixes. Other refinements are "under the hood," including new GitHub actions and improved automation of testing, as well as improvements to MultiCellDS output. + +### Version 1.14.0 (15 Sep 2024): +Version 1.14.0 Introduces Cell Behavior Hypothesis Grammar (CBHG) 3.0, enhancing the modeling of cellular behaviors with the addition of a new `Cell_Integrity` class and refined phagocytosis behaviors (now split into separate rates for apoptotic, necrotic, and other dead cells). The built-in "attack" model has been refined to include formation of a persistent synapse (with a spring adhesion) throughout the attack (which is tunable via the `attack_duration` parameter), and a clarified `attack_damage_rate` to denote the rate at which an attacker damages its target cell. The attacking cell also tracks how long it has attacked (may be useful for exhaustion modeling), whether it is or is not attacking, and the identity (cell pointer) of the cell it is attacking. + +The new `Cell_Integrity` class (within `Phenotype`) allows more control over cell damage. Attacking cells (see above) can increase damage, as well as a new generalized `damage_rate` that can (for example) be used to model damage from other sources such as cytotoxic drugs or toxins. A built-in model for damage repair (with default rate `damage_repair_rate` = 0) can be used for simple modeling of damage repair (e.g., DNA damage response during a cycle damage checkpoint). + +This release also includes an option to set the random number generator seed value, new capabilities to draw initial parameters from a random distribution, and support for user-defined custom functions the evaluated during cell division (which allow users to individually set properties of daughter cells, such as during asymmetric division). Beyond bug fixes, the release includes a systematic testing package, utilizing scripts and GitHub Actions for automated testing. + +We are grateful for contributions by Vincent Noël, Randy Heiland, Daniel Bergman, Heber Rocha, and Elmar Bucher in this release. + +**NOTE 1:** MacOS users need to define a PHYSICELL_CPP environment variable to specify their OpenMP-enabled g++. See the [Setup Guides](https://github.com/physicell-training/ws2023/blob/main/agenda.md#set-up-physicell) for details. + +**NOTE 2:** Windows users need to follow an updated (from v1.8) MinGW64 installation procedure. This will install an updated version of g++, plus libraries that are needed for some of the intracellular models. See the [Setup Guides](https://github.com/physicell-training/ws2023/blob/main/agenda.md#set-up-physicell) for details. + +### Major new features and changes in the 1.14.z versions +#### 1.14.0 ++ Introduced changes to Rules: + + `damage rate` (a part of `Cell_Integrity`) is now a generalized term for a rate of damage caused by non-attack means + + `attack damage rate` means what `damage rate` used to mean: how fast an attacking cell deals damage to a target cell throughout the duration of the atttack + + `phagocytose dead cell` is replaced by death-model-specific rates: + + `phagocytose apoptotic cell` + + `phagocytose necrotic cell` + + `phagocytose other dead cell` ++ New `Cell_Integrity` class in PhysiCell_phenotype.h. `damage` was moved from Cell_State into Cell_Integrity + + the cancer-biorobots-sample `custom.cpp` was updated to reflect this change. ++ `contact with dead cell` has been supplemented with additional (refined) signals `contact with apoptotic cell`, `contact with necrotic cell`, and `contact with other dead cell` ++ Seed for random numbers: in the top most tag of a config file (for options that apply to the overall simulation), there is now a . Traditionally, this has been provided in and if it is still present there, it will override the one in . Users are encouraged to migrate away from its use in as this will likely be removed from sample projects in a future release. + + Setting as an integer will have the same behavior as the `user_parameter` + + 0 + + Setting as “”, “random”, or “system_clock” will use the system clock to set the random seed + + + + + + random + + system_clock ++ New option for a user-defined custom function for cell division. If provided, the custom function will receive pointers to the two daughter cells. A new sample project, `custom-division-sample`, is provided. ++ Initial parameter distributions + + Users can now start cells with heterogeneity in any behavior or also the total volume + + For ease of access, in studio navigate to Cell Types > Misc > Parameter Distributions + + Five distributions supported: + + Uniform + + Set min and max; behavior ~ U(min, max) + + Log uniform + + Set min and max; z ~ U(log(min), log(max)); behavior ~ exp(z) + + Note: min and max are on the behavior scale, not the logarithmic scale + + Normal + + Set μ and σ; behavior ~ N(μ, σ) + + Optionally set lb, ub to impose lb <= behavior <= ub + + Log normal + + Set μ and σ; z ~ N(μ, σ); behavior ~ exp(z) + + Optionally set lb, ub to impose lb <= behavior <= ub + + Note: μ and σ are on the logarithmic scale + + Note: lb and ub are on the behavior scale + + Log10 normal + + Same as log normal, except behavior ~ 10^z + + Implemented because log10 values are more human-interpretable + + Can enforce that the base value is within the distribution to help constrain parameter sweeps + + “Enable” attributes make it easy to toggle on/off individual distributions or for an entire cell type ++ MultiCellDS update: + + PhysiBoSS intracellular data is now part of data export + + Spring attachments are now part of data export + + Streamlined MultiCellDS with incorporation of more single-cell parameters/state variables ++ Update to PhysiBoSS 2.2.3 + + Added steepness parameter to output mapping, controlling the Hill coefficient used. + + Added use_for_dead parameter to input and output mapping, to define if this mapping should be used on dead cells. + + Added three new sample projects: + + template_BM: adaptation of the template project of PhysiCell, with PhysiBoSS support + + physiboss-tutorial: three toy models presented in the PhysiBoSS tutorial ([10.48550/arXiv.2406.18371](https://doi.org/10.48550/arXiv.2406.18371)). + + physiboss-tutorial-invasion: update of the cancer invasion model by Ruscone et al., also presented in the PhysiBoSS tutorial. ++ Update to PhysiMeSS 1.0.1 + + Most parameters are now defined in custom_data, to make them specific to a cell definition. This introduces the possibility to have multiple types of fibers. ++ Introducing experimental pre-compiled binaries, available via python beta/download_binary.py. ++ Non-monotonic rules: a single signal can now both cause an increase *and* a decrease in a behavior for a cell type (bringing the implementation in better compliance with the specification at https://www.biorxiv.org/content/10.1101/2023.09.17.557982) ++ Initialize substrate initial conditions using a .mat or .csv file + + implemented in PhysiCell Studio; see output there for formatting of the csv ++ Substrate heatmaps on SVGs improvements: + + set colormaps in the config file + + set the svg substrate color function by default for config-only based implementation + +### Minor new features and changes: +#### 1.14.0 ++ Scripts in `/beta` to help with testing, both manually and via GitHub Actions: `test_build_samples.sh` and `test*.py` ++ The Makefiles for all sample projects now do a recursive copy (`cp -r`) for files in the /config directory ++ throw error if duplicate substrate or user_parameter name found + + +### Bugfixes: +#### 1.14.0 ++ `sample_projects_intracellular/ode/ode_energy/main.cpp` was updated to use `save_PhysiCell_to_MultiCellDS_v2` ++ `Cell::convert_to_cell_definition` now retains the cell volume ++ fix bug in storing rules that occasionally resulted in seg faults + +### Notices for intended changes that may affect backwards compatibility: ++ Future releases may further refine `Cell_Integrity` with more specific forms of damage (and accompanying damage and repair rates). + ++ We intend to deprecate the unused phenotype variables `relative_maximum_attachment_distance`, `relative_detachment_distance`, and `maximum_attachment_rate` from `phenotype.mechanics.` + ++ We intend to merge `Custom_Variable` and `Custom_Vector_Variable` in the future. + ++ We may change the role of `operator()` and `operator[]` in `Custom_Variable` to more closely mirror the functionality in `Parameters`. + ++ Additional search functions (e.g., to find a substrate or a custom variable) will start to return -1 if no matches are found, rather than 0. + ++ We will change the timing of when `entry_function`s are executed within cycle models. Right now, they are evaluated immediately after the exit from the preceding phase (and prior to any cell division events), which means that only the parent cell executes it, rather than both daughter cells. Instead, we'll add an internal Boolean for "just exited a phase", and use this to execute the entry function at the next cycle call. This should make daughter cells independently execute the entry function. + ++ We might make `trigger_death` clear out all the cell's functions, or at least add an option to do this. + ++ We might change the behavior of copied Custom Data when a cell changes type (changes to a new cell definition). Currently, all custom data elements in a cell are overwritten based on those in the new cell definition. This is not the best behavior for custom data elements that represent state variables instead of type-dependent parameters. + +### Planned future improvements: + ++ Further XML-based simulation setup. + ++ Read saved simulation states (as MultiCellDS digital snapshots) + ++ Create an angiogenesis sample project + ++ Create a small library of angiogenesis and vascularization codes as an optional standard module in ./modules (but not as a core component) + ++ Further update sample projects to make use of more efficient interaction testing available + ++ Major refresh of documentation. + +* * * + +# PhysiCell: an Open Source Physics-Based Cell Simulator for 3-D Multicellular Systems +**Versions:** 1.13.0 - 1.13.1 + +**Release dates:** 29 July 2023 - 15 September 2024 * 1.13.0 : 29 July 2023 * 1.13.1 : 6 August 2023 @@ -85,7 +298,10 @@ See changes.md for the full change log. * * * ## Release summary: -Version 1.13.x \introduces PhysiMeSS (MicroEnvironment Structures Simulation) as a PhysiCell add-on created to model rod-shaped microenvironment elements such as the matrix fibres (e.g. collagen) of the ECM. These releases also introduce numerous bug fixes, particularly to handling of Dirichlet boundary conditions, while introducing numerous minor feature enhancements such as packing and unpacking user projects (to facilitate code sharing). +Version 1.13 introduces PhysiMeSS (MicroEnvironment Structures Simulation) as a PhysiCell add-on created to model rod-shaped microenvironment elements such as the matrix fibres (e.g. collagen) of the ECM. These releases also introduce numerous bug fixes, particularly to handling of Dirichlet boundary conditions, while introducing numerous minor feature enhancements such as packing and unpacking user projects (to facilitate code sharing). + +## Release summary: +Version 1.13.x introduces PhysiMeSS (MicroEnvironment Structures Simulation) as a PhysiCell add-on created to model rod-shaped microenvironment elements such as the matrix fibres (e.g. collagen) of the ECM. These releases also introduce numerous bug fixes, particularly to handling of Dirichlet boundary conditions, while introducing numerous minor feature enhancements such as packing and unpacking user projects (to facilitate code sharing). ### Version 1.13.1 (6 August 2023): Version 1.13.1 primarily introduces bug fixes for smoother addon support, as well as new makefile rules to pack a user project for sharing (`make pack PROJ=name`) and to unpack a shared project (`make unpack PROJ=name`). These will create (pack) or expand (unpack) zipped projects in the `./user_projects` folder. To share, send the zipped file and encourage the recipient to store it in their own `./user_projects` folder. diff --git a/core/PhysiCell.h b/core/PhysiCell.h index 9a4896801..3b4958623 100644 --- a/core/PhysiCell.h +++ b/core/PhysiCell.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -72,8 +72,8 @@ #include #include -static std::string PhysiCell_Version = "1.13.1"; -static std::string PhysiCell_URL = "http://PhysiCell.MathCancer.org"; +static std::string PhysiCell_Version = "1.14.0"; +static std::string PhysiCell_URL = "http://physicell.org"; static std::string PhysiCell_DOI = "10.1371/journal.pcbi.1005991"; #include "PhysiCell_basic_signaling.h" diff --git a/core/PhysiCell_basic_signaling.cpp b/core/PhysiCell_basic_signaling.cpp index 453198d8e..8dbfef149 100644 --- a/core/PhysiCell_basic_signaling.cpp +++ b/core/PhysiCell_basic_signaling.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2023, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/core/PhysiCell_basic_signaling.h b/core/PhysiCell_basic_signaling.h index 7f91f4faa..a47f27b02 100644 --- a/core/PhysiCell_basic_signaling.h +++ b/core/PhysiCell_basic_signaling.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2023, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/core/PhysiCell_cell.cpp b/core/PhysiCell_cell.cpp index d3205b254..f96cf789c 100644 --- a/core/PhysiCell_cell.cpp +++ b/core/PhysiCell_cell.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -246,8 +246,8 @@ Cell_State::Cell_State() number_of_nuclei = 1; - damage = 0.0; - total_attack_time = 0.0; + // damage = 0.0; + // total_attack_time = 0.0; contact_with_basement_membrane = false; @@ -355,6 +355,9 @@ void Cell::advance_bundled_phenotype_functions( double dt_ ) // update geometry phenotype.geometry.update( this, phenotype, dt_ ); + + // update integrity + phenotype.cell_integrity.advance_damage( dt_ ); // check for new death events if( phenotype.death.check_for_death( dt_ ) == true ) @@ -644,11 +647,16 @@ Cell* Cell::divide( ) // changes for new phenotyp March 2022 - state.damage = 0.0; + // state.damage = 0.0; + // phenotype.integrity.damage = 0.0; // leave alone - damage is heritable state.total_attack_time = 0; - child->state.damage = 0.0; + // child->state.damage = 0.0; + // child->phenotype.integrity.damage = 0.0; // leave alone - damage is heritable child->state.total_attack_time = 0.0; + if( this->functions.cell_division_function ) + { this->functions.cell_division_function( this, child); } + return child; } @@ -975,7 +983,7 @@ void Cell::add_potentials(Cell* other_agent) //Repulsive double R = phenotype.geometry.radius+ (*other_agent).phenotype.geometry.radius; - double RN = phenotype.geometry.nuclear_radius + (*other_agent).phenotype.geometry.nuclear_radius; + // double RN = phenotype.geometry.nuclear_radius + (*other_agent).phenotype.geometry.nuclear_radius; double temp_r, c; if( distance > R ) { @@ -1116,24 +1124,50 @@ Cell* create_cell( Cell_Definition& cd ) void Cell::convert_to_cell_definition( Cell_Definition& cd ) { + Volume cell_volume = phenotype.volume; + Geometry cell_geometry = phenotype.geometry; // use the cell defaults; type = cd.type; type_name = cd.name; - custom_data = cd.custom_data; + custom_data = cd.custom_data; // this is kinda risky since users may want to be updating custom_data throughout parameters = cd.parameters; functions = cd.functions; phenotype = cd.phenotype; - // is_movable = true; - // is_out_of_domain = false; - - // displacement.resize(3,0.0); // state? - - assign_orientation(); - - set_total_volume( phenotype.volume.total ); - + phenotype.volume = cell_volume; // leave the cell volume alone.. + // ..except for the following target values + // phenotype.volume.target_solid_cytoplasmic = cd.phenotype.volume.target_solid_cytoplasmic; // gets set by standard_volume_update_function anyways + phenotype.volume.target_solid_nuclear = cd.phenotype.volume.target_solid_nuclear; + phenotype.volume.target_fluid_fraction = cd.phenotype.volume.target_fluid_fraction; + phenotype.volume.target_cytoplasmic_to_nuclear_ratio = cd.phenotype.volume.target_cytoplasmic_to_nuclear_ratio; + phenotype.volume.relative_rupture_volume = cd.phenotype.volume.relative_rupture_volume; + + phenotype.geometry = cell_geometry; // leave the geometry alone + /* things no longer done here: + // assign_orientation(); // not necesary since the this->state is unchanged + // Basic_Agent::set_total_volume(volume); // not necessary since the volume is unchanged + + // not necessary since the volume is unchanged + // if( fabs( phenotype.volume.total - volume ) > 1e-16 ) + // { + // double ratio= volume/ (phenotype.volume.total + 1e-16); + // phenotype.volume.multiply_by_ratio(ratio); + // } + + // phenotype.geometry.update( this, phenotype, 0.0 ); // not necessary since we copy geometry above + */ + + // Here the current mechanics voxel index may not be initialized, when position is still unknown. + if (get_current_mechanics_voxel_index() >= 0) + { + if( get_container()->max_cell_interactive_distance_in_voxel[get_current_mechanics_voxel_index()] < + phenotype.geometry.radius * phenotype.mechanics.relative_maximum_adhesion_distance ) + { + get_container()->max_cell_interactive_distance_in_voxel[get_current_mechanics_voxel_index()] = phenotype.geometry.radius + * phenotype.mechanics.relative_maximum_adhesion_distance; + } + } return; } @@ -1306,6 +1340,8 @@ void Cell::ingest_cell( Cell* pCell_to_eat ) pCell_to_eat->functions.custom_cell_rule = NULL; pCell_to_eat->functions.update_phenotype = NULL; pCell_to_eat->functions.contact_function = NULL; + pCell_to_eat->functions.cell_division_function = NULL; + // should set volume fuction to NULL too! pCell_to_eat->functions.volume_update_function = NULL; @@ -1400,12 +1436,17 @@ void Cell::attack_cell( Cell* pCell_to_attack , double dt ) { return; } // make this thread safe + // WORK HERE June 2024 #pragma omp critical { // std::cout << this->type_name << " attacks " << pCell_to_attack->type_name << std::endl; // - pCell_to_attack->state.damage += phenotype.cell_interactions.damage_rate * dt; + double new_damage = phenotype.cell_interactions.attack_damage_rate * dt; + + pCell_to_attack->phenotype.cell_integrity.damage += new_damage; pCell_to_attack->state.total_attack_time += dt; + + phenotype.cell_interactions.total_damage_delivered += new_damage; } return; } @@ -1531,6 +1572,7 @@ void Cell::fuse_cell( Cell* pCell_to_fuse ) pCell_to_fuse->functions.custom_cell_rule = NULL; pCell_to_fuse->functions.update_phenotype = NULL; pCell_to_fuse->functions.contact_function = NULL; + pCell_to_fuse->functions.cell_division_function = NULL; pCell_to_fuse->functions.volume_update_function = NULL; // remove all adhesions @@ -1570,6 +1612,7 @@ void Cell::lyse_cell( void ) functions.custom_cell_rule = NULL; functions.update_phenotype = NULL; functions.contact_function = NULL; + functions.cell_division_function = NULL; // remove all adhesions @@ -1660,6 +1703,14 @@ void display_ptr_as_bool( void (*ptr)(Cell*,Phenotype&,Cell*,Phenotype&,double), return; } +void display_ptr_as_bool( void (*ptr)(Cell*,Cell*), std::ostream& os ) +{ + if( ptr ) + { os << "true"; return; } + os << "false"; + return; +} + void display_cell_definitions( std::ostream& os ) { for( int n=0; n < cell_definitions_by_index.size() ; n++ ) @@ -1743,6 +1794,8 @@ void display_cell_definitions( std::ostream& os ) os << std::endl; os << "\t\t contact function: "; display_ptr_as_bool( pCF->contact_function , std::cout ); os << std::endl; + os << "\t\t cell division function: "; display_ptr_as_bool( pCF->cell_division_function , std::cout ); + os << std::endl; // summarize motility @@ -1950,7 +2003,7 @@ Cell_Definition* initialize_cell_definition_from_pugixml( pugi::xml_node cd_node pugi::xml_node node_options = xml_find_node( physicell_config_root , "options" ); bool disable_bugfix = false; if( node_options ) - { xml_get_bool_value( node_options, "legacy_cell_defaults_copy" ); } + { disable_bugfix = xml_get_bool_value( node_options, "legacy_cell_defaults_copy" ); } if( disable_bugfix == false ) { @@ -1969,10 +2022,12 @@ Cell_Definition* initialize_cell_definition_from_pugixml( pugi::xml_node cd_node pCD->phenotype.secretion.saturation_densities.assign(number_of_substrates,0.0); // interaction - pCD->phenotype.cell_interactions.dead_phagocytosis_rate = 0.0; + pCD->phenotype.cell_interactions.apoptotic_phagocytosis_rate = 0.0; + pCD->phenotype.cell_interactions.necrotic_phagocytosis_rate = 0.0; + pCD->phenotype.cell_interactions.other_dead_phagocytosis_rate = 0.0; pCD->phenotype.cell_interactions.live_phagocytosis_rates.assign(number_of_cell_defs,0.0); pCD->phenotype.cell_interactions.attack_rates.assign(number_of_cell_defs,0.0); - pCD->phenotype.cell_interactions.damage_rate = 1.0; + pCD->phenotype.cell_interactions.attack_damage_rate = 1.0; pCD->phenotype.cell_interactions.fusion_rates.assign(number_of_cell_defs,0.0); // transformation @@ -2582,6 +2637,9 @@ Cell_Definition* initialize_cell_definition_from_pugixml( pugi::xml_node cd_node if( node_mech ) { pM->detachment_rate = xml_get_my_double_value( node_mech ); } + node_mech = node.child( "maximum_number_of_attachments" ); + if ( node_mech ) + { pM->maximum_number_of_attachments = xml_get_my_int_value( node_mech ); } } // motility @@ -2826,7 +2884,35 @@ Cell_Definition* initialize_cell_definition_from_pugixml( pugi::xml_node cd_node // dead_phagocytosis_rate pugi::xml_node node_dpr = node.child("dead_phagocytosis_rate"); - pCI->dead_phagocytosis_rate = xml_get_my_double_value(node_dpr); + double dead_phagocytosis_rate = 0.0; + if( node_dpr ) + { + // pCI->dead_phagocytosis_rate = xml_get_my_double_value(node_dpr); + dead_phagocytosis_rate = xml_get_my_double_value(node_dpr); + } +/* + pCI->apoptotic_phagocytosis_rate = pCI->dead_phagocytosis_rate; + pCI->necrotic_phagocytosis_rate = pCI->dead_phagocytosis_rate; + pCI->other_dead_phagocytosis_rate = pCI->dead_phagocytosis_rate; +*/ + pCI->apoptotic_phagocytosis_rate = dead_phagocytosis_rate; + pCI->necrotic_phagocytosis_rate = dead_phagocytosis_rate; + pCI->other_dead_phagocytosis_rate = dead_phagocytosis_rate; + + // if specific apoptotic rate is specified, overwrite + pugi::xml_node node_apr = node.child("apoptotic_phagocytosis_rate"); + if( node_apr ) + { pCI->apoptotic_phagocytosis_rate = xml_get_my_double_value(node_apr); } + + // if specific necrotic rate is specified, overwrite + pugi::xml_node node_npr = node.child("necrotic_phagocytosis_rate"); + if( node_npr ) + { pCI->necrotic_phagocytosis_rate = xml_get_my_double_value(node_npr); } + + // if specific necrotic rate is specified, overwrite + pugi::xml_node node_odpr = node.child("other_dead_phagocytosis_rate"); + if( node_odpr ) + { pCI->other_dead_phagocytosis_rate = xml_get_my_double_value(node_odpr); } // live phagocytosis rates pugi::xml_node node_lpcr = node.child( "live_phagocytosis_rates"); @@ -2883,8 +2969,8 @@ Cell_Definition* initialize_cell_definition_from_pugixml( pugi::xml_node cd_node } // damage_rate - pugi::xml_node node_dr = node.child("damage_rate"); - pCI->damage_rate = xml_get_my_double_value(node_dr); + pugi::xml_node node_dr = node.child("attack_damage_rate"); + pCI->attack_damage_rate = xml_get_my_double_value(node_dr); // fusion_rates pugi::xml_node node_fr = node.child( "fusion_rates"); @@ -2959,7 +3045,23 @@ Cell_Definition* initialize_cell_definition_from_pugixml( pugi::xml_node cd_node node_tr = node_tr.next_sibling( "transformation_rate" ); } - } + } + + // cell integrity + node = cd_node.child( "phenotype" ); + node = node.child( "cell_integrity" ); + if( node ) + { + Cell_Integrity *pCI = &(pCD->phenotype.cell_integrity); + + pugi::xml_node node_dr = node.child("damage_rate"); + if( node_dr ) + { pCI->damage_rate = xml_get_my_double_value( node_dr ); } + + pugi::xml_node node_drr = node.child("damage_repair_rate"); + if( node_drr ) + { pCI->damage_repair_rate = xml_get_my_double_value( node_drr ); } + } // intracellular node = cd_node.child( "phenotype" ); diff --git a/core/PhysiCell_cell.h b/core/PhysiCell_cell.h index 5919e3fac..41342b4f3 100644 --- a/core/PhysiCell_cell.h +++ b/core/PhysiCell_cell.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2023, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -154,8 +154,8 @@ class Cell_State int number_of_nuclei; - double damage; - double total_attack_time; + // double damage; + double total_attack_time; // now in interactions bool contact_with_basement_membrane; // not implemented yet Cell_State(); diff --git a/core/PhysiCell_cell_container.cpp b/core/PhysiCell_cell_container.cpp index 3c5547fd5..dcb046c72 100644 --- a/core/PhysiCell_cell_container.cpp +++ b/core/PhysiCell_cell_container.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/core/PhysiCell_cell_container.h b/core/PhysiCell_cell_container.h index 8123d0ac5..c1c7243c1 100644 --- a/core/PhysiCell_cell_container.h +++ b/core/PhysiCell_cell_container.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/core/PhysiCell_constants.cpp b/core/PhysiCell_constants.cpp index 7727c40f2..aa4833b2f 100644 --- a/core/PhysiCell_constants.cpp +++ b/core/PhysiCell_constants.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -76,12 +76,63 @@ double mechanics_dt = 0.1; double phenotype_dt = 6.0; double intracellular_dt = 0.01; -std::unordered_map cycle_model_codes = -{ - { "Ki67 (advanced)", PhysiCell_constants::advanced_Ki67_cycle_model}, - { "Ki67 (basic)" ,PhysiCell_constants::basic_Ki67_cycle_model}, - { "Flow cytometry model (basic)",PhysiCell_constants::flow_cytometry_cycle_model}, - // { ,PhysiCell_constants::live_apoptotic_cycle_model}, // not implemented + +// currently recognized cell cycle models +const int PhysiCell_constants::advanced_Ki67_cycle_model= 0; +const int PhysiCell_constants::basic_Ki67_cycle_model=1; +const int PhysiCell_constants::flow_cytometry_cycle_model=2; +const int PhysiCell_constants::live_apoptotic_cycle_model=3; +const int PhysiCell_constants::total_cells_cycle_model=4; +const int PhysiCell_constants::live_cells_cycle_model = 5; +const int PhysiCell_constants::flow_cytometry_separated_cycle_model = 6; +const int PhysiCell_constants::cycling_quiescent_model = 7; + +// currently recognized death models +const int PhysiCell_constants::apoptosis_death_model = 100; +const int PhysiCell_constants::necrosis_death_model = 101; +const int PhysiCell_constants::autophagy_death_model = 102; + +const int PhysiCell_constants::custom_cycle_model=9999; + +// currently recognized cell cycle and death phases +// cycle phases +const int PhysiCell_constants::Ki67_positive_premitotic=0; +const int PhysiCell_constants::Ki67_positive_postmitotic=1; +const int PhysiCell_constants::Ki67_positive=2; +const int PhysiCell_constants::Ki67_negative=3; +const int PhysiCell_constants::G0G1_phase=4; +const int PhysiCell_constants::G0_phase=5; +const int PhysiCell_constants::G1_phase=6; +const int PhysiCell_constants::G1a_phase=7; +const int PhysiCell_constants::G1b_phase=8; +const int PhysiCell_constants::G1c_phase=9; +const int PhysiCell_constants::S_phase=10; +const int PhysiCell_constants::G2M_phase=11; +const int PhysiCell_constants::G2_phase=12; +const int PhysiCell_constants::M_phase=13; +const int PhysiCell_constants::live=14; + +const int PhysiCell_constants::G1pm_phase = 15; +const int PhysiCell_constants::G1ps_phase = 16; + +const int PhysiCell_constants::cycling = 17; +const int PhysiCell_constants::quiescent = 18; + + +const int PhysiCell_constants::custom_phase = 9999; +// death phases +const int PhysiCell_constants::apoptotic=100; +const int PhysiCell_constants::necrotic_swelling=101; +const int PhysiCell_constants::necrotic_lysed=102; +const int PhysiCell_constants::necrotic=103; +const int PhysiCell_constants::debris=104; + +std::unordered_map cycle_model_codes = { + + { "Ki67 (advanced)", PhysiCell_constants::advanced_Ki67_cycle_model}, + { "Ki67 (basic)" ,PhysiCell_constants::basic_Ki67_cycle_model}, + { "Flow cytometry model (basic)",PhysiCell_constants::flow_cytometry_cycle_model}, +// { ,PhysiCell_constants::live_apoptotic_cycle_model}, // not implemented // { ,PhysiCell_constants::total_cells_cycle_model}, // not implemented { "Live",PhysiCell_constants::live_cells_cycle_model}, { "Flow cytometry model (separated)",PhysiCell_constants::flow_cytometry_separated_cycle_model}, diff --git a/core/PhysiCell_constants.h b/core/PhysiCell_constants.h index 476953148..9fd74dae8 100644 --- a/core/PhysiCell_constants.h +++ b/core/PhysiCell_constants.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2018, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -102,54 +102,54 @@ class PhysiCell_constants static const int mesh_uz_face_index=5; // currently recognized cell cycle models - static const int advanced_Ki67_cycle_model= 0; - static const int basic_Ki67_cycle_model=1; - static const int flow_cytometry_cycle_model=2; - static const int live_apoptotic_cycle_model=3; - static const int total_cells_cycle_model=4; - static const int live_cells_cycle_model = 5; - static const int flow_cytometry_separated_cycle_model = 6; - static const int cycling_quiescent_model = 7; + static const int advanced_Ki67_cycle_model; + static const int basic_Ki67_cycle_model; + static const int flow_cytometry_cycle_model; + static const int live_apoptotic_cycle_model; + static const int total_cells_cycle_model; + static const int live_cells_cycle_model ; + static const int flow_cytometry_separated_cycle_model ; + static const int cycling_quiescent_model ; // currently recognized death models - static const int apoptosis_death_model = 100; - static const int necrosis_death_model = 101; - static const int autophagy_death_model = 102; + static const int apoptosis_death_model ; + static const int necrosis_death_model ; + static const int autophagy_death_model ; - static const int custom_cycle_model=9999; + static const int custom_cycle_model; // currently recognized cell cycle and death phases // cycle phases - static const int Ki67_positive_premitotic=0; - static const int Ki67_positive_postmitotic=1; - static const int Ki67_positive=2; - static const int Ki67_negative=3; - static const int G0G1_phase=4; - static const int G0_phase=5; - static const int G1_phase=6; - static const int G1a_phase=7; - static const int G1b_phase=8; - static const int G1c_phase=9; - static const int S_phase=10; - static const int G2M_phase=11; - static const int G2_phase=12; - static const int M_phase=13; - static const int live=14; + static const int Ki67_positive_premitotic; + static const int Ki67_positive_postmitotic; + static const int Ki67_positive; + static const int Ki67_negative; + static const int G0G1_phase; + static const int G0_phase; + static const int G1_phase; + static const int G1a_phase; + static const int G1b_phase; + static const int G1c_phase; + static const int S_phase; + static const int G2M_phase; + static const int G2_phase; + static const int M_phase; + static const int live; - static const int G1pm_phase = 15; - static const int G1ps_phase = 16; + static const int G1pm_phase ; + static const int G1ps_phase ; - static const int cycling = 17; - static const int quiescent = 18; + static const int cycling ; + static const int quiescent ; - static const int custom_phase = 9999; + static const int custom_phase ; // death phases - static const int apoptotic=100; - static const int necrotic_swelling=101; - static const int necrotic_lysed=102; - static const int necrotic=103; - static const int debris=104; + static const int apoptotic; + static const int necrotic_swelling; + static const int necrotic_lysed; + static const int necrotic; + static const int debris; }; extern std::string time_units; extern std::string space_units; diff --git a/core/PhysiCell_custom.cpp b/core/PhysiCell_custom.cpp index 8885084cb..ffe23ccb6 100644 --- a/core/PhysiCell_custom.cpp +++ b/core/PhysiCell_custom.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/core/PhysiCell_custom.h b/core/PhysiCell_custom.h index 3200318f4..aea0743db 100644 --- a/core/PhysiCell_custom.h +++ b/core/PhysiCell_custom.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2018, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/core/PhysiCell_digital_cell_line.cpp b/core/PhysiCell_digital_cell_line.cpp index a03cf474c..b859ad397 100644 --- a/core/PhysiCell_digital_cell_line.cpp +++ b/core/PhysiCell_digital_cell_line.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/core/PhysiCell_digital_cell_line.h b/core/PhysiCell_digital_cell_line.h index 1b8b46d8a..e77efda0f 100644 --- a/core/PhysiCell_digital_cell_line.h +++ b/core/PhysiCell_digital_cell_line.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2018, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/core/PhysiCell_phenotype.cpp b/core/PhysiCell_phenotype.cpp index 6044a3288..806eed512 100644 --- a/core/PhysiCell_phenotype.cpp +++ b/core/PhysiCell_phenotype.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -302,7 +302,7 @@ void Cycle_Model::advance_model( Cell* pCell, Phenotype& phenotype, double dt ) bool continue_transition = false; if( phase_links[i][k].fixed_duration ) { - if( phenotype.cycle.data.elapsed_time_in_phase > 1.0/phenotype.cycle.data.transition_rates[i][k] ) + if( phenotype.cycle.data.elapsed_time_in_phase > ((1.0/phenotype.cycle.data.transition_rates[i][k]) - 0.5 * dt) ) { continue_transition = true; } @@ -1210,6 +1210,8 @@ Phenotype& Phenotype::operator=(const Phenotype &p ) { secretion = p.secretion; molecular = p.molecular; + + cell_integrity = p.cell_integrity; delete intracellular; @@ -1262,11 +1264,23 @@ void Phenotype::sync_to_microenvironment( Microenvironment* pMicroenvironment ) Cell_Interactions::Cell_Interactions() { - dead_phagocytosis_rate = 0.0; + // dead_phagocytosis_rate = 0.0; + + apoptotic_phagocytosis_rate = 0.0; + necrotic_phagocytosis_rate = 0.0; + other_dead_phagocytosis_rate = 0.0; + live_phagocytosis_rates = {0.0}; - damage_rate = 1.0; + + attack_damage_rate = 1.0; attack_rates = {0.0}; immunogenicities = {1}; + + pAttackTarget = NULL; + total_damage_delivered = 0.0; + + attack_duration = 30.0; // a typical attack duration for a T cell using perforin/granzyme is ~30 minutes + fusion_rates = {0.0}; return; @@ -1345,12 +1359,13 @@ double& Cell_Transformations::transformation_rate( std::string type_name ) } // beta functionality in 1.10.3 -Integrity::Integrity() +Cell_Integrity::Cell_Integrity() { - damage = 0.0; + damage = 0; damage_rate = 0.0; damage_repair_rate = 0.0; +/* lipid_damage = 0.0; lipid_damage_rate = 0.0; lipid_damage_repair_rate = 0.0; @@ -1359,11 +1374,12 @@ Integrity::Integrity() DNA_damage = 0.0; DNA_damage_rate = 0.0; DNA_damage_repair_rate = 0.0; +*/ return; } -void Integrity::advance_damage_models( double dt ) +void Cell_Integrity::advance_damage( double dt ) { double temp1; double temp2; @@ -1381,7 +1397,7 @@ void Integrity::advance_damage_models( double dt ) damage += temp1; damage /= temp2; } - +/* // lipid damage if( lipid_damage_rate > tol || lipid_damage_repair_rate > tol ) { @@ -1407,6 +1423,9 @@ void Integrity::advance_damage_models( double dt ) DNA_damage += temp1; DNA_damage /= temp2; } +*/ + +// std::cout << "damage: " << damage << std::endl; return; } diff --git a/core/PhysiCell_phenotype.h b/core/PhysiCell_phenotype.h index 106b567a6..ebbd39843 100644 --- a/core/PhysiCell_phenotype.h +++ b/core/PhysiCell_phenotype.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -496,6 +496,8 @@ class Cell_Functions void (*contact_function)(Cell* pMyself, Phenotype& my_phenotype, Cell* pOther, Phenotype& other_phenotype, double dt ); + + void (*cell_division_function)(Cell* pCell1, Cell* pCell2 ); /* prototyping / beta in 1.5.0 */ /* @@ -657,7 +659,14 @@ class Cell_Interactions private: public: // phagocytosis parameters (e.g., macrophages) - double dead_phagocytosis_rate; + // generic dead phagocytosis rate + // double dead_phagocytosis_rate; // deprecated + + // specific dead phagocytosis rates + double apoptotic_phagocytosis_rate; + double necrotic_phagocytosis_rate; + double other_dead_phagocytosis_rate; + std::vector live_phagocytosis_rates; // attack parameters (e.g., T cells) @@ -667,7 +676,13 @@ class Cell_Interactions std::vector immunogenicities; // new! // how immnogenic am I to cell type j? - double damage_rate; + double attack_damage_rate; + + Cell* pAttackTarget; + double total_damage_delivered; + + double attack_duration; + // cell fusion parameters std::vector fusion_rates; @@ -704,7 +719,7 @@ class Cell_Transformations }; // pre-beta functionality in 1.10.3 -class Integrity +class Cell_Integrity { private: public: @@ -713,6 +728,8 @@ class Integrity double damage_rate; double damage_repair_rate; + +/* // lipid damage (e.g, cell membrane, organelles) double lipid_damage; double lipid_damage_rate; @@ -725,10 +742,11 @@ class Integrity // other damages? // mitochondrial? spindle? other? +*/ - Integrity(); + Cell_Integrity(); - void advance_damage_models( double dt ); + void advance_damage( double dt ); }; class Phenotype @@ -748,6 +766,8 @@ class Phenotype Molecular molecular; + Cell_Integrity cell_integrity; + // We need it to be a pointer to allow polymorphism // then this object could be a MaBoSSIntracellular, or a RoadRunnerIntracellular Intracellular* intracellular; diff --git a/core/PhysiCell_rules.cpp b/core/PhysiCell_rules.cpp index 31633b56c..7fd4cda58 100644 --- a/core/PhysiCell_rules.cpp +++ b/core/PhysiCell_rules.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2021, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -253,31 +253,34 @@ void Hypothesis_Rule::add_signal( std::string signal , double half_max , double // check: is this a valid signal? (is it in the dictionary?) if( find_signal_index(signal) < 0 ) { - std::cout << "Warning! Attempted to add signal " << signal << " which is not in the dictionary." << std::endl; + std::cout << "Error! Attempted to add signal " << signal << " which is not in the dictionary." << std::endl; std::cout << "Either fix your model or add the missing signal to the simulation." << std::endl; + std::cout << "\t\tSee possible fixes at https://github.com/physicell-training/PhysiCell_common_errors\n\n"; + exit(-1); } - // check to see if it's already there + // check to see if the signal and response already there int n = find_signal(signal); + bool bResponse = false; // true if up-regulate, false if down + if( response == "increase" || response == "increases" || response == "promotes" ) + { bResponse = true; } // if so, then just warn and exit. - if( n > -1 ) + if( n > -1 && responses[n] == bResponse) { - std::cout << "Warning! Signal " << signal << " was already part of the rule. Ignoring input." << + std::cout << "Error! Signal " << signal << " and Response " << response << " were already part of the rule." << std::endl; - return; + std::cout << "\t\tSee possible fixes at https://github.com/physicell-training/PhysiCell_common_errors\n\n"; + + exit(-1); } // add the signal; signals_map[signal] = signals_map.size(); - bool bResponse = false; // true if up-regulate, false if down - if( response == "increase" || response == "increases" || response == "promotes" ) - { bResponse = true; } - signals.push_back( signal ); half_maxes.push_back( half_max ); hill_powers.push_back( hill_power ); @@ -724,7 +727,7 @@ void Hypothesis_Ruleset::display( std::ostream& os ) os << "Behavioral rules for cell type " << cell_type << ":" << std::endl; os << "===================================================" << std::endl; for( int i=0; i < rules.size() ; i++ ) - { rules[i].reduced_display(os); } + { rules[i]->reduced_display(os); } os << std::endl; return; } @@ -734,7 +737,7 @@ void Hypothesis_Ruleset::detailed_display( std::ostream& os ) os << "Behavioral rules for cell type " << cell_type << ":" << std::endl; os << "===================================================" << std::endl; for( int i=0; i < rules.size() ; i++ ) - { rules[i].detailed_display(os); } + { rules[i]->detailed_display(os); } os << std::endl; return; } @@ -746,7 +749,7 @@ void Hypothesis_Ruleset::sync_to_cell_definition( Cell_Definition* pCD ) cell_type = pCD->name; for( int i=0; i < rules.size(); i++ ) - { rules[i].sync_to_cell_definition(pCD); } + { rules[i]->sync_to_cell_definition(pCD); } return; } @@ -759,6 +762,8 @@ Hypothesis_Rule* Hypothesis_Ruleset::add_behavior( std::string behavior , double std::cout << "Warning! Attempted to add behavior " << behavior << " which is not in the dictionary." << std::endl; std::cout << "Either fix your model or add the missing behavior to the simulation." << std::endl; + std::cout << "\t\tSee possible fixes at https://github.com/physicell-training/PhysiCell_common_errors\n\n"; + exit(-1); } @@ -768,17 +773,16 @@ Hypothesis_Rule* Hypothesis_Ruleset::add_behavior( std::string behavior , double // if not, add it if( search == rules_map.end() ) { - Hypothesis_Rule hr; + Hypothesis_Rule *pHR = new Hypothesis_Rule; - hr.behavior = behavior; + pHR->behavior = behavior; - hr.sync_to_cell_definition( pCell_Definition ); + pHR->sync_to_cell_definition( pCell_Definition ); - hr.min_value = min_behavior; - hr.max_value = max_behavior; + pHR->min_value = min_behavior; + pHR->max_value = max_behavior; - rules.push_back( hr ); - Hypothesis_Rule* pHR = &(rules.back()); + rules.push_back(pHR); rules_map[ behavior ] = pHR; return pHR; @@ -798,8 +802,8 @@ Hypothesis_Rule* Hypothesis_Ruleset::add_behavior( std::string behavior , double Hypothesis_Rule* Hypothesis_Ruleset::add_behavior( std::string behavior ) { - double min_behavior = 0.1; - double max_behavior = 1.0; + double min_behavior = 9e99; // Min behaviour high value + double max_behavior = -9e99; // Max behaviour low value return Hypothesis_Ruleset::add_behavior( behavior, min_behavior, max_behavior ); } @@ -828,7 +832,7 @@ Hypothesis_Rule& Hypothesis_Ruleset::operator[]( std::string name ) void Hypothesis_Ruleset::apply( Cell* pCell ) { for( int n=0; n < rules.size() ; n++ ) - { rules[n].apply( pCell ); } + { rules[n]->apply( pCell ); } return; } @@ -1061,8 +1065,10 @@ void set_behavior_parameters( std::string cell_type, std::string behavior, exit(-1); } - hypothesis_rulesets[pCD][behavior].min_value = min_value; - hypothesis_rulesets[pCD][behavior].max_value = max_value; + if ( min_value < hypothesis_rulesets[pCD][behavior].min_value ) + { hypothesis_rulesets[pCD][behavior].min_value = min_value; } + if ( max_value > hypothesis_rulesets[pCD][behavior].max_value ) + { hypothesis_rulesets[pCD][behavior].max_value = max_value; } hypothesis_rulesets[pCD][behavior].base_value = base_value; return; @@ -1127,8 +1133,9 @@ void set_behavior_min_value( std::string cell_type, std::string behavior, double << ", but no rule for this behavior found for this cell type." << std::endl; exit(-1); } - - hypothesis_rulesets[pCD][behavior].min_value = min_value; + + if ( min_value < hypothesis_rulesets[pCD][behavior].min_value ) + { hypothesis_rulesets[pCD][behavior].min_value = min_value; } return; } @@ -1160,7 +1167,8 @@ void set_behavior_max_value( std::string cell_type, std::string behavior, double exit(-1); } - hypothesis_rulesets[pCD][behavior].max_value = max_value; + if ( max_value > hypothesis_rulesets[pCD][behavior].max_value ) + { hypothesis_rulesets[pCD][behavior].max_value = max_value; } return; } @@ -1294,7 +1302,7 @@ std::string csv_strings_to_English_v1( std::vector strings , bool i return output; } -std::string csv_strings_to_English_v2( std::vector strings , bool include_cell_header ) +std::string csv_strings_to_English_v3( std::vector strings , bool include_cell_header ) { std::string output = ""; @@ -1620,9 +1628,15 @@ void parse_csv_rule_v1( std::vector input ) set_behavior_base_value(cell_type,behavior,base_value); if( response == "increases") - { set_behavior_max_value(cell_type,behavior,max_response); } + { + set_behavior_min_value(cell_type,behavior,ref_base_value); + set_behavior_max_value(cell_type,behavior,max_response); + } else - { set_behavior_min_value(cell_type,behavior,max_response); } + { + set_behavior_min_value(cell_type,behavior,max_response); + set_behavior_max_value(cell_type,behavior,ref_base_value); + } return; } @@ -1690,7 +1704,7 @@ void parse_csv_rules_v1( std::string filename ) Cell type, signal, direction, behavior, max response value, half-max, Hill power, applies to dead? */ -void parse_csv_rule_v2( std::vector input ) +void parse_csv_rule_v3( std::vector input ) { // if it's wrong length, skip bool skip = false; @@ -1714,7 +1728,7 @@ void parse_csv_rule_v2( std::vector input ) return; } - std::string temp = csv_strings_to_English_v2( input , false ); // need a v1 version of this + std::string temp = csv_strings_to_English_v3( input , false ); // need a v1 version of this // string portions of the rule std::string cell_type = input[0]; @@ -1748,14 +1762,19 @@ void parse_csv_rule_v2( std::vector input ) set_behavior_base_value(cell_type,behavior,ref_base_value); if( response == "increases") - { set_behavior_max_value(cell_type,behavior,max_response); } + { + set_behavior_min_value(cell_type,behavior,ref_base_value); + set_behavior_max_value(cell_type,behavior,max_response); + } else - { set_behavior_min_value(cell_type,behavior,max_response); } - + { + set_behavior_min_value(cell_type,behavior,max_response); + set_behavior_max_value(cell_type,behavior,ref_base_value); + } return; } -void parse_csv_rule_v2( std::string input ) +void parse_csv_rule_v3( std::string input ) { std::vector tokenized_string; split_csv( input , tokenized_string , ','); @@ -1769,10 +1788,10 @@ void parse_csv_rule_v2( std::string input ) if(tokenized_string[0][0] == '/' && tokenized_string[0][1] == '/' ) { std::cout << "Skipping commented rule (" << input << ")" << std::endl; return; } - return parse_csv_rule_v2( tokenized_string ); + return parse_csv_rule_v3( tokenized_string ); } -void parse_csv_rules_v2( std::string filename ) +void parse_csv_rules_v3( std::string filename ) { std::fstream fs( filename, std::ios::in ); if( !fs ) @@ -1788,7 +1807,7 @@ void parse_csv_rules_v2( std::string filename ) std::string line; std::getline( fs , line, '\n'); if( line.size() > 0 ) - { parse_csv_rule_v2(line); } + { parse_csv_rule_v3(line); } } fs.close(); @@ -1857,10 +1876,14 @@ void parse_rules_from_pugixml( void ) { std::cout << "\tFormat: CSV (prototype version)" << std::endl; - parse_csv_rules_v0( input_filename ); // parse all rules in a CSV file + // parse_csv_rules_v0( input_filename ); // parse all rules in a CSV file PhysiCell_settings.rules_enabled = true; + std::cout << "\t\t**Error: Version < 3 no longer supported.\n\n"; + std::cout << "\t\tSee possible fixes at https://github.com/physicell-training/PhysiCell_common_errors\n\n"; + exit(-1); + done = true; } @@ -1868,18 +1891,37 @@ void parse_rules_from_pugixml( void ) { std::cout << "\tFormat: CSV (version " << version << ")" << std::endl; - parse_csv_rules_v1( input_filename ); // parse all rules in a CSV file + // parse_csv_rules_v1( input_filename ); // parse all rules in a CSV file PhysiCell_settings.rules_enabled = true; + std::cout << "\t\t**Error: Version < 3 no longer supported.\n\n"; + std::cout << "\t\tSee possible fixes at https://github.com/physicell-training/PhysiCell_common_errors\n\n"; + exit(-1); + done = true; } - if(version >= 2.0 - 1e-10 && protocol == "CBHG" && done == false ) + if(version >= 2.0 - 1e-10 && version < 3.0 - 1e-10 && protocol == "CBHG" && done == false ) { - std::cout << "\tFormat: CSV (version " << version << ")" << std::endl; + std::cout << "\tFormat: CSV (preprint version " << version << ")" << std::endl; + + // parse_csv_rules_v2( input_filename ); // parse all rules in a CSV file + + PhysiCell_settings.rules_enabled = true; + + std::cout << "\t\t**Error: Version < 3 no longer supported.\n\n"; + std::cout << "\t\tSee possible fixes at https://github.com/physicell-training/PhysiCell_common_errors\n\n"; + exit(-1); + + done = true; + } + + if(version >= 3.0 - 1e-10 && protocol == "CBHG" && done == false ) + { + std::cout << "\tFormat: CSV (current version " << version << ")" << std::endl; - parse_csv_rules_v2( input_filename ); // parse all rules in a CSV file + parse_csv_rules_v3( input_filename ); // parse all rules in a CSV file PhysiCell_settings.rules_enabled = true; @@ -1984,7 +2026,7 @@ void stream_annotated_English_rules( std::ostream& os ) os << "In " << pHRS->cell_type << " cells:" << std::endl; for( int k=0 ; k < pHRS->rules.size(); k++ ) - { pHRS->rules[k].English_display(os); } + { pHRS->rules[k]->English_display(os); } os << std::endl; } return; @@ -2001,7 +2043,7 @@ void stream_annotated_English_rules_HTML( std::ostream& os ) os << "In " << pHRS->cell_type << " cells:" << std::endl; os << "
    " << std::endl; for( int k=0 ; k < pHRS->rules.size(); k++ ) - { pHRS->rules[k].English_display_HTML(os); } + { pHRS->rules[k]->English_display_HTML(os); } os << "
\n

" << std::endl; } os << "\n" << std::endl; @@ -2026,7 +2068,7 @@ void stream_annotated_detailed_English_rules( std::ostream& os ) Hypothesis_Ruleset* pHRS = find_ruleset( pCD ); os << "In " << pHRS->cell_type << " cells:" << std::endl; for( int k=0 ; k < pHRS->rules.size(); k++ ) - { pHRS->rules[k].English_detailed_display(os); } + { pHRS->rules[k]->English_detailed_display(os); } os << std::endl; } return; @@ -2043,7 +2085,7 @@ void stream_annotated_detailed_English_rules_HTML( std::ostream& os ) os << "In " << pHRS->cell_type << " cells:" << std::endl; os << "
    " << std::endl; for( int k=0 ; k < pHRS->rules.size(); k++ ) - { pHRS->rules[k].English_detailed_display_HTML(os); } + { pHRS->rules[k]->English_detailed_display_HTML(os); } os << "
\n

" << std::endl; } os << "\n" << std::endl; @@ -2097,23 +2139,23 @@ void export_rules_csv_v0( std::string filename ) std::cout << cell_type << " :: "; for( int k=0 ; k < pHRS->rules.size(); k++ ) { - std::string behavior = pHRS->rules[k].behavior; + std::string behavior = pHRS->rules[k]->behavior; std::cout << behavior << " : "; - double min_value = pHRS->rules[k].min_value; - double max_value = pHRS->rules[k].max_value; - double base_value = pHRS->rules[k].base_value; - for( int i=0; i < pHRS->rules[k].signals.size() ; i++ ) + double min_value = pHRS->rules[k]->min_value; + double max_value = pHRS->rules[k]->max_value; + double base_value = pHRS->rules[k]->base_value; + for( int i=0; i < pHRS->rules[k]->signals.size() ; i++ ) { - std::string signal = pHRS->rules[k].signals[i]; + std::string signal = pHRS->rules[k]->signals[i]; std::cout << signal << " "; std::string response; - if( pHRS->rules[k].responses[i] == true ) + if( pHRS->rules[k]->responses[i] == true ) { response = "increases"; } else { response = "decreases"; } - double half_max = pHRS->rules[k].half_maxes[i]; - double hill_power = pHRS->rules[k].hill_powers[i]; + double half_max = pHRS->rules[k]->half_maxes[i]; + double hill_power = pHRS->rules[k]->hill_powers[i]; bool use_for_dead = false; // output the rule @@ -2160,22 +2202,22 @@ void export_rules_csv_v1( std::string filename ) for( int k=0 ; k < pHRS->rules.size(); k++ ) { - std::string behavior = pHRS->rules[k].behavior; + std::string behavior = pHRS->rules[k]->behavior; - double min_value = pHRS->rules[k].min_value; - double max_value = pHRS->rules[k].max_value; - double base_value = pHRS->rules[k].base_value; - for( int i=0; i < pHRS->rules[k].signals.size() ; i++ ) + double min_value = pHRS->rules[k]->min_value; + double max_value = pHRS->rules[k]->max_value; + double base_value = pHRS->rules[k]->base_value; + for( int i=0; i < pHRS->rules[k]->signals.size() ; i++ ) { - std::string signal = pHRS->rules[k].signals[i]; + std::string signal = pHRS->rules[k]->signals[i]; std::string response; double max_response = -9e99; - if( pHRS->rules[k].responses[i] == true ) + if( pHRS->rules[k]->responses[i] == true ) { response = "increases"; max_response = max_value; } else { response = "decreases"; max_response = min_value; } - double half_max = pHRS->rules[k].half_maxes[i]; - double hill_power = pHRS->rules[k].hill_powers[i]; + double half_max = pHRS->rules[k]->half_maxes[i]; + double hill_power = pHRS->rules[k]->hill_powers[i]; bool use_for_dead = false; // output the rule @@ -2196,7 +2238,7 @@ void export_rules_csv_v1( std::string filename ) return; } -void export_rules_csv_v2( std::string filename ) +void export_rules_csv_v3( std::string filename ) { std::fstream fs( filename, std::ios::out ); if( !fs ) @@ -2216,22 +2258,22 @@ void export_rules_csv_v2( std::string filename ) for( int k=0 ; k < pHRS->rules.size(); k++ ) { - std::string behavior = pHRS->rules[k].behavior; + std::string behavior = pHRS->rules[k]->behavior; - double min_value = pHRS->rules[k].min_value; - double max_value = pHRS->rules[k].max_value; - double base_value = pHRS->rules[k].base_value; - for( int i=0; i < pHRS->rules[k].signals.size() ; i++ ) + double min_value = pHRS->rules[k]->min_value; + double max_value = pHRS->rules[k]->max_value; + double base_value = pHRS->rules[k]->base_value; + for( int i=0; i < pHRS->rules[k]->signals.size() ; i++ ) { - std::string signal = pHRS->rules[k].signals[i]; + std::string signal = pHRS->rules[k]->signals[i]; std::string response; double max_response = -9e99; - if( pHRS->rules[k].responses[i] == true ) + if( pHRS->rules[k]->responses[i] == true ) { response = "increases"; max_response = max_value; } else { response = "decreases"; max_response = min_value; } - double half_max = pHRS->rules[k].half_maxes[i]; - double hill_power = pHRS->rules[k].hill_powers[i]; + double half_max = pHRS->rules[k]->half_maxes[i]; + double hill_power = pHRS->rules[k]->hill_powers[i]; bool use_for_dead = false; // output the rule @@ -2360,4 +2402,4 @@ void setup_cell_rules( void ) } -}; \ No newline at end of file +}; diff --git a/core/PhysiCell_rules.h b/core/PhysiCell_rules.h index fb3cf1e3f..137ee9326 100644 --- a/core/PhysiCell_rules.h +++ b/core/PhysiCell_rules.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2021, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -145,7 +145,7 @@ class Hypothesis_Ruleset std::string cell_type; Cell_Definition* pCell_Definition; - std::vector< Hypothesis_Rule > rules; + std::vector< Hypothesis_Rule* > rules; Hypothesis_Ruleset(); // done @@ -218,10 +218,9 @@ void parse_csv_rule_v1( std::vector input ); // parse a tokenized s void parse_csv_rule_v1( std::string input ); // parse a single string (a single line from CSV) void parse_csv_rules_v1( std::string filename ); // parse all rules in a CSV file -// experimental -- removes need for base value -void parse_csv_rule_v2( std::vector input ); // parse a tokenized string (vector of strings) -void parse_csv_rule_v2( std::string input ); // parse a single string (a single line from CSV) -void parse_csv_rules_v2( std::string filename ); // parse all rules in a CSV file +void parse_csv_rule_v3( std::vector input ); // parse a tokenized string (vector of strings) +void parse_csv_rule_v3( std::string input ); // parse a single string (a single line from CSV) +void parse_csv_rules_v3( std::string filename ); // parse all rules in a CSV file void parse_rules_from_pugixml( void ); @@ -230,14 +229,14 @@ void parse_rules_from_parameters_v0( void ); std::string csv_strings_to_English( std::vector strings , bool include_cell_header ); std::string csv_strings_to_English_v1( std::vector strings , bool include_cell_header ); -std::string csv_strings_to_English_v2( std::vector strings , bool include_cell_header ); +std::string csv_strings_to_English_v3( std::vector strings , bool include_cell_header ); std::string csv_strings_to_English_HTML( std::vector strings , bool include_cell_header ); // v1, v2, and v0? void export_rules_csv_v0( std::string filename ); void export_rules_csv_v1( std::string filename ); -void export_rules_csv_v2( std::string filename ); +void export_rules_csv_v3( std::string filename ); // streamed outputs in human-readable format diff --git a/core/PhysiCell_signal_behavior.cpp b/core/PhysiCell_signal_behavior.cpp index 5f322cfa4..ff342fea0 100644 --- a/core/PhysiCell_signal_behavior.cpp +++ b/core/PhysiCell_signal_behavior.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2023, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -173,13 +173,34 @@ void setup_signal_behavior_dictionaries( void ) // synonym signal_to_int["contact with live cells"] = map_index; - // contact with dead cell + // contact with (any) dead cell map_index++; signal_to_int["contact with dead cell"] = map_index; int_to_signal[map_index] = "contact with dead cell"; // synonym signal_to_int["contact with dead cells"] = map_index; + + // contact with apoptotic cell + map_index++; + signal_to_int["contact with apoptotic cell"] = map_index; + int_to_signal[map_index] = "contact with apoptotic cell"; + // synonym + signal_to_int["contact with apoptotic cells"] = map_index; + // contact with necrotic cell + map_index++; + signal_to_int["contact with necrotic cell"] = map_index; + int_to_signal[map_index] = "contact with necrotic cell"; + // synonym + signal_to_int["contact with necrotic cells"] = map_index; + + // contact with other dead cell + map_index++; + signal_to_int["contact with other dead cell"] = map_index; + int_to_signal[map_index] = "contact with other dead cell"; + // synonym + signal_to_int["contact with other dead cells"] = map_index; + // contact with basement membrane map_index++; signal_to_int["contact with basement membrane"] = map_index; @@ -192,7 +213,20 @@ void setup_signal_behavior_dictionaries( void ) map_index++; signal_to_int["damage"] = map_index; int_to_signal[map_index] = "damage"; - + + map_index++; + signal_to_int["damage delivered"] = map_index; + int_to_signal[map_index] = "damage delivered"; + // synonym + signal_to_int["total damage delivered"] = map_index; + + // attacking yes/no? + map_index++; + signal_to_int["attacking"] = map_index; + int_to_signal[map_index] = "attacking"; + // synonym + signal_to_int["is attacking"] = map_index; + // live / dead state map_index++; signal_to_int["dead"] = map_index; @@ -410,13 +444,31 @@ void setup_signal_behavior_dictionaries( void ) behavior_to_int["cell-membrane repulsion"] = map_index; map_index++; - map_name = "phagocytose dead cell"; + map_name = "phagocytose apoptotic cell"; + behavior_to_int[ map_name ] = map_index; + int_to_behavior[map_index] = map_name; + + // synonym "phagocytosis of apoptotic cell"; + behavior_to_int[ "phagocytosis of apoptotic cell" ] = map_index; + behavior_to_int[ "phagocytosis of apoptotic cells" ] = map_index; + + map_index++; + map_name = "phagocytose necrotic cell"; behavior_to_int[ map_name ] = map_index; int_to_behavior[map_index] = map_name; - // synonym "phagocytosis of dead cell"; - behavior_to_int[ "phagocytosis of dead cell" ] = map_index; - behavior_to_int[ "phagocytosis of dead cells" ] = map_index; + // synonym "phagocytosis of necrotic cell"; + behavior_to_int[ "phagocytosis of necrotic cell" ] = map_index; + behavior_to_int[ "phagocytosis of necrotic cells" ] = map_index; + + map_index++; + map_name = "phagocytose other dead cell"; + behavior_to_int[ map_name ] = map_index; + int_to_behavior[map_index] = map_name; + + // synonym "phagocytosis of other dead cell"; + behavior_to_int[ "phagocytosis of other dead cell" ] = map_index; + behavior_to_int[ "phagocytosis of other dead cells" ] = map_index; // phagocytosis of each live cell type for( int i=0; i < n ; i++ ) @@ -531,11 +583,25 @@ void setup_signal_behavior_dictionaries( void ) behavior_to_int[map_name ] = map_index; int_to_behavior[map_index] = map_name; + map_index++; + map_name = "attack damage rate"; + behavior_to_int[map_name ] = map_index; + int_to_behavior[map_index] = map_name; + + map_index++; + map_name = "attack duration"; + behavior_to_int[map_name ] = map_index; + int_to_behavior[map_index] = map_name; + map_index++; map_name = "damage rate"; behavior_to_int[map_name ] = map_index; int_to_behavior[map_index] = map_name; + map_index++; + map_name = "damage repair rate"; + behavior_to_int[map_name ] = map_index; + int_to_behavior[map_index] = map_name; /* add new behaviors above this line */ @@ -697,18 +763,31 @@ std::vector get_signals( Cell* pCell ) // physical contact with cells (of each type) // increment signals int dead_cells = 0; + int apop_cells = 0; + int necro_cells = 0; + int other_dead_cells = 0; int live_cells = 0; static int contact_ind = find_signal_index( "contact with " + cell_definitions_by_type[0]->name ); for( int i=0; i < pCell->state.neighbors.size(); i++ ) { Cell* pC = pCell->state.neighbors[i]; if( pC->phenotype.death.dead == true ) - { dead_cells++; } + { + dead_cells++; + if(pC->phenotype.cycle.current_phase().code == PhysiCell_constants::apoptotic ) + { apop_cells++; } + + if( pC->phenotype.cycle.current_phase().code == PhysiCell_constants::necrotic_swelling || + pC->phenotype.cycle.current_phase().code == PhysiCell_constants::necrotic_lysed || + pC->phenotype.cycle.current_phase().code == PhysiCell_constants::necrotic ) + { necro_cells++; } + } else { live_cells++; } int nCT = cell_definition_indices_by_type[pC->type]; signals[contact_ind+nCT] += 1; } + other_dead_cells = dead_cells - apop_cells - necro_cells; // physical contact with live cells static int live_contact_ind = find_signal_index( "contact with live cell"); @@ -718,13 +797,36 @@ std::vector get_signals( Cell* pCell ) static int dead_contact_ind = find_signal_index( "contact with dead cell"); signals[dead_contact_ind] = dead_cells; + // physical contact with apoptotic cells + static int apop_contact_ind = find_signal_index( "contact with apoptotic cell"); + signals[apop_contact_ind] = apop_cells; + + // physical contact with necrotic cells + static int necro_contact_ind = find_signal_index( "contact with necrotic cell"); + signals[necro_contact_ind] = necro_cells; + + // physical contact with other dead cells + static int other_dead_contact_ind = find_signal_index( "contact with other dead cell"); + signals[other_dead_contact_ind] = other_dead_cells; + + // physical contact with basement membrane (not implemented) static int BM_contact_ind = find_signal_index( "contact with basement membrane"); signals[BM_contact_ind] = (int) pCell->state.contact_with_basement_membrane; // damage static int damage_ind = find_signal_index( "damage"); - signals[damage_ind] = pCell->state.damage; + signals[damage_ind] = pCell->phenotype.cell_integrity.damage; + + // damage delivered + static int damage_deliv_ind = find_signal_index( "damage delivered"); + signals[damage_deliv_ind] = pCell->phenotype.cell_interactions.total_damage_delivered; + + // attacking? + static int attacking_ind = find_signal_index( "attacking"); + signals[attacking_ind] = 0; + if( pCell->phenotype.cell_interactions.pAttackTarget ) + { signals[attacking_ind] = 1; } // live / dead state static int dead_ind = find_signal_index( "dead" ); @@ -780,23 +882,42 @@ std::vector get_cell_contact_signals( Cell* pCell ) static int m = microenvironment.number_of_densities(); static int n = cell_definition_indices_by_name.size(); - std::vector output( n+2 , 0.0 ); + std::vector output( n+2+3 , 0.0 ); // process all neighbors int dead_cells = 0; int live_cells = 0; + int apop_cells = 0; + int necro_cells = 0; + int other_dead_cells = 0; + for( int i=0; i < pCell->state.neighbors.size(); i++ ) { Cell* pC = pCell->state.neighbors[i]; if( pC->phenotype.death.dead == true ) - { dead_cells++; } + { + dead_cells++; + if(pC->phenotype.cycle.current_phase().code == PhysiCell_constants::apoptotic ) + { apop_cells++; } + + if( pC->phenotype.cycle.current_phase().code == PhysiCell_constants::necrotic_swelling || + pC->phenotype.cycle.current_phase().code == PhysiCell_constants::necrotic_lysed || + pC->phenotype.cycle.current_phase().code == PhysiCell_constants::necrotic ) + { necro_cells++; } + } else { live_cells++; } int nCT = cell_definition_indices_by_type[pC->type]; output[nCT] += 1; } + other_dead_cells = dead_cells - apop_cells - necro_cells; + output[n] = live_cells; output[n+1] = dead_cells; + output[n+2] = apop_cells; + output[n+3] = necro_cells; + output[n+4] = other_dead_cells; + // rescale std::string search_for = "contact with " + cell_definitions_by_type[0]->name; static int scaling_start_index = find_signal_index( search_for ); @@ -906,17 +1027,29 @@ double get_single_signal( Cell* pCell, int index ) std::vector counts( n , 0 ); // process all neighbors int dead_cells = 0; + int apop_cells = 0; + int necro_cells = 0; + int other_dead_cells = 0; int live_cells = 0; for( int i=0; i < pCell->state.neighbors.size(); i++ ) { Cell* pC = pCell->state.neighbors[i]; if( pC->phenotype.death.dead == true ) - { dead_cells++; } + { + dead_cells++; + if(pC->phenotype.cycle.current_phase().code == PhysiCell_constants::apoptotic ) + { apop_cells++; } + if( pC->phenotype.cycle.current_phase().code == PhysiCell_constants::necrotic_swelling || + pC->phenotype.cycle.current_phase().code == PhysiCell_constants::necrotic_lysed || + pC->phenotype.cycle.current_phase().code == PhysiCell_constants::necrotic ) + { necro_cells++; } + } else { live_cells++; } int nCT = cell_definition_indices_by_type[pC->type]; counts[nCT] += 1; } + other_dead_cells = dead_cells - apop_cells - necro_cells; if( index < contact_ind + n ) { @@ -934,9 +1067,37 @@ double get_single_signal( Cell* pCell, int index ) } static int dead_contact_ind = find_signal_index( "contact with dead cell"); - // index == dead_contact_ind - out = dead_cells; - out /= signal_scales[index]; + if( index == dead_contact_ind ) + { + out = dead_cells; + out /= signal_scales[index]; + return out; + } + + static int apop_contact_ind = find_signal_index( "contact with apoptotic cell"); + if( index == apop_contact_ind ) + { + out = apop_cells; + out /= signal_scales[index]; + return out; + } + + static int necro_contact_ind = find_signal_index( "contact with necrotic cell"); + if( index == necro_contact_ind ) + { + out = necro_cells; + out /= signal_scales[index]; + return out; + } + + static int other_dead_contact_ind = find_signal_index( "contact with other dead cell"); + if( index == other_dead_contact_ind ) + { + out = other_dead_cells; + out /= signal_scales[index]; + return out; + } + return out; } @@ -953,7 +1114,16 @@ double get_single_signal( Cell* pCell, int index ) static int damage_ind = find_signal_index( "damage"); if( index == damage_ind ) { - out = pCell->state.damage; + out = pCell->phenotype.cell_integrity.damage; + out /= signal_scales[index]; + return out; + } + + // damage delivered + static int damage_deliv_ind = find_signal_index( "damage delivered"); + if( index == damage_deliv_ind ) + { + out = pCell->phenotype.cell_interactions.total_damage_delivered ; out /= signal_scales[index]; return out; } @@ -976,6 +1146,16 @@ double get_single_signal( Cell* pCell, int index ) return out; } + // attacking? yes or no + static int attacking_ind = find_signal_index( "attacking"); + if( index == attacking_ind ) + { + out = 0; + if( pCell->phenotype.cell_interactions.pAttackTarget ) + { out = 1; } + return out; + } + // time static int time_ind = find_signal_index( "time" ); if( index == time_ind ) @@ -1156,9 +1336,17 @@ void set_behaviors( Cell* pCell , std::vector parameters ) static int cbr_index = find_behavior_index("cell-BM repulsion"); pCell->phenotype.mechanics.cell_BM_repulsion_strength = parameters[cbr_index]; - // dead cell phagocytosis - static int dead_phag_index = find_behavior_index("phagocytose dead cell"); - pCell->phenotype.cell_interactions.dead_phagocytosis_rate = parameters[dead_phag_index]; + // apoptotic cell phagocytosis + static int apop_phag_index = find_behavior_index("phagocytose apoptotic cell"); + pCell->phenotype.cell_interactions.apoptotic_phagocytosis_rate = parameters[apop_phag_index]; + + // necrotic cell phagocytosis + static int necro_phag_index = find_behavior_index("phagocytose necrotic cell"); + pCell->phenotype.cell_interactions.necrotic_phagocytosis_rate = parameters[necro_phag_index]; + + // other dead cell phagocytosis + static int other_dead_phag_index = find_behavior_index("phagocytose other dead cell"); + pCell->phenotype.cell_interactions.other_dead_phagocytosis_rate = parameters[other_dead_phag_index]; // phagocytosis of each live cell type static int first_phagocytosis_index = find_behavior_index( "phagocytose " + cell_definitions_by_type[0]->name ); @@ -1218,8 +1406,20 @@ void set_behaviors( Cell* pCell , std::vector parameters ) pCell->phenotype.mechanics.maximum_number_of_attachments = (int) parameters[max_attachments_ind]; // cell damage rate (for effector attack) + static int attack_damage_rate_ind = find_behavior_index( "attack damage rate"); + pCell->phenotype.cell_interactions.attack_damage_rate = parameters[attack_damage_rate_ind]; + + // attack duration (for effector attack) + static int attack_duration_ind = find_behavior_index( "attack duration"); + pCell->phenotype.cell_interactions.attack_duration = parameters[attack_duration_ind]; + + // damage rate (non-effector) static int damage_rate_ind = find_behavior_index( "damage rate"); - pCell->phenotype.cell_interactions.damage_rate = parameters[damage_rate_ind]; + pCell->phenotype.cell_integrity.damage_rate = parameters[damage_rate_ind]; + + // damage repair rate (non-effector) + static int damage_repair_rate_ind = find_behavior_index( "damage repair rate"); + pCell->phenotype.cell_integrity.damage_repair_rate = parameters[damage_repair_rate_ind]; return; } @@ -1260,7 +1460,7 @@ void set_single_behavior( Cell* pCell, int index , double parameter ) // cycle entry (exit from phase 0) and exit from up to 5 more phases static int first_cycle_index = find_behavior_index("exit from cycle phase 0" ); // 4*m; - if( index >= first_cycle_index && index < first_cycle_index+6 ) + if( index >= first_cycle_index && index < first_cycle_index+6 && !pCell->phenotype.death.dead ) { int max_cycle_index = pCell->phenotype.cycle.model().phases.size(); if( index < first_cycle_index + max_cycle_index ) @@ -1339,10 +1539,20 @@ void set_single_behavior( Cell* pCell, int index , double parameter ) if( index == cbr_index ) { pCell->phenotype.mechanics.cell_BM_repulsion_strength = parameter; return; } - // dead cell phagocytosis - static int dead_phago_index = find_behavior_index( "phagocytose dead cell" ); - if( index == dead_phago_index ) - { pCell->phenotype.cell_interactions.dead_phagocytosis_rate = parameter; return; } + // apoptotic cell phagocytosis + static int apop_phago_index = find_behavior_index( "phagocytose apoptotic cell" ); + if( index == apop_phago_index ) + { pCell->phenotype.cell_interactions.apoptotic_phagocytosis_rate = parameter; return; } + + // necrotic cell phagocytosis + static int necro_phago_index = find_behavior_index( "phagocytose necrotic cell" ); + if( index == necro_phago_index ) + { pCell->phenotype.cell_interactions.necrotic_phagocytosis_rate = parameter; return; } + + // other dead cell phagocytosis + static int other_dead_phago_index = find_behavior_index( "phagocytose other dead cell" ); + if( index == other_dead_phago_index ) + { pCell->phenotype.cell_interactions.other_dead_phagocytosis_rate = parameter; return; } // phagocytosis of each live cell type static int first_phagocytosis_index = find_behavior_index( "phagocytose " + cell_definitions_by_type[0]->name ); @@ -1402,9 +1612,24 @@ void set_single_behavior( Cell* pCell, int index , double parameter ) { pCell->phenotype.mechanics.maximum_number_of_attachments = (int) parameter; } // cell damage rate (for effector attack) - static int damage_rate_ind = find_behavior_index( "damage rate"); + static int attack_damage_rate_ind = find_behavior_index( "attack damage rate"); + if( index == attack_damage_rate_ind ) + { pCell->phenotype.cell_interactions.attack_damage_rate = parameter; } + + // attack duration (for effector attack) + static int attack_duration_ind = find_behavior_index( "attack duration"); + if( index == attack_duration_ind ) + { pCell->phenotype.cell_interactions.attack_duration = parameter; } + + // damage rate (non-effector) + static int damage_rate_ind = find_behavior_index( "damage rate"); if( index == damage_rate_ind ) - { pCell->phenotype.cell_interactions.damage_rate = parameter; } + { pCell->phenotype.cell_integrity.damage_rate = parameter; } + + // damage repair rate (non-effector) + static int damage_repair_rate_ind = find_behavior_index( "damage repair rate"); + if( index == damage_repair_rate_ind ) + { pCell->phenotype.cell_integrity.damage_repair_rate = parameter; } return; } @@ -1520,9 +1745,17 @@ std::vector get_behaviors( Cell* pCell ) static int cbr_index = find_behavior_index("cell-BM repulsion"); parameters[cbr_index] = pCell->phenotype.mechanics.cell_BM_repulsion_strength; - // dead cell phagocytosis - static int dead_phag_index = find_behavior_index("phagocytose dead cell"); - parameters[dead_phag_index] = pCell->phenotype.cell_interactions.dead_phagocytosis_rate; + // apoptotic cell phagocytosis + static int apop_phag_index = find_behavior_index("phagocytose apoptotic cell"); + parameters[apop_phag_index] = pCell->phenotype.cell_interactions.apoptotic_phagocytosis_rate; + + // necrotic cell phagocytosis + static int necro_phag_index = find_behavior_index("phagocytose necrotic cell"); + parameters[necro_phag_index] = pCell->phenotype.cell_interactions.necrotic_phagocytosis_rate; + + // other dead cell phagocytosis + static int other_dead_phag_index = find_behavior_index("phagocytose other dead cell"); + parameters[other_dead_phag_index] = pCell->phenotype.cell_interactions.other_dead_phagocytosis_rate; // phagocytosis of each live cell type static int first_phagocytosis_index = find_behavior_index( "phagocytose " + cell_definitions_by_type[0]->name ); @@ -1582,9 +1815,21 @@ std::vector get_behaviors( Cell* pCell ) static int max_attachments_ind = find_behavior_index( "maximum number of cell attachments"); parameters[max_attachments_ind] = pCell->phenotype.mechanics.maximum_number_of_attachments; + // attack get damage rate + static int attack_damage_rate_ind = find_behavior_index( "attack damage rate"); + parameters[attack_damage_rate_ind] = pCell->phenotype.cell_interactions.attack_damage_rate; + + // get attack duration + static int attack_duration_ind = find_behavior_index( "attack duration"); + parameters[attack_duration_ind] = pCell->phenotype.cell_interactions.attack_duration; + // get damage rate static int damage_rate_ind = find_behavior_index( "damage rate"); - parameters[damage_rate_ind] = pCell->phenotype.cell_interactions.damage_rate; + parameters[damage_rate_ind] = pCell->phenotype.cell_integrity.damage_rate; + + // get damage repair rate + static int damage_repair_rate_ind = find_behavior_index( "damage repair rate"); + parameters[damage_repair_rate_ind] = pCell->phenotype.cell_integrity.damage_repair_rate; return parameters; } @@ -1709,10 +1954,20 @@ double get_single_behavior( Cell* pCell , int index ) if( index == cbr_index ) { return pCell->phenotype.mechanics.cell_BM_repulsion_strength; } - // dead cell phagocytosis - static int dead_phag_index = find_behavior_index("phagocytose dead cell" ); - if( index == dead_phag_index ) - { return pCell->phenotype.cell_interactions.dead_phagocytosis_rate; } + // apoptotic cell phagocytosis + static int apop_phag_index = find_behavior_index("phagocytose apoptotic cell" ); + if( index == apop_phag_index ) + { return pCell->phenotype.cell_interactions.apoptotic_phagocytosis_rate; } + + // necrotic cell phagocytosis + static int necro_phag_index = find_behavior_index("phagocytose necrotic cell" ); + if( index == necro_phag_index ) + { return pCell->phenotype.cell_interactions.necrotic_phagocytosis_rate; } + + // other dead cell phagocytosis + static int other_dead_phag_index = find_behavior_index("phagocytose other dead cell" ); + if( index == other_dead_phag_index ) + { return pCell->phenotype.cell_interactions.other_dead_phagocytosis_rate; } // phagocytosis of each live cell type static int first_phagocytosis_index = find_behavior_index( "phagocytose " + cell_definitions_by_type[0]->name ); @@ -1772,10 +2027,25 @@ double get_single_behavior( Cell* pCell , int index ) if( index == max_attachments_ind ) { return pCell->phenotype.mechanics.maximum_number_of_attachments; } + // get attack damage rate + static int attack_damage_rate_ind = find_behavior_index( "attack damage rate"); + if( index == attack_damage_rate_ind ) + { return pCell->phenotype.cell_interactions.attack_damage_rate; } + + // get attack duration + static int attack_duration_ind = find_behavior_index( "attack duration"); + if( index == attack_duration_ind ) + { return pCell->phenotype.cell_interactions.attack_duration; } + // get damage rate static int damage_rate_ind = find_behavior_index( "damage rate"); if( index == damage_rate_ind ) - { return pCell->phenotype.cell_interactions.damage_rate; } + { return pCell->phenotype.cell_integrity.damage_rate; } + + // get damage repair rate + static int damage_repair_rate_ind = find_behavior_index( "damage repair rate"); + if( index == damage_repair_rate_ind ) + { return pCell->phenotype.cell_integrity.damage_repair_rate; } return -1; } @@ -1830,7 +2100,6 @@ std::vector get_base_behaviors( Cell* pCell ) pCD->phenotype.secretion.secretion_rates.end(), parameters.begin()+first_secretion_index ); - // next m entries are secretion targets static int first_secretion_target_index = find_behavior_index( microenvironment.density_names[0] + " secretion target" ); // m; std::copy( pCD->phenotype.secretion.saturation_densities.begin(), @@ -1921,9 +2190,17 @@ std::vector get_base_behaviors( Cell* pCell ) static int cbr_index = find_behavior_index("cell-BM repulsion"); parameters[cbr_index] = pCD->phenotype.mechanics.cell_BM_repulsion_strength; - // dead cell phagocytosis - static int dead_phag_index = find_behavior_index("phagocytose dead cell"); - parameters[dead_phag_index] = pCD->phenotype.cell_interactions.dead_phagocytosis_rate; + // apoptotic cell phagocytosis + static int apop_phag_index = find_behavior_index("phagocytose apoptotic cell"); + parameters[apop_phag_index] = pCD->phenotype.cell_interactions.apoptotic_phagocytosis_rate; + + // necrotic cell phagocytosis + static int necro_phag_index = find_behavior_index("phagocytose necrotic cell"); + parameters[necro_phag_index] = pCD->phenotype.cell_interactions.necrotic_phagocytosis_rate; + + // other dead cell phagocytosis + static int other_dead_phag_index = find_behavior_index("phagocytose other dead cell"); + parameters[other_dead_phag_index] = pCD->phenotype.cell_interactions.other_dead_phagocytosis_rate; // phagocytosis of each live cell type static int first_phagocytosis_index = find_behavior_index( "phagocytose " + cell_definitions_by_type[0]->name ); @@ -1985,8 +2262,20 @@ std::vector get_base_behaviors( Cell* pCell ) parameters[max_attachments_ind] = pCD->phenotype.mechanics.maximum_number_of_attachments; // cell damage rate (effector attack) + static int attack_damage_rate_ind = find_behavior_index( "attack damage rate"); + parameters[attack_damage_rate_ind] = pCD->phenotype.cell_interactions.attack_damage_rate; + + // attack duration + static int attack_duration_ind = find_behavior_index( "attack duration"); + parameters[attack_duration_ind] = pCD->phenotype.cell_interactions.attack_duration; + + // damage rate (non-attack) static int damage_rate_ind = find_behavior_index( "damage rate"); - parameters[damage_rate_ind] = pCD->phenotype.cell_interactions.damage_rate; + parameters[damage_rate_ind] = pCD->phenotype.cell_integrity.damage_rate; + + // damage repair rate + static int damage_repair_rate_ind = find_behavior_index( "damage repair rate"); + parameters[damage_repair_rate_ind] = pCD->phenotype.cell_integrity.damage_repair_rate; return parameters; } @@ -2113,10 +2402,20 @@ double get_single_base_behavior( Cell* pCell , int index ) if( index == cbr_index ) { return pCD->phenotype.mechanics.cell_BM_repulsion_strength; } - // dead cell phagocytosis - static int dead_phag_index = find_behavior_index("phagocytose dead cell" ); - if( index == dead_phag_index ) - { return pCD->phenotype.cell_interactions.dead_phagocytosis_rate; } + // apoptotic cell phagocytosis + static int apop_phag_index = find_behavior_index("phagocytose apoptotic cell" ); + if( index == apop_phag_index ) + { return pCD->phenotype.cell_interactions.apoptotic_phagocytosis_rate; } + + // necrotic cell phagocytosis + static int necro_phag_index = find_behavior_index("phagocytose necrotic cell" ); + if( index == necro_phag_index ) + { return pCD->phenotype.cell_interactions.necrotic_phagocytosis_rate; } + + // other dead cell phagocytosis + static int other_dead_phag_index = find_behavior_index("phagocytose other dead cell" ); + if( index == other_dead_phag_index ) + { return pCD->phenotype.cell_interactions.other_dead_phagocytosis_rate; } // phagocytosis of each live cell type static int first_phagocytosis_index = find_behavior_index( "phagocytose " + cell_definitions_by_type[0]->name ); @@ -2160,7 +2459,6 @@ double get_single_base_behavior( Cell* pCell , int index ) if( start_immunogenicity_ind > -1 && index >= start_immunogenicity_ind && index < max_immunogenicity_ind ) { return pCD->phenotype.cell_interactions.immunogenicities[index-start_immunogenicity_ind]; } - // set cell attachment rate static int attachment_rate_ind = find_behavior_index( "cell attachment rate"); if( index == attachment_rate_ind ) @@ -2176,15 +2474,29 @@ double get_single_base_behavior( Cell* pCell , int index ) if( index == max_attachments_ind ) { return pCD->phenotype.mechanics.maximum_number_of_attachments; } - // cell damage rate (effector attack) + // cell attack damage rate (effector attack) + static int attack_damage_rate_ind = find_behavior_index( "attack damage rate"); + if( index == attack_damage_rate_ind ) + { return pCD->phenotype.cell_interactions.attack_damage_rate; } + + // cell attack duration + static int attack_duration_ind = find_behavior_index( "attack duration"); + if( index == attack_duration_ind ) + { return pCD->phenotype.cell_interactions.attack_duration; } + + // cell damage rate (non-effector) static int damage_rate_ind = find_behavior_index( "damage rate"); if( index == damage_rate_ind ) - { return pCD->phenotype.cell_interactions.damage_rate; } + { return pCD->phenotype.cell_integrity.damage_rate; } + + // cell damage repair rate (non-effector) + static int damage_repair_rate_ind = find_behavior_index( "damage repair rate"); + if( index == damage_repair_rate_ind ) + { return pCD->phenotype.cell_integrity.damage_repair_rate; } return -1; } - double get_single_base_behavior( Cell_Definition* pCD , int index ) { static int m = microenvironment.number_of_densities(); @@ -2307,10 +2619,20 @@ double get_single_base_behavior( Cell_Definition* pCD , int index ) if( index == cbr_index ) { return pCD->phenotype.mechanics.cell_BM_repulsion_strength; } - // dead cell phagocytosis - static int dead_phag_index = find_behavior_index("phagocytose dead cell" ); - if( index == dead_phag_index ) - { return pCD->phenotype.cell_interactions.dead_phagocytosis_rate; } + // apoptotic cell phagocytosis + static int apop_phag_index = find_behavior_index("phagocytose apoptotic cell" ); + if( index == apop_phag_index ) + { return pCD->phenotype.cell_interactions.apoptotic_phagocytosis_rate; } + + // necrotic cell phagocytosis + static int necro_phag_index = find_behavior_index("phagocytose necrotic cell" ); + if( index == necro_phag_index ) + { return pCD->phenotype.cell_interactions.necrotic_phagocytosis_rate; } + + // other dead cell phagocytosis + static int other_dead_phag_index = find_behavior_index("phagocytose other dead cell" ); + if( index == other_dead_phag_index ) + { return pCD->phenotype.cell_interactions.other_dead_phagocytosis_rate; } // phagocytosis of each live cell type static int first_phagocytosis_index = find_behavior_index( "phagocytose " + cell_definitions_by_type[0]->name ); @@ -2354,7 +2676,6 @@ double get_single_base_behavior( Cell_Definition* pCD , int index ) if( start_immunogenicity_ind > -1 && index >= start_immunogenicity_ind && index < max_immunogenicity_ind ) { return pCD->phenotype.cell_interactions.immunogenicities[index-start_immunogenicity_ind]; } - // set cell attachment rate static int attachment_rate_ind = find_behavior_index( "cell attachment rate"); if( index == attachment_rate_ind ) @@ -2370,10 +2691,25 @@ double get_single_base_behavior( Cell_Definition* pCD , int index ) if( index == max_attachments_ind ) { return pCD->phenotype.mechanics.maximum_number_of_attachments; } - // cell damage rate (effector attack) + // cell attack damage rate (effector attack) + static int attack_damage_rate_ind = find_behavior_index( "attack damage rate"); + if( index == attack_damage_rate_ind ) + { return pCD->phenotype.cell_interactions.attack_damage_rate; } + + // cell attack duration (effector attack) + static int attack_duration_ind = find_behavior_index( "attack duration"); + if( index == attack_duration_ind ) + { return pCD->phenotype.cell_interactions.attack_duration; } + + // damage rate (non-effector) static int damage_rate_ind = find_behavior_index( "damage rate"); if( index == damage_rate_ind ) - { return pCD->phenotype.cell_interactions.damage_rate; } + { return pCD->phenotype.cell_integrity.damage_rate; } + + // damage repair rate (non-effector) + static int damage_repair_rate_ind = find_behavior_index( "damage repair rate"); + if( index == damage_repair_rate_ind ) + { return pCD->phenotype.cell_integrity.damage_repair_rate; } return -1; } diff --git a/core/PhysiCell_signal_behavior.h b/core/PhysiCell_signal_behavior.h index 4ce422009..67a4fd7bf 100644 --- a/core/PhysiCell_signal_behavior.h +++ b/core/PhysiCell_signal_behavior.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2023, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/core/PhysiCell_standard_models.cpp b/core/PhysiCell_standard_models.cpp index 105329d5e..d2d0a33c4 100644 --- a/core/PhysiCell_standard_models.cpp +++ b/core/PhysiCell_standard_models.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -1208,10 +1208,38 @@ void standard_cell_cell_interactions( Cell* pCell, Phenotype& phenotype, double if( pTarget->phenotype.death.dead == true ) { - // dead phagocytosis - probability = phenotype.cell_interactions.dead_phagocytosis_rate * dt; - if( UniformRandom() < probability ) - { pCell->ingest_cell(pTarget); } + // ADD SPECIFIC PHAGOCYTOSIS HERE JUNE 2024 + + bool apoptotic = (bool) get_single_signal( pTarget , "apoptotic" ); + bool necrotic = (bool) get_single_signal( pTarget , "necrotic" ); + bool other = !(apoptotic || necrotic); // neither apoptotic nor necrotic + + // apoptotic phagocytosis + probability = phenotype.cell_interactions.apoptotic_phagocytosis_rate * dt; + if( UniformRandom() < probability && phagocytosed == false && apoptotic == true ) // add the prior phago check in July 2024 + { + pCell->ingest_cell(pTarget); + phagocytosed = true; // was missing : bugfix + // std::cout << "chomp apop " << PhysiCell_globals.current_time << " " << probability << std::endl; + } + + // necrotic phagocytosis + probability = phenotype.cell_interactions.necrotic_phagocytosis_rate * dt; + if( UniformRandom() < probability && phagocytosed == false && necrotic == true ) // add the prior phago check in July 2024 + { + pCell->ingest_cell(pTarget); + phagocytosed = true; // was missing : bugfix + // std::cout << "chomp necro " << PhysiCell_globals.current_time << " " << probability << std::endl; + } + + // other dead phagocytosis + probability = phenotype.cell_interactions.other_dead_phagocytosis_rate * dt; + if( UniformRandom() < probability && other == true && phagocytosed == false ) + { + pCell->ingest_cell(pTarget); + phagocytosed = true; // was missing : bugfix + // std::cout << "chomp other " << PhysiCell_globals.current_time << " " << probability << std::endl; + } } else { @@ -1231,13 +1259,49 @@ void standard_cell_cell_interactions( Cell* pCell, Phenotype& phenotype, double double attack_ij = phenotype.cell_interactions.attack_rate(type_name); double immunogenicity_ji = pTarget->phenotype.cell_interactions.immunogenicity(pCell->type_name); + // probability of STARTING an attack probability = attack_ij * immunogenicity_ji * dt; - - if( UniformRandom() < probability && attacked == false ) + if( attacked == false && pCell->phenotype.cell_interactions.pAttackTarget == NULL ) + { + if( UniformRandom() < probability ) + { + pCell->phenotype.cell_interactions.pAttackTarget = pTarget; + attacked = true; + /* + std::cout << "********* ********* ******** start atack **** " << PhysiCell_globals.current_time << std::endl; + std::cout + << "attack duration: " << pCell->phenotype.cell_interactions.attack_duration << " " + << "attack damage rate: " << pCell->phenotype.cell_interactions.attack_damage_rate << std::endl; + */ + // spring-link these cells + attach_cells_as_spring(pCell,pTarget); + } + } + +/* + // perform attack. be careful to not overcount it! + // make sure that (1) I have a non-null pAttackTarget, and that (2) we are talking about pTarget + // easiest way to do this is to check if the pAttackTarget = pTarget. IF pAttackTarget = NULL, it + // won't be true. If pAttackTarget is non-null, but we're looking ata different cell, also not true. + // if pAttackTarget = pTarget, then we're "looking" at the right cell, so do the attack. + if( pCell->phenotype.cell_interactions.pAttackTarget == pTarget ) { - pCell->attack_cell(pTarget,dt); - attacked = true; + pCell->attack_cell(pCell->phenotype.cell_interactions.pAttackTarget,dt); + attacked = true; // attacked at least one cell in this time step + + // probability of ending attack + // end attack if target is dead + probability = dt / (1e-15 + pCell->phenotype.cell_interactions.attack_duration); + + if( UniformRandom() < probability || pCell->phenotype.cell_interactions.pAttackTarget->phenotype.death.dead ) + { + std::cout << "********* ********* ******** attack done **** " << probability << " " << + pCell->phenotype.cell_interactions.pAttackTarget->state.total_attack_time << " " + << (int) pCell->phenotype.cell_interactions.pAttackTarget->phenotype.death.dead << std::endl; + pCell->phenotype.cell_interactions.pAttackTarget = NULL; + } } +*/ // fusion // assume you can only fuse once cell at a time @@ -1248,7 +1312,45 @@ void standard_cell_cell_interactions( Cell* pCell, Phenotype& phenotype, double fused = true; } } - } + } + + // move effector attack here. + + if( pCell->phenotype.cell_interactions.pAttackTarget != NULL ) + { + Cell* pTarget = pCell->phenotype.cell_interactions.pAttackTarget; + + pCell->attack_cell(pTarget,dt); + attacked = true; // attacked at least one cell in this time step + + // attack_cell + + // probability of ending attack + // end attack if target is dead + probability = dt / (1e-15 + pCell->phenotype.cell_interactions.attack_duration); + + + if( UniformRandom() < probability || pTarget->phenotype.death.dead ) + { + /* + std::cout << "********* ********* ******** attack done **** " << PhysiCell_globals.current_time << " " + << probability << " " + << "attack time: " << pTarget->state.total_attack_time << " " + << "damage: " << pTarget->phenotype.cell_integrity.damage << " " + << "dead? " << (int) pTarget->phenotype.death.dead << " " + << "damage delivered: " << pCell->phenotype.cell_interactions.total_damage_delivered << std::endl; + */ + + detach_cells_as_spring(pCell,pTarget); + + pCell->phenotype.cell_interactions.pAttackTarget = NULL; + } + } + + + // move decision if to end attack here. + + } void standard_cell_transformations( Cell* pCell, Phenotype& phenotype, double dt ) diff --git a/core/PhysiCell_standard_models.h b/core/PhysiCell_standard_models.h index b7187c520..5fedd182e 100644 --- a/core/PhysiCell_standard_models.h +++ b/core/PhysiCell_standard_models.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/core/PhysiCell_utilities.cpp b/core/PhysiCell_utilities.cpp index 33c3db7ad..d50fa812d 100644 --- a/core/PhysiCell_utilities.cpp +++ b/core/PhysiCell_utilities.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -78,9 +78,20 @@ thread_local bool local_pnrg_setup_done = false; unsigned int physicell_random_seed = 0; std::vector physicell_random_seeds; -void SeedRandom( unsigned int input ) -{ - physicell_random_seed = input; +void setup_rng( void ) +{ + static bool setup_done = false; + static bool warned = false; + if (!warned && setup_done) + { + std::cout << "WARNING: Setting the random seed again." << std::endl + << "\tYou probably have set a user parameter called random_seed." << std::endl + << "\tHere, we will use the random seed set in user parameters." << std::endl + << "\tHOWEVER, as of PhysiCell 1.14.0, you should set the random seed in the element in the config file." << std::endl + << "\tFuture versions of PhysiCell may throw an error here. Kindly remove the user parameter and just use the element." << std::endl; + warned = true; + } + std::cout << "Setting up RNG with seed " << physicell_random_seed << std::endl; physicell_PRNG_generator.seed( physicell_random_seed ); // now get number of threads and set up a seed for each thread @@ -107,39 +118,20 @@ void SeedRandom( unsigned int input ) for( int i=1; i < num_threads ; i++ ) { physicell_random_seeds[i] = seeds[i]; } + setup_done = true; return; } +void SeedRandom( unsigned int input ) +{ + physicell_random_seed = input; + return setup_rng(); +} + void SeedRandom( void ) { physicell_random_seed = std::chrono::system_clock::now().time_since_epoch().count(); - physicell_PRNG_generator.seed( physicell_random_seed ); - - // now get number of threads and set up a seed for each thread - int num_threads = PhysiCell_settings.omp_num_threads; - physicell_random_seeds.resize( num_threads, 0 ); - - // use std::seed_seq to create a sequence of seeds - // first, use the base seed - std::vector initial_sequence( num_threads , 0 ); - // int* initial_sequence; - // initial_sequence = new int [num_threads]; - for( int i=0; i < num_threads ; i++ ) - { initial_sequence[i] = physicell_random_seed+i; } - - // now we use std::seed_seq - std::seed_seq seq(initial_sequence.begin() , initial_sequence.end() ); - - // now we call the generator - std::vector seeds(num_threads); - seq.generate(seeds.begin(), seeds.end()); - - // now transfer these into the seeds for each thread - physicell_random_seeds[0] = physicell_random_seed; - for( int i=1; i < num_threads ; i++ ) - { physicell_random_seeds[i] = seeds[i]; } - - return; + return setup_rng(); } double UniformRandom_old_not_thread_safe() diff --git a/core/PhysiCell_utilities.h b/core/PhysiCell_utilities.h index 0ec74b481..7f83aaf5f 100644 --- a/core/PhysiCell_utilities.h +++ b/core/PhysiCell_utilities.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -83,7 +83,7 @@ namespace PhysiCell{ extern std::vector physicell_random_seeds; - +void setup_rng( void ); void SeedRandom( unsigned int input ); void SeedRandom( void ); diff --git a/licenses/MaBoSS.txt b/licenses/MaBoSS.txt new file mode 100644 index 000000000..4f82d5650 --- /dev/null +++ b/licenses/MaBoSS.txt @@ -0,0 +1,26 @@ +BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) + +Copyright (c) 2011-2023 Institut Curie, 26 rue d'Ulm, Paris, France +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + + Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + + 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. + + 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. \ No newline at end of file diff --git a/matlab/read_MultiCellDS_xml.m b/matlab/read_MultiCellDS_xml.m index 1d5f7ce50..3b639b43a 100644 --- a/matlab/read_MultiCellDS_xml.m +++ b/matlab/read_MultiCellDS_xml.m @@ -63,24 +63,24 @@ % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % -% Usage: +% Usage: % -% MCDS = read_MultiCellDS_xml( filename ) OR +% MCDS = read_MultiCellDS_xml( filename ) OR % % MCDS = read_MultiCellDS_xml( filename , directory ) % % MCDS.metadata has key metadata information % -% MCDS.mesh has the mesh, including: +% MCDS.mesh has the mesh, including: % X_coordinates, Y_coordinates, Z_coordinates % and a meshgrid [X,Y,Z] % -% MCDS.continuum_variables has densities. -% Access MCDS.continuum_variables(1), etc. +% MCDS.continuum_variables has densities. +% Access MCDS.continuum_variables(1), etc. % -% MCDS.discrete_cells has individual cells -% Access MCDS.discrete_cells.phenotype. etc. to get to arrays -% of cell phenotype properties. e.g., +% MCDS.discrete_cells has individual cells +% Access MCDS.discrete_cells.phenotype. etc. to get to arrays +% of cell phenotype properties. e.g., % % MCDS.discrete_cells.phenotype.geometrical_properties.volumes.total_volume(i) % @@ -90,382 +90,375 @@ % Licensed under 3-Clause BSD % -function MCDS = read_MultiCellDS_xml( filename , directory ) -tic; +function MCDS = read_MultiCellDS_xml_vdb( filename , directory ) +tic; if( nargin == 1 ) - directory = '.'; + directory = '.'; end -MCDS_constants = set_MCDS_constants(); +MCDS.constants = set_MCDS_constants(); -inputfile = sprintf('%s/%s', directory , filename); +inputfile = sprintf('%s/%s', directory , filename); -tree = xmlread( inputfile ); +tree = xmlread( inputfile ); node = tree.getFirstChild(); % MultiCellDS -node = node.getElementsByTagName('microenvironment').item(0); -node = node.getParentNode; +MCDS = locfn__read_microenvironment( MCDS, node, directory ); +MCDS = locfn__read_cellular_information( MCDS, node, directory ); + +toc + +% + + fprintf('\nSummary for file %s:\n' , inputfile ) ; + fprintf('Voxels: %u\n', length(MCDS.mesh.voxels) ) + fprintf('Substrates: %u\n' , length( MCDS.continuum_variables ) ) ; +str = sprintf( ' %s (%s)' , MCDS.continuum_variables(1).name , MCDS.continuum_variables(1).units ); +for i=2:length( MCDS.continuum_variables ) + str = sprintf( '%s, %s (%s)' , str, MCDS.continuum_variables(i).name , MCDS.continuum_variables(i).units ); +end +disp(str); +if( ~isempty( MCDS.discrete_cells ) ) + fprintf('Cells: %u\n' , size( MCDS.discrete_cells.state.position , 1) ) ; +else + disp( 'Cells: 0' ); +end + +end + +%% Local functions + +function MCDS = locfn__read_microenvironment( MCDS, multicell_ds_node, directory ) + +node = multicell_ds_node.getElementsByTagName('microenvironment').item(0); +node = node.getParentNode; % some key metadata -metadata_node = node.getParentNode.getElementsByTagName('metadata').item(0); -node1 = metadata_node.getElementsByTagName( 'current_time' ).item(0); -MCDS.metadata.current_time = str2num( node1.getTextContent ); -MCDS.metadata.time_units = char( node1.getAttribute( 'units' ) ); +metadata_node = node.getParentNode.getElementsByTagName('metadata').item(0); +node1 = metadata_node.getElementsByTagName( 'current_time' ).item(0); +MCDS.metadata.current_time = str2double( node1.getTextContent ); +MCDS.metadata.time_units = char( node1.getAttribute( 'units' ) ); -node1 = metadata_node.getElementsByTagName( 'current_runtime' ).item(0); -MCDS.metadata.current_runtime = str2num( node1.getTextContent ); -MCDS.metadata.runtime_units = char( node1.getAttribute( 'units' ) ); +node1 = metadata_node.getElementsByTagName( 'current_runtime' ).item(0); +MCDS.metadata.current_runtime = str2double( node1.getTextContent ); +MCDS.metadata.runtime_units = char( node1.getAttribute( 'units' ) ); -MCDS.metadata.spatial_units = []; +MCDS.metadata.spatial_units = []; -% mylist = node.getElementsByTagName('microenvironment'); microenvironment_node = node.getElementsByTagName('microenvironment').item(0); -node = microenvironment_node.getElementsByTagName( 'mesh' ).item(0); % mesh level -MCDS.metadata.spatial_units = char( node.getAttribute( 'units' ) ); +node = microenvironment_node.getElementsByTagName( 'mesh' ).item(0); % mesh level +MCDS.metadata.spatial_units = char( node.getAttribute( 'units' ) ); -% first, read the mesh +% first, read the mesh -meshtype = node.getAttribute( 'type' ); -Cartesian = false; +meshtype = node.getAttribute( 'type' ); +Cartesian = false; -MCDS.mesh.X_coordinates = []; -MCDS.mesh.Y_coordinates = []; -MCDS.mesh.Z_coordinates = []; +MCDS.mesh.X_coordinates = []; +MCDS.mesh.Y_coordinates = []; +MCDS.mesh.Z_coordinates = []; if( strcmp( meshtype, 'Cartesian' ) ) - str = node.getElementsByTagName( 'x_coordinates' ).item(0).getTextContent; - MCDS.mesh.X_coordinates = str2num( str ); + str = node.getElementsByTagName( 'x_coordinates' ).item(0).getTextContent; + MCDS.mesh.X_coordinates = str2num( str ); %#ok str is vector of doubles + + str = node.getElementsByTagName( 'y_coordinates' ).item(0).getTextContent; + MCDS.mesh.Y_coordinates = str2num( str ); - str = node.getElementsByTagName( 'y_coordinates' ).item(0).getTextContent; - MCDS.mesh.Y_coordinates = str2num( str ); + str = node.getElementsByTagName( 'z_coordinates' ).item(0).getTextContent; + MCDS.mesh.Z_coordinates = str2num( str ); %#ok str is vector of doubles - str = node.getElementsByTagName( 'z_coordinates' ).item(0).getTextContent; - MCDS.mesh.Z_coordinates = str2num( str ); - - Cartesian = true; + Cartesian = true; end -blank_voxel = []; +blank_voxel = []; blank_voxel.center = [0 0 0]; -blank_voxel.volume = 0; +blank_voxel.volume = 0; -MCDS.mesh.voxels = []; +MCDS.mesh.voxels = []; -voxeltype = node.getElementsByTagName( 'voxels' ).item(0).getAttribute( 'type' ); +voxeltype = node.getElementsByTagName( 'voxels' ).item(0).getAttribute( 'type' ); -if( strcmp( voxeltype , 'xml' ) ) +if( strcmp( voxeltype , 'xml' ) ) % if voxels stored in the XML - mylist = node.getElementsByTagName( 'voxel' ); - - numvoxels = mylist.getLength; - MCDS.mesh.voxels = repmat( blank_voxel , 1 , numvoxels ); - - for i=0:mylist.getLength - 1 - MCDS.mesh.voxels(i+1).center = str2num( mylist.item(i).getElementsByTagName( 'center' ).item(0).getTextContent ); - MCDS.mesh.voxels(i+1).volume = str2num( mylist.item(i).getElementsByTagName( 'volume' ).item(0).getTextContent ); + voxel_tags = node.getElementsByTagName( 'voxel' ); + + numvoxels = voxel_tags.getLength; + MCDS.mesh.voxels = repmat( blank_voxel , 1 , numvoxels ); + + for i=0:voxel_tags.getLength - 1 + MCDS.mesh.voxels(i+1).center = str2double( voxel_tags.item(i).getElementsByTagName( 'center' ).item(0).getTextContent ); + MCDS.mesh.voxels(i+1).volume = str2double( voxel_tags.item(i).getElementsByTagName( 'volume' ).item(0).getTextContent ); end else - % voxels are stored in a mat file - filename = node.getElementsByTagName('voxels' ).item(0).getElementsByTagName( 'filename' ).item(0).getTextContent ; - %MAT = struct2array( load( char(filename) ) ); - - filename = sprintf( '%s/%s', directory , char(filename)); - MAT = load(filename); % load(char(filename)); - MAT = MAT.mesh; % use this instead of struct2array for better octave compatibility - [m,numvoxels] = size(MAT); - - MCDS.mesh.voxels = repmat( blank_voxel , 1 , numvoxels ); - + % voxels are stored in a mat file + filename = node.getElementsByTagName('voxels' ).item(0).getElementsByTagName( 'filename' ).item(0).getTextContent ; + %MAT = struct2array( load( char(filename) ) ); + + filename = sprintf( '%s/%s', directory , char(filename)); + MAT = load(filename); % load(char(filename)); + MAT = MAT.mesh; % use this instead of struct2array for better octave compatibility + numvoxels = size(MAT, 2); + + MCDS.mesh.voxels = repmat( blank_voxel , 1 , numvoxels ); + for i=1:numvoxels - MCDS.mesh.voxels(i).center = MAT(1:3,i)'; - MCDS.mesh.voxels(i).volume = MAT(4,i); + MCDS.mesh.voxels(i).center = MAT(1:3,i)'; + MCDS.mesh.voxels(i).volume = MAT(4,i); end - clear MAT; end -% meshgrid -[MCDS.mesh.X , MCDS.mesh.Y , MCDS.mesh.Z] = meshgrid( MCDS.mesh.X_coordinates , MCDS.mesh.Y_coordinates , MCDS.mesh.Z_coordinates ); +% meshgrid +[MCDS.mesh.X , MCDS.mesh.Y , MCDS.mesh.Z] = meshgrid( MCDS.mesh.X_coordinates , MCDS.mesh.Y_coordinates , MCDS.mesh.Z_coordinates ); -% now, read the various densities +% now, read the various densities node = node.getParentNode; -node = node.getElementsByTagName( 'variables' ).item(0); - -mylist = node.getElementsByTagName( 'variable' ); - -MCDS.continuum_variables = []; - -for i=0:mylist.getLength - 1 - MCDS.continuum_variables(i+1).name = char( mylist.item(i).getAttribute('name' ) ); - MCDS.continuum_variables(i+1).units = char( mylist.item(i).getAttribute('units' ) ); - MCDS.continuum_variables(i+1).diffusion_coefficient = str2num( mylist.item(i).getElementsByTagName( 'diffusion_coefficient' ).item(0).getTextContent ); - MCDS.continuum_variables(i+1).decay_rate = str2num( mylist.item(i).getElementsByTagName( 'decay_rate' ).item(0).getTextContent ); - - if( Cartesian ) - MCDS.continuum_variables(i+1).data = zeros( size(MCDS.mesh.X) ); % only for Cartesian - MCDS.continuum_variables(i+1).raw_data = []; % only for non-Cartesian - else - MCDS.continuum_variables(i+1).data = []; % only for Cartesian - MCDS.continuum_variables(i+1).raw_data = zeros( 1 , length( MCDS.mesh.voxels) ); % only for non-Cartesian - end +node = node.getElementsByTagName( 'variables' ).item(0); + +variable_tags = node.getElementsByTagName( 'variable' ); + +MCDS.continuum_variables = []; + +for i=0:variable_tags.getLength - 1 + MCDS.continuum_variables(i+1).name = char( variable_tags.item(i).getAttribute('name' ) ); + MCDS.continuum_variables(i+1).units = char( variable_tags.item(i).getAttribute('units' ) ); + MCDS.continuum_variables(i+1).diffusion_coefficient = str2double( variable_tags.item(i).getElementsByTagName( 'diffusion_coefficient' ).item(0).getTextContent ); + MCDS.continuum_variables(i+1).decay_rate = str2double( variable_tags.item(i).getElementsByTagName( 'decay_rate' ).item(0).getTextContent ); + + if( Cartesian ) + MCDS.continuum_variables(i+1).data = zeros( size(MCDS.mesh.X) ); % only for Cartesian + MCDS.continuum_variables(i+1).raw_data = []; % only for non-Cartesian + else + MCDS.continuum_variables(i+1).data = []; % only for Cartesian + MCDS.continuum_variables(i+1).raw_data = zeros( 1 , length( MCDS.mesh.voxels) ); % only for non-Cartesian + end end -% now get the actual data -node = node.getParentNode; % scale -node = node.getElementsByTagName( 'data' ).item(0); -datatype = node.getAttribute( 'type' ); +% now get the actual data +node = node.getParentNode; % scale +node = node.getElementsByTagName( 'data' ).item(0); +datatype = node.getAttribute( 'type' ); if( strcmp( datatype, 'xml' ) ) - % data stored in xml data vectors - mylist = node.getElementsByTagName( 'data_vector' ); - numvars = length( MCDS.continuum_variables ); - temp = zeros( 1 , numvars ); - xyz = zeros(1,3); - + % data stored in xml data vectors + data_vector_tags = node.getElementsByTagName( 'data_vector' ); + numvars = length( MCDS.continuum_variables ); + if( Cartesian ) - for i=0:mylist.getLength - 1 - n = str2num( mylist.item(i).getAttribute( 'voxel_ID' ) )+1; % which voxel - xyz = MCDS.mesh.voxels(n).center ; % get its center coordinate - temp = str2num( mylist.item(i).getTextContent ) ; % get the data vector + for i=0:data_vector_tags.getLength - 1 + n = str2double( data_vector_tags.item(i).getAttribute( 'voxel_ID' ) )+1; % which voxel + xyz = MCDS.mesh.voxels(n).center ; % get its center coordinate + temp = str2double( data_vector_tags.item(i).getTextContent ) ; % get the data vector % figure out the X,Y,Z indices - ii = find( abs( MCDS.mesh.X_coordinates - xyz(1) ) < 1e-10 , 1); - jj = find( abs( MCDS.mesh.Y_coordinates - xyz(2) ) < 1e-10 , 1); - kk = find( abs( MCDS.mesh.Z_coordinates - xyz(3) ) < 1e-10 , 1); + ii = find( abs( MCDS.mesh.X_coordinates - xyz(1) ) < 1e-10 , 1); + jj = find( abs( MCDS.mesh.Y_coordinates - xyz(2) ) < 1e-10 , 1); + kk = find( abs( MCDS.mesh.Z_coordinates - xyz(3) ) < 1e-10 , 1); for j=1:numvars - MCDS.continuum_variables(j).data(jj,ii,kk) = temp(j); + MCDS.continuum_variables(j).data(jj,ii,kk) = temp(j); % Matlab is STOOOPID. data d_ijk at (x(i), y(j) , z(k) ) is - % stored in data(j,i,k) instead of data(i,j,k). + % stored in data(j,i,k) instead of data(i,j,k). end end else % non-Cartesian -- just keep the pointcloud of data - for i=0:mylist.getLength - 1 - n = str2num( mylist.item(i).getAttribute( 'voxel_ID' ) )+1; % which voxel - temp = str2num( mylist.item(i).getTextContent ) ; % get the data vector + for i=0:data_vector_tags.getLength - 1 + n = str2double( data_vector_tags.item(i).getAttribute( 'voxel_ID' ) )+1; % which voxel + temp = str2double( data_vector_tags.item(i).getTextContent ) ; % get the data vector for j=1:numvars - MCDS.continuum_variables(j).raw_data(n) = temp(j); + MCDS.continuum_variables(j).raw_data(n) = temp(j); end end end - -end - -% data stored in a matlab file + +end + +% data stored in a matlab file if( strcmp( datatype, 'matlab' ) ) - % data stored in a matlab file data vectors - - - % voxels are stored in a mat file - filename = node.getElementsByTagName( 'filename' ).item(0).getTextContent; - % MAT = struct2array( load( char(filename) ) ); - filename = sprintf( '%s/%s', directory , char(filename)); - MAT = load(filename); % load(char(filename)); - MAT = MAT.multiscale_microenvironment; - [m,n] = size(MAT); - - numvars = length( MCDS.continuum_variables ); - numvoxels = length( MCDS.mesh.voxels ); - xyz = zeros(1,3); - - if( Cartesian ) - for i=1:numvoxels - xyz = MCDS.mesh.voxels(i).center; % get its center coordinate - - % figure out the X,Y,Z indices - ii = find( abs( MCDS.mesh.X_coordinates - xyz(1) ) < 1e-10 , 1); - jj = find( abs( MCDS.mesh.Y_coordinates - xyz(2) ) < 1e-10 , 1); - kk = find( abs( MCDS.mesh.Z_coordinates - xyz(3) ) < 1e-10 , 1); - - for j=1:numvars - MCDS.continuum_variables(j).data(jj,ii,kk) = MAT(4+j,i); + % data stored in a matlab file data vectors + + + % voxels are stored in a mat file + filename = node.getElementsByTagName( 'filename' ).item(0).getTextContent; + % MAT = struct2array( load( char(filename) ) ); + filename = sprintf( '%s/%s', directory , char(filename)); + MAT = load(filename); % load(char(filename)); + MAT = MAT.multiscale_microenvironment; + + numvars = length( MCDS.continuum_variables ); + numvoxels = length( MCDS.mesh.voxels ); + + if( Cartesian ) + for i=1:numvoxels + xyz = MCDS.mesh.voxels(i).center; % get its center coordinate + + % figure out the X,Y,Z indices + ii = find( abs( MCDS.mesh.X_coordinates - xyz(1) ) < 1e-10 , 1); + jj = find( abs( MCDS.mesh.Y_coordinates - xyz(2) ) < 1e-10 , 1); + kk = find( abs( MCDS.mesh.Z_coordinates - xyz(3) ) < 1e-10 , 1); + + for j=1:numvars + MCDS.continuum_variables(j).data(jj,ii,kk) = MAT(4+j,i); % Matlab is STOOOPID. data d_ijk at (x(i), y(j) , z(k) ) is - % stored in data(j,i,k) instead of data(i,j,k). - end - end - end - - if( Cartesian == false ) - % non-Cartesian -- just keep the pointcloud of data - for i=1:numvoxels + % stored in data(j,i,k) instead of data(i,j,k). + end + end + end + + if( ~Cartesian ) + % non-Cartesian -- just keep the pointcloud of data + for i=1:numvoxels for j=1:numvars - MCDS.continuum_variables(j).raw_data(i) = MAT(4+j,i); + MCDS.continuum_variables(j).raw_data(i) = MAT(4+j,i); end - end - end - -end + end + end + +end + +end + +function MCDS = locfn__read_cellular_information( MCDS, node, directory ) % read cell populations -node = node.getParentNode.getParentNode.getParentNode; -node = node.getElementsByTagName( 'cell_populations' ).item(0) ; +% node = node.getParentNode.getParentNode.getParentNode; +node = node.getElementsByTagName( 'cellular_information' ).item(0) ; +node = node.getElementsByTagName( 'cell_populations' ).item(0); -% creating "blank" structures and preallocating memory cuts -% processing time. +% creating "blank" structures and preallocating memory cuts +% processing time. -blank_phenotype.geometrical_properties.volumes.total_volume = 0; -blank_phenotype.geometrical_properties.lengths.radius = 0; +blank_phenotype.geometrical_properties.volumes.total_volume = 0; +blank_phenotype.geometrical_properties.lengths.radius = 0; blank_transport_variable.name = ''; blank_transport_variable.export_rate = 0; blank_transport_variable.import_rate = 0; blank_transport_variable.saturation_density = 0; -num_substrates = length( MCDS.continuum_variables ); +num_substrates = length( MCDS.continuum_variables ); for k=1:num_substrates - blank_phenotype.transport_processes.variable(k) = blank_transport_variable; - blank_phenotype.transport_processes.variable(k).name = MCDS.continuum_variables(k).name; + blank_phenotype.transport_processes.variable(k) = blank_transport_variable; + blank_phenotype.transport_processes.variable(k).name = MCDS.continuum_variables(k).name; end blank_state.position = [0 0 0]; -blank_cell.phenotype = blank_phenotype; +blank_cell.phenotype = blank_phenotype; blank_cell.state = blank_state; -mylist = []; -if( isempty( node ) == false ) - mylist = node.getElementsByTagName( 'cell_population' ); +cell_population_tags = []; +if( ~isempty( node ) ) + cell_population_tags = node.getElementsByTagName( 'cell_population' ); end - -MCDS.discrete_cells = blank_cell; +MCDS.discrete_cells = blank_cell; +if( ~isempty( cell_population_tags ) ) + for cell_pop_ind=0:cell_population_tags.getLength-1 + node1 = cell_population_tags.item(cell_pop_ind); % cell_population + poptype = char( node1.getAttribute('type') ); -if( isempty( mylist ) == false ) - - for i=0:mylist.getLength-1 - node1 = mylist.item(i); % cell_population - poptype = char( node1.getAttribute('type') ); - - individual_type = false; - if( strcmp( poptype , 'individual' ) ) - individual_type = true; - end - - custom_node = node1.getElementsByTagName( 'custom' ).item(0); - custom = false; - if( isempty( custom_node ) == false ) - custom = true; - end - - if( individual_type == true && custom == false ) - mylist1 = mylist.item(i).getElementsByTagName( 'cell' ); - - numcells = mylist1.getLength; - - MCDS.discrete_cells.phenotype.geometrical_properties.volumes.total_volume = zeros( 1, numcells ); - MCDS.discrete_cells.phenotype.geometrical_properties.lengths.radius = zeros( 1, numcells ); - for j=1:num_substrates - MCDS.discrete_cells.phenotype.transport_processes.variable(j).export_rate = zeros(1,numcells); - MCDS.discrete_cells.phenotype.transport_processes.variable(j).import_rate = zeros(1,numcells); - MCDS.discrete_cells.phenotype.transport_processes.variable(j).saturation_density = zeros(1,numcells); - end - - MCDS.discrete_cells.state.position = zeros( numcells , 3 ); - - my_constant = 3.0 / (4.0*pi); - - for j=0:mylist1.getLength-1 - node2 = mylist1.item(j).getElementsByTagName('phenotype').item(0); - node3 = node2.getElementsByTagName('geometrical_properties').item(0); - node3 = node3.getElementsByTagName('volumes').item(0).getElementsByTagName('total_volume').item(0); - vol = str2num( node3.getTextContent ); - - MCDS.discrete_cells.phenotype.geometrical_properties.volumes.total_volume(j+1) = vol; + is_individual_type = strcmp( poptype , 'individual' ); + + custom_node = node1.getElementsByTagName( 'custom' ).item(0); + has_custom = ~isempty( custom_node ); + + if( is_individual_type && ~has_custom ) + cell_tags = cell_population_tags.item(cell_pop_ind).getElementsByTagName( 'cell' ); + + numcells = cell_tags.getLength; + + MCDS.discrete_cells.phenotype.geometrical_properties.volumes.total_volume = zeros( 1, numcells ); + MCDS.discrete_cells.phenotype.geometrical_properties.lengths.radius = zeros( 1, numcells ); + for j=1:num_substrates + MCDS.discrete_cells.phenotype.transport_processes.variable(j).export_rate = zeros(1,numcells); + MCDS.discrete_cells.phenotype.transport_processes.variable(j).import_rate = zeros(1,numcells); + MCDS.discrete_cells.phenotype.transport_processes.variable(j).saturation_density = zeros(1,numcells); + end + + MCDS.discrete_cells.state.position = zeros( numcells , 3 ); + + for j=0:cell_tags.getLength-1 + node2 = cell_tags.item(j).getElementsByTagName('phenotype').item(0); + node3 = node2.getElementsByTagName('geometrical_properties').item(0); + node3 = node3.getElementsByTagName('volumes').item(0).getElementsByTagName('total_volume').item(0); + vol = str2double( node3.getTextContent ); + + MCDS.discrete_cells.phenotype.geometrical_properties.volumes.total_volume(j+1) = vol; MCDS.discrete_cells.phenotype.geometrical_properties.lengths.radius(j+1) = ( 3/(4*vol*pi) )^(1/3); - % transport processes + % transport processes node3 = node2.getElementsByTagName('transport_processes' ).item(0); mylist2 = node3.getElementsByTagName( 'variable' ); for k = 0:mylist2.getLength -1 % MCDS.discrete_cells.cells(j+1).phenotype.transport_processes.variable(k+1).name = char( mylist2.item(k).getAttribute( 'name' ) ); - MCDS.discrete_cells.phenotype.transport_processes.variable(k+1).export_rate(j+1) = str2num( mylist2.item(k).getElementsByTagName('export_rate').item(0).getTextContent ); - MCDS.discrete_cells.phenotype.transport_processes.variable(k+1).import_rate(j+1) = str2num( mylist2.item(k).getElementsByTagName('import_rate').item(0).getTextContent ); - MCDS.discrete_cells.phenotype.transport_processes.variable(k+1).saturation_density(j+1) = str2num( mylist2.item(k).getElementsByTagName('saturation_density').item(0).getTextContent ); + MCDS.discrete_cells.phenotype.transport_processes.variable(k+1).export_rate(j+1) = str2double( mylist2.item(k).getElementsByTagName('export_rate').item(0).getTextContent ); + MCDS.discrete_cells.phenotype.transport_processes.variable(k+1).import_rate(j+1) = str2double( mylist2.item(k).getElementsByTagName('import_rate').item(0).getTextContent ); + MCDS.discrete_cells.phenotype.transport_processes.variable(k+1).saturation_density(j+1) = str2double( mylist2.item(k).getElementsByTagName('saturation_density').item(0).getTextContent ); end - node2 = node2.getParentNode.getParentNode; + node2 = node2.getParentNode.getParentNode; node3 = node2.getElementsByTagName( 'state' ).item(0); - MCDS.discrete_cells.state.position(j+1,:) = str2num( node3.getElementsByTagName( 'position' ).item(0).getTextContent ); + MCDS.discrete_cells.state.position(j+1,:) = str2double( node3.getElementsByTagName( 'position' ).item(0).getTextContent ); end end - % deal with the case where we stored a simplified data structure + % deal with the case where we stored a simplified data structure % as a matlab file - if( individual_type == true && custom == true ) - - % first, get the BioFVM stuff - mylist_temp = custom_node.getElementsByTagName( 'simplified_data' ); - filename = []; - if( isempty( mylist_temp ) == false ) - filename = char( mylist_temp.item(0).getElementsByTagName( 'filename').item(0).getTextContent ); - end - - if( isempty( filename ) == false ) - % load the matlab file, and determine the number of cells - % MAT = struct2array( load( filename ) ); - filename = sprintf( '%s/%s', directory , char(filename)); - MAT = load(filename); % load(char(filename)); - MAT = MAT.basic_agents; % use this instead of struct2array for better octave compatibility - - [m,numcells] = size(MAT); - - % ID, x,y,z, volume, src,sink,saturation (multiple) - - MCDS.discrete_cells.phenotype.geometrical_properties.volumes.total_volume = zeros( 1, numcells ); - MCDS.discrete_cells.phenotype.geometrical_properties.lengths.radius = zeros( 1, numcells ); - for j=1:num_substrates - MCDS.discrete_cells.phenotype.transport_processes.variable(j).export_rate = zeros(1,numcells); - MCDS.discrete_cells.phenotype.transport_processes.variable(j).import_rate = zeros(1,numcells); - MCDS.discrete_cells.phenotype.transport_processes.variable(j).saturation_density = zeros(1,numcells); - end - - MCDS.discrete_cells.state.position = zeros( numcells , 3 ); - - % fill out the cells - MCDS.discrete_cells.state.position(:,1:3) = MAT(2:4,:)'; - MCDS.discrete_cells.phenotype.geometrical_properties.volumes.total_volume = MAT(5,:)'; - my_constant = 3.0 / 4.0 / pi; - MCDS.discrete_cells.phenotype.geometrical_properties.lengths.radius = ( my_constant * MCDS.discrete_cells.phenotype.geometrical_properties.volumes.total_volume ).^(1/3); - - num_substrates = length( MCDS.continuum_variables ); - - ind = 5; - for j=1:num_substrates - ind = 6+3*(j-1); - MCDS.discrete_cells.phenotype.transport_processes.variable(j).export_rate = MAT(ind,:)'; - MCDS.discrete_cells.phenotype.transport_processes.variable(j).import_rate = MAT(ind+1,:)'; - MCDS.discrete_cells.phenotype.transport_processes.variable(j).saturation_density = MAT(ind+2,:)'; - end - - clear MAT; - - end - % start + if( is_individual_type && has_custom ) - % now get the PhysiCell matlab extended data - filename = []; - if( isempty( mylist_temp ) == false ) - filename = char( mylist_temp.item(1).getElementsByTagName( 'filename').item(0).getTextContent ); + % first, get the BioFVM stuff + simplified_data_tags = custom_node.getElementsByTagName( 'simplified_data' ); + filename = []; + if( ~isempty( simplified_data_tags ) ) + filename = char( simplified_data_tags.item(0).getElementsByTagName( 'filename').item(0).getTextContent ); end - - if( isempty( filename ) == false ) - disp( filename ) - % load the matlab file, and determine the number of cells - % MAT = struct2array( load( filename ) ); - filename = sprintf( '%s/%s', directory , char(filename)); - MAT = load(filename); % load(char(filename)); - MAT = MAT.cells; % use this instead of struct2array for better octave compatibility - - [m,numcells] = size(MAT); - - % % 1 + + if( ~isempty( filename ) ) + % load the matlab file, and determine the number of cells + % MAT = struct2array( load( filename ) ); + filename = sprintf( '%s/%s', directory , char(filename)); + MAT = load(filename); % load(char(filename)); + MAT = MAT.cells; % use this instead of struct2array for better octave compatibility + + numcells = size(MAT, 2); + + % ID, x,y,z, volume, src,sink,saturation (multiple) + + MCDS.discrete_cells.phenotype.geometrical_properties.volumes.total_volume = zeros( 1, numcells ); + MCDS.discrete_cells.phenotype.geometrical_properties.lengths.radius = zeros( 1, numcells ); + for j=1:num_substrates + MCDS.discrete_cells.phenotype.transport_processes.variable(j).export_rate = zeros(1,numcells); + MCDS.discrete_cells.phenotype.transport_processes.variable(j).import_rate = zeros(1,numcells); + MCDS.discrete_cells.phenotype.transport_processes.variable(j).saturation_density = zeros(1,numcells); + end + + MCDS.discrete_cells.state.position = zeros( numcells , 3 ); + + % fill out the cells + MCDS.discrete_cells.state.position(:,1:3) = MAT(2:4,:)'; + MCDS.discrete_cells.phenotype.geometrical_properties.volumes.total_volume = MAT(5,:)'; + my_constant = 3.0 / 4.0 / pi; + MCDS.discrete_cells.phenotype.geometrical_properties.lengths.radius = ( my_constant * MCDS.discrete_cells.phenotype.geometrical_properties.volumes.total_volume ).^(1/3); + + num_substrates = length( MCDS.continuum_variables ); + + for j=1:num_substrates + ind = 6+3*(j-1); + MCDS.discrete_cells.phenotype.transport_processes.variable(j).export_rate = MAT(ind,:)'; + MCDS.discrete_cells.phenotype.transport_processes.variable(j).import_rate = MAT(ind+1,:)'; + MCDS.discrete_cells.phenotype.transport_processes.variable(j).saturation_density = MAT(ind+2,:)'; + end + + % % 1 % % 2:4 % % 5 @@ -473,117 +466,86 @@ MCDS.discrete_cells.metadata.type = int8( MAT(6,:) ); % - MCDS.discrete_cells.phenotype.cycle.cycle_model = int8( MAT(7,:) ); + MCDS.discrete_cells.phenotype.cycle.cycle_model = int8( MAT(7,:) ); % - MCDS.discrete_cells.phenotype.cycle.current_phase = int8( MAT(8,:) ); + MCDS.discrete_cells.phenotype.cycle.current_phase = int8( MAT(8,:) ); % - MCDS.discrete_cells.phenotype.cycle.elapsed_time_in_phase = ( MAT(9,:) ); - + MCDS.discrete_cells.phenotype.cycle.elapsed_time_in_phase = ( MAT(9,:) ); + % - MCDS.discrete_cells.phenotype.geometrical_properties.volumes.nuclear = ( MAT(10,:) ); + MCDS.discrete_cells.phenotype.geometrical_properties.volumes.nuclear = ( MAT(10,:) ); % - MCDS.discrete_cells.phenotype.geometrical_properties.volumes.cytoplasmic = ( MAT(11,:) ); + MCDS.discrete_cells.phenotype.geometrical_properties.volumes.cytoplasmic = ( MAT(11,:) ); % - MCDS.discrete_cells.phenotype.geometrical_properties.volumes.fluid_fraction = ( MAT(12,:) ); + MCDS.discrete_cells.phenotype.geometrical_properties.volumes.fluid_fraction = ( MAT(12,:) ); % - MCDS.discrete_cells.phenotype.geometrical_properties.volumes.calcified_fraction = ( MAT(13,:) ); + MCDS.discrete_cells.phenotype.geometrical_properties.volumes.calcified_fraction = ( MAT(13,:) ); % - MCDS.discrete_cells.state.orientation = MAT(14:16,:)'; + MCDS.discrete_cells.state.orientation = MAT(14:16,:)'; % - MCDS.discrete_cells.state.polarity = MAT(17,:); + MCDS.discrete_cells.state.polarity = MAT(17,:); % - MCDS.discrete_cells.phenotype.motility.migration_speed = MAT(18,:); + MCDS.discrete_cells.phenotype.motility.migration_speed = MAT(18,:); % - MCDS.discrete_cells.phenotype.motility.motility_vector = MAT(19:21,:)'; + MCDS.discrete_cells.phenotype.motility.motility_vector = MAT(19:21,:)'; % - MCDS.discrete_cells.phenotype.motility.migration_bias = MAT(22,:); + MCDS.discrete_cells.phenotype.motility.migration_bias = MAT(22,:); % - MCDS.discrete_cells.phenotype.motility.motility_bias_direction = MAT(23:25,:)'; + MCDS.discrete_cells.phenotype.motility.motility_bias_direction = MAT(23:25,:)'; % - MCDS.discrete_cells.phenotype.motility.persistence_time = MAT(26,:); + MCDS.discrete_cells.phenotype.motility.persistence_time = MAT(26,:); % % now get custom variables - - simplified_data_node1 = custom_node.getElementsByTagName( 'simplified_data' ).item(1); - labels_node = simplified_data_node1.getElementsByTagName( 'labels' ).item(0); - - labels = labels_node.getElementsByTagName( 'label' ) ; - - custom_variables_done = false; - max_label_index = labels.getLength-1; - - custom = []; - - i = 19; - new_variable_index = 1; - while( i <= max_label_index && custom_variables_done == false ) - mysize = int8( str2num( labels.item(i).getAttribute('size') ) ); - myindex = int8( str2num( labels.item(i).getAttribute('index')) )+1; - - newname = char(labels.item(i).getTextContent); - newname = strrep( newname, ' ', '_' ); % replace( newname, ' ', '_' ); - - newdata = MAT(myindex:myindex+mysize-1,:); - if( mysize > 1 ) - newdata = newdata'; - end - - custom = setfield( custom, newname , newdata ); - - i = i+1; - end - MCDS.discrete_cells.custom = custom; - clear MAT; - - end - - - % end - - end - end + % simplified_data_node1 = custom_node.getElementsByTagName( 'simplified_data' ).item(1); + labels_node = simplified_data_tags.item(0).getElementsByTagName( 'labels' ).item(0); -else - MCDS.discrete_cells = []; -end + labels = labels_node.getElementsByTagName( 'label' ) ; + + max_label_index = labels.getLength-1; -clear tree + custom = []; + for label_ind = 19:max_label_index + mysize = int8( str2double( labels.item(label_ind).getAttribute('size') ) ); + myindex = int8( str2double( labels.item(label_ind).getAttribute('index')) )+1; -% figure out which cells are dead or live + newname = char(labels.item(label_ind).getTextContent); + newname = strrep( newname, ' ', '_' ); % replace( newname, ' ', '_' ); -MCDS.discrete_cells.dead_cells = find( MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS_constants.apoptosis_death_model | ... - MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS_constants.necrosis_death_model ); -MCDS.discrete_cells.live_cells = find( MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS_constants.advanced_Ki67_cycle_model | ... - MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS_constants.basic_Ki67_cycle_model | ... - MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS_constants.flow_cytometry_cycle_model | ... - MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS_constants.flow_cytometry_separated_cycle_model | ... - MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS_constants.live_apoptotic_cycle_model | ... - MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS_constants.total_cells_cycle_model | ... - MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS_constants.live_cells_cycle_model ); + newdata = MAT(myindex:myindex+mysize-1,:); + if( mysize > 1 ) + newdata = newdata'; + end + custom.(newname) = newdata; + end + MCDS.discrete_cells.custom = custom; + end -toc -% + % end + + end + + end -disp( sprintf('\nSummary for file %s:' , inputfile ) ); -disp( sprintf('Voxels: %u', length(MCDS.mesh.voxels) ) ) -disp( sprintf('Substrates: %u' , length( MCDS.continuum_variables ) ) ); -str = sprintf( ' %s (%s)' , MCDS.continuum_variables(1).name , MCDS.continuum_variables(1).units ); -for i=2:length( MCDS.continuum_variables ) - str = sprintf( '%s, %s (%s)' , str, MCDS.continuum_variables(i).name , MCDS.continuum_variables(i).units ); -end -disp(str); -if( isempty( MCDS.discrete_cells ) == false ) - disp( sprintf('Cells: %u' , size( MCDS.discrete_cells.state.position , 1) ) ); else - disp( 'Cells: 0' ); + MCDS.discrete_cells = []; end +% figure out which cells are dead or live +MCDS.discrete_cells.dead_cells = find( MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS.constants.apoptosis_death_model | ... + MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS.constants.necrosis_death_model ); +MCDS.discrete_cells.live_cells = find( MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS.constants.advanced_Ki67_cycle_model | ... + MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS.constants.basic_Ki67_cycle_model | ... + MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS.constants.flow_cytometry_cycle_model | ... + MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS.constants.flow_cytometry_separated_cycle_model | ... + MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS.constants.live_apoptotic_cycle_model | ... + MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS.constants.total_cells_cycle_model | ... + MCDS.discrete_cells.phenotype.cycle.cycle_model == MCDS.constants.live_cells_cycle_model ); -return; +end diff --git a/modules/PhysiCell_MultiCellDS.cpp b/modules/PhysiCell_MultiCellDS.cpp index f9843b81e..30e29ce01 100644 --- a/modules/PhysiCell_MultiCellDS.cpp +++ b/modules/PhysiCell_MultiCellDS.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2022, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -66,706 +66,17 @@ */ #include "PhysiCell_MultiCellDS.h" - +#ifdef ADDON_PHYSIBOSS +#include "../addons/PhysiBoSS/src/maboss_intracellular.h" +#endif namespace PhysiCell{ void add_PhysiCell_cell_to_open_xml_pugi( pugi::xml_document& xml_dom, Cell& C ); // not implemented -- future edition void add_PhysiCell_cells_to_open_xml_pugi( pugi::xml_document& xml_dom, std::string filename_base, Microenvironment& M ) { - static double temp_zero = 0.0; - - if( BioFVM::save_cell_data == false ) - { return; } - - pugi::xml_node root = xml_dom.child("MultiCellDS") ; - pugi::xml_node node = root.child( "cellular_information" ); - root = node; - - // Let's reduce memory allocations and sprintf calls. - // This reduces execution time by around 30%. (e.g., write time for 1,000,000 cells decreases from - // 45 to 30 seconds on an older machine. - static char* temp; - static bool initialized = false; - - static char rate_chars [1024]; - static char volume_chars [1024]; - static char diffusion_chars [1024]; - if( !initialized ) - { - temp = new char [1024]; - initialized = true; - - sprintf( rate_chars, "1/%s" , M.time_units.c_str() ); - sprintf( volume_chars, "%s^3" , M.spatial_units.c_str() ); - sprintf( diffusion_chars , "%s^2/%s", M.spatial_units.c_str() , M.time_units.c_str() ); - } - - node = node.child( "cell_populations" ); - if( !node ) - { - node = root.append_child( "cell_populations" ); - } - root = node; // root = cell_populations - - // if we are using the customized matlab data, do it here. - if( BioFVM::save_cells_as_custom_matlab == true || 1 == 1 ) - { - node = node.child( "cell_population" ); - if( !node ) - { - node = root.append_child( "cell_population" ); - pugi::xml_attribute attrib = node.append_attribute( "type" ); - attrib.set_value( "individual" ); - } - - if( !node.child( "custom" ) ) - { - node.append_child( "custom" ); - } - node = node.child( "custom" ); - - // look for a node called simplified_data, with source = PhysiCell - - pugi::xml_node node_temp = node.child( "simplified_data" ); - bool temp_search_done = false; - while( !temp_search_done && node_temp ) - { - if( node_temp ) - { - pugi::xml_attribute attribute_temp = node_temp.attribute( "source" ); - if( attribute_temp ) - { - if( strcmp( attribute_temp.value() , "PhysiCell" ) == 0 ) - { - temp_search_done = true; - } - else - { - node_temp = node_temp.next_sibling(); - } - } - } - else - { - node_temp = (pugi::xml_node) NULL; - } - } - - if( !node_temp ) - { - node_temp = node.append_child( "simplified_data" ); - pugi::xml_attribute attrib = node_temp.append_attribute( "type" ); - attrib.set_value( "matlab" ) ; - - attrib = node_temp.append_attribute( "source" ); - attrib.set_value("PhysiCell"); - - int index = 0; - int size = 1; - - pugi::xml_node node_temp1 = node_temp.append_child( "labels" ); - - // ID,x,y,z,total volume - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "ID" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - size = 3; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "position" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "total_volume" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - // type, cycle model, current phase, elapsed time in phase, - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "cell_type" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "cycle_model" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "current_phase" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "elapsed_time_in_phase" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - // nuclear volume, cytoplasmic volume, fluid fraction, calcified fraction, - - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "nuclear_volume" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "cytoplasmic_volume" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "fluid_fraction" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "calcified_fraction" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - // orientation, polarity - - size = 3; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "orientation" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "polarity" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - // motility - - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "migration_speed" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - size = 3; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "motility_vector" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "migration_bias" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - size = 3; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "motility_bias_direction" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "persistence_time" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "motility_reserved" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - extern std::unordered_map cell_definition_indices_by_name; - int number_of_cell_defs = cell_definition_indices_by_name.size(); - int number_of_substrates = microenvironment.number_of_densities(); - - // new in 2022: chemotactic sensitivies - size = number_of_substrates; // number_of_cell_defs; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "chemotactic_sensitivities" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - // new in 2022: adhesive affinities - size = number_of_cell_defs; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "adhesive_affinities" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - - // new in 2022: interactions : - // // phagocytosis parameters (e.g., macrophages) - - // dead_phagocytosis_rate - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "dead_phagocytosis_rate" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - - // live_phagocytosis_rates - size = number_of_cell_defs; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "live_phagocytosis_rates" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - // attack_rates - size = number_of_cell_defs; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "attack_rates" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - // damage_rate - size = 1; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "damage_rate" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - // fusion_rates - size = number_of_cell_defs; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "fusion_rates" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - // new in 2022: transformations : - size = number_of_cell_defs; - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( "transformation_rates" ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - - // custom variables - for( int i=0; i < (*all_cells)[0]->custom_data.variables.size(); i++ ) - { - size = 1; - char szTemp [1024]; - strcpy( szTemp, (*all_cells)[0]->custom_data.variables[i].name.c_str() ); - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( szTemp ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - } - // custom vector variables - for( int i=0; i < (*all_cells)[0]->custom_data.vector_variables.size(); i++ ) - { - size = (*all_cells)[0]->custom_data.vector_variables[i].value.size(); -; char szTemp [1024]; - strcpy( szTemp, (*all_cells)[0]->custom_data.vector_variables[i].name.c_str() ); - node_temp1 = node_temp1.append_child( "label" ); - node_temp1.append_child( pugi::node_pcdata ).set_value( szTemp ); - attrib = node_temp1.append_attribute( "index" ); - attrib.set_value( index ); - attrib = node_temp1.append_attribute( "size" ); - attrib.set_value( size ); - node_temp1 = node_temp1.parent(); - index += size; - } - - } - node = node_temp; - - if( !node.child( "filename" ) ) - { - node.append_child( "filename" ); - } - node = node.child( "filename" ); - - // next, filename - char filename [1024]; - sprintf( filename , "%s_cells_physicell.mat" , filename_base.c_str() ); - - /* store filename without the relative pathing (if any) */ - char filename_without_pathing [1024]; - char* filename_start = strrchr( filename , '/' ); - if( filename_start == NULL ) - { filename_start = filename; } - else - { filename_start++; } - strcpy( filename_without_pathing , filename_start ); - - if( !node.first_child() ) - { - node.append_child( pugi::node_pcdata ).set_value( filename_without_pathing ); // filename ); - } - else - { - node.first_child().set_value( filename_without_pathing ); // filename ); - } - - // next, create a matlab structure and save it! - - // order: ID,x,y,z,total volume, (same as BioFVM custom data, but instead of secretions ...) - // type, cycle model, current phase, elapsed time in phase, - // nuclear volume, cytoplasmic volume, fluid fraction, calcified fraction, - // orientation, polarity - - int number_of_data_entries = (*all_cells).size(); - int size_of_each_datum = 1 + 3 + 1 // ID, x,y,z, total_volume - +1+1+1+1 // cycle information - +1+1+1+1 // volume information - +3+1 // orientation, polarity; - +1+3+1+3+1+1; // motility - - // figure out size of 2022 phenotype items - extern std::unordered_map cell_definition_indices_by_name; - int number_of_substrates = microenvironment.number_of_densities(); - int number_of_cell_defs = cell_definition_indices_by_name.size(); - - // advanced chemotaxis - size_of_each_datum += - number_of_substrates; // number_of_cell_defs; - - // cell adhesion affinities - size_of_each_datum += - number_of_cell_defs; - - // cell interactions: - size_of_each_datum += - 1+number_of_cell_defs+number_of_cell_defs+1+number_of_cell_defs; - - // cell transformations; - size_of_each_datum += number_of_cell_defs; - - // figure out size of custom data. for now, - // assume all the cells have teh same custom data as - // cell #0 - int custom_data_size = (*all_cells)[0]->custom_data.variables.size(); - for( int i=0; i < (*all_cells)[0]->custom_data.vector_variables.size(); i++ ) - { - custom_data_size += (*all_cells)[0]->custom_data.vector_variables[i].value.size(); - } - size_of_each_datum += custom_data_size; - - - FILE* fp = write_matlab_header( size_of_each_datum, number_of_data_entries, filename, "cells" ); - if( fp == NULL ) - { - std::cout << std::endl << "Error: Failed to open " << filename << " for MAT writing." << std::endl << std::endl; - - std::cout << std::endl << "Error: We're not writing data like we expect. " << std::endl - << "Check to make sure your save directory exists. " << std::endl << std::endl - << "I'm going to exit with a crash code of -1 now until " << std::endl - << "you fix your directory. Sorry!" << std::endl << std::endl; - exit(-1); - } - Cell* pCell; + std::cout << "Warning: " << __FUNCTION__ << " is deprecated and has been removed." << std::endl; - // storing data as cols (each column is a cell) - for( int i=0; i < number_of_data_entries ; i++ ) - { - // ID, x,y,z, total_volume - double ID_temp = (double) (*all_cells)[i]->ID; - fwrite( (char*) &( ID_temp ) , sizeof(double) , 1 , fp ); - - pCell = (*all_cells)[i]; - - fwrite( (char*) &( pCell->position[0] ) , sizeof(double) , 1 , fp ); - fwrite( (char*) &( pCell->position[1] ) , sizeof(double) , 1 , fp ); - fwrite( (char*) &( pCell->position[2] ) , sizeof(double) , 1 , fp ); - double dTemp = pCell->phenotype.volume.total; // get_total_volume(); - fwrite( (char*) &( dTemp ) , sizeof(double) , 1 , fp ); - - // type, cycle model, current phase, elapsed time in phase, - dTemp = (double) pCell->type; - fwrite( (char*) &( dTemp ) , sizeof(double) , 1 , fp ); // cell type - - dTemp = (double) pCell->phenotype.cycle.model().code; - fwrite( (char*) &( dTemp ) , sizeof(double) , 1 , fp ); // cycle model - - dTemp = (double) pCell->phenotype.cycle.current_phase().code; - fwrite( (char*) &( dTemp ) , sizeof(double) , 1 , fp ); // current phase - - // dTemp = pCell->phenotype.cycle.phases[pCell->phenotype.current_phase_index].elapsed_time; - fwrite( (char*) &( pCell->phenotype.cycle.data.elapsed_time_in_phase ) , sizeof(double) , 1 , fp ); // elapsed time in phase - - // volume information - // nuclear volume, cytoplasmic volume, fluid fraction, calcified fraction, - fwrite( (char*) &( pCell->phenotype.volume.nuclear ) , sizeof(double) , 1 , fp ); // nuclear volume - - fwrite( (char*) &( pCell->phenotype.volume.cytoplasmic ) , sizeof(double) , 1 , fp ); // cytoplasmic volume - - fwrite( (char*) &( pCell->phenotype.volume.fluid_fraction ) , sizeof(double) , 1 , fp ); // fluid fraction - - fwrite( (char*) &( pCell->phenotype.volume.calcified_fraction ) , sizeof(double) , 1 , fp ); // calcified fraction - - // orientation, polarity; - fwrite( (char*) &( pCell->state.orientation[0] ) , sizeof(double) , 1 , fp ); - fwrite( (char*) &( pCell->state.orientation[1] ) , sizeof(double) , 1 , fp ); - fwrite( (char*) &( pCell->state.orientation[2] ) , sizeof(double) , 1 , fp ); - fwrite( (char*) &( pCell->phenotype.geometry.polarity ) , sizeof(double) , 1 , fp ); - - - - // motility information - fwrite( (char*) &( pCell->phenotype.motility.migration_speed ) , sizeof(double) , 1 , fp ); // speed - fwrite( (char*) &( pCell->phenotype.motility.motility_vector[0] ) , sizeof(double) , 1 , fp ); // velocity - fwrite( (char*) &( pCell->phenotype.motility.motility_vector[1] ) , sizeof(double) , 1 , fp ); - fwrite( (char*) &( pCell->phenotype.motility.motility_vector[2] ) , sizeof(double) , 1 , fp ); - fwrite( (char*) &( pCell->phenotype.motility.migration_bias ) , sizeof(double) , 1 , fp ); // bias (0 to 1) - fwrite( (char*) &( pCell->phenotype.motility.migration_bias_direction[0] ) , sizeof(double) , 1 , fp ); // bias direction - fwrite( (char*) &( pCell->phenotype.motility.migration_bias_direction[1] ) , sizeof(double) , 1 , fp ); - fwrite( (char*) &( pCell->phenotype.motility.migration_bias_direction[2] ) , sizeof(double) , 1 , fp ); - fwrite( (char*) &( pCell->phenotype.motility.persistence_time ) , sizeof(double) , 1 , fp ); // persistence - fwrite( (char*) &( temp_zero ) , sizeof(double) , 1 , fp ); // reserved for "time in this direction" - - - // new in 2022: interactions : - // fwrite( (char*) &( pCell->phenotype.motility.chemotactic_sensitivities ) , sizeof(double) , number_of_cell_defs , fp ); // chemotactic_sensitivities - fwrite( (char*) &( pCell->phenotype.motility.chemotactic_sensitivities ) , sizeof(double) , number_of_substrates , fp ); // chemotactic_sensitivities - fwrite( (char*) &( pCell->phenotype.mechanics.cell_adhesion_affinities ) , sizeof(double) , number_of_cell_defs , fp ); // cell_adhesion_affinities - fwrite( (char*) &( pCell->phenotype.cell_interactions.dead_phagocytosis_rate ) , sizeof(double) , 1 , fp ); // dead_phagocytosis_rate - fwrite( (char*) &( pCell->phenotype.cell_interactions.live_phagocytosis_rates ) , sizeof(double) , number_of_cell_defs , fp ); // live_phagocytosis_rates - fwrite( (char*) &( pCell->phenotype.cell_interactions.attack_rates ) , sizeof(double) , number_of_cell_defs , fp ); // attack_rates - fwrite( (char*) &( pCell->phenotype.cell_interactions.damage_rate ) , sizeof(double) , 1 , fp ); // damage_rate - fwrite( (char*) &( pCell->phenotype.cell_interactions.fusion_rates ) , sizeof(double) , number_of_cell_defs , fp ); // fusion_rates - fwrite( (char*) &( pCell->phenotype.cell_transformations.transformation_rates ) , sizeof(double) , number_of_cell_defs , fp ); // transformation_rates - - // custom variables - for( int j=0 ; j < pCell->custom_data.variables.size(); j++ ) - { - fwrite( (char*) &( pCell->custom_data.variables[j].value ) , sizeof(double) , 1 , fp ); - } - - // custom vector variables - for( int j=0 ; j < pCell->custom_data.vector_variables.size(); j++ ) - { - for( int k=0; k < pCell->custom_data.vector_variables[j].value.size(); k++ ) - { - fwrite( (char*) &( pCell->custom_data.vector_variables[j].value[k] ) , sizeof(double) , 1 , fp ); - } - } - - } - - fclose( fp ); - - - return; - } - - // if there's a list, clear it out - node = node.child( "cell_population" ); - if( node ) - { - node = node.parent(); - node.remove_child( node.child( "cell_population" ) ); - } - node = root.append_child( "cell_population" ); - pugi::xml_attribute attrib = node.append_attribute( "type" ); - attrib.set_value( "individual" ); - - // now go through all cells - - root = node; - for( int i=0; i < (*all_cells).size(); i++ ) - { - node = node.append_child( "cell" ); - attrib = node.append_attribute( "ID" ); - attrib.set_value( (*all_cells)[i]->ID ); - - node = node.append_child( "phenotype_dataset" ); - node = node.append_child( "phenotype" ); // add a type? - - // add all the transport information - node = node.append_child( "transport_processes" ); - - // add variables and their source/sink/saturation values (per-cell basis) - for( int j=0; j < M.number_of_densities() ; j++ ) - { - node = node.append_child( "variable" ); - attrib = node.append_attribute( "name" ); - attrib.set_value( M.density_names[j].c_str() ); - // ChEBI would go here later - attrib = node.append_attribute( "ID" ); - attrib.set_value( j ); - - node = node.append_child( "export_rate" ); - attrib = node.append_attribute( "units" ); - attrib.set_value( rate_chars ); - // sprintf( temp , "%f" , all_basic_agents[i]->get_total_volume() * (*all_basic_agents[i]->secretion_rates)[j] ); - sprintf( temp , "%f" , (*all_cells)[i]->phenotype.volume.total * (*(*all_cells)[i]->secretion_rates)[j] ); - node.append_child( pugi::node_pcdata ).set_value( temp ); - node = node.parent( ); - - node = node.append_child( "import_rate" ); - attrib = node.append_attribute( "units" ); - attrib.set_value( rate_chars ); - sprintf( temp, "%f" , (*all_cells)[i]->phenotype.volume.total * (*(*all_cells)[i]->uptake_rates)[j] ); - node.append_child( pugi::node_pcdata ).set_value( temp ); - node = node.parent(); - - node = node.append_child( "saturation_density" ); - attrib = node.append_attribute( "units" ); - attrib.set_value( M.density_units[j].c_str() ); - sprintf( temp, "%f" , (*(*all_cells)[i]->saturation_densities)[j] ); - node.append_child( pugi::node_pcdata ).set_value( temp ); - node = node.parent(); - - node = node.parent(); // back up to transport processes - } - - node = node.parent(); // back up to phenotype - - // add size information - node = node.append_child( "geometrical_properties" ); - node = node.append_child("volumes"); - node = node.append_child("total_volume"); - attrib = node.append_attribute("units"); - attrib.set_value( volume_chars ); - sprintf( temp, "%f" , (*all_cells)[i]->phenotype.volume.total ); - node.append_child( pugi::node_pcdata ).set_value( temp ); - node = node.parent(); - node = node.parent(); - - node = node.parent(); // back up to geometrical_properties - - node = node.parent(); // back up to phenotype - - node = node.parent(); // back up to phenotype_dataset - - // add position information - node = node.append_child( "state"); - node = node.append_child( "position" ); - attrib = node.append_attribute( "units" ); - attrib.set_value( M.spatial_units.c_str() ); - - // vector3_to_list( all_basic_agents[i]->position , temp , ' '); - sprintf( temp , "%.7e %.7e %.7e" , (*all_cells)[i]->position[0], (*all_cells)[i]->position[1], (*all_cells)[i]->position[2] ); - node.append_child( pugi::node_pcdata ).set_value( temp ); - - node = root; - } - return; } @@ -773,6 +84,8 @@ void add_PhysiCell_to_open_xml_pugi( pugi::xml_document& xml_dom , std::string f void save_PhysiCell_to_MultiCellDS_xml_pugi( std::string filename_base , Microenvironment& M , double current_simulation_time) { + std::cout << __LINE__ << " " << __FUNCTION__ << std::endl; + // start with a standard BioFVM save add_BioFVM_to_open_xml_pugi( BioFVM::biofvm_doc , filename_base , current_simulation_time , M ); @@ -794,6 +107,8 @@ void save_PhysiCell_to_MultiCellDS_xml_pugi( std::string filename_base , Microen void save_PhysiCell_to_MultiCellDS_v2( std::string filename_base , Microenvironment& M , double current_simulation_time) { + // std::cout << __LINE__ << " " << __FUNCTION__ << std::endl; // we use this one July 2024 + // set some metadata BioFVM::MultiCellDS_version_string = "2"; @@ -841,8 +156,44 @@ void save_PhysiCell_to_MultiCellDS_v2( std::string filename_base , Microenvironm return; } +/* look here */ + +int total_data_size( std::vector& data_sizes ) +{ + // std::cout << __LINE__ << " " << __FUNCTION__ << std::endl; // we use this one July 2024 + + // current index: + int total = 0; + for( int i = 0 ; i < data_sizes.size(); i++ ) + { total += data_sizes[i]; } + return total; +} + +void add_variable_to_labels( std::vector& data_names , + std::vector& data_units, + std::vector& data_start_indices, + std::vector& data_sizes, + std::string var_name, std::string var_units, int var_size ) +{ + // std::cout << __LINE__ << " " << __FUNCTION__ << std::endl; // we use this one July 2024 + + // current index: + int index = 0; + for( int i = 0 ; i < data_sizes.size(); i++ ) + { index += data_sizes[i]; } + + data_names.push_back( var_name ); + data_units.push_back( var_units ); + data_sizes.push_back( var_size ); + data_start_indices.push_back( index ); + + return; +} + void add_PhysiCell_cells_to_open_xml_pugi_v2( pugi::xml_document& xml_dom, std::string filename_base, Microenvironment& M ) { + // std::cout << __LINE__ << " " << __FUNCTION__ << std::endl; // we use this one July 2024 + // get number of substrates static int m = microenvironment.number_of_densities(); // number_of_substrates // get number of cell types @@ -856,15 +207,41 @@ void add_PhysiCell_cells_to_open_xml_pugi_v2( pugi::xml_document& xml_dom, std:: static int cell_data_size = 0; - - static bool legends_done= false; + static bool legend_done = false; static std::vector data_names; static std::vector data_units; static std::vector data_start_indices; static std::vector data_sizes; + // set up the cell types labels + + static bool cell_types_legend_done = false; + static std::vector cell_type_names; + static std::vector cell_type_indices; + static std::vector cell_type_IDs; + + if( cell_types_legend_done == false ) + { + cell_type_names.clear(); + cell_type_IDs.clear(); + cell_type_indices.clear(); + + for( int j=0; j < cell_definitions_by_index.size() ; j++ ) + { + Cell_Definition* pCD = cell_definitions_by_index[j]; + int index = j; + int type = pCD->type; + std::string name = pCD->name; + cell_type_names.push_back( name ); + cell_type_IDs.push_back( type ); + cell_type_indices.push_back( index); + } + + cell_types_legend_done = true; + } + // set up the labels - if( legends_done == false ) + if( legend_done == false ) { data_names.clear(); data_sizes.clear(); @@ -876,708 +253,341 @@ void add_PhysiCell_cells_to_open_xml_pugi_v2( pugi::xml_document& xml_dom, std:: int size; int index = 0; - // compatibilty : first 17 entries // ID - name = "ID"; - size = 1; - units="none"; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "ID" , "none" , 1 ) ; + // - name = "position"; - size = 3; - units="microns"; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "position" , "microns" , 3 ); + // - name = "total_volume"; - units = "cubic microns"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "total_volume" , "cubic microns" , 1 ); + // - name = "cell_type"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "cell_type" , "none" , 1 ); + // - name = "cycle_model"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "cycle_model" , "none" , 1 ); + // - name = "current_phase"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "current_phase" , "none" , 1 ); + // - name = "elapsed_time_in_phase"; - units = "min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "elapsed_time_in_phase" , "min" , 1 ); + // - name = "nuclear_volume"; - units = "cubic microns"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "nuclear_volume" , "cubic microns" , 1 ); // - name = "cytoplasmic_volume"; - units = "cubic microns"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "cytoplasmic_volume" , "cubic microns" , 1 ); + // - name = "fluid_fraction"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "fluid_fraction" , "none" , 1 ); + // - name = "calcified_fraction"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "calcified_fraction" , "none" , 1 ); + // - name = "orientation"; - units = "none"; - size = 3; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "orientation" , "none" , 3 ); + // - name = "polarity"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - -/* state variables to save */ -// state - // velocity // 3 - name = "velocity"; - units = "micron/min"; - size = 3; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // pressure // 1 - name = "pressure"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // number of nuclei // 1 - name = "number_of_nuclei"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // damage // 1 - name = "damage"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // total attack time // 1 - name = "total_attack_time"; - units = "min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // contact_with_basement_membrane // 1 - name = "contact_with_basement_membrane"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "polarity" , "none" , 1 ); + + /* state variables to save */ + // state + // velocity // 3 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "velocity" , "micron/min" , 3 ); + + // pressure // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "pressure" , "none" , 1 ); + + // number of nuclei // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "number_of_nuclei" , "none" , 1 ); + + // damage // 1 // this is in cell_integrity now + // add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + // "damage" , "none" , 1 ); + + + // total attack time // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "total_attack_time" , "min" , 1 ); + + // contact_with_basement_membrane // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "contact_with_basement_membrane" , "none" , 1 ); + + /* now go through phenotype and state */ + // cycle + // cycle model // already above + // current phase // already above + // current exit rate // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "current_cycle_phase_exit_rate" , "1/min" , 1 ); + + // elapsed time in phase // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "elapsed_time_in_phase" , "min" , 1 ); + + // death + // live or dead state // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "dead" , "none" , 1 ); + + // current death model // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "current_death_model" , "none" , 1 ); + + // death rates // nd + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "death_rates" , "1/min" , nd ); + // + + // volume () + // cytoplasmic_biomass_change_rate // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "cytoplasmic_biomass_change_rate" , "1/min" , 1 ); + + // nuclear_biomass_change_rate; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "nuclear_biomass_change_rate" , "1/min" , 1 ); + + // fluid_change_rate; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "fluid_change_rate" , "1/min" , 1 ); + + // calcification_rate; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "calcification_rate" , "1/min" , 1 ); + + // target_solid_cytoplasmic; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "target_solid_cytoplasmic" , "cubic microns" , 1 ); + + // target_solid_nuclear; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "target_solid_nuclear" , "cubic microns" , 1 ); + + // target_fluid_fraction; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "target_fluid_fraction" , "none" , 1 ); + + // geometry + // radius //1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "radius" , "microns" , 1 ); + + // nuclear_radius // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "nuclear_radius" , "microns" , 1 ); + + // surface_area //1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "surface_area" , "square microns" , 1 ); + + // polarity // arleady done + + // mechanics + // cell_cell_adhesion_strength; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "cell_cell_adhesion_strength" , "micron/min" , 1 ); + + // cell_BM_adhesion_strength; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "cell_BM_adhesion_strength" , "micron/min" , 1 ); + + // cell_cell_repulsion_strength; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "cell_cell_repulsion_strength" , "micron/min" , 1 ); + + // cell_BM_repulsion_strength; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "cell_BM_repulsion_strength" , "micron/min" , 1 ); + + // std::vector cell_adhesion_affinities; // n + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "cell_adhesion_affinities" , "none" , n ); + + // relative_maximum_adhesion_distance; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "relative_maximum_adhesion_distance" , "none" , 1 ); + + // maximum_number_of_attachments; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "maximum_number_of_attachments" , "none" , 1 ); + + // attachment_elastic_constant; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "attachment_elastic_constant" , "1/min" , 1 ); + + // attachment_rate; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "attachment_rate" , "1/min" , 1 ); + + // detachment_rate; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "detachment_rate" , "1/min" , 1 ); + + // Motility + // is_motile // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "is_motile" , "none" , 1 ); + + // persistence_time; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "persistence_time" , "min" , 1 ); + + // migration_speed; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "migration_speed" , "micron/min" , 1 ); + + // std::vector migration_bias_direction; // 3 // motility_bias_direction originally + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "migration_bias_direction" , "none" , 3 ); + + // migration_bias; //1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "migration_bias" , "none" , 1 ); + + // std::vector motility_vector; // 3 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "motility_vector" , "micron/min" , 3 ); + + // chemotaxis_index; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "chemotaxis_index" , "none" , 1 ); + + // chemotaxis_direction; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "chemotaxis_direction" , "none" , 1 ); + + // advanced chemotaxis + // std::vector chemotactic_sensitivities; // m + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "chemotactic_sensitivities" , "none" , m ); + + // secretion + // std::vector secretion_rates; // m + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "secretion_rates" , "1/min" , m ); + + // std::vector uptake_rates; // m + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "uptake_rates" , "1/min" , m ); + + // std::vector saturation_densities; // m + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "saturation_densities" , "stuff/cubic micron" , m ); + + // std::vector net_export_rates; // m + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "net_export_rates" , "stuff/min" , m ); + + // molecular + // internalized_total_substrates // m + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "internalized_total_substrates" , "stuff" , m ); + + // fraction_released_at_death // m + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "fraction_released_at_death" , "none" , m ); + + // fraction_transferred_when_ingested //m + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "fraction_transferred_when_ingested" , "none" , m ); + + // interactions +/* + // dead_phagocytosis_rate; // 1 + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "dead_phagocytosis_rate" , "1/min" , 1 ); +*/ + // apoptotic phagocytosis_rate // new + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "apoptotic_phagocytosis_rate" , "1/min" , 1 ); -/* now go through phenotype and state */ -// cycle - // cycle model // already above - // current phase // already above - // current exit rate // 1 - name = "current_cycle_phase_exit_rate"; - units = "1/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // elapsed time in phase // 1 - name = "elapsed_time_in_phase"; - units = "min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + // necrotic phagocytosis rate // new + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "necrotic_phagocytosis_rate" , "1/min" , 1 ); -// death - // live or dead state // 1 - name = "dead"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // current death model // 1 - name = "current_death_model"; // - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // death rates // nd - name = "death_rates"; - units = "1/min"; - size = nd; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; -// - -// volume () - // cytoplasmic_biomass_change_rate // 1 - name = "cytoplasmic_biomass_change_rate"; - units = "1/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // nuclear_biomass_change_rate; // 1 - name = "nuclear_biomass_change_rate"; - units = "1/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // fluid_change_rate; // 1 - name = "fluid_change_rate"; - units = "1/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // calcification_rate; // 1 - name = "calcification_rate"; - units = "1/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // target_solid_cytoplasmic; // 1 - name = "target_solid_cytoplasmic"; - units = "cubic microns"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // target_solid_nuclear; // 1 - name = "target_solid_nuclear"; - units = "cubic microns"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // target_fluid_fraction; // 1 - name = "target_fluid_fraction"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + // other dead phagocytosis rate // new + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "other_dead_phagocytosis_rate" , "1/min" , 1 ); - // geometry - // radius //1 - name = "radius"; - units = "microns"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // nuclear_radius // 1 - name = "nuclear_radius"; - units = "microns"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // surface_area //1 - name = "surface_area"; - units = "square microns"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // polarity // arleady done + // std::vector live_phagocytosis_rates; // n + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "live_phagocytosis_rates" , "1/min" , n ); - // mechanics - // cell_cell_adhesion_strength; // 1 - name = "cell_cell_adhesion_strength"; - units = "micron/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // cell_BM_adhesion_strength; // 1 - name = "cell_BM_adhesion_strength"; - units = "micron/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // cell_cell_repulsion_strength; // 1 - name = "cell_cell_repulsion_strength"; - units = "micron/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // cell_BM_repulsion_strength; // 1 - name = "cell_BM_repulsion_strength"; - units = "micron/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // std::vector cell_adhesion_affinities; // n - name = "cell_adhesion_affinities"; - units = "none"; - size = n; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // relative_maximum_adhesion_distance; // 1 - name = "relative_maximum_adhesion_distance"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // maximum_number_of_attachments; // 1 - name = "maximum_number_of_attachments"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // attachment_elastic_constant; // 1 - name = "attachment_elastic_constant"; - units = "1/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // attachment_rate; // 1 - name = "attachment_rate"; - units = "1/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // detachment_rate; // 1 - name = "detachment_rate"; - units = "1/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // Motility - // is_motile // 1 - name = "is_motile"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // persistence_time; // 1 - name = "persistence_time"; - units = "min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // migration_speed; // 1 - name = "migration_speed"; - units = "micron/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // std::vector migration_bias_direction; // 3 // motility_bias_direction originally - name = "migration_bias_direction"; - units = "none"; - size = 3; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // migration_bias; //1 - name = "migration_bias"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // std::vector motility_vector; // 3 - name = "motility_vector"; - units = "micron/min"; - size = 3; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // chemotaxis_index; // 1 - name = "chemotaxis_index"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // chemotaxis_direction; // 1 - name = "chemotaxis_direction"; - units = "none"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // advanced chemotaxis - // std::vector chemotactic_sensitivities; // m - name = "chemotactic_sensitivities"; - units = "none"; - size = m; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - -// secretion - // std::vector secretion_rates; // m - name = "secretion_rates"; - units = "1/min"; - size = m; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // std::vector uptake_rates; // m - name = "uptake_rates"; - units = "1/min"; - size = m; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // std::vector saturation_densities; // m - name = "saturation_densities"; - units = "stuff/cubic micron"; - size = m; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // std::vector net_export_rates; // m - name = "net_export_rates"; - units = "stuff/min"; - size = m; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + // std::vector attack_rates; // n + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "attack_rates" , "1/min" , n ); + + // std::vector immunogenicities; n // was missing + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "immunogenicities" , "none" , n ); + + // pAttackTarget; 1 // new -- use the cell ID + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "attack_target" , "none" , 1 ); + + // double (attack_)damage_rate; 1 // changed from damage_rate + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "attack_damage_rate" , "1/min" , 1 ); + + // double attack_duration; 1 // new + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "attack_duration" , "min" , 1 ); + + // double total_damage_delivered; 1 // new + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "attack_total_damage_delivered" , "none" , 1 ); + + // std::vector fusion_rates; // n + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "fusion_rates" , "1/min" , n ); + + // transformations + // std::vector transformation_rates; // n + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "transformation_rates" , "1/min" , n ); + + // cell integrity + + // double damage; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "damage" , "none" , 1 ); + + // double damage_rate; // new use of old name! now the rate of undergoing damage (not by attack) + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "damage_rate" , "1/min" , 1 ); + + // double damage_repair_rate; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + "damage_repair_rate" , "1/min" , 1 ); -// molecular - // internalized_total_substrates // m - name = "internalized_total_substrates"; - units = "stuff"; - size = m; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // fraction_released_at_death // m - name = "fraction_released_at_death"; - units = "none"; - size = m; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // fraction_transferred_when_ingested //m - name = "fraction_transferred_when_ingested"; - units = "none"; - size = m; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; -// interactions - // dead_phagocytosis_rate; // 1 - name = "dead_phagocytosis_rate"; - units = "1/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // std::vector live_phagocytosis_rates; // n - name = "live_phagocytosis_rates"; - units = "1/min"; - size = n; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // std::vector attack_rates; // n - name = "attack_rates"; - units = "1/min"; - size = n; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // double damage_rate; 1 - name = "damage_rate"; - units = "1/min"; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // std::vector fusion_rates; // n - name = "fusion_rates"; - units = "1/min"; - size = n; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; -// transformations - // std::vector transformation_rates; // n - name = "transformation_rates"; - units = "1/min"; - size = n; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; - // custom for( int j=0 ; j < (*all_cells)[0]->custom_data.variables.size(); j++ ) - { + { name = (*all_cells)[0]->custom_data.variables[j].name; units = (*all_cells)[0]->custom_data.variables[j].units; - size = 1; - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + name,units,1 ); } // custom vector variables @@ -1586,15 +596,12 @@ void add_PhysiCell_cells_to_open_xml_pugi_v2( pugi::xml_document& xml_dom, std:: name = (*all_cells)[0]->custom_data.vector_variables[j].name; units = (*all_cells)[0]->custom_data.vector_variables[j].units; size = (*all_cells)[0]->custom_data.vector_variables[j].value.size(); - data_names.push_back( name ); - data_units.push_back(units); - data_sizes.push_back( size ); - data_start_indices.push_back( index ); - cell_data_size += size; - index += size; + add_variable_to_labels( data_names,data_units,data_start_indices,data_sizes, + name,units,size ); } - legends_done = true; + cell_data_size = total_data_size( data_sizes ); + legend_done = true; } // get ready for XML navigation @@ -1660,6 +667,30 @@ void add_PhysiCell_cells_to_open_xml_pugi_v2( pugi::xml_document& xml_dom, std:: } root = node; // root = cellular_information.cell_populations.cell_population.custom.simplified_data + // write cell definiton labels // new in July 2024 + node = root.child( "cell_types" ); + if( !node ) + { + node = root.append_child( "cell_types" ); + root = node; // root = cellular_information.cell_populations.cell_population.custom.simplified_data.cell_types + + for( int i=0; i < cell_type_names.size(); i++ ) + { + node = root.append_child( "type" ); + + pugi::xml_attribute attrib = node.append_attribute( "ID" ); + attrib.set_value( cell_type_indices[i] ); + + attrib = node.append_attribute( "type" ); + attrib.set_value( cell_type_IDs[i] ); + + node.append_child( pugi::node_pcdata ).set_value( cell_type_names[i].c_str() ); + } + root = root.parent(); // root = cellular_information.cell_populations.cell_population.custom.simplified_data + + // name + } + // write legend node = root.child( "labels" ); @@ -1733,7 +764,6 @@ void add_PhysiCell_cells_to_open_xml_pugi_v2( pugi::xml_document& xml_dom, std:: exit(-1); } - Cell* pCell; double dTemp; @@ -1789,8 +819,8 @@ void add_PhysiCell_cells_to_open_xml_pugi_v2( pugi::xml_document& xml_dom, std:: // name = "number_of_nuclei"; dTemp = (double) pCell->state.number_of_nuclei; std::fwrite( &( dTemp ) , sizeof(double) , 1 , fp ); - // name = "damage"; - std::fwrite( &( pCell->state.damage ) , sizeof(double) , 1 , fp ); + // // name = "damage"; + // std::fwrite( &( pCell->phenotype.integrity.damage ) , sizeof(double) , 1 , fp ); // name = "total_attack_time"; std::fwrite( &( pCell->state.total_attack_time ) , sizeof(double) , 1 , fp ); // name = "contact_with_basement_membrane"; @@ -1908,14 +938,37 @@ void add_PhysiCell_cells_to_open_xml_pugi_v2( pugi::xml_document& xml_dom, std:: std::fwrite( pCell->phenotype.molecular.fraction_transferred_when_ingested.data() , sizeof(double) , m , fp ); // interactions + /* // name = "dead_phagocytosis_rate"; std::fwrite( &( pCell->phenotype.cell_interactions.dead_phagocytosis_rate ) , sizeof(double) , 1 , fp ); + */ + // name = "apoptotic_phagocytosis_rate"; + std::fwrite( &( pCell->phenotype.cell_interactions.apoptotic_phagocytosis_rate ) , sizeof(double) , 1 , fp ); + // name = "necrotic_phagocytosis_rate"; + std::fwrite( &( pCell->phenotype.cell_interactions.necrotic_phagocytosis_rate ) , sizeof(double) , 1 , fp ); + // name = "other_dead_phagocytosis_rate"; + std::fwrite( &( pCell->phenotype.cell_interactions.other_dead_phagocytosis_rate ) , sizeof(double) , 1 , fp ); // name = "live_phagocytosis_rates"; std::fwrite( pCell->phenotype.cell_interactions.live_phagocytosis_rates.data() , sizeof(double) , n , fp ); + // name = "attack_rates"; std::fwrite( pCell->phenotype.cell_interactions.attack_rates.data() , sizeof(double) , n , fp ); - // name = "damage_rate"; - std::fwrite( &( pCell->phenotype.cell_interactions.damage_rate ) , sizeof(double) , 1 , fp ); + // name = "immunogenicities"; + std::fwrite( pCell->phenotype.cell_interactions.immunogenicities.data() , sizeof(double) , n , fp ); + // name = "attack_target"; + Cell* pTarget = pCell->phenotype.cell_interactions.pAttackTarget; + int AttackID = -1; + if( pTarget ) + { AttackID = pTarget->ID; } + dTemp = (double) AttackID; + std::fwrite( &(dTemp) , sizeof(double) , 1 , fp ); + // name = "attack_damage_rate"; + std::fwrite( &( pCell->phenotype.cell_interactions.attack_damage_rate ) , sizeof(double) , 1 , fp ); + // name = "attack_duration"; + std::fwrite( &( pCell->phenotype.cell_interactions.attack_duration ) , sizeof(double) , 1 , fp ); + // name = "total_damage_delivered"; + std::fwrite( &( pCell->phenotype.cell_interactions.total_damage_delivered ) , sizeof(double) , 1 , fp ); + // name = "fusion_rates"; std::fwrite( pCell->phenotype.cell_interactions.fusion_rates.data() , sizeof(double) , n , fp ); @@ -1923,6 +976,14 @@ void add_PhysiCell_cells_to_open_xml_pugi_v2( pugi::xml_document& xml_dom, std:: // name = "transformation_rates"; std::fwrite( pCell->phenotype.cell_transformations.transformation_rates.data() , sizeof(double) , n , fp ); + // cell integrity + // name = "damage"; + std::fwrite( &( pCell->phenotype.cell_integrity.damage ) , sizeof(double) , 1 , fp ); + // name = "damage_rate"; + std::fwrite( &( pCell->phenotype.cell_integrity.damage_rate ) , sizeof(double) , 1 , fp ); + // name = "damage_repair_rate"; + std::fwrite( &( pCell->phenotype.cell_integrity.damage_repair_rate ) , sizeof(double) , 1 , fp ); + // custom // custom scalar variables for( int j=0 ; j < (*all_cells)[0]->custom_data.variables.size(); j++ ) @@ -1938,6 +999,60 @@ void add_PhysiCell_cells_to_open_xml_pugi_v2( pugi::xml_document& xml_dom, std:: fclose( fp ); +#ifdef ADDON_PHYSIBOSS + + // PhysiBoSS Intracellular Data + node = node.parent().parent(); // custom + + root = node; + node = node.child( "boolean_intracellular_data" ); + if( !node ) + { + node = root.append_child( "boolean_intracellular_data" ); + + pugi::xml_attribute attrib = node.append_attribute( "type" ); + attrib.set_value( "text" ); + + attrib = node.append_attribute( "source" ); + attrib.set_value( "PhysiBoSS" ); + + attrib = node.append_attribute( "data_version" ); + attrib.set_value( "2" ); + } + root = node; // root = cellular_information.cell_populations.cell_population.custom.intracellular_data + node = root.child( "filename"); + if( !node ) + { + node = root.append_child( "filename" ); + + } + root = node; // root = cellular_information.cell_populations.cell_population.custom.intracellular_data.filename + + + // next, filename + sprintf( filename , "%s_boolean_intracellular.csv" , filename_base.c_str() ); + + /* store filename without the relative pathing (if any) */ + filename_start = strrchr( filename , '/' ); + if( filename_start == NULL ) + { filename_start = filename; } + else + { filename_start++; } + strcpy( filename_without_pathing , filename_start ); + + if( !node.first_child() ) + { + node.append_child( pugi::node_pcdata ).set_value( filename_without_pathing ); // filename ); + } + else + { + node.first_child().set_value( filename_without_pathing ); // filename ); + } + + MaBoSSIntracellular::save( filename ); + +#endif + // neighbor graph node = node.parent().parent(); // custom @@ -2035,26 +1150,66 @@ void add_PhysiCell_cells_to_open_xml_pugi_v2( pugi::xml_document& xml_dom, std:: node.first_child().set_value( filename_without_pathing ); // filename ); } - write_attached_cells_graph( filename ); + write_attached_cells_graph( filename ); - return; -} + // spring attached cell graph + node = root; + node = node.parent().parent(); // root = cellular_information.cell_populations.cell_population.custom -void write_neighbor_graph( std::string filename ) -{ - /* - char filename [1024]; - sprintf( filename , "%s_cell_neighbor_graph.txt" , filename_base.c_str() ); - - // store filename without the relative pathing (if any) - char filename_without_pathing [1024]; - char* filename_start = strrchr( filename , '/' ); + root = node; + node = node.child( "spring_attached_cells_graph" ); + if( !node ) + { + node = root.append_child( "spring_attached_cells_graph" ); + + pugi::xml_attribute attrib = node.append_attribute( "type" ); + attrib.set_value( "text" ); + + attrib = node.append_attribute( "source" ); + attrib.set_value( "PhysiCell" ); + + attrib = node.append_attribute( "data_version" ); + attrib.set_value( "2" ); + } + root = node; // root = cellular_information.cell_populations.cell_population.custom.spring_attached_cells_graph + node = root.child( "filename"); + if( !node ) + { node = root.append_child( "filename" ); } + root = node; // root = cellular_information.cell_populations.cell_population.custom.spring_attached_cells_graph.filename + + + // next, filename + sprintf( filename , "%s_spring_attached_cells_graph.txt" , filename_base.c_str() ); + + /* store filename without the relative pathing (if any) */ + filename_start = strrchr( filename , '/' ); if( filename_start == NULL ) { filename_start = filename; } else { filename_start++; } strcpy( filename_without_pathing , filename_start ); - */ + + if( !node.first_child() ) + { + node.append_child( pugi::node_pcdata ).set_value( filename_without_pathing ); // filename ); + } + else + { + node.first_child().set_value( filename_without_pathing ); // filename ); + } + + write_spring_attached_cells_graph( filename ); + + return; +} + + +/* end of new stuff July 2024*/ + + +void write_neighbor_graph( std::string filename ) +{ + // std::cout << __LINE__ << " " << __FUNCTION__ << std::endl; // We use this July 2024 std::ofstream of( filename , std::ios::out ); std::stringstream buffer; @@ -2081,19 +1236,7 @@ void write_neighbor_graph( std::string filename ) void write_attached_cells_graph( std::string filename ) { - /* - char filename [1024]; - sprintf( filename , "%s_cell_attached_graph.txt" , filename_base.c_str() ); - - // store filename without the relative pathing (if any) - char filename_without_pathing [1024]; - char* filename_start = strrchr( filename , '/' ); - if( filename_start == NULL ) - { filename_start = filename; } - else - { filename_start++; } - strcpy( filename_without_pathing , filename_start ); - */ + // std::cout << __LINE__ << " " << __FUNCTION__ << std::endl; // we use this July 2024 std::ofstream of( filename , std::ios::out ); std::stringstream buffer; @@ -2117,5 +1260,29 @@ void write_attached_cells_graph( std::string filename ) return; } +void write_spring_attached_cells_graph( std::string filename ) +{ + // std::cout << __LINE__ << " " << __FUNCTION__ << std::endl; // we use this July 2024 + + std::ofstream of( filename , std::ios::out ); + std::stringstream buffer; + for( int i=0 ; i < (*all_cells).size(); i++ ) + { + buffer << (*all_cells)[i]->ID << ": " ; + int size = (*all_cells)[i]->state.spring_attachments.size(); + for( int j=0 ; j < size; j++ ) + { + buffer << (*all_cells)[i]->state.spring_attachments[j]->ID; + if( j != size-1 ) + { buffer << ","; } + } + if( i != (*all_cells).size()-1 ) + { buffer << std::endl; } + of << buffer.rdbuf(); + } + of.close(); + + return; +} }; diff --git a/modules/PhysiCell_MultiCellDS.h b/modules/PhysiCell_MultiCellDS.h index 523c2e446..968c89c43 100644 --- a/modules/PhysiCell_MultiCellDS.h +++ b/modules/PhysiCell_MultiCellDS.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2018, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -104,6 +104,7 @@ void add_PhysiCell_cells_to_open_xml_pugi_v2( pugi::xml_document& xml_dom, std:: void save_PhysiCell_to_MultiCellDS_v2( std::string filename_base , Microenvironment& M , double current_simulation_time); void write_neighbor_graph( std::string filename ); void write_attached_cells_graph( std::string filename ); +void write_spring_attached_cells_graph( std::string filename ); }; diff --git a/modules/PhysiCell_POV.cpp b/modules/PhysiCell_POV.cpp index fb89ff539..43d3c97f3 100644 --- a/modules/PhysiCell_POV.cpp +++ b/modules/PhysiCell_POV.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2018, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/modules/PhysiCell_POV.h b/modules/PhysiCell_POV.h index 7b0f48dd7..3910bbf11 100644 --- a/modules/PhysiCell_POV.h +++ b/modules/PhysiCell_POV.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2018, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/modules/PhysiCell_SVG.cpp b/modules/PhysiCell_SVG.cpp index 014eb4cad..3b987aad7 100644 --- a/modules/PhysiCell_SVG.cpp +++ b/modules/PhysiCell_SVG.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2018, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -100,6 +100,17 @@ bool Write_SVG_text( std::ostream& os, const char* str , double position_x, doub return true; } +void Write_SVG_text(std::ostream& os, const char* str , double position_x, double position_y, double font_size , const char* color , const char* font, double rotation) +{ + double text_width = font_size * strlen(str) / 2.0; // estimate the width of the text + double text_height = font_size / 2.0; // estimate the height of the text + + double center_x = position_x + text_width / 2.0; + double center_y = position_y + text_height / 2.0; + + os << "" << str << "\n"; +} + bool Write_SVG_circle( std::ostream& os, double center_x, double center_y, double radius, double stroke_size, std::string stroke_color , std::string fill_color ) { diff --git a/modules/PhysiCell_SVG.h b/modules/PhysiCell_SVG.h index 4461bfeaf..d6755f095 100644 --- a/modules/PhysiCell_SVG.h +++ b/modules/PhysiCell_SVG.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2021, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -70,6 +70,7 @@ #include #include #include +#include #ifndef _PhysiCell_SVG_h_ #define _PhysiCell_SVG_h_ @@ -78,6 +79,8 @@ bool Write_SVG_start( std::ostream& os, double width, double height ); bool Write_SVG_end( std::ostream& os ); bool Write_SVG_text( std::ostream& os, const char* str , double position_x, double position_y, double font_size , const char* color , const char* font); +void Write_SVG_text(std::ostream& os, const char* str , double position_x, double position_y, double font_size , const char* color , const char* font, double rotation); + bool Write_SVG_circle( std::ostream& os, double center_x, double center_y, double radius, double stroke_size, std::string stroke_color , std::string fill_color ); bool Write_SVG_rect( std::ostream& os , double UL_corner_x, double UL_corner_y, double width, double height, diff --git a/modules/PhysiCell_geometry.cpp b/modules/PhysiCell_geometry.cpp index eaeddbcf8..35d30529b 100644 --- a/modules/PhysiCell_geometry.cpp +++ b/modules/PhysiCell_geometry.cpp @@ -1,3 +1,70 @@ +/* +############################################################################### +# 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-2024, 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. # +# # +############################################################################### +*/ + #include "./PhysiCell_geometry.h" namespace PhysiCell{ @@ -336,6 +403,321 @@ bool load_cells_from_pugixml( pugi::xml_node root ) bool load_cells_from_pugixml( void ) { return load_cells_from_pugixml( physicell_config_root ); } + +void set_parameters_from_distributions( const pugi::xml_node root ) +{ + // find the start of cell definitions + pugi::xml_node node = root.child( "cell_definitions" ); + + // find the first cell definition + node = node.child( "cell_definition" ); + + std::string celltype; + Cell_Definition *pCD; + while (node) + { + pugi::xml_node node_ipd = node.child("initial_parameter_distributions"); + if (node_ipd && (node_ipd.attribute("enabled").empty() || node_ipd.attribute("enabled").as_bool())) + { + celltype = node.attribute("name").as_string(); + pCD = find_cell_definition(celltype); + set_distributed_parameters(node_ipd, pCD); + } + node = node.next_sibling("cell_definition"); + } + return; +} + +void set_distributed_parameters(const pugi::xml_node node_ipd, Cell_Definition *pCD) +{ + pugi::xml_node node_dist = node_ipd.child("distribution"); + while (node_dist) + { + if (node_dist.attribute("enabled").empty() || node_dist.attribute("enabled").as_bool()) // if enabled attribute is missing or true, set the distribution (I put this here rather than in the function because the logic is clearer this way without negations) + { + set_distributed_parameter(node_dist, pCD); + } + node_dist = node_dist.next_sibling("distribution"); + } + return; +} + +void set_distributed_parameter(pugi::xml_node node_dist, Cell_Definition *pCD) +{ + static std::vector supported_distributions = {"Uniform","LogUniform","Normal","LogNormal","Log10Normal"}; + std::string type = node_dist.attribute("type").as_string(); + std::string behavior = xml_get_string_value(node_dist, "behavior"); + if (!is_in(type, supported_distributions)) + { + std::cout << "ERROR: Only supporting these distributions:" << std::endl + << "\t\t" << supported_distributions << std::endl + << "\tBut " << behavior << " for " << pCD->name << " using " << type << "." << std::endl; + exit(-1); + } + + if (!strcmpi(behavior,"volume") && find_behavior_index(behavior) == -1) + { + std::cout << "ERROR: Initial parameter distributions can only be set for volume and cell behaviors." << std::endl + << "\t" << behavior << " is not among these." << std::endl; + exit(-1); + } + set_distributed_parameter(pCD, behavior, type, node_dist); + return; +} + +bool is_in(const std::string x, const std::vector A) +{ + // checks if x is in A + for (unsigned int i = 0; i < A.size(); i++) + { + if (strcmpi(x, A[i])) + { return true; } + } + return false; +} + +void set_distributed_parameter(Cell_Definition *pCD, std::string behavior, std::string type, pugi::xml_node node_dist) +{ + double base_value; + if (strcmpi(behavior, "volume")) + { + base_value = pCD->phenotype.volume.total; + } + else + { + base_value = get_single_base_behavior(pCD, behavior); + } + bool check_base = node_dist.attribute("check_base").empty() || node_dist.attribute("check_base").as_bool(); // if check_base not provided, default to true + if (strcmpi(type,"uniform")) + { + double min = xml_get_double_value(node_dist, "min"); + double max = xml_get_double_value(node_dist, "max"); + if (check_base && (base_value < min || base_value > max)) + { + std::cout << "ERROR: The base value for " << behavior << " in " << pCD->name << " is " << base_value << std::endl + << "\tThis value is outside the range of the uniform distribution." << std::endl + << "\tmin = " << min << ", max = " << max << "." << std::endl + << "\tIf you want to allow the base value to be outside the range, set check_base to false." << std::endl; + exit(-1); + } + double dv = max - min; + if (dv < 0) + { + std::cout << "ERROR: The min and max values for " << behavior << " in " << pCD->name << " do not satisfy min <= max." << std::endl + << "\tmin = " << min << ", max = " << max << std::endl; + exit(-1); + } + for (unsigned int i = 0; i < (*all_cells).size(); i++) + { + if ((*all_cells)[i]->type_name != pCD->name) + { + continue; + } + double val = min + dv * UniformRandom(); + set_distributed_parameter((*all_cells)[i], behavior, val); + } + } + else if (strcmpi(type,"loguniform")) + { + double min = xml_get_double_value(node_dist, "min"); + if (min <= 0) + { + std::cout << "ERROR: The log uniform distirbution must be defined on a positive interval." << std::endl + << "\tThe min value for " << behavior << " in " << pCD->name << " is " << min << std::endl + << "\tSet the min and max as the bounds on the value you want, not the bounds on the exponent." << std::endl + << "\tFor example, if you want a value between 0.1 and 10, set min=0.1 and max=10, not min=-1 and max=1." << std::endl; + exit(-1); + } + double max = xml_get_double_value(node_dist, "max"); + if (check_base && (base_value < min || base_value > max)) + { + std::cout << "ERROR: The base value for " << behavior << " in " << pCD->name << " is " << base_value << std::endl + << "\tThis value is outside the range of the loguniform distribution." << std::endl + << "\tmin = " << min << ", max = " << max << "." << std::endl + << "\tIf you want to allow the base value to be outside the range, set check_base to false." << std::endl; + exit(-1); + } + min = log(min); + max = log(max); + double dv = max - min; + if (dv < 0) + { + std::cout << "ERROR: The min and max values for " << behavior << " in " << pCD->name << " do not satisfy min <= max." << std::endl + << "\tmin = " << min << ", max = " << max << std::endl; + exit(-1); + } + for (unsigned int i = 0; i < (*all_cells).size(); i++) + { + if ((*all_cells)[i]->type_name != pCD->name) + { + continue; + } + double val = exp(min + dv * UniformRandom()); + set_distributed_parameter((*all_cells)[i], behavior, val); + } + } + else if (strcmpi(type,"normal")) + { + double mu = xml_get_double_value(node_dist, "mu"); + double sigma = xml_get_double_value(node_dist, "sigma"); + double lb = -9e99; + double ub = 9e99; + if (node_dist.child("lower_bound")) + { lb = xml_get_double_value(node_dist, "lower_bound"); } + if (node_dist.child("upper_bound")) + { ub = xml_get_double_value(node_dist, "upper_bound"); } + if (lb > ub) + { + std::cout << "ERROR: The lower and upper bounds for " << behavior << " in " << pCD->name << " do not satisfy lb <= ub." << std::endl + << "\tlb = " << lb << ", ub = " << ub << std::endl; + exit(-1); + } + if (check_base && (base_value < lb || base_value > ub)) + { + std::cout << "ERROR: The base value for " << behavior << " in " << pCD->name << " is " << base_value << std::endl + << "\tThis value is outside the range of the truncated normal distribution." << std::endl + << "\tExpecting values between " << lb << " and " << ub << "." << std::endl + << "\tIf you want to allow the base value to be outside the range, set check_base to false." << std::endl; + exit(-1); + } + print_drawing_expectations(mu, sigma, lb, ub, (*all_cells).size()); + for (unsigned int i = 0; i < (*all_cells).size(); i++) + { + if ((*all_cells)[i]->type_name != pCD->name) + { + continue; + } + double val=lb; + while (val<=lb || val>=ub) + { val = NormalRandom(mu, sigma); } + set_distributed_parameter((*all_cells)[i], behavior, val); + } + } + else if (strcmpi(type,"lognormal")) + { + double mu = xml_get_double_value(node_dist, "mu"); + double sigma = xml_get_double_value(node_dist, "sigma"); + double lb = 0; + double ub = 9e99; + get_log_normal_bounds(node_dist, behavior, pCD, lb, ub, base_value, check_base); + print_drawing_expectations(mu, sigma, log(lb), log(ub), (*all_cells).size()); + for (unsigned int i = 0; i < (*all_cells).size(); i++) + { + if ((*all_cells)[i]->type_name != pCD->name) + { + continue; + } + double val=lb; + while (val<=lb || val>=ub) + { val = exp(NormalRandom(mu, sigma)); } + set_distributed_parameter((*all_cells)[i], behavior, val); + } + } + else if (strcmpi(type,"log10normal")) + { + static double log10_ = log(10.0); + double mu = xml_get_double_value(node_dist, "mu"); + double sigma = xml_get_double_value(node_dist, "sigma"); + double lb = -9e99; + double ub = 9e99; + get_log_normal_bounds(node_dist, behavior, pCD, lb, ub, base_value, check_base); + print_drawing_expectations(mu, sigma, log(lb), log(ub), (*all_cells).size()); + for (unsigned int i = 0; i < (*all_cells).size(); i++) + { + if ((*all_cells)[i]->type_name != pCD->name) + { + continue; + } + double val=lb; + while (val<=lb || val>=ub) + { val = exp(log10_ * NormalRandom(mu, sigma)); } + set_distributed_parameter((*all_cells)[i], behavior, val); + } + } + return; +} + +void get_log_normal_bounds(pugi::xml_node node_dist, std::string behavior, Cell_Definition *pCD, double &lb, double &ub, double base_value, bool check_base) +{ + if (node_dist.child("lower_bound")) + { + lb = xml_get_double_value(node_dist, "lower_bound"); + if (lb < 0) + { + std::cout << "ERROR: The lower bound for a lognormal/log10normal distribution only matters if it is non-negative." << std::endl + << "\tThe lower bound for " << behavior << " in " << pCD->name << " is " << lb << "." << std::endl + << "\tThe lower bound is for the actual assigned value while the mean and standard deviation are for the log/log10 of the value." << std::endl + << "\tSince this seems to imply (understandable!) confusion about the lognormal/log10normal distribution, I'm going to exit." << std::endl; + exit(-1); + } + } + if (node_dist.child("upper_bound")) + { + ub = xml_get_double_value(node_dist, "upper_bound"); + } + if (lb > ub) + { + std::cout << "ERROR: The lower and upper bounds for " << behavior << " in " << pCD->name << " do not satisfy lb <= ub." << std::endl + << "\tlb = " << lb << ", ub = " << ub << std::endl; + exit(-1); + } + if (check_base && (base_value < lb || base_value > ub)) + { + std::cout << "ERROR: The base value for " << behavior << " in " << pCD->name << " is " << base_value << std::endl + << "\tThis value is outside the range of the lognormal/log10normal distribution." << std::endl + << "\tExpecting values between " << lb << " and " << ub << "." << std::endl + << "\tIf you want to allow the base value to be outside the range, set check_base to false." << std::endl; + exit(-1); + } +} + +void print_drawing_expectations(double mu, double sigma, double lb, double ub, int n) +{ + // calculate the z-scores for lb and ub + double z_lb = (lb - mu) / sigma; + double z_ub = (ub - mu) / sigma; + + // calculate the probabilities for lb and ub + double p_lb = 0.5 * (1 + std::erf(z_lb / std::sqrt(2))); + double p_ub = 0.5 * (1 + std::erf(z_ub / std::sqrt(2))); + + // the probability of finding a value between lb and ub is the difference between the probabilities for ub and lb + double success_probability = p_ub - p_lb; + double num_expected = n / success_probability; + + std::cout << "Drawing up to " << n << " values from a normal distribution with mu=" << mu << " and sigma=" << sigma << std::endl + << "\tExpecting values between " << lb << " and " << ub << std::endl + << "\tIt will take about " << num_expected << " draws to get " << n << " values in the range." << std::endl + << "\tIf one draw takes 1 microsecond, this will take about " << num_expected * 1e-6 / 60 << " minutes." << std::endl; +} + +void set_distributed_parameter(Cell* pCell, std::string behavior, double val) +{ + if (strcmpi(behavior, "volume")) + { + pCell->set_total_volume(val); + } + else + { + set_single_behavior(pCell, behavior, val); + } +} + +bool strcmpi(std::string x, std::string y) +{ + // case-Insensitive compare strings + for (auto& a : x) { + a = tolower(a); + } + for (auto& a : y) { + a = tolower(a); + } + return x==y; +} + +void set_parameters_from_distributions( void ) +{ return set_parameters_from_distributions( physicell_config_root ); } + std::vector split_csv_labels( std::string labels_line ) { std::vector< std::string > label_tokens; diff --git a/modules/PhysiCell_geometry.h b/modules/PhysiCell_geometry.h index 91e6365fe..f9e6cbdc1 100644 --- a/modules/PhysiCell_geometry.h +++ b/modules/PhysiCell_geometry.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2021, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -96,7 +96,20 @@ void load_cells_mat( std::string filename ); void load_cells_physicell( std::string filename ); bool load_cells_from_pugixml( pugi::xml_node root ); -bool load_cells_from_pugixml( void ); // load cells based on default config XML root +bool load_cells_from_pugixml( void ); // load cells based on default config XML root + +void set_parameters_from_distributions( const pugi::xml_node root ); +void set_parameters_from_distributions(void); +void set_distributed_parameters(pugi::xml_node node, Cell_Definition *pCD); +void set_distributed_parameter(pugi::xml_node node_dist, Cell_Definition *pCD); +void set_distributed_parameter(Cell_Definition *pCD, std::string behavior, std::string type, pugi::xml_node node_dist); + +void get_log_normal_bounds(pugi::xml_node node_dist, std::string behavior, Cell_Definition *pCD, double &lb, double &ub, double base_value, bool check_base); +void set_distributed_parameter(Cell* pCell, std::string behavior, double val); +void print_drawing_expectations(double mu, double sigma, double lb, double ub, int n); + +bool is_in(std::string x, std::vector A); +bool strcmpi(std::string x, std::string y); // // 2D functions diff --git a/modules/PhysiCell_pathology.cpp b/modules/PhysiCell_pathology.cpp index a72d2bf33..b390a95d8 100644 --- a/modules/PhysiCell_pathology.cpp +++ b/modules/PhysiCell_pathology.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2021, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -402,18 +402,18 @@ std::string formatted_minutes_to_DDHHMM( double minutes ) return output ; } -void SVG_plot( std::string filename , Microenvironment& M, double z_slice , double time, std::vector (*cell_coloring_function)(Cell*), std::vector (*substrate_coloring_function)(double, double, double) , void (cell_counts_function)(char*)) +void SVG_plot(std::string filename, Microenvironment &M, double z_slice, double time, std::vector (*cell_coloring_function)(Cell *), std::string (*substrate_coloring_function)(double, double, double), void(cell_counts_function)(char *)) { double X_lower = M.mesh.bounding_box[0]; double X_upper = M.mesh.bounding_box[3]; - - double Y_lower = M.mesh.bounding_box[1]; - double Y_upper = M.mesh.bounding_box[4]; - double plot_width = X_upper - X_lower; - double plot_height = Y_upper - Y_lower; + double Y_lower = M.mesh.bounding_box[1]; + double Y_upper = M.mesh.bounding_box[4]; + + double plot_width = X_upper - X_lower; + double plot_height = Y_upper - Y_lower; - double font_size = 0.025 * plot_height; // PhysiCell_SVG_options.font_size; + double font_size = 0.025 * plot_height; // PhysiCell_SVG_options.font_size; double top_margin = font_size*(.2+1+.2+.9+.5 ); // open the file, write a basic "header" @@ -428,14 +428,14 @@ void SVG_plot( std::string filename , Microenvironment& M, double z_slice , doub << "you fix your directory. Sorry!" << std::endl << std::endl; exit(-1); } - + if(PhysiCell_settings.enable_substrate_plot == true && (*substrate_coloring_function) != NULL){ double legend_padding = 200.0; // I have to add a margin on the left to visualize the bar plot and the values Write_SVG_start( os, plot_width + legend_padding, plot_height + top_margin ); - // draw the background + // draw the background Write_SVG_rect( os , 0 , 0 , plot_width + legend_padding, plot_height + top_margin , 0.002 * plot_height , "white", "white" ); } @@ -443,21 +443,21 @@ void SVG_plot( std::string filename , Microenvironment& M, double z_slice , doub Write_SVG_start( os, plot_width , plot_height + top_margin ); - // draw the background + // draw the background Write_SVG_rect( os , 0 , 0 , plot_width, plot_height + top_margin , 0.002 * plot_height , "white", "white" ); } // write the simulation time to the top of the plot - + char* szString; szString = new char [1024]; - - int total_cell_count = all_cells->size(); - - double temp_time = time; + + int total_cell_count = all_cells->size(); + + double temp_time = time; std::string time_label = formatted_minutes_to_DDHHMM( temp_time ); - + sprintf( szString , "Current time: %s, z = %3.2f %s", time_label.c_str(), z_slice , PhysiCell_SVG_options.simulation_space_units.c_str() ); Write_SVG_text( os, szString, font_size*0.5, font_size*(.2+1), @@ -476,27 +476,27 @@ void SVG_plot( std::string filename , Microenvironment& M, double z_slice , doub // add an outer "g" for coordinate transforms - - os << " " << std::endl; - + // prepare to do mesh-based plot (later) - - double dx_stroma = M.mesh.dx; - double dy_stroma = M.mesh.dy; - - os << " " << std::endl; - - int ratio = 1; + + double dx_stroma = M.mesh.dx; + double dy_stroma = M.mesh.dy; + + os << " " << std::endl; + + int ratio = 1; double voxel_size = dx_stroma / (double) ratio ; - - double half_voxel_size = voxel_size / 2.0; + + double half_voxel_size = voxel_size / 2.0; double normalizer = 78.539816339744831 / (voxel_size*voxel_size*voxel_size); // used for the legend double max_conc; double min_conc; - // color in the background ECM + // color in the background ECM if(PhysiCell_settings.enable_substrate_plot == true && (*substrate_coloring_function) != NULL) { double dz_stroma = M.mesh.dz; @@ -532,17 +532,17 @@ void SVG_plot( std::string filename , Microenvironment& M, double z_slice , doub max_conc = 1.0; }; - + for (int n = 0; n < M.number_of_voxels(); n++) { auto current_voxel = M.voxels(n); int z_center = current_voxel.center[2]; double z_displ = z_center - dz_stroma/2; - + double z_compare = z_displ; if (default_microenvironment_options.simulate_2D == true){ - z_compare = z_center; + z_compare = z_center; }; if (z_slice == z_compare){ //this is to make sure the substrate is sampled in the voxel visualized (so basically the slice) @@ -554,208 +554,211 @@ void SVG_plot( std::string filename , Microenvironment& M, double z_slice , doub double concentration = M.density_vector(n)[sub_index]; - std::vector< std::string > output = substrate_coloring_function(concentration, max_conc, min_conc ); - - Write_SVG_rect( os , x_displ - X_lower , y_displ - Y_lower, dx_stroma, dy_stroma , 0 , "none", output[0] ); + std::string output = substrate_coloring_function(concentration, max_conc, min_conc ); + Write_SVG_rect( os , x_displ - X_lower , y_displ - Y_lower, dx_stroma, dy_stroma , 0 , "none", output ); } } } } -/* - if( ECM.TellRows() > 0 ) - { - // find the k corresponding to z_slice - - - - Vector position; - *position(2) = z_slice; - + /* + if( ECM.TellRows() > 0 ) + { + // find the k corresponding to z_slice + + + + Vector position; + *position(2) = z_slice; + + + // 25*pi* 5 microns^2 * length (in source) / voxelsize^3 + + for( int j=0; j < ratio*ECM.TellCols() ; j++ ) + { + // *position(1) = *Y_environment(j); + *position(1) = *Y_environment(0) - dy_stroma/2.0 + j*voxel_size + half_voxel_size; + + for( int i=0; i < ratio*ECM.TellRows() ; i++ ) + { + // *position(0) = *X_environment(i); + *position(0) = *X_environment(0) - dx_stroma/2.0 + i*voxel_size + half_voxel_size; + + double E = evaluate_Matrix3( ECM, X_environment , Y_environment, Z_environment , position ); + double BV = normalizer * evaluate_Matrix3( OxygenSourceHD, X_environment , Y_environment, Z_environment , position ); + if( isnan( BV ) ) + { BV = 0.0; } + + vector Colors; + Colors = hematoxylin_and_eosin_stroma_coloring( E , BV ); + Write_SVG_rect( os , *position(0)-half_voxel_size-X_lower , *position(1)-half_voxel_size+top_margin-Y_lower, + voxel_size , voxel_size , 1 , Colors[0], Colors[0] ); + + } + } + + } + */ + os << " " << std::endl; - // 25*pi* 5 microns^2 * length (in source) / voxelsize^3 - - for( int j=0; j < ratio*ECM.TellCols() ; j++ ) - { - // *position(1) = *Y_environment(j); - *position(1) = *Y_environment(0) - dy_stroma/2.0 + j*voxel_size + half_voxel_size; - - for( int i=0; i < ratio*ECM.TellRows() ; i++ ) - { - // *position(0) = *X_environment(i); - *position(0) = *X_environment(0) - dx_stroma/2.0 + i*voxel_size + half_voxel_size; - - double E = evaluate_Matrix3( ECM, X_environment , Y_environment, Z_environment , position ); - double BV = normalizer * evaluate_Matrix3( OxygenSourceHD, X_environment , Y_environment, Z_environment , position ); - if( isnan( BV ) ) - { BV = 0.0; } - - vector Colors; - Colors = hematoxylin_and_eosin_stroma_coloring( E , BV ); - Write_SVG_rect( os , *position(0)-half_voxel_size-X_lower , *position(1)-half_voxel_size+top_margin-Y_lower, - voxel_size , voxel_size , 1 , Colors[0], Colors[0] ); - - } - } - - } -*/ - os << " " << std::endl; - // Now draw vessels /* std::vector VesselColors = hematoxylin_and_eosin_stroma_coloring( 0,1 ); - os << " " << endl; - extern vector BloodVesselSegments; - Vector Offset; - *Offset(0) = X_lower; + os << " " << endl; + extern vector BloodVesselSegments; + Vector Offset; + *Offset(0) = X_lower; *Offset(1) = Y_lower-top_margin; */ - - - // plot intersecting cells - os << " " << std::endl; + + + // plot intersecting cells + os << " " << std::endl; for( int i=0 ; i < total_cell_count ; i++ ) { Cell* pC = (*all_cells)[i]; // global_cell_list[i]; - + if( fabs( (pC->position)[2] - z_slice ) < pC->phenotype.geometry.radius ) { - os << " ID << "\" " - << "type=\"" << pC->type_name << "\" "; // new April 2022 + os << " ID << "\" " + << "type=\"" << pC->type_name << "\" "; // new April 2022 if( pC->phenotype.death.dead == true ) { os << "dead=\"true\" " ; } else { os << "dead=\"false\" " ; } - os << ">" << std::endl; - + os << ">" << std::endl; + pC->functions.plot_agent_SVG(os, pC, z_slice, cell_coloring_function, X_lower, Y_lower); - os << " " << std::endl; + os << " " << std::endl; } - + } - os << " " << std::endl; - + os << " " << std::endl; + // plot intersecting BM points - /* + /* for( int i=0 ; i < BasementMembraneNodes.size() ; i++ ) { - // vector Colors = false_cell_coloring( pC ); - BasementMembraneNode* pBMN = BasementMembraneNodes[i]; - double thickness =0.1; - - if( fabs( *(pBMN->Position)(2) - z_slice ) < thickness/2.0 ) + // vector Colors = false_cell_coloring( pC ); + BasementMembraneNode* pBMN = BasementMembraneNodes[i]; + double thickness =0.1; + + if( fabs( *(pBMN->Position)(2) - z_slice ) < thickness/2.0 ) { string bm_color ( "rgb(0,0,0)" ); - double r = thickness/2.0; - double z = fabs( *(pBMN->Position)(2) - z_slice) ; + double r = thickness/2.0; + double z = fabs( *(pBMN->Position)(2) - z_slice) ; - os << " ID << "\">" << std::endl; - Write_SVG_circle( os,*(pBMN->Position)(0)-X_lower, *(pBMN->Position)(1)+top_margin-Y_lower, 10*thickness/2.0 , 0.5 , bm_color , bm_color ); + os << " ID << "\">" << std::endl; + Write_SVG_circle( os,*(pBMN->Position)(0)-X_lower, *(pBMN->Position)(1)+top_margin-Y_lower, 10*thickness/2.0 , 0.5 , bm_color , bm_color ); os << " " << std::endl; } // pC = pC->pNextCell; } - */ - + */ + // end of the - os << " " << std::endl; - + os << " " << std::endl; + // draw a scale bar - - double bar_margin = 0.025 * plot_height; - double bar_height = 0.01 * plot_height; - double bar_width = PhysiCell_SVG_options.length_bar; - double bar_stroke_width = 0.001 * plot_height; - - std::string bar_units = PhysiCell_SVG_options.simulation_space_units; + + double bar_margin = 0.025 * plot_height; + double bar_height = 0.01 * plot_height; + double bar_width = PhysiCell_SVG_options.length_bar; + double bar_stroke_width = 0.001 * plot_height; + + std::string bar_units = PhysiCell_SVG_options.simulation_space_units; // convert from micron to mm - double temp = bar_width; + double temp = bar_width; if( temp > 999 && std::strstr( bar_units.c_str() , PhysiCell_SVG_options.mu.c_str() ) ) { temp /= 1000; bar_units = "mm"; } - // convert from mm to cm + // convert from mm to cm if( temp > 9 && std::strcmp( bar_units.c_str() , "mm" ) == 0 ) { - temp /= 10; + temp /= 10; bar_units = "cm"; } - + szString = new char [1024]; sprintf( szString , "%u %s" , (int) round( temp ) , bar_units.c_str() ); - + Write_SVG_rect( os , plot_width - bar_margin - bar_width , plot_height + top_margin - bar_margin - bar_height , bar_width , bar_height , 0.002 * plot_height , "rgb(255,255,255)", "rgb(0,0,0)" ); Write_SVG_text( os, szString , plot_width - bar_margin - bar_width + 0.25*font_size , plot_height + top_margin - bar_margin - bar_height - 0.25*font_size , font_size , PhysiCell_SVG_options.font_color.c_str() , PhysiCell_SVG_options.font.c_str() ); - - delete [] szString; - // plot runtime - szString = new char [1024]; - RUNTIME_TOC(); + delete [] szString; + + // plot runtime + szString = new char [1024]; + RUNTIME_TOC(); std::string formatted_stopwatch_value = format_stopwatch_value( runtime_stopwatch_value() ); - Write_SVG_text( os, formatted_stopwatch_value.c_str() , bar_margin , top_margin + plot_height - bar_margin , 0.75 * font_size , - PhysiCell_SVG_options.font_color.c_str() , PhysiCell_SVG_options.font.c_str() ); - delete [] szString; + Write_SVG_text( os, formatted_stopwatch_value.c_str() , bar_margin , top_margin + plot_height - bar_margin , 0.75 * font_size , + PhysiCell_SVG_options.font_color.c_str() , PhysiCell_SVG_options.font.c_str() ); + delete [] szString; // draw a box around the plot window Write_SVG_rect( os , 0 , top_margin, plot_width, plot_height , 0.002 * plot_height , "rgb(0,0,0)", "none" ); - if(substrate_coloring_function != NULL){ + if (PhysiCell_settings.enable_substrate_plot == true && (*substrate_coloring_function) != NULL) { // add legend for the substrate double conc_interval = (max_conc - min_conc) / 10; // setting the interval for the values in the legend. - - szString = new char [1024]; + + szString = new char [1024]; double upper_left_x = plot_width + 25.0; double sub_rect_height = (plot_height - 25.0) / 10.0; for(int i = 0; i <= 9; i++){ //creating 10 rectangoles for the bar, each one with a different shade of color. double concentration_sample = min_conc + (conc_interval * (9-i)); // the color depends on the concentration, starting from the min concentration to the max (which was sampled before) - std::vector< std::string > output = substrate_coloring_function(concentration_sample, max_conc, min_conc ); + std::string output = substrate_coloring_function(concentration_sample, max_conc, min_conc); double upper_left_y = sub_rect_height * i; // here I set the position of each rectangole - Write_SVG_rect(os, upper_left_x, top_margin + upper_left_y, 25.0, sub_rect_height, 0.002 * plot_height , "none", output[0]); //drawing each piece of the barplot + Write_SVG_rect(os, upper_left_x, top_margin + upper_left_y, 25.0, sub_rect_height, 0.002 * plot_height , "none", output); //drawing each piece of the barplot if(i%2 != 0){ // of course I am not printing each value of the barplot, otherwise is too crowded, so just one each 2 sprintf( szString , " %.2g", concentration_sample); Write_SVG_rect(os, upper_left_x + 25, top_margin + upper_left_y + sub_rect_height - (0.001 * plot_height), 3, 0.002 * plot_height, 0 , "rgb(0,0,0)", "rgb(0,0,0)"); - Write_SVG_text( os , szString, upper_left_x + 28, top_margin + upper_left_y + sub_rect_height, font_size , - PhysiCell_SVG_options.font_color.c_str() , PhysiCell_SVG_options.font.c_str() ); // misterious values set with a trial and error approach due to OCD. But now the legend is coherent at pixel level + Write_SVG_text( os , szString, upper_left_x + 28, top_margin + upper_left_y + sub_rect_height, font_size , + PhysiCell_SVG_options.font_color.c_str() , PhysiCell_SVG_options.font.c_str() ); // misterious values set with a trial and error approach due to OCD. But now the legend is coherent at pixel level } } sprintf( szString , "%.2g", max_conc); - + Write_SVG_rect(os, upper_left_x + 25, top_margin - (0.001 * plot_height), 3, 0.002 * plot_height, 0 , "rgb(0,0,0)", "rgb(0,0,0)"); Write_SVG_text( os , szString, upper_left_x + 28, top_margin, font_size , PhysiCell_SVG_options.font_color.c_str() , PhysiCell_SVG_options.font.c_str() ); // misterious values set with a trial and error approach due to OCD. But now the legend is coherent at pixel level delete [] szString; + + // add a label to the right of the colorbar defined by above Write_SVG_rect calls + Write_SVG_text(os, PhysiCell_settings.substrate_to_monitor.c_str(), upper_left_x + 35, top_margin + plot_height / 2, font_size, + PhysiCell_SVG_options.font_color.c_str(), PhysiCell_SVG_options.font.c_str(), 90.0); } - + Write_SVG_rect(os, 25.0 + plot_width, top_margin, 25.0, plot_height - 25, 0.002 * plot_height , "black", "none"); // nice black contour around the legend - + // close the svg tag, close the file Write_SVG_end( os ); os.close(); - - return; + + return; } void standard_agent_SVG(std::ofstream& os, PhysiCell::Cell* pC, double z_slice, std::vector (*cell_coloring_function)(Cell*), double X_lower, double Y_lower) { @@ -781,20 +784,919 @@ void standard_agent_SVG(std::ofstream& os, PhysiCell::Cell* pC, double z_slice, } } - -std::vector paint_by_density_percentage( double concentration, double max_conc, double min_conc ){ - - std::vector< std::string > output( 4 , "black" ); - int color = (int) round( ((concentration - min_conc) / (max_conc - min_conc)) * 255 ); - if(color > 255){ - color = 255; +void setup_svg_substrate_colormap(std::vector &colormap) +{ + std::string map_name = PhysiCell_settings.svg_substrate_colormap; + int name_length = map_name.size(); + bool is_reversed = false; + if (map_name.substr(name_length-2,2)=="_r") + { + map_name = map_name.substr(0,name_length-2); + is_reversed = true; + } + if (map_name=="original") + { + for(unsigned int i = 0; i<256; i++) + { + char color[128]; + sprintf(color, "rgb(%u,234,197)", 255 - i); + colormap.push_back(color); + } + } + else if (map_name=="YlOrRd") + { + colormap.assign({"rgb(255,255,204)", + "rgb(255,250,193)", + "rgb(255,246,181)", + "rgb(255,241,170)", + "rgb(255,236,159)", + "rgb(255,231,148)", + "rgb(254,226,137)", + "rgb(254,221,126)", + "rgb(254,214,115)", + "rgb(254,204,104)", + "rgb(254,194,94)", + "rgb(254,184,83)", + "rgb(254,174,74)", + "rgb(254,165,70)", + "rgb(253,155,66)", + "rgb(253,146,62)", + "rgb(253,133,58)", + "rgb(253,117,53)", + "rgb(252,100,48)", + "rgb(252,84,44)", + "rgb(248,70,40)", + "rgb(242,56,36)", + "rgb(235,43,33)", + "rgb(229,29,29)", + "rgb(220,21,30)", + "rgb(210,14,33)", + "rgb(200,8,35)", + "rgb(190,1,38)", + "rgb(175,0,38)", + "rgb(159,0,38)", + "rgb(144,0,38)", + "rgb(128,0,38)"}); + } + else if (map_name=="viridis") + { + colormap.assign({"rgb(68,1,84)", + "rgb(71,13,96)", + "rgb(72,24,106)", + "rgb(72,35,116)", + "rgb(71,46,124)", + "rgb(69,56,130)", + "rgb(66,65,134)", + "rgb(62,74,137)", + "rgb(58,84,140)", + "rgb(54,93,141)", + "rgb(50,101,142)", + "rgb(46,109,142)", + "rgb(43,117,142)", + "rgb(40,125,142)", + "rgb(37,132,142)", + "rgb(34,140,141)", + "rgb(31,148,140)", + "rgb(30,156,137)", + "rgb(32,163,134)", + "rgb(37,171,130)", + "rgb(46,179,124)", + "rgb(58,186,118)", + "rgb(72,193,110)", + "rgb(88,199,101)", + "rgb(108,205,90)", + "rgb(127,211,78)", + "rgb(147,215,65)", + "rgb(168,219,52)", + "rgb(192,223,37)", + "rgb(213,226,26)", + "rgb(234,229,26)", + "rgb(253,231,37)"}); + } + else if (map_name=="turbo") + { + colormap.assign({"rgb(48,18,59)", + "rgb(50,21,67)", + "rgb(51,24,74)", + "rgb(52,27,81)", + "rgb(53,30,88)", + "rgb(54,33,95)", + "rgb(55,36,102)", + "rgb(56,39,109)", + "rgb(57,42,115)", + "rgb(58,45,121)", + "rgb(59,47,128)", + "rgb(60,50,134)", + "rgb(61,53,139)", + "rgb(62,56,145)", + "rgb(63,59,151)", + "rgb(63,62,156)", + "rgb(64,64,162)", + "rgb(65,67,167)", + "rgb(65,70,172)", + "rgb(66,73,177)", + "rgb(66,75,181)", + "rgb(67,78,186)", + "rgb(68,81,191)", + "rgb(68,84,195)", + "rgb(68,86,199)", + "rgb(69,89,203)", + "rgb(69,92,207)", + "rgb(69,94,211)", + "rgb(70,97,214)", + "rgb(70,100,218)", + "rgb(70,102,221)", + "rgb(70,105,224)", + "rgb(70,107,227)", + "rgb(71,110,230)", + "rgb(71,113,233)", + "rgb(71,115,235)", + "rgb(71,118,238)", + "rgb(71,120,240)", + "rgb(71,123,242)", + "rgb(70,125,244)", + "rgb(70,128,246)", + "rgb(70,130,248)", + "rgb(70,133,250)", + "rgb(70,135,251)", + "rgb(69,138,252)", + "rgb(69,140,253)", + "rgb(68,143,254)", + "rgb(67,145,254)", + "rgb(66,148,255)", + "rgb(65,150,255)", + "rgb(64,153,255)", + "rgb(62,155,254)", + "rgb(61,158,254)", + "rgb(59,160,253)", + "rgb(58,163,252)", + "rgb(56,165,251)", + "rgb(55,168,250)", + "rgb(53,171,248)", + "rgb(51,173,247)", + "rgb(49,175,245)", + "rgb(47,178,244)", + "rgb(46,180,242)", + "rgb(44,183,240)", + "rgb(42,185,238)", + "rgb(40,188,235)", + "rgb(39,190,233)", + "rgb(37,192,231)", + "rgb(35,195,228)", + "rgb(34,197,226)", + "rgb(32,199,223)", + "rgb(31,201,221)", + "rgb(30,203,218)", + "rgb(28,205,216)", + "rgb(27,208,213)", + "rgb(26,210,210)", + "rgb(26,212,208)", + "rgb(25,213,205)", + "rgb(24,215,202)", + "rgb(24,217,200)", + "rgb(24,219,197)", + "rgb(24,221,194)", + "rgb(24,222,192)", + "rgb(24,224,189)", + "rgb(25,226,187)", + "rgb(25,227,185)", + "rgb(26,228,182)", + "rgb(28,230,180)", + "rgb(29,231,178)", + "rgb(31,233,175)", + "rgb(32,234,172)", + "rgb(34,235,170)", + "rgb(37,236,167)", + "rgb(39,238,164)", + "rgb(42,239,161)", + "rgb(44,240,158)", + "rgb(47,241,155)", + "rgb(50,242,152)", + "rgb(53,243,148)", + "rgb(56,244,145)", + "rgb(60,245,142)", + "rgb(63,246,138)", + "rgb(67,247,135)", + "rgb(70,248,132)", + "rgb(74,248,128)", + "rgb(78,249,125)", + "rgb(82,250,122)", + "rgb(85,250,118)", + "rgb(89,251,115)", + "rgb(93,252,111)", + "rgb(97,252,108)", + "rgb(101,253,105)", + "rgb(105,253,102)", + "rgb(109,254,98)", + "rgb(113,254,95)", + "rgb(117,254,92)", + "rgb(121,254,89)", + "rgb(125,255,86)", + "rgb(128,255,83)", + "rgb(132,255,81)", + "rgb(136,255,78)", + "rgb(139,255,75)", + "rgb(143,255,73)", + "rgb(146,255,71)", + "rgb(150,254,68)", + "rgb(153,254,66)", + "rgb(156,254,64)", + "rgb(159,253,63)", + "rgb(161,253,61)", + "rgb(164,252,60)", + "rgb(167,252,58)", + "rgb(169,251,57)", + "rgb(172,251,56)", + "rgb(175,250,55)", + "rgb(177,249,54)", + "rgb(180,248,54)", + "rgb(183,247,53)", + "rgb(185,246,53)", + "rgb(188,245,52)", + "rgb(190,244,52)", + "rgb(193,243,52)", + "rgb(195,241,52)", + "rgb(198,240,52)", + "rgb(200,239,52)", + "rgb(203,237,52)", + "rgb(205,236,52)", + "rgb(208,234,52)", + "rgb(210,233,53)", + "rgb(212,231,53)", + "rgb(215,229,53)", + "rgb(217,228,54)", + "rgb(219,226,54)", + "rgb(221,224,55)", + "rgb(223,223,55)", + "rgb(225,221,55)", + "rgb(227,219,56)", + "rgb(229,217,56)", + "rgb(231,215,57)", + "rgb(233,213,57)", + "rgb(235,211,57)", + "rgb(236,209,58)", + "rgb(238,207,58)", + "rgb(239,205,58)", + "rgb(241,203,58)", + "rgb(242,201,58)", + "rgb(244,199,58)", + "rgb(245,197,58)", + "rgb(246,195,58)", + "rgb(247,193,58)", + "rgb(248,190,57)", + "rgb(249,188,57)", + "rgb(250,186,57)", + "rgb(251,184,56)", + "rgb(251,182,55)", + "rgb(252,179,54)", + "rgb(252,177,54)", + "rgb(253,174,53)", + "rgb(253,172,52)", + "rgb(254,169,51)", + "rgb(254,167,50)", + "rgb(254,164,49)", + "rgb(254,161,48)", + "rgb(254,158,47)", + "rgb(254,155,45)", + "rgb(254,153,44)", + "rgb(254,150,43)", + "rgb(254,147,42)", + "rgb(254,144,41)", + "rgb(253,141,39)", + "rgb(253,138,38)", + "rgb(252,135,37)", + "rgb(252,132,35)", + "rgb(251,129,34)", + "rgb(251,126,33)", + "rgb(250,123,31)", + "rgb(249,120,30)", + "rgb(249,117,29)", + "rgb(248,114,28)", + "rgb(247,111,26)", + "rgb(246,108,25)", + "rgb(245,105,24)", + "rgb(244,102,23)", + "rgb(243,99,21)", + "rgb(242,96,20)", + "rgb(241,93,19)", + "rgb(240,91,18)", + "rgb(239,88,17)", + "rgb(237,85,16)", + "rgb(236,83,15)", + "rgb(235,80,14)", + "rgb(234,78,13)", + "rgb(232,75,12)", + "rgb(231,73,12)", + "rgb(229,71,11)", + "rgb(228,69,10)", + "rgb(226,67,10)", + "rgb(225,65,9)", + "rgb(223,63,8)", + "rgb(221,61,8)", + "rgb(220,59,7)", + "rgb(218,57,7)", + "rgb(216,55,6)", + "rgb(214,53,6)", + "rgb(212,51,5)", + "rgb(210,49,5)", + "rgb(208,47,5)", + "rgb(206,45,4)", + "rgb(204,43,4)", + "rgb(202,42,4)", + "rgb(200,40,3)", + "rgb(197,38,3)", + "rgb(195,37,3)", + "rgb(193,35,2)", + "rgb(190,33,2)", + "rgb(188,32,2)", + "rgb(185,30,2)", + "rgb(183,29,2)", + "rgb(180,27,1)", + "rgb(178,26,1)", + "rgb(175,24,1)", + "rgb(172,23,1)", + "rgb(169,22,1)", + "rgb(167,20,1)", + "rgb(164,19,1)", + "rgb(161,18,1)", + "rgb(158,16,1)", + "rgb(155,15,1)", + "rgb(152,14,1)", + "rgb(149,13,1)", + "rgb(146,11,1)", + "rgb(142,10,1)", + "rgb(139,9,2)", + "rgb(136,8,2)", + "rgb(133,7,2)", + "rgb(129,6,2)", + "rgb(126,5,2)", + "rgb(122,4,3)"}); + } + else if (map_name == "jet") + { + colormap.assign({"rgb(0,0,131)", + "rgb(0,0,135)", + "rgb(0,0,139)", + "rgb(0,0,143)", + "rgb(0,0,147)", + "rgb(0,0,151)", + "rgb(0,0,155)", + "rgb(0,0,159)", + "rgb(0,0,163)", + "rgb(0,0,167)", + "rgb(0,0,171)", + "rgb(0,0,175)", + "rgb(0,0,179)", + "rgb(0,0,183)", + "rgb(0,0,187)", + "rgb(0,0,191)", + "rgb(0,0,195)", + "rgb(0,0,199)", + "rgb(0,0,203)", + "rgb(0,0,207)", + "rgb(0,0,211)", + "rgb(0,0,215)", + "rgb(0,0,219)", + "rgb(0,0,223)", + "rgb(0,0,227)", + "rgb(0,0,231)", + "rgb(0,0,235)", + "rgb(0,0,239)", + "rgb(0,0,243)", + "rgb(0,0,247)", + "rgb(0,0,251)", + "rgb(0,0,255)", + "rgb(0,4,255)", + "rgb(0,8,255)", + "rgb(0,12,255)", + "rgb(0,16,255)", + "rgb(0,20,255)", + "rgb(0,24,255)", + "rgb(0,28,255)", + "rgb(0,32,255)", + "rgb(0,36,255)", + "rgb(0,40,255)", + "rgb(0,44,255)", + "rgb(0,48,255)", + "rgb(0,52,255)", + "rgb(0,56,255)", + "rgb(0,60,255)", + "rgb(0,64,255)", + "rgb(0,68,255)", + "rgb(0,72,255)", + "rgb(0,76,255)", + "rgb(0,80,255)", + "rgb(0,84,255)", + "rgb(0,88,255)", + "rgb(0,92,255)", + "rgb(0,96,255)", + "rgb(0,100,255)", + "rgb(0,104,255)", + "rgb(0,108,255)", + "rgb(0,112,255)", + "rgb(0,116,255)", + "rgb(0,120,255)", + "rgb(0,124,255)", + "rgb(0,128,255)", + "rgb(0,131,255)", + "rgb(0,135,255)", + "rgb(0,139,255)", + "rgb(0,143,255)", + "rgb(0,147,255)", + "rgb(0,151,255)", + "rgb(0,155,255)", + "rgb(0,159,255)", + "rgb(0,163,255)", + "rgb(0,167,255)", + "rgb(0,171,255)", + "rgb(0,175,255)", + "rgb(0,179,255)", + "rgb(0,183,255)", + "rgb(0,187,255)", + "rgb(0,191,255)", + "rgb(0,195,255)", + "rgb(0,199,255)", + "rgb(0,203,255)", + "rgb(0,207,255)", + "rgb(0,211,255)", + "rgb(0,215,255)", + "rgb(0,219,255)", + "rgb(0,223,255)", + "rgb(0,227,255)", + "rgb(0,231,255)", + "rgb(0,235,255)", + "rgb(0,239,255)", + "rgb(0,243,255)", + "rgb(0,247,255)", + "rgb(0,251,255)", + "rgb(0,255,255)", + "rgb(4,255,251)", + "rgb(8,255,247)", + "rgb(12,255,243)", + "rgb(16,255,239)", + "rgb(20,255,235)", + "rgb(24,255,231)", + "rgb(28,255,227)", + "rgb(32,255,223)", + "rgb(36,255,219)", + "rgb(40,255,215)", + "rgb(44,255,211)", + "rgb(48,255,207)", + "rgb(52,255,203)", + "rgb(56,255,199)", + "rgb(60,255,195)", + "rgb(64,255,191)", + "rgb(68,255,187)", + "rgb(72,255,183)", + "rgb(76,255,179)", + "rgb(80,255,175)", + "rgb(84,255,171)", + "rgb(88,255,167)", + "rgb(92,255,163)", + "rgb(96,255,159)", + "rgb(100,255,155)", + "rgb(104,255,151)", + "rgb(108,255,147)", + "rgb(112,255,143)", + "rgb(116,255,139)", + "rgb(120,255,135)", + "rgb(124,255,131)", + "rgb(128,255,128)", + "rgb(131,255,124)", + "rgb(135,255,120)", + "rgb(139,255,116)", + "rgb(143,255,112)", + "rgb(147,255,108)", + "rgb(151,255,104)", + "rgb(155,255,100)", + "rgb(159,255,96)", + "rgb(163,255,92)", + "rgb(167,255,88)", + "rgb(171,255,84)", + "rgb(175,255,80)", + "rgb(179,255,76)", + "rgb(183,255,72)", + "rgb(187,255,68)", + "rgb(191,255,64)", + "rgb(195,255,60)", + "rgb(199,255,56)", + "rgb(203,255,52)", + "rgb(207,255,48)", + "rgb(211,255,44)", + "rgb(215,255,40)", + "rgb(219,255,36)", + "rgb(223,255,32)", + "rgb(227,255,28)", + "rgb(231,255,24)", + "rgb(235,255,20)", + "rgb(239,255,16)", + "rgb(243,255,12)", + "rgb(247,255,8)", + "rgb(251,255,4)", + "rgb(255,255,0)", + "rgb(255,251,0)", + "rgb(255,247,0)", + "rgb(255,243,0)", + "rgb(255,239,0)", + "rgb(255,235,0)", + "rgb(255,231,0)", + "rgb(255,227,0)", + "rgb(255,223,0)", + "rgb(255,219,0)", + "rgb(255,215,0)", + "rgb(255,211,0)", + "rgb(255,207,0)", + "rgb(255,203,0)", + "rgb(255,199,0)", + "rgb(255,195,0)", + "rgb(255,191,0)", + "rgb(255,187,0)", + "rgb(255,183,0)", + "rgb(255,179,0)", + "rgb(255,175,0)", + "rgb(255,171,0)", + "rgb(255,167,0)", + "rgb(255,163,0)", + "rgb(255,159,0)", + "rgb(255,155,0)", + "rgb(255,151,0)", + "rgb(255,147,0)", + "rgb(255,143,0)", + "rgb(255,139,0)", + "rgb(255,135,0)", + "rgb(255,131,0)", + "rgb(255,128,0)", + "rgb(255,124,0)", + "rgb(255,120,0)", + "rgb(255,116,0)", + "rgb(255,112,0)", + "rgb(255,108,0)", + "rgb(255,104,0)", + "rgb(255,100,0)", + "rgb(255,96,0)", + "rgb(255,92,0)", + "rgb(255,88,0)", + "rgb(255,84,0)", + "rgb(255,80,0)", + "rgb(255,76,0)", + "rgb(255,72,0)", + "rgb(255,68,0)", + "rgb(255,64,0)", + "rgb(255,60,0)", + "rgb(255,56,0)", + "rgb(255,52,0)", + "rgb(255,48,0)", + "rgb(255,44,0)", + "rgb(255,40,0)", + "rgb(255,36,0)", + "rgb(255,32,0)", + "rgb(255,28,0)", + "rgb(255,24,0)", + "rgb(255,20,0)", + "rgb(255,16,0)", + "rgb(255,12,0)", + "rgb(255,8,0)", + "rgb(255,4,0)", + "rgb(255,0,0)", + "rgb(251,0,0)", + "rgb(247,0,0)", + "rgb(243,0,0)", + "rgb(239,0,0)", + "rgb(235,0,0)", + "rgb(231,0,0)", + "rgb(227,0,0)", + "rgb(223,0,0)", + "rgb(219,0,0)", + "rgb(215,0,0)", + "rgb(211,0,0)", + "rgb(207,0,0)", + "rgb(203,0,0)", + "rgb(199,0,0)", + "rgb(195,0,0)", + "rgb(191,0,0)", + "rgb(187,0,0)", + "rgb(183,0,0)", + "rgb(179,0,0)", + "rgb(175,0,0)", + "rgb(171,0,0)", + "rgb(167,0,0)", + "rgb(163,0,0)", + "rgb(159,0,0)", + "rgb(155,0,0)", + "rgb(151,0,0)", + "rgb(147,0,0)", + "rgb(143,0,0)", + "rgb(139,0,0)", + "rgb(135,0,0)", + "rgb(131,0,0)", + "rgb(128,0,0)"}); + } + else if (map_name == "plasma") + { + colormap.assign({"rgb(13,8,135)", + "rgb(16,7,136)", + "rgb(19,7,137)", + "rgb(22,7,138)", + "rgb(25,6,140)", + "rgb(27,6,141)", + "rgb(29,6,142)", + "rgb(32,6,143)", + "rgb(34,6,144)", + "rgb(36,6,145)", + "rgb(38,5,145)", + "rgb(40,5,146)", + "rgb(42,5,147)", + "rgb(44,5,148)", + "rgb(46,5,149)", + "rgb(47,5,150)", + "rgb(49,5,151)", + "rgb(51,5,151)", + "rgb(53,4,152)", + "rgb(55,4,153)", + "rgb(56,4,154)", + "rgb(58,4,154)", + "rgb(60,4,155)", + "rgb(62,4,156)", + "rgb(63,4,156)", + "rgb(65,4,157)", + "rgb(67,3,158)", + "rgb(68,3,158)", + "rgb(70,3,159)", + "rgb(72,3,159)", + "rgb(73,3,160)", + "rgb(75,3,161)", + "rgb(76,2,161)", + "rgb(78,2,162)", + "rgb(80,2,162)", + "rgb(81,2,163)", + "rgb(83,2,163)", + "rgb(85,2,164)", + "rgb(86,1,164)", + "rgb(88,1,164)", + "rgb(89,1,165)", + "rgb(91,1,165)", + "rgb(92,1,166)", + "rgb(94,1,166)", + "rgb(96,1,166)", + "rgb(97,0,167)", + "rgb(99,0,167)", + "rgb(100,0,167)", + "rgb(102,0,167)", + "rgb(103,0,168)", + "rgb(105,0,168)", + "rgb(106,0,168)", + "rgb(108,0,168)", + "rgb(110,0,168)", + "rgb(111,0,168)", + "rgb(113,0,168)", + "rgb(114,1,168)", + "rgb(116,1,168)", + "rgb(117,1,168)", + "rgb(119,1,168)", + "rgb(120,1,168)", + "rgb(122,2,168)", + "rgb(123,2,168)", + "rgb(125,3,168)", + "rgb(126,3,168)", + "rgb(128,4,168)", + "rgb(129,4,167)", + "rgb(131,5,167)", + "rgb(132,5,167)", + "rgb(134,6,166)", + "rgb(135,7,166)", + "rgb(136,8,166)", + "rgb(138,9,165)", + "rgb(139,10,165)", + "rgb(141,11,165)", + "rgb(142,12,164)", + "rgb(143,13,164)", + "rgb(145,14,163)", + "rgb(146,15,163)", + "rgb(148,16,162)", + "rgb(149,17,161)", + "rgb(150,19,161)", + "rgb(152,20,160)", + "rgb(153,21,159)", + "rgb(154,22,159)", + "rgb(156,23,158)", + "rgb(157,24,157)", + "rgb(158,25,157)", + "rgb(160,26,156)", + "rgb(161,27,155)", + "rgb(162,29,154)", + "rgb(163,30,154)", + "rgb(165,31,153)", + "rgb(166,32,152)", + "rgb(167,33,151)", + "rgb(168,34,150)", + "rgb(170,35,149)", + "rgb(171,36,148)", + "rgb(172,38,148)", + "rgb(173,39,147)", + "rgb(174,40,146)", + "rgb(176,41,145)", + "rgb(177,42,144)", + "rgb(178,43,143)", + "rgb(179,44,142)", + "rgb(180,46,141)", + "rgb(181,47,140)", + "rgb(182,48,139)", + "rgb(183,49,138)", + "rgb(184,50,137)", + "rgb(186,51,136)", + "rgb(187,52,136)", + "rgb(188,53,135)", + "rgb(189,55,134)", + "rgb(190,56,133)", + "rgb(191,57,132)", + "rgb(192,58,131)", + "rgb(193,59,130)", + "rgb(194,60,129)", + "rgb(195,61,128)", + "rgb(196,62,127)", + "rgb(197,64,126)", + "rgb(198,65,125)", + "rgb(199,66,124)", + "rgb(200,67,123)", + "rgb(201,68,122)", + "rgb(202,69,122)", + "rgb(203,70,121)", + "rgb(204,71,120)", + "rgb(204,73,119)", + "rgb(205,74,118)", + "rgb(206,75,117)", + "rgb(207,76,116)", + "rgb(208,77,115)", + "rgb(209,78,114)", + "rgb(210,79,113)", + "rgb(211,81,113)", + "rgb(212,82,112)", + "rgb(213,83,111)", + "rgb(213,84,110)", + "rgb(214,85,109)", + "rgb(215,86,108)", + "rgb(216,87,107)", + "rgb(217,88,106)", + "rgb(218,90,106)", + "rgb(218,91,105)", + "rgb(219,92,104)", + "rgb(220,93,103)", + "rgb(221,94,102)", + "rgb(222,95,101)", + "rgb(222,97,100)", + "rgb(223,98,99)", + "rgb(224,99,99)", + "rgb(225,100,98)", + "rgb(226,101,97)", + "rgb(226,102,96)", + "rgb(227,104,95)", + "rgb(228,105,94)", + "rgb(229,106,93)", + "rgb(229,107,93)", + "rgb(230,108,92)", + "rgb(231,110,91)", + "rgb(231,111,90)", + "rgb(232,112,89)", + "rgb(233,113,88)", + "rgb(233,114,87)", + "rgb(234,116,87)", + "rgb(235,117,86)", + "rgb(235,118,85)", + "rgb(236,119,84)", + "rgb(237,121,83)", + "rgb(237,122,82)", + "rgb(238,123,81)", + "rgb(239,124,81)", + "rgb(239,126,80)", + "rgb(240,127,79)", + "rgb(240,128,78)", + "rgb(241,129,77)", + "rgb(241,131,76)", + "rgb(242,132,75)", + "rgb(243,133,75)", + "rgb(243,135,74)", + "rgb(244,136,73)", + "rgb(244,137,72)", + "rgb(245,139,71)", + "rgb(245,140,70)", + "rgb(246,141,69)", + "rgb(246,143,68)", + "rgb(247,144,68)", + "rgb(247,145,67)", + "rgb(247,147,66)", + "rgb(248,148,65)", + "rgb(248,149,64)", + "rgb(249,151,63)", + "rgb(249,152,62)", + "rgb(249,154,62)", + "rgb(250,155,61)", + "rgb(250,156,60)", + "rgb(250,158,59)", + "rgb(251,159,58)", + "rgb(251,161,57)", + "rgb(251,162,56)", + "rgb(252,163,56)", + "rgb(252,165,55)", + "rgb(252,166,54)", + "rgb(252,168,53)", + "rgb(252,169,52)", + "rgb(253,171,51)", + "rgb(253,172,51)", + "rgb(253,174,50)", + "rgb(253,175,49)", + "rgb(253,177,48)", + "rgb(253,178,47)", + "rgb(253,180,47)", + "rgb(253,181,46)", + "rgb(254,183,45)", + "rgb(254,184,44)", + "rgb(254,186,44)", + "rgb(254,187,43)", + "rgb(254,189,42)", + "rgb(254,190,42)", + "rgb(254,192,41)", + "rgb(253,194,41)", + "rgb(253,195,40)", + "rgb(253,197,39)", + "rgb(253,198,39)", + "rgb(253,200,39)", + "rgb(253,202,38)", + "rgb(253,203,38)", + "rgb(252,205,37)", + "rgb(252,206,37)", + "rgb(252,208,37)", + "rgb(252,210,37)", + "rgb(251,211,36)", + "rgb(251,213,36)", + "rgb(251,215,36)", + "rgb(250,216,36)", + "rgb(250,218,36)", + "rgb(249,220,36)", + "rgb(249,221,37)", + "rgb(248,223,37)", + "rgb(248,225,37)", + "rgb(247,226,37)", + "rgb(247,228,37)", + "rgb(246,230,38)", + "rgb(246,232,38)", + "rgb(245,233,38)", + "rgb(245,235,39)", + "rgb(244,237,39)", + "rgb(243,238,39)", + "rgb(243,240,39)", + "rgb(242,242,39)", + "rgb(241,244,38)", + "rgb(241,245,37)", + "rgb(240,247,36)", + "rgb(240,249,33)"}); } - char szTempString [128]; - sprintf( szTempString , "rgb(%u,234,197)", 255 - color); - output[0].assign( szTempString ); + else + { + std::cout << "WARNING : The colormap " << map_name << " has not been specified for the SVG substrate plot." << std::endl + << "\tUsing YlOrRd." << std::endl + << std::endl; + PhysiCell_settings.svg_substrate_colormap = "YlOrRd"; + setup_svg_substrate_colormap(colormap); + } + + if (is_reversed) + { + for (unsigned int i = 0; i colormap; + static int n_color_bins; + static bool is_colormap_setup = false; + if (!is_colormap_setup) + { + setup_svg_substrate_colormap(colormap); + n_color_bins = colormap.size(); + is_colormap_setup = true; + } + std::string output; + int ind = (int)round(((concentration - min_conc) / (max_conc - min_conc)) * n_color_bins); + if (ind >= n_color_bins) + { + ind = n_color_bins - 1; + } + else if (ind < 0) + { + ind = 0; + } + // std::cout << "colormap[ind] = " << colormap[ind] << std::endl; + return colormap[ind]; } std::vector paint_by_number_cell_coloring( Cell* pCell ) diff --git a/modules/PhysiCell_pathology.h b/modules/PhysiCell_pathology.h index a89be7002..c7d679338 100644 --- a/modules/PhysiCell_pathology.h +++ b/modules/PhysiCell_pathology.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2021, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -104,7 +104,9 @@ std::vector transmission( std::vector& incoming_light, std::vect std::vector simple_cell_coloring( Cell* pCell ); // done -std::vector paint_by_density_percentage( double concentration, double max_conc, double min_conc ); //done +std::string paint_by_density_percentage( double concentration, double max_conc, double min_conc ); //done + +void setup_svg_substrate_colormap(std::vector &colormap); std::vector false_cell_coloring_Ki67( Cell* pCell ); // done std::vector false_cell_coloring_live_dead( Cell* pCell ); // done @@ -120,7 +122,7 @@ std::vector paint_by_number_cell_coloring( Cell* pCell ); // done std::string formatted_minutes_to_DDHHMM( double minutes ); -void SVG_plot( std::string filename , Microenvironment& M, double z_slice , double time, std::vector (*cell_coloring_function)(Cell*), std::vector (*substrate_coloring_function)(double, double, double) = NULL, void (*cell_counts_function) (char*) = NULL); // done +void SVG_plot( std::string filename , Microenvironment& M, double z_slice , double time, std::vector (*cell_coloring_function)(Cell*), std::string (*substrate_coloring_function)(double, double, double) = paint_by_density_percentage, void (*cell_counts_function) (char*) = NULL); // done void SVG_plot_with_stroma( std::string filename , Microenvironment& M, double z_slice , double time, std::vector (*cell_coloring_function)(Cell*) , int ECM_index, std::vector (*ECM_coloring_function)(double) ); // planned diff --git a/modules/PhysiCell_pugixml.cpp b/modules/PhysiCell_pugixml.cpp index 74ffbd4e9..1419d01d8 100644 --- a/modules/PhysiCell_pugixml.cpp +++ b/modules/PhysiCell_pugixml.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2018, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/modules/PhysiCell_pugixml.h b/modules/PhysiCell_pugixml.h index 4dfb42a7e..8793fd27b 100644 --- a/modules/PhysiCell_pugixml.h +++ b/modules/PhysiCell_pugixml.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2018, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/modules/PhysiCell_settings.cpp b/modules/PhysiCell_settings.cpp index 5dfec6a68..8b5786140 100644 --- a/modules/PhysiCell_settings.cpp +++ b/modules/PhysiCell_settings.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2021, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -132,6 +132,7 @@ PhysiCell_Settings::PhysiCell_Settings() limits_substrate_plot = false; min_concentration = -1.0; max_concentration = -1.0; + svg_substrate_colormap = "YlOrRd"; intracellular_save_interval = 60; enable_intracellular_saves = false; @@ -207,7 +208,13 @@ void PhysiCell_Settings::read_from_pugixml( void ) min_concentration = xml_get_double_value(node_plot_substrate, "min_conc"); max_concentration = xml_get_double_value(node_plot_substrate, "max_conc"); } - }; + pugi::xml_node colormap_node = xml_find_node( node_plot_substrate, "colormap"); + if (colormap_node) + { + svg_substrate_colormap = xml_get_my_string_value(colormap_node); + } + } + node = node.parent(); node = xml_find_node( node , "intracellular_data" ); @@ -230,32 +237,53 @@ void PhysiCell_Settings::read_from_pugixml( void ) pugi::xml_node node_options; - node_options = xml_find_node( physicell_config_root , "options" ); - if( node_options ) + node_options = xml_find_node( physicell_config_root , "options" ); + if (node_options) { - bool settings; - - // look for legacy_random_points_on_sphere_in_divide - settings = - xml_get_bool_value( node_options, "legacy_random_points_on_sphere_in_divide" ); - if( settings ) + bool settings; + + // look for legacy_random_points_on_sphere_in_divide + settings = xml_get_bool_value(node_options, "legacy_random_points_on_sphere_in_divide"); + if (settings) { - std::cout << "setting legacy unif" << std::endl; - extern std::vector (*cell_division_orientation)(void); - cell_division_orientation = LegacyRandomOnUnitSphere; + std::cout << "setting legacy unif" << std::endl; + extern std::vector (*cell_division_orientation)(void); + cell_division_orientation = LegacyRandomOnUnitSphere; } - - settings = xml_get_bool_value( node_options, "disable_automated_spring_adhesions" ); - if( settings ) + + settings = xml_get_bool_value(node_options, "disable_automated_spring_adhesions"); + if (settings) { - std::cout << "Disabling automated spring adhesions and detachments!" << std::endl; - PhysiCell_settings.disable_automated_spring_adhesions = true; + std::cout << "Disabling automated spring adhesions and detachments!" << std::endl; + PhysiCell_settings.disable_automated_spring_adhesions = true; } - // other options can go here, eventually + pugi::xml_node random_seed_node = xml_find_node(node_options, "random_seed"); + std::string random_seed = ""; // default is system clock, even if this element is not present + if (random_seed_node) + { random_seed = xml_get_my_string_value(random_seed_node); } + + if (random_seed == "" || random_seed == "random" || random_seed == "system_clock") + { + std::cout << "Using system clock for random seed" << std::endl; + SeedRandom(); + } + else + { + int seed; + try + { seed = std::stoi(random_seed); } + catch(const std::exception& e) + { + std::cout << "ERROR: " << random_seed << " is not a valid random seed. It must be an integer. Fix this within ." << std::endl; + exit(-1); + } + SeedRandom(seed); + } + // other options can go here, eventually } - + // domain options node = xml_find_node( physicell_config_root , "domain" ); @@ -442,72 +470,24 @@ Parameters::Parameters() template void Parameters::add_parameter( std::string my_name ) { - Parameter* pNew; - pNew = new Parameter ; - pNew->name = my_name ; - - int n = parameters.size(); - - parameters.push_back( *pNew ); - - name_to_index_map[ my_name ] = n; - return; + // this function is not currently (2024-06-03) called in the code, so these defaults largely do not matter; very unlikely others are directly calling this function, let alone this implementation + T my_value = T(); // for {int, double, bool, string} this will be {0, 0.0, false, ""} (this would technically change the behavior for strings since it is hardcoded above to default to "none", but nobody should rely on the default value of a string being "none") + return add_parameter( my_name , my_value ); } template void Parameters::add_parameter( std::string my_name , T my_value ) { - Parameter* pNew; - pNew = new Parameter ; - pNew->name = my_name ; - pNew->value = my_value; - - int n = parameters.size(); - - parameters.push_back( *pNew ); - - name_to_index_map[ my_name ] = n; - return; + // this function is not currently (2024-06-03) called in the code, so these defaults largely do not matter; very unlikely others are directly calling this function, let alone this implementation + std::string my_units = "dimensionless"; // technically this would change the behavior for strings since it is hardcoded above to default to "none", but nobody should be using units on strings; also, if the xml does not have units, then "dimensionless" is used even for strings + return add_parameter( my_name , my_value , my_units ); } -/* -template -void Parameters::add_parameter( std::string my_name , T my_value ) -{ - Parameter* pNew; - pNew = new Parameter ; - pNew->name = my_name ; - pNew->value = my_value; - - int n = parameters.size(); - - parameters.push_back( *pNew ); - - name_to_index_map[ my_name ] = n; - return; -} -*/ template void Parameters::add_parameter( std::string my_name , T my_value , std::string my_units ) { - Parameter* pNew; - pNew = new Parameter ; - pNew->name = my_name ; - pNew->value = my_value; - pNew->units = my_units; - - int n = parameters.size(); - - parameters.push_back( *pNew ); - - name_to_index_map[ my_name ] = n; - return; -} + assert_not_exists(my_name); -/* -template -void Parameters::add_parameter( std::string my_name , T my_value , std::string my_units ) -{ Parameter* pNew; pNew = new Parameter ; pNew->name = my_name ; @@ -521,17 +501,28 @@ void Parameters::add_parameter( std::string my_name , T my_value , std::strin name_to_index_map[ my_name ] = n; return; } -*/ template void Parameters::add_parameter( Parameter param ) { + assert_not_exists(param.name); + int n = parameters.size(); parameters.push_back( param); name_to_index_map[ param.name ] = n; return; } +template +void Parameters::assert_not_exists( std::string search_name ) +{ + if( find_index( search_name ) == -1 ) + { return; } + + std::cout << "ERROR: Parameter " << search_name << " already exists. Make sure all parameters (of a given type) have unique names." << std::endl; + exit(-1); +} + std::ostream& operator<<( std::ostream& os , const User_Parameters up ) { os << "Bool parameters:: " << std::endl << up.bools << std::endl; @@ -555,44 +546,33 @@ void User_Parameters::read_from_pugixml( pugi::xml_node parent_node ) { units = "dimensionless"; } std::string type = node1.attribute( "type" ).value(); - - bool done = false ; - if( type == "bool" && done == false ) + + if (type == "bool") { - bool value = xml_get_my_bool_value( node1 ); - bools.add_parameter( name , value, units ); - done = true; + bool value = xml_get_my_bool_value(node1); + bools.add_parameter(name, value, units); } - - if( type == "int" && done == false ) + else if (type == "int") { - int value = xml_get_my_int_value( node1 ); - ints.add_parameter( name , value, units ); - done = true; + int value = xml_get_my_int_value(node1); + ints.add_parameter(name, value, units); } - - if( type == "double" && done == false ) + else if (type == "double") { - double value = xml_get_my_double_value( node1 ); - doubles.add_parameter( name , value, units ); - done = true; + double value = xml_get_my_double_value(node1); + doubles.add_parameter(name, value, units); } - - if( done == false && type == "string" ) + else if (type == "string") { - std::string value = xml_get_my_string_value( node1 ); - strings.add_parameter( name, value , units ); - done = true; + std::string value = xml_get_my_string_value(node1); + strings.add_parameter(name, value, units); } - - /* default if no type specified: */ - if( done == false ) + else // default if no type specified { - double value = xml_get_my_double_value( node1 ); - doubles.add_parameter( name , value, units ); - done = true; + double value = xml_get_my_double_value(node1); + doubles.add_parameter(name, value, units); } - + node1 = node1.next_sibling(); i++; } @@ -911,8 +891,19 @@ bool setup_microenvironment_from_XML( pugi::xml_node root_node ) // track internalized substrates in each agent? default_microenvironment_options.track_internalized_substrates_in_each_agent - = xml_get_bool_value( node, "track_internalized_substrates_in_each_agent" ); - + = xml_get_bool_value( node, "track_internalized_substrates_in_each_agent" ); + + node = xml_find_node(node, "initial_condition"); + if (node) + { + default_microenvironment_options.initial_condition_from_file_enabled = node.attribute("enabled").as_bool(); + if (default_microenvironment_options.initial_condition_from_file_enabled) + { + default_microenvironment_options.initial_condition_file_type = node.attribute("type").as_string(); + default_microenvironment_options.initial_condition_file = xml_get_string_value(node, "filename"); + } + } + // not yet supported : read initial conditions /* // read in initial conditions from an external file diff --git a/modules/PhysiCell_settings.h b/modules/PhysiCell_settings.h index f76c4429c..c422e4cda 100644 --- a/modules/PhysiCell_settings.h +++ b/modules/PhysiCell_settings.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2018, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # @@ -122,6 +122,7 @@ class PhysiCell_Settings bool limits_substrate_plot = false; double min_concentration = -1.0; double max_concentration = -1.0; + std::string svg_substrate_colormap = "YlOrRd"; double intracellular_save_interval = 60; bool enable_intracellular_saves = false; @@ -185,9 +186,7 @@ class Parameters void add_parameter( std::string my_name ); void add_parameter( std::string my_name , T my_value ); -// void add_parameter( std::string my_name , T my_value ); void add_parameter( std::string my_name , T my_value , std::string my_units ); -// void add_parameter( std::string my_name , T my_value , std::string my_units ); void add_parameter( Parameter param ); @@ -201,7 +200,9 @@ class Parameters Parameter& operator[]( int i ); Parameter& operator[]( std::string str ); - int size( void ) const; + int size( void ) const; + + void assert_not_exists(std::string search_name); }; class User_Parameters diff --git a/modules/PhysiCell_standard_modules.h b/modules/PhysiCell_standard_modules.h index e0d09c565..bd781212a 100644 --- a/modules/PhysiCell_standard_modules.h +++ b/modules/PhysiCell_standard_modules.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2021, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/modules/PhysiCell_various_outputs.cpp b/modules/PhysiCell_various_outputs.cpp index 4d24d5332..075ee7dbe 100644 --- a/modules/PhysiCell_various_outputs.cpp +++ b/modules/PhysiCell_various_outputs.cpp @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2018, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/modules/PhysiCell_various_outputs.h b/modules/PhysiCell_various_outputs.h index 64eb5de39..6b19568bf 100644 --- a/modules/PhysiCell_various_outputs.h +++ b/modules/PhysiCell_various_outputs.h @@ -33,7 +33,7 @@ # # # BSD 3-Clause License (see https://opensource.org/licenses/BSD-3-Clause) # # # -# Copyright (c) 2015-2018, Paul Macklin and the PhysiCell Project # +# Copyright (c) 2015-2024, Paul Macklin and the PhysiCell Project # # All rights reserved. # # # # Redistribution and use in source and binary forms, with or without # diff --git a/sample_projects/Makefile-default b/sample_projects/Makefile-default index 7302163a0..440b03cf0 100644 --- a/sample_projects/Makefile-default +++ b/sample_projects/Makefile-default @@ -73,19 +73,19 @@ name: list-projects: @echo "Sample projects: template biorobots-sample cancer-biorobots-sample cancer-immune-sample" @echo " celltypes3-sample heterogeneity-sample pred-prey-farmer virus-macrophage-sample" - @echo " worm-sample interaction-sample mechano-sample rules-sample physimess-sample" + @echo " worm-sample interaction-sample mechano-sample rules-sample physimess-sample custom-division-sample" @echo "" - @echo "Sample intracellular projects: ode-energy-sample physiboss-cell-lines-sample cancer-metabolism-sample" + @echo "Sample intracellular projects: template_BM ode-energy-sample physiboss-cell-lines-sample" + @echo " cancer-metabolism-sample physiboss-tutorial physiboss-tutorial-invasion" @echo "" template: - cp ./sample_projects/template/custom_modules/* ./custom_modules/ + cp -r ./sample_projects/template/custom_modules/* ./custom_modules/ touch main.cpp && cp main.cpp main-backup.cpp cp ./sample_projects/template/main.cpp ./main.cpp cp Makefile Makefile-backup cp ./sample_projects/template/Makefile . - cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml - cp ./sample_projects/template/config/* ./config/ + cp -r ./sample_projects/template/config/* ./config # sample projects @@ -197,6 +197,16 @@ physimess-sample: cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml cp -r ./sample_projects/physimess/config/* ./config/ + +custom-division-sample: + cp ./sample_projects/custom_division/custom_modules/* ./custom_modules/ + touch main.cpp && cp main.cpp main-backup.cpp + cp ./sample_projects/custom_division/main.cpp ./main.cpp + cp Makefile Makefile-backup + cp ./sample_projects/custom_division/Makefile . + cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml + cp ./sample_projects/custom_division/config/* ./config/ + # ---- intracellular projects ode-energy-sample: cp ./sample_projects_intracellular/ode/ode_energy/custom_modules/* ./custom_modules/ @@ -216,6 +226,24 @@ physiboss-cell-lines-sample: cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml cp ./sample_projects_intracellular/boolean/physiboss_cell_lines/config/* ./config/ +physiboss-tutorial: + cp ./sample_projects_intracellular/boolean/tutorial/custom_modules/* ./custom_modules/ + touch main.cpp && cp main.cpp main-backup.cpp + cp ./sample_projects_intracellular/boolean/tutorial/main.cpp ./main.cpp + cp Makefile Makefile-backup + cp ./sample_projects_intracellular/boolean/tutorial/Makefile . + cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml + cp -r ./sample_projects_intracellular/boolean/tutorial/config/* ./config/ + +physiboss-tutorial-invasion: + cp ./sample_projects_intracellular/boolean/cancer_invasion/custom_modules/* ./custom_modules/ + touch main.cpp && cp main.cpp main-backup.cpp + cp ./sample_projects_intracellular/boolean/cancer_invasion/main.cpp ./main.cpp + cp Makefile Makefile-backup + cp ./sample_projects_intracellular/boolean/cancer_invasion/Makefile . + cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml + cp -r ./sample_projects_intracellular/boolean/cancer_invasion/config/* ./config/ + ecoli-acetic-switch-sample: cp ./sample_projects_intracellular/fba/ecoli_acetic_switch/custom_modules/* ./custom_modules/ touch main.cpp && cp main.cpp main-backup.cpp @@ -234,6 +262,16 @@ cancer-metabolism-sample: cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml cp ./sample_projects_intracellular/fba/cancer_metabolism/config/* ./config/ +template_BM: + cp ./sample_projects_intracellular/boolean/template_BM/custom_modules/* ./custom_modules/ + touch main.cpp && cp main.cpp main-backup.cpp + cp ./sample_projects_intracellular/boolean/template_BM/main.cpp ./main.cpp + cp Makefile Makefile-backup + cp ./sample_projects_intracellular/boolean/template_BM/Makefile . + cp ./config/PhysiCell_settings.xml ./config/PhysiCell_settings-backup.xml + cp -r ./sample_projects_intracellular/boolean/template_BM/config/* ./config/ + mkdir ./scripts/ + cp ./sample_projects_intracellular/boolean/template_BM/scripts/* ./scripts/ # early examples for convergence testing @@ -360,7 +398,7 @@ PhysiCell_geometry.o: ./modules/PhysiCell_geometry.cpp reset: rm -f *.cpp PhysiCell_cell.o cp ./sample_projects/Makefile-default Makefile - rm -f ./custom_modules/* + rm -rf ./custom_modules/* touch ./custom_modules/empty.txt touch ALL_CITATIONS.txt touch ./core/PhysiCell_cell.cpp @@ -464,15 +502,15 @@ save: cp main.cpp ./user_projects/$(PROJ) cp Makefile ./user_projects/$(PROJ) cp VERSION.txt ./user_projects/$(PROJ) - cp ./config/* ./user_projects/$(PROJ)/config - cp ./custom_modules/* ./user_projects/$(PROJ)/custom_modules + cp -r ./config/* ./user_projects/$(PROJ)/config + cp -r ./custom_modules/* ./user_projects/$(PROJ)/custom_modules load: echo "Loading project from $(PROJ) ... " cp ./user_projects/$(PROJ)/main.cpp . cp ./user_projects/$(PROJ)/Makefile . - cp ./user_projects/$(PROJ)/config/* ./config/ - cp ./user_projects/$(PROJ)/custom_modules/* ./custom_modules/ + cp -r ./user_projects/$(PROJ)/config/* ./config/ + cp -r ./user_projects/$(PROJ)/custom_modules/* ./custom_modules/ pack: @echo " " diff --git a/sample_projects/biorobots/custom_modules/custom.cpp b/sample_projects/biorobots/custom_modules/custom.cpp index 1407d289b..664a36503 100644 --- a/sample_projects/biorobots/custom_modules/custom.cpp +++ b/sample_projects/biorobots/custom_modules/custom.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/sample_projects/cancer_biorobots/custom_modules/custom.cpp b/sample_projects/cancer_biorobots/custom_modules/custom.cpp index 9c43db830..ffa318b9f 100644 --- a/sample_projects/cancer_biorobots/custom_modules/custom.cpp +++ b/sample_projects/cancer_biorobots/custom_modules/custom.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you @@ -550,7 +553,7 @@ void tumor_cell_phenotype_with_therapy( Cell* pCell, Phenotype& phenotype, doubl temp /= max_damage; // dt*(damage/max_damage)*death_rate // make sure we write the damage (not current a behavior) - pCell->state.damage = damage; + pCell->phenotype.cell_integrity.damage = damage; if( UniformRandom() <= temp ) { diff --git a/sample_projects/cancer_immune/custom_modules/cancer_immune_3D.cpp b/sample_projects/cancer_immune/custom_modules/cancer_immune_3D.cpp index 03d0a8e84..18fea9937 100644 --- a/sample_projects/cancer_immune/custom_modules/cancer_immune_3D.cpp +++ b/sample_projects/cancer_immune/custom_modules/cancer_immune_3D.cpp @@ -117,7 +117,11 @@ void create_cell_types( void ) // same initial histogram of oncoprotein, even if threading means // that future division and other events are still not identical // for all runs - SeedRandom( parameters.ints("random_seed") ); + // set the random seed + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } // housekeeping diff --git a/sample_projects/celltypes3/custom_modules/custom.cpp b/sample_projects/celltypes3/custom_modules/custom.cpp index f32275e0b..d7866e625 100644 --- a/sample_projects/celltypes3/custom_modules/custom.cpp +++ b/sample_projects/celltypes3/custom_modules/custom.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/sample_projects/custom_division/Makefile b/sample_projects/custom_division/Makefile new file mode 100644 index 000000000..e90a9966f --- /dev/null +++ b/sample_projects/custom_division/Makefile @@ -0,0 +1,314 @@ +VERSION := $(shell grep . VERSION.txt | cut -f1 -d:) +PROGRAM_NAME := project + +CC := g++ +# CC := g++-mp-7 # typical macports compiler name +# CC := g++-7 # typical homebrew compiler name + +# Check for environment definitions of compiler +# e.g., on CC = g++-7 on OSX +ifdef PHYSICELL_CPP + CC := $(PHYSICELL_CPP) +endif + +ARCH := native # best auto-tuning +# ARCH := core2 # a reasonably safe default for most CPUs since 2007 +# ARCH := corei7 +# ARCH := corei7-avx # earlier i7 +# ARCH := core-avx-i # i7 ivy bridge or newer +# ARCH := core-avx2 # i7 with Haswell or newer +# ARCH := nehalem +# ARCH := westmere +# ARCH := sandybridge # circa 2011 +# ARCH := ivybridge # circa 2012 +# ARCH := haswell # circa 2013 +# ARCH := broadwell # circa 2014 +# ARCH := skylake # circa 2015 +# ARCH := bonnell +# ARCH := silvermont +# ARCH := skylake-avx512 +# 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 + +ifeq ($(OS),Windows_NT) +else + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Darwin) + UNAME_P := $(shell uname -p) + var := $(shell which $(CC) | xargs file) + ifeq ($(lastword $(var)),arm64) + CFLAGS := -march=$(ARCH) -O3 -fomit-frame-pointer -fopenmp -m64 -std=c++11 + endif + endif +endif + +COMPILE_COMMAND := $(CC) $(CFLAGS) + +BioFVM_OBJECTS := BioFVM_vector.o BioFVM_mesh.o BioFVM_microenvironment.o BioFVM_solvers.o BioFVM_matlab.o \ +BioFVM_utilities.o BioFVM_basic_agent.o BioFVM_MultiCellDS.o BioFVM_agent_container.o + +PhysiCell_core_OBJECTS := PhysiCell_phenotype.o PhysiCell_cell_container.o PhysiCell_standard_models.o \ +PhysiCell_cell.o PhysiCell_custom.o PhysiCell_utilities.o PhysiCell_constants.o PhysiCell_basic_signaling.o \ +PhysiCell_signal_behavior.o PhysiCell_rules.o + +PhysiCell_module_OBJECTS := PhysiCell_SVG.o PhysiCell_pathology.o PhysiCell_MultiCellDS.o PhysiCell_various_outputs.o \ +PhysiCell_pugixml.o PhysiCell_settings.o PhysiCell_geometry.o + +# put your custom objects here (they should be in the custom_modules directory) + +PhysiCell_custom_module_OBJECTS := custom.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) + +# compile the project + +all: main.cpp $(ALL_OBJECTS) + $(COMPILE_COMMAND) -o $(PROGRAM_NAME) $(ALL_OBJECTS) main.cpp + make name + +name: + @echo "" + @echo "Executable name is" $(PROGRAM_NAME) + @echo "" + +# PhysiCell core components + +PhysiCell_phenotype.o: ./core/PhysiCell_phenotype.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_phenotype.cpp + +PhysiCell_digital_cell_line.o: ./core/PhysiCell_digital_cell_line.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_digital_cell_line.cpp + +PhysiCell_cell.o: ./core/PhysiCell_cell.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_cell.cpp + +PhysiCell_cell_container.o: ./core/PhysiCell_cell_container.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_cell_container.cpp + +PhysiCell_standard_models.o: ./core/PhysiCell_standard_models.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_standard_models.cpp + +PhysiCell_utilities.o: ./core/PhysiCell_utilities.cpp + $(COMPILE_COMMAND) -c ./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 + +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 + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_vector.cpp + +BioFVM_agent_container.o: ./BioFVM/BioFVM_agent_container.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_agent_container.cpp + +BioFVM_mesh.o: ./BioFVM/BioFVM_mesh.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_mesh.cpp + +BioFVM_microenvironment.o: ./BioFVM/BioFVM_microenvironment.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_microenvironment.cpp + +BioFVM_solvers.o: ./BioFVM/BioFVM_solvers.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_solvers.cpp + +BioFVM_utilities.o: ./BioFVM/BioFVM_utilities.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_utilities.cpp + +BioFVM_basic_agent.o: ./BioFVM/BioFVM_basic_agent.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_basic_agent.cpp + +BioFVM_matlab.o: ./BioFVM/BioFVM_matlab.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_matlab.cpp + +BioFVM_MultiCellDS.o: ./BioFVM/BioFVM_MultiCellDS.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_MultiCellDS.cpp + +pugixml.o: ./BioFVM/pugixml.cpp + $(COMPILE_COMMAND) -c ./BioFVM/pugixml.cpp + +# standard PhysiCell modules + +PhysiCell_SVG.o: ./modules/PhysiCell_SVG.cpp + $(COMPILE_COMMAND) -c ./modules/PhysiCell_SVG.cpp + +PhysiCell_pathology.o: ./modules/PhysiCell_pathology.cpp + $(COMPILE_COMMAND) -c ./modules/PhysiCell_pathology.cpp + +PhysiCell_MultiCellDS.o: ./modules/PhysiCell_MultiCellDS.cpp + $(COMPILE_COMMAND) -c ./modules/PhysiCell_MultiCellDS.cpp + +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 + +PhysiCell_basic_signaling.o: ./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 + +custom.o: ./custom_modules/custom.cpp + $(COMPILE_COMMAND) -c ./custom_modules/custom.cpp + +# cleanup + +reset: + rm -f *.cpp + cp ./sample_projects/Makefile-default Makefile + 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 + touch ./config/empty.csv + rm -f ./config/*.csv + +clean: + rm -f *.o + rm -f $(PROGRAM_NAME)* + +data-cleanup: + 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 + cp latest.zip VERSION_$(VERSION).zip + mv *.zip archives/ + +tar: + tar --ignore-failed-read -czf latest.tar Makefile* *.cpp *.h BioFVM/* config/* core/* custom_modules/* matlab/* modules/* sample_projects/* + cp latest.tar $$(date +%b_%d_%Y_%H%M).tar + cp latest.tar VERSION_$(VERSION).tar + mv *.tar archives/ + +unzip: + cp ./archives/latest.zip . + unzip latest.zip + +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 + +# upgrade rules + +SOURCE := PhysiCell_upgrade.zip +get-upgrade: + @echo $$(curl https://raw.githubusercontent.com/MathCancer/PhysiCell/master/VERSION.txt) > VER.txt + @echo https://github.com/MathCancer/PhysiCell/releases/download/$$(grep . VER.txt)/PhysiCell_V.$$(grep . VER.txt).zip > DL_FILE.txt + rm -f VER.txt + $$(curl -L $$(grep . DL_FILE.txt) --output PhysiCell_upgrade.zip) + rm -f DL_FILE.txt + +PhysiCell_upgrade.zip: + make get-upgrade + +upgrade: $(SOURCE) + unzip $(SOURCE) PhysiCell/VERSION.txt + mv -f PhysiCell/VERSION.txt . + unzip $(SOURCE) PhysiCell/core/* + cp -r PhysiCell/core/* core + unzip $(SOURCE) PhysiCell/modules/* + cp -r PhysiCell/modules/* modules + unzip $(SOURCE) PhysiCell/sample_projects/* + cp -r PhysiCell/sample_projects/* sample_projects + unzip $(SOURCE) PhysiCell/BioFVM/* + cp -r PhysiCell/BioFVM/* BioFVM + unzip $(SOURCE) PhysiCell/documentation/User_Guide.pdf + 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 + +save: + echo "Saving project as $(PROJ) ... " + mkdir -p ./user_projects + mkdir -p ./user_projects/$(PROJ) + mkdir -p ./user_projects/$(PROJ)/custom_modules + mkdir -p ./user_projects/$(PROJ)/config + cp main.cpp ./user_projects/$(PROJ) + cp Makefile ./user_projects/$(PROJ) + cp VERSION.txt ./user_projects/$(PROJ) + cp ./config/* ./user_projects/$(PROJ)/config + cp ./custom_modules/* ./user_projects/$(PROJ)/custom_modules + +load: + echo "Loading project from $(PROJ) ... " + cp ./user_projects/$(PROJ)/main.cpp . + cp ./user_projects/$(PROJ)/Makefile . + cp ./user_projects/$(PROJ)/config/* ./config/ + cp ./user_projects/$(PROJ)/custom_modules/* ./custom_modules/ + +pack: + @echo " " + @echo "Preparing project $(PROJ) for sharing ... " + @echo " " + cd ./user_projects && zip -r $(PROJ).zip $(PROJ) + @echo " " + @echo "Share ./user_projects/$(PROJ).zip ... " + @echo "Other users can unzip $(PROJ).zip in their ./user_projects, compile, and run." + @echo " " + +unpack: + @echo " " + @echo "Preparing shared project $(PROJ).zip for use ... " + @echo " " + cd ./user_projects && unzip $(PROJ).zip + @echo " " + @echo "Load this project via make load PROJ=$(PROJ) ... " + @echo " " + +list-user-projects: + @echo "user projects::" + @cd ./user_projects && ls -dt1 * | grep . | sed 's!empty.txt!!' diff --git a/sample_projects/custom_division/config/PhysiCell_settings.xml b/sample_projects/custom_division/config/PhysiCell_settings.xml new file mode 100644 index 000000000..8987e89b6 --- /dev/null +++ b/sample_projects/custom_division/config/PhysiCell_settings.xml @@ -0,0 +1,349 @@ + + + + -200 + 200 + -200 + 200 + -10 + 10 + 20 + 20 + 20 + true + + + + 5760.0 + min + micron + 0.01 + 0.1 + 6 + + + + 1 + + + + output + + 30 + true + + + 30 + true + + oxygen + + + + + + false + + + + + false + true + false + + + + + + 100000.0 + 0.1 + + 38 + 38 + + 38 + 38 + 38 + 38 + 38 + 38 + + + + true + true + + ./config/initial.mat + + + ./config/dirichlet.mat + + + + + + + + + + 0.001 + + + + + 5.31667e-05 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0 + 0 + 2.0 + + + 0.4 + 10.0 + 1.25 + + 1 + 1 + + + 1.8 + 15.12 + + 0.01 + 0.0 + 0.0 + + + 1 + 1 + .5 + + false + true + + false + oxygen + 1 + + + false + false + + 0.0 + + + + + + + 0 + 1 + 10 + 0 + + + + 0 + + 0.0 + 0 + + + 0.0 + 0 + + 1 + + 0.0 + 0 + + + + + 0.0 + 0 + + + + + 1.0 + + + + + + + 0.00072 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0 + 0 + 2.0 + + + 0.4 + 10.0 + 1.25 + + 1 + 1 + + + 1.8 + 15.12 + + 0.01 + 0.0 + 0.0 + + + 0.05 + 0 + .5 + + true + true + + true + oxygen + 1 + + + false + false + + 0.0 + + + + + + + 0 + 1 + 10 + 0 + + + + 0 + + 0 + 0 + + + 0 + 0 + + 1 + + 0 + 0 + + + + + 0 + 0 + + + + + 1.0 + + + + + + + ./config + cells.csv + + + + + + + config + rules.csv + + + + + + 0 + 0 + + diff --git a/sample_projects/custom_division/config/cell_rules.csv b/sample_projects/custom_division/config/cell_rules.csv new file mode 100644 index 000000000..e69de29bb diff --git a/sample_projects/custom_division/config/cells.csv b/sample_projects/custom_division/config/cells.csv new file mode 100644 index 000000000..88d88f63f --- /dev/null +++ b/sample_projects/custom_division/config/cells.csv @@ -0,0 +1,5 @@ +x,y,z,type,volume,cycle entry,custom:GFP,custom:sample +-80.,80.,0.0,default +80.,80.,0.0,default +-80.,-80.,0.0,default +80.,-80.,0.0,default diff --git a/sample_projects/custom_division/custom_modules/custom.cpp b/sample_projects/custom_division/custom_modules/custom.cpp new file mode 100644 index 000000000..fbeab09ca --- /dev/null +++ b/sample_projects/custom_division/custom_modules/custom.cpp @@ -0,0 +1,232 @@ +/* +############################################################################### +# 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. # +# # +############################################################################### +*/ + +#include "./custom.h" + +void create_cell_types( void ) +{ + // set the random seed + SeedRandom( parameters.ints("random_seed") ); + + /* + Put any modifications to default cell definition here if you + want to have "inherited" by other cell types. + + 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.update_migration_bias = NULL; + cell_defaults.functions.update_phenotype = NULL; // update_cell_and_death_parameters_O2_based; + cell_defaults.functions.custom_cell_rule = NULL; + cell_defaults.functions.contact_function = NULL; + cell_defaults.functions.cell_division_function = NULL; + + cell_defaults.functions.add_cell_basement_membrane_interactions = NULL; + cell_defaults.functions.calculate_distance_to_membrane = NULL; + + /* + This parses the cell definitions in the XML config file. + */ + + initialize_cell_definitions_from_pugixml(); + + /* + This builds the map of cell definitions and summarizes the setup. + */ + + build_cell_definitions_maps(); + + /* + This intializes cell signal and response dictionaries + */ + + setup_signal_behavior_dictionaries(); + + /* + Cell rule definitions + */ + + setup_cell_rules(); + + /* + Put any modifications to individual cell definitions here. + + This is a good place to set custom functions. + */ + + cell_defaults.functions.update_phenotype = phenotype_function; + cell_defaults.functions.custom_cell_rule = custom_function; + cell_defaults.functions.contact_function = contact_function; + cell_defaults.functions.cell_division_function = custom_division_function; + + /* + This builds the map of cell definitions and summarizes the setup. + */ + + display_cell_definitions( std::cout ); + + return; +} + +void setup_microenvironment( void ) +{ + // set domain parameters + + // put any custom code to set non-homogeneous initial conditions or + // extra Dirichlet nodes here. + + // initialize BioFVM + + initialize_microenvironment(); + + 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]; + + 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 + + Cell* pC; + + for( int k=0; k < cell_definitions_by_index.size() ; k++ ) + { + 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++ ) + { + std::vector position = {0,0,0}; + position[0] = Xmin + UniformRandom()*Xrange; + position[1] = Ymin + UniformRandom()*Yrange; + position[2] = Zmin + UniformRandom()*Zrange; + + pC = create_cell( *pCD ); + pC->assign_position( position ); + } + } + std::cout << std::endl; + + // load cells from your CSV file (if enabled) + load_cells_from_pugixml(); + set_parameters_from_distributions(); + + 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; } + +void custom_function( Cell* pCell, Phenotype& phenotype , double dt ) +{ return; } + +void contact_function( Cell* pMe, Phenotype& phenoMe , Cell* pOther, Phenotype& phenoOther , double dt ) +{ return; } + +void custom_division_function( Cell* pCell1, Cell* pCell2 ) +{ + static int idx_default = find_cell_definition_index("default"); + static int idx_ctype1 = find_cell_definition_index("ctype1"); + std::cout << __FUNCTION__ << ": " << PhysiCell_globals.current_time << ": cell IDs= " << pCell1->ID << ", " << pCell2->ID << std::endl; + + // Asymmetric division + if (UniformRandom() < 0.5) + { + pCell2->convert_to_cell_definition( *cell_definitions_by_index[idx_default] ); + } + else + { + pCell2->convert_to_cell_definition( *cell_definitions_by_index[idx_ctype1] ); + } + + return; +} \ No newline at end of file diff --git a/sample_projects/custom_division/custom_modules/custom.h b/sample_projects/custom_division/custom_modules/custom.h new file mode 100644 index 000000000..7e6b0f044 --- /dev/null +++ b/sample_projects/custom_division/custom_modules/custom.h @@ -0,0 +1,93 @@ +/* +############################################################################### +# 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. # +# # +############################################################################### +*/ + +#include "../core/PhysiCell.h" +#include "../modules/PhysiCell_standard_modules.h" + +using namespace BioFVM; +using namespace PhysiCell; + +// setup functions to help us along + +void create_cell_types( void ); +void setup_tissue( void ); + +// 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 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 custom_division_function( Cell* pCell1, Cell* pCell2 ); diff --git a/sample_projects/custom_division/main.cpp b/sample_projects/custom_division/main.cpp new file mode 100644 index 000000000..2f7e98c75 --- /dev/null +++ b/sample_projects/custom_division/main.cpp @@ -0,0 +1,254 @@ +/* +############################################################################### +# 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. # +# # +############################################################################### +*/ + +#include +#include +#include +#include +#include +#include +#include + +#include "./core/PhysiCell.h" +#include "./modules/PhysiCell_standard_modules.h" + +// put custom code modules here! + +#include "./custom_modules/custom.h" + +using namespace BioFVM; +using namespace PhysiCell; + +int main( int argc, char* argv[] ) +{ + // load and parse settings file(s) + + bool XML_status = false; + char copy_command [1024]; + if( argc > 1 ) + { + XML_status = load_PhysiCell_config_file( argv[1] ); + sprintf( copy_command , "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() ); + } + if( !XML_status ) + { exit(-1); } + + // copy config file to output directry + system( copy_command ); + + // OpenMP setup + omp_set_num_threads(PhysiCell_settings.omp_num_threads); + + // time setup + std::string time_units = "min"; + + /* Microenvironment setup */ + + setup_microenvironment(); // modify this in the custom code + + /* PhysiCell setup */ + + // set mechanics voxel size, and match the data structure to BioFVM + double mechanics_voxel_size = 30; + Cell_Container* cell_container = create_cell_container_for_microenvironment( microenvironment, mechanics_voxel_size ); + + /* Users typically start modifying here. START USERMODS */ + + create_cell_types(); + + setup_tissue(); + + /* Users typically stop modifying here. END USERMODS */ + + // set MultiCellDS save options + + set_save_biofvm_mesh_as_matlab( true ); + set_save_biofvm_data_as_matlab( true ); + set_save_biofvm_cell_data( true ); + set_save_biofvm_cell_data_as_custom_matlab( true ); + + // save a simulation snapshot + + char filename[1024]; + sprintf( filename , "%s/initial" , PhysiCell_settings.folder.c_str() ); + save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); + + // save a quick SVG cross section through z = 0, after setting its + // length bar to 200 microns + + PhysiCell_SVG_options.length_bar = 200; + + // for simplicity, set a pathology coloring function + + std::vector (*cell_coloring_function)(Cell*) = my_coloring_function; + std::string (*substrate_coloring_function)(double, double, double) = paint_by_density_percentage; + + sprintf( filename , "%s/initial.svg" , PhysiCell_settings.folder.c_str() ); + SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function, substrate_coloring_function ); + + sprintf( filename , "%s/legend.svg" , PhysiCell_settings.folder.c_str() ); + create_plot_legend( filename , cell_coloring_function ); + + display_citations(); + + // set the performance timers + + BioFVM::RUNTIME_TIC(); + BioFVM::TIC(); + + std::ofstream report_file; + if( PhysiCell_settings.enable_legacy_saves == true ) + { + sprintf( filename , "%s/simulation_report.txt" , PhysiCell_settings.folder.c_str() ); + + report_file.open(filename); // create the data log file + report_file<<"simulated time\tnum cells\tnum division\tnum death\twall time"<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); + report_file.close(); + } + } + catch( const std::exception& e ) + { // reference to the base of a polymorphic object + std::cout << e.what(); // information from length_error printed + } + + // save a final simulation snapshot + + sprintf( filename , "%s/final" , PhysiCell_settings.folder.c_str() ); + save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); + + sprintf( filename , "%s/final.svg" , PhysiCell_settings.folder.c_str() ); + SVG_plot(filename, microenvironment, 0.0, PhysiCell_globals.current_time, cell_coloring_function, substrate_coloring_function); + + // timer + + std::cout << std::endl << "Total simulation runtime: " << std::endl; + BioFVM::display_stopwatch_value( std::cout , BioFVM::runtime_stopwatch_value() ); + + return 0; +} diff --git a/sample_projects/heterogeneity/custom_modules/custom.cpp b/sample_projects/heterogeneity/custom_modules/custom.cpp index 657592349..1f2e2360a 100644 --- a/sample_projects/heterogeneity/custom_modules/custom.cpp +++ b/sample_projects/heterogeneity/custom_modules/custom.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/sample_projects/immune_test_2024/Makefile b/sample_projects/immune_test_2024/Makefile new file mode 100644 index 000000000..8cfe66c8c --- /dev/null +++ b/sample_projects/immune_test_2024/Makefile @@ -0,0 +1,314 @@ +VERSION := $(shell grep . VERSION.txt | cut -f1 -d:) +PROGRAM_NAME := project + +CC := g++ +# CC := g++-mp-7 # typical macports compiler name +# CC := g++-7 # typical homebrew compiler name + +# Check for environment definitions of compiler +# e.g., on CC = g++-7 on OSX +ifdef PHYSICELL_CPP + CC := $(PHYSICELL_CPP) +endif + +ARCH := native # best auto-tuning +# ARCH := core2 # a reasonably safe default for most CPUs since 2007 +# ARCH := corei7 +# ARCH := corei7-avx # earlier i7 +# ARCH := core-avx-i # i7 ivy bridge or newer +# ARCH := core-avx2 # i7 with Haswell or newer +# ARCH := nehalem +# ARCH := westmere +# ARCH := sandybridge # circa 2011 +# ARCH := ivybridge # circa 2012 +# ARCH := haswell # circa 2013 +# ARCH := broadwell # circa 2014 +# ARCH := skylake # circa 2015 +# ARCH := bonnell +# ARCH := silvermont +# ARCH := skylake-avx512 +# 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 + +ifeq ($(OS),Windows_NT) +else + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Darwin) + UNAME_P := $(shell uname -p) + var := $(shell which $(CC) | xargs file) + ifeq ($(lastword $(var)),arm64) + CFLAGS := -march=$(ARCH) -O3 -fomit-frame-pointer -fopenmp -m64 -std=c++11 + endif + endif +endif + +COMPILE_COMMAND := $(CC) $(CFLAGS) + +BioFVM_OBJECTS := BioFVM_vector.o BioFVM_mesh.o BioFVM_microenvironment.o BioFVM_solvers.o BioFVM_matlab.o \ +BioFVM_utilities.o BioFVM_basic_agent.o BioFVM_MultiCellDS.o BioFVM_agent_container.o + +PhysiCell_core_OBJECTS := PhysiCell_phenotype.o PhysiCell_cell_container.o PhysiCell_standard_models.o \ +PhysiCell_cell.o PhysiCell_custom.o PhysiCell_utilities.o PhysiCell_constants.o PhysiCell_basic_signaling.o \ +PhysiCell_signal_behavior.o PhysiCell_rules.o + +PhysiCell_module_OBJECTS := PhysiCell_SVG.o PhysiCell_pathology.o PhysiCell_MultiCellDS.o PhysiCell_various_outputs.o \ +PhysiCell_pugixml.o PhysiCell_settings.o PhysiCell_geometry.o + +# put your custom objects here (they should be in the custom_modules directory) + +PhysiCell_custom_module_OBJECTS := custom.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) + +# compile the project + +all: main.cpp $(ALL_OBJECTS) + $(COMPILE_COMMAND) -o $(PROGRAM_NAME) $(ALL_OBJECTS) main.cpp + make name + +name: + @echo "" + @echo "Executable name is" $(PROGRAM_NAME) + @echo "" + +# PhysiCell core components + +PhysiCell_phenotype.o: ./core/PhysiCell_phenotype.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_phenotype.cpp + +PhysiCell_digital_cell_line.o: ./core/PhysiCell_digital_cell_line.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_digital_cell_line.cpp + +PhysiCell_cell.o: ./core/PhysiCell_cell.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_cell.cpp + +PhysiCell_cell_container.o: ./core/PhysiCell_cell_container.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_cell_container.cpp + +PhysiCell_standard_models.o: ./core/PhysiCell_standard_models.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_standard_models.cpp + +PhysiCell_utilities.o: ./core/PhysiCell_utilities.cpp + $(COMPILE_COMMAND) -c ./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 + +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 + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_vector.cpp + +BioFVM_agent_container.o: ./BioFVM/BioFVM_agent_container.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_agent_container.cpp + +BioFVM_mesh.o: ./BioFVM/BioFVM_mesh.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_mesh.cpp + +BioFVM_microenvironment.o: ./BioFVM/BioFVM_microenvironment.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_microenvironment.cpp + +BioFVM_solvers.o: ./BioFVM/BioFVM_solvers.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_solvers.cpp + +BioFVM_utilities.o: ./BioFVM/BioFVM_utilities.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_utilities.cpp + +BioFVM_basic_agent.o: ./BioFVM/BioFVM_basic_agent.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_basic_agent.cpp + +BioFVM_matlab.o: ./BioFVM/BioFVM_matlab.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_matlab.cpp + +BioFVM_MultiCellDS.o: ./BioFVM/BioFVM_MultiCellDS.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_MultiCellDS.cpp + +pugixml.o: ./BioFVM/pugixml.cpp + $(COMPILE_COMMAND) -c ./BioFVM/pugixml.cpp + +# standard PhysiCell modules + +PhysiCell_SVG.o: ./modules/PhysiCell_SVG.cpp + $(COMPILE_COMMAND) -c ./modules/PhysiCell_SVG.cpp + +PhysiCell_pathology.o: ./modules/PhysiCell_pathology.cpp + $(COMPILE_COMMAND) -c ./modules/PhysiCell_pathology.cpp + +PhysiCell_MultiCellDS.o: ./modules/PhysiCell_MultiCellDS.cpp + $(COMPILE_COMMAND) -c ./modules/PhysiCell_MultiCellDS.cpp + +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 + +PhysiCell_basic_signaling.o: ./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 + +custom.o: ./custom_modules/custom.cpp + $(COMPILE_COMMAND) -c ./custom_modules/custom.cpp + +# cleanup + +reset: + rm -f *.cpp + cp ./sample_projects/Makefile-default Makefile + rm -rf ./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 + touch ./config/empty.csv + rm -f ./config/*.csv + +clean: + rm -f *.o + rm -f $(PROGRAM_NAME)* + +data-cleanup: + 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 + cp latest.zip VERSION_$(VERSION).zip + mv *.zip archives/ + +tar: + tar --ignore-failed-read -czf latest.tar Makefile* *.cpp *.h BioFVM/* config/* core/* custom_modules/* matlab/* modules/* sample_projects/* + cp latest.tar $$(date +%b_%d_%Y_%H%M).tar + cp latest.tar VERSION_$(VERSION).tar + mv *.tar archives/ + +unzip: + cp ./archives/latest.zip . + unzip latest.zip + +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 + +# upgrade rules + +SOURCE := PhysiCell_upgrade.zip +get-upgrade: + @echo $$(curl https://raw.githubusercontent.com/MathCancer/PhysiCell/master/VERSION.txt) > VER.txt + @echo https://github.com/MathCancer/PhysiCell/releases/download/$$(grep . VER.txt)/PhysiCell_V.$$(grep . VER.txt).zip > DL_FILE.txt + rm -f VER.txt + $$(curl -L $$(grep . DL_FILE.txt) --output PhysiCell_upgrade.zip) + rm -f DL_FILE.txt + +PhysiCell_upgrade.zip: + make get-upgrade + +upgrade: $(SOURCE) + unzip $(SOURCE) PhysiCell/VERSION.txt + mv -f PhysiCell/VERSION.txt . + unzip $(SOURCE) PhysiCell/core/* + cp -r PhysiCell/core/* core + unzip $(SOURCE) PhysiCell/modules/* + cp -r PhysiCell/modules/* modules + unzip $(SOURCE) PhysiCell/sample_projects/* + cp -r PhysiCell/sample_projects/* sample_projects + unzip $(SOURCE) PhysiCell/BioFVM/* + cp -r PhysiCell/BioFVM/* BioFVM + unzip $(SOURCE) PhysiCell/documentation/User_Guide.pdf + 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 + +save: + echo "Saving project as $(PROJ) ... " + mkdir -p ./user_projects + mkdir -p ./user_projects/$(PROJ) + mkdir -p ./user_projects/$(PROJ)/custom_modules + mkdir -p ./user_projects/$(PROJ)/config + cp main.cpp ./user_projects/$(PROJ) + cp Makefile ./user_projects/$(PROJ) + cp VERSION.txt ./user_projects/$(PROJ) + cp -r ./config/* ./user_projects/$(PROJ)/config + cp -r ./custom_modules/* ./user_projects/$(PROJ)/custom_modules + +load: + echo "Loading project from $(PROJ) ... " + cp ./user_projects/$(PROJ)/main.cpp . + cp ./user_projects/$(PROJ)/Makefile . + cp -r ./user_projects/$(PROJ)/config/* ./config/ + cp -r ./user_projects/$(PROJ)/custom_modules/* ./custom_modules/ + +pack: + @echo " " + @echo "Preparing project $(PROJ) for sharing ... " + @echo " " + cd ./user_projects && zip -r $(PROJ).zip $(PROJ) + @echo " " + @echo "Share ./user_projects/$(PROJ).zip ... " + @echo "Other users can unzip $(PROJ).zip in their ./user_projects, compile, and run." + @echo " " + +unpack: + @echo " " + @echo "Preparing shared project $(PROJ).zip for use ... " + @echo " " + cd ./user_projects && unzip $(PROJ).zip + @echo " " + @echo "Load this project via make load PROJ=$(PROJ) ... " + @echo " " + +list-user-projects: + @echo "user projects::" + @cd ./user_projects && ls -dt1 * | grep . | sed 's!empty.txt!!' diff --git a/sample_projects/immune_test_2024/VERSION.txt b/sample_projects/immune_test_2024/VERSION.txt new file mode 100644 index 000000000..e1faaf590 --- /dev/null +++ b/sample_projects/immune_test_2024/VERSION.txt @@ -0,0 +1 @@ +1.14.0-development \ No newline at end of file diff --git a/sample_projects/immune_test_2024/config/PhysiCell_settings.xml b/sample_projects/immune_test_2024/config/PhysiCell_settings.xml new file mode 100644 index 000000000..bfd1cdc3d --- /dev/null +++ b/sample_projects/immune_test_2024/config/PhysiCell_settings.xml @@ -0,0 +1,1250 @@ + + + + -250 + 250 + -250 + 250 + -10 + 10 + 20 + 20 + 20 + true + + + + 1440 + min + micron + 0.01 + 0.1 + 6 + + + + 6 + + + + output + + 60 + true + + + 1 + true + + + false + + + + + false + true + false + + + + + + 1000 + 0 + + 1 + 1 + + 1 + 1 + 1 + 1 + 0 + 0 + + + + + 1 + 0.0 + + 0.0 + 0.0 + + + + + + + + + + + + 1 + 0.0 + + 0.0 + 0.0 + + + + + + + + + + + + 10000 + 1 + + 0.0 + 0.0 + + + + + + + + + + + + 10000 + 1 + + 0.0 + 0.0 + + + + + + + + + + + true + false + + ./config/initial.mat + + + ./config/dirichlet.mat + + + + + + + + + + 0.000 + 0.002083 + 0.004167 + 0.016667 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0 + + 0 + 86400 + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0 + 0 + 2.0 + + + 0.4 + 10.0 + 1.5 + + 1 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + 6 + + + 0 + 1 + .5 + + false + true + + false + doxorubicin + 1 + + + true + false + + 0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 1 + 10 + 0 + + + 0.0 + 1 + 0.0 + 0.0 + + + 0.0 + 1 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + + + + 0 + 0 + 0 + + + 0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1 + 0.1 + + + 0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + 0.0 + 0.1 + + + + 1.0 + + + + + + + 0.000 + + + + + 0 + + 0.001938 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-02 + 8.33333e-4 + 5.33333e-05 + 2.16667e-4 + 7e-05 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0.0 + 0.0 + 2 + + + 0 + 10.0 + 1.5 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + 6 + + + 1.0 + 5 + 0.25 + + true + true + + false + doxorubicin + 1 + + + true + false + + 0.0 + 1 + 1 + 0.0 + 0.0 + + + + + + + 0.0 + 1.0 + 10 + 0.0 + + + 0.0 + 1.0 + 1 + 0.0 + + + 0.0 + 1.0 + 1 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + + + + 0.01 + 0 + 0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + 0.1 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + 0.0 + 0.0 + + + + 0.0 + + + + + + + 0.000 + + + + + 0 + + 0.001938 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-02 + 8.33333e-4 + 5.33333e-05 + 2.16667e-4 + 7e-05 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0.0 + 0.0 + 2 + + + 0 + 10.0 + 1.5 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + 6 + + + 1.0 + 5 + 0.25 + + true + true + + false + doxorubicin + 1 + + + true + false + + 0.0 + 1 + 1 + 0.0 + 0.0 + + + + + + + 0.0 + 1.0 + 10 + 0.0 + + + 0.0 + 1.0 + 1 + 0.0 + + + 0.0 + 1.0 + 1 + 0.0 + + + 100 + 1 + 0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + + + + 0.0 + 0 + 0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + 0.1 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + 0.0 + 0.0 + + + + 0.0 + + + + + + + 0.000 + + + + + 0 + + 0.001938 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-02 + 8.33333e-4 + 5.33333e-05 + 2.16667e-4 + 7e-05 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0.0 + 0.0 + 2 + + + 0 + 10.0 + 1.5 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + 6 + + + 1.0 + 1.0 + 0.75 + + true + true + + false + doxorubicin + 1 + + + true + false + + 0.0 + 1 + 1 + 0.0 + 0.0 + + + + + + + 0.0 + 1.0 + 10 + 0.0 + + + 0.0 + 1.0 + 1 + 0.0 + + + 0.0 + 1.0 + 1 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + + + 100 + 1 + 0.0 + 0.0 + + + + 0.01 + 0 + 0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + 0.1 + + + 0.0 + 0.0 + 0.0 + 0.00 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + 0.0 + 0.0 + + + + 0.0 + + + + + + + 0.000 + + + + + 0 + + 0.001938 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-02 + 8.33333e-4 + 5.33333e-05 + 2.16667e-4 + 7e-05 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0.0 + 0.0 + 2 + + + 0 + 10.0 + 1.5 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + 6 + + + 0.1 + 5 + 0.5 + + true + true + + false + doxorubicin + 1 + + + true + false + + 0.0 + 0 + 0 + 1 + 0.0 + + + + + + + 0.0 + 1.0 + 10 + 0.0 + + + 0.0 + 1.0 + 1 + 0.0 + + + 0.0 + 1.0 + 1 + 0.0 + + + 0.0 + 0.0 + 1 + 0.0 + + + 0.0 + 0.0 + 1 + 0.0 + + + + 0 + 0 + 0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.01 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + 0.1 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + 0.0 + 0.0 + + + + 0.0 + + + + + + + 0.000 + + + + + 0 + + 0.001938 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-02 + 8.33333e-4 + 5.33333e-05 + 2.16667e-4 + 7e-05 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0.0 + 0.0 + 2 + + + 0 + 10.0 + 1.5 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + 6 + + + 0.01 + 5 + 0.1 + + true + true + + false + doxorubicin + 1 + + + true + false + + 0.0 + 0 + 0 + 0.0 + 1 + + + + + + + 0.0 + 1.0 + 10 + 0.0 + + + 0.0 + 1.0 + 1 + 0.0 + + + 0.0 + 1.0 + 1 + 0.0 + + + 0.0 + 0.0 + 0.1 + 0.0 + + + 0.0 + 0.0 + 0.1 + 0.0 + + + + 0 + 0 + 0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + 0.1 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + 0.0 + 0.0 + + + + 0.0 + + + + + + + ./config + cells.csv + + + + + + + ./config + cell_rules.csv + + + + + + + 19 + 0 + + \ No newline at end of file diff --git a/sample_projects/immune_test_2024/config/cell_rules.csv b/sample_projects/immune_test_2024/config/cell_rules.csv new file mode 100644 index 000000000..684855ced --- /dev/null +++ b/sample_projects/immune_test_2024/config/cell_rules.csv @@ -0,0 +1,10 @@ +// comment line +// +// 0 1 2 3 4 5 6 7 +// Cell type, signal, direction, behavior, max response value, half-max, Hill power, applies to dead? +tumor cell,damage,increases,apoptosis,9e9,30,100,0 +tumor cell,apoptotic,increases,apoptotic debris secretion,1,0.5,10,1 +tumor cell,necrotic,increases,necrotic debris secretion,1,0.5,10,1 +// tumor cell,doxorubicin,increases,damage rate,1,0.5,4,0 +tumor cell,time,decreases,damage repair rate,0,15,10,0 +fast T cell,damage delivered,increases,transformation to exhausted T cell,... \ No newline at end of file diff --git a/sample_projects/immune_test_2024/config/cells.csv b/sample_projects/immune_test_2024/config/cells.csv new file mode 100644 index 000000000..ee9b79f14 --- /dev/null +++ b/sample_projects/immune_test_2024/config/cells.csv @@ -0,0 +1,29 @@ +x,y,z,type,apoptosis,necrosis,migration speed,phagocytose apoptotic cell,phagocytose necrotic cell,attack tumor cell,attack duration,attack damage rate,damage rate,damage repair rate +0,0,0,tumor cell,9e9,0,0,0,0,skip,skip,skip,1,0 +15,0,0,macrophage,skip,skip,0,0.05,0.000000,skip,skip,skip,skip,skip +100,0,0,tumor cell,0,9e9,0,0,0,skip,skip,skip,skip,skip +115,0,0,macrophage,skip,skip,0,0.0000000,0.05,skip,skip,skip,skip,skip +100,100,0,fast T cell,skip,skip,0,0.00000,0.00,0.025,5,1,skip,skip +115,100,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +107.5,113,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +107.5,87,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +100,115,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +100,85,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +92.5,113,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +92.5,87,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +85,100,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +-100,100,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +-100,85,0,fast T cell,skip,skip,0,0.00000,0.00,0.025,5,1,skip,skip +-100,115,0,fast T cell,skip,skip,0,0.00000,0.00,0.025,5,1,skip,skip +-115,100,0,fast T cell,skip,skip,0,0.00000,0.00,0.025,5,1,skip,skip +-85,100,0,fast T cell,skip,skip,0,0.00000,0.00,0.025,5,1,skip,skip +0,-100,0,tumor cell,9e9,0,0,0,0,skip,skip,skip,1,0.05 +-100,-100,0,slow T cell,skip,skip,0,0.00000,0.00,0.025,50,0.1,skip,skip +-115,-100,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +-107.5,-113,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +-107.5,-87,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +-100,-115,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +-100,-85,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +-92.5,-113,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +-92.5,-87,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip +-85,-100,0,tumor cell,0,0,0,0,0,skip,skip,skip,skip,skip diff --git a/sample_projects/immune_test_2024/custom_modules/custom.cpp b/sample_projects/immune_test_2024/custom_modules/custom.cpp new file mode 100644 index 000000000..52274d74f --- /dev/null +++ b/sample_projects/immune_test_2024/custom_modules/custom.cpp @@ -0,0 +1,256 @@ +/* +############################################################################### +# 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. # +# # +############################################################################### +*/ + +#include "./custom.h" + +void create_cell_types( void ) +{ + // set the random seed + SeedRandom( parameters.ints("random_seed") ); + + /* + Put any modifications to default cell definition here if you + want to have "inherited" by other cell types. + + 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.update_migration_bias = NULL; + cell_defaults.functions.update_phenotype = NULL; // update_cell_and_death_parameters_O2_based; + 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; + + /* + This parses the cell definitions in the XML config file. + */ + + initialize_cell_definitions_from_pugixml(); + + /* + This builds the map of cell definitions and summarizes the setup. + */ + + build_cell_definitions_maps(); + + /* + This intializes cell signal and response dictionaries + */ + + setup_signal_behavior_dictionaries(); + + /* + Cell rule definitions + */ + + setup_cell_rules(); + + /* + Put any modifications to individual cell definitions here. + + This is a good place to set custom functions. + */ + + cell_defaults.functions.update_phenotype = phenotype_function; + cell_defaults.functions.custom_cell_rule = custom_function; + cell_defaults.functions.contact_function = contact_function; + + /* + This builds the map of cell definitions and summarizes the setup. + */ + + display_cell_definitions( std::cout ); + + return; +} + +void setup_microenvironment( void ) +{ + // set domain parameters + + // put any custom code to set non-homogeneous initial conditions or + // extra Dirichlet nodes here. + + // initialize BioFVM + + initialize_microenvironment(); + + 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]; + + 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 + + Cell* pC; + + for( int k=0; k < cell_definitions_by_index.size() ; k++ ) + { + 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++ ) + { + std::vector position = {0,0,0}; + position[0] = Xmin + UniformRandom()*Xrange; + position[1] = Ymin + UniformRandom()*Yrange; + position[2] = Zmin + UniformRandom()*Zrange; + + pC = create_cell( *pCD ); + pC->assign_position( position ); + } + } + std::cout << std::endl; + + // load cells from your CSV file (if enabled) + load_cells_from_pugixml(); + + return; +} + +std::vector my_coloring_function( Cell* pCell ) +{ + + std::vector out = paint_by_number_cell_coloring(pCell); + + if( pCell->type_name == "tumor cell") + { + double damage = get_single_signal( pCell , "damage"); + double max_damage = 30; + int color = (int) round( 255.0 * damage / max_damage ); + if( color > 255 ) + { color = 255; } + + if( get_single_signal(pCell,"dead") < 0.5 ) + { + std::string blah = "rgb(" + std::to_string(color) + "," + std::to_string(color) + "," + std::to_string(255-color) + ")"; + out[0] = blah; + out[2] = blah; + out[3] = blah; + } + return out; + } + + if( pCell->type_name == "macrophage" ) + { out[0] = "orange"; out[2] = "orange" ; out[3] = "orange"; return out; } + + + if( pCell->type_name == "fast T cell" ) + { + std::string blah = "rgb(255,164,164)"; + if( get_single_signal(pCell, "attacking") > 0.5 ) + { blah = "rgb(196,0,0)"; } + out[0] = blah; out[2] = blah; out[3] = blah; + return out; + } + + if( pCell->type_name == "slow T cell" ) + { + std::string blah = "rgb(164,255,164)"; + if( get_single_signal(pCell, "attacking") > 0.5 ) + { blah = "rgb(0,128,0)"; } + out[0] = blah; out[2] = blah; out[3] = blah; + return out; + } + + + return out; +} + +void phenotype_function( Cell* pCell, Phenotype& phenotype, double dt ) +{ return; } + +void custom_function( Cell* pCell, Phenotype& phenotype , double dt ) +{ return; } + +void contact_function( Cell* pMe, Phenotype& phenoMe , Cell* pOther, Phenotype& phenoOther , double dt ) +{ return; } \ No newline at end of file diff --git a/sample_projects/immune_test_2024/custom_modules/custom.h b/sample_projects/immune_test_2024/custom_modules/custom.h new file mode 100644 index 000000000..0e6df8d02 --- /dev/null +++ b/sample_projects/immune_test_2024/custom_modules/custom.h @@ -0,0 +1,92 @@ +/* +############################################################################### +# 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. # +# # +############################################################################### +*/ + +#include "../core/PhysiCell.h" +#include "../modules/PhysiCell_standard_modules.h" + +using namespace BioFVM; +using namespace PhysiCell; + +// setup functions to help us along + +void create_cell_types( void ); +void setup_tissue( void ); + +// 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 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 ); + diff --git a/sample_projects/immune_test_2024/custom_modules/empty.txt b/sample_projects/immune_test_2024/custom_modules/empty.txt new file mode 100644 index 000000000..e69de29bb diff --git a/sample_projects/immune_test_2024/main.cpp b/sample_projects/immune_test_2024/main.cpp new file mode 100644 index 000000000..9d26e541d --- /dev/null +++ b/sample_projects/immune_test_2024/main.cpp @@ -0,0 +1,253 @@ +/* +############################################################################### +# 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. # +# # +############################################################################### +*/ + +#include +#include +#include +#include +#include +#include +#include + +#include "./core/PhysiCell.h" +#include "./modules/PhysiCell_standard_modules.h" + +// put custom code modules here! + +#include "./custom_modules/custom.h" + +using namespace BioFVM; +using namespace PhysiCell; + +int main( int argc, char* argv[] ) +{ + // load and parse settings file(s) + + bool XML_status = false; + char copy_command [1024]; + if( argc > 1 ) + { + XML_status = load_PhysiCell_config_file( argv[1] ); + sprintf( copy_command , "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() ); + } + if( !XML_status ) + { exit(-1); } + + // copy config file to output directry + system( copy_command ); + + // OpenMP setup + omp_set_num_threads(PhysiCell_settings.omp_num_threads); + + // time setup + std::string time_units = "min"; + + /* Microenvironment setup */ + + setup_microenvironment(); // modify this in the custom code + + /* PhysiCell setup */ + + // set mechanics voxel size, and match the data structure to BioFVM + double mechanics_voxel_size = 30; + Cell_Container* cell_container = create_cell_container_for_microenvironment( microenvironment, mechanics_voxel_size ); + + /* Users typically start modifying here. START USERMODS */ + + create_cell_types(); + + setup_tissue(); + + /* Users typically stop modifying here. END USERMODS */ + + // set MultiCellDS save options + + set_save_biofvm_mesh_as_matlab( true ); + set_save_biofvm_data_as_matlab( true ); + set_save_biofvm_cell_data( true ); + set_save_biofvm_cell_data_as_custom_matlab( true ); + + // save a simulation snapshot + + char filename[1024]; + sprintf( filename , "%s/initial" , PhysiCell_settings.folder.c_str() ); + save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); + + // save a quick SVG cross section through z = 0, after setting its + // length bar to 200 microns + + PhysiCell_SVG_options.length_bar = 200; + + // for simplicity, set a pathology coloring function + + std::vector (*cell_coloring_function)(Cell*) = my_coloring_function; + + sprintf( filename , "%s/initial.svg" , PhysiCell_settings.folder.c_str() ); + 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 ); + + display_citations(); + + // set the performance timers + + BioFVM::RUNTIME_TIC(); + BioFVM::TIC(); + + std::ofstream report_file; + if( PhysiCell_settings.enable_legacy_saves == true ) + { + sprintf( filename , "%s/simulation_report.txt" , PhysiCell_settings.folder.c_str() ); + + report_file.open(filename); // create the data log file + report_file<<"simulated time\tnum cells\tnum division\tnum death\twall time"<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); + report_file.close(); + } + } + catch( const std::exception& e ) + { // reference to the base of a polymorphic object + std::cout << e.what(); // information from length_error printed + } + + // save a final simulation snapshot + + sprintf( filename , "%s/final" , PhysiCell_settings.folder.c_str() ); + save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); + + sprintf( filename , "%s/final.svg" , PhysiCell_settings.folder.c_str() ); + SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function ); + + // timer + + std::cout << std::endl << "Total simulation runtime: " << std::endl; + BioFVM::display_stopwatch_value( std::cout , BioFVM::runtime_stopwatch_value() ); + + return 0; +} diff --git a/sample_projects/interactions/Makefile b/sample_projects/interactions/Makefile index c42fc9666..44db81996 100644 --- a/sample_projects/interactions/Makefile +++ b/sample_projects/interactions/Makefile @@ -11,6 +11,10 @@ ifdef PHYSICELL_CPP CC := $(PHYSICELL_CPP) endif +ifndef STATIC_OPENMP + STATIC_OPENMP = -fopenmp +endif + ARCH := native # best auto-tuning # ARCH := core2 # a reasonably safe default for most CPUs since 2007 # ARCH := corei7 @@ -44,7 +48,9 @@ else endif endif -COMPILE_COMMAND := $(CC) $(CFLAGS) +CFLAGS_LINK := $(shell echo $(CFLAGS) | sed -e "s/-fopenmp//g") +COMPILE_COMMAND := $(CC) $(CFLAGS) $(EXTRA_FLAGS) +LINK_COMMAND := $(CC) $(CFLAGS_LINK) $(EXTRA_FLAGS) BioFVM_OBJECTS := BioFVM_vector.o BioFVM_mesh.o BioFVM_microenvironment.o BioFVM_solvers.o BioFVM_matlab.o \ BioFVM_utilities.o BioFVM_basic_agent.o BioFVM_MultiCellDS.o BioFVM_agent_container.o @@ -71,6 +77,9 @@ all: main.cpp $(ALL_OBJECTS) $(COMPILE_COMMAND) -o $(PROGRAM_NAME) $(ALL_OBJECTS) main.cpp 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) + name: @echo "" @echo "Executable name is" $(PROGRAM_NAME) diff --git a/sample_projects/interactions/custom_modules/custom.cpp b/sample_projects/interactions/custom_modules/custom.cpp index 9481d3b83..f4c1161cb 100644 --- a/sample_projects/interactions/custom_modules/custom.cpp +++ b/sample_projects/interactions/custom_modules/custom.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you @@ -342,7 +345,7 @@ std::vector my_coloring_function( Cell* pCell ) } -std::vector my_coloring_function_for_substrate( double concentration, double max_conc, double min_conc ) +std::string my_coloring_function_for_substrate( double concentration, double max_conc, double min_conc ) { return paint_by_density_percentage( concentration, max_conc, min_conc); @@ -424,7 +427,7 @@ void bacteria_phenotype( Cell* pCell, Phenotype& phenotype, double dt ) // damage increases death static int nApoptosis = phenotype.death.find_death_model_index( PhysiCell_constants::apoptosis_death_model ); - signal = pCell->state.damage; + signal = pCell->phenotype.cell_integrity.damage; base_val = pCD->phenotype.death.rates[nApoptosis]; static double damage_halfmax = pCD->custom_data["damage_halfmax"]; diff --git a/sample_projects/interactions/custom_modules/custom.h b/sample_projects/interactions/custom_modules/custom.h index 0bb5ff9a7..d197c0e6e 100644 --- a/sample_projects/interactions/custom_modules/custom.h +++ b/sample_projects/interactions/custom_modules/custom.h @@ -83,7 +83,7 @@ void setup_microenvironment( void ); std::vector my_coloring_function( Cell* ); -std::vector my_coloring_function_for_substrate( double concentration, double max_conc, double min_conc ); +std::string my_coloring_function_for_substrate( double concentration, double max_conc, double min_conc ); // custom functions can go here diff --git a/sample_projects/interactions/main.cpp b/sample_projects/interactions/main.cpp index 665160186..050ba8569 100644 --- a/sample_projects/interactions/main.cpp +++ b/sample_projects/interactions/main.cpp @@ -151,7 +151,7 @@ int main( int argc, char* argv[] ) std::vector (*cell_coloring_function)(Cell*) = my_coloring_function; - std::vector (*substrate_coloring_function)(double, double, double) = my_coloring_function_for_substrate; + std::string (*substrate_coloring_function)(double, double, double) = my_coloring_function_for_substrate; sprintf( filename , "%s/initial.svg" , PhysiCell_settings.folder.c_str() ); diff --git a/sample_projects/mechano/config/PhysiCell_settings.xml b/sample_projects/mechano/config/PhysiCell_settings.xml index f47469856..ba559369c 100644 --- a/sample_projects/mechano/config/PhysiCell_settings.xml +++ b/sample_projects/mechano/config/PhysiCell_settings.xml @@ -178,25 +178,21 @@ 0 0.0 - 0 0 0.0 - 0 1 0 0.0 - 0 0 0.0 - 0 diff --git a/sample_projects/mechano/custom_modules/custom.cpp b/sample_projects/mechano/custom_modules/custom.cpp index 4eba5033d..5b3b91119 100644 --- a/sample_projects/mechano/custom_modules/custom.cpp +++ b/sample_projects/mechano/custom_modules/custom.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/sample_projects/physimess/Makefile b/sample_projects/physimess/Makefile index a25f2d72c..ed12022cb 100644 --- a/sample_projects/physimess/Makefile +++ b/sample_projects/physimess/Makefile @@ -11,6 +11,10 @@ ifdef PHYSICELL_CPP CC := $(PHYSICELL_CPP) endif +ifndef STATIC_OPENMP + STATIC_OPENMP = -fopenmp +endif + ARCH := native # best auto-tuning # ARCH := core2 # a reasonably safe default for most CPUs since 2007 # ARCH := corei7 @@ -44,7 +48,9 @@ else endif endif -COMPILE_COMMAND := $(CC) $(CFLAGS) +CFLAGS_LINK := $(shell echo $(CFLAGS) | sed -e "s/-fopenmp//g") +COMPILE_COMMAND := $(CC) $(CFLAGS) $(EXTRA_FLAGS) +LINK_COMMAND := $(CC) $(CFLAGS_LINK) $(EXTRA_FLAGS) BioFVM_OBJECTS := BioFVM_vector.o BioFVM_mesh.o BioFVM_microenvironment.o BioFVM_solvers.o BioFVM_matlab.o \ BioFVM_utilities.o BioFVM_basic_agent.o BioFVM_MultiCellDS.o BioFVM_agent_container.o @@ -73,6 +79,9 @@ all: main.cpp $(ALL_OBJECTS) $(COMPILE_COMMAND) -o $(PROGRAM_NAME) $(ALL_OBJECTS) main.cpp 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) + name: @echo "" @echo "Executable name is" $(PROGRAM_NAME) @@ -282,4 +291,49 @@ upgrade: $(SOURCE) unzip $(SOURCE) PhysiCell/documentation/User_Guide.pdf mv -f PhysiCell/documentation/User_Guide.pdf documentation rm -f -r PhysiCell - rm -f $(SOURCE) \ No newline at end of file + rm -f $(SOURCE) + +# use: make save PROJ=your_project_name +PROJ := my_project + +save: + echo "Saving project as $(PROJ) ... " + mkdir -p ./user_projects + mkdir -p ./user_projects/$(PROJ) + mkdir -p ./user_projects/$(PROJ)/custom_modules + mkdir -p ./user_projects/$(PROJ)/config + cp main.cpp ./user_projects/$(PROJ) + cp Makefile ./user_projects/$(PROJ) + cp VERSION.txt ./user_projects/$(PROJ) + cp -r ./config/* ./user_projects/$(PROJ)/config + cp -r ./custom_modules/* ./user_projects/$(PROJ)/custom_modules + +load: + echo "Loading project from $(PROJ) ... " + cp ./user_projects/$(PROJ)/main.cpp . + cp ./user_projects/$(PROJ)/Makefile . + cp -r ./user_projects/$(PROJ)/config/* ./config/ + cp -r ./user_projects/$(PROJ)/custom_modules/* ./custom_modules/ + +pack: + @echo " " + @echo "Preparing project $(PROJ) for sharing ... " + @echo " " + cd ./user_projects && zip -r $(PROJ).zip $(PROJ) + @echo " " + @echo "Share ./user_projects/$(PROJ).zip ... " + @echo "Other users can unzip $(PROJ).zip in their ./user_projects, compile, and run." + @echo " " + +unpack: + @echo " " + @echo "Preparing shared project $(PROJ).zip for use ... " + @echo " " + cd ./user_projects && unzip $(PROJ).zip + @echo " " + @echo "Load this project via make load PROJ=$(PROJ) ... " + @echo " " + +list-user-projects: + @echo "user projects::" + @cd ./user_projects && ls -dt1 * | grep . | sed 's!empty.txt!!' diff --git a/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_fibremaze.xml b/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_fibremaze.xml index 33a8c606a..c678f72e6 100644 --- a/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_fibremaze.xml +++ b/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_fibremaze.xml @@ -41,6 +41,7 @@ nutrient 0.0 0.1 + original @@ -168,7 +169,20 @@ - 1.0 + 0.0 + 0.01 + 0.0 + 10.0 + 0.05 + 10.0 + + 0.0 + 1.0 + 0.0 + + 0.6 + 0.1 + 1.0 @@ -260,9 +274,15 @@ - 1.0 - - + 1.0 + 60.0 + 0.0 + 2.0 + 0.0 + 1.57 + 0.0 + + @@ -352,8 +372,13 @@ - 1.0 - + 1.0 + 60.0 + 0.0 + 2.0 + 0.0 + 1.57 + 0.0 @@ -460,31 +485,8 @@ 0 0 - 2000 - true - 60.0 - 0.0 - 2.0 - 0.0 - 1.57 - 0.0 - - false - 0.01 - false - 10.0 - 0.05 - 10.0 false - - false - 1.0 - false - - 0.6 - 0.1 - 1.0 - +
\ No newline at end of file diff --git a/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_hinge.xml b/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_hinge.xml index 35ef69c10..9a2bb90ff 100644 --- a/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_hinge.xml +++ b/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_hinge.xml @@ -163,7 +163,20 @@ - 1.0 + 0.0 + 0.01 + 0.0 + 10.0 + 0.05 + 10.0 + + 0.0 + 1.0 + 1.0 + + 0.6 + 0.1 + 1.0 @@ -255,9 +268,15 @@ - 1.0 - - + 1.0 + 60.0 + 0.0 + 2.0 + 0.0 + 1.57 + 0.0 + + @@ -347,11 +366,18 @@ - 1.0 - - + 1.0 + 60.0 + 0.0 + 2.0 + 0.0 + 1.57 + 0.0 - + + + + @@ -455,31 +481,8 @@ 0 0 - 2000 - true - 60.0 - 0.0 - 2.0 - 0.0 - 1.57 - 0.0 - - false - 0.01 - false - 10.0 - 0.05 - 10.0 false - - false - 1.0 - true - - 0.6 - 0.1 - 1.0 \ No newline at end of file diff --git a/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_pushing.xml b/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_pushing.xml index c8c28fa12..35f03a44b 100644 --- a/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_pushing.xml +++ b/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_pushing.xml @@ -165,9 +165,22 @@ - 1.0 - - + 0.0 + 0.01 + 0.0 + 10.0 + 0.05 + 10.0 + + 1.0 + 1.0 + 0.0 + + 0.6 + 0.1 + 1.0 + + @@ -258,7 +271,15 @@ - 1.0 + + 1.0 + 40.0 + 0.0 + 2.0 + 0.0 + 1.57 + 0.0 + @@ -365,34 +386,13 @@ - 0 - - 1 - 1000 - - true - 40.0 - 0.0 - 2.0 - 0.0 - 1.57 - 0.0 - - false - 0.01 - false - 10.0 - 0.05 - 10.0 - false + 0 - true - 1.0 - false + 1 + 1000 + false - 0.6 - 0.1 - 1.0 + \ No newline at end of file diff --git a/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_rotating.xml b/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_rotating.xml index 79e90e80c..00a114827 100644 --- a/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_rotating.xml +++ b/sample_projects/physimess/config/Cell_Fibre_Mechanics/mymodel_rotating.xml @@ -23,7 +23,7 @@ - 1 + 2 @@ -165,7 +165,19 @@ - 1.0 + 0.0 + 0.01 + 0.0 + 10.0 + 0.05 + 10.0 + 0.0 + 1.0 + 1.0 + 0.6 + 0.1 + 1.0 + @@ -258,11 +270,17 @@ - 1.0 - - + 1.0 + 40.0 + 0.0 + 2.0 + 0.0 + 1.57 + 0.0 + + - + @@ -369,30 +387,8 @@ 1 1000 - - true - 40.0 - 0.0 - 2.0 - 0.0 - 1.57 - 0.0 - - false - 0.01 - false - 10.0 - 0.05 - 10.0 false - - false - 1.0 - true - - 0.6 - 0.1 - 1.0 +
\ No newline at end of file diff --git a/sample_projects/physimess/config/Fibre_Crosslinks/mymodel_extended_fibre_crosslink_test.xml b/sample_projects/physimess/config/Fibre_Crosslinks/mymodel_extended_fibre_crosslink_test.xml index fe0ad3f62..ba3d17974 100644 --- a/sample_projects/physimess/config/Fibre_Crosslinks/mymodel_extended_fibre_crosslink_test.xml +++ b/sample_projects/physimess/config/Fibre_Crosslinks/mymodel_extended_fibre_crosslink_test.xml @@ -177,9 +177,22 @@ - 1.0 - - + 0.0 + 0.01 + 0.0 + 10.0 + 0.05 + 10.0 + + 0.0 + 1.0 + 0.0 + + 0.6 + 0.1 + 1.0 + + @@ -275,9 +288,16 @@ - 1.0 - - + 0.0 + 40.0 + 0.0 + 2.0 + 0.0 + 0.2 + 0.0 + + + @@ -387,34 +407,10 @@ - 0 - - 1 - 10000 - - false - 40.0 - 0.0 - 2.0 - 0.0 - 0.2 - 0.0 - - false - 0.01 - false - 10.0 - 0.05 - 10.0 - false - - false - 1.0 - false - - 0.6 - 0.1 - 1.0 - + 0 + 1 + 10000 + false +
\ No newline at end of file diff --git a/sample_projects/physimess/config/Fibre_Crosslinks/mymodel_simple_fibre_crosslink_test.xml b/sample_projects/physimess/config/Fibre_Crosslinks/mymodel_simple_fibre_crosslink_test.xml index 75df8c2eb..f485995b2 100644 --- a/sample_projects/physimess/config/Fibre_Crosslinks/mymodel_simple_fibre_crosslink_test.xml +++ b/sample_projects/physimess/config/Fibre_Crosslinks/mymodel_simple_fibre_crosslink_test.xml @@ -162,9 +162,22 @@ - 1.0 - - + 0.0 + 0.01 + 0.0 + 10.0 + 0.05 + 10.0 + + 0.0 + 1.0 + 0.0 + + 0.6 + 0.1 + 1.0 + + @@ -254,11 +267,17 @@ - 1.0 - - + 0.0 + 75.0 + 0.0 + 2.0 + 0.0 + 0.2 + 0.0 + + - + @@ -346,11 +365,17 @@ - 1.0 - - + 0.0 + 75.0 + 0.0 + 2.0 + 0.0 + 0.2 + 0.0 + + - + @@ -360,34 +385,10 @@ - 0 - - 1 - 500 - - false - 75.0 - 0.0 - 2.0 - 0.0 - 0.2 - 0.0 - - false - 0.01 - false - 10.0 - 0.05 - 10.0 - false - - false - 1.0 - false - - 0.6 - 0.1 - 1.0 - + 0 + 1 + 500 + false +
diff --git a/sample_projects/physimess/config/Fibre_Degradation/mymodel_fibre_degradation.xml b/sample_projects/physimess/config/Fibre_Degradation/mymodel_fibre_degradation.xml index b9e704b81..785b62717 100644 --- a/sample_projects/physimess/config/Fibre_Degradation/mymodel_fibre_degradation.xml +++ b/sample_projects/physimess/config/Fibre_Degradation/mymodel_fibre_degradation.xml @@ -163,7 +163,21 @@ - 1.0 + + 1.0 + 0.01 + 0.0 + 10.0 + 0.05 + 10.0 + + 0.0 + 1.0 + 0.0 + + 0.6 + 0.1 + 1.0 @@ -255,7 +269,14 @@ - 1.0 + 0.0 + 40.0 + 0.0 + 2.0 + 0.0 + 0.0 + 0.0 + @@ -361,33 +382,10 @@ - 0 - 1 - - 1000 - false - 40.0 - 0.0 - 2.0 - 0.0 - 0.0 - 0.0 - - true - 0.01 - false - 10.0 - 0.05 - 10.0 - false - - false - 1.0 - false - - 0.6 - 0.1 - 1.0 - + 0 + 1 + 1000 + false + \ No newline at end of file diff --git a/sample_projects/physimess/config/Fibre_Degradation/mymodel_matrix_degradation.xml b/sample_projects/physimess/config/Fibre_Degradation/mymodel_matrix_degradation.xml index 8db63706d..435cf404d 100644 --- a/sample_projects/physimess/config/Fibre_Degradation/mymodel_matrix_degradation.xml +++ b/sample_projects/physimess/config/Fibre_Degradation/mymodel_matrix_degradation.xml @@ -23,7 +23,7 @@ - 1 + 6 @@ -164,9 +164,20 @@ - 1.0 - - + 1.0 + 0.001 + 1.0 + 10000.0 + 0.05 + 10.0 + 0.0 + 1.0 + 0.0 + 0.6 + 0.1 + 1.0 + + @@ -256,11 +267,18 @@ - 1.0 - - + 0.0 + 40.0 + 0.0 + 2.0 + 0.0 + 0.0 + 0.0 + + + - + @@ -270,35 +288,10 @@ - 0 - 1 - - 1000 - false - 40.0 - 0.0 - 2.0 - 0.0 - 0.0 - 0.0 - - - true - 0.001 - true - 10000.0 - 0.05 - 10.0 - false - - false - 1.0 - false - - 0.6 - 0.1 - 1.0 - true - + 0 + 1 + 1000 + true + \ No newline at end of file diff --git a/sample_projects/physimess/config/Fibre_Initialisation/mymodel_initialisation.xml b/sample_projects/physimess/config/Fibre_Initialisation/mymodel_initialisation.xml index 6a7ff802a..b31e82b39 100644 --- a/sample_projects/physimess/config/Fibre_Initialisation/mymodel_initialisation.xml +++ b/sample_projects/physimess/config/Fibre_Initialisation/mymodel_initialisation.xml @@ -23,7 +23,7 @@ - 1 + 2 @@ -163,9 +163,20 @@ - 1.0 - - + 0.0 + 0.01 + 0.0 + 10.0 + 0.05 + 10.0 + 0.0 + 1.0 + 0.0 + 0.6 + 0.1 + 1.0 + + @@ -255,9 +266,15 @@ - 1.0 - - + 0.0 + 75.0 + 0.0 + 2.0 + 0.0 + 0.0 + 0.0 + + @@ -361,33 +378,10 @@ - 0 - 0 - - 2000 - false - 75.0 - 0.0 - 2.0 - 0.0 - 0.0 - 0.0 - - false - 0.01 - false - 10.0 - 0.05 - 10.0 - false - - false - 1.0 - false - - 0.6 - 0.1 - 1.0 - + 0 + 0 + 2000 + false + \ No newline at end of file diff --git a/sample_projects/physimess/config/Fibre_Initialisation/mymodel_initialisation_maze.xml b/sample_projects/physimess/config/Fibre_Initialisation/mymodel_initialisation_maze.xml index 820cc9919..153e35392 100644 --- a/sample_projects/physimess/config/Fibre_Initialisation/mymodel_initialisation_maze.xml +++ b/sample_projects/physimess/config/Fibre_Initialisation/mymodel_initialisation_maze.xml @@ -163,9 +163,20 @@ - 1.0 - - + 0.0 + 0.01 + 0.0 + 10.0 + 0.05 + 10.0 + 0.0 + 1.0 + 0.0 + 0.6 + 0.1 + 1.0 + + @@ -255,9 +266,15 @@ - 1.0 - - + 0.0 + 40.0 + 0.0 + 2.0 + 0.0 + 0.0 + 0.0 + + @@ -347,7 +364,14 @@ - 1.0 + 0.0 + 40.0 + 0.0 + 2.0 + 0.0 + 0.0 + 0.0 + @@ -361,33 +385,10 @@ - 0 - 0 - - 2000 - false - 40.0 - 0.0 - 2.0 - 0.0 - 0.0 - 0.0 - - false - 0.01 - false - 10.0 - 0.05 - 10.0 - false - - false - 1.0 - false - - 0.6 - 0.1 - 1.0 - + 0 + 0 + 2000 + false + \ No newline at end of file diff --git a/sample_projects/physimess/config/Neighbours_in_voxels/mymodel_neighbours.xml b/sample_projects/physimess/config/Neighbours_in_voxels/mymodel_neighbours.xml index 8ecd379cd..d29e7e193 100644 --- a/sample_projects/physimess/config/Neighbours_in_voxels/mymodel_neighbours.xml +++ b/sample_projects/physimess/config/Neighbours_in_voxels/mymodel_neighbours.xml @@ -177,9 +177,20 @@ - 1.0 - - + 0.0 + 0.01 + 0.0 + 10.0 + 0.05 + 10.0 + 0.0 + 1.0 + 0.0 + 0.6 + 0.1 + 1.0 + + @@ -275,11 +286,17 @@ - 1.0 - - + 1.0 + 250.0 + 0.0 + 2.0 + 0.0 + 0.0 + 0.0 + + - + @@ -289,34 +306,10 @@ - 0 - - 1 - 10000 - - true - 250.0 - 0.0 - 2.0 - 0.0 - 0.0 - 0.0 - - false - 0.01 - false - 10.0 - 0.05 - 10.0 - false - - false - 1.0 - false - - 0.6 - 0.1 - 1.0 - + 0 + 1 + 10000 + false + \ No newline at end of file diff --git a/sample_projects/physimess/config/PhysiCell_settings.xml b/sample_projects/physimess/config/PhysiCell_settings.xml index 41cfbaa32..9f7549eee 100644 --- a/sample_projects/physimess/config/PhysiCell_settings.xml +++ b/sample_projects/physimess/config/PhysiCell_settings.xml @@ -23,7 +23,7 @@ - 1 + 2 @@ -219,7 +219,17 @@ - 1.0 + 0.0 + 0.01 + 0.0 + 10.0 + 0.05 + 0.0 + 1.0 + 0.0 + 0.6 + 0.1 + 1.0 @@ -360,6 +370,12 @@ 1.0 + 0.0 + 75.0 + 0.0 + 2.0 + 0.0 + 0.0 @@ -516,23 +532,6 @@ 0 0 2000 - false - 75.0 - 0.0 - 2.0 - 0.0 - 0.0 - false - 0.01 - false - 10.0 - 0.05 - false - 1.0 - false - 0.6 - 0.1 - 1.0 true diff --git a/sample_projects/physimess/custom_modules/custom.cpp b/sample_projects/physimess/custom_modules/custom.cpp index 7c3304a3a..6fc97a914 100644 --- a/sample_projects/physimess/custom_modules/custom.cpp +++ b/sample_projects/physimess/custom_modules/custom.cpp @@ -72,7 +72,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you @@ -84,10 +87,7 @@ void create_cell_types( void ) initialize_default_cell_definition(); cell_defaults.phenotype.secretion.sync_to_microenvironment( µenvironment ); - if (PhysiCell::parameters.bools("fibre_custom_degradation")) - cell_defaults.functions.instantiate_cell = instantiate_physimess_cell_custom_degrade; - else - cell_defaults.functions.instantiate_cell = instantiate_physimess_cell; + cell_defaults.functions.instantiate_cell = instantiate_physimess_cell; cell_defaults.functions.volume_update_function = standard_volume_update_function; cell_defaults.functions.update_velocity = physimess_update_cell_velocity; @@ -138,7 +138,13 @@ void create_cell_types( void ) pCD->functions.plot_agent_legend = fibre_agent_legend; } - + + for (auto* pCD: cell_definitions_by_index){ + if (!isFibre(pCD) && pCD->custom_data.find_variable_index("fibre_custom_degradation") > 0){ + if (pCD->custom_data["fibre_custom_degradation"] > 0.5) + pCD->functions.instantiate_cell = instantiate_physimess_cell_custom_degrade; + } + } /* This builds the map of cell definitions and summarizes the setup. */ @@ -272,7 +278,7 @@ std::vector my_coloring_function( Cell* pCell ) return paint_by_number_cell_coloring(pCell); } } -std::vector my_coloring_function_for_substrate( double concentration, double max_conc, double min_conc ) +std::string my_coloring_function_for_substrate( double concentration, double max_conc, double min_conc ) { return paint_by_density_percentage( concentration, max_conc, min_conc); } void my_cellcount_function(char* string){ @@ -311,9 +317,9 @@ void PhysiMeSS_Cell_Custom_Degrade::degrade_fibre(PhysiMeSS_Fibre* pFibre) // Fibre degradation by cell - switched on by flag fibre_degradation - double stuck_threshold = PhysiCell::parameters.doubles("fibre_stuck_time"); - double pressure_threshold = PhysiCell::parameters.doubles("fibre_pressure_threshold"); - if (PhysiCell::parameters.bools("fibre_degradation") && (stuck_counter >= stuck_threshold + double stuck_threshold = this->custom_data["fibre_stuck_time"]; + double pressure_threshold = this->custom_data["fibre_pressure_threshold"]; + if (this->custom_data["fibre_degradation"] > 0.5 && (stuck_counter >= stuck_threshold || state.simple_pressure > pressure_threshold)) { // if (stuck_counter >= stuck_threshold){ // std::cout << "Cell " << ID << " is stuck at time " << PhysiCell::PhysiCell_globals.current_time @@ -327,7 +333,7 @@ void PhysiMeSS_Cell_Custom_Degrade::degrade_fibre(PhysiMeSS_Fibre* pFibre) double dotproduct = dot_product(displacement, phenotype.motility.motility_vector); if (dotproduct >= 0) { double rand_degradation = PhysiCell::UniformRandom(); - double prob_degradation = PhysiCell::parameters.doubles("fibre_degradation_rate"); + double prob_degradation = this->custom_data["fibre_degradation_rate"]; if (state.simple_pressure > pressure_threshold){ prob_degradation *= state.simple_pressure; } diff --git a/sample_projects/physimess/custom_modules/custom.h b/sample_projects/physimess/custom_modules/custom.h index df69fd334..a17087254 100644 --- a/sample_projects/physimess/custom_modules/custom.h +++ b/sample_projects/physimess/custom_modules/custom.h @@ -83,7 +83,7 @@ void setup_microenvironment( void ); // custom pathology coloring function std::vector my_coloring_function( Cell* ); -std::vector my_coloring_function_for_substrate( double concentration, double max_conc, double min_conc ); +std::string my_coloring_function_for_substrate( double concentration, double max_conc, double min_conc ); void my_cellcount_function(char* string); // custom functions can go here @@ -100,5 +100,4 @@ class PhysiMeSS_Cell_Custom_Degrade : public PhysiMeSS_Cell { public: void degrade_fibre(PhysiMeSS_Fibre* pFibre); -}; -// void PhysiMeSS_Cell::other_degrade_fibre(PhysiMeSS_Fibre* pFibre); \ No newline at end of file +}; \ No newline at end of file diff --git a/sample_projects/physimess/main.cpp b/sample_projects/physimess/main.cpp index 6e611a598..9d9d2b67f 100644 --- a/sample_projects/physimess/main.cpp +++ b/sample_projects/physimess/main.cpp @@ -150,7 +150,7 @@ int main( int argc, char* argv[] ) // for simplicity, set a pathology coloring function std::vector (*cell_coloring_function)(Cell*) = my_coloring_function; - std::vector (*substrate_coloring_function)(double, double, double) = my_coloring_function_for_substrate; + std::string (*substrate_coloring_function)(double, double, double) = my_coloring_function_for_substrate; void (*cellcount_function)(char*) = my_cellcount_function; sprintf( filename , "%s/initial.svg" , PhysiCell_settings.folder.c_str() ); diff --git a/sample_projects/pred_prey_farmer/custom_modules/custom.cpp b/sample_projects/pred_prey_farmer/custom_modules/custom.cpp index 46490a9e3..3c12f52f3 100644 --- a/sample_projects/pred_prey_farmer/custom_modules/custom.cpp +++ b/sample_projects/pred_prey_farmer/custom_modules/custom.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/sample_projects/rules_sample/Makefile b/sample_projects/rules_sample/Makefile index 6682b5c46..d9493e2df 100644 --- a/sample_projects/rules_sample/Makefile +++ b/sample_projects/rules_sample/Makefile @@ -11,6 +11,10 @@ ifdef PHYSICELL_CPP CC := $(PHYSICELL_CPP) endif +ifndef STATIC_OPENMP + STATIC_OPENMP = -fopenmp +endif + ARCH := native # best auto-tuning # ARCH := core2 # a reasonably safe default for most CPUs since 2007 # ARCH := corei7 @@ -44,7 +48,9 @@ else endif endif -COMPILE_COMMAND := $(CC) $(CFLAGS) +CFLAGS_LINK := $(shell echo $(CFLAGS) | sed -e "s/-fopenmp//g") +COMPILE_COMMAND := $(CC) $(CFLAGS) $(EXTRA_FLAGS) +LINK_COMMAND := $(CC) $(CFLAGS_LINK) $(EXTRA_FLAGS) BioFVM_OBJECTS := BioFVM_vector.o BioFVM_mesh.o BioFVM_microenvironment.o BioFVM_solvers.o BioFVM_matlab.o \ BioFVM_utilities.o BioFVM_basic_agent.o BioFVM_MultiCellDS.o BioFVM_agent_container.o @@ -71,6 +77,9 @@ all: main.cpp $(ALL_OBJECTS) $(COMPILE_COMMAND) -o $(PROGRAM_NAME) $(ALL_OBJECTS) main.cpp 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) + name: @echo "" @echo "Executable name is" $(PROGRAM_NAME) @@ -176,7 +185,7 @@ custom.o: ./custom_modules/custom.cpp reset: rm -f *.cpp cp ./sample_projects/Makefile-default Makefile - rm -f ./custom_modules/* + rm -rf ./custom_modules/* touch ./custom_modules/empty.txt touch ALL_CITATIONS.txt touch ./core/PhysiCell_cell.cpp diff --git a/sample_projects/rules_sample/config/PhysiCell_settings.xml b/sample_projects/rules_sample/config/PhysiCell_settings.xml index 6a231ad1c..c4c65b93b 100644 --- a/sample_projects/rules_sample/config/PhysiCell_settings.xml +++ b/sample_projects/rules_sample/config/PhysiCell_settings.xml @@ -1181,7 +1181,7 @@ - + ./config cell_rules.csv @@ -1193,4 +1193,4 @@ 0 0 - \ No newline at end of file + diff --git a/sample_projects/rules_sample/config/cell_rules.csv b/sample_projects/rules_sample/config/cell_rules.csv index 2e75c81b0..93953b117 100644 --- a/sample_projects/rules_sample/config/cell_rules.csv +++ b/sample_projects/rules_sample/config/cell_rules.csv @@ -11,17 +11,20 @@ malignant epithelial cell,damage,increases,apoptosis,0.1,5,8,0 M0 macrophage,necrotic debris,increases,transform to M1 macrophage,0.05,0.005,4,0 M0 macrophage,apoptotic debris,decreases,migration speed,0.1,0.005,4,0 M0 macrophage,necrotic debris,decreases,migration speed,0.1,0.005,4,0 -M0 macrophage,volume,decreases,phagocytose dead cell,0,6000,4,0 +M0 macrophage,volume,decreases,phagocytose apoptotic cell,0,6000,4,0 +M0 macrophage,volume,decreases,phagocytose necrotic cell,0,6000,4,0 // M1 macrophages // M1 macrophage,oxygen,decreases,transform to M2 macrophage,0.0,5,8,0 M1 macrophage,oxygen,decreases,transform to M2 macrophage,0.0001,5,8,0 M1 macrophage,apoptotic debris,decreases,migration speed,0.1,0.005,4,0 M1 macrophage,necrotic debris,decreases,migration speed,0.1,0.005,4,0 -M1 macrophage,volume,decreases,phagocytose dead cell,0.0,6000,4,0 +M1 macrophage,volume,decreases,phagocytose apoptotic cell,0.0,6000,4,0 +M1 macrophage,volume,decreases,phagocytose necrotic cell,0.0,6000,4,0 // M2 macrophages M2 macrophage,apoptotic debris,decreases,migration speed,0.1,0.005,4,0 M2 macrophage,necrotic debris,decreases,migration speed,0.1,0.005,4,0 -M2 macrophage,volume,decreases,phagocytose dead cell,0.0,6000,4,0 +M2 macrophage,volume,decreases,phagocytose apoptotic cell,0.0,6000,4,0 +M2 macrophage,volume,decreases,phagocytose necrotic cell,0.0,6000,4,0 // effector cells effector T cell,pro-inflammatory factor,increases,attack malignant epithelial cell,0.01,1,4,0 effector T cell,contact with malignant epithelial cell,decreases,migration speed,0.01,0.1,10,0 diff --git a/sample_projects/rules_sample/custom_modules/custom.cpp b/sample_projects/rules_sample/custom_modules/custom.cpp index 6ed3722d6..eb2f9766f 100644 --- a/sample_projects/rules_sample/custom_modules/custom.cpp +++ b/sample_projects/rules_sample/custom_modules/custom.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/sample_projects/template/Makefile b/sample_projects/template/Makefile index 6682b5c46..7aa7d18d2 100644 --- a/sample_projects/template/Makefile +++ b/sample_projects/template/Makefile @@ -11,6 +11,10 @@ ifdef PHYSICELL_CPP CC := $(PHYSICELL_CPP) endif +ifndef STATIC_OPENMP + STATIC_OPENMP = -fopenmp +endif + ARCH := native # best auto-tuning # ARCH := core2 # a reasonably safe default for most CPUs since 2007 # ARCH := corei7 @@ -44,7 +48,9 @@ else endif endif -COMPILE_COMMAND := $(CC) $(CFLAGS) +CFLAGS_LINK := $(shell echo $(CFLAGS) | sed -e "s/-fopenmp//g") +COMPILE_COMMAND := $(CC) $(CFLAGS) $(EXTRA_FLAGS) +LINK_COMMAND := $(CC) $(CFLAGS_LINK) $(EXTRA_FLAGS) BioFVM_OBJECTS := BioFVM_vector.o BioFVM_mesh.o BioFVM_microenvironment.o BioFVM_solvers.o BioFVM_matlab.o \ BioFVM_utilities.o BioFVM_basic_agent.o BioFVM_MultiCellDS.o BioFVM_agent_container.o @@ -71,6 +77,9 @@ all: main.cpp $(ALL_OBJECTS) $(COMPILE_COMMAND) -o $(PROGRAM_NAME) $(ALL_OBJECTS) main.cpp 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) + name: @echo "" @echo "Executable name is" $(PROGRAM_NAME) diff --git a/sample_projects/template/config/PhysiCell_settings.xml b/sample_projects/template/config/PhysiCell_settings.xml index 25aeabb67..eeb0b79d1 100644 --- a/sample_projects/template/config/PhysiCell_settings.xml +++ b/sample_projects/template/config/PhysiCell_settings.xml @@ -111,6 +111,12 @@ 60 true + + substrate + YlOrRd + 0 + 1 + @@ -122,6 +128,7 @@ false true false +
@@ -266,6 +273,7 @@ 0.01 0.0 0.0 + 12 @@ -318,6 +326,21 @@ 1.0 + + + + Volume + 4 + 2 + 100000 + + + apoptosis + 1e-6 + 1e-2 + + + @@ -330,7 +353,7 @@ - + ./config cell_rules.csv diff --git a/sample_projects/template/custom_modules/custom.cpp b/sample_projects/template/custom_modules/custom.cpp index 6ed3722d6..59b23bd93 100644 --- a/sample_projects/template/custom_modules/custom.cpp +++ b/sample_projects/template/custom_modules/custom.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you @@ -192,7 +195,8 @@ void setup_tissue( void ) std::cout << std::endl; // load cells from your CSV file (if enabled) - load_cells_from_pugixml(); + load_cells_from_pugixml(); + set_parameters_from_distributions(); return; } diff --git a/sample_projects/template/main.cpp b/sample_projects/template/main.cpp index 9d26e541d..2f7e98c75 100644 --- a/sample_projects/template/main.cpp +++ b/sample_projects/template/main.cpp @@ -149,10 +149,11 @@ 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*) = my_coloring_function; + std::string (*substrate_coloring_function)(double, double, double) = paint_by_density_percentage; + 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, substrate_coloring_function ); sprintf( filename , "%s/legend.svg" , PhysiCell_settings.folder.c_str() ); create_plot_legend( filename , cell_coloring_function ); @@ -204,9 +205,9 @@ int main( int argc, char* argv[] ) { if( PhysiCell_settings.enable_SVG_saves == true ) { - sprintf( filename , "%s/snapshot%08u.svg" , PhysiCell_settings.folder.c_str() , PhysiCell_globals.SVG_output_index ); - SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function ); - + sprintf( filename , "%s/snapshot%08u.svg" , PhysiCell_settings.folder.c_str() , PhysiCell_globals.SVG_output_index ); + SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function, substrate_coloring_function); + PhysiCell_globals.SVG_output_index++; PhysiCell_globals.next_SVG_save_time += PhysiCell_settings.SVG_save_interval; } @@ -241,9 +242,9 @@ 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/final.svg" , PhysiCell_settings.folder.c_str() ); - SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function ); - + sprintf( filename , "%s/final.svg" , PhysiCell_settings.folder.c_str() ); + SVG_plot(filename, microenvironment, 0.0, PhysiCell_globals.current_time, cell_coloring_function, substrate_coloring_function); + // timer std::cout << std::endl << "Total simulation runtime: " << std::endl; diff --git a/sample_projects/virus_macrophage/custom_modules/custom.cpp b/sample_projects/virus_macrophage/custom_modules/custom.cpp index af390e8a8..5d1022bd7 100644 --- a/sample_projects/virus_macrophage/custom_modules/custom.cpp +++ b/sample_projects/virus_macrophage/custom_modules/custom.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/sample_projects/worm/custom_modules/custom.cpp b/sample_projects/worm/custom_modules/custom.cpp index 3bc8e3800..d8ab54473 100644 --- a/sample_projects/worm/custom_modules/custom.cpp +++ b/sample_projects/worm/custom_modules/custom.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/sample_projects_intracellular/boolean/cancer_invasion/Makefile b/sample_projects_intracellular/boolean/cancer_invasion/Makefile new file mode 100644 index 000000000..8d14bed86 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/Makefile @@ -0,0 +1,359 @@ +VERSION := $(shell grep . VERSION.txt | cut -f1 -d:) +PROGRAM_NAME := invasion_model + +CC := g++ +# CC := g++-mp-7 # typical macports compiler name +# CC := g++-7 # typical homebrew compiler name + +# Check for environment definitions of compiler +# e.g., on CC = g++-7 on OSX +ifdef PHYSICELL_CPP + CC := $(PHYSICELL_CPP) +endif + +### MaBoSS configuration +# MaBoSS max nodes +ifndef MABOSS_MAX_NODES +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 +endif + +LIB := -L$(CUR_DIR)/$(MABOSS_DIR)/lib -lMaBoSS-static $(LDL_FLAG) +INC := -DADDON_PHYSIBOSS -I$(CUR_DIR)/$(MABOSS_DIR)/include -DMAXNODES=$(MABOSS_MAX_NODES) + + +# If max nodes > 64, change lib path +ifeq ($(shell expr $(MABOSS_MAX_NODES) '>' 64), 1) +LIB := -L$(CUR_DIR)/$(MABOSS_DIR)/lib -lMaBoSS_$(MABOSS_MAX_NODES)n-static $(LDL_FLAG) +endif + +ifndef STATIC_OPENMP + STATIC_OPENMP = -fopenmp +endif + +ARCH := native # best auto-tuning +# ARCH := core2 # a reasonably safe default for most CPUs since 2007 +# ARCH := corei7 +# ARCH := corei7-avx # earlier i7 +# ARCH := core-avx-i # i7 ivy bridge or newer +# ARCH := core-avx2 # i7 with Haswell or newer +# ARCH := nehalem +# ARCH := westmere +# ARCH := sandybridge # circa 2011 +# ARCH := ivybridge # circa 2012 +# ARCH := haswell # circa 2013 +# ARCH := broadwell # circa 2014 +# ARCH := skylake # circa 2015 +# ARCH := bonnell +# ARCH := silvermont +# ARCH := skylake-avx512 +# ARCH := nocona #64-bit pentium 4 or later + +# CFLAGS := -march=$(ARCH) -Ofast -s -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 + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Darwin) + UNAME_P := $(shell uname -p) + var := $(shell which $(CC) | xargs file) + ifeq ($(lastword $(var)),arm64) + CFLAGS := -march=$(ARCH) -O3 -fomit-frame-pointer -fopenmp -m64 -std=c++11 + endif + endif +endif + +CFLAGS_LINK := $(shell echo $(CFLAGS) | sed -e "s/-fopenmp//g") +COMPILE_COMMAND := $(CC) $(CFLAGS) $(EXTRA_FLAGS) +LINK_COMMAND := $(CC) $(CFLAGS_LINK) $(EXTRA_FLAGS) + +BioFVM_OBJECTS := BioFVM_vector.o BioFVM_mesh.o BioFVM_microenvironment.o BioFVM_solvers.o BioFVM_matlab.o \ +BioFVM_utilities.o BioFVM_basic_agent.o BioFVM_MultiCellDS.o BioFVM_agent_container.o + +PhysiCell_core_OBJECTS := PhysiCell_phenotype.o PhysiCell_cell_container.o PhysiCell_standard_models.o \ +PhysiCell_cell.o PhysiCell_custom.o PhysiCell_utilities.o PhysiCell_constants.o PhysiCell_basic_signaling.o \ +PhysiCell_signal_behavior.o PhysiCell_rules.o + + +PhysiCell_module_OBJECTS := PhysiCell_SVG.o PhysiCell_pathology.o PhysiCell_MultiCellDS.o PhysiCell_various_outputs.o \ +PhysiCell_pugixml.o PhysiCell_settings.o PhysiCell_geometry.o + +# put your custom objects here (they should be in the custom_modules directory) + +MaBoSS := ./addons/PhysiBoSS/MaBoSS/engine/src/BooleanNetwork.h + +PhysiBoSS_OBJECTS := maboss_network.o maboss_intracellular.o + +PhysiCell_custom_module_OBJECTS := custom.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) + +# compile the project + +all: main.cpp $(ALL_OBJECTS) $(MaBoSS) + $(COMPILE_COMMAND) $(INC) -o $(PROGRAM_NAME) $(ALL_OBJECTS) main.cpp $(LIB) + 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) + +name: + @echo "" + @echo "Executable name is" $(PROGRAM_NAME) + @echo "" + +# PhysiCell core components + +PhysiCell_phenotype.o: ./core/PhysiCell_phenotype.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_phenotype.cpp + +PhysiCell_digital_cell_line.o: ./core/PhysiCell_digital_cell_line.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_digital_cell_line.cpp + +PhysiCell_cell.o: ./core/PhysiCell_cell.cpp $(MaBoSS) + $(COMPILE_COMMAND) $(INC) -c ./core/PhysiCell_cell.cpp + +PhysiCell_cell_container.o: ./core/PhysiCell_cell_container.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_cell_container.cpp + +PhysiCell_standard_models.o: ./core/PhysiCell_standard_models.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_standard_models.cpp + +PhysiCell_utilities.o: ./core/PhysiCell_utilities.cpp + $(COMPILE_COMMAND) -c ./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 + +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 + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_vector.cpp + +BioFVM_agent_container.o: ./BioFVM/BioFVM_agent_container.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_agent_container.cpp + +BioFVM_mesh.o: ./BioFVM/BioFVM_mesh.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_mesh.cpp + +BioFVM_microenvironment.o: ./BioFVM/BioFVM_microenvironment.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_microenvironment.cpp + +BioFVM_solvers.o: ./BioFVM/BioFVM_solvers.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_solvers.cpp + +BioFVM_utilities.o: ./BioFVM/BioFVM_utilities.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_utilities.cpp + +BioFVM_basic_agent.o: ./BioFVM/BioFVM_basic_agent.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_basic_agent.cpp + +BioFVM_matlab.o: ./BioFVM/BioFVM_matlab.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_matlab.cpp + +BioFVM_MultiCellDS.o: ./BioFVM/BioFVM_MultiCellDS.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_MultiCellDS.cpp + +pugixml.o: ./BioFVM/pugixml.cpp + $(COMPILE_COMMAND) -c ./BioFVM/pugixml.cpp + +# standard PhysiCell modules + +PhysiCell_SVG.o: ./modules/PhysiCell_SVG.cpp + $(COMPILE_COMMAND) -c ./modules/PhysiCell_SVG.cpp + +PhysiCell_pathology.o: ./modules/PhysiCell_pathology.cpp + $(COMPILE_COMMAND) -c ./modules/PhysiCell_pathology.cpp + +PhysiCell_MultiCellDS.o: ./modules/PhysiCell_MultiCellDS.cpp $(MaBoSS) + $(COMPILE_COMMAND) $(INC) -c ./modules/PhysiCell_MultiCellDS.cpp + +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 + +PhysiCell_basic_signaling.o: ./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 + cd ./addons/PhysiBoSS/MaBoSS/engine/src;make CXX=$(CC) MAXNODES=$(MABOSS_MAX_NODES) install_alib;make clean; cd ../../../../.. + +$(MaBoSS): +ifeq ($(OS), Windows_NT) + python addons/PhysiBoSS/setup_libmaboss.py +else + python3 addons/PhysiBoSS/setup_libmaboss.py +endif + +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 + +custom.o: ./custom_modules/custom.cpp $(MaBoSS) + $(COMPILE_COMMAND) $(INC) -c ./custom_modules/custom.cpp + +# cleanup + +reset: + rm -f *.cpp + cp ./sample_projects/Makefile-default Makefile + rm -f ./custom_modules/* + touch ./custom_modules/empty.txt + touch ALL_CITATIONS.txt + rm ALL_CITATIONS.txt + rm ./config/PhysiCell_settings_*.xml + cp ./config/PhysiCell_settings-backup.xml ./config/PhysiCell_settings.xml + rm -rf ./config/boolean_network/ ./config/cells.csv ./config/rules.csv ./config/init.tsv + rm -rf ./scripts + +MaBoSS-clean: + rm -fr addons/PhysiBoSS/MaBoSS + +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 + cp latest.zip VERSION_$(VERSION).zip + mv *.zip archives/ + +tar: + tar --ignore-failed-read -czf latest.tar Makefile* *.cpp *.h BioFVM/* config/* core/* custom_modules/* matlab/* modules/* sample_projects/* + cp latest.tar $$(date +%b_%d_%Y_%H%M).tar + cp latest.tar VERSION_$(VERSION).tar + mv *.tar archives/ + +unzip: + cp ./archives/latest.zip . + unzip latest.zip + +untar: + cp ./archives/latest.tar . + tar -xzf latest.tar + +movie: + ffmpeg -r 25 -i output/snapshot%08d.svg -pix_fmt yuv420p output.mp4 + vlc output.mp4 + +# upgrade rules + +SOURCE := PhysiCell_upgrade.zip +get-upgrade: + @echo $$(curl https://raw.githubusercontent.com/MathCancer/PhysiCell/master/VERSION.txt) > VER.txt + @echo https://github.com/MathCancer/PhysiCell/releases/download/$$(grep . VER.txt)/PhysiCell_V.$$(grep . VER.txt).zip > DL_FILE.txt + rm -f VER.txt + $$(curl -L $$(grep . DL_FILE.txt) --output PhysiCell_upgrade.zip) + rm -f DL_FILE.txt + +PhysiCell_upgrade.zip: + make get-upgrade + +upgrade: $(SOURCE) + unzip $(SOURCE) PhysiCell/VERSION.txt + mv -f PhysiCell/VERSION.txt . + unzip $(SOURCE) PhysiCell/core/* + cp -r PhysiCell/core/* core + unzip $(SOURCE) PhysiCell/modules/* + cp -r PhysiCell/modules/* modules + unzip $(SOURCE) PhysiCell/sample_projects/* + cp -r PhysiCell/sample_projects/* sample_projects + unzip $(SOURCE) PhysiCell/BioFVM/* + cp -r PhysiCell/BioFVM/* BioFVM + unzip $(SOURCE) PhysiCell/documentation/User_Guide.pdf + 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 + +save: + echo "Saving project as $(PROJ) ... " + mkdir -p ./user_projects + mkdir -p ./user_projects/$(PROJ) + mkdir -p ./user_projects/$(PROJ)/custom_modules + mkdir -p ./user_projects/$(PROJ)/config + cp main.cpp ./user_projects/$(PROJ) + cp Makefile ./user_projects/$(PROJ) + cp VERSION.txt ./user_projects/$(PROJ) + cp -r ./config/* ./user_projects/$(PROJ)/config + cp -r ./custom_modules/* ./user_projects/$(PROJ)/custom_modules + +load: + echo "Loading project from $(PROJ) ... " + cp ./user_projects/$(PROJ)/main.cpp . + cp ./user_projects/$(PROJ)/Makefile . + cp -r ./user_projects/$(PROJ)/config/* ./config/ + cp -r ./user_projects/$(PROJ)/custom_modules/* ./custom_modules/ + +pack: + @echo " " + @echo "Preparing project $(PROJ) for sharing ... " + @echo " " + cd ./user_projects && zip -r $(PROJ).zip $(PROJ) + @echo " " + @echo "Share ./user_projects/$(PROJ).zip ... " + @echo "Other users can unzip $(PROJ).zip in their ./user_projects, compile, and run." + @echo " " + +unpack: + @echo " " + @echo "Preparing shared project $(PROJ).zip for use ... " + @echo " " + cd ./user_projects && unzip $(PROJ).zip + @echo " " + @echo "Load this project via make load PROJ=$(PROJ) ... " + @echo " " + +list-user-projects: + @echo "user projects::" + @cd ./user_projects && ls -dt1 * | grep . | sed 's!empty.txt!!' diff --git a/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings.xml b/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings.xml new file mode 100644 index 000000000..37077adb0 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings.xml @@ -0,0 +1,690 @@ + + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 2880.0 + min + micron + 0.01 + 0.1 + 6 + + + + 10 + + + + output + + 10 + true + + + 10 + true + + false + true + + + ecm + 0.0 + 1.0 + viridis + + + + false + + + + + false + true + false + + + + + + 60000.0 + 0.0005 + + 38.0 + 38.0 + + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + + + + + 0.0 + 0.0 + + 0.5 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + 0.5 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + 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.0046040516 + 0.0012820513 + 0.006667 + + + + + 0.0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + + + 0.2 + 1 + 0.0 + + false + true + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 0 + 0.008 + 0 + + + 0 + 0 + 0.0 + 0 + + + 0 + 0 + 0.02 + 0 + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + + + config/boolean_network/intracellular_model.bnd + config/boolean_network/intracellular_model.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + + + + activation + 8.0 + 0 + + + + + inhibition + 4 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 0.02 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 6.0 + 15.0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 0.1 + 0 + 5 + + + + + activation + 1 + 0 + 50 + + + + + activation + 0.0012820513 + 0 + 0 + + + + + activation + 0.0 + 0 + + + + + + + 0.1 + 0.9 + 0 + 0.0 + 0 + 0.5 + 1.0 + + + + + + + 0.0046040516 + 0.0012820513 + 0.006667 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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.3 + + 0.4 + 0.01 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.001 + 0.4 + 0.0 + + + 0.2 + 1 + 0.2 + + true + true + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 0 + 0.005 + 0 + + + 0 + 0 + 0.0 + 0 + + + 0 + 0 + 0.02 + 0 + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + + + config/boolean_network/intracellular_model.bnd + config/boolean_network/intracellular_model.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + + + + activation + 8.0 + 0 + + + + + activation + 4 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 0.02 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 6.0 + 15.0 + 4 + + + + + activation + 1 + 0 + 50 + + + + + activation + 0.5 + 0 + 0 + + + + + activation + 0.0012820513 + 0.0 + 0 + + + + + activation + 0.8 + 0.0 + 500 + + + + + activation + 0.8 + 0.0 + 100 + + + + + activation + 1000000.0 + 0.0 + 0 + + + + + inhibition + 0.0 + 100 + + + + + activation + 0.0 + 0 + + + + + inhibition + 0.006667 + 0.0 + 0 + + + + + + + 0.1 + 0.9 + 0 + 0.0 + 0 + 0.0 + 1.0 + + + + + + + ./config + cells.csv + + + + + 0 + 30.0 + 30 + 20 + 0.5 + 0.5 + 0.5 + 0.5 + 0.05 + 0.002 + 0.75 + 0.0 + 20 + 15 + 8.413 + 1.3 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D.xml b/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D.xml new file mode 100644 index 000000000..37077adb0 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D.xml @@ -0,0 +1,690 @@ + + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 2880.0 + min + micron + 0.01 + 0.1 + 6 + + + + 10 + + + + output + + 10 + true + + + 10 + true + + false + true + + + ecm + 0.0 + 1.0 + viridis + + + + false + + + + + false + true + false + + + + + + 60000.0 + 0.0005 + + 38.0 + 38.0 + + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + + + + + 0.0 + 0.0 + + 0.5 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + 0.5 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + 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.0046040516 + 0.0012820513 + 0.006667 + + + + + 0.0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + + + 0.2 + 1 + 0.0 + + false + true + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 0 + 0.008 + 0 + + + 0 + 0 + 0.0 + 0 + + + 0 + 0 + 0.02 + 0 + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + + + config/boolean_network/intracellular_model.bnd + config/boolean_network/intracellular_model.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + + + + activation + 8.0 + 0 + + + + + inhibition + 4 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 0.02 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 6.0 + 15.0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 0.1 + 0 + 5 + + + + + activation + 1 + 0 + 50 + + + + + activation + 0.0012820513 + 0 + 0 + + + + + activation + 0.0 + 0 + + + + + + + 0.1 + 0.9 + 0 + 0.0 + 0 + 0.5 + 1.0 + + + + + + + 0.0046040516 + 0.0012820513 + 0.006667 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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.3 + + 0.4 + 0.01 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.001 + 0.4 + 0.0 + + + 0.2 + 1 + 0.2 + + true + true + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 0 + 0.005 + 0 + + + 0 + 0 + 0.0 + 0 + + + 0 + 0 + 0.02 + 0 + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + + + config/boolean_network/intracellular_model.bnd + config/boolean_network/intracellular_model.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + + + + activation + 8.0 + 0 + + + + + activation + 4 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 0.02 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 6.0 + 15.0 + 4 + + + + + activation + 1 + 0 + 50 + + + + + activation + 0.5 + 0 + 0 + + + + + activation + 0.0012820513 + 0.0 + 0 + + + + + activation + 0.8 + 0.0 + 500 + + + + + activation + 0.8 + 0.0 + 100 + + + + + activation + 1000000.0 + 0.0 + 0 + + + + + inhibition + 0.0 + 100 + + + + + activation + 0.0 + 0 + + + + + inhibition + 0.006667 + 0.0 + 0 + + + + + + + 0.1 + 0.9 + 0 + 0.0 + 0 + 0.0 + 1.0 + + + + + + + ./config + cells.csv + + + + + 0 + 30.0 + 30 + 20 + 0.5 + 0.5 + 0.5 + 0.5 + 0.05 + 0.002 + 0.75 + 0.0 + 20 + 15 + 8.413 + 1.3 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D_cluster_migration.xml b/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D_cluster_migration.xml new file mode 100644 index 000000000..adbf23a8c --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D_cluster_migration.xml @@ -0,0 +1,658 @@ + + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 2880.0 + min + micron + 0.01 + 0.1 + 6 + + + + 10 + + + + output + + 10 + true + + + 10 + true + + false + true + + + ecm + 0.0 + 1.0 + + + + false + + + + + false + true + false + + + + + + 60000.0 + 0.0005 + + 38.0 + 38.0 + + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + + + + + 0.0 + 0.0 + + 0.5 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + 0.5 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + true + true + + ./config/initial.mat + + + ./config/dirichlet.mat + + + + + + + + + + 4.60405e-3 + 0.0 + 6.66666e-3 + + + + + 0.0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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.6 + + + 1.8 + 15.12 + + 0.1 + 1.0 + 0.0 + + + 0.0 + 1 + 0.0 + + false + true + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 0 + 0.008 + 0 + + + 0 + 0 + 0.0 + 0 + + + 0 + 0 + 0.02 + 0 + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + + + config/boolean_network/intracellular_model.bnd + config/boolean_network/intracellular_model.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + + + + activation + 8.0 + 0 + + + + + activation + 4 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 0.02 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 6.0 + 15.0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 0.1 + 0 + 5 + + + + + activation + 1 + 0 + 50 + + + + + activation + 0.5 + 0 + 0 + + + + + activation + 0.0012820513 + 0 + 0 + + + + + + + 0.1 + 0.9 + 0 + 0.0 + 0 + 0.5 + 1.0 + + + + + + + 4.60405e-3 + 0.0 + 6.66666e-3 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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.3 + + 0.4 + 0.01 + + + 1.8 + 15.12 + + 0.1 + 0.4 + 0.0 + + + 0.4 + 1 + 0.2 + + true + true + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 0 + 0.005 + 0 + + + 0 + 0 + 0.0 + 0 + + + 0 + 0 + 0.02 + 0 + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + + + config/boolean_network/intracellular_model.bnd + config/boolean_network/intracellular_model.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + + + + activation + 8.0 + 0 + + + + + activation + 4 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 0.02 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 6.0 + 15.0 + 4 + + + + + activation + 1 + 0 + 50 + + + + + activation + 0.5 + 0 + 0 + + + + + activation + 0.0012820513 + 0.0 + 0 + + + + + activation + 0.8 + 0.4 + 50 + + + + + activation + 0.8 + 0.0 + 50 + + + + + activation + 1 + 0.0 + 50 + + + + + activation + 1000000.0 + 0.0 + 0 + + + + + inhibition + 0.0 + 0.001 + 100 + + + + + inhibition + 0.006667 + 0.0 + 0 + + + + + + + 0.1 + 0.9 + 0 + 0.0 + 0 + 0.0 + 1.0 + + + + + + + ./config + cells.csv + + + + + 0 + 30.0 + 30 + 20 + 0.5 + 0.5 + 0.5 + 0.5 + 0.05 + 0.002 + 0.75 + 0.0 + 20 + 10 + 8.413 + 1.3 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D_p63_ki.xml b/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D_p63_ki.xml new file mode 100644 index 000000000..9bca29ac0 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D_p63_ki.xml @@ -0,0 +1,667 @@ + + + -300 + 300 + -300 + 300 + -10 + 10 + 20 + 20 + 20 + true + + + + 5000 + min + micron + + 0.01 + 0.1 + 6 + + + + 10 + + + + output + + + 10 + false + + + + 30 + true + + false + true + + + ecm + 0.0 + 1.0 + viridis + + + + + false + + + + + false + false + + + + + + 6000.0 + .1 + + 38.0 + 38.0 + + + + + 0.0 + 0.0 + + 0.0 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + 0.0 + 0.0 + + 0.0 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + 0.0 + 0.0 + + 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.006666667 + + + + + + 0.0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 0.8 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + + 0.0 + 1 + 0.0 + + true + true + + + + + + 0 + 0 + 0.0 + 0 + + + 0 + 0 + 0.002 + 0 + + + 0 + 0 + 10 + 0 + + + + + + + config/boolean_network/intracellular_model.bnd + config/boolean_network/intracellular_model.cfg + + 10.0 + 0.2 + 60.0 + + + 1 + + + + + + activation + 5.0 + 0 + + + + + activation + 1.0 + 0 + + + + + activation + 0.3 + 0 + + + + + activation + 0.05 + 0 + + + + + activation + 0.02 + 0 + + + + + activation + 0.5 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1 + 0 + 5 + + + + + activation + 0 + 1 + 5 + + + + + activation + 1 + 0 + 10 + + + + + activation + 1 + 0 + 0 + + + + + activation + 1 + 0 + 20 + + + + + + + 0.1 + 0.9 + 0 + 0.0 + 0 + 0.5 + 1.0 + + + + + + + + + + + 1e30 + + 0.006666667 + + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 0.0 + 0.2 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + + 0.5 + 1 + 0.5 + + true + true + + false + oxygen + 1 + + + + + + + 0 + 0 + 0.0 + 0 + + + 0 + 0 + 0.002 + 0 + + + 0 + 0 + 10 + 0 + + + + + + + config/boolean_network/intracellular_model.bnd + config/boolean_network/intracellular_model.cfg + + 10.0 + 0.2 + 60.0 + + + 1 + + + + + + activation + 5.0 + 0 + + + + + activation + 1.0 + 0 + + + + + activation + 0.3 + 0 + + + + + activation + 0.05 + + + + + activation + 0.02 + 0 + + + + + activation + 0.3 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1 + 0.5 + 1 + + + + + activation + 0.85 + 0.5 + 1 + + + + + activation + 5 + 0 + 1 + + + + + activation + 1 + 0.5 + 1 + + + + + inhibition + 1 + 0 + 50 + + + + + activation + 0 + 1 + 20 + + + + + activation + 1 + 0 + 5 + + + + + activation + 1 + 0 + 0 + + + + + activation + 0.05 + 0 + 20 + + + + + + + 0.1 + 0.9 + 0 + 0.0 + 0 + 0.0 + 1.0 + + + + + + + ./config + cells.csv + + + + + 0 + 30.0 + + + 30 + 20 + 0.0 + 0.0 + 0.5 + 0.5 + 0.05 + 0.002 + 0.75 + 1 + 2 + 15 + 0.6 + 0.003 + + 0.85 + 0.8 + 1 + 0.1 + 0.8 + 8.413 + 1.3 + + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D_single_cell_migration.xml b/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D_single_cell_migration.xml new file mode 100644 index 000000000..ffb7a390d --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D_single_cell_migration.xml @@ -0,0 +1,697 @@ + + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 2880.0 + min + micron + 0.01 + 0.1 + 6 + + + + 10 + + + + output + + 10 + true + + + 10 + true + + false + true + + + ecm + 0.0 + 1.0 + viridis + + + + false + + + + + false + true + false + + + + + + 60000.0 + 0.0005 + + 38.0 + 38.0 + + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + + + + + 0.0 + 0.0 + + 0.5 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + 0.5 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + 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.0046040516 + 0.0012820513 + 0.006667 + + + + + 0.0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + + 0.1 + 1.0 + 0.0 + + + 0.0 + 1 + 0.0 + + true + true + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 0 + 0.008 + 0 + + + 0 + 0 + 0.0 + 0 + + + 0 + 0 + 0.02 + 0 + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + + + config/boolean_network/intracellular_model.bnd + config/boolean_network/intracellular_model.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + + + + activation + 8.0 + 0 + + + + + inhibition + 4 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 0.02 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 6.0 + 15.0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 0.1 + 0 + 5 + + + + + activation + 1 + 0 + 50 + + + + + activation + 0.5 + 0 + 0 + + + + + activation + 0.0012820513 + 0 + 0 + + + + + inhibition + 0.0 + 0.2 + 0 + + + + + + + 0.1 + 0.9 + 0 + 0.0 + 0 + 0.5 + 1.0 + + + + + + + 0.0046040516 + 0.0012820513 + 0.006667 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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.3 + + 0.4 + 0.01 + + + 1.8 + 15.12 + + 0.0001 + 0.4 + 0.0 + + + 0.2 + 1 + 0.0 + + true + true + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 0 + 0.005 + 0 + + + 0 + 0 + 0.0 + 0 + + + 0 + 0 + 0.02 + 0 + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + + + config/boolean_network/intracellular_model.bnd + config/boolean_network/intracellular_model.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + + + + activation + 8.0 + 0 + + + + + activation + 4 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 0.02 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 6.0 + 15.0 + 4 + + + + + activation + 1 + 0 + 50 + + + + + activation + 0.5 + 0 + 0 + + + + + activation + 0.0012820513 + 0.0 + 0 + + + + + activation + 0.8 + 0.2 + 100 + + + + + activation + 0.8 + 0.2 + 100 + + + + + activation + 1 + 0.0 + 50 + + + + + activation + 1000000.0 + 0.0 + 0 + + + + + inhibition + 0.0 + 0.001 + 100 + + + + + inhibition + 0.006667 + 0.0 + 0 + + + + + + + 0.1 + 0.9 + 0 + 0.0 + 0 + 0.0 + 1.0 + + + + + + + ./config + cells.csv + + + + + 0 + 30.0 + 30 + 20 + 0.5 + 0.5 + 0.5 + 0.5 + 0.05 + 0.002 + 0.75 + 0.0 + 20 + 10 + 8.413 + 1.3 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D_trail_migration.xml b/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D_trail_migration.xml new file mode 100644 index 000000000..37077adb0 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_2D_trail_migration.xml @@ -0,0 +1,690 @@ + + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 2880.0 + min + micron + 0.01 + 0.1 + 6 + + + + 10 + + + + output + + 10 + true + + + 10 + true + + false + true + + + ecm + 0.0 + 1.0 + viridis + + + + false + + + + + false + true + false + + + + + + 60000.0 + 0.0005 + + 38.0 + 38.0 + + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + + + + + 0.0 + 0.0 + + 0.5 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + 0.5 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + 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.0046040516 + 0.0012820513 + 0.006667 + + + + + 0.0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + + + 0.2 + 1 + 0.0 + + false + true + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 0 + 0.008 + 0 + + + 0 + 0 + 0.0 + 0 + + + 0 + 0 + 0.02 + 0 + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + + + config/boolean_network/intracellular_model.bnd + config/boolean_network/intracellular_model.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + + + + activation + 8.0 + 0 + + + + + inhibition + 4 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 0.02 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 6.0 + 15.0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 0.1 + 0 + 5 + + + + + activation + 1 + 0 + 50 + + + + + activation + 0.0012820513 + 0 + 0 + + + + + activation + 0.0 + 0 + + + + + + + 0.1 + 0.9 + 0 + 0.0 + 0 + 0.5 + 1.0 + + + + + + + 0.0046040516 + 0.0012820513 + 0.006667 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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.3 + + 0.4 + 0.01 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.001 + 0.4 + 0.0 + + + 0.2 + 1 + 0.2 + + true + true + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 0 + 0.005 + 0 + + + 0 + 0 + 0.0 + 0 + + + 0 + 0 + 0.02 + 0 + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + + + config/boolean_network/intracellular_model.bnd + config/boolean_network/intracellular_model.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + + + + activation + 8.0 + 0 + + + + + activation + 4 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 0.02 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 6.0 + 15.0 + 4 + + + + + activation + 1 + 0 + 50 + + + + + activation + 0.5 + 0 + 0 + + + + + activation + 0.0012820513 + 0.0 + 0 + + + + + activation + 0.8 + 0.0 + 500 + + + + + activation + 0.8 + 0.0 + 100 + + + + + activation + 1000000.0 + 0.0 + 0 + + + + + inhibition + 0.0 + 100 + + + + + activation + 0.0 + 0 + + + + + inhibition + 0.006667 + 0.0 + 0 + + + + + + + 0.1 + 0.9 + 0 + 0.0 + 0 + 0.0 + 1.0 + + + + + + + ./config + cells.csv + + + + + 0 + 30.0 + 30 + 20 + 0.5 + 0.5 + 0.5 + 0.5 + 0.05 + 0.002 + 0.75 + 0.0 + 20 + 15 + 8.413 + 1.3 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_3D.xml b/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_3D.xml new file mode 100644 index 000000000..5daf2ad0b --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/config/PhysiCell_settings_3D.xml @@ -0,0 +1,696 @@ + + + + -500 + 500 + -500 + 500 + -500 + 500 + 20 + 20 + 20 + false + + + + 2880.0 + min + micron + 0.01 + 0.1 + 6 + + + + 10 + + + + output + + 10 + true + + + 10 + true + + false + true + + + ecm + 0.0 + 1.0 + viridis + + + + false + + + + + false + true + false + + + + + + 60000.0 + 0.0005 + + 38.0 + 38.0 + + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + 38.0 + + + + + 0.0 + 0.0 + + 0.5 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + 0.5 + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + 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.0046040516 + 0.0012820513 + 0.006667 + + + + + 0.0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + + + 0.2 + 1 + 0.0 + + false + false + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 0 + 0.008 + 0 + + + 0 + 0 + 0.0 + 0 + + + 0 + 0 + 0.02 + 0 + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + + + config/boolean_network/intracellular_model.bnd + config/boolean_network/intracellular_model.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + 0 + + + + + + activation + 8.0 + 0 + + + + + inhibition + 4 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 0.02 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 6.0 + 15.0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 0.1 + 0 + 5 + + + + + activation + 1 + 0 + 50 + + + + + activation + 0.0012820513 + 0 + 0 + + + + + activation + 0.0 + 0 + + + + + + + 0.1 + 0.9 + 0 + 0.0 + 0 + 0.5 + 1.0 + + + + + + + 0.0046040516 + 0.0012820513 + 0.006667 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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.3 + + 0.5 + 0.01 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.1 + 0.5 + 0.0 + + + 0.2 + 1 + 0.2 + + true + false + + false + oxygen + 1 + + + false + false + + 0.0 + 0.0 + 0.0 + 0.0 + + + + + + + 0 + 0 + 0.008 + 0 + + + 0 + 0 + 0.0 + 0 + + + 0 + 0 + 0.02 + 0 + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + + + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + + + + + 0.0 + 0.0 + + + + config/boolean_network/intracellular_model.bnd + config/boolean_network/intracellular_model.cfg + + 6.0 + 0.0 + 10.0 + 0.0 + + + 0 + + + + + + activation + 8.0 + 0 + + + + + activation + 4 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 0.02 + 0 + + + + + activation + 9.0 + 0 + + + + + activation + 6.0 + 15.0 + 4 + + + + + activation + 1 + 0 + 50 + + + + + activation + 0.5 + 0 + 0 + + + + + activation + 0.0012820513 + 0.0 + 0 + + + + + activation + 0.8 + 0.0 + 500 + + + + + activation + 0.8 + 0.0 + 100 + + + + + activation + 1000000.0 + 0.0 + 0 + + + + + inhibition + 0.0 + 100 + + + + + activation + 0.0 + 0 + + + + + inhibition + 0.006667 + 0.0 + 0 + + + + + + + 0.1 + 0.9 + 0 + 0.0 + 0 + 0.0 + 1.0 + + + + + + + ./config + cells.csv + + + + + 0 + 30.0 + 30 + 20 + 0.5 + 0.5 + 1 + 1 + 0.05 + 0.002 + 0.75 + 0.0 + 10 + 10 + 8.413 + 1.3 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/cancer_invasion/config/boolean_network/intracellular_model.bnd b/sample_projects_intracellular/boolean/cancer_invasion/config/boolean_network/intracellular_model.bnd new file mode 100755 index 000000000..c381c7ee6 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/config/boolean_network/intracellular_model.bnd @@ -0,0 +1,306 @@ +// 1) "The Hippo Pathway, YAP/TAZ, and the Plasma Membrane" Rausch, Hansen +// 2) "Nuclear FAK promotes cell proliferation and survival through FERM-enhanced p53 degradation" +// 3) "Hypoxia-inducible factor 1α promotes primary tumor growth and tumor-initiating cell activity in breast cancer" + +Node Pressure { + logic = (Pressure); + rate_up = @logic ? $u_Pressure : 0.0; + rate_down = @logic ? 0.0 : $d_Pressure; +} + +Node Oxy { + logic = (Oxy); + rate_up = @logic ? $u_Oxy : 0.0; + rate_down = @logic ? 0.0 : $d_Oxy; +} + +Node HIF1A { + logic = (!Oxy); + rate_up = @logic ? $u_HIF1A : 0.0; + rate_down = @logic ? 0.0 : $d_HIF1A; +} + +// 1) 2) +Node FAK { + logic = (ECM | (SRC)) & !p53; // FAK is also activated by changes in stiffness in the ECM + rate_up = @logic ? $u_FAK : 0.0; + rate_down = @logic ? 0.0 : $d_FAK; +} + +// 1) +Node YAP1 { + logic = ((!AKT1 | ! AKT2) & SRC); // AKT1, AKT2 interactions come from signor database + rate_up = @logic ? $u_YAP1 : 0.0; + rate_down = @logic ? 0.0 : $d_YAP1; +} + +// Directed interactions from Signor/Adhesome +//Node RHOA { + //logic = (! RAC1 | ! SRC) & TGFbetaR; + //rate_up = @logic ? $u_RHOA : 0.0; + //rate_down = @logic ? 0.0 : $d_RHOA; +//} + +// Directed interactions from Signor/Adhesome + fak inhibites small gtpases that inhibites RAC and CDC42 activities, this is translated in FAK activates RAC +Node RAC1 { + logic = ( SRC | FAK) & !(AKT1 | AKT2 ); + rate_up = @logic ? $u_RAC1 : 0.0; + rate_down = @logic ? 0.0 : $d_RAC1; +} + +// Cell can't move in presence of neighbor and once formed solid cell-cell junctions +Node Cell_freeze { + logic = (Neigh & !CDH2 & CDH1); + rate_up = @logic ? $u_Cell_freeze : 0.0; + rate_down = @logic ? 0.0 : $d_Cell_freeze; +} + +Node Cell_growth { + logic = ((ERK & !p21) | (AKT1 & AKT2 & PIK3CA)) & !(HIF1A | Pressure); // Tumor in hypoxia condition has more aggressive phenotype + rate_up = @logic ? $u_Cell_growth : 0.0; + rate_down = @logic ? 0.0 : $d_Cell_growth; +} + +Node PIK3CA { + logic = (GF | RAC1); + rate_up = @logic ? $u_PIK3CA : 0.0; + rate_down = @logic ? 0.0 : $d_PIK3CA; +} + +// Cell develop adhesion at CDH2 activation (which means CDH1 OFF and EMT ON), when in contact with the ECM +Node ECM_adh { + logic = (NICD & !CDH1 & SMAD) | RAC1; + rate_up = @logic ? $u_ECM_adh : 0.0; + rate_down = @logic ? 0.0 : $d_ECM_adh; +} + +Node ECM_degrad { + logic = (MMPs); + rate_up = @logic ? $u_ECM_degrad : 0.0; + rate_down = @logic ? 0.0 : $d_ECM_degrad; +} + +// MMP activation requires physical contat with the ECM and EMT activation + p63 comes from Chavrier's experiments + +Node MMPs { + logic = ( MMPs & (((NICD & SMAD)| RAC1) & !p73) ) | p63 ; + rate_up = @logic ? $u_MMPs : 0.0; + rate_down = @logic ? 0.0 : $d_MMPs; +} + +Node optoSRC { + logic = (optoSRC); + rate_up = @logic ? $u_optoSRC : 0.0; + rate_down = @logic ? 0.0 : $d_optoSRC; +} + +// Directed interactions from Signor Adhesome +Node SRC { + logic = FAK | optoSRC | (FAK & optoSRC); + rate_up = @logic ? $u_SRC : 0.0; + rate_down = @logic ? 0.0 : $d_SRC; +} +Node Neigh { + logic = (Neigh); + rate_up = @logic ? $u_Neigh : 0.0; + rate_down = @logic ? 0.0 : $d_Neigh; +} + +Node NICD { + logic = (!p73 & !p53 & !miR34 & !miR200 & (ECM | FAK)); + rate_up = @logic ? $u_NICD : 0.0; + rate_down = @logic ? 0.0 : $d_NICD; +} + +Node CTNNB1 { + logic = (!DKK1 & !p53 & !AKT1 & !p63 & !miR34 & !miR200 & !CDH1 & CDH2 & !SRC); + rate_up = @logic ? $u_CTNNB1 : 0.0; + rate_down = @logic ? 0.0 : $d_CTNNB1; +} + +Node DKK1 { + logic = (!NICD & CTNNB1) | (NICD); + rate_up = @logic ? $u_DKK1 : 0.0; + rate_down = @logic ? 0.0 : $d_DKK1; +} + +Node AKT2 { + logic = TWIST1 & (TGFbeta | GF | CDH2) & !(miR203 | miR34 | p53); + rate_up = @logic ? $u_AKT2 : 0.0; + rate_down = @logic ? 0.0 : $d_AKT2; +} + +Node ZEB1 { + logic = ((TWIST1 & SNAI1) | CTNNB1 | SNAI2 | NICD) & ! miR200; + rate_up = @logic ? $u_ZEB1 : 0.0; + rate_down = @logic ? 0.0 : $d_ZEB1; +} + +Node ZEB2 { + logic = (SNAI1 | (SNAI2 & TWIST1) | NICD) & ! miR200 & ! miR203; + rate_up = @logic ? $u_ZEB2 : 0.0; + rate_down = @logic ? 0.0 : $d_ZEB2; +} + +Node SNAI1 { + logic = (NICD | TWIST1) & ! miR203 & ! miR34 & ! p53 & ! CTNNB1; + rate_up = @logic ? $u_SNAI1 : 0.0; + rate_down = @logic ? 0.0 : $d_SNAI1; +} + +Node p73 { + logic = (!AKT2 & !ZEB1 & !p53 & !AKT1 & DNAdamage & !YAP1); + rate_up = @logic ? $u_p73 : 0.0; + rate_down = @logic ? 0.0 : $d_p73; +} + +Node p53 { + logic = (DNAdamage | CTNNB1 | NICD | miR34) & ! SNAI2 & ! p73 & ! AKT1 & ! AKT2; + rate_up = @logic ? $u_p53 : 0.0; + rate_down = @logic ? 0.0 : $d_p53; +} + +Node AKT1 { + logic = (CTNNB1 & (NICD | TGFbetaR | GF | CDH2) & ! p53 & ! miR34 & ! CDH1); + rate_up = @logic ? $u_AKT1 : 0.0; + rate_down = @logic ? 0.0 : $d_AKT1; +} + +Node p63 { + logic = (!AKT2 & !p53 & !AKT1 & DNAdamage & !miR203); + rate_up = @logic ? $u_p63 : 0.0; + rate_down = @logic ? 0.0 : $d_p63; +} + +Node miR34 { + logic = !(SNAI1 | ZEB1 | ZEB2) & (p53 | p73) & AKT2 & ! p63 & ! AKT1; + rate_up = @logic ? $u_miR34 : 0.0; + rate_down = @logic ? 0.0 : $d_miR34; +} + +Node SNAI2 { + logic = (TWIST1 | CTNNB1 | NICD) & ! miR200 & ! p53 & ! miR203; + rate_up = @logic ? $u_SNAI2 : 0.0; + rate_down = @logic ? 0.0 : $d_SNAI2; +} + +Node DNAdamage { + logic = (DNAdamage); + rate_up = @logic ? $u_DNAdamage : 0.0; + rate_down = @logic ? 0.0 : $d_DNAdamage; +} + +Node miR200 { + logic = (p63 | p53 | p73) & !(AKT2 | SNAI1 | SNAI2 | ZEB1 | ZEB2); + rate_up = @logic ? $u_miR200 : 0.0; + rate_down = @logic ? 0.0 : $d_miR200; +} + +Node TWIST1 { + logic = CTNNB1 | NICD | SNAI1; + rate_up = @logic ? $u_TWIST1 : 0.0; + rate_down = @logic ? 0.0 : $d_TWIST1; +} + +//E-Cadherin --> accroding to Olivier, SRC disrupt Ecadh and fortifies the production of VIM +Node CDH1 { + logic = (!AKT2 & !ZEB1 & !ZEB2 & !SNAI1 & !SNAI2 & !TWIST1 & !SRC & Neigh); + rate_up = @logic ? $u_CDH1 : 0.0; + rate_down = @logic ? 0.0 : $d_CDH1; +} + +//N-Cadherin +Node CDH2 { + logic = (TWIST1 | SRC); + rate_up = @logic ? $u_CDH2 : 0.0; + rate_down = @logic ? 0.0 : $d_CDH2; +} + +Node TGFbeta { + logic = (TGFbeta); + rate_up = @logic ? $u_TGFbeta : 0.0; + rate_down = @logic ? 0.0 : $d_TGFbeta; +} + +Node TGFbetaR { + logic = (NICD & !CTNNB1 & TGFbeta); + rate_up = @logic ? $u_TGFbetaR : 0.0; + rate_down = @logic ? 0.0 : $d_TGFbetaR; +} + +Node GF { + logic = GF; + rate_up = @logic ? $u_GF : 0.0; + rate_down = @logic ? 0.0 : $d_GF; +} + +Node miR203 { + logic = (!ZEB1 & !ZEB2 & !SNAI1 & p53); + rate_up = @logic ? $u_miR203 : 0.0; + rate_down = @logic ? 0.0 : $d_miR203; +} + + +// "Src-mediated phosphorylation of FAK at Tyr-925creates a SH2 binding site for the Grb2 adapter protein and has been connected to the activation of the extracellular signal regulated (ERK)/mitogen-activated protein (MAP) kinase pathway" from Christof R. Hauck et Al. +Node ERK { + logic = ((SMAD | CDH2 | GF | NICD) & !AKT1); + rate_up = @logic ? $u_ERK : 0.0; + rate_down = @logic ? 0.0 : $d_ERK; +} + +// added yap1, why? 2 reasons: first, from interaction found on signaLink3 and also on Selvaggio et al. +Node SMAD { + logic = (!miR200 | !miR203) & (TGFbetaR | YAP1); + rate_up = @logic ? $u_SMAD : 0.0; + rate_down = @logic ? 0.0 : $d_SMAD; +} + +Node p21 { + logic = ((SMAD & NICD) | p63 | p53 | p73 | AKT2) & !(AKT1 | ERK); + rate_up = @logic ? $u_p21 : 0.0; + rate_down = @logic ? 0.0 : $d_p21; +} + +Node CellCycleArrest { + logic = (miR203 | miR200 | miR34 | ZEB2 | p21) & !AKT1; + rate_up = @logic ? $u_CellCycleArrest : 0.0; + rate_down = @logic ? 0.0 : $d_CellCycleArrest; +} + +Node VIM { + logic = CTNNB1 | ZEB2 | SRC; + rate_up = @logic ? $u_VIM : 0.0; + rate_down = @logic ? 0.0 : $d_VIM; +} + +Node EMT { + logic = (!CDH1 & CDH2) | EMT & (!CDH1 & CDH2) ; + rate_up = @logic ? $u_EMT : 0.0; + rate_down = @logic ? 0.0 : $d_EMT; +} + +Node Migration { + logic = (AKT2 & !AKT1 & !miR200 & ERK & VIM & EMT & ((CDH2 & SMAD) | (CTNNB1)) & !p63); + rate_up = @logic ? $u_Migration : 0.0; + rate_down = @logic ? 0.0 : $d_Migration; +} + +Node Metastasis { + logic = (Migration); + rate_up = @logic ? $u_Metastasis : 0.0; + rate_down = @logic ? 0.0 : $d_Metastasis; +} + +Node ECM { + logic = (ECM); + rate_up = @logic ? $u_ECM : 0.0; + rate_down = @logic ? 0.0 : $d_ECM; +} + +Node Apoptosis { + logic = (p53 | p63 | p73 | miR200 | miR34) & ! ZEB2 & ! AKT1 & ! ERK; + rate_up = @logic ? $u_Apoptosis : 0.0; + rate_down = @logic ? 0.0 : $d_Apoptosis; +} + + diff --git a/sample_projects_intracellular/boolean/cancer_invasion/config/boolean_network/intracellular_model.cfg b/sample_projects_intracellular/boolean/cancer_invasion/config/boolean_network/intracellular_model.cfg new file mode 100755 index 000000000..ea1872b87 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/config/boolean_network/intracellular_model.cfg @@ -0,0 +1,204 @@ +$u_Pressure = 1; +$d_Pressure = 1; +$u_FAK = 1; +$d_FAK = 1; +$u_YAP1 = 1; +$d_YAP1 = 1; +$u_RAC1 = 1; +$d_RAC1 = 1; +$u_Cell_freeze = 1; +$d_Cell_freeze = 1; +$d_optoSRC = 1; +$u_optoSRC = 1; +$d_SRC = 1; +$u_SRC = 1; +$u_Neigh = 1; +$d_Neigh = 1; +$u_MMPs = 10; +$d_MMPs = 0.1; +$u_ECM_degrad = 1; +$d_ECM_degrad = 1; +$u_ECM_adh = 1; +$d_ECM_adh = 1; +$u_PIK3CA = 1; +$d_PIK3CA = 1; +$u_Cell_growth = 1; +$d_Cell_growth = 1; +$u_HIF1A = 1; +$d_HIF1A = 1; +$u_Oxy = 1; +$d_Oxy = 1; +$u_NICD = 1; +$d_NICD = 1; +$u_CTNNB1 = 1; +$d_CTNNB1 = 1; +$u_DKK1 = 1; +$d_DKK1 = 1; +$u_AKT2 = 0.01; +$d_AKT2 = 1; +$u_ZEB1 = 1; +$d_ZEB1 = 1; +$u_ZEB2 = 1; +$d_ZEB2 = 1; +$u_SNAI1 = 1; +$d_SNAI1 = 1; +$u_p73 = 1; +$d_p73 = 1; +$u_p53 = 0.1; +$d_p53 = 1; +$u_AKT1 = 1; +$d_AKT1 = 1; +$u_p63 = 100; +$d_p63 = 10; +$u_miR34 = 1; +$d_miR34 = 1; +$u_SNAI2 = 1; +$d_SNAI2 = 1; +$u_DNAdamage = 1; +$d_DNAdamage = 1; +$u_miR200 = 1; +$d_miR200 = 1; +$u_TWIST1 = 1; +$d_TWIST1 = 1; +$u_CDH1 = 1; +$d_CDH1 = 1; +$u_CDH2 = 1; +$d_CDH2 = 1; +$u_TGFbeta = 1; +$d_TGFbeta = 1; +$u_TGFbetaR = 1; +$d_TGFbetaR = 1; +$u_GF = 1; +$d_GF = 1; +$u_miR203 = 0.1; +$d_miR203 = 1; +$u_ERK = 1; +$d_ERK = 1; +$u_SMAD = 1; +$d_SMAD = 1; +$u_p21 = 1; +$d_p21 = 1; +$u_CellCycleArrest = 1; +$d_CellCycleArrest = 1; +$u_VIM = 1; +$d_VIM = 1; +$u_EMT = 1; +$d_EMT = 1; +$u_Migration = 1; +$d_Migration = 1; +$u_Metastasis = 1; +$d_Metastasis = 1; +$u_ECM = 1; +$d_ECM = 1; +$u_Apoptosis = 1; +$d_Apoptosis = 1; + +Pressure.istate = 0.0; +optoSRC.istate = 0.0; +FAK.istate = 0.0; +YAP1.istate = 0.0; +RAC1.istate = 0.0; +Cell_freeze.istate = 0.0; +SRC.istate = 0.0; +MMPs.istate = 0.0; +ECM_degrad.istate = 0.0; +ECM_adh.istate = 0.0; +PIK3CA.istate = 0.0; +Cell_growth.istate = 0.0; +HIF1A.istate = 0.0; +Oxy.istate = 1.0; +Neigh.istate = 1.0; +NICD.istate = 0.0; +CTNNB1.istate= 0.0; +DKK1.istate = 0.0; +AKT2.istate = 0.0; +ZEB1.istate = 0.0; +ZEB2.istate = 0.0; +SNAI1.istate = 0.0; +p73.istate = 0.0; +p53.istate = 0.0; +AKT1.istate = 0.0; +p63.istate = 0.0; +miR34.istate = 0.0; +SNAI2.istate = 0.0; +DNAdamage.istate = 0.0; +miR200.istate = 0.0; +TWIST1.istate = 0.0; +CDH1.istate = 0.0; +CDH2.istate = 0.0; +TGFbeta.istate = 1.0; +TGFbetaR.istate = 0.0; +GF.istate = 1.0; +miR203.istate = 0.0; +ERK.istate = 0.0; +SMAD.istate = 0.0; +p21.istate = 0.0; +CellCycleArrest.istate = 0.0; +VIM.istate = 0.0; +EMT.istate = 0.0; +Migration.istate = 0.0; +Metastasis.istate = 0.0; +ECM.istate = 0.0; +Apoptosis.istate = 0.0; + +Pressure.is_internal = 1; +optoSRC.is_internal = 0; +FAK.is_internal = 1; +YAP1.is_internal = 1; +RAC1.is_internal = 1; +Cell_freeze.is_internal = 0; +SRC.is_internal = 0; +MMPs.is_internal = 0; +ECM_degrad.is_internal = 0; +ECM_adh.is_internal = 0; +PIK3CA.is_internal = 1; +Cell_growth.is_internal = 0; +HIF1A.is_internal = 1; +Oxy.is_internal = 0; +Neigh.is_internal = 0; +NICD.is_internal = 0; +CTNNB1.is_internal= 0; +DKK1.is_internal = 1; +AKT2.is_internal = 0; +ZEB1.is_internal = 1; +ZEB2.is_internal = 1; +SNAI1.is_internal = 1; +p73.is_internal = 0; +p53.is_internal = 0; +AKT1.is_internal = 0; +p63.is_internal = 0; +miR34.is_internal = 0; +SNAI2.is_internal = 1; +DNAdamage.is_internal = 0; +miR200.is_internal = 0; +TWIST1.is_internal = 0; +CDH1.is_internal = 1; +CDH2.is_internal = 1; +TGFbeta.is_internal = 0; +TGFbetaR.is_internal = 1; +GF.is_internal = 0; +miR203.is_internal = 0; +ERK.is_internal = 0; +SMAD.is_internal = 0; +p21.is_internal = 1; +CellCycleArrest.is_internal = 0; +VIM.is_internal = 1; +EMT.is_internal = 0; +Migration.is_internal = 0; +Metastasis.is_internal = 0; +ECM.is_internal = 0; +Apoptosis.is_internal = 0; + + +discrete_time = 0; +use_physrandgen = FALSE; +seed_pseudorandom = 100; +sample_count = 1; + +max_time = 1; +time_tick = 0.01; + +thread_count = 10; + +statdist_traj_count = 100; +statdist_cluster_threshold = 0.9; diff --git a/sample_projects_intracellular/boolean/cancer_invasion/config/cells.csv b/sample_projects_intracellular/boolean/cancer_invasion/config/cells.csv new file mode 100644 index 000000000..3743d598b --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/config/cells.csv @@ -0,0 +1,124 @@ +x,y,z,type,volume,cycle entry,custom:GFP,custom:sample +-49.52373671227464,-85.42875790157267,0.0,epithelial +-32.69831561636619,-85.42875790157267,0.0,epithelial +-15.872894520457734,-85.42875790157267,0.0,epithelial +0.9525265754507188,-85.42875790157267,0.0,epithelial +17.777947671359172,-85.42875790157267,0.0,epithelial +34.603368767267625,-85.42875790157267,0.0,epithelial +51.428789863176064,-85.42875790157267,0.0,epithelial +-57.93644726022887,-70.85751580314533,0.0,epithelial +-41.111026164320414,-70.85751580314533,0.0,epithelial +-24.28560506841196,-70.85751580314533,0.0,epithelial +-7.460183972503506,-70.85751580314533,0.0,epithelial +9.365237123404947,-70.85751580314533,0.0,epithelial +26.1906582193134,-70.85751580314533,0.0,epithelial +43.01607931522185,-70.85751580314533,0.0,epithelial +59.84150041113029,-70.85751580314533,0.0,epithelial +-66.3491578081831,-56.286273704718,0.0,epithelial +-49.52373671227464,-56.286273704718,0.0,epithelial +-32.69831561636619,-56.286273704718,0.0,epithelial +-15.872894520457734,-56.286273704718,0.0,epithelial +0.9525265754507188,-56.286273704718,0.0,epithelial +17.777947671359172,-56.286273704718,0.0,epithelial +34.603368767267625,-56.286273704718,0.0,epithelial +51.428789863176064,-56.286273704718,0.0,epithelial +68.25421095908453,-56.286273704718,0.0,epithelial +-74.76186835613731,-41.715031606290665,0.0,epithelial +-57.93644726022887,-41.715031606290665,0.0,epithelial +-41.111026164320414,-41.715031606290665,0.0,epithelial +-24.28560506841196,-41.715031606290665,0.0,epithelial +-7.460183972503506,-41.715031606290665,0.0,epithelial +9.365237123404947,-41.715031606290665,0.0,epithelial +26.1906582193134,-41.715031606290665,0.0,epithelial +43.01607931522185,-41.715031606290665,0.0,epithelial +59.84150041113029,-41.715031606290665,0.0,epithelial +76.66692150703877,-41.715031606290665,0.0,epithelial +-83.17457890409155,-27.143789507863332,0.0,epithelial +-66.3491578081831,-27.143789507863332,0.0,epithelial +-49.52373671227464,-27.143789507863332,0.0,epithelial +-32.69831561636619,-27.143789507863332,0.0,epithelial +-15.872894520457734,-27.143789507863332,0.0,epithelial +0.9525265754507188,-27.143789507863332,0.0,epithelial +17.777947671359172,-27.143789507863332,0.0,epithelial +34.603368767267625,-27.143789507863332,0.0,epithelial +51.428789863176064,-27.143789507863332,0.0,epithelial +68.25421095908453,-27.143789507863332,0.0,epithelial +85.079632054993,-27.143789507863332,0.0,epithelial +-91.58728945204577,-12.572547409435998,0.0,epithelial +-74.76186835613731,-12.572547409435998,0.0,epithelial +-57.93644726022887,-12.572547409435998,0.0,epithelial +-41.111026164320414,-12.572547409435998,0.0,epithelial +-24.28560506841196,-12.572547409435998,0.0,epithelial +-7.460183972503506,-12.572547409435998,0.0,epithelial +9.365237123404947,-12.572547409435998,0.0,epithelial +26.1906582193134,-12.572547409435998,0.0,epithelial +43.01607931522185,-12.572547409435998,0.0,epithelial +59.84150041113029,-12.572547409435998,0.0,epithelial +76.66692150703877,-12.572547409435998,0.0,epithelial +93.49234260294723,-12.572547409435998,0.0,epithelial +-83.17457890409155,1.9986946889913355,0.0,epithelial +-66.3491578081831,1.9986946889913355,0.0,epithelial +-49.52373671227464,1.9986946889913355,0.0,epithelial +-32.69831561636619,1.9986946889913355,0.0,epithelial +-15.872894520457734,1.9986946889913355,0.0,epithelial +0.9525265754507188,1.9986946889913355,0.0,epithelial +17.777947671359172,1.9986946889913355,0.0,epithelial +34.603368767267625,1.9986946889913355,0.0,epithelial +51.428789863176064,1.9986946889913355,0.0,epithelial +68.25421095908453,1.9986946889913355,0.0,epithelial +85.079632054993,1.9986946889913355,0.0,epithelial +-91.58728945204577,16.56993678741867,0.0,epithelial +-74.76186835613731,16.56993678741867,0.0,epithelial +-57.93644726022887,16.56993678741867,0.0,epithelial +-41.111026164320414,16.56993678741867,0.0,epithelial +-24.28560506841196,16.56993678741867,0.0,epithelial +-7.460183972503506,16.56993678741867,0.0,epithelial +9.365237123404947,16.56993678741867,0.0,epithelial +26.1906582193134,16.56993678741867,0.0,epithelial +43.01607931522185,16.56993678741867,0.0,epithelial +59.84150041113029,16.56993678741867,0.0,epithelial +76.66692150703877,16.56993678741867,0.0,epithelial +93.49234260294723,16.56993678741867,0.0,epithelial +-83.17457890409155,31.14117888584599,0.0,epithelial +-66.3491578081831,31.14117888584599,0.0,epithelial +-49.52373671227464,31.14117888584599,0.0,epithelial +-32.69831561636619,31.14117888584599,0.0,epithelial +-15.872894520457734,31.14117888584599,0.0,epithelial +0.9525265754507188,31.14117888584599,0.0,epithelial +17.777947671359172,31.14117888584599,0.0,epithelial +34.603368767267625,31.14117888584599,0.0,epithelial +51.428789863176064,31.14117888584599,0.0,epithelial +68.25421095908453,31.14117888584599,0.0,epithelial +85.079632054993,31.14117888584599,0.0,epithelial +-74.76186835613731,45.712420984273336,0.0,epithelial +-57.93644726022887,45.712420984273336,0.0,epithelial +-41.111026164320414,45.712420984273336,0.0,epithelial +-24.28560506841196,45.712420984273336,0.0,epithelial +-7.460183972503506,45.712420984273336,0.0,epithelial +9.365237123404947,45.712420984273336,0.0,epithelial +26.1906582193134,45.712420984273336,0.0,epithelial +43.01607931522185,45.712420984273336,0.0,epithelial +59.84150041113029,45.712420984273336,0.0,epithelial +76.66692150703877,45.712420984273336,0.0,epithelial +-66.3491578081831,60.283663082700684,0.0,epithelial +-49.52373671227464,60.283663082700684,0.0,epithelial +-32.69831561636619,60.283663082700684,0.0,epithelial +-15.872894520457734,60.283663082700684,0.0,epithelial +0.9525265754507188,60.283663082700684,0.0,epithelial +17.777947671359172,60.283663082700684,0.0,epithelial +34.603368767267625,60.283663082700684,0.0,epithelial +51.428789863176064,60.283663082700684,0.0,epithelial +68.25421095908453,60.283663082700684,0.0,epithelial +-57.93644726022887,74.854905181128,0.0,epithelial +-41.111026164320414,74.854905181128,0.0,epithelial +-24.28560506841196,74.854905181128,0.0,epithelial +-7.460183972503506,74.854905181128,0.0,epithelial +9.365237123404947,74.854905181128,0.0,epithelial +26.1906582193134,74.854905181128,0.0,epithelial +43.01607931522185,74.854905181128,0.0,epithelial +59.84150041113029,74.854905181128,0.0,epithelial +-32.69831561636619,89.42614727955532,0.0,epithelial +-15.872894520457734,89.42614727955532,0.0,epithelial +0.9525265754507188,89.42614727955532,0.0,epithelial +17.777947671359172,89.42614727955532,0.0,epithelial +34.603368767267625,89.42614727955532,0.0,epithelial diff --git a/sample_projects_intracellular/boolean/cancer_invasion/custom_modules/custom.cpp b/sample_projects_intracellular/boolean/cancer_invasion/custom_modules/custom.cpp new file mode 100644 index 000000000..d36cd42f8 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/custom_modules/custom.cpp @@ -0,0 +1,401 @@ +/* +############################################################################### +# 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" + +void create_cell_types( void ) +{ + // set the random seed + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } + + /* + Put any modifications to default cell definition here if you + want to have "inherited" by other cell types. + + 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.update_migration_bias = NULL; + cell_defaults.functions.update_phenotype = NULL; // update_cell_and_death_parameters_O2_based; + 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; + + /* + This parses the cell definitions in the XML config file. + */ + + initialize_cell_definitions_from_pugixml(); + + /* + This builds the map of cell definitions and summarizes the setup. + */ + + build_cell_definitions_maps(); + + /* + This intializes cell signal and response dictionaries + */ + + setup_signal_behavior_dictionaries(); + + /* + Cell rule definitions + */ + + setup_cell_rules(); + + /* + Put any modifications to individual cell definitions here. + + 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( "epithelial"); + + 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; + + pCD = find_cell_definition( "mesenchymal"); + 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; +} + +void set_substrate_density(int density_index, double max, double min, double radius) +{ + std::cout << "SETTING SUBSTRATE --> " << density_index << std::endl; + // Inject given concentration on the extremities only + + std::cout << microenvironment.number_of_voxels() << "\n"; + + for (unsigned int n = 0; n < microenvironment.number_of_voxels(); n++) + { + auto current_voxel = microenvironment.voxels(n); + double t_norm = norm(current_voxel.center); + + if ((radius - t_norm) <= 0) + microenvironment.density_vector(n)[density_index] = current_value(min, max, uniform_random()); + } +} + +void setup_microenvironment( void ) +{ + // set domain parameters + + // put any custom code to set non-homogeneous initial conditions or + // extra Dirichlet nodes here. + + // initialize BioFVM + + initialize_microenvironment(); + + double ECM_min = parameters.doubles("density_ECM_min"); + double ECM_max = parameters.doubles("density_ECM_max"); + double tgfbeta_max = parameters.doubles("density_tgfbeta_max"); + double tgfbeta_min = parameters.doubles("density_tgfbeta_min"); + + if(ECM_max != ECM_min){ + int ecm_index = microenvironment.find_density_index("ecm"); + set_substrate_density(ecm_index, ECM_max, ECM_min); + } + if(tgfbeta_max != tgfbeta_min){ + int tgfbeta_index = microenvironment.find_density_index("TGFbeta"); + set_substrate_density(tgfbeta_index, tgfbeta_max, tgfbeta_min); + } + + return; +} + +void setup_tissue( void ) +{ + // place a cluster of tumor cells at the center + load_cells_from_pugixml(); + + // removing substrate in cell voxel + int ecm_index = BioFVM::microenvironment.find_density_index("ecm"); + int tgfbeta_index = BioFVM::microenvironment.find_density_index("tgfbeta"); + for( int i=0; i < (*all_cells).size(); i++ ) + { + Cell* pC = (*all_cells)[i]; + + int voxel_index = pC->get_current_voxel_index(); + microenvironment.density_vector(voxel_index)[ecm_index] = 0.0; + microenvironment.density_vector(voxel_index)[tgfbeta_index] = 0.0; + } +} + + +void phenotype_function( Cell* pCell, Phenotype& phenotype, double dt ) +{ return; } + +void custom_function( Cell* pCell, Phenotype& phenotype , double dt ) +{ + + pCell->custom_data["cell_contact"] = 0.0; + for( int j=0; j < pCell->nearby_interacting_cells().size(); j++ ) + { + Cell* pTest = pCell->nearby_interacting_cells()[j]; + contact_function(pCell, phenotype, pTest, pTest->phenotype, dt); + } + + for( int j=0; j < pCell->state.spring_attachments.size(); j++ ) + { + Cell* pTest = pCell->state.spring_attachments[j]; + contact_function(pCell, phenotype, pTest, pTest->phenotype, dt); + } + + // ADDING ECM PHYSICAL INTERACTION AND ADHESION + + pCell->custom_data["ecm_contact"] = 0.0; + pCell->custom_data["nucleus_deform"] = 0.0; + //std::cout << pCell->custom_data["nucleus_deform"] << std::endl; + + int ecm_index = BioFVM::microenvironment.find_density_index("ecm"); + if ( ecm_index >= 0 ){ + add_ecm_interaction( pCell, ecm_index, pCell->get_current_voxel_index() ); + //add_TGFbeta_interaction(pCell, pCell->get_current_mechanics_voxel_index()); + std::vector::iterator neighbor_voxel_index; + std::vector::iterator neighbor_voxel_index_end = + microenvironment.mesh.moore_connected_voxel_indices[pCell->get_current_voxel_index()].end(); + + for( neighbor_voxel_index = + microenvironment.mesh.moore_connected_voxel_indices[pCell->get_current_voxel_index()].begin(); + neighbor_voxel_index != neighbor_voxel_index_end; + ++neighbor_voxel_index ) + { + add_ecm_interaction( pCell, ecm_index, *neighbor_voxel_index ); + + } + + /* pCell->update_motility_vector(dt); + pCell->velocity += phenotype.motility.motility_vector; */ + } + + return; +} + +// This function is never called because I am not using "dynamic attachment" but I am using the "dynamic SPRING adhesion" +void contact_function( Cell* pMe, Phenotype& phenoMe , Cell* pOther, Phenotype& phenoOther , double dt ) +{ + + std::vector displacement = pOther->position; + displacement -= pMe->position; + double distance = norm( displacement ); + + double max_distance = pMe->phenotype.geometry.radius + + pOther->phenotype.geometry.radius; + max_distance *= pMe->phenotype.mechanics.relative_maximum_adhesion_distance; //parameters.doubles("max_interaction_factor"); + + //std::cout << max_distance << " - " << distance << "\n"; + + double interaction_distance = max_distance - distance; + + if (interaction_distance > 0){ + + double perc_distance = distance / pMe->phenotype.geometry.radius ; + pMe->custom_data["cell_contact"] += perc_distance; + } + else { + detach_cells_as_spring(pMe, pOther); + } + + return; +} + +void pre_update_intracellular(Cell* pCell, Phenotype& phenotype, double dt){ + return; +} + +void post_update_intracellular(Cell* pCell, Phenotype& phenotype, double dt){ + return; +} + +/* Calculate repulsion/adhesion between agent and ecm according to its local density */ +void add_ecm_interaction(Cell* pC, int index_ecm, int index_voxel ) +{ + // Check if there is ECM material in given voxel + //double dens2 = get_microenvironment()->density_vector(index_voxel)[index_ecm]; + double dens = pC->get_microenvironment()->nearest_density_vector(index_voxel)[index_ecm]; + double ecmrad = sqrt(3.0) * pC->get_microenvironment()->mesh.dx * 0.5; + // if voxel is "full", density is 1 + dens = std::min( dens, 1.0 ); + if ( dens > EPSILON ) + { + // Distance between agent center and ECM voxel center + pC->displacement = pC->position - microenvironment.mesh.voxels[index_voxel].center; + double distance = norm(pC->displacement); + // Make sure that the distance is not zero + distance = std::max(distance, EPSILON); + + double dd = pC->phenotype.geometry.radius + ecmrad; + double dnuc = pC->phenotype.geometry.nuclear_radius + ecmrad; + + double tmp_r = 0; + // Cell overlap with ECM node, add a repulsion term + if ( distance < dd ) + { + // repulsion stronger if nucleii overlap, see Macklin et al. 2012, 2.3.1 + if ( distance < dnuc ) + { + double M = 1.0; + double c = 1.0 - dnuc/dd; + c *= c; + c -= M; + tmp_r = c*distance/dnuc + M; + pC->custom_data["nucleus_deform"] += (dnuc-distance); + } + else + { + tmp_r = ( 1 - distance / dd ); + tmp_r *= tmp_r; + } + tmp_r *= dens * PhysiCell::parameters.doubles("cell_ecm_repulsion"); + } + + // Cell adherence to ECM through integrins + double max_interactive_distance = (PhysiCell::parameters.doubles("max_interaction_factor")*pC->phenotype.geometry.radius) + ecmrad; + if ( distance < max_interactive_distance ) + { + double temp_a = 1 - distance/max_interactive_distance; + temp_a *= temp_a; + /* \todo change dens with a maximal density ratio ? */ + + pC->custom_data["ecm_contact"] += dens * (max_interactive_distance-distance); + // temp_a *= dens * ( static_cast(this) )->integrinStrength(); + + double temp_integrins = get_integrin_strength( pC->custom_data["pintegrin"] ); + + temp_a *= dens * temp_integrins; + + tmp_r -= temp_a; + } + + ///////////////////////////////////////////////////////////////// + if(tmp_r==0) + return; + tmp_r/=distance; + + axpy( &pC->velocity , tmp_r , pC->displacement ); + } + +} + +void set_substrate_density(int density_index, double max, double min) +{ + std::cout << "SETTING SUBSTRATE \n"; + + std::cout << microenvironment.number_of_voxels() << "\n"; + #pragma omp parallel for + for (int n = 0; n < microenvironment.number_of_voxels(); n++) + { + auto current_voxel = microenvironment.voxels(n); + microenvironment.density_vector(n)[density_index] = current_value(min, max, uniform_random()); + } +} + + // FUNCTIONS TO PLOT CELLS + +std::string my_coloring_function_for_stroma( double concentration, double max_conc, double min_conc ) +{ + return paint_by_density_percentage( concentration, max_conc, min_conc); + +} diff --git a/sample_projects_intracellular/boolean/cancer_invasion/custom_modules/custom.h b/sample_projects_intracellular/boolean/cancer_invasion/custom_modules/custom.h new file mode 100644 index 000000000..ccc4e80e0 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/custom_modules/custom.h @@ -0,0 +1,104 @@ +/* +############################################################################### +# 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. # +# # +############################################################################### +*/ + +#include "../core/PhysiCell.h" +#include "../modules/PhysiCell_standard_modules.h" + +using namespace BioFVM; +using namespace PhysiCell; +#include "custom_main.h" + +// setup functions to help us along + +void create_cell_types( void ); +void setup_tissue( void ); + +// set up the BioFVM microenvironment +void setup_microenvironment( void ); + +// custom functions can go here + +void phenotype_function( Cell* pCell, Phenotype& phenotype, double dt ); +void custom_function( Cell* pCell, Phenotype& phenotype , double dt ); +void set_substrate_density(int density_index, double max, double min); + +/** \brief Get the current value of integrin strength */ +inline double get_integrin_strength( double percent ) +{ return current_value( PhysiCell::parameters.doubles("ecm_adhesion_min"), PhysiCell::parameters.doubles("ecm_adhesion_max"), percent ); }; + +/** \brief Get the current value of motility coefficient */ +inline double get_motility_amplitude( double percent ) +{ return current_value(PhysiCell::parameters.doubles("motility_amplitude_min"), PhysiCell::parameters.doubles("motility_amplitude_max"), percent ); }; + +void contact_function( Cell* pMe, Phenotype& phenoMe , Cell* pOther, Phenotype& phenoOther , double dt ); + +void add_ecm_interaction( Cell* pCell, int index_ecm, int index_voxel ); +void pre_update_intracellular(Cell* pCell, Phenotype& phenotype, double dt); +void post_update_intracellular(Cell* pCell, Phenotype& phenotype, double dt); + +std::string my_coloring_function_for_stroma( double concentration, double max_conc, double min_conc ); +void color_node(Cell* pCell); \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/cancer_invasion/custom_modules/custom_main.cpp b/sample_projects_intracellular/boolean/cancer_invasion/custom_modules/custom_main.cpp new file mode 100755 index 000000000..dfd8a9a68 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/custom_modules/custom_main.cpp @@ -0,0 +1,42 @@ +#include "custom_main.h" + +using namespace PhysiCell; + +/* Change the current value of the input coefficient, increase or decrease according to up value */ +double evolve_coef( int up, double coef, double dt ) +/**{ + // increase exponentially + if ( up ) + { + if ( (*coef) < EPSILON ) + (*coef) = EPSILON; + (*coef) = std::sqrt( (*coef) ); + (*coef) = (*coef) > 1 ? (1-EPSILON) : (*coef); + } + else + { + // decrease exponentially + if ( (*coef) >= 1 ) + (*coef) = 1 - EPSILON; + (*coef) *= (*coef); + (*coef) = (*coef) < 0 ? EPSILON : (*coef); + } +}*/ +{ + // if up, increase, else decrease + if ( !up ) + dt = -dt; + + (coef) += (coef) * (1 - coef) * dt/200.0 ; + + (coef) = (coef) >= 1 ? (1-EPSILON) : (coef); + (coef) = (coef) <= 0 ? (EPSILON) : (coef); + + return coef; +} + +double get_threshold( std::string field) +{ + double pth = PhysiCell::parameters.doubles(field+"_threshold"); + return pth; +} \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/cancer_invasion/custom_modules/custom_main.h b/sample_projects_intracellular/boolean/cancer_invasion/custom_modules/custom_main.h new file mode 100755 index 000000000..24db740f8 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/custom_modules/custom_main.h @@ -0,0 +1,19 @@ +#ifndef __custom_main_h__ +#define __custom_main_h__ + +#include "../core/PhysiCell.h" + +inline double current_value( double min, double max, double percent ) +{ return (min + (max-min) * percent); }; + +static const double EPSILON = std::numeric_limits::epsilon(); + +/** \brief Relative difference between two numbers */ +inline double relative_diff( double a, double b ) +{ if ( b < EPSILON ) return 0; return ( fabs(a-b)/b ); }; + + +/* Change the current value of the input coefficient, increase or decrease according to up value */ +double evolve_coef( int up, double coef, double dt ); +double get_threshold( std::string field); +#endif \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/cancer_invasion/main.cpp b/sample_projects_intracellular/boolean/cancer_invasion/main.cpp new file mode 100644 index 000000000..162ce4bc5 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/main.cpp @@ -0,0 +1,264 @@ +/* +############################################################################### +# 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. # +# # +############################################################################### +*/ + +#include +#include +#include +#include +#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" + +using namespace BioFVM; +using namespace PhysiCell; + +int main( int argc, char* argv[] ) +{ + // load and parse settings file(s) + + 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() ); + } + 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); + + // time setup + std::string time_units = "min"; + + /* Microenvironment setup */ + + setup_microenvironment(); // modify this in the custom code + + /* PhysiCell setup */ + + // set mechanics voxel size, and match the data structure to BioFVM + double mechanics_voxel_size = 30; + Cell_Container* cell_container = create_cell_container_for_microenvironment( microenvironment, mechanics_voxel_size ); + + /* Users typically start modifying here. START USERMODS */ + + create_cell_types(); + + setup_tissue(); + + /* Users typically stop modifying here. END USERMODS */ + + // set MultiCellDS save options + + set_save_biofvm_mesh_as_matlab( true ); + set_save_biofvm_data_as_matlab( true ); + set_save_biofvm_cell_data( true ); + set_save_biofvm_cell_data_as_custom_matlab( true ); + + // save a simulation snapshot + + char filename[1024]; + sprintf( filename , "%s/initial" , PhysiCell_settings.folder.c_str() ); + save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); + + // save a quick SVG cross section through z = 0, after setting its + // length bar to 200 microns + + PhysiCell_SVG_options.length_bar = 200; + + // for simplicity, set a pathology 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; + + sprintf( filename , "%s/initial.svg" , PhysiCell_settings.folder.c_str() ); + SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function, ECM_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); + + display_citations(); + + // set the performance timers + + BioFVM::RUNTIME_TIC(); + BioFVM::TIC(); + + std::ofstream report_file; + if( PhysiCell_settings.enable_legacy_saves == true ) + { + sprintf( filename , "%s/simulation_report.txt" , PhysiCell_settings.folder.c_str() ); + + report_file.open(filename); // create the data log file + report_file<<"simulated time\tnum cells\tnum division\tnum death\twall time"<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); + report_file.close(); + } + } + catch( const std::exception& e ) + { // reference to the base of a polymorphic object + std::cout << e.what(); // information from length_error printed + } + + // save a final simulation snapshot + + sprintf( filename , "%s/final" , PhysiCell_settings.folder.c_str() ); + save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); + + sprintf( filename , "%s/final.svg" , PhysiCell_settings.folder.c_str() ); + SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function, ECM_coloring_function); + + // timer + + std::cout << std::endl << "Total simulation runtime: " << std::endl; + BioFVM::display_stopwatch_value( std::cout , BioFVM::runtime_stopwatch_value() ); + + return 0; +} diff --git a/sample_projects_intracellular/boolean/cancer_invasion/scripts/PhysiBoSS_animate.pvsm b/sample_projects_intracellular/boolean/cancer_invasion/scripts/PhysiBoSS_animate.pvsm new file mode 100644 index 000000000..779efd91f --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/scripts/PhysiBoSS_animate.pvsm @@ -0,0 +1,20212 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sample_projects_intracellular/boolean/cancer_invasion/scripts/params/cell_phases_dict.json b/sample_projects_intracellular/boolean/cancer_invasion/scripts/params/cell_phases_dict.json new file mode 100644 index 000000000..cf11a01b2 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/scripts/params/cell_phases_dict.json @@ -0,0 +1,23 @@ +{ + "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" + } + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/cancer_invasion/scripts/params/phases_grouping_dict.json b/sample_projects_intracellular/boolean/cancer_invasion/scripts/params/phases_grouping_dict.json new file mode 100644 index 000000000..665b84844 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/scripts/params/phases_grouping_dict.json @@ -0,0 +1,20 @@ +{ + "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" +} diff --git a/sample_projects_intracellular/boolean/cancer_invasion/scripts/paraview_vis.pvsm b/sample_projects_intracellular/boolean/cancer_invasion/scripts/paraview_vis.pvsm new file mode 100644 index 000000000..0486bcae5 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/scripts/paraview_vis.pvsm @@ -0,0 +1,9531 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sample_projects_intracellular/boolean/cancer_invasion/scripts/paraview_vis_clipped.pvsm b/sample_projects_intracellular/boolean/cancer_invasion/scripts/paraview_vis_clipped.pvsm new file mode 100644 index 000000000..63a1ec8e5 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/scripts/paraview_vis_clipped.pvsm @@ -0,0 +1,11238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/sample_projects_intracellular/boolean/cancer_invasion/scripts/plot_time_course.py b/sample_projects_intracellular/boolean/cancer_invasion/scripts/plot_time_course.py new file mode 100644 index 000000000..496a9e3ad --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/scripts/plot_time_course.py @@ -0,0 +1,159 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- + + +import sys +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt +import seaborn as sns + + + + +from pctk.multicellds import MultiCellDS + + +def labelsubplot(ax, idx, xpos=-0.1, ypos=1.05, weight="bold", fontsize=12, color='#434343'): + a_ascci_idx = ord('a') + subplot_label = chr(a_ascci_idx+idx) + ')' + box_aspect = ax.get_box_aspect() + if box_aspect is not None and len(box_aspect) == 3: + ax.text2D(xpos, ypos, subplot_label, weight="bold", ha='left', va='center', + fontsize=fontsize, color=color, transform=ax.transAxes) + else: + ax.text(xpos, ypos, subplot_label, weight="bold", ha='left', va='center', + fontsize=fontsize, color=color, transform=ax.transAxes) + + + + +def get_timeserie_mean(mcds, filter_alive=True): + time = [] + values = [] + filter_alive = True + for t, df in mcds.cells_as_frames_iterator(): + time.append(t) + df = df.iloc[:,3:] + if filter_alive: + mask = df['current_phase'] <= 14 + df = df[mask] + values.append(df.mean(axis=0).values) + + cell_columns = df.columns.tolist() + df = pd.DataFrame(values, columns=cell_columns) + df['time'] = time + return df[['time'] + cell_columns] + + +def get_timeserie_density(mcds): + data = [] + for t,m in mcds.microenvironment_as_matrix_iterator(): + data.append((t, m[5,:].sum())) + df = pd.DataFrame(data=data, columns=['time', 'tnf']) + return df + +def plot_molecular_model(df_cell_variables, list_of_variables, ax1): + + for label in list_of_variables: + y = df_cell_variables[label] + time = df_cell_variables["time"] + ax1.plot(time, y, label="% " + label) + + ax1.set_ylabel("% X") + ax1.yaxis.grid(True) + ax1.set_xlim((0, time.values[-1])) + ax1.set_ylim((0, 1.05)) + + +def plot_cells(df_time_course, color_dict, ax): + + # Alive/Apoptotic/Necrotic vs Time + for k in color_dict: + ax.plot(df_time_course.time, df_time_course[k], "-", c=color_dict[k], label=k) + + # setting axes labels + # ax.set_xlabel("time (min)") + ax.set_ylabel("N of cells") + + # Showing legend + ax.legend() + ax.yaxis.grid(True) + + +def plot_time_course(df_time_course, df_time_tnf, df_cell_variables, list_of_variables): + fig, axes = plt.subplots(2, 1, figsize=(10,4), dpi=300, sharex=True) + + custom_palette = sns.color_palette("deep") + color_dict = {"live": custom_palette[2], "apoptotic": custom_palette[3], "necrotic":custom_palette[5]} + + plot_cells(df_time_course, color_dict, axes[0]) + + for i,ax in enumerate(axes): + labelsubplot(ax, i, xpos=-0.065) + + ax2 = axes[0].twinx() + ax2.plot(df_time_tnf.time, df_time_tnf['tnf'], 'lightgrey') + + ax2.set_yticks([]) + ax2.fill_between(df_time_tnf.time, df_time_tnf['tnf'], color='lightgrey', alpha=0.3) + + axes[0].set_zorder(ax2.get_zorder()+1) + axes[0].patch.set_visible(False) + + plot_molecular_model(df_cell_variables, list_of_variables, axes[1]) + threshold = 0.5 + + axes[1].hlines(threshold, 0, df_time_course.time.iloc[-1]) + axes[1].legend(loc="upper left") + axes[1].set_xlabel("Time (min)") + + + fig.tight_layout() + sns.despine(fig) + + return fig + +def load_datasets(instance_folder, labels_dict): + + + mcds = MultiCellDS(instance_folder) + + df_time_course = mcds.get_cells_summary_frame() + df_time_tnf = get_timeserie_density(mcds) + df_cell_variables = get_timeserie_mean(mcds) + df_cell_variables = df_cell_variables.rename(labels_dict, axis=1) + + if (df_time_course["live"] == 0).sum() > 0: + idx = df_time_course.index[df_time_course["live"] == 0][0] + df_time_course = df_time_course.iloc[:idx] + df_cell_variables = df_cell_variables.iloc[:idx] + df_time_tnf = df_time_tnf.iloc[:idx] + + return df_time_course, df_time_tnf, df_cell_variables + + +sns.set_style("white") +sns.set_palette("deep") + + +def main(): + if len(sys.argv) == 1: + output_folder = "output" + else: + output_folder = sys.argv[1] + + + labels_dict = {} + labels_dict['bound_external_TNFR'] = "TNFR-TNF[e]" + labels_dict['unbound_external_TNFR'] = "TNFR[e]" + labels_dict['bound_internal_TNFR'] = "TNFR-TNF[i]" + df_time_course, df_time_tnf, df_cell_variables = load_datasets(output_folder, labels_dict) + + list_of_variables = list(labels_dict.values()) + fig = plot_time_course(df_time_course, df_time_tnf, df_cell_variables, list_of_variables) + + fig.savefig(f"{output_folder}/Time_course.png") + + +main() \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/cancer_invasion/scripts/plot_tumor.py b/sample_projects_intracellular/boolean/cancer_invasion/scripts/plot_tumor.py new file mode 100644 index 000000000..34b250c2a --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/scripts/plot_tumor.py @@ -0,0 +1,63 @@ +import sys +import os +import glob +import numpy as np +from pyMCDS_cells import pyMCDS_cells +import matplotlib.pyplot as plt + +argc = len(sys.argv)-1 +print("# args=",argc) + +#data_dir = 'output' +if (argc < 1): +# data_dir = int(sys.argv[kdx]) + print("Usage: provide output subdir") + sys.exit(-1) + +kdx = 1 +data_dir = sys.argv[kdx] +print('data_dir = ',data_dir) +os.chdir(data_dir) +xml_files = glob.glob('output*.xml') +os.chdir('..') +xml_files.sort() +#print('xml_files = ',xml_files) + +ds_count = len(xml_files) +ds_count = 192 +print("----- ds_count = ",ds_count) +mcds = [pyMCDS_cells(xml_files[i], data_dir) for i in range(ds_count)] + +tval = np.linspace(0, mcds[-1].get_time(), ds_count) +print('tval= ',tval) + +# count epi cells still live +necrotic = np.array( [(np.count_nonzero((mcds[idx].data['discrete_cells']['current_phase'] > 100))) for idx in range(ds_count)] ) +apoptotic = np.array( [(np.count_nonzero((mcds[idx].data['discrete_cells']['current_phase'] == 100))) for idx in range(ds_count)] ) +live = np.array( [(np.count_nonzero((mcds[idx].data['discrete_cells']['current_phase'] < 100))) for idx in range(ds_count)] ) +# # count epi cells infected +# y_infected = np.array( [(np.count_nonzero((mcds[idx].data['discrete_cells']['cell_type'] == 1) & (mcds[idx].data['discrete_cells']['virion'] > 1.) == True)) for idx in range(ds_count)] ) + +# # count epi cells dead +# y_dead = np.array( [(np.count_nonzero((mcds[idx].data['discrete_cells']['cell_type'] == 1) & (mcds[idx].data['discrete_cells']['cycle_model'] >= 100) == True)) for idx in range(ds_count)] ) +fig = plt.figure(figsize=(10,6), dpi=200, tight_layout=True) +fig.subplots(1) +fig.axes[0].semilogy(tval, live, label='live')#, linewidth=2) #, color='lime') +# fig.axes[0].plot(tval, live, label='live')#, linewidth=2) #, color='lime') +# fig.axes[0].plot(tval, necrotic, label='necrotic')#, linewidth=2) #, color='lime') +# plt.plot(tval, apoptotic, label='apoptotic', linewidth=2) #, color='lime') + +plt.legend(loc='upper right', prop={'size': 10}) +plt.xticks( + [0, 1440,2*1440, 3*1440, 4*1440, 5*1440, 6*1440, 7*1440, 8*1440],#, 9*1440, 10*1440,11*1440, 12*1440, 13*1440, 14*1440, 15*1440], #, 16*1440, 17*1440, 18*1440, 19*1440], + ('0', '1', '2','3','4','5','6', '7','8')#,'9','10', '11', '12', '13', '14', '15')#, '16', '17', '18', '19') +) + +plt.xlabel('Time (days)') +plt.ylabel('Number of cells') +fig.axes[0].axvspan(1000., 11520, facecolor='0.9') +# fig.axes[0].axvspan(1000., 5320, facecolor='0.9') +# fig.axes[0].axvspan(8200., 12520, facecolor='0.9') +# fig.axes[0].axvspan(15400., 19720, facecolor='0.9') +plt.savefig(data_dir + '.png') +plt.show() diff --git a/sample_projects_intracellular/boolean/cancer_invasion/scripts/pyMCDS_cells.py b/sample_projects_intracellular/boolean/cancer_invasion/scripts/pyMCDS_cells.py new file mode 100644 index 000000000..8fbcd6f58 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/scripts/pyMCDS_cells.py @@ -0,0 +1,505 @@ +import xml.etree.ElementTree as ET +import numpy as np +import pandas as pd +import scipy.io as sio +import sys +import warnings +from pathlib import Path + +class pyMCDS_cells: + """ + This class contains a dictionary of dictionaries that contains all of the + output from a single time step of a PhysiCell Model. This class assumes that + all output files are stored in the same directory. Data is loaded by reading + the .xml file for a particular timestep. + + Parameters + ---------- + xml_name: str + String containing the name of the xml file without the path + output_path: str, optional + String containing the path (relative or absolute) to the directory + where PhysiCell output files are stored (default= ".") + + Attributes + ---------- + data : dict + Hierarchical container for all of the data retrieved by parsing the xml + file and the files referenced therein. + """ + def __init__(self, xml_file, output_path='.'): + self.data = self._read_xml(xml_file, output_path) + + ## METADATA RELATED FUNCTIONS + + def get_time(self): + return self.data['metadata']['current_time'] + + ## MESH RELATED FUNCTIONS + + def get_mesh(self, flat=False): + """ + Return a meshgrid of the computational domain. Can return either full + 3D or a 2D plane for contour plots. + + Parameters + ---------- + flat : bool + If flat is set to true, we return only the x and y meshgrid. + Otherwise we return x, y, and z + + Returns + ------- + splitting : list length=2 if flat=True, else length=3 + Contains arrays of voxel center coordinates as meshgrid with shape + [nx_voxel, ny_voxel, nz_voxel] or [nx_voxel, ny_voxel] if flat=True. + """ + if flat == True: + xx = self.data['mesh']['x_coordinates'][:, :, 0] + yy = self.data['mesh']['y_coordinates'][:, :, 0] + + return [xx, yy] + + # if we dont want a plane just return appropriate values + else: + xx = self.data['mesh']['x_coordinates'] + yy = self.data['mesh']['y_coordinates'] + zz = self.data['mesh']['z_coordinates'] + + return [xx, yy, zz] + + def get_2D_mesh(self): + """ + This function returns the x, y meshgrid as two numpy arrays. It is + identical to get_mesh with the option flat=True + + Returns + ------- + splitting : list length=2 + Contains arrays of voxel center coordinates in x and y dimensions + as meshgrid with shape [nx_voxel, ny_voxel] + """ + xx = self.data['mesh']['x_coordinates'][:, :, 0] + yy = self.data['mesh']['y_coordinates'][:, :, 0] + + return [xx, yy] + + def get_linear_voxels(self): + """ + Helper function to quickly grab voxel centers array stored linearly as + opposed to meshgrid-style. + """ + return self.data['mesh']['voxels']['centers'] + + def get_mesh_spacing(self): + """ + Returns the space in between voxel centers for the mesh in terms of the + mesh's spatial units. Assumes that voxel centers fall on integer values. + + Returns + ------- + dx : float + Distance between voxel centers in the same units as the other + spatial measurements + """ + centers = self.get_linear_voxels() + X = np.unique(centers[0, :]) + Y = np.unique(centers[1, :]) + Z = np.unique(centers[2, :]) + + dx = (X.max() - X.min()) / X.shape[0] + dy = (Y.max() - Y.min()) / Y.shape[0] + dz = (Z.max() - Z.min()) / Z.shape[0] + + if np.abs(dx - dy) > 1e-10 or np.abs(dy - dz) > 1e-10 \ + or np.abs(dx - dz) > 1e-10: + print('Warning: grid spacing may be axis dependent.') + + return round(dx) + + def get_containing_voxel_ijk(self, x, y, z): + """ + Internal function to get the meshgrid indices for the center of a voxel + that contains the given position. + + Note that pyMCDS stores meshgrids as 'cartesian' + (indexing='xy' in np.meshgrid) which means that we will have + to use these indices as [j, i, k] on the actual meshgrid objects + + Parameters + ---------- + x : float + x-coordinate for the position + y : float + y-coordinate for the position + z : float + z-coordinate for the position + + Returns + ------- + ijk : list length=3 + contains the i, j, and k indices for the containing voxel's center + """ + xx, yy, zz = self.get_mesh() + ds = self.get_mesh_spacing() + + if x > xx.max(): + warnings.warn('Position out of bounds: x out of bounds in pyMCDS._get_voxel_idx({0}, {1}, {2}). Setting x = x_max!'.format(x, y, z)) + x = xx.max() + elif x < xx.min(): + warnings.warn('Position out of bounds: x out of bounds in pyMCDS._get_voxel_idx({0}, {1}, {2}). Setting x = x_min!'.format(x, y, z)) + x = xx.min() + elif y > yy.max(): + warnings.warn('Position out of bounds: y out of bounds in pyMCDS._get_voxel_idx({0}, {1}, {2}). Setting y = y_max!'.format(x, y, z)) + y = yy.max() + elif y < yy.min(): + warnings.warn('Position out of bounds: y out of bounds in pyMCDS._get_voxel_idx({0}, {1}, {2}). Setting y = y_min!'.format(x, y, z)) + y = yy.min() + elif z > zz.max(): + warnings.warn('Position out of bounds: z out of bounds in pyMCDS._get_voxel_idx({0}, {1}, {2}). Setting z = z_max!'.format(x, y, z)) + z = zz.max() + elif z < zz.min(): + warnings.warn('Position out of bounds: z out of bounds in pyMCDS._get_voxel_idx({0}, {1}, {2}). Setting z = z_min!'.format(x, y, z)) + z = zz.min() + + i = np.round((x - xx.min()) / ds) + j = np.round((y - yy.min()) / ds) + k = np.round((z - zz.min()) / ds) + + ii, jj, kk = int(i), int(j), int(k) + + return [ii, jj, kk] + + ## MICROENVIRONMENT RELATED FUNCTIONS + + def get_substrate_names(self): + """ + Returns list of chemical species in microenvironment + + Returns + ------- + species_list : array (str), shape=[n_species,] + Contains names of chemical species in microenvironment + """ + species_list = [] + for name in self.data['continuum_variables']: + species_list.append(name) + + return species_list + + def get_concentrations(self, species_name, z_slice=None): + """ + Returns the concentration array for the specified chemical species + in the microenvironment. Can return either the whole 3D picture, or + a 2D plane of concentrations. + + Parameters + ---------- + species_name : str + Name of the chemical species for which to get concentrations + + z_slice : float + z-axis position to use as plane for 2D output. This value must match + a plane of voxel centers in the z-axis. + Returns + ------- + conc_arr : array (np.float) shape=[nx_voxels, ny_voxels, nz_voxels] + Contains the concentration of the specified chemical in each voxel. + The array spatially maps to a meshgrid of the voxel centers. + """ + if z_slice is not None: + # check to see that z_slice is a valid plane + zz = self.data['mesh']['z_coordinates'] + assert z_slice in zz, 'Specified z_slice {} not in z_coordinates'.format(z_slice) + + # do the processing if its ok + mask = zz == z_slice + full_conc = self.data['continuum_variables'][species_name]['data'] + conc_arr = full_conc[mask].reshape((zz.shape[0], zz.shape[1])) + else: + conc_arr = self.data['continuum_variables'][species_name]['data'] + + return conc_arr + + def get_concentrations_at(self, x, y, z): + """ + Return concentrations of each chemical species inside a particular voxel + that contains the point described in the arguments. + + Parameters + ---------- + x : float + x-position for the point of interest + y : float + y_position for the point of interest + z : float + z_position for the point of interest + + Returns + ------- + concs : array, shape=[n_substrates,] + array of concentrations in the order given by get_substrate_names() + """ + i, j, k = self.get_containing_voxel_ijk(x, y, z) + sub_name_list = self.get_substrate_names() + concs = np.zeros(len(sub_name_list)) + + for ix in range(len(sub_name_list)): + concs[ix] = self.get_concentrations(sub_name_list[ix])[j, i, k] + + return concs + + + ## CELL RELATED FUNCTIONS + + def get_cell_df(self): + """ + Builds DataFrame from data['discrete_cells'] + + Returns + ------- + cells_df : pd.Dataframe, shape=[n_cells, n_variables] + Dataframe containing the cell data for all cells at this time step + """ + cells_df = pd.DataFrame(self.data['discrete_cells']) + return cells_df + + def get_cell_variables(self): + """ + Returns the names of all of the cell variables tracked in ['discrete cells'] + dictionary + + Returns + ------- + var_list : list, shape=[n_variables] + Contains the names of the cell variables + """ + var_list = [] + for name in self.data['discrete_cells']: + var_list.append(name) + return var_list + + def get_cell_df_at(self, x, y, z): + """ + Returns a dataframe for cells in the same voxel as the position given by + x, y, and z. + + Parameters + ---------- + x : float + x-position for the point of interest + y : float + y_position for the point of interest + z : float + z_position for the point of interest + + Returns + ------- + vox_df : pd.DataFrame, shape=[n_cell_in_voxel, n_variables] + cell dataframe containing only cells in the same voxel as the point + specified by x, y, and z. + """ + ds = self.get_mesh_spacing() + xx, yy, zz = self.get_mesh() + i, j, k = self.get_containing_voxel_ijk(x, y, z) + x_vox = xx[j, i, k] + y_vox = yy[j, i, k] + z_vox = zz[j, i, k] + + cell_df = self.get_cell_df() + inside_voxel = ( (cell_df['position_x'] < x_vox + ds/2.) & + (cell_df['position_x'] > x_vox - ds/2.) & + (cell_df['position_y'] < y_vox + ds/2.) & + (cell_df['position_y'] > y_vox - ds/2.) & + (cell_df['position_z'] < z_vox + ds/2.) & + (cell_df['position_z'] > z_vox - ds/2.) ) + vox_df = cell_df[inside_voxel] + return vox_df + + def _read_xml(self, xml_file, output_path='.'): + """ + Does the actual work of initializing MultiCellDS by parsing the xml + """ + + output_path = Path(output_path) + xml_file = output_path / xml_file + tree = ET.parse(xml_file) + + # print('Reading {}'.format(xml_file)) + + root = tree.getroot() + MCDS = {} + + # Get current simulated time + metadata_node = root.find('metadata') + time_node = metadata_node.find('current_time') + MCDS['metadata'] = {} + MCDS['metadata']['current_time'] = float(time_node.text) + MCDS['metadata']['time_units'] = time_node.get('units') + + # Get current runtime + time_node = metadata_node.find('current_runtime') + MCDS['metadata']['current_runtime'] = float(time_node.text) + MCDS['metadata']['runtime_units'] = time_node.get('units') + + # # find the microenvironment node + # me_node = root.find('microenvironment') + # me_node = me_node.find('domain') + + # # find the mesh node + # mesh_node = me_node.find('mesh') + # MCDS['metadata']['spatial_units'] = mesh_node.get('units') + # MCDS['mesh'] = {} + + # # while we're at it, find the mesh + # coord_str = mesh_node.find('x_coordinates').text + # delimiter = mesh_node.find('x_coordinates').get('delimiter') + # x_coords = np.array(coord_str.split(delimiter), dtype=np.float) + + # coord_str = mesh_node.find('y_coordinates').text + # delimiter = mesh_node.find('y_coordinates').get('delimiter') + # y_coords = np.array(coord_str.split(delimiter), dtype=np.float) + + # coord_str = mesh_node.find('z_coordinates').text + # delimiter = mesh_node.find('z_coordinates').get('delimiter') + # z_coords = np.array(coord_str.split(delimiter), dtype=np.float) + + # # reshape into a mesh grid + # xx, yy, zz = np.meshgrid(x_coords, y_coords, z_coords) + + # MCDS['mesh']['x_coordinates'] = xx + # MCDS['mesh']['y_coordinates'] = yy + # MCDS['mesh']['z_coordinates'] = zz + + # # Voxel data must be loaded from .mat file + # voxel_file = mesh_node.find('voxels').find('filename').text + # voxel_path = output_path / voxel_file + # try: + # initial_mesh = sio.loadmat(voxel_path)['mesh'] + # except: + # raise FileNotFoundError( + # "No such file or directory:\n'{}' referenced in '{}'".format(voxel_path, xml_file)) + # sys.exit(1) + + # print('Reading {}'.format(voxel_path)) + + # # center of voxel specified by first three rows [ x, y, z ] + # # volume specified by fourth row + # MCDS['mesh']['voxels'] = {} + # MCDS['mesh']['voxels']['centers'] = initial_mesh[:3, :] + # MCDS['mesh']['voxels']['volumes'] = initial_mesh[3, :] + + # # Continuum_variables, unlike in the matlab version the individual chemical + # # species will be primarily accessed through their names e.g. + # # MCDS['continuum_variables']['oxygen']['units'] + # # MCDS['continuum_variables']['glucose']['data'] + # MCDS['continuum_variables'] = {} + # variables_node = me_node.find('variables') + # file_node = me_node.find('data').find('filename') + + # # micro environment data is shape [4+n, len(voxels)] where n is the number + # # of species being tracked. the first 3 rows represent (x, y, z) of voxel + # # centers. The fourth row contains the voxel volume. The 5th row and up will + # # contain values for that species in that voxel. + # me_file = file_node.text + # me_path = output_path / me_file + # # Changes here + # try: + # me_data = sio.loadmat(me_path)['multiscale_microenvironment'] + # except: + # raise FileNotFoundError( + # "No such file or directory:\n'{}' referenced in '{}'".format(me_path, xml_file)) + # sys.exit(1) + + # print('Reading {}'.format(me_path)) + + # var_children = variables_node.findall('variable') + + # # we're going to need the linear x, y, and z coordinates later + # # but we dont need to get them in the loop + # X, Y, Z = np.unique(xx), np.unique(yy), np.unique(zz) + + # for si, species in enumerate(var_children): + # species_name = species.get('name') + # MCDS['continuum_variables'][species_name] = {} + # MCDS['continuum_variables'][species_name]['units'] = species.get( + # 'units') + + # print('Parsing {:s} data'.format(species_name)) + + # # initialize array for concentration data + # MCDS['continuum_variables'][species_name]['data'] = np.zeros(xx.shape) + + # # travel down one level on tree + # species = species.find('physical_parameter_set') + + # # diffusion data for each species + # MCDS['continuum_variables'][species_name]['diffusion_coefficient'] = {} + # MCDS['continuum_variables'][species_name]['diffusion_coefficient']['value'] \ + # = float(species.find('diffusion_coefficient').text) + # MCDS['continuum_variables'][species_name]['diffusion_coefficient']['units'] \ + # = species.find('diffusion_coefficient').get('units') + + # # decay data for each species + # MCDS['continuum_variables'][species_name]['decay_rate'] = {} + # MCDS['continuum_variables'][species_name]['decay_rate']['value'] \ + # = float(species.find('decay_rate').text) + # MCDS['continuum_variables'][species_name]['decay_rate']['units'] \ + # = species.find('decay_rate').get('units') + + # # store data from microenvironment file as numpy array + # # iterate over each voxel + # for vox_idx in range(MCDS['mesh']['voxels']['centers'].shape[1]): + # # find the center + # center = MCDS['mesh']['voxels']['centers'][:, vox_idx] + + # i = np.where(np.abs(center[0] - X) < 1e-10)[0][0] + # j = np.where(np.abs(center[1] - Y) < 1e-10)[0][0] + # k = np.where(np.abs(center[2] - Z) < 1e-10)[0][0] + + # MCDS['continuum_variables'][species_name]['data'][j, i, k] \ + # = me_data[4+si, vox_idx] + + # in order to get to the good stuff we have to pass through a few different + # hierarchal levels + cell_node = root.find('cellular_information') + cell_node = cell_node.find('cell_populations') + cell_node = cell_node.find('cell_population') + cell_node = cell_node.find('custom') + # we want the PhysiCell data, there is more of it + for child in cell_node.findall('simplified_data'): + if child.get('source') == 'PhysiCell': + cell_node = child + break + + MCDS['discrete_cells'] = {} + data_labels = [] + # iterate over 'label's which are children of 'labels' these will be used to + # label data arrays + for label in cell_node.find('labels').findall('label'): + # I don't like spaces in my dictionary keys + fixed_label = label.text.replace(' ', '_') + if int(label.get('size')) > 1: + # tags to differentiate repeated labels (usually space related) + dir_label = ['_x', '_y', '_z'] + for i in range(int(label.get('size'))): + data_labels.append(fixed_label + dir_label[i]) + else: + data_labels.append(fixed_label) + + # load the file + cell_file = cell_node.find('filename').text + cell_path = output_path / cell_file + try: + cell_data = sio.loadmat(cell_path)['cells'] + except: + raise FileNotFoundError( + "No such file or directory:\n'{}' referenced in '{}'".format(cell_path, xml_file)) + sys.exit(1) + + # print('Reading {}'.format(cell_path)) + + for col in range(len(data_labels)): + MCDS['discrete_cells'][data_labels[col]] = cell_data[col, :] + + return MCDS diff --git a/sample_projects_intracellular/boolean/cancer_invasion/scripts/summarize_simulation.py b/sample_projects_intracellular/boolean/cancer_invasion/scripts/summarize_simulation.py new file mode 100755 index 000000000..baa7aab09 --- /dev/null +++ b/sample_projects_intracellular/boolean/cancer_invasion/scripts/summarize_simulation.py @@ -0,0 +1,113 @@ +#!/usr/bin/env python +# coding: utf-8 + +import re +import os +import sys +import numpy as np +import pandas as pd +import matplotlib.pyplot as plt + + +from pctk.multicellds import MultiCellDS + +def get_timeserie_mean(mcds, filter_alive=True): + time = [] + values = [] + filter_alive = True + for t, df in mcds.cells_as_frames_iterator(): + time.append(t) + df = df.iloc[:,3:] + if filter_alive: + mask = df['current_phase'] <= 14 + df = df[mask] + values.append(df.mean(axis=0).values) + + cell_columns = df.columns.tolist() + df = pd.DataFrame(values, columns=cell_columns) + df['time'] = time + return df[['time'] + cell_columns] + + +def get_timeserie_density(mcds): + data = [] + for t,m in mcds.microenvironment_as_matrix_iterator(): + data.append((t, m[5,:].sum())) + df = pd.DataFrame(data=data, columns=['time', 'tnf']) + return df + +def plot_molecular_model(df_cell_variables, list_of_variables, ax1): + + threshold = 0.5 + + for label in list_of_variables: + y = df_cell_variables[label] + time = df_cell_variables["time"] + ax1.plot(time, y, label="% X " + label) + + ax1.set_ylabel("% X") + ax1.yaxis.grid(True) + ax1.set_xlim((0,time.values[-1])) + ax1.set_ylim((0,1)) + # ax1.set_xlabel("time (min)") + +def plot_cells(df_time_course, color_dict, ax): + + # Alive/Apoptotic/Necrotic vs Time + for k in color_dict: + ax.plot(df_time_course.time, df_time_course[k], "-", c=color_dict[k], label=k) + + # setting axes labels + # ax.set_xlabel("time (min)") + ax.set_ylabel("Nº of cells") + + # Showing legend + ax.legend() + ax.yaxis.grid(True) + +def main(): + + color_dict = {"live": "g", "apoptotic": "r", "necrotic":"k"} + + + output_folder = sys.argv[1] + + mcds = MultiCellDS(output_folder=output_folder) + + df_time_course = mcds.get_cells_summary_frame() + df_cell_variables = get_timeserie_mean(mcds) + df_time_tnf = get_timeserie_density(mcds) + + # df_time_course.to_csv(instance_folder + "time_course.tsv", sep="\t") + # df_cell_variables.to_csv(instance_folder + "cell_variables.tsv", sep="\t") + # df_time_tnf.to_csv(instance_folder + "tnf_time.tsv", sep="\t") + + fig, axes = plt.subplots(3, 1, figsize=(12,12), dpi=150, sharex=True) + plot_cells(df_time_course, color_dict, axes[0]) + + list_of_variables = ['bound_external_TNFR', 'unbound_external_TNFR', 'bound_internal_TNFR'] + plot_molecular_model(df_cell_variables, list_of_variables, axes[1]) + threshold = 0.5 + + axes[1].hlines(threshold, 0, df_time_course.time.iloc[-1], label="Activation threshold") + ax2 = axes[1].twinx() + ax2.plot(df_time_tnf.time, df_time_tnf['tnf'], 'r', label="[TNF]") + ax2.set_ylabel("[TNF]") + ax2.set_ylim([0, 1000]) + axes[1].legend(loc="upper left") + ax2.legend(loc="upper right") + + list_of_variables = ['tnf_node', 'nfkb_node', 'fadd_node'] + plot_molecular_model(df_cell_variables, list_of_variables, axes[2]) + axes[2].set_xlabel("time (min)") + ax2 = axes[2].twinx() + ax2.plot(df_time_tnf.time, df_time_tnf['tnf'], 'r', label="[TNF]") + ax2.set_ylabel("[TNF]") + ax2.set_ylim([0, 1000]) + axes[2].legend(loc="upper left") + ax2.legend(loc="upper right") + + fig.tight_layout() + fig.savefig('variables_vs_time.png') + +main() diff --git a/sample_projects_intracellular/boolean/physiboss_cell_lines/Makefile b/sample_projects_intracellular/boolean/physiboss_cell_lines/Makefile index 848c28de4..b6205918e 100644 --- a/sample_projects_intracellular/boolean/physiboss_cell_lines/Makefile +++ b/sample_projects_intracellular/boolean/physiboss_cell_lines/Makefile @@ -18,7 +18,7 @@ MABOSS_MAX_NODES = 64 endif # MaBoSS directory -MABOSS_DIR = addons/PhysiBoSS/MaBoSS-env-2.0/engine +MABOSS_DIR = addons/PhysiBoSS/MaBoSS/engine CUR_DIR = $(shell pwd) CUSTOM_DIR = sample_projects/Arnau_model/custom_modules @@ -35,6 +35,10 @@ ifeq ($(shell expr $(MABOSS_MAX_NODES) '>' 64), 1) LIB := -L$(CUR_DIR)/$(MABOSS_DIR)/lib -lMaBoSS_$(MABOSS_MAX_NODES)n-static $(LDL_FLAG) endif +ifndef STATIC_OPENMP + STATIC_OPENMP = -fopenmp +endif + ARCH := native # best auto-tuning # ARCH := core2 # a reasonably safe default for most CPUs since 2007 # ARCH := corei7 @@ -68,7 +72,9 @@ else endif endif -COMPILE_COMMAND := $(CC) $(CFLAGS) +CFLAGS_LINK := $(shell echo $(CFLAGS) | sed -e "s/-fopenmp//g") +COMPILE_COMMAND := $(CC) $(CFLAGS) $(EXTRA_FLAGS) +LINK_COMMAND := $(CC) $(CFLAGS_LINK) $(EXTRA_FLAGS) BioFVM_OBJECTS := BioFVM_vector.o BioFVM_mesh.o BioFVM_microenvironment.o BioFVM_solvers.o BioFVM_matlab.o \ BioFVM_utilities.o BioFVM_basic_agent.o BioFVM_MultiCellDS.o BioFVM_agent_container.o @@ -81,7 +87,7 @@ PhysiCell_module_OBJECTS := PhysiCell_SVG.o PhysiCell_pathology.o PhysiCell_Mult PhysiCell_pugixml.o PhysiCell_settings.o PhysiCell_geometry.o # put your custom objects here (they should be in the custom_modules directory) -MaBoSS := ./addons/PhysiBoSS/MaBoSS-env-2.0/engine/src/BooleanNetwork.h +MaBoSS := ./addons/PhysiBoSS/MaBoSS/engine/src/BooleanNetwork.h PhysiBoSS_OBJECTS := maboss_network.o maboss_intracellular.o @@ -90,16 +96,17 @@ PhysiCell_custom_module_OBJECTS := custom.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) $(PhysiBoSS_module_OBJECTS) +ALL_OBJECTS := $(PhysiCell_OBJECTS) $(PhysiCell_custom_module_OBJECTS) $(PhysiBoSS_OBJECTS) # compile the project all: main.cpp $(ALL_OBJECTS) $(MaBoSS) - $(COMPILE_COMMAND) $(INC) -o $(PROGRAM_NAME) $(ALL_OBJECTS) main.cpp $(LIB) - @echo "" - @echo "check for $(PROGRAM_NAME)" + $(COMPILE_COMMAND) $(INC) -o $(PROGRAM_NAME) $(ALL_OBJECTS) main.cpp $(LIB) 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) + name: @echo "" @echo "Executable name is" $(PROGRAM_NAME) @@ -177,8 +184,8 @@ PhysiCell_SVG.o: ./modules/PhysiCell_SVG.cpp PhysiCell_pathology.o: ./modules/PhysiCell_pathology.cpp $(COMPILE_COMMAND) -c ./modules/PhysiCell_pathology.cpp -PhysiCell_MultiCellDS.o: ./modules/PhysiCell_MultiCellDS.cpp - $(COMPILE_COMMAND) -c ./modules/PhysiCell_MultiCellDS.cpp +PhysiCell_MultiCellDS.o: ./modules/PhysiCell_MultiCellDS.cpp $(MaBoSS) + $(COMPILE_COMMAND) $(INC) -c ./modules/PhysiCell_MultiCellDS.cpp PhysiCell_various_outputs.o: ./modules/PhysiCell_various_outputs.cpp $(COMPILE_COMMAND) -c ./modules/PhysiCell_various_outputs.cpp @@ -197,14 +204,14 @@ PhysiCell_geometry.o: ./modules/PhysiCell_geometry.cpp # user-defined PhysiCell modules -Compile_MaBoSS: ./addons/PhysiBoSS/MaBoSS-env-2.0/engine/src/BooleanNetwork.h - cd ./addons/PhysiBoSS/MaBoSS-env-2.0/engine/src;make CXX=$(CC) install_alib;make clean; cd ../../../../.. +Compile_MaBoSS: ./addons/PhysiBoSS/MaBoSS/engine/src/BooleanNetwork.h + cd ./addons/PhysiBoSS/MaBoSS/engine/src;make CXX=$(CC) MAXNODES=$(MABOSS_MAX_NODES) install_alib;make clean; cd ../../../../.. $(MaBoSS): ifeq ($(OS), Windows_NT) - python beta/setup_libmaboss.py + python addons/PhysiBoSS/setup_libmaboss.py else - python3 beta/setup_libmaboss.py + python3 addons/PhysiBoSS/setup_libmaboss.py endif maboss_network.o: ./addons/PhysiBoSS/src/maboss_network.cpp $(MaBoSS) @@ -227,11 +234,11 @@ reset: touch ./core/PhysiCell_cell.cpp rm ALL_CITATIONS.txt cp ./config/PhysiCell_settings-backup.xml ./config/PhysiCell_settings.xml - rm -rf ./config/boolean_network/ + rm -rf ./config/model_*.bnd ./config/model.cfg ./config/cells.csv rm -rf ./scripts MaBoSS-clean: - rm -fr addons/PhysiBoSS/MaBoSS-env-2.0 + rm -fr addons/PhysiBoSS/MaBoSS clean: rm -f *.o @@ -268,3 +275,81 @@ unzip: untar: cp ./archives/latest.tar . tar -xzf latest.tar + +movie: + ffmpeg -r 25 -i output/snapshot%08d.svg -pix_fmt yuv420p output.mp4 + vlc output.mp4 + +# upgrade rules + +SOURCE := PhysiCell_upgrade.zip +get-upgrade: + @echo $$(curl https://raw.githubusercontent.com/MathCancer/PhysiCell/master/VERSION.txt) > VER.txt + @echo https://github.com/MathCancer/PhysiCell/releases/download/$$(grep . VER.txt)/PhysiCell_V.$$(grep . VER.txt).zip > DL_FILE.txt + rm -f VER.txt + $$(curl -L $$(grep . DL_FILE.txt) --output PhysiCell_upgrade.zip) + rm -f DL_FILE.txt + +PhysiCell_upgrade.zip: + make get-upgrade + +upgrade: $(SOURCE) + unzip $(SOURCE) PhysiCell/VERSION.txt + mv -f PhysiCell/VERSION.txt . + unzip $(SOURCE) PhysiCell/core/* + cp -r PhysiCell/core/* core + unzip $(SOURCE) PhysiCell/modules/* + cp -r PhysiCell/modules/* modules + unzip $(SOURCE) PhysiCell/sample_projects/* + cp -r PhysiCell/sample_projects/* sample_projects + unzip $(SOURCE) PhysiCell/BioFVM/* + cp -r PhysiCell/BioFVM/* BioFVM + unzip $(SOURCE) PhysiCell/documentation/User_Guide.pdf + 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 + +save: + echo "Saving project as $(PROJ) ... " + mkdir -p ./user_projects + mkdir -p ./user_projects/$(PROJ) + mkdir -p ./user_projects/$(PROJ)/custom_modules + mkdir -p ./user_projects/$(PROJ)/config + cp main.cpp ./user_projects/$(PROJ) + cp Makefile ./user_projects/$(PROJ) + cp VERSION.txt ./user_projects/$(PROJ) + cp -r ./config/* ./user_projects/$(PROJ)/config + cp -r ./custom_modules/* ./user_projects/$(PROJ)/custom_modules + +load: + echo "Loading project from $(PROJ) ... " + cp ./user_projects/$(PROJ)/main.cpp . + cp ./user_projects/$(PROJ)/Makefile . + cp -r ./user_projects/$(PROJ)/config/* ./config/ + cp -r ./user_projects/$(PROJ)/custom_modules/* ./custom_modules/ + +pack: + @echo " " + @echo "Preparing project $(PROJ) for sharing ... " + @echo " " + cd ./user_projects && zip -r $(PROJ).zip $(PROJ) + @echo " " + @echo "Share ./user_projects/$(PROJ).zip ... " + @echo "Other users can unzip $(PROJ).zip in their ./user_projects, compile, and run." + @echo " " + +unpack: + @echo " " + @echo "Preparing shared project $(PROJ).zip for use ... " + @echo " " + cd ./user_projects && unzip $(PROJ).zip + @echo " " + @echo "Load this project via make load PROJ=$(PROJ) ... " + @echo " " + +list-user-projects: + @echo "user projects::" + @cd ./user_projects && ls -dt1 * | grep . | sed 's!empty.txt!!' diff --git a/sample_projects_intracellular/boolean/physiboss_cell_lines/custom_modules/custom.cpp b/sample_projects_intracellular/boolean/physiboss_cell_lines/custom_modules/custom.cpp index c3be8fbce..c89c8e043 100644 --- a/sample_projects_intracellular/boolean/physiboss_cell_lines/custom_modules/custom.cpp +++ b/sample_projects_intracellular/boolean/physiboss_cell_lines/custom_modules/custom.cpp @@ -76,7 +76,10 @@ std::vector nodes; void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/sample_projects_intracellular/boolean/physiboss_cell_lines/main.cpp b/sample_projects_intracellular/boolean/physiboss_cell_lines/main.cpp index 4bc46940c..a3d872462 100644 --- a/sample_projects_intracellular/boolean/physiboss_cell_lines/main.cpp +++ b/sample_projects_intracellular/boolean/physiboss_cell_lines/main.cpp @@ -149,9 +149,6 @@ int main( int argc, char* argv[] ) save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); - sprintf( filename , "%s/states_initial.csv", PhysiCell_settings.folder.c_str()); - MaBoSSIntracellular::save( filename, *PhysiCell::all_cells); - // save a quick SVG cross section through z = 0, after setting its // length bar to 200 microns @@ -167,6 +164,8 @@ int main( int argc, char* argv[] ) 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); + display_citations(); // set the performance timers @@ -203,11 +202,6 @@ 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::all_cells ); - } PhysiCell_globals.full_output_index++; @@ -259,13 +253,9 @@ 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, *PhysiCell::all_cells ); - sprintf( filename , "%s/final.svg" , PhysiCell_settings.folder.c_str() ); SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function ); - // timer std::cout << std::endl << "Total simulation runtime: " << std::endl; diff --git a/sample_projects_intracellular/boolean/template_BM/Makefile b/sample_projects_intracellular/boolean/template_BM/Makefile new file mode 100644 index 000000000..a5d3a9c68 --- /dev/null +++ b/sample_projects_intracellular/boolean/template_BM/Makefile @@ -0,0 +1,369 @@ +VERSION := $(shell grep . VERSION.txt | cut -f1 -d:) +PROGRAM_NAME := project + +CC := g++ +# CC := g++-mp-7 # typical macports compiler name +# CC := g++-7 # typical homebrew compiler name + +# Check for environment definitions of compiler +# e.g., on CC = g++-7 on OSX +ifdef PHYSICELL_CPP + CC := $(PHYSICELL_CPP) +endif + +### MaBoSS configuration +# MaBoSS max nodes +ifndef MABOSS_MAX_NODES +MABOSS_MAX_NODES = 256 +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 +endif + +LIB := -L$(CUR_DIR)/$(MABOSS_DIR)/lib -lMaBoSS-static $(LDL_FLAG) +INC := -DADDON_PHYSIBOSS -I$(CUR_DIR)/$(MABOSS_DIR)/include -DMAXNODES=$(MABOSS_MAX_NODES) + + +# If max nodes > 64, change lib path +ifeq ($(shell expr $(MABOSS_MAX_NODES) '>' 64), 1) +LIB := -L$(CUR_DIR)/$(MABOSS_DIR)/lib -lMaBoSS_$(MABOSS_MAX_NODES)n-static $(LDL_FLAG) +endif + +ifndef STATIC_OPENMP + STATIC_OPENMP = -fopenmp +endif + +ARCH := native # best auto-tuning +# ARCH := core2 # a reasonably safe default for most CPUs since 2007 +# ARCH := corei7 +# ARCH := corei7-avx # earlier i7 +# ARCH := core-avx-i # i7 ivy bridge or newer +# ARCH := core-avx2 # i7 with Haswell or newer +# ARCH := nehalem +# ARCH := westmere +# ARCH := sandybridge # circa 2011 +# ARCH := ivybridge # circa 2012 +# ARCH := haswell # circa 2013 +# ARCH := broadwell # circa 2014 +# ARCH := skylake # circa 2015 +# ARCH := bonnell +# ARCH := silvermont +# ARCH := skylake-avx512 +# 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 + +ifeq ($(OS),Windows_NT) +else + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Darwin) + UNAME_P := $(shell uname -p) + var := $(shell which $(CC) | xargs file) + ifeq ($(lastword $(var)),arm64) + CFLAGS := -march=$(ARCH) -O3 -fomit-frame-pointer -fopenmp -m64 -std=c++11 + endif + endif +endif + +CFLAGS_LINK := $(shell echo $(CFLAGS) | sed -e "s/-fopenmp//g") +COMPILE_COMMAND := $(CC) $(CFLAGS) $(EXTRA_FLAGS) +LINK_COMMAND := $(CC) $(CFLAGS_LINK) $(EXTRA_FLAGS) + +BioFVM_OBJECTS := BioFVM_vector.o BioFVM_mesh.o BioFVM_microenvironment.o BioFVM_solvers.o BioFVM_matlab.o \ +BioFVM_utilities.o BioFVM_basic_agent.o BioFVM_MultiCellDS.o BioFVM_agent_container.o + +PhysiCell_core_OBJECTS := PhysiCell_phenotype.o PhysiCell_cell_container.o PhysiCell_standard_models.o \ +PhysiCell_cell.o PhysiCell_custom.o PhysiCell_utilities.o PhysiCell_constants.o PhysiCell_basic_signaling.o \ +PhysiCell_signal_behavior.o PhysiCell_rules.o + +PhysiCell_module_OBJECTS := PhysiCell_SVG.o PhysiCell_pathology.o PhysiCell_MultiCellDS.o PhysiCell_various_outputs.o \ +PhysiCell_pugixml.o PhysiCell_settings.o PhysiCell_geometry.o + +# put your custom objects here (they should be in the custom_modules directory) +MaBoSS := ./addons/PhysiBoSS/MaBoSS/engine/src/BooleanNetwork.h + +PhysiBoSS_OBJECTS := maboss_network.o maboss_intracellular.o + +PhysiCell_custom_module_OBJECTS := custom.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) + +# compile the project + +all: main.cpp $(ALL_OBJECTS) $(MaBoSS) + $(COMPILE_COMMAND) $(INC) -o $(PROGRAM_NAME) $(ALL_OBJECTS) main.cpp $(LIB) + 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) + +name: + @echo "" + @echo "Executable name is" $(PROGRAM_NAME) + @echo "" + +# PhysiCell core components + +PhysiCell_phenotype.o: ./core/PhysiCell_phenotype.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_phenotype.cpp + +PhysiCell_digital_cell_line.o: ./core/PhysiCell_digital_cell_line.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_digital_cell_line.cpp + +PhysiCell_cell.o: ./core/PhysiCell_cell.cpp $(MaBoSS) + $(COMPILE_COMMAND) $(INC) -c ./core/PhysiCell_cell.cpp + +PhysiCell_cell_container.o: ./core/PhysiCell_cell_container.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_cell_container.cpp + +PhysiCell_standard_models.o: ./core/PhysiCell_standard_models.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_standard_models.cpp + +PhysiCell_utilities.o: ./core/PhysiCell_utilities.cpp + $(COMPILE_COMMAND) -c ./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 + +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 + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_vector.cpp + +BioFVM_agent_container.o: ./BioFVM/BioFVM_agent_container.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_agent_container.cpp + +BioFVM_mesh.o: ./BioFVM/BioFVM_mesh.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_mesh.cpp + +BioFVM_microenvironment.o: ./BioFVM/BioFVM_microenvironment.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_microenvironment.cpp + +BioFVM_solvers.o: ./BioFVM/BioFVM_solvers.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_solvers.cpp + +BioFVM_utilities.o: ./BioFVM/BioFVM_utilities.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_utilities.cpp + +BioFVM_basic_agent.o: ./BioFVM/BioFVM_basic_agent.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_basic_agent.cpp + +BioFVM_matlab.o: ./BioFVM/BioFVM_matlab.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_matlab.cpp + +BioFVM_MultiCellDS.o: ./BioFVM/BioFVM_MultiCellDS.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_MultiCellDS.cpp + +pugixml.o: ./BioFVM/pugixml.cpp + $(COMPILE_COMMAND) -c ./BioFVM/pugixml.cpp + +# standard PhysiCell modules + +PhysiCell_SVG.o: ./modules/PhysiCell_SVG.cpp + $(COMPILE_COMMAND) -c ./modules/PhysiCell_SVG.cpp + +PhysiCell_pathology.o: ./modules/PhysiCell_pathology.cpp + $(COMPILE_COMMAND) -c ./modules/PhysiCell_pathology.cpp + +PhysiCell_MultiCellDS.o: ./modules/PhysiCell_MultiCellDS.cpp $(MaBoSS) + $(COMPILE_COMMAND) $(INC) -c ./modules/PhysiCell_MultiCellDS.cpp + +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 + +PhysiCell_basic_signaling.o: ./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 + cd ./addons/PhysiBoSS/MaBoSS/engine/src;make CXX=$(CC) MAXNODES=$(MABOSS_MAX_NODES) install_alib;make clean; cd ../../../../.. + +$(MaBoSS): +ifeq ($(OS), Windows_NT) + python addons/PhysiBoSS/setup_libmaboss.py +else + python3 addons/PhysiBoSS/setup_libmaboss.py +endif + +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 + +custom.o: ./custom_modules/custom.cpp $(MaBoSS) + $(COMPILE_COMMAND) $(INC) -c ./custom_modules/custom.cpp + +# cleanup + +reset: + rm -f *.cpp + cp ./sample_projects/Makefile-default Makefile + 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 ./scripts + +MaBoSS-clean: + rm -fr addons/PhysiBoSS/MaBoSS + +clean: + rm -f *.o + rm -f $(PROGRAM_NAME)* + +data-cleanup: + 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 + cp latest.zip VERSION_$(VERSION).zip + mv *.zip archives/ + +tar: + tar --ignore-failed-read -czf latest.tar Makefile* *.cpp *.h BioFVM/* config/* core/* custom_modules/* matlab/* modules/* sample_projects/* + cp latest.tar $$(date +%b_%d_%Y_%H%M).tar + cp latest.tar VERSION_$(VERSION).tar + mv *.tar archives/ + +unzip: + cp ./archives/latest.zip . + unzip latest.zip + +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 + +# upgrade rules + +SOURCE := PhysiCell_upgrade.zip +get-upgrade: + @echo $$(curl https://raw.githubusercontent.com/MathCancer/PhysiCell/master/VERSION.txt) > VER.txt + @echo https://github.com/MathCancer/PhysiCell/releases/download/$$(grep . VER.txt)/PhysiCell_V.$$(grep . VER.txt).zip > DL_FILE.txt + rm -f VER.txt + $$(curl -L $$(grep . DL_FILE.txt) --output PhysiCell_upgrade.zip) + rm -f DL_FILE.txt + +PhysiCell_upgrade.zip: + make get-upgrade + +upgrade: $(SOURCE) + unzip $(SOURCE) PhysiCell/VERSION.txt + mv -f PhysiCell/VERSION.txt . + unzip $(SOURCE) PhysiCell/core/* + cp -r PhysiCell/core/* core + unzip $(SOURCE) PhysiCell/modules/* + cp -r PhysiCell/modules/* modules + unzip $(SOURCE) PhysiCell/sample_projects/* + cp -r PhysiCell/sample_projects/* sample_projects + unzip $(SOURCE) PhysiCell/BioFVM/* + cp -r PhysiCell/BioFVM/* BioFVM + unzip $(SOURCE) PhysiCell/documentation/User_Guide.pdf + 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 + +save: + echo "Saving project as $(PROJ) ... " + mkdir -p ./user_projects + mkdir -p ./user_projects/$(PROJ) + mkdir -p ./user_projects/$(PROJ)/custom_modules + mkdir -p ./user_projects/$(PROJ)/config + cp main.cpp ./user_projects/$(PROJ) + cp Makefile ./user_projects/$(PROJ) + cp VERSION.txt ./user_projects/$(PROJ) + cp -r ./config/* ./user_projects/$(PROJ)/config + cp -r ./custom_modules/* ./user_projects/$(PROJ)/custom_modules + +load: + echo "Loading project from $(PROJ) ... " + cp ./user_projects/$(PROJ)/main.cpp . + cp ./user_projects/$(PROJ)/Makefile . + cp -r ./user_projects/$(PROJ)/config/* ./config/ + cp -r ./user_projects/$(PROJ)/custom_modules/* ./custom_modules/ + +pack: + @echo " " + @echo "Preparing project $(PROJ) for sharing ... " + @echo " " + cd ./user_projects && zip -r $(PROJ).zip $(PROJ) + @echo " " + @echo "Share ./user_projects/$(PROJ).zip ... " + @echo "Other users can unzip $(PROJ).zip in their ./user_projects, compile, and run." + @echo " " + +unpack: + @echo " " + @echo "Preparing shared project $(PROJ).zip for use ... " + @echo " " + cd ./user_projects && unzip $(PROJ).zip + @echo " " + @echo "Load this project via make load PROJ=$(PROJ) ... " + @echo " " + +list-user-projects: + @echo "user projects::" + @cd ./user_projects && ls -dt1 * | grep . | sed 's!empty.txt!!' diff --git a/sample_projects_intracellular/boolean/template_BM/config/PhysiCell_settings.xml b/sample_projects_intracellular/boolean/template_BM/config/PhysiCell_settings.xml new file mode 100644 index 000000000..4723bb46d --- /dev/null +++ b/sample_projects_intracellular/boolean/template_BM/config/PhysiCell_settings.xml @@ -0,0 +1,350 @@ + + + + + + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 1440 + min + micron + + 0.01 + 0.1 + 6 + + + + 6 + + + + output + + + 60 + true + + + + 60 + true + + + + false + + + + + false + true + false + + + + + + 100000.0 + 10 + + 0 + 0 + + + + + + true + true + + + ./config/initial.mat + + + + ./config/dirichlet.mat + + + + + + + + + + + + + + + + + 300.0 + 480 + 240 + 60 + + + + + + 5.31667e-05 + + + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 0.0 + + + + + 0 + 86400 + + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + + 2494 + 0.75 + 540 + + 0.05 + 0.0045 + 0.0055 + + 0 + 0 + + 2.0 + + + + 0.4 + 10.0 + 1.25 + + 1 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + + + + 1 + 1 + .5 + + + false + true + + false + substrate + 1 + + + + + + + 0 + 1 + 0 + 0 + + + + + 0 + + 0 + + + 0 + + 1 + + 0 + + + + + 0 + + + + + + + + 1.0 + + + + + + + ./config + cells.csv + + + + + + + ./config + cell_rules.csv + + + + + + + 0 + + + + + 5 + + + diff --git a/sample_projects_intracellular/boolean/template_BM/config/cell_rules.csv b/sample_projects_intracellular/boolean/template_BM/config/cell_rules.csv new file mode 100644 index 000000000..078426a60 --- /dev/null +++ b/sample_projects_intracellular/boolean/template_BM/config/cell_rules.csv @@ -0,0 +1 @@ +// \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/template_BM/config/cells.csv b/sample_projects_intracellular/boolean/template_BM/config/cells.csv new file mode 100644 index 000000000..734bdc767 --- /dev/null +++ b/sample_projects_intracellular/boolean/template_BM/config/cells.csv @@ -0,0 +1 @@ +0,0,0,0 \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/template_BM/custom_modules/custom.cpp b/sample_projects_intracellular/boolean/template_BM/custom_modules/custom.cpp new file mode 100644 index 000000000..d3b6fda61 --- /dev/null +++ b/sample_projects_intracellular/boolean/template_BM/custom_modules/custom.cpp @@ -0,0 +1,246 @@ +/* +############################################################################### +# 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. # +# # +############################################################################### +*/ + +#include "./custom.h" + +void create_cell_types( void ) +{ + // set the random seed + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } + + /* + Put any modifications to default cell definition here if you + want to have "inherited" by other cell types. + + 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.update_migration_bias = NULL; + cell_defaults.functions.update_phenotype = NULL; // update_cell_and_death_parameters_O2_based; + 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; + + /* + This parses the cell definitions in the XML config file. + */ + + initialize_cell_definitions_from_pugixml(); + + /* + This builds the map of cell definitions and summarizes the setup. + */ + + build_cell_definitions_maps(); + + /* + This intializes cell signal and response dictionaries + */ + + setup_signal_behavior_dictionaries(); + + /* + Cell rule definitions + */ + + setup_cell_rules(); + + /* + Put any modifications to individual cell definitions here. + + This is a good place to set custom functions. + */ + + cell_defaults.functions.update_phenotype = phenotype_function; + cell_defaults.functions.custom_cell_rule = custom_function; + cell_defaults.functions.contact_function = contact_function; + + /* + This builds the map of cell definitions and summarizes the setup. + */ + + display_cell_definitions( std::cout ); + + return; +} + +void setup_microenvironment( void ) +{ + // set domain parameters + + // put any custom code to set non-homogeneous initial conditions or + // extra Dirichlet nodes here. + + // initialize BioFVM + + initialize_microenvironment(); + + 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]; + + 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 + + Cell* pC; + + for( int k=0; k < cell_definitions_by_index.size() ; k++ ) + { + 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++ ) + { + std::vector position = {0,0,0}; + position[0] = Xmin + UniformRandom()*Xrange; + position[1] = Ymin + UniformRandom()*Yrange; + position[2] = Zmin + UniformRandom()*Zrange; + + pC = create_cell( *pCD ); + pC->assign_position( position ); + } + } + 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; } + +void custom_function( Cell* pCell, Phenotype& phenotype , double dt ) +{ return; } + +void contact_function( Cell* pMe, Phenotype& phenoMe , Cell* pOther, Phenotype& phenoOther , double dt ) +{ return; } + +void treatment_function () +{ + if (PhysiCell::parameters.bools.find_index("treatment") != -1) + { + int treatment_substrate_index = BioFVM::microenvironment.find_density_index(PhysiCell::parameters.strings("treatment_substrate")); + + 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); + } + + 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); + } + } +} \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/template_BM/custom_modules/custom.h b/sample_projects_intracellular/boolean/template_BM/custom_modules/custom.h new file mode 100644 index 000000000..bb5843d23 --- /dev/null +++ b/sample_projects_intracellular/boolean/template_BM/custom_modules/custom.h @@ -0,0 +1,93 @@ +/* +############################################################################### +# 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. # +# # +############################################################################### +*/ + +#include "../core/PhysiCell.h" +#include "../modules/PhysiCell_standard_modules.h" + +using namespace BioFVM; +using namespace PhysiCell; + +// setup functions to help us along + +void create_cell_types( void ); +void setup_tissue( void ); + +// 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 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 (); \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/template_BM/main.cpp b/sample_projects_intracellular/boolean/template_BM/main.cpp new file mode 100644 index 000000000..f30923d04 --- /dev/null +++ b/sample_projects_intracellular/boolean/template_BM/main.cpp @@ -0,0 +1,259 @@ +/* +############################################################################### +# 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. # +# # +############################################################################### +*/ + +#include +#include +#include +#include +#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" + +using namespace BioFVM; +using namespace PhysiCell; + +int main( int argc, char* argv[] ) +{ + // load and parse settings file(s) + + bool XML_status = false; + char copy_command [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() ); + } + 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() ); + } + if( !XML_status ) + { exit(-1); } + + // copy config file to output directry + system( copy_command ); + + // OpenMP setup + omp_set_num_threads(PhysiCell_settings.omp_num_threads); + + // time setup + std::string time_units = "min"; + + /* Microenvironment setup */ + + setup_microenvironment(); // modify this in the custom code + + /* PhysiCell setup */ + + // set mechanics voxel size, and match the data structure to BioFVM + double mechanics_voxel_size = 30; + Cell_Container* cell_container = create_cell_container_for_microenvironment( microenvironment, mechanics_voxel_size ); + + /* Users typically start modifying here. START USERMODS */ + + create_cell_types(); + + setup_tissue(); + + /* Users typically stop modifying here. END USERMODS */ + + // set MultiCellDS save options + + set_save_biofvm_mesh_as_matlab( true ); + set_save_biofvm_data_as_matlab( true ); + set_save_biofvm_cell_data( true ); + set_save_biofvm_cell_data_as_custom_matlab( true ); + + // save a simulation snapshot + + char filename[1024]; + sprintf( filename , "%s/initial" , PhysiCell_settings.folder.c_str() ); + save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); + + // save a quick SVG cross section through z = 0, after setting its + // length bar to 200 microns + + PhysiCell_SVG_options.length_bar = 200; + + // for simplicity, set a pathology coloring function + + std::vector (*cell_coloring_function)(Cell*) = my_coloring_function; + + sprintf( filename , "%s/initial.svg" , PhysiCell_settings.folder.c_str() ); + 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); + + display_citations(); + + // set the performance timers + + BioFVM::RUNTIME_TIC(); + BioFVM::TIC(); + + std::ofstream report_file; + if( PhysiCell_settings.enable_legacy_saves == true ) + { + sprintf( filename , "%s/simulation_report.txt" , PhysiCell_settings.folder.c_str() ); + + report_file.open(filename); // create the data log file + report_file<<"simulated time\tnum cells\tnum division\tnum death\twall time"<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); + report_file.close(); + } + } + catch( const std::exception& e ) + { // reference to the base of a polymorphic object + std::cout << e.what(); // information from length_error printed + } + + // save a final simulation snapshot + + sprintf( filename , "%s/final" , PhysiCell_settings.folder.c_str() ); + save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); + + sprintf( filename , "%s/final.svg" , PhysiCell_settings.folder.c_str() ); + SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function ); + + // timer + + std::cout << std::endl << "Total simulation runtime: " << std::endl; + BioFVM::display_stopwatch_value( std::cout , BioFVM::runtime_stopwatch_value() ); + + return 0; +} diff --git a/sample_projects_intracellular/boolean/template_BM/scripts/empty.txt b/sample_projects_intracellular/boolean/template_BM/scripts/empty.txt new file mode 100644 index 000000000..e69de29bb diff --git a/sample_projects_intracellular/boolean/tutorial/Makefile b/sample_projects_intracellular/boolean/tutorial/Makefile new file mode 100644 index 000000000..ad562dfa2 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/Makefile @@ -0,0 +1,360 @@ +VERSION := $(shell grep . VERSION.txt | cut -f1 -d:) +PROGRAM_NAME := project + +CC := g++ +# CC := g++-mp-7 # typical macports compiler name +# CC := g++-7 # typical homebrew compiler name + +# Check for environment definitions of compiler +# e.g., on CC = g++-7 on OSX +ifdef PHYSICELL_CPP + CC := $(PHYSICELL_CPP) +endif + +### MaBoSS configuration +# MaBoSS max nodes +ifndef MABOSS_MAX_NODES +MABOSS_MAX_NODES = 128 +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 +endif + +LIB := -L$(CUR_DIR)/$(MABOSS_DIR)/lib -lMaBoSS-static $(LDL_FLAG) +INC := -DADDON_PHYSIBOSS -I$(CUR_DIR)/$(MABOSS_DIR)/include -DMAXNODES=$(MABOSS_MAX_NODES) + + +# If max nodes > 64, change lib path +ifeq ($(shell expr $(MABOSS_MAX_NODES) '>' 64), 1) +LIB := -L$(CUR_DIR)/$(MABOSS_DIR)/lib -lMaBoSS_$(MABOSS_MAX_NODES)n-static $(LDL_FLAG) +endif + +ifndef STATIC_OPENMP + STATIC_OPENMP = -fopenmp +endif + +ARCH := native # best auto-tuning +# ARCH := core2 # a reasonably safe default for most CPUs since 2007 +# ARCH := corei7 +# ARCH := corei7-avx # earlier i7 +# ARCH := core-avx-i # i7 ivy bridge or newer +# ARCH := core-avx2 # i7 with Haswell or newer +# ARCH := nehalem +# ARCH := westmere +# ARCH := sandybridge # circa 2011 +# ARCH := ivybridge # circa 2012 +# ARCH := haswell # circa 2013 +# ARCH := broadwell # circa 2014 +# ARCH := skylake # circa 2015 +# ARCH := bonnell +# ARCH := silvermont +# ARCH := skylake-avx512 +# ARCH := nocona #64-bit pentium 4 or later + +# CFLAGS := -march=$(ARCH) -Ofast -s -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 + UNAME_S := $(shell uname -s) + ifeq ($(UNAME_S),Darwin) + UNAME_P := $(shell uname -p) + var := $(shell which $(CC) | xargs file) + ifeq ($(lastword $(var)),arm64) + CFLAGS := -march=$(ARCH) -O3 -fomit-frame-pointer -fopenmp -m64 -std=c++11 + endif + endif +endif + +CFLAGS_LINK := $(shell echo $(CFLAGS) | sed -e "s/-fopenmp//g") +COMPILE_COMMAND := $(CC) $(CFLAGS) $(EXTRA_FLAGS) +LINK_COMMAND := $(CC) $(CFLAGS_LINK) $(EXTRA_FLAGS) + +BioFVM_OBJECTS := BioFVM_vector.o BioFVM_mesh.o BioFVM_microenvironment.o BioFVM_solvers.o BioFVM_matlab.o \ +BioFVM_utilities.o BioFVM_basic_agent.o BioFVM_MultiCellDS.o BioFVM_agent_container.o + +PhysiCell_core_OBJECTS := PhysiCell_phenotype.o PhysiCell_cell_container.o PhysiCell_standard_models.o \ +PhysiCell_cell.o PhysiCell_custom.o PhysiCell_utilities.o PhysiCell_constants.o PhysiCell_basic_signaling.o \ +PhysiCell_signal_behavior.o PhysiCell_rules.o + + +PhysiCell_module_OBJECTS := PhysiCell_SVG.o PhysiCell_pathology.o PhysiCell_MultiCellDS.o PhysiCell_various_outputs.o \ +PhysiCell_pugixml.o PhysiCell_settings.o PhysiCell_geometry.o + +# put your custom objects here (they should be in the custom_modules directory) + +MaBoSS := ./addons/PhysiBoSS/MaBoSS/engine/src/BooleanNetwork.h + +PhysiBoSS_OBJECTS := maboss_network.o maboss_intracellular.o + +PhysiCell_custom_module_OBJECTS := custom.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) + +# compile the project + +all: main.cpp $(ALL_OBJECTS) $(MaBoSS) + $(COMPILE_COMMAND) $(INC) -o $(PROGRAM_NAME) $(ALL_OBJECTS) main.cpp $(LIB) + 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) + +name: + @echo "" + @echo "Executable name is" $(PROGRAM_NAME) + @echo "" + +# PhysiCell core components + +PhysiCell_phenotype.o: ./core/PhysiCell_phenotype.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_phenotype.cpp + +PhysiCell_digital_cell_line.o: ./core/PhysiCell_digital_cell_line.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_digital_cell_line.cpp + +PhysiCell_cell.o: ./core/PhysiCell_cell.cpp $(MaBoSS) + $(COMPILE_COMMAND) $(INC) -c ./core/PhysiCell_cell.cpp + +PhysiCell_cell_container.o: ./core/PhysiCell_cell_container.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_cell_container.cpp + +PhysiCell_standard_models.o: ./core/PhysiCell_standard_models.cpp + $(COMPILE_COMMAND) -c ./core/PhysiCell_standard_models.cpp + +PhysiCell_utilities.o: ./core/PhysiCell_utilities.cpp + $(COMPILE_COMMAND) -c ./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 + +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 + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_vector.cpp + +BioFVM_agent_container.o: ./BioFVM/BioFVM_agent_container.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_agent_container.cpp + +BioFVM_mesh.o: ./BioFVM/BioFVM_mesh.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_mesh.cpp + +BioFVM_microenvironment.o: ./BioFVM/BioFVM_microenvironment.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_microenvironment.cpp + +BioFVM_solvers.o: ./BioFVM/BioFVM_solvers.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_solvers.cpp + +BioFVM_utilities.o: ./BioFVM/BioFVM_utilities.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_utilities.cpp + +BioFVM_basic_agent.o: ./BioFVM/BioFVM_basic_agent.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_basic_agent.cpp + +BioFVM_matlab.o: ./BioFVM/BioFVM_matlab.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_matlab.cpp + +BioFVM_MultiCellDS.o: ./BioFVM/BioFVM_MultiCellDS.cpp + $(COMPILE_COMMAND) -c ./BioFVM/BioFVM_MultiCellDS.cpp + +pugixml.o: ./BioFVM/pugixml.cpp + $(COMPILE_COMMAND) -c ./BioFVM/pugixml.cpp + +# standard PhysiCell modules + +PhysiCell_SVG.o: ./modules/PhysiCell_SVG.cpp + $(COMPILE_COMMAND) -c ./modules/PhysiCell_SVG.cpp + +PhysiCell_pathology.o: ./modules/PhysiCell_pathology.cpp + $(COMPILE_COMMAND) -c ./modules/PhysiCell_pathology.cpp + +PhysiCell_MultiCellDS.o: ./modules/PhysiCell_MultiCellDS.cpp $(MaBoSS) + $(COMPILE_COMMAND) $(INC) -c ./modules/PhysiCell_MultiCellDS.cpp + +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 + +PhysiCell_basic_signaling.o: ./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 + cd ./addons/PhysiBoSS/MaBoSS/engine/src;make CXX=$(CC) MAXNODES=$(MABOSS_MAX_NODES) install_alib;make clean; cd ../../../../.. + +$(MaBoSS): +ifeq ($(OS), Windows_NT) + python addons/PhysiBoSS/setup_libmaboss.py +else + python3 addons/PhysiBoSS/setup_libmaboss.py +endif + +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 + +custom.o: ./custom_modules/custom.cpp $(MaBoSS) + $(COMPILE_COMMAND) $(INC) -c ./custom_modules/custom.cpp + +# cleanup + +reset: + rm -f *.cpp + cp ./sample_projects/Makefile-default Makefile + rm -f ./custom_modules/* + touch ./custom_modules/empty.txt + touch ALL_CITATIONS.txt + rm ALL_CITATIONS.txt + cp ./config/PhysiCell_settings-backup.xml ./config/PhysiCell_settings.xml + rm -rf ./config/simple_tnf/ + rm -fr ./config/cell_cycle/ + rm -fr ./config/differentiation/ + rm -rf ./scripts + +MaBoSS-clean: + rm -fr addons/PhysiBoSS/MaBoSS + +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 + cp latest.zip VERSION_$(VERSION).zip + mv *.zip archives/ + +tar: + tar --ignore-failed-read -czf latest.tar Makefile* *.cpp *.h BioFVM/* config/* core/* custom_modules/* matlab/* modules/* sample_projects/* + cp latest.tar $$(date +%b_%d_%Y_%H%M).tar + cp latest.tar VERSION_$(VERSION).tar + mv *.tar archives/ + +unzip: + cp ./archives/latest.zip . + unzip latest.zip + +untar: + cp ./archives/latest.tar . + tar -xzf latest.tar + +movie: + ffmpeg -r 25 -i output/snapshot%08d.svg -pix_fmt yuv420p output.mp4 + vlc output.mp4 + +# upgrade rules + +SOURCE := PhysiCell_upgrade.zip +get-upgrade: + @echo $$(curl https://raw.githubusercontent.com/MathCancer/PhysiCell/master/VERSION.txt) > VER.txt + @echo https://github.com/MathCancer/PhysiCell/releases/download/$$(grep . VER.txt)/PhysiCell_V.$$(grep . VER.txt).zip > DL_FILE.txt + rm -f VER.txt + $$(curl -L $$(grep . DL_FILE.txt) --output PhysiCell_upgrade.zip) + rm -f DL_FILE.txt + +PhysiCell_upgrade.zip: + make get-upgrade + +upgrade: $(SOURCE) + unzip $(SOURCE) PhysiCell/VERSION.txt + mv -f PhysiCell/VERSION.txt . + unzip $(SOURCE) PhysiCell/core/* + cp -r PhysiCell/core/* core + unzip $(SOURCE) PhysiCell/modules/* + cp -r PhysiCell/modules/* modules + unzip $(SOURCE) PhysiCell/sample_projects/* + cp -r PhysiCell/sample_projects/* sample_projects + unzip $(SOURCE) PhysiCell/BioFVM/* + cp -r PhysiCell/BioFVM/* BioFVM + unzip $(SOURCE) PhysiCell/documentation/User_Guide.pdf + 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 + +save: + echo "Saving project as $(PROJ) ... " + mkdir -p ./user_projects + mkdir -p ./user_projects/$(PROJ) + mkdir -p ./user_projects/$(PROJ)/custom_modules + mkdir -p ./user_projects/$(PROJ)/config + cp main.cpp ./user_projects/$(PROJ) + cp Makefile ./user_projects/$(PROJ) + cp VERSION.txt ./user_projects/$(PROJ) + cp -r ./config/* ./user_projects/$(PROJ)/config + cp -r ./custom_modules/* ./user_projects/$(PROJ)/custom_modules + +load: + echo "Loading project from $(PROJ) ... " + cp ./user_projects/$(PROJ)/main.cpp . + cp ./user_projects/$(PROJ)/Makefile . + cp -r ./user_projects/$(PROJ)/config/* ./config/ + cp -r ./user_projects/$(PROJ)/custom_modules/* ./custom_modules/ + +pack: + @echo " " + @echo "Preparing project $(PROJ) for sharing ... " + @echo " " + cd ./user_projects && zip -r $(PROJ).zip $(PROJ) + @echo " " + @echo "Share ./user_projects/$(PROJ).zip ... " + @echo "Other users can unzip $(PROJ).zip in their ./user_projects, compile, and run." + @echo " " + +unpack: + @echo " " + @echo "Preparing shared project $(PROJ).zip for use ... " + @echo " " + cd ./user_projects && unzip $(PROJ).zip + @echo " " + @echo "Load this project via make load PROJ=$(PROJ) ... " + @echo " " + +list-user-projects: + @echo "user projects::" + @cd ./user_projects && ls -dt1 * | grep . | sed 's!empty.txt!!' diff --git a/sample_projects_intracellular/boolean/tutorial/README.md b/sample_projects_intracellular/boolean/tutorial/README.md new file mode 100644 index 000000000..9341560b4 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/README.md @@ -0,0 +1,59 @@ +# PhysiBoSS Tutorial models + +In this folder we provide the models presented in the PhysiBoSS tutorials + +## Manuscript + +The manuscript of the paper is available here, and the supplementary materials (containing the detailed instructions to build the model) is available here + +## Binary file + +To obtain the tutorial binary file, you either need to download the pre-compiled binary using : +``` + python beta/download_binary.py tutorial +``` +or to compile the project using : +``` + make physiboss-tutorial; make -j +``` + +Both of these commands needs to be run from the root directory of PhysiCell. For more information, refer to the supplementary materials of the manuscript. + +## Model XML settings + +We provide several XML files in the config folders, for the different models. +To run these models, either load them from PhysiCell studio, or execute +``` + project +``` + +from the PhysiCell root folder, after obtaining the binary file as described above. + +### Cell fate model + +- config/simple_tnf/0_Initial.xml : Initial step of the model, with a growing tumour +- config/simple_tnf/1_Long_TNF.xml : Simulation of a long TNF treatment +- config/simple_tnf/1_Long_TNF_stochastic_time.xml : Simulation of a long TNF treatment, with cell desynchronisation +- config/simple_tnf/2_Short_TNF.xml : Simulation of pulsatile TNF treatment +- config/simple_tnf/3_Necrotic_core.xml : Simulation of a necrotic core in the tumour +- config/simple_tnf/4_Mutants.xml : Simulation of an heterogenous tumour, with a population resistant to the TNF treatment + +### Cell cycle model + +- config/cell_cycle/PhysiCell_settings.xml : Default simulation of the cell cycle +- config/cell_cycle/PhysiCell_settings_plk1_knockout.xml : Simulation of the cell cycle with a PLK1 inhibition +- config/cell_cycle/PhysiCell_settings_foxo3_knockout.xml : Simulation of the cell cycle with a FOXO3 inhibition +- config/cell_cycle/PhysiCell_settings_p110_knockin.xml : Simulation of the cell cycle with a p110 activation + +### Differentiation model + +- config/differentiation/PhysiCell_settings.xml : Default simulation of the T Cell differentiation model +- config/differentiation/PhysiCell_settings_FOXP3_2_mutant.xml : Simulation of the T Cell differentiation model with FOXP3_2 knockout in naive T cells +- config/differentiation/PhysiCell_settings_NFKB_mutant.xml : Simulation of the T Cell differentiation model with NFKB knockout in naive T cells +- config/differentiation/PhysiCell_settings_FOXP3_2_lower.xml : Simulation of the T Cell differentiation model with lower activation rate for FOXP3_2 in naive T cells +- config/differentiation/PhysiCell_settings_NFKB_lower.xml : Simulation of the T Cell differentiation model with lower activation rate for NFKB in naive T cells + + +## Scripts + +For reproducing our analysis of the Boolean models or the PhysiBoSS models, we are providing a collection of Jupyter notebooks available in the **scripts** folder. diff --git a/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings.xml b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings.xml new file mode 100644 index 000000000..6c5fb7566 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings.xml @@ -0,0 +1,294 @@ + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 2880 + min + micron + + 0.5 + 1 + 6 + + + + 6 + + + + output + + + 6 + true + + + + 6 + true + + substrate + 0.0 + 0.1 + + + + + false + + + + + false + true + false + + + + + + 100000.0 + 10 + + 0 + 0 + + + + + + true + true + + + ./config/initial.mat + + + + ./config/dirichlet.mat + + + + + + + + + + 0 + 0 + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 0.0 + + 0 + 86400 + + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + + 2494 + 0.75 + 540 + + 0.05 + 0.0045 + 0.0055 + + 0 + 0 + + 2.0 + + + + 0.4 + 10.0 + 1.25 + + 1 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + + + + 1 + 1 + .5 + + + false + true + + false + substrate + 1 + + + + + + + 0 + 1 + 0 + 0 + + + + + 0 + + 0 + + + 0 + + 1 + + 0 + + + + + 0 + + + + + + + config/cell_cycle/boolean_network/intracellular_model.bnd + config/cell_cycle/boolean_network/intracellular_model.cfg + + 2.5 + 0 + 37.5 + 0.0 + + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + ./config/cell_cycle + cells.csv + + + + + + + ./config/cell_cycle + cell_rules.csv + + + + + + + 0 + + + + + 0 + + + diff --git a/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_foxo3_knockout.xml b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_foxo3_knockout.xml new file mode 100644 index 000000000..bedea10b6 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_foxo3_knockout.xml @@ -0,0 +1,297 @@ + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 2880 + min + micron + + 0.5 + 1 + 6 + + + + 6 + + + + output + + + 6 + true + + + + 6 + true + + substrate + 0.0 + 0.1 + + + + + false + + + + + false + true + false + + + + + + 100000.0 + 10 + + 0 + 0 + + + + + + true + true + + + ./config/initial.mat + + + + ./config/dirichlet.mat + + + + + + + + + + 0 + 0 + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 0.0 + + 0 + 86400 + + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + + 2494 + 0.75 + 540 + + 0.05 + 0.0045 + 0.0055 + + 0 + 0 + + 2.0 + + + + 0.4 + 10.0 + 1.25 + + 1 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + + + + 1 + 1 + .5 + + + false + true + + false + substrate + 1 + + + + + + + 0 + 1 + 0 + 0 + + + + + 0 + + 0 + + + 0 + + 1 + + 0 + + + + + 0 + + + + + + + config/cell_cycle/boolean_network/intracellular_model.bnd + config/cell_cycle/boolean_network/intracellular_model.cfg + + 2.5 + 0 + 37.5 + 0.0 + + + 0.0 + + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + ./config/cell_cycle + cells.csv + + + + + + + ./config/cell_cycle + cell_rules.csv + + + + + + + 0 + + + + + 0 + + + diff --git a/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_foxo3_knockout_notebook.xml b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_foxo3_knockout_notebook.xml new file mode 100644 index 000000000..6027e3541 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_foxo3_knockout_notebook.xml @@ -0,0 +1,297 @@ + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 7200 + min + micron + + 0.5 + 1 + 6 + + + + 6 + + + + output + + + 30 + true + + + + 30 + true + + substrate + 0.0 + 0.1 + + + + + false + + + + + false + true + false + + + + + + 100000.0 + 10 + + 0 + 0 + + + + + + true + true + + + ./config/initial.mat + + + + ./config/dirichlet.mat + + + + + + + + + + 0 + 0 + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 0.0 + + 0 + 86400 + + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + + 2494 + 0.75 + 540 + + 0.05 + 0.0045 + 0.0055 + + 0 + 0 + + 2.0 + + + + 0.4 + 10.0 + 1.25 + + 1 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + + + + 1 + 1 + .5 + + + false + true + + false + substrate + 1 + + + + + + + 0 + 1 + 0 + 0 + + + + + 0 + + 0 + + + 0 + + 1 + + 0 + + + + + 0 + + + + + + + config/cell_cycle/boolean_network/intracellular_model.bnd + config/cell_cycle/boolean_network/intracellular_model.cfg + + 2.5 + 0 + 37.5 + 0.0 + + + 0.0 + + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + ./config/cell_cycle + more_cells.csv + + + + + + + ./config/cell_cycle + cell_rules.csv + + + + + + + 0 + + + + + 0 + + + diff --git a/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_notebook.xml b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_notebook.xml new file mode 100644 index 000000000..c09ed9616 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_notebook.xml @@ -0,0 +1,294 @@ + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 7200 + min + micron + + 0.5 + 1 + 6 + + + + 6 + + + + output + + + 30 + true + + + + 30 + true + + substrate + 0.0 + 0.1 + + + + + false + + + + + false + true + false + + + + + + 100000.0 + 10 + + 0 + 0 + + + + + + true + true + + + ./config/initial.mat + + + + ./config/dirichlet.mat + + + + + + + + + + 0 + 0 + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 0.0 + + 0 + 86400 + + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + + 2494 + 0.75 + 540 + + 0.05 + 0.0045 + 0.0055 + + 0 + 0 + + 2.0 + + + + 0.4 + 10.0 + 1.25 + + 1 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + + + + 1 + 1 + .5 + + + false + true + + false + substrate + 1 + + + + + + + 0 + 1 + 0 + 0 + + + + + 0 + + 0 + + + 0 + + 1 + + 0 + + + + + 0 + + + + + + + config/cell_cycle/boolean_network/intracellular_model.bnd + config/cell_cycle/boolean_network/intracellular_model.cfg + + 2.5 + 0 + 37.5 + 0.0 + + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + ./config/cell_cycle + more_cells.csv + + + + + + + ./config/cell_cycle + cell_rules.csv + + + + + + + 0 + + + + + 0 + + + diff --git a/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_p110_knockin.xml b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_p110_knockin.xml new file mode 100644 index 000000000..a32c2761a --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_p110_knockin.xml @@ -0,0 +1,297 @@ + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 2880 + min + micron + + 0.5 + 1 + 6 + + + + 6 + + + + output + + + 6 + true + + + + 6 + true + + substrate + 0.0 + 0.1 + + + + + false + + + + + false + true + false + + + + + + 100000.0 + 10 + + 0 + 0 + + + + + + true + true + + + ./config/initial.mat + + + + ./config/dirichlet.mat + + + + + + + + + + 0 + 0 + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 0.0 + + 0 + 86400 + + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + + 2494 + 0.75 + 540 + + 0.05 + 0.0045 + 0.0055 + + 0 + 0 + + 2.0 + + + + 0.4 + 10.0 + 1.25 + + 1 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + + + + 1 + 1 + .5 + + + false + true + + false + substrate + 1 + + + + + + + 0 + 1 + 0 + 0 + + + + + 0 + + 0 + + + 0 + + 1 + + 0 + + + + + 0 + + + + + + + config/cell_cycle/boolean_network/intracellular_model.bnd + config/cell_cycle/boolean_network/intracellular_model.cfg + + 2.5 + 0 + 37.5 + 0.0 + + + 1.0 + + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + ./config/cell_cycle + cells.csv + + + + + + + ./config/cell_cycle + cell_rules.csv + + + + + + + 0 + + + + + 0 + + + diff --git a/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_p110_knockin_notebook.xml b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_p110_knockin_notebook.xml new file mode 100644 index 000000000..175e26d43 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_p110_knockin_notebook.xml @@ -0,0 +1,297 @@ + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 4800 + min + micron + + 0.5 + 1 + 6 + + + + 6 + + + + output + + + 30 + true + + + + 30 + true + + substrate + 0.0 + 0.1 + + + + + false + + + + + false + true + false + + + + + + 100000.0 + 10 + + 0 + 0 + + + + + + true + true + + + ./config/initial.mat + + + + ./config/dirichlet.mat + + + + + + + + + + 0 + 0 + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 0.0 + + 0 + 86400 + + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + + 2494 + 0.75 + 540 + + 0.05 + 0.0045 + 0.0055 + + 0 + 0 + + 2.0 + + + + 0.4 + 10.0 + 1.25 + + 1 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + + + + 1 + 1 + .5 + + + false + true + + false + substrate + 1 + + + + + + + 0 + 1 + 0 + 0 + + + + + 0 + + 0 + + + 0 + + 1 + + 0 + + + + + 0 + + + + + + + config/cell_cycle/boolean_network/intracellular_model.bnd + config/cell_cycle/boolean_network/intracellular_model.cfg + + 2.5 + 0 + 37.5 + 0.0 + + + 1.0 + + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + ./config/cell_cycle + more_cells.csv + + + + + + + ./config/cell_cycle + cell_rules.csv + + + + + + + 0 + + + + + 0 + + + diff --git a/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_plk1_knockout.xml b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_plk1_knockout.xml new file mode 100644 index 000000000..1bf0ae6d9 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_plk1_knockout.xml @@ -0,0 +1,297 @@ + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 2880 + min + micron + + 0.5 + 1 + 6 + + + + 6 + + + + output + + + 6 + true + + + + 6 + true + + substrate + 0.0 + 0.1 + + + + + false + + + + + false + true + false + + + + + + 100000.0 + 10 + + 0 + 0 + + + + + + true + true + + + ./config/initial.mat + + + + ./config/dirichlet.mat + + + + + + + + + + 0 + 0 + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 0.0 + + 0 + 86400 + + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + + 2494 + 0.75 + 540 + + 0.05 + 0.0045 + 0.0055 + + 0 + 0 + + 2.0 + + + + 0.4 + 10.0 + 1.25 + + 1 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + + + + 1 + 1 + .5 + + + false + true + + false + substrate + 1 + + + + + + + 0 + 1 + 0 + 0 + + + + + 0 + + 0 + + + 0 + + 1 + + 0 + + + + + 0 + + + + + + + config/cell_cycle/boolean_network/intracellular_model.bnd + config/cell_cycle/boolean_network/intracellular_model.cfg + + 2.5 + 0 + 37.5 + 0.0 + + + 0.0 + + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + ./config/cell_cycle + cells.csv + + + + + + + ./config/cell_cycle + cell_rules.csv + + + + + + + 0 + + + + + 0 + + + diff --git a/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_plk1_knockout_notebook.xml b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_plk1_knockout_notebook.xml new file mode 100644 index 000000000..c60b92823 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/PhysiCell_settings_plk1_knockout_notebook.xml @@ -0,0 +1,297 @@ + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 7200 + min + micron + + 0.5 + 1 + 6 + + + + 6 + + + + output + + + 30 + true + + + + 30 + true + + substrate + 0.0 + 0.1 + + + + + false + + + + + false + true + false + + + + + + 100000.0 + 10 + + 0 + 0 + + + + + + true + true + + + ./config/initial.mat + + + + ./config/dirichlet.mat + + + + + + + + + + 0 + 0 + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 0.0 + + 0 + 86400 + + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + + 2494 + 0.75 + 540 + + 0.05 + 0.0045 + 0.0055 + + 0 + 0 + + 2.0 + + + + 0.4 + 10.0 + 1.25 + + 1 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 0.0 + 0.0 + + + + 1 + 1 + .5 + + + false + true + + false + substrate + 1 + + + + + + + 0 + 1 + 0 + 0 + + + + + 0 + + 0 + + + 0 + + 1 + + 0 + + + + + 0 + + + + + + + config/cell_cycle/boolean_network/intracellular_model.bnd + config/cell_cycle/boolean_network/intracellular_model.cfg + + 2.5 + 0 + 37.5 + 0.0 + + + 0.0 + + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + ./config/cell_cycle + more_cells.csv + + + + + + + ./config/cell_cycle + cell_rules.csv + + + + + + + 0 + + + + + 0 + + + diff --git a/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/boolean_network/intracellular_model.bnd b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/boolean_network/intracellular_model.bnd new file mode 100644 index 000000000..35abf81aa --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/boolean_network/intracellular_model.bnd @@ -0,0 +1,633 @@ +Node G0G1_entry { + + logic = (CyclinD1 & !CyclinA) & !(G2M_entry & S_entry) & !S_entry; + rate_up = @logic ? $u_G0G1_entry : 0; + rate_down = @logic ? 0 : $d_G0G1_entry; + +} + +Node S_entry { + + logic = ((CyclinE & G0G1_entry) | (CyclinA & G0G1_entry ) | (CyclinE & S_entry) | (CyclinA & S_entry)) & !(G0G1_entry & G2M_entry) & !G2M_entry ; + rate_up = @logic ? $u_S_entry : 0; + rate_down = @logic ? 0 : $d_S_entry; + +} + +Node G2M_entry { + + logic = ((CyclinB & S_entry) | (CyclinB & G2M_entry)) & !(G0G1_entry & S_entry) & !G0G1_entry; + rate_up = @logic ? $u_G2M_entry : 0; + rate_down = @logic ? 0 : $d_G2M_entry; + +} + +Node GF { + + logic = (!GF & GF_High) | (GF); + rate_up = @logic ? $u_GF : 0; + rate_down = @logic ? 0 : $d_GF; +} + +Node Casp9 { + + logic = (!Cyto_C & Casp3) | (Cyto_C & !IAPs) | (Cyto_C & IAPs & Casp3); + rate_up = @logic ? $u_Casp9 : 0; + rate_down = @logic ? 0 : $d_Casp9; +} + +Node Casp3 { + + logic = (!Casp8 & !IAPs & !Casp9 & Casp3) | (!Casp8 & !IAPs & Casp9) | (!Casp8 & IAPs & Casp9 & Casp3) | (Casp8 & !IAPs) | (Casp8 & IAPs & !Casp9 & Casp3) | (Casp8 & IAPs & Casp9); + rate_up = @logic ? $u_Casp3 : 0; + rate_down = @logic ? 0 : $d_Casp3; +} + +Node Casp8 { + + logic = (!Casp3 & DR4_5) | (Casp3); + rate_up = @logic ? $u_Casp8 : 0; + rate_down = @logic ? 0 : $d_Casp8; +} + +Node Cdc6 { + + logic = (!E2F1 & ORC & Cdc6 & Cdt1 & Pre_RC & !CyclinA & !Casp3) | (!E2F1 & ORC & Cdc6 & Cdt1 & Pre_RC & CyclinA & !f4N_DNA & !Casp3) | (E2F1 & ORC & !Cdc6 & !CyclinA & !Plk1 & !Casp3) | (E2F1 & ORC & !Cdc6 & CyclinA & !Plk1 & !f4N_DNA & !Casp3) | (E2F1 & ORC & Cdc6 & !Cdt1 & !CyclinA & !Plk1 & !Casp3) | (E2F1 & ORC & Cdc6 & !Cdt1 & CyclinA & !Plk1 & !f4N_DNA & !Casp3) | (E2F1 & ORC & Cdc6 & Cdt1 & !Pre_RC & !CyclinA & !Plk1 & !Casp3) | (E2F1 & ORC & Cdc6 & Cdt1 & !Pre_RC & CyclinA & !Plk1 & !f4N_DNA & !Casp3) | (E2F1 & ORC & Cdc6 & Cdt1 & Pre_RC & !CyclinA & !Casp3) | (E2F1 & ORC & Cdc6 & Cdt1 & Pre_RC & CyclinA & !f4N_DNA & !Casp3); + rate_up = @logic ? $u_Cdc6 : 0; + rate_down = @logic ? 0 : $d_Cdc6; +} + +Node Cdt1 { + + logic = (!pRB & !Myc & E2F1 & !CyclinE & ORC & Cdc6 & !geminin) | (!pRB & !Myc & E2F1 & CyclinE & ORC & Cdc6 & !geminin & !Cdc25A) | (!pRB & !Myc & E2F1 & CyclinE & ORC & Cdc6 & !geminin & Cdc25A & !CyclinA) | (!pRB & Myc & !E2F1 & !CyclinE & ORC & Cdc6 & Pre_RC & !geminin) | (!pRB & Myc & !E2F1 & CyclinE & ORC & Cdc6 & Pre_RC & !geminin & !Cdc25A) | (!pRB & Myc & !E2F1 & CyclinE & ORC & Cdc6 & Pre_RC & !geminin & Cdc25A & !CyclinA) | (!pRB & Myc & E2F1 & !CyclinE & ORC & Cdc6 & !geminin) | (!pRB & Myc & E2F1 & CyclinE & ORC & Cdc6 & !geminin & !Cdc25A) | (!pRB & Myc & E2F1 & CyclinE & ORC & Cdc6 & !geminin & Cdc25A & !CyclinA) | (pRB & !Myc & E2F1 & !CyclinE & ORC & Cdc6 & Pre_RC & !geminin) | (pRB & !Myc & E2F1 & CyclinE & ORC & Cdc6 & Pre_RC & !geminin & !Cdc25A) | (pRB & !Myc & E2F1 & CyclinE & ORC & Cdc6 & Pre_RC & !geminin & Cdc25A & !CyclinA) | (pRB & Myc & !E2F1 & !CyclinE & ORC & Cdc6 & Pre_RC & !geminin) | (pRB & Myc & !E2F1 & CyclinE & ORC & Cdc6 & Pre_RC & !geminin & !Cdc25A) | (pRB & Myc & !E2F1 & CyclinE & ORC & Cdc6 & Pre_RC & !geminin & Cdc25A & !CyclinA) | (pRB & Myc & E2F1 & !CyclinE & ORC & Cdc6 & !geminin) | (pRB & Myc & E2F1 & CyclinE & ORC & Cdc6 & !geminin & !Cdc25A) | (pRB & Myc & E2F1 & CyclinE & ORC & Cdc6 & !geminin & Cdc25A & !CyclinA); + rate_up = @logic ? $u_Cdt1 : 0; + rate_down = @logic ? 0 : $d_Cdt1; +} + +Node Cdc25A { + + logic = (!GSK3 & !pRB & !E2F1 & !CyclinE & FoxM1 & !CyclinA & !CyclinB & !Cdh1 & !CHK1) | (!GSK3 & !pRB & !E2F1 & !CyclinE & FoxM1 & !CyclinA & CyclinB & !Cdk1 & !Cdh1 & !CHK1) | (!GSK3 & !pRB & !E2F1 & !CyclinE & FoxM1 & !CyclinA & CyclinB & Cdk1 & !Cdh1) | (!GSK3 & !pRB & !E2F1 & !CyclinE & FoxM1 & CyclinA & !Cdh1) | (!GSK3 & !pRB & !E2F1 & CyclinE & FoxM1 & !Cdh1) | (!GSK3 & !pRB & E2F1 & !CyclinE & !FoxM1 & !CyclinA & !CyclinB & !Cdh1 & !CHK1) | (!GSK3 & !pRB & E2F1 & !CyclinE & !FoxM1 & !CyclinA & CyclinB & !Cdk1 & !Cdh1 & !CHK1) | (!GSK3 & !pRB & E2F1 & !CyclinE & !FoxM1 & !CyclinA & CyclinB & Cdk1 & !Cdh1) | (!GSK3 & !pRB & E2F1 & !CyclinE & !FoxM1 & CyclinA & !Cdh1) | (!GSK3 & !pRB & E2F1 & !CyclinE & FoxM1 & !CyclinA & !CyclinB & !CHK1) | (!GSK3 & !pRB & E2F1 & !CyclinE & FoxM1 & !CyclinA & CyclinB & !Cdk1 & !CHK1) | (!GSK3 & !pRB & E2F1 & !CyclinE & FoxM1 & !CyclinA & CyclinB & Cdk1) | (!GSK3 & !pRB & E2F1 & !CyclinE & FoxM1 & CyclinA) | (!GSK3 & !pRB & E2F1 & CyclinE & !FoxM1 & !Cdh1) | (!GSK3 & !pRB & E2F1 & CyclinE & FoxM1) | (!GSK3 & pRB & !CyclinE & FoxM1 & !CyclinA & !CyclinB & !Cdh1 & !CHK1) | (!GSK3 & pRB & !CyclinE & FoxM1 & !CyclinA & CyclinB & !Cdk1 & !Cdh1 & !CHK1) | (!GSK3 & pRB & !CyclinE & FoxM1 & !CyclinA & CyclinB & Cdk1 & !Cdh1) | (!GSK3 & pRB & !CyclinE & FoxM1 & CyclinA & !Cdh1) | (!GSK3 & pRB & CyclinE & FoxM1 & !Cdh1) | (GSK3 & !pRB & !E2F1 & !CyclinE & FoxM1 & !CyclinA & CyclinB & Cdk1 & !Cdh1) | (GSK3 & !pRB & !E2F1 & !CyclinE & FoxM1 & CyclinA & !Cdh1) | (GSK3 & !pRB & !E2F1 & CyclinE & FoxM1 & !Cdh1) | (GSK3 & !pRB & E2F1 & !CyclinE & !FoxM1 & !CyclinA & CyclinB & Cdk1 & !Cdh1) | (GSK3 & !pRB & E2F1 & !CyclinE & !FoxM1 & CyclinA & !Cdh1) | (GSK3 & !pRB & E2F1 & !CyclinE & FoxM1 & !CyclinA & CyclinB & Cdk1) | (GSK3 & !pRB & E2F1 & !CyclinE & FoxM1 & CyclinA) | (GSK3 & !pRB & E2F1 & CyclinE & !FoxM1 & !Cdh1) | (GSK3 & !pRB & E2F1 & CyclinE & FoxM1) | (GSK3 & pRB & !CyclinE & FoxM1 & !CyclinA & CyclinB & Cdk1 & !Cdh1) | (GSK3 & pRB & !CyclinE & FoxM1 & CyclinA & !Cdh1) | (GSK3 & pRB & CyclinE & FoxM1 & !Cdh1); + rate_up = @logic ? $u_Cdc25A : 0; + rate_down = @logic ? 0 : $d_Cdc25A; +} + +Node Cdk1 { + + logic = (!Wee1 & CyclinB & Cdc25C & !Cdk1 & !CHK1) | (!Wee1 & CyclinB & Cdc25C & Cdk1) | (Wee1 & CyclinB & Cdc25C & !CHK1); + rate_up = @logic ? $u_Cdk1 : 0; + rate_down = @logic ? 0 : $d_Cdk1; +} + +Node Cdc25B { + + logic = (FoxM1 & f4N_DNA); + rate_up = @logic ? $u_Cdc25B : 0; + rate_down = @logic ? 0 : $d_Cdc25B; +} + +Node CHK1 { + + logic = (ATR); + rate_up = @logic ? $u_CHK1 : 0; + rate_down = @logic ? 0 : $d_CHK1; +} + +Node Ca2 { + + logic = (IP3); + rate_up = @logic ? $u_Ca2 : 0; + rate_down = @logic ? 0 : $d_Ca2; +} + +Node Cdc25C { + + logic = (!CyclinB & Cdc25B & Plk1 & f4N_DNA & !CHK1) | (CyclinB & !Cdc25B & Plk1 & Cdk1 & f4N_DNA) | (CyclinB & Cdc25B & Plk1 & !Cdk1 & f4N_DNA & !CHK1) | (CyclinB & Cdc25B & Plk1 & Cdk1 & f4N_DNA); + rate_up = @logic ? $u_Cdc25C : 0; + rate_down = @logic ? 0 : $d_Cdc25C; +} + + +Node ATR { + + logic = (Replication); + rate_up = @logic ? $u_ATR : 0; + rate_down = @logic ? 0 : $d_ATR; +} + +Node RTK { + + logic = (!GF & !CAD & GF_High) | (GF & !CAD); + rate_up = @logic ? $u_RTK : 0; + rate_down = @logic ? 0 : $d_RTK; +} + +Node Grb2 { + + logic = (RTK & GF_High); + rate_up = @logic ? $u_Grb2 : 0; + rate_down = @logic ? 0 : $d_Grb2; +} + +Node Ras { + + logic = (Grb2 & SOS); + rate_up = @logic ? $u_Ras : 0; + rate_down = @logic ? 0 : $d_Ras; +} + +Node RAF { + + logic = (Ras & !Casp3); + rate_up = @logic ? $u_RAF : 0; + rate_down = @logic ? 0 : $d_RAF; +} + +Node mTORC2 { + + logic = (!PIP3 & !S6K) | (PIP3); + rate_up = @logic ? $u_mTORC2 : 0; + rate_down = @logic ? 0 : $d_mTORC2; +} + +Node PI3K { + + logic = (!RTK & Ras) | (RTK); + rate_up = @logic ? $u_PI3K : 0; + rate_down = @logic ? 0 : $d_PI3K; +} + +Node PIP3 { + + logic = (!PI3K & PI3K_H) | (PI3K); + rate_up = @logic ? $u_PIP3 : 0; + rate_down = @logic ? 0 : $d_PIP3; +} + +Node PDK1 { + + logic = (PI3K & PIP3); + rate_up = @logic ? $u_PDK1 : 0; + rate_down = @logic ? 0 : $d_PDK1; +} + +Node AKT_B { + + logic = (!mTORC2 & PIP3 & PDK1 & !Casp3) | (mTORC2 & PIP3 & !Casp3); + rate_up = @logic ? $u_AKT_B : 0; + rate_down = @logic ? 0 : $d_AKT_B; +} + +Node p110_H { + + logic = (!p110_H & FoxO3 & !NeddL4) | (p110_H & !FoxO3 & !NeddL4) | (p110_H & FoxO3); + rate_up = @logic ? $u_p110_H : 0; + rate_down = @logic ? 0 : $d_p110_H; +} + +Node PI3K_H { + + logic = (RTK & Ras & PI3K & p110_H); + rate_up = @logic ? $u_PI3K_H : 0; + rate_down = @logic ? 0 : $d_PI3K_H; +} + +Node AKT_H { + + logic = (Ras & mTORC2 & PIP3 & PDK1 & AKT_B & p110_H & PI3K_H); + rate_up = @logic ? $u_AKT_H : 0; + rate_down = @logic ? 0 : $d_AKT_H; +} + +Node FoxO3 { + + logic = (!AKT_B & !AKT_H & !Plk1) | (!AKT_B & !AKT_H & Plk1 & !Plk1_H) | (!AKT_B & !AKT_H & Plk1 & Plk1_H & !ERK) | (!AKT_B & AKT_H & !Plk1 & !Plk1_H & !ERK) | (AKT_B & !AKT_H & !Plk1) | (AKT_B & !AKT_H & Plk1 & !Plk1_H) | (AKT_B & !AKT_H & Plk1 & Plk1_H & !ERK); + rate_up = @logic ? $u_FoxO3 : 0; + rate_down = @logic ? 0 : $d_FoxO3; +} + +Node PLCgamma { + + logic = (RTK & Grb2 & PIP3 & p110_H & PI3K_H); + rate_up = @logic ? $u_PLCgamma : 0; + rate_down = @logic ? 0 : $d_PLCgamma; +} + +Node NeddL4 { + + logic = (Ca2 & IP3); + rate_up = @logic ? $u_NeddL4 : 0; + rate_down = @logic ? 0 : $d_NeddL4; +} + +Node FoxO1 { + + logic = (!AKT_H & !Plk1); + rate_up = @logic ? $u_FoxO1 : 0; + rate_down = @logic ? 0 : $d_FoxO1; +} + +Node p21_mRNA { + + logic = (!FoxO3 & FoxO1 & !Myc) | (FoxO3 & !FoxO1 & !Myc) | (FoxO3 & FoxO1); + rate_up = @logic ? $u_p21_mRNA : 0; + rate_down = @logic ? 0 : $d_p21_mRNA; +} + +Node TSC2 { + + logic = (!AKT_B & !AKT_H) | (!AKT_B & AKT_H & !ERK) | (AKT_B & !AKT_H); + rate_up = @logic ? $u_TSC2 : 0; + rate_down = @logic ? 0 : $d_TSC2; +} + +Node PRAS40 { + + logic = (!AKT_B & !AKT_H) | (AKT_B & !AKT_H & !mTORC1); + rate_up = @logic ? $u_PRAS40 : 0; + rate_down = @logic ? 0 : $d_PRAS40; +} + +Node Rheb { + + logic = (!TSC2 & DAG); + rate_up = @logic ? $u_Rheb : 0; + rate_down = @logic ? 0 : $d_Rheb; +} + +Node mTORC1 { + + logic = (!PRAS40 & !Rheb & !GSK3 & E2F1 & !Casp3) | (!PRAS40 & !Rheb & GSK3 & !E2F1 & CyclinB & Cdk1 & !Casp3) | (!PRAS40 & !Rheb & GSK3 & E2F1 & !Casp3) | (!PRAS40 & Rheb & !Casp3) | (PRAS40 & !GSK3 & E2F1 & !Casp3) | (PRAS40 & GSK3 & !E2F1 & CyclinB & Cdk1 & !Casp3) | (PRAS40 & GSK3 & E2F1 & !Casp3); + rate_up = @logic ? $u_mTORC1 : 0; + rate_down = @logic ? 0 : $d_mTORC1; +} + +Node S6K { + + logic = (mTORC1 & !Casp3); + rate_up = @logic ? $u_S6K : 0; + rate_down = @logic ? 0 : $d_S6K; +} + +Node eIF4E { + + logic = (mTORC1 & !Casp3); + rate_up = @logic ? $u_eIF4E : 0; + rate_down = @logic ? 0 : $d_eIF4E; +} + +Node GSK3 { + + logic = (!AKT_H & !S6K) | (!AKT_H & S6K & !ERK); + rate_up = @logic ? $u_GSK3 : 0; + rate_down = @logic ? 0 : $d_GSK3; +} + +Node p21 { + + logic = (p21_mRNA & !CyclinE & !Casp3); + rate_up = @logic ? $u_p21 : 0; + rate_down = @logic ? 0 : $d_p21; +} + +Node pRB { + + logic = (!p27Kip1 & !CyclinD1 & !CyclinE & !CyclinA & !Casp3) | (p27Kip1 & !CyclinD1 & !CyclinA & !Casp3); + rate_up = @logic ? $u_pRB : 0; + rate_down = @logic ? 0 : $d_pRB; +} + +Node p27Kip1 { + + logic = (!FoxO3 & !FoxO1 & !CyclinD1 & !CyclinE & !CyclinA & !CyclinB & !Casp3) | (!FoxO3 & !FoxO1 & !CyclinD1 & !CyclinE & !CyclinA & CyclinB & !Cdk1 & !Casp3) | (!FoxO3 & FoxO1 & !CyclinD1 & !CyclinA & !CyclinB & !Casp3) | (!FoxO3 & FoxO1 & !CyclinD1 & !CyclinA & CyclinB & !Cdk1 & !Casp3) | (FoxO3 & !FoxO1 & !CyclinD1 & !CyclinA & !CyclinB & !Casp3) | (FoxO3 & !FoxO1 & !CyclinD1 & !CyclinA & CyclinB & !Cdk1 & !Casp3) | (FoxO3 & FoxO1 & !CyclinD1 & !CyclinE & !CyclinB & !Casp3) | (FoxO3 & FoxO1 & !CyclinD1 & !CyclinE & CyclinB & !Cdk1 & !Casp3) | (FoxO3 & FoxO1 & !CyclinD1 & CyclinE & !CyclinA & !CyclinB & !Casp3) | (FoxO3 & FoxO1 & !CyclinD1 & CyclinE & !CyclinA & CyclinB & !Cdk1 & !Casp3); + rate_up = @logic ? $u_p27Kip1 : 0; + rate_down = @logic ? 0 : $d_p27Kip1; +} + +Node Myc { + + logic = (!eIF4E & !GSK3 & !pRB & !E2F1 & ERK) | (!eIF4E & !GSK3 & !pRB & E2F1) | (!eIF4E & !GSK3 & pRB & ERK) | (!eIF4E & GSK3 & !pRB & E2F1 & ERK) | (eIF4E & !pRB & !E2F1 & ERK) | (eIF4E & !pRB & E2F1) | (eIF4E & pRB & ERK); + rate_up = @logic ? $u_Myc : 0; + rate_down = @logic ? 0 : $d_Myc; +} + +Node CyclinD1 { + + logic = (!GSK3 & !p21 & !Myc & E2F1 & !CHK1) | (!GSK3 & !p21 & Myc & !CHK1) | (!GSK3 & p21 & !pRB & !Myc & CyclinD1 & E2F1 & !CHK1) | (!GSK3 & p21 & !pRB & Myc & E2F1 & !CHK1) | (GSK3 & !p21 & !Myc & CyclinD1 & E2F1 & !CHK1) | (GSK3 & !p21 & Myc & !CyclinD1 & E2F1 & !CHK1) | (GSK3 & !p21 & Myc & CyclinD1 & !CHK1) | (GSK3 & p21 & !pRB & Myc & CyclinD1 & E2F1 & !CHK1); + rate_up = @logic ? $u_CyclinD1 : 0; + rate_down = @logic ? 0 : $d_CyclinD1; +} + +Node E2F1 { + + logic = (!pRB & !Myc & E2F1 & !CyclinA & !CAD) | (!pRB & Myc & !CyclinA & !CAD); + rate_up = @logic ? $u_E2F1 : 0; + rate_down = @logic ? 0 : $d_E2F1; +} + +Node CyclinE { + + logic = (!pRB & !p27Kip1 & E2F1 & Cdc6 & Pre_RC & !Casp3 & !CHK1); + rate_up = @logic ? $u_CyclinE : 0; + rate_down = @logic ? 0 : $d_CyclinE; +} + +Node ORC { + + logic = (!E2F1 & Cdc6 & Cdt1 & Pre_RC) | (E2F1); + rate_up = @logic ? $u_ORC : 0; + rate_down = @logic ? 0 : $d_ORC; +} + +Node Pre_RC { + + logic = (ORC & Cdc6 & Cdt1 & !Replication) | (ORC & Cdc6 & Cdt1 & Replication & !f4N_DNA); + rate_up = @logic ? $u_Pre_RC : 0; + rate_down = @logic ? 0 : $d_Pre_RC; +} + +Node geminin { + + logic = (E2F1 & !pAPC & !Cdh1) | (E2F1 & pAPC & !Cdc20 & !Cdh1); + rate_up = @logic ? $u_geminin : 0; + rate_down = @logic ? 0 : $d_geminin; +} + +Node CyclinA_mRNA { + + logic = (!pRB & !E2F1 & FoxM1 & !CAD) | (!pRB & E2F1 & !CAD) | (pRB & FoxM1 & !CAD); + rate_up = @logic ? $u_CyclinA_mRNA : 0; + rate_down = @logic ? 0 : $d_CyclinA_mRNA; +} + +Node Emi1 { + + logic = (!p21 & !CyclinB) | (!p21 & CyclinB & !Plk1) | (!p21 & CyclinB & Plk1 & !Cdk1) | (!p21 & CyclinB & Plk1 & Cdk1 & !U_Kinetochores & !A_Kinetochores) | (p21 & !pRB & !CyclinB) | (p21 & !pRB & CyclinB & !Plk1) | (p21 & !pRB & CyclinB & Plk1 & !Cdk1) | (p21 & !pRB & CyclinB & Plk1 & Cdk1 & !U_Kinetochores & !A_Kinetochores) | (p21 & pRB & E2F1 & !CyclinB) | (p21 & pRB & E2F1 & CyclinB & !Plk1) | (p21 & pRB & E2F1 & CyclinB & Plk1 & !Cdk1) | (p21 & pRB & E2F1 & CyclinB & Plk1 & Cdk1 & !U_Kinetochores & !A_Kinetochores); + rate_up = @logic ? $u_Emi1 : 0; + rate_down = @logic ? 0 : $d_Emi1; +} + +Node FoxM1 { + + logic = (!Myc & !Cdc25A & CyclinB & Plk1 & Cdk1) | (!Myc & Cdc25A & !CyclinA & CyclinB & Plk1 & Cdk1) | (!Myc & Cdc25A & CyclinA & !CyclinB & Cdc25B) | (!Myc & Cdc25A & CyclinA & CyclinB & !Cdc25B & Plk1 & Cdk1) | (!Myc & Cdc25A & CyclinA & CyclinB & Cdc25B) | (Myc & !CyclinE & !Cdc25A & CyclinB & Plk1 & Cdk1) | (Myc & !CyclinE & Cdc25A & !CyclinA & CyclinB & Plk1 & Cdk1) | (Myc & !CyclinE & Cdc25A & CyclinA & !CyclinB & Cdc25B) | (Myc & !CyclinE & Cdc25A & CyclinA & CyclinB & !Cdc25B & Plk1 & Cdk1) | (Myc & !CyclinE & Cdc25A & CyclinA & CyclinB & Cdc25B) | (Myc & CyclinE); + rate_up = @logic ? $u_FoxM1 : 0; + rate_down = @logic ? 0 : $d_FoxM1; +} + +Node CyclinA { + + logic = (CyclinA_mRNA & !Emi1 & !Cdc25A & CyclinA & !UbcH10 & !pAPC & !Cdh1) | (CyclinA_mRNA & !Emi1 & Cdc25A & !pAPC & !Cdh1) | (CyclinA_mRNA & Emi1 & !Cdc25A & CyclinA & !UbcH10 & !pAPC) | (CyclinA_mRNA & Emi1 & !Cdc25A & CyclinA & UbcH10 & !pAPC & !Cdh1) | (CyclinA_mRNA & Emi1 & Cdc25A & !pAPC); + rate_up = @logic ? $u_CyclinA : 0; + rate_down = @logic ? 0 : $d_CyclinA; +} + +Node Wee1 { + + logic = (!CyclinA & !CyclinB & !Replication & !Casp3 & CHK1) | (!CyclinA & !CyclinB & Replication & !Casp3) | (!CyclinA & CyclinB & !Cdk1 & !Replication & !Casp3 & CHK1) | (!CyclinA & CyclinB & !Cdk1 & Replication & !Casp3) | (CyclinA & !CyclinB & !Plk1 & !Replication & !Casp3 & CHK1) | (CyclinA & !CyclinB & !Plk1 & Replication & !Casp3) | (CyclinA & !CyclinB & Plk1 & !Cdk1 & !Replication & !Casp3 & CHK1) | (CyclinA & !CyclinB & Plk1 & !Cdk1 & Replication & !Casp3) | (CyclinA & !CyclinB & Plk1 & Cdk1 & !Casp3 & CHK1) | (CyclinA & CyclinB & !Cdk1 & !Replication & !Casp3 & CHK1) | (CyclinA & CyclinB & !Cdk1 & Replication & !Casp3); + rate_up = @logic ? $u_Wee1 : 0; + rate_down = @logic ? 0 : $d_Wee1; +} + +Node UbcH10 { + + logic = (!CyclinA & !UbcH10 & !Cdh1) | (!CyclinA & UbcH10 & !CyclinB & !Cdc20 & !Cdh1) | (!CyclinA & UbcH10 & !CyclinB & Cdc20) | (!CyclinA & UbcH10 & CyclinB) | (CyclinA & !UbcH10 & !Cdh1) | (CyclinA & UbcH10); + rate_up = @logic ? $u_UbcH10 : 0; + rate_down = @logic ? 0 : $d_UbcH10; +} + +Node CyclinB { + + logic = (!FoxO3 & FoxM1 & !pAPC & !Cdh1) | (!FoxO3 & FoxM1 & pAPC & !Cdc20 & !Cdh1) | (FoxO3 & !FoxM1 & CyclinB & !pAPC & !Cdh1) | (FoxO3 & !FoxM1 & CyclinB & pAPC & !Cdc20 & !Cdh1) | (FoxO3 & FoxM1 & !pAPC & !Cdh1) | (FoxO3 & FoxM1 & pAPC & !Cdc20 & !Cdh1); + rate_up = @logic ? $u_CyclinB : 0; + rate_down = @logic ? 0 : $d_CyclinB; +} + +Node Plk1 { + + logic = (!FoxM1 & !Cdc25A & CyclinB & Cdk1 & !Cdh1 & Plk1_H) | (!FoxM1 & Cdc25A & !CyclinA & CyclinB & Cdk1 & !Cdh1 & Plk1_H) | (!FoxM1 & Cdc25A & CyclinA & !Wee1 & !Cdh1 & Plk1_H) | (!FoxM1 & Cdc25A & CyclinA & Wee1 & CyclinB & Cdk1 & !Cdh1 & Plk1_H) | (FoxM1 & !Cdc25A & CyclinB & Cdk1 & !Cdh1) | (FoxM1 & Cdc25A & !CyclinA & CyclinB & Cdk1 & !Cdh1) | (FoxM1 & Cdc25A & CyclinA & !Wee1 & !Cdh1) | (FoxM1 & Cdc25A & CyclinA & Wee1 & CyclinB & Cdk1 & !Cdh1); + rate_up = @logic ? $u_Plk1 : 0; + rate_down = @logic ? 0 : $d_Plk1; +} + +Node pAPC { + + logic = (!CyclinB & pAPC & Cdc20) | (CyclinB & !Plk1 & !Cdk1 & pAPC & Cdc20) | (CyclinB & !Plk1 & Cdk1 & pAPC) | (CyclinB & Plk1 & !Cdk1 & pAPC & Cdc20) | (CyclinB & Plk1 & Cdk1); + rate_up = @logic ? $u_pAPC : 0; + rate_down = @logic ? 0 : $d_pAPC; +} + +Node Cdc20 { + + logic = (!Emi1 & !CyclinA & !CyclinB & pAPC & !Cdh1) | (!Emi1 & !CyclinA & CyclinB & !Cdk1 & pAPC & !Cdh1) | (!Emi1 & !CyclinA & CyclinB & Cdk1 & pAPC & !Cdh1 & !Mad2) | (!Emi1 & CyclinA & pAPC & !Cdh1 & !Mad2); + rate_up = @logic ? $u_Cdc20 : 0; + rate_down = @logic ? 0 : $d_Cdc20; +} + +Node Cdh1 { + + logic = (!Emi1 & !Cdc25A & !CyclinB) | (!Emi1 & !Cdc25A & CyclinB & !Cdk1) | (!Emi1 & Cdc25A & !CyclinA & !CyclinB) | (!Emi1 & Cdc25A & !CyclinA & CyclinB & !Cdk1) | (Emi1 & !CyclinA & !CyclinB) | (Emi1 & !CyclinA & CyclinB & !Cdk1); + rate_up = @logic ? $u_Cdh1 : 0; + rate_down = @logic ? 0 : $d_Cdh1; +} + +Node Replication { + + logic = (!E2F1 & Pre_RC & Cdc25A & CyclinA & Replication & !f4N_DNA & !CAD) | (E2F1 & !CyclinE & Pre_RC & Cdc25A & CyclinA & Replication & !CAD) | (E2F1 & CyclinE & Pre_RC & Cdc25A & !CAD); + rate_up = @logic ? $u_Replication : 0; + rate_down = @logic ? 0 : $d_Replication; +} + +Node f4N_DNA { + + logic = (!Pre_RC & !Replication & f4N_DNA & !Ect2 & !CAD) | (!Pre_RC & Replication & f4N_DNA & !CAD) | (Pre_RC & !CyclinA & !Replication & f4N_DNA & !Ect2 & !CAD) | (Pre_RC & !CyclinA & Replication & f4N_DNA & !CAD) | (Pre_RC & CyclinA & !Replication & f4N_DNA & !Ect2 & !CAD) | (Pre_RC & CyclinA & Replication & !CAD); + rate_up = @logic ? $u_f4N_DNA : 0; + rate_down = @logic ? 0 : $d_f4N_DNA; +} + +Node U_Kinetochores { + + logic = (!CyclinB & !Cdh1 & f4N_DNA & U_Kinetochores & !A_Kinetochores) | (CyclinB & !Cdk1 & !Cdh1 & f4N_DNA & U_Kinetochores & !A_Kinetochores) | (CyclinB & Cdk1 & !Cdh1 & f4N_DNA & !A_Kinetochores); + rate_up = @logic ? $u_U_Kinetochores : 0; + rate_down = @logic ? 0 : $d_U_Kinetochores; +} + +Node Mad2 { + + logic = (U_Kinetochores & !A_Kinetochores); + rate_up = @logic ? $u_Mad2 : 0; + rate_down = @logic ? 0 : $d_Mad2; +} + +Node A_Kinetochores { + + logic = (!CyclinB & !pAPC & !Cdh1 & f4N_DNA & A_Kinetochores) | (!CyclinB & pAPC & !Cdc20 & !Cdh1 & f4N_DNA & A_Kinetochores) | (CyclinB & !Plk1 & !pAPC & !Cdh1 & f4N_DNA & A_Kinetochores) | (CyclinB & !Plk1 & pAPC & !Cdc20 & !Cdh1 & f4N_DNA & A_Kinetochores) | (CyclinB & Plk1 & !Cdk1 & !pAPC & !Cdh1 & f4N_DNA & A_Kinetochores) | (CyclinB & Plk1 & !Cdk1 & pAPC & !Cdc20 & !Cdh1 & f4N_DNA & A_Kinetochores) | (CyclinB & Plk1 & Cdk1 & !pAPC & !Cdh1 & f4N_DNA & !U_Kinetochores & A_Kinetochores) | (CyclinB & Plk1 & Cdk1 & !pAPC & !Cdh1 & f4N_DNA & U_Kinetochores) | (CyclinB & Plk1 & Cdk1 & pAPC & !Cdc20 & !Cdh1 & f4N_DNA & !U_Kinetochores & A_Kinetochores) | (CyclinB & Plk1 & Cdk1 & pAPC & !Cdc20 & !Cdh1 & f4N_DNA & U_Kinetochores); + rate_up = @logic ? $u_A_Kinetochores : 0; + rate_down = @logic ? 0 : $d_A_Kinetochores; +} + +Node Plk1_H { + + logic = (!FoxO3 & !FoxO1 & FoxM1 & Plk1 & Plk1_H) | (!FoxO3 & FoxO1 & FoxM1 & Plk1) | (FoxO3 & FoxM1 & Plk1); + rate_up = @logic ? $u_Plk1_H : 0; + rate_down = @logic ? 0 : $d_Plk1_H; +} + +Node Ect2 { + + logic = (Cdh1 & f4N_DNA & !U_Kinetochores & !A_Kinetochores & Plk1_H); + rate_up = @logic ? $u_Ect2 : 0; + rate_down = @logic ? 0 : $d_Ect2; +} + +Node Casp2 { + + logic = (!CyclinB & !U_Kinetochores & Casp3) | (!CyclinB & U_Kinetochores & !Mad2 & Casp3) | (!CyclinB & U_Kinetochores & Mad2) | (CyclinB & !Cdk1 & !U_Kinetochores & Casp3) | (CyclinB & !Cdk1 & U_Kinetochores & !Mad2 & Casp3) | (CyclinB & !Cdk1 & U_Kinetochores & Mad2) | (CyclinB & Cdk1 & Casp3); + rate_up = @logic ? $u_Casp2 : 0; + rate_down = @logic ? 0 : $d_Casp2; +} + +Node MCL_1 { + + logic = (!AKT_B & !GSK3 & !CyclinB & !Casp2 & !Casp3) | (!AKT_B & !GSK3 & CyclinB & !Cdk1 & !Casp2 & !Casp3) | (!AKT_B & !GSK3 & CyclinB & Cdk1 & !U_Kinetochores & !Casp2 & !Casp3) | (AKT_B & !GSK3 & !CyclinB & !Casp2 & !Casp3) | (AKT_B & !GSK3 & CyclinB & !Cdk1 & !Casp2 & !Casp3) | (AKT_B & !GSK3 & CyclinB & Cdk1 & !U_Kinetochores & !Casp2 & !Casp3) | (AKT_B & GSK3 & !E2F1 & !CyclinB & !Casp2 & !Casp3) | (AKT_B & GSK3 & !E2F1 & CyclinB & !Cdk1 & !Casp2 & !Casp3) | (AKT_B & GSK3 & !E2F1 & CyclinB & Cdk1 & !U_Kinetochores & !Casp2 & !Casp3) | (AKT_B & GSK3 & E2F1 & !CyclinB & !Casp2 & !Casp3 & ERK) | (AKT_B & GSK3 & E2F1 & CyclinB & !Cdk1 & !Casp2 & !Casp3 & ERK) | (AKT_B & GSK3 & E2F1 & CyclinB & Cdk1 & !U_Kinetochores & !Casp2 & !Casp3 & ERK); + rate_up = @logic ? $u_MCL_1 : 0; + rate_down = @logic ? 0 : $d_MCL_1; +} + +Node BCLXL { + + logic = (!CyclinB & !Plk1 & !U_Kinetochores & !BCL2 & !BAD & !Casp3) | (!CyclinB & !Plk1 & !U_Kinetochores & BCL2 & !Casp3) | (!CyclinB & !Plk1 & U_Kinetochores & MCL_1 & BCL2 & !Casp3) | (!CyclinB & Plk1 & !BCL2 & !BAD & !Casp3) | (!CyclinB & Plk1 & BCL2 & !Casp3) | (CyclinB & !Plk1 & !Cdk1 & !U_Kinetochores & !BCL2 & !BAD & !Casp3) | (CyclinB & !Plk1 & !Cdk1 & !U_Kinetochores & BCL2 & !Casp3) | (CyclinB & !Plk1 & !Cdk1 & U_Kinetochores & MCL_1 & BCL2 & !Casp3) | (CyclinB & !Plk1 & Cdk1 & !U_Kinetochores & !BCL2 & !BAD & !Casp3) | (CyclinB & !Plk1 & Cdk1 & !U_Kinetochores & BCL2 & !Casp3) | (CyclinB & Plk1 & !Cdk1 & !BCL2 & !BAD & !Casp3) | (CyclinB & Plk1 & !Cdk1 & BCL2 & !Casp3) | (CyclinB & Plk1 & Cdk1 & !U_Kinetochores & !BCL2 & !BAD & !Casp3) | (CyclinB & Plk1 & Cdk1 & !U_Kinetochores & BCL2 & !Casp3) | (CyclinB & Plk1 & Cdk1 & U_Kinetochores & MCL_1 & BCL2 & !Casp3); + rate_up = @logic ? $u_BCLXL : 0; + rate_down = @logic ? 0 : $d_BCLXL; +} + +Node BCL2 { + + logic = (!CyclinB & !Plk1 & !U_Kinetochores & !BAD & !BIK & !BIM & !Casp3) | (!CyclinB & !Plk1 & U_Kinetochores & MCL_1 & BCLXL & !BAD & !BIK & !BIM & !Casp3) | (!CyclinB & Plk1 & !BAD & !BIK & !BIM & !Casp3) | (CyclinB & !Plk1 & !U_Kinetochores & !BAD & !BIK & !BIM & !Casp3) | (CyclinB & !Plk1 & U_Kinetochores & MCL_1 & BCLXL & !BAD & !BIK & !BIM & !Casp3) | (CyclinB & Plk1 & !Cdk1 & !BAD & !BIK & !BIM & !Casp3) | (CyclinB & Plk1 & Cdk1 & !U_Kinetochores & !BAD & !BIK & !BIM & !Casp3) | (CyclinB & Plk1 & Cdk1 & U_Kinetochores & !MCL_1 & BCLXL & !BAD & !BIK & !BIM & !Casp3) | (CyclinB & Plk1 & Cdk1 & U_Kinetochores & MCL_1 & !BAD & !BIK & !BIM & !Casp3); + rate_up = @logic ? $u_BCL2 : 0; + rate_down = @logic ? 0 : $d_BCL2; +} + +Node BAD { + + logic = (!AKT_B & !AKT_H & !S6K & !Casp8 & !Casp3 & !ERK) | (!AKT_B & !AKT_H & !S6K & !Casp8 & Casp3) | (!AKT_B & !AKT_H & !S6K & Casp8) | (!AKT_B & !AKT_H & S6K & !Casp8 & Casp3) | (!AKT_B & !AKT_H & S6K & Casp8) | (!AKT_B & AKT_H & !Casp8 & Casp3) | (!AKT_B & AKT_H & Casp8 & !Casp3 & !ERK) | (!AKT_B & AKT_H & Casp8 & Casp3) | (AKT_B & !AKT_H & !S6K & !Casp8 & Casp3) | (AKT_B & !AKT_H & !S6K & Casp8) | (AKT_B & !AKT_H & S6K & !Casp8 & Casp3) | (AKT_B & !AKT_H & S6K & Casp8 & !Casp3 & !ERK) | (AKT_B & !AKT_H & S6K & Casp8 & Casp3) | (AKT_B & AKT_H & Casp3); + rate_up = @logic ? $u_BAD : 0; + rate_down = @logic ? 0 : $d_BAD; +} + +Node BIK { + + logic = (!MCL_1 & !BCLXL & !BCL2); + rate_up = @logic ? $u_BIK : 0; + rate_down = @logic ? 0 : $d_BIK; +} + +Node BIM { + + logic = (FoxO3 & GSK3 & !MCL_1 & !BCLXL & !BCL2 & !ERK); + rate_up = @logic ? $u_BIM : 0; + rate_down = @logic ? 0 : $d_BIM; +} + +Node BID { + + logic = (!Casp8 & Casp2 & !MCL_1 & !BCLXL & !BCL2) | (Casp8); + rate_up = @logic ? $u_BID : 0; + rate_down = @logic ? 0 : $d_BID; +} + +Node BAK { + + logic = (!MCL_1 & !BCLXL & !BIK & !BIM & BID) | (!MCL_1 & !BCLXL & !BIK & BIM) | (!MCL_1 & !BCLXL & BIK) | (!MCL_1 & BCLXL & BID) | (MCL_1 & !BCLXL & BID) | (MCL_1 & BCLXL & !BCL2 & BID) | (MCL_1 & BCLXL & BCL2 & !BIK & BIM & BID) | (MCL_1 & BCLXL & BCL2 & BIK & BID); + rate_up = @logic ? $u_BAK : 0; + rate_down = @logic ? 0 : $d_BAK; +} + +Node BAX { + + logic = (!MCL_1 & !BCLXL & !BCL2 & !BIK & !BIM & BID) | (!MCL_1 & !BCLXL & !BCL2 & !BIK & BIM) | (!MCL_1 & !BCLXL & !BCL2 & BIK) | (!MCL_1 & !BCLXL & BCL2 & BIM) | (!MCL_1 & BCLXL & BIM) | (MCL_1 & !BCLXL & !BCL2 & !BIK & !BIM & BID) | (MCL_1 & !BCLXL & !BCL2 & !BIK & BIM) | (MCL_1 & !BCLXL & !BCL2 & BIK) | (MCL_1 & !BCLXL & BCL2 & BIM) | (MCL_1 & BCLXL & !BCL2 & BIM) | (MCL_1 & BCLXL & BCL2 & !BIK & BIM & BID) | (MCL_1 & BCLXL & BCL2 & BIK & BIM); + rate_up = @logic ? $u_BAX : 0; + rate_down = @logic ? 0 : $d_BAX; +} + +Node Cyto_C { + + logic = (!BAK & BAX) | (BAK); + rate_up = @logic ? $u_Cyto_C : 0; + rate_down = @logic ? 0 : $d_Cyto_C; +} + +Node SMAC { + + logic = (!BAK & BAX) | (BAK); + rate_up = @logic ? $u_SMAC : 0; + rate_down = @logic ? 0 : $d_SMAC; +} + +Node IAPs { + + logic = (!AKT_H & !SMAC) | (AKT_H); + rate_up = @logic ? $u_IAPs : 0; + rate_down = @logic ? 0 : $d_IAPs; +} + +Node CAD { + + logic = (Casp9 & Casp3); + rate_up = @logic ? $u_CAD : 0; + rate_down = @logic ? 0 : $d_CAD; +} + +Node DAG { + + logic = (PLCgamma); + rate_up = @logic ? $u_DAG : 0; + rate_down = @logic ? 0 : $d_DAG; +} + +Node DR4_5 { + + logic = (Trail); + rate_up = @logic ? $u_DR4_5 : 0; + rate_down = @logic ? 0 : $d_DR4_5; +} + +Node ERK { + + logic = (!BIK & MEK); + rate_up = @logic ? $u_ERK : 0; + rate_down = @logic ? 0 : $d_ERK; +} + +Node GF_High { + + logic = (GF_High); + rate_up = @logic ? $u_GF_High : 0; + rate_down = @logic ? 0 : $d_GF_High; +} + +Node IP3 { + + logic = (PLCgamma); + rate_up = @logic ? $u_IP3 : 0; + rate_down = @logic ? 0 : $d_IP3; +} + +Node MEK { + + logic = (RAF); + rate_up = @logic ? $u_MEK : 0; + rate_down = @logic ? 0 : $d_MEK; +} + +Node SOS { + + logic = (Grb2); + rate_up = @logic ? $u_SOS : 0; + rate_down = @logic ? 0 : $d_SOS; +} + +Node Trail { + + logic = (Trail); + rate_up = @logic ? $u_Trail : 0; + rate_down = @logic ? 0 : $d_Trail; +} diff --git a/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/boolean_network/intracellular_model.cfg b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/boolean_network/intracellular_model.cfg new file mode 100644 index 000000000..c7c3e5ba1 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/boolean_network/intracellular_model.cfg @@ -0,0 +1,376 @@ +$u_G0G1_entry = 1; +$d_G0G1_entry = 1; +$u_G2M_entry = 1; +$d_G2M_entry = 1; +$u_S_entry = 1; +$d_S_entry = 1; +$nb_mutable = 1; +$u_GF = 1; +$d_GF = 1; +$u_RTK = 1; +$d_RTK = 1; +$u_Grb2 = 1; +$d_Grb2 = 1; +$u_Ras = 1; +$d_Ras = 1; +$u_RAF = 1; +$d_RAF = 1; +$u_mTORC2 = 1; +$d_mTORC2 = 1; +$u_PI3K = 1; +$d_PI3K = 1; +$u_PIP3 = 1; +$d_PIP3 = 1; +$u_PDK1 = 1; +$d_PDK1 = 1; +$u_AKT_B = 1; +$d_AKT_B = 1; +$u_p110_H = 1; +$d_p110_H = 1; +$u_PI3K_H = 1; +$d_PI3K_H = 1; +$u_AKT_H = 1; +$d_AKT_H = 1; +$u_FoxO3 = 1; +$d_FoxO3 = 1; +$u_PLCgamma = 1; +$d_PLCgamma = 1; +$u_NeddL4 = 1; +$d_NeddL4 = 1; +$u_FoxO1 = 1; +$d_FoxO1 = 1; +$u_p21_mRNA = 1; +$d_p21_mRNA = 1; +$u_TSC2 = 1; +$d_TSC2 = 1; +$u_PRAS40 = 1; +$d_PRAS40 = 1; +$u_Rheb = 1; +$d_Rheb = 1; +$u_mTORC1 = 1; +$d_mTORC1 = 1; +$u_S6K = 1; +$d_S6K = 1; +$u_eIF4E = 1; +$d_eIF4E = 1; +$u_GSK3 = 1; +$d_GSK3 = 1; +$u_p21 = 1; +$d_p21 = 1; +$u_pRB = 1; +$d_pRB = 1; +$u_p27Kip1 = 1; +$d_p27Kip1 = 1; +$u_Myc = 1; +$d_Myc = 1; +$u_CyclinD1 = 1; +$d_CyclinD1 = 1; +$u_E2F1 = 1; +$d_E2F1 = 1; +$u_CyclinE = 1; +$d_CyclinE = 0.1; +$u_ORC = 1; +$d_ORC = 1; +$u_Cdc6 = 1; +$d_Cdc6 = 1; +$u_Cdt1 = 1; +$d_Cdt1 = 1; +$u_Pre_RC = 1; +$d_Pre_RC = 1; +$u_geminin = 1; +$d_geminin = 1; +$u_CyclinA_mRNA = 1; +$d_CyclinA_mRNA = 1; +$u_Emi1 = 1; +$d_Emi1 = 1; +$u_FoxM1 = 1; +$d_FoxM1 = 1; +$u_Cdc25A = 1; +$d_Cdc25A = 1; +$u_CyclinA = 1; +$d_CyclinA = 1; +$u_Wee1 = 1; +$d_Wee1 = 1; +$u_UbcH10 = 1; +$d_UbcH10 = 1; +$u_CyclinB = 0.1; +$d_CyclinB = 10; +$u_Cdc25B = 1; +$d_Cdc25B = 1; +$u_Plk1 = 1; +$d_Plk1 = 1; +$u_Cdc25C = 1; +$d_Cdc25C = 1; +$u_Cdk1 = 1; +$d_Cdk1 = 1; +$u_pAPC = 1; +$d_pAPC = 1; +$u_Cdc20 = 1; +$d_Cdc20 = 1; +$u_Cdh1 = 1; +$d_Cdh1 = 1; +$u_Replication = 1; +$d_Replication = 1; +$u_f4N_DNA = 1; +$d_f4N_DNA = 1; +$u_U_Kinetochores = 1; +$d_U_Kinetochores = 1; +$u_Mad2 = 1; +$d_Mad2 = 1; +$u_A_Kinetochores = 1; +$d_A_Kinetochores = 1; +$u_Plk1_H = 1; +$d_Plk1_H = 1; +$u_Ect2 = 1; +$d_Ect2 = 1; +$u_Casp8 = 1; +$d_Casp8 = 1; +$u_Casp2 = 1; +$d_Casp2 = 1; +$u_MCL_1 = 1; +$d_MCL_1 = 1; +$u_BCLXL = 1; +$d_BCLXL = 1; +$u_BCL2 = 1; +$d_BCL2 = 1; +$u_BAD = 1; +$d_BAD = 1; +$u_BIK = 1; +$d_BIK = 1; +$u_BIM = 1; +$d_BIM = 1; +$u_BID = 1; +$d_BID = 1; +$u_BAK = 1; +$d_BAK = 1; +$u_BAX = 1; +$d_BAX = 1; +$u_Cyto_C = 1; +$d_Cyto_C = 1; +$u_SMAC = 1; +$d_SMAC = 1; +$u_IAPs = 1; +$d_IAPs = 1; +$u_Casp9 = 1; +$d_Casp9 = 1; +$u_Casp3 = 1; +$d_Casp3 = 1; +$u_CAD = 1; +$d_CAD = 1; +$u_ATR = 1; +$d_ATR = 1; +$u_CHK1 = 1; +$d_CHK1 = 1; +$u_Ca2 = 1; +$d_Ca2 = 1; +$u_DAG = 1; +$d_DAG = 1; +$u_DR4_5 = 1; +$d_DR4_5 = 1; +$u_ERK = 1; +$d_ERK = 1; +$u_GF_High = 1; +$d_GF_High = 1; +$u_IP3 = 1; +$d_IP3 = 1; +$u_MEK = 1; +$d_MEK = 1; +$u_SOS = 1; +$d_SOS = 1; +$u_Trail = 1; +$d_Trail = 1; +$Low_Casp3 = 1; +$High_Casp3 = 0; +G0G1_entry.istate = FALSE; +G2M_entry.istate = FALSE; +S_entry.istate = FALSE; +GF.istate = TRUE; +RTK.istate = TRUE; +Grb2.istate = TRUE; +Ras.istate = TRUE; +RAF.istate = TRUE; +mTORC2.istate = TRUE; +PI3K.istate = TRUE; +PIP3.istate = TRUE; +PDK1.istate = TRUE; +AKT_B.istate = TRUE; +p110_H.istate = FALSE; +PI3K_H.istate = FALSE; +AKT_H.istate = FALSE; +FoxO3.istate = FALSE; +PLCgamma.istate = FALSE; +NeddL4.istate = FALSE; +FoxO1.istate = FALSE; +p21_mRNA.istate = FALSE; +TSC2.istate = TRUE; +PRAS40.istate = FALSE; +Rheb.istate = FALSE; +mTORC1.istate = TRUE; +S6K.istate = TRUE; +eIF4E.istate = TRUE; +GSK3.istate = FALSE; +p21.istate = FALSE; +pRB.istate = FALSE; +p27Kip1.istate = FALSE; +Myc.istate = TRUE; +CyclinD1.istate = TRUE; +E2F1.istate = TRUE; +CyclinE.istate = FALSE; +ORC.istate = TRUE; +Cdc6.istate = FALSE; +Cdt1.istate = FALSE; +Pre_RC.istate = FALSE; +geminin.istate = FALSE; +CyclinA_mRNA.istate = TRUE; +Emi1.istate = TRUE; +FoxM1.istate = FALSE; +Cdc25A.istate = TRUE; +CyclinA.istate = FALSE; +Wee1.istate = FALSE; +UbcH10.istate = TRUE; +CyclinB.istate = FALSE; +Cdc25B.istate = TRUE; +Plk1.istate = FALSE; +Cdc25C.istate = TRUE; +Cdk1.istate = FALSE; +pAPC.istate = TRUE; +Cdc20.istate = TRUE; +Cdh1.istate = TRUE; +Replication.istate = FALSE; +f4N_DNA.istate = TRUE; +U_Kinetochores.istate = FALSE; +Mad2.istate = FALSE; +A_Kinetochores.istate = FALSE; +Plk1_H.istate = TRUE; +Ect2.istate = FALSE; +Casp8.istate = FALSE; +Casp2.istate = FALSE; +MCL_1.istate = TRUE; +BCLXL.istate = TRUE; +BCL2.istate = TRUE; +BAD.istate = FALSE; +BIK.istate = FALSE; +BIM.istate = FALSE; +BID.istate = FALSE; +BAK.istate = FALSE; +BAX.istate = FALSE; +Cyto_C.istate = FALSE; +SMAC.istate = FALSE; +IAPs.istate = TRUE; +Casp9.istate = FALSE; +Casp3.istate = FALSE; +CAD.istate = FALSE; +ATR.istate = FALSE; +CHK1.istate = FALSE; +Ca2.istate = FALSE; +DAG.istate = FALSE; +DR4_5.istate = FALSE; +ERK.istate = TRUE; +GF_High.istate = TRUE; +IP3.istate = FALSE; +MEK.istate = TRUE; +SOS.istate = TRUE; +Trail.istate = FALSE; + +time_tick = 1; +max_time = 500; +sample_count = 1000; +discrete_time = 0.0; +use_physrandgen = 0.0; +seed_pseudorandom = 0.0; +display_traj = 0.0; +statdist_traj_count = 0.0; +statdist_cluster_threshold = 1.0; +thread_count = 20; +statdist_similarity_cache_max_size = 20000.0; +G0G1_entry.is_internal = False; +G2M_entry.is_internal = False; +S_entry.is_internal = False; +GF.is_internal = True; +RTK.is_internal = True; +Grb2.is_internal = True; +Ras.is_internal = True; +RAF.is_internal = True; +mTORC2.is_internal = True; +PI3K.is_internal = True; +PIP3.is_internal = True; +PDK1.is_internal = True; +AKT_B.is_internal = True; +p110_H.is_internal = True; +PI3K_H.is_internal = True; +AKT_H.is_internal = True; +FoxO3.is_internal = True; +PLCgamma.is_internal = True; +NeddL4.is_internal = True; +FoxO1.is_internal = True; +p21_mRNA.is_internal = True; +TSC2.is_internal = True; +PRAS40.is_internal = True; +Rheb.is_internal = True; +mTORC1.is_internal = True; +S6K.is_internal = True; +eIF4E.is_internal = True; +GSK3.is_internal = True; +p21.is_internal = True; +pRB.is_internal = True; +p27Kip1.is_internal = True; +Myc.is_internal = True; +CyclinD1.is_internal = True; +E2F1.is_internal = True; +CyclinE.is_internal = True; +ORC.is_internal = True; +Cdc6.is_internal = True; +Cdt1.is_internal = True; +Pre_RC.is_internal = True; +geminin.is_internal = True; +CyclinA_mRNA.is_internal = True; +Emi1.is_internal = True; +FoxM1.is_internal = True; +Cdc25A.is_internal = True; +CyclinA.is_internal = True; +Wee1.is_internal = True; +UbcH10.is_internal = True; +CyclinB.is_internal = True; +Cdc25B.is_internal = True; +Plk1.is_internal = True; +Cdc25C.is_internal = True; +Cdk1.is_internal = True; +pAPC.is_internal = True; +Cdc20.is_internal = True; +Cdh1.is_internal = True; +Replication.is_internal = True; +f4N_DNA.is_internal = True; +U_Kinetochores.is_internal = True; +Mad2.is_internal = True; +A_Kinetochores.is_internal = True; +Plk1_H.is_internal = True; +Ect2.is_internal = True; +Casp8.is_internal = True; +Casp2.is_internal = True; +MCL_1.is_internal = True; +BCLXL.is_internal = True; +BCL2.is_internal = True; +BAD.is_internal = True; +BIK.is_internal = True; +BIM.is_internal = True; +BID.is_internal = True; +BAK.is_internal = True; +BAX.is_internal = True; +Cyto_C.is_internal = True; +SMAC.is_internal = True; +IAPs.is_internal = True; +Casp9.is_internal = True; +Casp3.is_internal = False; +CAD.is_internal = True; +ATR.is_internal = True; +CHK1.is_internal = True; +Ca2.is_internal = True; +DAG.is_internal = True; +DR4_5.is_internal = True; +ERK.is_internal = True; +GF_High.is_internal = True; +IP3.is_internal = True; +MEK.is_internal = True; +SOS.is_internal = True; +Trail.is_internal = False; + diff --git a/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/cell_rules.csv b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/cell_rules.csv new file mode 100644 index 000000000..e69de29bb diff --git a/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/cells.csv b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/cells.csv new file mode 100644 index 000000000..c5847c95f --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/cells.csv @@ -0,0 +1,14 @@ +x,y,z,type,volume,cycle entry,custom:GFP,custom:sample +0.0,0.0,0.0,default +15.984150041113033,0.0,0.0,default +-15.984150041113033,0.0,0.0,default +7.992075020556516,13.842679993505964,0.0,default +7.992075020556516,-13.842679993505964,0.0,default +-7.992075020556516,13.842679993505964,0.0,default +-7.992075020556516,-13.842679993505964,0.0,default +23.97622506166955,13.842679993505964,0.0,default +23.97622506166955,-13.842679993505964,0.0,default +-23.97622506166955,13.842679993505964,0.0,default +-23.97622506166955,-13.842679993505964,0.0,default +0.0,27.68535998701193,0.0,default +0.0,-27.68535998701193,0.0,default diff --git a/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/more_cells.csv b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/more_cells.csv new file mode 100644 index 000000000..a006301b1 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/cell_cycle/more_cells.csv @@ -0,0 +1,72 @@ +x,y,z,type,volume,cycle entry,custom:GFP,custom:sample +-41.349157808183094,-60.428757901572666,0.0,default +-24.52373671227464,-60.428757901572666,0.0,default +-7.698315616366187,-60.428757901572666,0.0,default +9.127105479542266,-60.428757901572666,0.0,default +25.95252657545072,-60.428757901572666,0.0,default +42.77794767135917,-60.428757901572666,0.0,default +-49.76186835613732,-45.85751580314533,0.0,default +-32.93644726022887,-45.85751580314533,0.0,default +-16.111026164320414,-45.85751580314533,0.0,default +0.7143949315880409,-45.85751580314533,0.0,default +17.539816027496492,-45.85751580314533,0.0,default +34.365237123404945,-45.85751580314533,0.0,default +51.1906582193134,-45.85751580314533,0.0,default +-58.17457890409155,-31.286273704718,0.0,default +-41.349157808183094,-31.286273704718,0.0,default +-24.52373671227464,-31.286273704718,0.0,default +-7.698315616366187,-31.286273704718,0.0,default +9.127105479542266,-31.286273704718,0.0,default +25.95252657545072,-31.286273704718,0.0,default +42.77794767135917,-31.286273704718,0.0,default +59.603368767267625,-31.286273704718,0.0,default +-66.58728945204577,-16.715031606290665,0.0,default +-49.76186835613732,-16.715031606290665,0.0,default +-32.93644726022887,-16.715031606290665,0.0,default +-16.111026164320414,-16.715031606290665,0.0,default +0.7143949315880409,-16.715031606290665,0.0,default +17.539816027496492,-16.715031606290665,0.0,default +34.365237123404945,-16.715031606290665,0.0,default +51.1906582193134,-16.715031606290665,0.0,default +68.01607931522186,-16.715031606290665,0.0,default +-58.17457890409155,-2.143789507863332,0.0,default +-41.349157808183094,-2.143789507863332,0.0,default +-24.52373671227464,-2.143789507863332,0.0,default +-7.698315616366187,-2.143789507863332,0.0,default +9.127105479542266,-2.143789507863332,0.0,default +25.95252657545072,-2.143789507863332,0.0,default +42.77794767135917,-2.143789507863332,0.0,default +59.603368767267625,-2.143789507863332,0.0,default +-66.58728945204577,12.427452590564002,0.0,default +-49.76186835613732,12.427452590564002,0.0,default +-32.93644726022887,12.427452590564002,0.0,default +-16.111026164320414,12.427452590564002,0.0,default +0.7143949315880409,12.427452590564002,0.0,default +17.539816027496492,12.427452590564002,0.0,default +34.365237123404945,12.427452590564002,0.0,default +51.1906582193134,12.427452590564002,0.0,default +68.01607931522186,12.427452590564002,0.0,default +-58.17457890409155,26.998694688991336,0.0,default +-41.349157808183094,26.998694688991336,0.0,default +-24.52373671227464,26.998694688991336,0.0,default +-7.698315616366187,26.998694688991336,0.0,default +9.127105479542266,26.998694688991336,0.0,default +25.95252657545072,26.998694688991336,0.0,default +42.77794767135917,26.998694688991336,0.0,default +59.603368767267625,26.998694688991336,0.0,default +-49.76186835613732,41.56993678741867,0.0,default +-32.93644726022887,41.56993678741867,0.0,default +-16.111026164320414,41.56993678741867,0.0,default +0.7143949315880409,41.56993678741867,0.0,default +17.539816027496492,41.56993678741867,0.0,default +34.365237123404945,41.56993678741867,0.0,default +51.1906582193134,41.56993678741867,0.0,default +-41.349157808183094,56.14117888584599,0.0,default +-24.52373671227464,56.14117888584599,0.0,default +-7.698315616366187,56.14117888584599,0.0,default +9.127105479542266,56.14117888584599,0.0,default +25.95252657545072,56.14117888584599,0.0,default +42.77794767135917,56.14117888584599,0.0,default +-16.111026164320414,70.71242098427334,0.0,default +0.7143949315880409,70.71242098427334,0.0,default +17.539816027496492,70.71242098427334,0.0,default diff --git a/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings.xml b/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings.xml new file mode 100644 index 000000000..61244ddfd --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings.xml @@ -0,0 +1,1104 @@ + + + + + + config/differentiation + rules.csv + + + + + + -300 + 300 + -300 + 300 + -10 + 10 + 20 + 20 + 20 + true + + + + 5000 + min + micron + 0.01 + 0.1 + 6 + + + + 10 + + + + output + + 30 + true + + + 30 + true + + false + true + + + CCL21 + 0.0 + 0.1 + original + + + + true + + + + + false + true + false + + + + + + 1000.0 + 0.005 + + 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 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.8 + 0 + 0.0 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0.0 + 0.0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + config/differentiation/boolean_network/tcell_corral.bnd + config/differentiation/boolean_network/tcell_corral.cfg + + 6.0 + 0 + 1.0 + 0.0 + + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 0 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + false + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.5 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0 + 1 + 0.8 + + true + true + + true + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + config/differentiation/boolean_network/dendritic_cells.bnd + config/differentiation/boolean_network/dendritic_cells.cfg + + 1.0 + + + 6.0 + 0 + 30.0 + 0.0 + + + + + + activation + 1.0 + 0 + + + + + activation + 0.5 + 0 + + + + + activation + 1 + 0 + 0 + + + + + activation + 1.0 + 0.0 + 0 + + + + + + + 1.0 + + + + + + + 0.000 + + + + + 0.0 + + 0.001938 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-02 + 8.33333e-4 + 5.33333e-05 + 2.16667e-4 + 7e-05 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0.0 + 0.0 + 2 + + + 0.4 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.01 + 0.0 + 0.0 + + + 1.0 + 1.0 + 0.0 + + false + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 10.0 + 10.0 + 0.0 + 0.0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + + + + + + + ./config/differentiation + cells.csv + + + + + 0 + 0 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings_FOXP3_2_lower.xml b/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings_FOXP3_2_lower.xml new file mode 100644 index 000000000..e3c0b0c9e --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings_FOXP3_2_lower.xml @@ -0,0 +1,1107 @@ + + + + + + config/differentiation + rules.csv + + + + + + -300 + 300 + -300 + 300 + -10 + 10 + 20 + 20 + 20 + true + + + + 5000 + min + micron + 0.01 + 0.1 + 6 + + + + 10 + + + + output + + 30 + true + + + 30 + true + + false + true + + + CCL21 + 0.0 + 0.1 + original + + + + true + + + + + false + true + false + + + + + + 1000.0 + 0.005 + + 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 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.8 + 0 + 0.0 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0.0 + 0.0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + config/differentiation/boolean_network/tcell_corral.bnd + config/differentiation/boolean_network/tcell_corral.cfg + + 6.0 + 0 + 1.0 + 0.0 + + + 0.2 + + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 0 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + false + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.5 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0 + 1 + 0.8 + + true + true + + true + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + config/differentiation/boolean_network/dendritic_cells.bnd + config/differentiation/boolean_network/dendritic_cells.cfg + + 1.0 + + + 6.0 + 0 + 30.0 + 0.0 + + + + + + activation + 1.0 + 0 + + + + + activation + 0.5 + 0 + + + + + activation + 1 + 0 + 0 + + + + + activation + 1.0 + 0.0 + 0 + + + + + + + 1.0 + + + + + + + 0.000 + + + + + 0.0 + + 0.001938 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-02 + 8.33333e-4 + 5.33333e-05 + 2.16667e-4 + 7e-05 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0.0 + 0.0 + 2 + + + 0.4 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.01 + 0.0 + 0.0 + + + 1.0 + 1.0 + 0.0 + + false + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 10.0 + 10.0 + 0.0 + 0.0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + + + + + + + ./config/differentiation + cells.csv + + + + + 0 + 0 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings_FOXP3_2_mutant.xml b/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings_FOXP3_2_mutant.xml new file mode 100644 index 000000000..95826071b --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings_FOXP3_2_mutant.xml @@ -0,0 +1,1107 @@ + + + + + + config/differentiation + rules.csv + + + + + + -300 + 300 + -300 + 300 + -10 + 10 + 20 + 20 + 20 + true + + + + 5000 + min + micron + 0.01 + 0.1 + 6 + + + + 10 + + + + output + + 30 + true + + + 30 + true + + false + true + + + CCL21 + 0.0 + 0.1 + original + + + + true + + + + + false + true + false + + + + + + 1000.0 + 0.005 + + 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 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.8 + 0 + 0.0 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0.0 + 0.0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + config/differentiation/boolean_network/tcell_corral.bnd + config/differentiation/boolean_network/tcell_corral.cfg + + 6.0 + 0 + 1.0 + 0.0 + + + 0 + + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 0 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + false + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.5 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0 + 1 + 0.8 + + true + true + + true + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + config/differentiation/boolean_network/dendritic_cells.bnd + config/differentiation/boolean_network/dendritic_cells.cfg + + 1.0 + + + 6.0 + 0 + 30.0 + 0.0 + + + + + + activation + 1.0 + 0 + + + + + activation + 0.5 + 0 + + + + + activation + 1 + 0 + 0 + + + + + activation + 1.0 + 0.0 + 0 + + + + + + + 1.0 + + + + + + + 0.000 + + + + + 0.0 + + 0.001938 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-02 + 8.33333e-4 + 5.33333e-05 + 2.16667e-4 + 7e-05 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0.0 + 0.0 + 2 + + + 0.4 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.01 + 0.0 + 0.0 + + + 1.0 + 1.0 + 0.0 + + false + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 10.0 + 10.0 + 0.0 + 0.0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + + + + + + + ./config/differentiation + cells.csv + + + + + 0 + 0 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings_NFKB_lower.xml b/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings_NFKB_lower.xml new file mode 100644 index 000000000..f3a482ee8 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings_NFKB_lower.xml @@ -0,0 +1,1107 @@ + + + + + + config/differentiation + rules.csv + + + + + + -300 + 300 + -300 + 300 + -10 + 10 + 20 + 20 + 20 + true + + + + 5000 + min + micron + 0.01 + 0.1 + 6 + + + + 10 + + + + output + + 30 + true + + + 30 + true + + false + true + + + CCL21 + 0.0 + 0.1 + original + + + + true + + + + + false + true + false + + + + + + 1000.0 + 0.005 + + 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 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.8 + 0 + 0.0 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0.0 + 0.0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + config/differentiation/boolean_network/tcell_corral.bnd + config/differentiation/boolean_network/tcell_corral.cfg + + 6.0 + 0 + 1.0 + 0.0 + + + 0.1 + + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 0 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + false + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.5 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0 + 1 + 0.8 + + true + true + + true + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + config/differentiation/boolean_network/dendritic_cells.bnd + config/differentiation/boolean_network/dendritic_cells.cfg + + 1.0 + + + 6.0 + 0 + 30.0 + 0.0 + + + + + + activation + 1.0 + 0 + + + + + activation + 0.5 + 0 + + + + + activation + 1 + 0 + 0 + + + + + activation + 1.0 + 0.0 + 0 + + + + + + + 1.0 + + + + + + + 0.000 + + + + + 0.0 + + 0.001938 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-02 + 8.33333e-4 + 5.33333e-05 + 2.16667e-4 + 7e-05 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0.0 + 0.0 + 2 + + + 0.4 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.01 + 0.0 + 0.0 + + + 1.0 + 1.0 + 0.0 + + false + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 10.0 + 10.0 + 0.0 + 0.0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + + + + + + + ./config/differentiation + cells.csv + + + + + 0 + 0 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings_NFKB_mutant.xml b/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings_NFKB_mutant.xml new file mode 100644 index 000000000..9d3d09aa6 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/differentiation/PhysiCell_settings_NFKB_mutant.xml @@ -0,0 +1,1107 @@ + + + + + + config/differentiation + rules.csv + + + + + + -300 + 300 + -300 + 300 + -10 + 10 + 20 + 20 + 20 + true + + + + 5000 + min + micron + 0.01 + 0.1 + 6 + + + + 10 + + + + output + + 30 + true + + + 30 + true + + false + true + + + CCL21 + 0.0 + 0.1 + original + + + + true + + + + + false + true + false + + + + + + 1000.0 + 0.005 + + 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 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.8 + 0 + 0.0 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0.0 + 0.0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + config/differentiation/boolean_network/tcell_corral.bnd + config/differentiation/boolean_network/tcell_corral.cfg + + 6.0 + 0 + 1.0 + 0.0 + + + 0 + + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 0 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + false + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0.5 + 1 + 0.5 + + true + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.5 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 1.0 + + + + + + + 0 + + + + + 0 + + 516 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 0 + 86400 + + + 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 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.0 + 0.0 + 0.0 + + + 0 + 1 + 0.8 + + true + true + + true + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 0 + 0 + 0.0 + 0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + config/differentiation/boolean_network/dendritic_cells.bnd + config/differentiation/boolean_network/dendritic_cells.cfg + + 1.0 + + + 6.0 + 0 + 30.0 + 0.0 + + + + + + activation + 1.0 + 0 + + + + + activation + 0.5 + 0 + + + + + activation + 1 + 0 + 0 + + + + + activation + 1.0 + 0.0 + 0 + + + + + + + 1.0 + + + + + + + 0.000 + + + + + 0.0 + + 0.001938 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-02 + 8.33333e-4 + 5.33333e-05 + 2.16667e-4 + 7e-05 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0.0 + 0.0 + 2 + + + 0.4 + 10.0 + 1.25 + + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + 1.0 + + + 1.8 + 15.12 + + 0.01 + 0.0 + 0.0 + + + 1.0 + 1.0 + 0.0 + + false + true + + false + CCL21 + 1 + + + false + false + + 0.0 + + + + + + + 10.0 + 10.0 + 0.0 + 0.0 + + + + 0.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + 1.0 + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + 0.0 + + + + + 0.0 + + + + + + + ./config/differentiation + cells.csv + + + + + 0 + 0 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/config/differentiation/boolean_network/dendritic_cells.bnd b/sample_projects_intracellular/boolean/tutorial/config/differentiation/boolean_network/dendritic_cells.bnd new file mode 100644 index 000000000..334667578 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/differentiation/boolean_network/dendritic_cells.bnd @@ -0,0 +1,23 @@ +Node CCL21 { + logic = (CCL21); + rate_up = @logic ? $u_CCL21 : 0; + rate_down = @logic ? 0 : $d_CCL21; +} + +Node Contact { + logic = (Contact); + rate_up = @logic ? $u_Contact : 0; + rate_down = @logic ? 0 : $u_Contact; +} + +Node Maturation { + logic = (Maturation); + rate_up = @logic ? $u_Maturation : 0; + rate_down = @logic ? 0 : $u_Maturation; +} + +Node Migration { + logic = (Maturation & CCL21 & !Contact); + rate_up = @logic ? $u_Migration : 0; + rate_down = @logic ? 0 : $d_Migration; +} \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/config/differentiation/boolean_network/dendritic_cells.cfg b/sample_projects_intracellular/boolean/tutorial/config/differentiation/boolean_network/dendritic_cells.cfg new file mode 100644 index 000000000..8162d6b69 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/differentiation/boolean_network/dendritic_cells.cfg @@ -0,0 +1,25 @@ +$u_CCL21 = 1; +$d_CCL21 = 1; +$u_Contact = 1; +$d_Contact = 1; +$u_Migration = 1; +$d_Migration = 1; +$u_Maturation = 1; +$d_Maturation = 1; + +CCL21.istate = 0.0; +Contact.istate = 0.0; +Migration.istate = 0.0; +Maturation.istate = 1.0; + +time_tick = 0.5; +max_time = 1000; +sample_count = 10000; +discrete_time = 0; +use_physrandgen = 1; +seed_pseudorandom = 0; +display_traj = 0; +statdist_traj_count = 0; +statdist_cluster_threshold = 1; +thread_count = 1; +statdist_similarity_cache_max_size = 20000; diff --git a/sample_projects_intracellular/boolean/tutorial/config/differentiation/boolean_network/tcell_corral.bnd b/sample_projects_intracellular/boolean/tutorial/config/differentiation/boolean_network/tcell_corral.bnd new file mode 100644 index 000000000..3f2216221 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/differentiation/boolean_network/tcell_corral.bnd @@ -0,0 +1,664 @@ +Node Treg { + + logic = ((FOXP3 | FOXP3_2) & !(Th1 | Th17)) | (Treg & !(Th1 | Th17)); + rate_up = @logic ? $u_Treg : 0.0; + rate_down = @logic ? 0.0 : $d_Treg; +} + +Node Th17 { + + logic = (RORGt & !(Th1 | Treg))| (Th17 & !(Th1 | Treg)); + rate_up = @logic ? $u_Th17 : 0.0; + rate_down = @logic ? 0.0 : $d_Th17; +} + +Node Th1 { + + logic = (Tbet & !(Th17 | Treg)) | (Th1 & !(Th17 | Treg)); + rate_up = @logic ? $u_Th1 : 0.0; + rate_down = @logic ? 0.0 : $d_Th1; +} + +Node PI3K_b1 { + + logic = (((((((TCR_b1 AND NOT TCR_b2) AND IL1R) AND CD28) AND RAS) OR ((((TCR_b1 AND TCR_b2) AND IL1R) AND CD28) AND RAS)) AND (NOT PI3K_b1 OR (PI3K_b1 AND NOT PI3K_b2))) OR (PI3K_b1 AND PI3K_b2)); + rate_up = @logic ? $u_PI3K_b1 : 0.0; + rate_down = @logic ? 0.0 : $d_PI3K_b1; +} + +Node PI3K_b2 { + + logic = (((((TCR_b1 AND TCR_b2) AND IL1R) AND CD28) AND RAS) AND PI3K_b1); + rate_up = @logic ? $u_PI3K_b2 : 0.0; + rate_down = @logic ? 0.0 : $d_PI3K_b2; +} + +Node IL6_Aut { + + logic = (PI3K_b1 AND PI3K_b2); + rate_up = @logic ? $u_IL6_Aut : 0.0; + rate_down = @logic ? 0.0 : $d_IL6_Aut; +} + +Node IL12R { + + logic = ((IL12_In AND IL12RB1) AND IL12RB2); + rate_up = @logic ? $u_IL12R : 0.0; + rate_down = @logic ? 0.0 : $d_IL12R; +} + +Node IL6R { + + logic = (((NOT IL6_Aut AND GP130) AND IL6_In) OR (IL6_Aut AND GP130)); + rate_up = @logic ? $u_IL6R : 0.0; + rate_down = @logic ? 0.0 : $d_IL6R; +} + +Node STAT1 { + + logic = ((NOT IL12R AND IL6R) OR IL12R); + rate_up = @logic ? $u_STAT1 : 0.0; + rate_down = @logic ? 0.0 : $d_STAT1; +} + +Node Tbet { + + logic = (((NOT STAT1 AND Tbet) OR ((((((STAT1 AND NOT Tbet) AND AP1) AND NFAT1) AND NFKB) AND (NOT Blimp1_b1 OR (Blimp1_b1 AND NOT Blimp1_b2))) AND (NOT RUNX1_b1 OR (RUNX1_b1 AND NOT RUNX1_b2)))) OR (STAT1 AND Tbet)); + rate_up = @logic ? $u_Tbet : 0.0; + rate_down = @logic ? 0.0 : $d_Tbet; +} + +Node AP1 { + + logic = (cFOS AND cJUN); + rate_up = @logic ? $u_AP1 : 0.0; + rate_down = @logic ? 0.0 : $d_AP1; +} + +Node NFAT1 { + + logic = IP3; + rate_up = @logic ? $u_NFAT1 : 0.0; + rate_down = @logic ? 0.0 : $d_NFAT1; +} + +Node NFKB { + + logic = IKK; + rate_up = @logic ? $u_NFKB : 0.0; + rate_down = @logic ? 0.0 : $d_NFKB; +} + +Node Blimp1_b1 { + + logic = (((((STAT4 AND NOT STAT3) AND STAT5B_b1) OR (((NOT STAT4 AND STAT3) AND STAT5B_b1) OR ((STAT4 AND STAT3) AND STAT5B_b1))) AND (NOT Blimp1_b1 OR (Blimp1_b1 AND NOT Blimp1_b2))) OR (Blimp1_b1 AND Blimp1_b2)); + rate_up = @logic ? $u_Blimp1_b1 : 0.0; + rate_down = @logic ? 0.0 : $d_Blimp1_b1; +} + +Node Blimp1_b2 { + + logic = ((((NOT STAT4 AND STAT3) AND STAT5B_b1) OR ((STAT4 AND STAT3) AND STAT5B_b1)) AND Blimp1_b1); + rate_up = @logic ? $u_Blimp1_b2 : 0.0; + rate_down = @logic ? 0.0 : $d_Blimp1_b2; +} + +Node RUNX1_b1 { + + logic = ((((STAT3 AND NOT RORGt) OR (STAT3 AND RORGt)) AND (NOT RUNX1_b1 OR (RUNX1_b1 AND NOT RUNX1_b2))) OR (RUNX1_b1 AND RUNX1_b2)); + rate_up = @logic ? $u_RUNX1_b1 : 0.0; + rate_down = @logic ? 0.0 : $d_RUNX1_b1; +} + +Node RUNX1_b2 { + + logic = ((STAT3 AND RORGt) AND RUNX1_b1); + rate_up = @logic ? $u_RUNX1_b2 : 0.0; + rate_down = @logic ? 0.0 : $d_RUNX1_b2; +} + +Node STAT4 { + + logic = IL12R; + rate_up = @logic ? $u_STAT4 : 0.0; + rate_down = @logic ? 0.0 : $d_STAT4; +} + +Node RUNX3 { + + logic = Tbet; + rate_up = @logic ? $u_RUNX3 : 0.0; + rate_down = @logic ? 0.0 : $d_RUNX3; +} + +Node EOMES { + + logic = RUNX3; + rate_up = @logic ? $u_EOMES : 0.0; + rate_down = @logic ? 0.0 : $d_EOMES; +} + +Node IFNg { + + logic = ((((((STAT1 AND Tbet) AND STAT4) AND AP1) AND NFAT1) AND RUNX3) AND EOMES); + rate_up = @logic ? $u_IFNg : 0.0; + rate_down = @logic ? 0.0 : $d_IFNg; +} + +Node IL12RB1 { + + logic = 1; + rate_up = @logic ? $u_IL12RB1 : 0.0; + rate_down = @logic ? 0.0 : $d_IL12RB1; +} + +Node IL12RB2 { + + logic = 1; + rate_up = @logic ? $u_IL12RB2 : 0.0; + rate_down = @logic ? 0.0 : $d_IL12RB2; +} + +Node IL12_In { + + logic = 1; + rate_up = @logic ? $u_IL12_In : 0.0; + rate_down = @logic ? 0.0 : $d_IL12_In; +} + +Node IL1RAP { + + logic = 1; + rate_up = @logic ? $u_IL1RAP : 0.0; + rate_down = @logic ? 0.0 : $d_IL1RAP; +} + +Node IL1R1 { + + logic = 1; + rate_up = @logic ? $u_IL1R1 : 0.0; + rate_down = @logic ? 0.0 : $d_IL1R1; +} + +Node IL1R { + + logic = ((IL1_In AND IL1RAP) AND IL1R1); + rate_up = @logic ? $u_IL1R : 0.0; + rate_down = @logic ? 0.0 : $d_IL1R; +} + +Node IL23R { + + logic = ((((((NOT IL23_In AND STAT3) AND RORGt) AND Myd88) OR ((((IL23_In AND NOT IL12RB1) AND STAT3) AND RORGt) AND Myd88)) OR (((((IL23_In AND IL12RB1) AND STAT3) AND RORGt) AND NOT Myd88) AND GP130)) OR ((((IL23_In AND IL12RB1) AND STAT3) AND RORGt) AND Myd88)); + rate_up = @logic ? $u_IL23R : 0.0; + rate_down = @logic ? 0.0 : $d_IL23R; +} + +Node STAT3 { + + logic = ((((((NOT IL1R AND AP1) AND NFKB) AND NOT IL23R) AND IL6R) OR (((NOT IL1R AND AP1) AND NFKB) AND IL23R)) OR ((IL1R AND AP1) AND NFKB)); + rate_up = @logic ? $u_STAT3 : 0.0; + rate_down = @logic ? 0.0 : $d_STAT3; +} + +Node cMAF { + + logic = STAT3; + rate_up = @logic ? $u_cMAF : 0.0; + rate_down = @logic ? 0.0 : $d_cMAF; +} + +Node IL21 { + + logic = ((STAT3 AND NFAT1) AND cMAF); + rate_up = @logic ? $u_IL21 : 0.0; + rate_down = @logic ? 0.0 : $d_IL21; +} + +Node RORGt { + + logic = (((((((NOT Tbet AND NOT STAT3) AND AP1) AND NFAT1) AND IRF4) AND RUNX1_b1) OR ((NOT Tbet AND STAT3) AND RUNX1_b1)) OR ((Tbet AND STAT3) AND RUNX1_b1)); + rate_up = @logic ? $u_RORGt : 0.0; + rate_down = @logic ? 0.0 : $d_RORGt; +} + +Node IRF4 { + + logic = (AP1 AND NFKB); + rate_up = @logic ? $u_IRF4 : 0.0; + rate_down = @logic ? 0.0 : $d_IRF4; +} + +Node AHR { + + logic = STAT3; + rate_up = @logic ? $u_AHR : 0.0; + rate_down = @logic ? 0.0 : $d_AHR; +} + +Node NFAT2A_b1 { + + logic = (((((((((NFAT1 AND NOT NFAT2) AND NFAT4) AND (NOT NFAT2A_b1 OR (NFAT2A_b1 AND NOT NFAT2A_b2))) AND NOT FOXP3) AND ITK_b1) OR ((((NFAT1 AND NFAT2) AND (NOT NFAT2A_b1 OR (NFAT2A_b1 AND NOT NFAT2A_b2))) AND NOT FOXP3) AND ITK_b1)) OR (((((NOT NFAT1 AND (NFAT2A_b1 AND NFAT2A_b2)) AND ITK_b1) OR (((((NFAT1 AND NOT NFAT2) AND NOT NFAT4) AND (NFAT2A_b1 AND NFAT2A_b2)) AND NOT FOXP3) AND ITK_b1)) OR (((((NFAT1 AND NOT NFAT2) AND NFAT4) AND (NFAT2A_b1 AND NFAT2A_b2)) AND NOT FOXP3) AND ITK_b1)) OR ((((NFAT1 AND NFAT2) AND (NFAT2A_b1 AND NFAT2A_b2)) AND NOT FOXP3) AND ITK_b1))) AND (NOT NFAT2A_b1 OR (NFAT2A_b1 AND NOT NFAT2A_b2))) OR (NFAT2A_b1 AND NFAT2A_b2)); + rate_up = @logic ? $u_NFAT2A_b1 : 0.0; + rate_down = @logic ? 0.0 : $d_NFAT2A_b1; +} + +Node NFAT2A_b2 { + + logic = ((((((NOT NFAT1 AND (NFAT2A_b1 AND NFAT2A_b2)) AND ITK_b1) OR (((((NFAT1 AND NOT NFAT2) AND NOT NFAT4) AND (NFAT2A_b1 AND NFAT2A_b2)) AND NOT FOXP3) AND ITK_b1)) OR (((((NFAT1 AND NOT NFAT2) AND NFAT4) AND (NFAT2A_b1 AND NFAT2A_b2)) AND NOT FOXP3) AND ITK_b1)) OR ((((NFAT1 AND NFAT2) AND (NFAT2A_b1 AND NFAT2A_b2)) AND NOT FOXP3) AND ITK_b1)) AND NFAT2A_b1); + rate_up = @logic ? $u_NFAT2A_b2 : 0.0; + rate_down = @logic ? 0.0 : $d_NFAT2A_b2; +} + +Node STAT5B_b1 { + + logic = ((((ERK1_2 AND IL2R_b1) OR NOT ERK1_2) AND (NOT STAT5B_b1 OR (STAT5B_b1 AND NOT STAT5B_b2))) OR (STAT5B_b1 AND STAT5B_b2)); + rate_up = @logic ? $u_STAT5B_b1 : 0.0; + rate_down = @logic ? 0.0 : $d_STAT5B_b1; +} + +Node STAT5B_b2 { + + logic = (NOT ERK1_2 AND STAT5B_b1); + rate_up = @logic ? $u_STAT5B_b2 : 0.0; + rate_down = @logic ? 0.0 : $d_STAT5B_b2; +} + +Node SMAD2 { + + logic = TGFBR; + rate_up = @logic ? $u_SMAD2 : 0.0; + rate_down = @logic ? 0.0 : $d_SMAD2; +} + +Node RORA { + + logic = ((((STAT3 AND RORGt) AND IRF4) AND IL23R) AND (RUNX1_b1 AND RUNX1_b2)); + rate_up = @logic ? $u_RORA : 0.0; + rate_down = @logic ? 0.0 : $d_RORA; +} + +Node STAT5A_b1 { + + logic = ((((((NOT IL12R AND IL1R) AND IL2R_b1) OR ((IL12R AND NOT IL1R) AND IL2R_b1)) OR ((IL12R AND IL1R) AND IL2R_b1)) AND (NOT STAT5A_b1 OR (STAT5A_b1 AND NOT STAT5A_b2))) OR (STAT5A_b1 AND STAT5A_b2)); + rate_up = @logic ? $u_STAT5A_b1 : 0.0; + rate_down = @logic ? 0.0 : $d_STAT5A_b1; +} + +Node STAT5A_b2 { + + logic = (((IL12R AND IL1R) AND IL2R_b1) AND STAT5A_b1); + rate_up = @logic ? $u_STAT5A_b2 : 0.0; + rate_down = @logic ? 0.0 : $d_STAT5A_b2; +} + +Node IL17A { + + logic = (((((((((STAT3 AND RORGt) AND AP1) AND IRF4) AND AHR) AND (NFAT2A_b1 AND NFAT2A_b2)) AND (NOT STAT5B_b1 OR (STAT5B_b1 AND NOT STAT5B_b2))) AND SMAD2) AND RORA) OR (((((((((STAT3 AND RORGt) AND AP1) AND IRF4) AND AHR) AND (NFAT2A_b1 AND NFAT2A_b2)) AND (STAT5B_b1 AND STAT5B_b2)) AND SMAD2) AND (NOT STAT5A_b1 OR (STAT5A_b1 AND NOT STAT5A_b2))) AND RORA)); + rate_up = @logic ? $u_IL17A : 0.0; + rate_down = @logic ? 0.0 : $d_IL17A; +} + +Node IL17F { + + logic = (((((((((((NOT STAT1 AND STAT3) AND RORGt) AND AP1) AND NFAT1) AND (Blimp1_b1 AND Blimp1_b2)) AND IRF4) AND AHR) AND (NOT STAT5B_b1 OR (STAT5B_b1 AND NOT STAT5B_b2))) OR (((((((((NOT STAT1 AND STAT3) AND RORGt) AND AP1) AND NFAT1) AND (Blimp1_b1 AND Blimp1_b2)) AND IRF4) AND AHR) AND (STAT5B_b1 AND STAT5B_b2)) AND (NOT STAT5A_b1 OR (STAT5A_b1 AND NOT STAT5A_b2)))) OR (((((((STAT1 AND RORGt) AND AP1) AND NFAT1) AND (Blimp1_b1 AND Blimp1_b2)) AND IRF4) AND AHR) AND (NOT STAT5B_b1 OR (STAT5B_b1 AND NOT STAT5B_b2)))) OR ((((((((STAT1 AND RORGt) AND AP1) AND NFAT1) AND (Blimp1_b1 AND Blimp1_b2)) AND IRF4) AND AHR) AND (STAT5B_b1 AND STAT5B_b2)) AND (NOT STAT5A_b1 OR (STAT5A_b1 AND NOT STAT5A_b2)))); + rate_up = @logic ? $u_IL17F : 0.0; + rate_down = @logic ? 0.0 : $d_IL17F; +} + +Node LCK { + + logic = ((TCR_b1 AND TCR_b2) | CD4); + rate_up = @logic ? $u_LCK : 0.0; + rate_down = @logic ? 0.0 : $d_LCK; +} + +Node MHCII_b1 { + + logic = MHCII_b1; + rate_up = @logic ? $u_MHCII_b1 : 0.0; + rate_down = @logic ? 0.0 : $d_MHCII_b1; +} + +Node MHCII_b2 { + + logic = (MHCII_b2 AND MHCII_b1); + rate_up = @logic ? $u_MHCII_b2 : 0.0; + rate_down = @logic ? 0.0 : $d_MHCII_b2; +} + +Node TCR_b1 { + + logic = ((((LCK AND (MHCII_b1 AND NOT MHCII_b2)) OR (LCK AND (MHCII_b1 AND MHCII_b2))) AND (NOT TCR_b1 OR (TCR_b1 AND NOT TCR_b2))) OR (TCR_b1 AND TCR_b2)); + rate_up = @logic ? $u_TCR_b1 : 0.0; + rate_down = @logic ? 0.0 : $d_TCR_b1; +} + +Node TCR_b2 { + + logic = ((LCK AND (MHCII_b1 AND MHCII_b2)) AND TCR_b1); + rate_up = @logic ? $u_TCR_b2 : 0.0; + rate_down = @logic ? 0.0 : $d_TCR_b2; +} + +Node IL1_In { + + logic = IL1_In; + rate_up = @logic ? $u_IL1_In : 0.0; + rate_down = @logic ? 0.0 : $d_IL1_In; +} + +Node CD80 { + + logic = 1; + rate_up = @logic ? $u_CD80 : 0.0; + rate_down = @logic ? 0.0 : $d_CD80; +} + +Node CD28 { + + logic = (LCK AND CD80); + rate_up = @logic ? $u_CD28 : 0.0; + rate_down = @logic ? 0.0 : $d_CD28; +} + +Node CD4 { + + logic = CD4; + rate_up = @logic ? $u_CD4 : 0.0; + rate_down = @logic ? 0.0 : $d_CD4; +} + +Node ZAP70 { + + logic = ((TCR_b1 AND TCR_b2) AND LCK); + rate_up = @logic ? $u_ZAP70 : 0.0; + rate_down = @logic ? 0.0 : $d_ZAP70; +} + +Node LAT { + + logic = ZAP70; + rate_up = @logic ? $u_LAT : 0.0; + rate_down = @logic ? 0.0 : $d_LAT; +} + +Node VAV { + + logic = (((NOT CD28 AND ZAP70) AND LAT) OR CD28); + rate_up = @logic ? $u_VAV : 0.0; + rate_down = @logic ? 0.0 : $d_VAV; +} + +Node RAS { + + logic = ((NOT SOS AND DAG) OR SOS); + rate_up = @logic ? $u_RAS : 0.0; + rate_down = @logic ? 0.0 : $d_RAS; +} + +Node SOS { + + logic = ((NOT CD28 AND LAT) OR CD28); + rate_up = @logic ? $u_SOS : 0.0; + rate_down = @logic ? 0.0 : $d_SOS; +} + +Node PLCG { + + logic = LAT; + rate_up = @logic ? $u_PLCG : 0.0; + rate_down = @logic ? 0.0 : $d_PLCG; +} + +Node RAC { + + logic = VAV; + rate_up = @logic ? $u_RAC : 0.0; + rate_down = @logic ? 0.0 : $d_RAC; +} + +Node FOXP3 { + + logic = NOT STAT1 AND NOT RORGt AND NOT NFAT1 AND FOXP3 OR (((NOT STAT1 AND NOT RORGt) AND NFAT1) AND FOXP3) OR (STAT1 AND FOXP3); + rate_up = @logic ? $u_FOXP3 : 0.0; + rate_down = @logic ? 0.0 : $d_FOXP3; +} + +Node PTEN { + + logic = FOXP3; + rate_up = @logic ? $u_PTEN : 0.0; + rate_down = @logic ? 0.0 : $d_PTEN; +} + +Node PIP2 { + + logic = PIP2; + rate_up = @logic ? $u_PIP2 : 0.0; + rate_down = @logic ? 0.0 : $d_PIP2; +} + +Node PIP3 { + + logic = ((((PI3K_b1 AND NOT PI3K_b2) AND PIP2) AND NOT PTEN) OR ((PI3K_b1 AND PI3K_b2) AND PIP2)); + rate_up = @logic ? $u_PIP3 : 0.0; + rate_down = @logic ? 0.0 : $d_PIP3; +} + +Node IP3 { + + logic = (PLCG AND PIP2); + rate_up = @logic ? $u_IP3 : 0.0; + rate_down = @logic ? 0.0 : $d_IP3; +} + +Node DAG { + + logic = (PLCG AND PIP2); + rate_up = @logic ? $u_DAG : 0.0; + rate_down = @logic ? 0.0 : $d_DAG; +} + +Node PKCO { + + logic = ((NOT PIP3 AND DAG) OR PIP3); + rate_up = @logic ? $u_PKCO : 0.0; + rate_down = @logic ? 0.0 : $d_PKCO; +} + +Node ITK_b1 { + + logic = (((((TCR_b1 AND TCR_b2) AND NOT CXCR4) OR ((TCR_b1 AND TCR_b2) AND CXCR4)) AND (NOT ITK_b1 OR (ITK_b1 AND NOT ITK_b2))) OR (ITK_b1 AND ITK_b2)); + rate_up = @logic ? $u_ITK_b1 : 0.0; + rate_down = @logic ? 0.0 : $d_ITK_b1; +} + +Node ERK1_2 { + + logic = (RAS AND ITK_b1); + rate_up = @logic ? $u_ERK1_2 : 0.0; + rate_down = @logic ? 0.0 : $d_ERK1_2; +} + +Node cFOS { + + logic = ERK1_2; + rate_up = @logic ? $u_cFOS : 0.0; + rate_down = @logic ? 0.0 : $d_cFOS; +} + +Node cJUN { + + logic = ((NOT MEKK1 AND TAK1) OR MEKK1); + rate_up = @logic ? $u_cJUN : 0.0; + rate_down = @logic ? 0.0 : $d_cJUN; +} + +Node MEKK1 { + + logic = ((NOT RAC AND RAS) OR RAC); + rate_up = @logic ? $u_MEKK1 : 0.0; + rate_down = @logic ? 0.0 : $d_MEKK1; +} + +Node TRAF6 { + + logic = IRAK1_4; + rate_up = @logic ? $u_TRAF6 : 0.0; + rate_down = @logic ? 0.0 : $d_TRAF6; +} + +Node TAK1 { + + logic = ((NOT PKCO AND TRAF6) OR PKCO); + rate_up = @logic ? $u_TAK1 : 0.0; + rate_down = @logic ? 0.0 : $d_TAK1; +} + +Node IKK { + + logic = ((NOT PKCO AND TAK1) OR PKCO); + rate_up = @logic ? $u_IKK : 0.0; + rate_down = @logic ? 0.0 : $d_IKK; +} + +Node Myd88 { + + logic = IL1R; + rate_up = @logic ? $u_Myd88 : 0.0; + rate_down = @logic ? 0.0 : $d_Myd88; +} + +Node IRAK1_4 { + + logic = Myd88; + rate_up = @logic ? $u_IRAK1_4 : 0.0; + rate_down = @logic ? 0.0 : $d_IRAK1_4; +} + +Node NFAT2 { + + logic = IP3; + rate_up = @logic ? $u_NFAT2 : 0.0; + rate_down = @logic ? 0.0 : $d_NFAT2; +} + +Node NFAT4 { + + logic = IP3; + rate_up = @logic ? $u_NFAT4 : 0.0; + rate_down = @logic ? 0.0 : $d_NFAT4; +} + +Node IL2RA { + + logic = ((((((NFKB AND NFAT2A_b1) AND NOT FOXP3) AND STAT5B_b1) AND NOT SATB1) OR (((((NFKB AND NFAT2A_b1) AND FOXP3) AND NOT STAT5B_b1) AND SMAD2) AND NOT SATB1)) OR ((((NFKB AND NFAT2A_b1) AND FOXP3) AND STAT5B_b1) AND NOT SATB1)); + rate_up = @logic ? $u_IL2RA : 0.0; + rate_down = @logic ? 0.0 : $d_IL2RA; +} + +Node IL2RB { + + logic = 1; + rate_up = @logic ? $u_IL2RB : 0.0; + rate_down = @logic ? 0.0 : $d_IL2RB; +} + +Node CGC { + + logic = 1; + rate_up = @logic ? $u_CGC : 0.0; + rate_down = @logic ? 0.0 : $d_CGC; +} + +Node IL2 { + + logic = ((((AP1 AND NFAT1) AND NFKB) AND NOT FOXP3) AND NOT SATB1); + rate_up = @logic ? $u_IL2 : 0.0; + rate_down = @logic ? 0.0 : $d_IL2; +} + +Node IL2R_b1 { + + logic = ((((((NOT IL2RA AND IL2RB) AND CGC) AND IL2) OR (((IL2RA AND IL2RB) AND CGC) AND IL2)) AND (NOT IL2R_b1 OR (IL2R_b1 AND NOT IL2R_b2))) OR (IL2R_b1 AND IL2R_b2)); + rate_up = @logic ? $u_IL2R_b1 : 0.0; + rate_down = @logic ? 0.0 : $d_IL2R_b1; +} + +Node IL2R_b2 { + + logic = ((((IL2RA AND IL2RB) AND CGC) AND IL2) AND IL2R_b1); + rate_up = @logic ? $u_IL2R_b2 : 0.0; + rate_down = @logic ? 0.0 : $d_IL2R_b2; +} + +Node SATB1 { + + logic = (RORGt AND NOT FOXP3_2); + rate_up = @logic ? $u_SATB1 : 0.0; + rate_down = @logic ? 0.0 : $d_SATB1; +} + +Node TGFBR { + + logic = TGFB_In; + rate_up = @logic ? $u_TGFBR : 0.0; + rate_down = @logic ? 0.0 : $d_TGFBR; +} + +Node GP130 { + + logic = 1; + rate_up = @logic ? $u_GP130 : 0.0; + rate_down = @logic ? 0.0 : $d_GP130; +} + +Node IL23_In { + + logic = IL23_In; + rate_up = @logic ? $u_IL23_In : 0.0; + rate_down = @logic ? 0.0 : $d_IL23_In; +} + +Node MINA { + + logic = (RORGt AND NOT STAT5A_b1); + rate_up = @logic ? $u_MINA : 0.0; + rate_down = @logic ? 0.0 : $d_MINA; +} + +Node FOXP3_2 { + + logic = (IL1R AND NOT MINA); + rate_up = @logic ? $u_FOXP3_2 : 0.0; + rate_down = @logic ? 0.0 : $d_FOXP3_2; +} + +Node IL6_In { + + logic = IL6_In; + rate_up = @logic ? $u_IL6_In : 0.0; + rate_down = @logic ? 0.0 : $d_IL6_In; +} + +Node TGFB_In { + + logic = TGFB_In; + rate_up = @logic ? $u_TGFB_In : 0.0; + rate_down = @logic ? 0.0 : $d_TGFB_In; +} + +Node CXCR4 { + + logic = (NOT IL12R OR (IL12R AND NOT IL1R)); + rate_up = @logic ? $u_CXCR4 : 0.0; + rate_down = @logic ? 0.0 : $d_CXCR4; +} + +Node ITK_b2 { + + logic = (((TCR_b1 AND TCR_b2) AND CXCR4) AND ITK_b1); + rate_up = @logic ? $u_ITK_b2 : 0.0; + rate_down = @logic ? 0.0 : $d_ITK_b2; +} diff --git a/sample_projects_intracellular/boolean/tutorial/config/differentiation/boolean_network/tcell_corral.cfg b/sample_projects_intracellular/boolean/tutorial/config/differentiation/boolean_network/tcell_corral.cfg new file mode 100644 index 000000000..4236c01bd --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/differentiation/boolean_network/tcell_corral.cfg @@ -0,0 +1,400 @@ +$nb_mutable = 0; + +$u_Th17 = 100.0; +$d_Th17 = 1.0; +$u_Treg = 0.1; +$d_Treg = 1.0; +$u_Th1 = 1.0; +$d_Th1 = 1.0; +$u_PI3K_b1 = 1.0; +$d_PI3K_b1 = 1.0; +$u_PI3K_b2 = 1.0; +$d_PI3K_b2 = 1.0; +$u_IL6_Aut = 1.0; +$d_IL6_Aut = 1.0; +$u_IL12R = 1.0; +$d_IL12R = 1.0; +$u_IL6R = 1.0; +$d_IL6R = 1.0; +$u_STAT1 = 1.0; +$d_STAT1 = 1.0; +$u_Tbet = 1.0; +$d_Tbet = 1.0; +$u_AP1 = 1.0; +$d_AP1 = 1.0; +$u_NFAT1 = 1.0; +$d_NFAT1 = 1.0; +$u_NFKB = 1.0; +$d_NFKB = 1.0; +$u_Blimp1_b1 = 1.0; +$d_Blimp1_b1 = 1.0; +$u_Blimp1_b2 = 1.0; +$d_Blimp1_b2 = 1.0; +$u_RUNX1_b1 = 1.0; +$d_RUNX1_b1 = 1.0; +$u_RUNX1_b2 = 1.0; +$d_RUNX1_b2 = 1.0; +$u_STAT4 = 1.0; +$d_STAT4 = 1.0; +$u_RUNX3 = 1.0; +$d_RUNX3 = 1.0; +$u_EOMES = 1.0; +$d_EOMES = 1.0; +$u_IFNg = 1.0; +$d_IFNg = 1.0; +$u_IL12RB1 = 1.0; +$d_IL12RB1 = 1.0; +$u_IL12RB2 = 1.0; +$d_IL12RB2 = 1.0; +$u_IL12_In = 1.0; +$d_IL12_In = 1.0; +$u_IL1RAP = 1.0; +$d_IL1RAP = 1.0; +$u_IL1R1 = 1.0; +$d_IL1R1 = 1.0; +$u_IL1R = 1.0; +$d_IL1R = 1.0; +$u_IL23R = 1.0; +$d_IL23R = 1.0; +$u_STAT3 = 1.0; +$d_STAT3 = 1.0; +$u_cMAF = 1.0; +$d_cMAF = 1.0; +$u_IL21 = 1.0; +$d_IL21 = 1.0; +$u_RORGt = 1.0; +$d_RORGt = 1.0; +$u_IRF4 = 1.0; +$d_IRF4 = 1.0; +$u_AHR = 1.0; +$d_AHR = 1.0; +$u_NFAT2A_b1 = 1.0; +$d_NFAT2A_b1 = 1.0; +$u_NFAT2A_b2 = 1.0; +$d_NFAT2A_b2 = 1.0; +$u_STAT5B_b1 = 1.0; +$d_STAT5B_b1 = 1.0; +$u_STAT5B_b2 = 1.0; +$d_STAT5B_b2 = 1.0; +$u_SMAD2 = 1.0; +$d_SMAD2 = 1.0; +$u_RORA = 1.0; +$d_RORA = 1.0; +$u_STAT5A_b1 = 1.0; +$d_STAT5A_b1 = 1.0; +$u_STAT5A_b2 = 1.0; +$d_STAT5A_b2 = 1.0; +$u_IL17A = 1.0; +$d_IL17A = 1.0; +$u_IL17F = 1.0; +$d_IL17F = 1.0; +$u_LCK = 1.0; +$d_LCK = 1.0; +$u_MHCII_b1 = 1.0; +$d_MHCII_b1 = 1.0; +$u_MHCII_b2 = 1.0; +$d_MHCII_b2 = 1.0; +$u_TCR_b1 = 1.0; +$d_TCR_b1 = 1.0; +$u_TCR_b2 = 1.0; +$d_TCR_b2 = 1.0; +$u_IL1_In = 1.0; +$d_IL1_In = 1.0; +$u_CD80 = 1.0; +$d_CD80 = 1.0; +$u_CD28 = 1.0; +$d_CD28 = 1.0; +$u_CD4 = 1.0; +$d_CD4 = 1.0; +$u_ZAP70 = 1.0; +$d_ZAP70 = 1.0; +$u_LAT = 1.0; +$d_LAT = 1.0; +$u_VAV = 1.0; +$d_VAV = 1.0; +$u_RAS = 1.0; +$d_RAS = 1.0; +$u_SOS = 1.0; +$d_SOS = 1.0; +$u_PLCG = 1.0; +$d_PLCG = 1.0; +$u_RAC = 1.0; +$d_RAC = 1.0; +$u_FOXP3 = 1.0; +$d_FOXP3 = 1.0; +$u_PTEN = 1.0; +$d_PTEN = 1.0; +$u_PIP2 = 1.0; +$d_PIP2 = 1.0; +$u_PIP3 = 1.0; +$d_PIP3 = 1.0; +$u_IP3 = 1.0; +$d_IP3 = 1.0; +$u_DAG = 1.0; +$d_DAG = 1.0; +$u_PKCO = 1.0; +$d_PKCO = 1.0; +$u_ITK_b1 = 1.0; +$d_ITK_b1 = 1.0; +$u_ERK1_2 = 1.0; +$d_ERK1_2 = 1.0; +$u_cFOS = 1.0; +$d_cFOS = 1.0; +$u_cJUN = 1.0; +$d_cJUN = 1.0; +$u_MEKK1 = 1.0; +$d_MEKK1 = 1.0; +$u_TRAF6 = 1.0; +$d_TRAF6 = 1.0; +$u_TAK1 = 1.0; +$d_TAK1 = 1.0; +$u_IKK = 1.0; +$d_IKK = 1.0; +$u_Myd88 = 1.0; +$d_Myd88 = 1.0; +$u_IRAK1_4 = 1.0; +$d_IRAK1_4 = 1.0; +$u_NFAT2 = 1.0; +$d_NFAT2 = 1.0; +$u_NFAT4 = 1.0; +$d_NFAT4 = 1.0; +$u_IL2RA = 1.0; +$d_IL2RA = 1.0; +$u_IL2RB = 1.0; +$d_IL2RB = 1.0; +$u_CGC = 1.0; +$d_CGC = 1.0; +$u_IL2 = 1.0; +$d_IL2 = 1.0; +$u_IL2R_b1 = 1.0; +$d_IL2R_b1 = 1.0; +$u_IL2R_b2 = 1.0; +$d_IL2R_b2 = 1.0; +$u_SATB1 = 1.0; +$d_SATB1 = 1.0; +$u_TGFBR = 1.0; +$d_TGFBR = 1.0; +$u_GP130 = 1.0; +$d_GP130 = 1.0; +$u_IL23_In = 1.0; +$d_IL23_In = 1.0; +$u_MINA = 1.0; +$d_MINA = 1.0; +$u_FOXP3_2 = 1.0; +$d_FOXP3_2 = 1.0; +$u_IL6_In = 1.0; +$d_IL6_In = 1.0; +$u_TGFB_In = 1.0; +$d_TGFB_In = 1.0; +$u_CXCR4 = 1.0; +$d_CXCR4 = 1.0; +$u_ITK_b2 = 1.0; +$d_ITK_b2 = 1.0; + +Th17.istate = FALSE; +Th1.istate = FALSE; +Treg.istate = FALSE; + +IL6_Aut.istate = FALSE; +IL12R.istate = FALSE; +IL6R.istate = FALSE; +STAT1.istate = FALSE; +Tbet.istate = FALSE; +AP1.istate = FALSE; +NFAT1.istate = FALSE; +NFKB.istate = FALSE; +STAT4.istate = FALSE; +RUNX3.istate = FALSE; +EOMES.istate = FALSE; +IFNg.istate = FALSE; +IL12RB1.istate = FALSE; +IL12RB2.istate = FALSE; +IL12_In.istate = FALSE; +IL1RAP.istate = FALSE; +IL1R1.istate = FALSE; +IL1R.istate = FALSE; +IL23R.istate = FALSE; +STAT3.istate = FALSE; +cMAF.istate = FALSE; +IL21.istate = FALSE; +RORGt.istate = FALSE; +IRF4.istate = FALSE; +AHR.istate = FALSE; + +SMAD2.istate = FALSE; +RORA.istate = FALSE; + +IL17A.istate = FALSE; +IL17F.istate = FALSE; +LCK.istate = FALSE; +IL1_In.istate = FALSE; +CD80.istate = FALSE; +CD28.istate = FALSE; +CD4.istate = FALSE; +ZAP70.istate = FALSE; +LAT.istate = FALSE; +VAV.istate = FALSE; +RAS.istate = FALSE; +SOS.istate = FALSE; +PLCG.istate = FALSE; +RAC.istate = FALSE; +PTEN.istate = FALSE; +PIP2.istate = FALSE; +PIP3.istate = FALSE; +IP3.istate = FALSE; +DAG.istate = FALSE; +PKCO.istate = FALSE; +ITK_b1.istate = FALSE; +ERK1_2.istate = FALSE; +cFOS.istate = FALSE; +cJUN.istate = FALSE; +MEKK1.istate = FALSE; +TRAF6.istate = FALSE; +TAK1.istate = FALSE; +IKK.istate = FALSE; +Myd88.istate = FALSE; +IRAK1_4.istate = FALSE; +NFAT2.istate = FALSE; +NFAT4.istate = FALSE; +IL2RA.istate = FALSE; +IL2RB.istate = FALSE; +CGC.istate = FALSE; +IL2.istate = FALSE; +SATB1.istate = FALSE; +TGFBR.istate = FALSE; +GP130.istate = FALSE; +IL23_In.istate = FALSE; +MINA.istate = FALSE; +IL6_In.istate = FALSE; +TGFB_In.istate = FALSE; +CXCR4.istate = FALSE; +ITK_b2.istate = FALSE; +FOXP3.istate = FALSE; +FOXP3_2.istate = FALSE; +IL2R_b1.istate = FALSE; +IL2R_b2.istate = FALSE; +STAT5A_b1.istate = FALSE; +STAT5A_b2.istate = FALSE; +NFAT2A_b1.istate = FALSE; +NFAT2A_b2.istate = FALSE; +STAT5B_b1.istate = FALSE; +STAT5B_b2.istate = FALSE; +MHCII_b1.istate = FALSE; +MHCII_b2.istate = FALSE; +TCR_b1.istate = FALSE; +TCR_b2.istate = FALSE; +PI3K_b1.istate = FALSE; +PI3K_b2.istate = FALSE; +Blimp1_b1.istate = FALSE; +Blimp1_b2.istate = FALSE; +RUNX1_b1.istate = FALSE; +RUNX1_b2.istate = FALSE; + + +time_tick = 0.5; +max_time = 1000.0; +sample_count = 10000.0; +discrete_time = 0.0; +use_physrandgen = 1.0; +seed_pseudorandom = 0.0; +display_traj = 0.0; +statdist_traj_count = 0.0; +statdist_cluster_threshold = 1.0; +thread_count = 8.0; +statdist_similarity_cache_max_size = 20000.0; + +Th17.is_internal = False; +Treg.is_internal = False; +Th1.is_internal = False; +PI3K_b1.is_internal = False; +PI3K_b2.is_internal = False; +IL6_Aut.is_internal = False; +IL12R.is_internal = False; +IL6R.is_internal = False; +STAT1.is_internal = False; +Tbet.is_internal = False; +AP1.is_internal = False; +NFAT1.is_internal = False; +NFKB.is_internal = False; +Blimp1_b1.is_internal = False; +Blimp1_b2.is_internal = False; +RUNX1_b1.is_internal = False; +RUNX1_b2.is_internal = False; +STAT4.is_internal = False; +RUNX3.is_internal = False; +EOMES.is_internal = False; +IFNg.is_internal = False; +IL12RB1.is_internal = False; +IL12RB2.is_internal = False; +IL12_In.is_internal = False; +IL1RAP.is_internal = False; +IL1R1.is_internal = False; +IL1R.is_internal = False; +IL23R.is_internal = False; +STAT3.is_internal = False; +cMAF.is_internal = False; +IL21.is_internal = False; +RORGt.is_internal = False; +IRF4.is_internal = False; +AHR.is_internal = False; +NFAT2A_b1.is_internal = False; +NFAT2A_b2.is_internal = False; +STAT5B_b1.is_internal = False; +STAT5B_b2.is_internal = False; +SMAD2.is_internal = False; +RORA.is_internal = False; +STAT5A_b1.is_internal = False; +STAT5A_b2.is_internal = False; +IL17A.is_internal = False; +IL17F.is_internal = False; +LCK.is_internal = False; +MHCII_b1.is_internal = False; +MHCII_b2.is_internal = False; +TCR_b1.is_internal = False; +TCR_b2.is_internal = False; +IL1_In.is_internal = False; +CD80.is_internal = False; +CD28.is_internal = False; +CD4.is_internal = False; +ZAP70.is_internal = False; +LAT.is_internal = False; +VAV.is_internal = False; +RAS.is_internal = False; +SOS.is_internal = False; +PLCG.is_internal = False; +RAC.is_internal = False; +FOXP3.is_internal = False; +PTEN.is_internal = False; +PIP2.is_internal = False; +PIP3.is_internal = False; +IP3.is_internal = False; +DAG.is_internal = False; +PKCO.is_internal = False; +ITK_b1.is_internal = False; +ERK1_2.is_internal = False; +cFOS.is_internal = False; +cJUN.is_internal = False; +MEKK1.is_internal = False; +TRAF6.is_internal = False; +TAK1.is_internal = False; +IKK.is_internal = False; +Myd88.is_internal = False; +IRAK1_4.is_internal = False; +NFAT2.is_internal = False; +NFAT4.is_internal = False; +IL2RA.is_internal = False; +IL2RB.is_internal = False; +CGC.is_internal = False; +IL2.is_internal = False; +IL2R_b1.is_internal = False; +IL2R_b2.is_internal = False; +SATB1.is_internal = False; +TGFBR.is_internal = False; +GP130.is_internal = False; +IL23_In.is_internal = False; +MINA.is_internal = False; +FOXP3_2.is_internal = False; +IL6_In.is_internal = False; +TGFB_In.is_internal = False; +CXCR4.is_internal = False; +ITK_b2.is_internal = False; \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/config/differentiation/cells.csv b/sample_projects_intracellular/boolean/tutorial/config/differentiation/cells.csv new file mode 100644 index 000000000..98e1d933f --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/differentiation/cells.csv @@ -0,0 +1,109 @@ +x,y,z,type,volume,cycle entry,custom:GFP,custom:sample +-177.78461292571188,239.77684853196962,0.0,T0 +-150.6572001521393,230.75252719955418,0.0,T0 +-176.4913930257498,283.52337988150146,0.0,T0 +-230.6818837173706,121.94119536126259,0.0,T0 +-266.3103679498659,131.22765473584303,0.0,T0 +-170.29592537698719,183.88144297429335,0.0,T0 +-167.7416593105921,112.47744301840046,0.0,T0 +-178.39874765902687,282.7257632303382,0.0,T0 +-261.2304440352226,143.75147641706167,0.0,T0 +-200.45940889591378,171.0916354866618,0.0,T0 +-213.5379522674296,142.25412201849855,0.0,T0 +-254.33331923024676,188.88565132582795,0.0,T0 +-250.10051676610152,189.58617834847567,0.0,T0 +-224.53840409326568,223.84398112806653,0.0,T0 +-189.27170066312166,243.42020328824412,0.0,T0 +-143.80688551262463,153.825734214727,0.0,T0 +-185.73806021692243,143.22774017457937,0.0,T0 +-264.9653635039579,184.5729581495067,0.0,T0 +-237.4012257063601,217.12564215299926,0.0,T0 +-251.08913542511257,259.3764171878773,0.0,T0 +-225.2102284205476,232.04244479243457,0.0,T0 +-197.95853041437948,225.38219664560424,0.0,T0 +-199.11814147579935,234.71364025700723,0.0,T0 +-220.3385483167535,290.7345462053926,0.0,T0 +-118.13960490341266,245.15982117483472,0.0,T0 +-149.32275955397998,194.36605604776642,0.0,T0 +-168.8401225080124,193.9484136417777,0.0,T0 +-204.16697122793326,283.849604143889,0.0,T0 +-121.27917825154417,162.57910376070785,0.0,T0 +-217.91136757869754,293.9617323530355,0.0,T0 +-241.66808345674278,283.48373766066527,0.0,T0 +-196.54153082363797,272.4632020570061,0.0,T0 +-217.67992002413033,271.4038360918562,0.0,T0 +-258.0314515942648,206.90911091154337,0.0,T0 +-210.23940525242315,216.92223467244386,0.0,T0 +-113.39542818358676,194.5295765369492,0.0,T0 +-201.62757655780192,255.80321159234938,0.0,T0 +-272.8658412554291,150.05175727293528,0.0,T0 +-213.9597766148156,219.50414847592316,0.0,T0 +-116.53989057801338,181.35927163140516,0.0,T0 +-177.0630507850045,190.64080197704018,0.0,T0 +-203.25479803377758,141.72100612865148,0.0,T0 +-136.34575308003497,276.7210917565353,0.0,T0 +-149.46323637816556,283.82913051317365,0.0,T0 +-244.79805592020313,124.03594187389811,0.0,T0 +-143.30307706571438,144.84962178043116,0.0,T0 +-277.8971280422397,231.33250179129817,0.0,T0 +-223.78246523632347,271.0946473423732,0.0,T0 +-192.0086072679717,271.2063923857954,0.0,T0 +-245.182795432143,187.3175304141251,0.0,T0 +-167.90407388563716,228.98390095688805,0.0,T0 +-247.4610469791277,280.3609781608844,0.0,T0 +-241.72619618741675,160.78058278381943,0.0,T0 +-188.87183447289533,155.01632249596733,0.0,T0 +-199.26194940065594,277.7443695420098,0.0,T0 +-232.65459867705493,184.6615489706843,0.0,T0 +-250.95797261543814,278.02215637864185,0.0,T0 +-170.10839452311774,156.86776229599076,0.0,T0 +-188.8975134518632,163.74500375636194,0.0,T0 +-211.08092498876263,137.08680778052764,0.0,T0 +-227.4068492120897,125.42426284230157,0.0,T0 +-251.47550133599051,275.03595220598083,0.0,T0 +-274.70977482135135,156.8296933733237,0.0,T0 +-130.0619791624628,175.94844547778797,0.0,T0 +-262.9133539474019,197.67116445107584,0.0,T0 +-165.09849860884805,163.81373072140906,0.0,T0 +-212.1801623590552,165.03454538212395,0.0,T0 +-153.0386656049182,266.85407548480316,0.0,T0 +-229.2488641227173,215.10484280633744,0.0,T0 +-149.64917926599725,174.57111528460308,0.0,T0 +-104.08065040809227,190.83638153388299,0.0,T0 +-146.27936803769853,170.8358129819668,0.0,T0 +-238.11651568373327,175.37984526611967,0.0,T0 +-241.1904594784154,269.45267393304584,0.0,T0 +-246.86261403913264,280.97345821202657,0.0,T0 +-139.27605335641152,166.54495464949133,0.0,T0 +-205.30976106633204,132.52632384551433,0.0,T0 +-230.31841335872446,209.33977571789117,0.0,T0 +-266.6193613752046,200.68324456663518,0.0,T0 +-251.08121790077467,259.88922164879733,0.0,T0 +-116.12734264704028,206.9162269915097,0.0,T0 +-145.34801215692792,186.3588491942667,0.0,T0 +-156.93891318861708,225.59411736277676,0.0,T0 +-267.4642441111574,153.91237143211836,0.0,T0 +-177.64581876106143,286.8498811421825,0.0,T0 +-181.4810914504646,247.37044031781403,0.0,T0 +-277.23815708758934,166.66756120717554,0.0,T0 +-292.3881769261685,227.9218232271617,0.0,T0 +-258.0358492192788,241.74185672118332,0.0,T0 +-192.03199597908863,217.47944079434814,0.0,T0 +-263.991436234461,265.3656324279398,0.0,T0 +-215.24999096155324,209.84894361504067,0.0,T0 +-214.55580848299246,132.95999743783324,0.0,T0 +-184.18043596644924,288.9001978631003,0.0,T0 +-110.28992489837556,211.1672922937497,0.0,T0 +-161.33054507272243,280.26341698662105,0.0,T0 +-121.69564296438585,256.4726010436174,0.0,T0 +-152.3803188415203,139.1606942879324,0.0,T0 +-224.52113599653526,156.64023709141753,0.0,T0 +-192.16574560741373,194.0277680633927,0.0,T0 +242.06355273977113,-270.85751580314536,0.0,dendritic_cell +258.88897383567956,-270.85751580314536,0.0,dendritic_cell +233.6508421918169,-256.286273704718,0.0,dendritic_cell +250.47626328772537,-256.286273704718,0.0,dendritic_cell +267.3016843836338,-256.286273704718,0.0,dendritic_cell +242.06355273977113,-241.71503160629067,0.0,dendritic_cell +258.88897383567956,-241.71503160629067,0.0,dendritic_cell +-286.34915780818307,294.5712420984273,0.0,endothelial_cell diff --git a/sample_projects_intracellular/boolean/tutorial/config/differentiation/rules.csv b/sample_projects_intracellular/boolean/tutorial/config/differentiation/rules.csv new file mode 100644 index 000000000..4ccd1b6cd --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/differentiation/rules.csv @@ -0,0 +1 @@ +dendritic_cell,CCL21,decreases,migration bias,0.0,2,4,0 diff --git a/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/0_Initial.xml b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/0_Initial.xml new file mode 100644 index 000000000..a001b4756 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/0_Initial.xml @@ -0,0 +1,248 @@ + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 2000 + min + micron + + 0.01 + 0.1 + 6 + + + + 6 + + + + output + + + 30 + true + + + + 30 + true + + + + false + + + + + false + true + false + + + + + + 100000.0 + 10 + + 0 + 0 + + + + + + true + true + + + ./config/initial.mat + + + + ./config/dirichlet.mat + + + + + + + + + + 0.00060 + + + + + + 0.0 + + 0.020000 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + + 2494 + 0.75 + 540 + + 0.05 + 0.0045 + 0.0055 + + 0 + 0 + + 2.0 + + + + 0.4 + 10.0 + 1.25 + + 1 + + + 1.8 + 15.12 + + 4.0 + 10.0 + 0.01 + 10.0 + 0.0 + + + + 1 + 1 + .5 + + + false + true + + false + substrate + 1 + + + + + + + 0 + 1 + 0 + 0 + + + + + 0 + + 0 + + + 0 + + 1 + + 0 + + + + + 0 + + + + + + + + 1.0 + + + + + + + ./config/simple_tnf + cells.csv + + + + + + + ./config + cell_rules.csv + + + + + + + 0 + + + + + 0 + + False + TNF + 11000 + 10500 + + + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/1_Long_TNF.xml b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/1_Long_TNF.xml new file mode 100644 index 000000000..ff1d54e62 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/1_Long_TNF.xml @@ -0,0 +1,265 @@ + + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 10000 + min + micron + 0.01 + 0.1 + 6 + + + + 6 + + + + output + + 30 + true + + + 30 + true + + TNF + + + original + + + + false + + + + + false + true + false + + + + + + 1200.0 + 0.0275 + + 0.0 + 10.0 + + 10.0 + 10.0 + 10.0 + 10.0 + 10.0 + 10.0 + + + + true + true + + ./config/initial.mat + + + ./config/dirichlet.mat + + + + + + + + + + 0.00060 + + + + + 0.0 + + 0.020000 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0 + 0 + 2.0 + + + 0.4 + 10.0 + 1.25 + + 1 + + + 1.8 + 15.12 + + 0.01 + 10.0 + 0.0 + + + 1 + 1 + .5 + + false + true + + false + TNF + 1 + + + false + false + + 0.0 + + + + + + + 0 + 1 + 0 + 0 + + + + 0 + + 0 + + + 0 + + 1 + + 0 + + + + + 0 + + + + config/simple_tnf/boolean_network/cellfate.bnd + config/simple_tnf/boolean_network/cellfate.cfg + + 1440 + 0.0 + 60 + 0.0 + + + + + + activation + 1 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + ./config/simple_tnf + cells.csv + + + + + + + ./config/simple_tnf + cell_rules.csv + + + + + + + 0 + 0 + True + TNF + 11000 + 10500 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/1_Long_TNF_stochastic_time.xml b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/1_Long_TNF_stochastic_time.xml new file mode 100644 index 000000000..6d371c7da --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/1_Long_TNF_stochastic_time.xml @@ -0,0 +1,265 @@ + + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 10000 + min + micron + 0.01 + 0.1 + 6 + + + + 6 + + + + output + + 30 + true + + + 30 + true + + TNF + + + original + + + + false + + + + + false + true + false + + + + + + 1200.0 + 0.0275 + + 0.0 + 10.0 + + 10.0 + 10.0 + 10.0 + 10.0 + 10.0 + 10.0 + + + + true + true + + ./config/initial.mat + + + ./config/dirichlet.mat + + + + + + + + + + 0.00060 + + + + + 0.0 + + 0.020000 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0 + 0 + 2.0 + + + 0.4 + 10.0 + 1.25 + + 1 + + + 1.8 + 15.12 + + 0.01 + 10.0 + 0.0 + + + 1 + 1 + .5 + + false + true + + false + TNF + 1 + + + false + false + + 0.0 + + + + + + + 0 + 1 + 0 + 0 + + + + 0 + + 0 + + + 0 + + 1 + + 0 + + + + + 0 + + + + config/simple_tnf/boolean_network/cellfate.bnd + config/simple_tnf/boolean_network/cellfate.cfg + + 1440 + 0.5 + 60 + 0.0 + + + + + + activation + 1 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + ./config/simple_tnf + cells.csv + + + + + + + ./config/simple_tnf + cell_rules.csv + + + + + + + 0 + 0 + True + TNF + 11000 + 10500 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/2_Short_TNF.xml b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/2_Short_TNF.xml new file mode 100644 index 000000000..d7b2184b7 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/2_Short_TNF.xml @@ -0,0 +1,265 @@ + + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 12000 + min + micron + 0.01 + 0.1 + 6 + + + + 6 + + + + output + + 30 + true + + + 30 + true + + TNF + + + original + + + + false + + + + + false + true + false + + + + + + 1200.0 + 0.0275 + + 0.0 + 10.0 + + 10.0 + 10.0 + 10.0 + 10.0 + 10.0 + 10.0 + + + + true + true + + ./config/initial.mat + + + ./config/dirichlet.mat + + + + + + + + + + 0.00060 + + + + + 0.0 + + 0.020000 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0 + 0 + 2.0 + + + 0.4 + 10.0 + 1.25 + + 1 + + + 1.8 + 15.12 + + 0.01 + 10.0 + 0.0 + + + 1 + 1 + .5 + + false + true + + false + TNF + 1 + + + false + false + + 0.0 + + + + + + + 0 + 1 + 0 + 0 + + + + 0 + + 0 + + + 0 + + 1 + + 0 + + + + + 0 + + + + config/simple_tnf/boolean_network/cellfate.bnd + config/simple_tnf/boolean_network/cellfate.cfg + + 1440 + 0.5 + 60 + 0.0 + + + + + + activation + 1 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + ./config/simple_tnf + cells.csv + + + + + + + ./config/simple_tnf + cell_rules.csv + + + + + + + 0 + 0 + True + TNF + 3440 + 2000 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/3_Necrotic_core.xml b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/3_Necrotic_core.xml new file mode 100644 index 000000000..61b184eff --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/3_Necrotic_core.xml @@ -0,0 +1,295 @@ + + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 12000 + min + micron + 0.01 + 0.1 + 6 + + + + 6 + + + + output + + 30 + true + + + 30 + true + + TNF + + + original + + + + false + + + + + false + true + false + + + + + + 1200.0 + 0.0275 + + 0.0 + 10.0 + + 10.0 + 10.0 + 10.0 + 10.0 + 10.0 + 10.0 + + + + + 1000.00 + 0.01 + + 38.0 + 38.0 + + 38.0 + 38.0 + 38.0 + 38.0 + + + + + + true + true + + ./config/initial.mat + + + ./config/dirichlet.mat + + + + + + + + + + 0.00060 + + + + + 0.0 + + 0.020000 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0 + 0 + 2.0 + + + 0.4 + 10.0 + 1.25 + + 1 + + + 1.8 + 15.12 + + 0.01 + 10.0 + 0.0 + + + 1 + 1 + .5 + + false + true + + false + TNF + 1 + + + false + false + + 0.0 + 0.0 + + + + + + + 0 + 1 + 0 + 0.0 + + + 0.0 + 0.0 + 2.0 + 0 + + + + 0 + + 0 + + + 0 + + 1 + + 0 + + + + + 0 + + + + config/simple_tnf/boolean_network/cellfate_with_oxygen.bnd + config/simple_tnf/boolean_network/cellfate_with_oxygen.cfg + + 1440 + 0.5 + 60 + 0.0 + + + + + + activation + 1 + 0 + + + + + activation + 0.5 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + ./config/simple_tnf + cells.csv + + + + + + + ./config/simple_tnf + cell_rules.csv + + + + + + + 0 + 0 + True + TNF + 3440 + 2000 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/4_Mutants.xml b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/4_Mutants.xml new file mode 100644 index 000000000..e68424866 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/4_Mutants.xml @@ -0,0 +1,475 @@ + + + + -500 + 500 + -500 + 500 + -10 + 10 + 20 + 20 + 20 + true + + + + 12000 + min + micron + 0.01 + 0.1 + 6 + + + + 6 + + + + output + + 30 + true + + + 30 + true + + TNF + + + original + + + + false + + + + + false + true + false + + + + + + 1200.0 + 0.0275 + + 0.0 + 10.0 + + 10.0 + 10.0 + 10.0 + 10.0 + 10.0 + 10.0 + + + + + 1000.00 + 0.01 + + 38.0 + 38.0 + + 38.0 + 38.0 + 38.0 + 38.0 + + + + + + true + true + + ./config/initial.mat + + + ./config/dirichlet.mat + + + + + + + + + + 0.00060 + + + + + 0.0 + + 0.020000 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0 + 0 + 2.0 + + + 0.4 + 10.0 + 1.25 + + 1 + 1 + + + 1.8 + 15.12 + + 0.01 + 10.0 + 0.0 + + + 1 + 1 + .5 + + false + true + + false + TNF + 1 + + + false + false + + 0.0 + 0.0 + + + + + + + 0 + 1 + 0 + 0.0 + + + 0.0 + 0.0 + 2.0 + 0 + + + + 0 + + 0 + 0 + + + 0 + 0 + + 1 + + 0 + 0 + + + + + 0 + 0 + + + + config/simple_tnf/boolean_network/cellfate_with_oxygen.bnd + config/simple_tnf/boolean_network/cellfate_with_oxygen.cfg + + 1440 + 0.5 + 60 + 0.0 + + + + + + activation + 1 + 0 + + + + + activation + 0.5 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + 0.00060 + + + + + 0.0 + + 0.020000 + + + 0.05 + 0 + 1.66667e-02 + 5.83333e-03 + 0 + 2.0 + + + + 0.0 + + 9000000000.0 + 1.15741e-05 + + + 1.11667e-2 + 8.33333e-4 + 5.33333e-5 + 2.16667e-3 + 0 + 2.0 + + + + + 2494 + 0.75 + 540 + 0.05 + 0.0045 + 0.0055 + 0 + 0 + 2.0 + + + 0.4 + 10.0 + 1.25 + + 1 + 1 + + + 1.8 + 15.12 + + 0.01 + 10.0 + 0.0 + + + 1 + 1 + .5 + + false + true + + false + TNF + 1 + + + false + false + + 0.0 + 0.0 + + + + + + + 0 + 1 + 0 + 0.0 + + + 0.0 + 0.0 + 2.0 + 0 + + + + 0 + + 0 + 0 + + + 0 + 0 + + 1 + + 0 + 0 + + + + + 0 + 0 + + + + config/simple_tnf/boolean_network/cellfate_with_oxygen.bnd + config/simple_tnf/boolean_network/cellfate_with_oxygen.cfg + + 1440 + 0.5 + 60 + 0.0 + + + 1 + 1 + + + + + + activation + 1 + 0 + + + + + activation + 0.5 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + activation + 1000000 + 0 + 0 + + + + + + + 1.0 + + + + + + + /home/vincent/Work/code/PhysiBoSSa/config/simple_tnf + cells_mutant.csv + + + + + + + ./config/simple_tnf + cell_rules.csv + + + + + + + 0 + 0 + True + TNF + 3440 + 2000 + + \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/boolean_network/cellfate.bnd b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/boolean_network/cellfate.bnd new file mode 100644 index 000000000..e6aa8b908 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/boolean_network/cellfate.bnd @@ -0,0 +1,183 @@ +node FASL { + rate_up = 0; + rate_down = 0; +} + +node TNF { + logic = TNF; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node TNFR { + logic = TNF; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node FADD { + rate_up = 0; + rate_down = 0; +} + +node DISC_TNF { + logic = FADD AND TNFR; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node DISC_FAS { + logic = FASL AND FADD; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node CASP8 { + logic = (DISC_TNF OR (DISC_FAS OR CASP3)) AND (NOT cFLIP); + rate_up = ($Low_CASP8 ? 0 : (@logic ? 1 : 0)); + rate_down = ($Low_CASP8 ? 1e+100 : (@logic ? 0 : 1)); +} + +node RIP1 { + logic = (DISC_FAS OR TNFR) AND (NOT CASP8); + rate_up = ($Low_RIP1 ? 0 : (@logic ? 1 : 0)); + rate_down = ($Low_RIP1 ? 1e+100 : (@logic ? 0 : 1)); +} + +node cIAP { + logic = (mcIAP AND (NOT SMAC)); + rate_up = ($Low_cIAP ? 0 : (@logic ? $TransRate : 0)); + rate_down = ($Low_cIAP ? 1e+100 : ((SMAC) ? 1 : 0)); +} + +node RIP1ub { + logic = cIAP AND RIP1; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node RIP1K { + logic = RIP1; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node IKK { + logic = RIP1ub; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node CASP3 { + logic = apoptosome AND (NOT XIAP); + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node NFkB { + logic = IKK AND (NOT CASP3); + rate_up = ($High_NFkB ? 1e+100 : (@logic ? 1 : 0)); + rate_down = ($High_NFkB ? 0 : (@logic ? 0 : 1)); +} + +node cFLIP { + logic = NFkB; + rate_up = (@logic) ? $TransRate : 0; + rate_down = (@logic ? 0 : 1); +} + +node BCL2 { + logic = NFkB; + rate_up = (@logic ? $TransRate : 0); + rate_down = @logic ? 0 : 1; +} + +node BAX { + logic = CASP8 AND (NOT BCL2); + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node mROS { + logic = (NOT NFkB); + rate_up = @logic ? $TransRate : 0; + rate_down = @logic ? 0 : 1; +} + +node MPT { + logic = (NOT BCL2) AND ROS; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node ROS { + logic = (mROS) AND (MPT OR RIP1K); + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node ATP { + logic = NOT MPT; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node MOMP { + logic = BAX OR MPT; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node SMAC { + logic = MOMP; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node mcIAP { + logic = (NFkB); + rate_up = @logic ? $TransRate : 0; + rate_down = @logic ? 0 : 1; +} + +node Cyt_c { + logic = MOMP; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node mXIAP { + logic = (NFkB); + rate_up = @logic ? $TransRate : 0; + rate_down = @logic ? 0 : 1; +} + +node XIAP { + logic = (NOT SMAC) AND mXIAP; + rate_up = (@logic) ? 1 : 0; + rate_down = (@logic ? 0 : 1); +} + +node apoptosome { + logic = Cyt_c AND (ATP AND (NOT XIAP)); + rate_up = (@logic) ? 1 : 0; + rate_down = (@logic ? 0 : 1); +} + +node NonACD { + logic = NOT ATP; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node Apoptosis { + logic = CASP3; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node Survival { + logic = NFkB; + rate_up = @logic ? $TransRate : 0; + rate_down = @logic ? 0 : 1; +} diff --git a/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/boolean_network/cellfate.cfg b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/boolean_network/cellfate.cfg new file mode 100644 index 000000000..d7e737e15 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/boolean_network/cellfate.cfg @@ -0,0 +1,117 @@ +// +// MaBoSS 2.0 configuration generated at Tue Jan 10 22:13:14 2023 +// + +time_tick = 0.01; +max_time = 1; +sample_count = 1; +discrete_time = 0; +use_physrandgen = 0; +seed_pseudorandom = 233814379; +display_traj = 0; +statdist_traj_count = 0; +statdist_cluster_threshold = 0.8; +thread_count = 8; +statdist_similarity_cache_max_size = 20000; + +$High_NFkB = 0; +$Low_CASP8 = 0; +$Low_RIP1 = 0; +$Low_cIAP = 0; +$TransRate = 1/24; + +FASL.is_internal = 1; +TNF.is_internal = 0; +TNFR.is_internal = 1; +FADD.is_internal = 1; +DISC_TNF.is_internal = 1; +DISC_FAS.is_internal = 1; +CASP8.is_internal = 1; +RIP1.is_internal = 1; +cIAP.is_internal = 1; +RIP1ub.is_internal = 1; +RIP1K.is_internal = 1; +IKK.is_internal = 1; +CASP3.is_internal = 1; +NFkB.is_internal = 1; +cFLIP.is_internal = 1; +BCL2.is_internal = 1; +BAX.is_internal = 1; +mROS.is_internal = 1; +MPT.is_internal = 1; +ROS.is_internal = 1; +ATP.is_internal = 1; +MOMP.is_internal = 1; +SMAC.is_internal = 1; +mcIAP.is_internal = 1; +Cyt_c.is_internal = 1; +mXIAP.is_internal = 1; +XIAP.is_internal = 1; +apoptosome.is_internal = 1; +NonACD.is_internal = 0; +Apoptosis.is_internal = 0; +Survival.is_internal = 0; + +FASL.refstate = -1; +TNF.refstate = -1; +TNFR.refstate = -1; +FADD.refstate = -1; +DISC_TNF.refstate = -1; +DISC_FAS.refstate = -1; +CASP8.refstate = -1; +RIP1.refstate = -1; +cIAP.refstate = -1; +RIP1ub.refstate = -1; +RIP1K.refstate = -1; +IKK.refstate = -1; +CASP3.refstate = -1; +NFkB.refstate = -1; +cFLIP.refstate = -1; +BCL2.refstate = -1; +BAX.refstate = -1; +mROS.refstate = -1; +MPT.refstate = -1; +ROS.refstate = -1; +ATP.refstate = -1; +MOMP.refstate = -1; +SMAC.refstate = -1; +mcIAP.refstate = -1; +Cyt_c.refstate = -1; +mXIAP.refstate = -1; +XIAP.refstate = -1; +apoptosome.refstate = -1; +NonACD.refstate = -1; +Apoptosis.refstate = -1; +Survival.refstate = -1; + +FADD.istate = 1; +TNF.istate = 0; +FASL.istate = 0; +NonACD.istate = 0; +Apoptosis.istate = 0; +Survival.istate = 0; +ATP.istate = 1; +cIAP.istate = 1; +TNFR.istate = 0; +DISC_TNF.istate = 0; +DISC_FAS.istate = 0; +RIP1.istate = 0; +RIP1ub.istate = 0; +RIP1K.istate = 0; +IKK.istate = 0; +NFkB.istate = 0; +CASP8.istate = 0; +BAX.istate = 0; +BCL2.istate = 0; +ROS.istate = 0; +mROS.istate = 0; +MPT.istate = 0; +MOMP.istate = 0; +SMAC.istate = 0; +mcIAP.istate = 0; +Cyt_c.istate = 0; +XIAP.istate = 0; +mXIAP.istate = 0; +apoptosome.istate = 0; +CASP3.istate = 0; +cFLIP.istate = 0; diff --git a/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/boolean_network/cellfate_with_oxygen.bnd b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/boolean_network/cellfate_with_oxygen.bnd new file mode 100644 index 000000000..2814460a9 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/boolean_network/cellfate_with_oxygen.bnd @@ -0,0 +1,190 @@ +node FASL { + rate_up = 0; + rate_down = 0; +} + +node TNF { + logic = TNF; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node TNFR { + logic = TNF; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node FADD { + rate_up = 0; + rate_down = 0; +} + +node DISC_TNF { + logic = FADD AND TNFR; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node DISC_FAS { + logic = FASL AND FADD; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node CASP8 { + logic = (DISC_TNF OR (DISC_FAS OR CASP3)) AND (NOT cFLIP); + rate_up = ($Low_CASP8 ? 0 : (@logic ? 1 : 0)); + rate_down = ($Low_CASP8 ? 1e+100 : (@logic ? 0 : 1)); +} + +node RIP1 { + logic = (DISC_FAS OR TNFR) AND (NOT CASP8); + rate_up = ($Low_RIP1 ? 0 : (@logic ? 1 : 0)); + rate_down = ($Low_RIP1 ? 1e+100 : (@logic ? 0 : 1)); +} + +node cIAP { + logic = (mcIAP AND (NOT SMAC)); + rate_up = ($Low_cIAP ? 0 : (@logic ? $TransRate : 0)); + rate_down = ($Low_cIAP ? 1e+100 : ((SMAC) ? 1 : 0)); +} + +node RIP1ub { + logic = cIAP AND RIP1; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node RIP1K { + logic = RIP1; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node IKK { + logic = RIP1ub; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node CASP3 { + logic = apoptosome AND (NOT XIAP); + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node NFkB { + logic = IKK AND (NOT CASP3); + rate_up = ($High_NFkB ? 1e+100 : (@logic ? 1 : 0)); + rate_down = ($High_NFkB ? 0 : (@logic ? 0 : 1)); +} + +node cFLIP { + logic = NFkB; + rate_up = (@logic) ? $TransRate : 0; + rate_down = (@logic ? 0 : 1); +} + +node BCL2 { + logic = NFkB; + rate_up = (@logic ? $TransRate : 0); + rate_down = @logic ? 0 : 1; +} + +node BAX { + logic = CASP8 AND (NOT BCL2); + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node mROS { + logic = (NOT NFkB); + rate_up = @logic ? $TransRate : 0; + rate_down = @logic ? 0 : 1; +} + +node MPT { + logic = (NOT BCL2) AND ROS; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node ROS { + logic = (mROS) AND (MPT OR RIP1K); + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node ATP { + logic = NOT MPT; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node MOMP { + logic = BAX OR MPT; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node SMAC { + logic = MOMP; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node mcIAP { + logic = (NFkB); + rate_up = @logic ? $TransRate : 0; + rate_down = @logic ? 0 : 1; +} + +node Cyt_c { + logic = MOMP; + rate_up = @logic ? 1 : 0; + rate_down = @logic ? 0 : 1; +} + +node mXIAP { + logic = (NFkB); + rate_up = @logic ? $TransRate : 0; + rate_down = @logic ? 0 : 1; +} + +node XIAP { + logic = (NOT SMAC) AND mXIAP; + rate_up = (@logic) ? 1 : 0; + rate_down = (@logic ? 0 : 1); +} + +node apoptosome { + logic = Cyt_c AND (ATP AND (NOT XIAP)); + rate_up = (@logic) ? 1 : 0; + rate_down = (@logic ? 0 : 1); +} + +node OXYGEN +{ + rate_up = 0.0; + rate_down = 0.0; +} + +node NonACD +{ + logic = !OXYGEN | !ATP; + rate_up = @logic ? 1.0 : 0.0; + rate_down = @logic ? 0.0 : 1.0; +} +node Apoptosis +{ + logic = OXYGEN & CASP3; + rate_up = @logic ? 1.0 : 0.0; + rate_down = @logic ? 0.0 : 1.0; +} +node Survival +{ + logic = OXYGEN & NFkB; + rate_up = @logic ? 1.0 : 0.0; + rate_down = @logic ? 0.0 : 1.0; +} \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/boolean_network/cellfate_with_oxygen.cfg b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/boolean_network/cellfate_with_oxygen.cfg new file mode 100644 index 000000000..17df07d8a --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/boolean_network/cellfate_with_oxygen.cfg @@ -0,0 +1,120 @@ +// +// MaBoSS 2.0 configuration generated at Tue Jan 10 22:13:14 2023 +// + +time_tick = 0.01; +max_time = 1; +sample_count = 1; +discrete_time = 0; +use_physrandgen = 0; +seed_pseudorandom = 233814379; +display_traj = 0; +statdist_traj_count = 0; +statdist_cluster_threshold = 0.8; +thread_count = 8; +statdist_similarity_cache_max_size = 20000; + +$High_NFkB = 0; +$Low_CASP8 = 0; +$Low_RIP1 = 0; +$Low_cIAP = 0; +$TransRate = 1/24; + +FASL.is_internal = 1; +TNF.is_internal = 0; +TNFR.is_internal = 1; +FADD.is_internal = 1; +DISC_TNF.is_internal = 1; +DISC_FAS.is_internal = 1; +CASP8.is_internal = 1; +RIP1.is_internal = 1; +cIAP.is_internal = 1; +RIP1ub.is_internal = 1; +RIP1K.is_internal = 1; +IKK.is_internal = 1; +CASP3.is_internal = 1; +NFkB.is_internal = 1; +cFLIP.is_internal = 1; +BCL2.is_internal = 1; +BAX.is_internal = 1; +mROS.is_internal = 1; +MPT.is_internal = 1; +ROS.is_internal = 1; +ATP.is_internal = 1; +MOMP.is_internal = 1; +SMAC.is_internal = 1; +mcIAP.is_internal = 1; +Cyt_c.is_internal = 1; +mXIAP.is_internal = 1; +XIAP.is_internal = 1; +apoptosome.is_internal = 1; +OXYGEN.is_internal = 0; +NonACD.is_internal = 0; +Apoptosis.is_internal = 0; +Survival.is_internal = 0; + +FASL.refstate = -1; +TNF.refstate = -1; +TNFR.refstate = -1; +FADD.refstate = -1; +DISC_TNF.refstate = -1; +DISC_FAS.refstate = -1; +CASP8.refstate = -1; +RIP1.refstate = -1; +cIAP.refstate = -1; +RIP1ub.refstate = -1; +RIP1K.refstate = -1; +IKK.refstate = -1; +CASP3.refstate = -1; +NFkB.refstate = -1; +cFLIP.refstate = -1; +BCL2.refstate = -1; +BAX.refstate = -1; +mROS.refstate = -1; +MPT.refstate = -1; +ROS.refstate = -1; +ATP.refstate = -1; +MOMP.refstate = -1; +SMAC.refstate = -1; +mcIAP.refstate = -1; +Cyt_c.refstate = -1; +mXIAP.refstate = -1; +XIAP.refstate = -1; +apoptosome.refstate = -1; +OXYGEN.refstate = -1; +NonACD.refstate = -1; +Apoptosis.refstate = -1; +Survival.refstate = -1; + +FADD.istate = 1; +TNF.istate = 0; +FASL.istate = 0; +OXYGEN.istate = 1; +NonACD.istate = 0; +Apoptosis.istate = 0; +Survival.istate = 0; +ATP.istate = 1; +cIAP.istate = 1; +TNFR.istate = 0; +DISC_TNF.istate = 0; +DISC_FAS.istate = 0; +RIP1.istate = 0; +RIP1ub.istate = 0; +RIP1K.istate = 0; +IKK.istate = 0; +NFkB.istate = 0; +CASP8.istate = 0; +BAX.istate = 0; +BCL2.istate = 0; +ROS.istate = 0; +mROS.istate = 0; +MPT.istate = 0; +MOMP.istate = 0; +SMAC.istate = 0; +mcIAP.istate = 0; +Cyt_c.istate = 0; +XIAP.istate = 0; +mXIAP.istate = 0; +apoptosome.istate = 0; +CASP3.istate = 0; +cFLIP.istate = 0; diff --git a/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/cell_rules.csv b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/cell_rules.csv new file mode 100644 index 000000000..e69de29bb diff --git a/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/cells.csv b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/cells.csv new file mode 100644 index 000000000..7a69d55d1 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/cells.csv @@ -0,0 +1,800 @@ +x,y,z,type +-81.74578904091533,-235.42875790157268,0.0,default +-64.92036794500686,-235.42875790157268,0.0,default +-48.09494684909839,-235.42875790157268,0.0,default +-31.269525753189924,-235.42875790157268,0.0,default +-14.444104657281457,-235.42875790157268,0.0,default +2.3813164386270103,-235.42875790157268,0.0,default +19.206737534535478,-235.42875790157268,0.0,default +36.03215863044397,-235.42875790157268,0.0,default +52.85757972635241,-235.42875790157268,0.0,default +69.68300082226085,-235.42875790157268,0.0,default +-106.98392068477803,-220.85751580314536,0.0,default +-90.15849958886956,-220.85751580314536,0.0,default +-73.33307849296109,-220.85751580314536,0.0,default +-56.50765739705263,-220.85751580314536,0.0,default +-39.682236301144165,-220.85751580314536,0.0,default +-22.856815205235698,-220.85751580314536,0.0,default +-6.031394109327229,-220.85751580314536,0.0,default +10.794026986581239,-220.85751580314536,0.0,default +27.619448082489704,-220.85751580314536,0.0,default +44.4448691783982,-220.85751580314536,0.0,default +61.27029027430664,-220.85751580314536,0.0,default +78.09571137021508,-220.85751580314536,0.0,default +94.92113246612358,-220.85751580314536,0.0,default +111.74655356203208,-220.85751580314536,0.0,default +-132.22205232864073,-206.28627370471804,0.0,default +-115.39663123273226,-206.28627370471804,0.0,default +-98.5712101368238,-206.28627370471804,0.0,default +-81.74578904091533,-206.28627370471804,0.0,default +-64.92036794500686,-206.28627370471804,0.0,default +-48.09494684909839,-206.28627370471804,0.0,default +-31.269525753189924,-206.28627370471804,0.0,default +-14.444104657281457,-206.28627370471804,0.0,default +2.3813164386270103,-206.28627370471804,0.0,default +19.206737534535478,-206.28627370471804,0.0,default +36.03215863044397,-206.28627370471804,0.0,default +52.85757972635241,-206.28627370471804,0.0,default +69.68300082226085,-206.28627370471804,0.0,default +86.50842191816935,-206.28627370471804,0.0,default +103.33384301407784,-206.28627370471804,0.0,default +120.15926410998628,-206.28627370471804,0.0,default +136.98468520589472,-206.28627370471804,0.0,default +-157.46018397250344,-191.71503160629072,0.0,default +-140.63476287659498,-191.71503160629072,0.0,default +-123.8093417806865,-191.71503160629072,0.0,default +-106.98392068477803,-191.71503160629072,0.0,default +-90.15849958886956,-191.71503160629072,0.0,default +-73.33307849296109,-191.71503160629072,0.0,default +-56.50765739705263,-191.71503160629072,0.0,default +-39.682236301144165,-191.71503160629072,0.0,default +-22.856815205235698,-191.71503160629072,0.0,default +-6.031394109327229,-191.71503160629072,0.0,default +10.794026986581239,-191.71503160629072,0.0,default +27.619448082489704,-191.71503160629072,0.0,default +44.4448691783982,-191.71503160629072,0.0,default +61.27029027430664,-191.71503160629072,0.0,default +78.09571137021508,-191.71503160629072,0.0,default +94.92113246612358,-191.71503160629072,0.0,default +111.74655356203208,-191.71503160629072,0.0,default +128.5719746579405,-191.71503160629072,0.0,default +145.39739575384894,-191.71503160629072,0.0,default +-165.87289452045766,-177.1437895078634,0.0,default +-149.0474734245492,-177.1437895078634,0.0,default +-132.22205232864073,-177.1437895078634,0.0,default +-115.39663123273226,-177.1437895078634,0.0,default +-98.5712101368238,-177.1437895078634,0.0,default +-81.74578904091533,-177.1437895078634,0.0,default +-64.92036794500686,-177.1437895078634,0.0,default +-48.09494684909839,-177.1437895078634,0.0,default +-31.269525753189924,-177.1437895078634,0.0,default +-14.444104657281457,-177.1437895078634,0.0,default +2.3813164386270103,-177.1437895078634,0.0,default +19.206737534535478,-177.1437895078634,0.0,default +36.03215863044397,-177.1437895078634,0.0,default +52.85757972635241,-177.1437895078634,0.0,default +69.68300082226085,-177.1437895078634,0.0,default +86.50842191816935,-177.1437895078634,0.0,default +103.33384301407784,-177.1437895078634,0.0,default +120.15926410998628,-177.1437895078634,0.0,default +136.98468520589472,-177.1437895078634,0.0,default +153.81010630180322,-177.1437895078634,0.0,default +170.6355273977117,-177.1437895078634,0.0,default +-174.2856050684119,-162.57254740943608,0.0,default +-157.46018397250344,-162.57254740943608,0.0,default +-140.63476287659498,-162.57254740943608,0.0,default +-123.8093417806865,-162.57254740943608,0.0,default +-106.98392068477803,-162.57254740943608,0.0,default +-90.15849958886956,-162.57254740943608,0.0,default +-73.33307849296109,-162.57254740943608,0.0,default +-56.50765739705263,-162.57254740943608,0.0,default +-39.682236301144165,-162.57254740943608,0.0,default +-22.856815205235698,-162.57254740943608,0.0,default +-6.031394109327229,-162.57254740943608,0.0,default +10.794026986581239,-162.57254740943608,0.0,default +27.619448082489704,-162.57254740943608,0.0,default +44.4448691783982,-162.57254740943608,0.0,default +61.27029027430664,-162.57254740943608,0.0,default +78.09571137021508,-162.57254740943608,0.0,default +94.92113246612358,-162.57254740943608,0.0,default +111.74655356203208,-162.57254740943608,0.0,default +128.5719746579405,-162.57254740943608,0.0,default +145.39739575384894,-162.57254740943608,0.0,default +162.22281684975744,-162.57254740943608,0.0,default +179.04823794566593,-162.57254740943608,0.0,default +-199.5237367122746,-148.00130531100876,0.0,default +-182.69831561636613,-148.00130531100876,0.0,default +-165.87289452045766,-148.00130531100876,0.0,default +-149.0474734245492,-148.00130531100876,0.0,default +-132.22205232864073,-148.00130531100876,0.0,default +-115.39663123273226,-148.00130531100876,0.0,default +-98.5712101368238,-148.00130531100876,0.0,default +-81.74578904091533,-148.00130531100876,0.0,default +-64.92036794500686,-148.00130531100876,0.0,default +-48.09494684909839,-148.00130531100876,0.0,default +-31.269525753189924,-148.00130531100876,0.0,default +-14.444104657281457,-148.00130531100876,0.0,default +2.3813164386270103,-148.00130531100876,0.0,default +19.206737534535478,-148.00130531100876,0.0,default +36.03215863044397,-148.00130531100876,0.0,default +52.85757972635241,-148.00130531100876,0.0,default +69.68300082226085,-148.00130531100876,0.0,default +86.50842191816935,-148.00130531100876,0.0,default +103.33384301407784,-148.00130531100876,0.0,default +120.15926410998628,-148.00130531100876,0.0,default +136.98468520589472,-148.00130531100876,0.0,default +153.81010630180322,-148.00130531100876,0.0,default +170.6355273977117,-148.00130531100876,0.0,default +187.46094849362015,-148.00130531100876,0.0,default +-207.93644726022885,-133.43006321258144,0.0,default +-191.11102616432038,-133.43006321258144,0.0,default +-174.2856050684119,-133.43006321258144,0.0,default +-157.46018397250344,-133.43006321258144,0.0,default +-140.63476287659498,-133.43006321258144,0.0,default +-123.8093417806865,-133.43006321258144,0.0,default +-106.98392068477803,-133.43006321258144,0.0,default +-90.15849958886956,-133.43006321258144,0.0,default +-73.33307849296109,-133.43006321258144,0.0,default +-56.50765739705263,-133.43006321258144,0.0,default +-39.682236301144165,-133.43006321258144,0.0,default +-22.856815205235698,-133.43006321258144,0.0,default +-6.031394109327229,-133.43006321258144,0.0,default +10.794026986581239,-133.43006321258144,0.0,default +27.619448082489704,-133.43006321258144,0.0,default +44.4448691783982,-133.43006321258144,0.0,default +61.27029027430664,-133.43006321258144,0.0,default +78.09571137021508,-133.43006321258144,0.0,default +94.92113246612358,-133.43006321258144,0.0,default +111.74655356203208,-133.43006321258144,0.0,default +128.5719746579405,-133.43006321258144,0.0,default +145.39739575384894,-133.43006321258144,0.0,default +162.22281684975744,-133.43006321258144,0.0,default +179.04823794566593,-133.43006321258144,0.0,default +195.87365904157437,-133.43006321258144,0.0,default +-216.34915780818307,-118.85882111415413,0.0,default +-199.5237367122746,-118.85882111415413,0.0,default +-182.69831561636613,-118.85882111415413,0.0,default +-165.87289452045766,-118.85882111415413,0.0,default +-149.0474734245492,-118.85882111415413,0.0,default +-132.22205232864073,-118.85882111415413,0.0,default +-115.39663123273226,-118.85882111415413,0.0,default +-98.5712101368238,-118.85882111415413,0.0,default +-81.74578904091533,-118.85882111415413,0.0,default +-64.92036794500686,-118.85882111415413,0.0,default +-48.09494684909839,-118.85882111415413,0.0,default +-31.269525753189924,-118.85882111415413,0.0,default +-14.444104657281457,-118.85882111415413,0.0,default +2.3813164386270103,-118.85882111415413,0.0,default +19.206737534535478,-118.85882111415413,0.0,default +36.03215863044397,-118.85882111415413,0.0,default +52.85757972635241,-118.85882111415413,0.0,default +69.68300082226085,-118.85882111415413,0.0,default +86.50842191816935,-118.85882111415413,0.0,default +103.33384301407784,-118.85882111415413,0.0,default +120.15926410998628,-118.85882111415413,0.0,default +136.98468520589472,-118.85882111415413,0.0,default +153.81010630180322,-118.85882111415413,0.0,default +170.6355273977117,-118.85882111415413,0.0,default +187.46094849362015,-118.85882111415413,0.0,default +204.2863695895286,-118.85882111415413,0.0,default +-224.7618683561373,-104.2875790157268,0.0,default +-207.93644726022885,-104.2875790157268,0.0,default +-191.11102616432038,-104.2875790157268,0.0,default +-174.2856050684119,-104.2875790157268,0.0,default +-157.46018397250344,-104.2875790157268,0.0,default +-140.63476287659498,-104.2875790157268,0.0,default +-123.8093417806865,-104.2875790157268,0.0,default +-106.98392068477803,-104.2875790157268,0.0,default +-90.15849958886956,-104.2875790157268,0.0,default +-73.33307849296109,-104.2875790157268,0.0,default +-56.50765739705263,-104.2875790157268,0.0,default +-39.682236301144165,-104.2875790157268,0.0,default +-22.856815205235698,-104.2875790157268,0.0,default +-6.031394109327229,-104.2875790157268,0.0,default +10.794026986581239,-104.2875790157268,0.0,default +27.619448082489704,-104.2875790157268,0.0,default +44.4448691783982,-104.2875790157268,0.0,default +61.27029027430664,-104.2875790157268,0.0,default +78.09571137021508,-104.2875790157268,0.0,default +94.92113246612358,-104.2875790157268,0.0,default +111.74655356203208,-104.2875790157268,0.0,default +128.5719746579405,-104.2875790157268,0.0,default +145.39739575384894,-104.2875790157268,0.0,default +162.22281684975744,-104.2875790157268,0.0,default +179.04823794566593,-104.2875790157268,0.0,default +195.87365904157437,-104.2875790157268,0.0,default +212.6990801374828,-104.2875790157268,0.0,default +-233.17457890409153,-89.71633691729949,0.0,default +-216.34915780818307,-89.71633691729949,0.0,default +-199.5237367122746,-89.71633691729949,0.0,default +-182.69831561636613,-89.71633691729949,0.0,default +-165.87289452045766,-89.71633691729949,0.0,default +-149.0474734245492,-89.71633691729949,0.0,default +-132.22205232864073,-89.71633691729949,0.0,default +-115.39663123273226,-89.71633691729949,0.0,default +-98.5712101368238,-89.71633691729949,0.0,default +-81.74578904091533,-89.71633691729949,0.0,default +-64.92036794500686,-89.71633691729949,0.0,default +-48.09494684909839,-89.71633691729949,0.0,default +-31.269525753189924,-89.71633691729949,0.0,default +-14.444104657281457,-89.71633691729949,0.0,default +2.3813164386270103,-89.71633691729949,0.0,default +19.206737534535478,-89.71633691729949,0.0,default +36.03215863044397,-89.71633691729949,0.0,default +52.85757972635241,-89.71633691729949,0.0,default +69.68300082226085,-89.71633691729949,0.0,default +86.50842191816935,-89.71633691729949,0.0,default +103.33384301407784,-89.71633691729949,0.0,default +120.15926410998628,-89.71633691729949,0.0,default +136.98468520589472,-89.71633691729949,0.0,default +153.81010630180322,-89.71633691729949,0.0,default +170.6355273977117,-89.71633691729949,0.0,default +187.46094849362015,-89.71633691729949,0.0,default +204.2863695895286,-89.71633691729949,0.0,default +221.1117906854371,-89.71633691729949,0.0,default +-224.7618683561373,-75.14509481887217,0.0,default +-207.93644726022885,-75.14509481887217,0.0,default +-191.11102616432038,-75.14509481887217,0.0,default +-174.2856050684119,-75.14509481887217,0.0,default +-157.46018397250344,-75.14509481887217,0.0,default +-140.63476287659498,-75.14509481887217,0.0,default +-123.8093417806865,-75.14509481887217,0.0,default +-106.98392068477803,-75.14509481887217,0.0,default +-90.15849958886956,-75.14509481887217,0.0,default +-73.33307849296109,-75.14509481887217,0.0,default +-56.50765739705263,-75.14509481887217,0.0,default +-39.682236301144165,-75.14509481887217,0.0,default +-22.856815205235698,-75.14509481887217,0.0,default +-6.031394109327229,-75.14509481887217,0.0,default +10.794026986581239,-75.14509481887217,0.0,default +27.619448082489704,-75.14509481887217,0.0,default +44.4448691783982,-75.14509481887217,0.0,default +61.27029027430664,-75.14509481887217,0.0,default +78.09571137021508,-75.14509481887217,0.0,default +94.92113246612358,-75.14509481887217,0.0,default +111.74655356203208,-75.14509481887217,0.0,default +128.5719746579405,-75.14509481887217,0.0,default +145.39739575384894,-75.14509481887217,0.0,default +162.22281684975744,-75.14509481887217,0.0,default +179.04823794566593,-75.14509481887217,0.0,default +195.87365904157437,-75.14509481887217,0.0,default +212.6990801374828,-75.14509481887217,0.0,default +229.5245012333913,-75.14509481887217,0.0,default +-233.17457890409153,-60.57385272044485,0.0,default +-216.34915780818307,-60.57385272044485,0.0,default +-199.5237367122746,-60.57385272044485,0.0,default +-182.69831561636613,-60.57385272044485,0.0,default +-165.87289452045766,-60.57385272044485,0.0,default +-149.0474734245492,-60.57385272044485,0.0,default +-132.22205232864073,-60.57385272044485,0.0,default +-115.39663123273226,-60.57385272044485,0.0,default +-98.5712101368238,-60.57385272044485,0.0,default +-81.74578904091533,-60.57385272044485,0.0,default +-64.92036794500686,-60.57385272044485,0.0,default +-48.09494684909839,-60.57385272044485,0.0,default +-31.269525753189924,-60.57385272044485,0.0,default +-14.444104657281457,-60.57385272044485,0.0,default +2.3813164386270103,-60.57385272044485,0.0,default +19.206737534535478,-60.57385272044485,0.0,default +36.03215863044397,-60.57385272044485,0.0,default +52.85757972635241,-60.57385272044485,0.0,default +69.68300082226085,-60.57385272044485,0.0,default +86.50842191816935,-60.57385272044485,0.0,default +103.33384301407784,-60.57385272044485,0.0,default +120.15926410998628,-60.57385272044485,0.0,default +136.98468520589472,-60.57385272044485,0.0,default +153.81010630180322,-60.57385272044485,0.0,default +170.6355273977117,-60.57385272044485,0.0,default +187.46094849362015,-60.57385272044485,0.0,default +204.2863695895286,-60.57385272044485,0.0,default +221.1117906854371,-60.57385272044485,0.0,default +237.93721178134558,-60.57385272044485,0.0,default +-241.58728945204578,-46.00261062201753,0.0,default +-224.7618683561373,-46.00261062201753,0.0,default +-207.93644726022885,-46.00261062201753,0.0,default +-191.11102616432038,-46.00261062201753,0.0,default +-174.2856050684119,-46.00261062201753,0.0,default +-157.46018397250344,-46.00261062201753,0.0,default +-140.63476287659498,-46.00261062201753,0.0,default +-123.8093417806865,-46.00261062201753,0.0,default +-106.98392068477803,-46.00261062201753,0.0,default +-90.15849958886956,-46.00261062201753,0.0,default +-73.33307849296109,-46.00261062201753,0.0,default +-56.50765739705263,-46.00261062201753,0.0,default +-39.682236301144165,-46.00261062201753,0.0,default +-22.856815205235698,-46.00261062201753,0.0,default +-6.031394109327229,-46.00261062201753,0.0,default +10.794026986581239,-46.00261062201753,0.0,default +27.619448082489704,-46.00261062201753,0.0,default +44.4448691783982,-46.00261062201753,0.0,default +61.27029027430664,-46.00261062201753,0.0,default +78.09571137021508,-46.00261062201753,0.0,default +94.92113246612358,-46.00261062201753,0.0,default +111.74655356203208,-46.00261062201753,0.0,default +128.5719746579405,-46.00261062201753,0.0,default +145.39739575384894,-46.00261062201753,0.0,default +162.22281684975744,-46.00261062201753,0.0,default +179.04823794566593,-46.00261062201753,0.0,default +195.87365904157437,-46.00261062201753,0.0,default +212.6990801374828,-46.00261062201753,0.0,default +229.5245012333913,-46.00261062201753,0.0,default +-233.17457890409153,-31.43136852359021,0.0,default +-216.34915780818307,-31.43136852359021,0.0,default +-199.5237367122746,-31.43136852359021,0.0,default +-182.69831561636613,-31.43136852359021,0.0,default +-165.87289452045766,-31.43136852359021,0.0,default +-149.0474734245492,-31.43136852359021,0.0,default +-132.22205232864073,-31.43136852359021,0.0,default +-115.39663123273226,-31.43136852359021,0.0,default +-98.5712101368238,-31.43136852359021,0.0,default +-81.74578904091533,-31.43136852359021,0.0,default +-64.92036794500686,-31.43136852359021,0.0,default +-48.09494684909839,-31.43136852359021,0.0,default +-31.269525753189924,-31.43136852359021,0.0,default +-14.444104657281457,-31.43136852359021,0.0,default +2.3813164386270103,-31.43136852359021,0.0,default +19.206737534535478,-31.43136852359021,0.0,default +36.03215863044397,-31.43136852359021,0.0,default +52.85757972635241,-31.43136852359021,0.0,default +69.68300082226085,-31.43136852359021,0.0,default +86.50842191816935,-31.43136852359021,0.0,default +103.33384301407784,-31.43136852359021,0.0,default +120.15926410998628,-31.43136852359021,0.0,default +136.98468520589472,-31.43136852359021,0.0,default +153.81010630180322,-31.43136852359021,0.0,default +170.6355273977117,-31.43136852359021,0.0,default +187.46094849362015,-31.43136852359021,0.0,default +204.2863695895286,-31.43136852359021,0.0,default +221.1117906854371,-31.43136852359021,0.0,default +237.93721178134558,-31.43136852359021,0.0,default +-241.58728945204578,-16.86012642516289,0.0,default +-224.7618683561373,-16.86012642516289,0.0,default +-207.93644726022885,-16.86012642516289,0.0,default +-191.11102616432038,-16.86012642516289,0.0,default +-174.2856050684119,-16.86012642516289,0.0,default +-157.46018397250344,-16.86012642516289,0.0,default +-140.63476287659498,-16.86012642516289,0.0,default +-123.8093417806865,-16.86012642516289,0.0,default +-106.98392068477803,-16.86012642516289,0.0,default +-90.15849958886956,-16.86012642516289,0.0,default +-73.33307849296109,-16.86012642516289,0.0,default +-56.50765739705263,-16.86012642516289,0.0,default +-39.682236301144165,-16.86012642516289,0.0,default +-22.856815205235698,-16.86012642516289,0.0,default +-6.031394109327229,-16.86012642516289,0.0,default +10.794026986581239,-16.86012642516289,0.0,default +27.619448082489704,-16.86012642516289,0.0,default +44.4448691783982,-16.86012642516289,0.0,default +61.27029027430664,-16.86012642516289,0.0,default +78.09571137021508,-16.86012642516289,0.0,default +94.92113246612358,-16.86012642516289,0.0,default +111.74655356203208,-16.86012642516289,0.0,default +128.5719746579405,-16.86012642516289,0.0,default +145.39739575384894,-16.86012642516289,0.0,default +162.22281684975744,-16.86012642516289,0.0,default +179.04823794566593,-16.86012642516289,0.0,default +195.87365904157437,-16.86012642516289,0.0,default +212.6990801374828,-16.86012642516289,0.0,default +229.5245012333913,-16.86012642516289,0.0,default +246.3499223292998,-16.86012642516289,0.0,default +-233.17457890409153,-2.2888843267355696,0.0,default +-216.34915780818307,-2.2888843267355696,0.0,default +-199.5237367122746,-2.2888843267355696,0.0,default +-182.69831561636613,-2.2888843267355696,0.0,default +-165.87289452045766,-2.2888843267355696,0.0,default +-149.0474734245492,-2.2888843267355696,0.0,default +-132.22205232864073,-2.2888843267355696,0.0,default +-115.39663123273226,-2.2888843267355696,0.0,default +-98.5712101368238,-2.2888843267355696,0.0,default +-81.74578904091533,-2.2888843267355696,0.0,default +-64.92036794500686,-2.2888843267355696,0.0,default +-48.09494684909839,-2.2888843267355696,0.0,default +-31.269525753189924,-2.2888843267355696,0.0,default +-14.444104657281457,-2.2888843267355696,0.0,default +2.3813164386270103,-2.2888843267355696,0.0,default +19.206737534535478,-2.2888843267355696,0.0,default +36.03215863044397,-2.2888843267355696,0.0,default +52.85757972635241,-2.2888843267355696,0.0,default +69.68300082226085,-2.2888843267355696,0.0,default +86.50842191816935,-2.2888843267355696,0.0,default +103.33384301407784,-2.2888843267355696,0.0,default +120.15926410998628,-2.2888843267355696,0.0,default +136.98468520589472,-2.2888843267355696,0.0,default +153.81010630180322,-2.2888843267355696,0.0,default +170.6355273977117,-2.2888843267355696,0.0,default +187.46094849362015,-2.2888843267355696,0.0,default +204.2863695895286,-2.2888843267355696,0.0,default +221.1117906854371,-2.2888843267355696,0.0,default +237.93721178134558,-2.2888843267355696,0.0,default +-241.58728945204578,12.28235777169175,0.0,default +-224.7618683561373,12.28235777169175,0.0,default +-207.93644726022885,12.28235777169175,0.0,default +-191.11102616432038,12.28235777169175,0.0,default +-174.2856050684119,12.28235777169175,0.0,default +-157.46018397250344,12.28235777169175,0.0,default +-140.63476287659498,12.28235777169175,0.0,default +-123.8093417806865,12.28235777169175,0.0,default +-106.98392068477803,12.28235777169175,0.0,default +-90.15849958886956,12.28235777169175,0.0,default +-73.33307849296109,12.28235777169175,0.0,default +-56.50765739705263,12.28235777169175,0.0,default +-39.682236301144165,12.28235777169175,0.0,default +-22.856815205235698,12.28235777169175,0.0,default +-6.031394109327229,12.28235777169175,0.0,default +10.794026986581239,12.28235777169175,0.0,default +27.619448082489704,12.28235777169175,0.0,default +44.4448691783982,12.28235777169175,0.0,default +61.27029027430664,12.28235777169175,0.0,default +78.09571137021508,12.28235777169175,0.0,default +94.92113246612358,12.28235777169175,0.0,default +111.74655356203208,12.28235777169175,0.0,default +128.5719746579405,12.28235777169175,0.0,default +145.39739575384894,12.28235777169175,0.0,default +162.22281684975744,12.28235777169175,0.0,default +179.04823794566593,12.28235777169175,0.0,default +195.87365904157437,12.28235777169175,0.0,default +212.6990801374828,12.28235777169175,0.0,default +229.5245012333913,12.28235777169175,0.0,default +246.3499223292998,12.28235777169175,0.0,default +-233.17457890409153,26.85359987011907,0.0,default +-216.34915780818307,26.85359987011907,0.0,default +-199.5237367122746,26.85359987011907,0.0,default +-182.69831561636613,26.85359987011907,0.0,default +-165.87289452045766,26.85359987011907,0.0,default +-149.0474734245492,26.85359987011907,0.0,default +-132.22205232864073,26.85359987011907,0.0,default +-115.39663123273226,26.85359987011907,0.0,default +-98.5712101368238,26.85359987011907,0.0,default +-81.74578904091533,26.85359987011907,0.0,default +-64.92036794500686,26.85359987011907,0.0,default +-48.09494684909839,26.85359987011907,0.0,default +-31.269525753189924,26.85359987011907,0.0,default +-14.444104657281457,26.85359987011907,0.0,default +2.3813164386270103,26.85359987011907,0.0,default +19.206737534535478,26.85359987011907,0.0,default +36.03215863044397,26.85359987011907,0.0,default +52.85757972635241,26.85359987011907,0.0,default +69.68300082226085,26.85359987011907,0.0,default +86.50842191816935,26.85359987011907,0.0,default +103.33384301407784,26.85359987011907,0.0,default +120.15926410998628,26.85359987011907,0.0,default +136.98468520589472,26.85359987011907,0.0,default +153.81010630180322,26.85359987011907,0.0,default +170.6355273977117,26.85359987011907,0.0,default +187.46094849362015,26.85359987011907,0.0,default +204.2863695895286,26.85359987011907,0.0,default +221.1117906854371,26.85359987011907,0.0,default +237.93721178134558,26.85359987011907,0.0,default +-241.58728945204578,41.42484196854639,0.0,default +-224.7618683561373,41.42484196854639,0.0,default +-207.93644726022885,41.42484196854639,0.0,default +-191.11102616432038,41.42484196854639,0.0,default +-174.2856050684119,41.42484196854639,0.0,default +-157.46018397250344,41.42484196854639,0.0,default +-140.63476287659498,41.42484196854639,0.0,default +-123.8093417806865,41.42484196854639,0.0,default +-106.98392068477803,41.42484196854639,0.0,default +-90.15849958886956,41.42484196854639,0.0,default +-73.33307849296109,41.42484196854639,0.0,default +-56.50765739705263,41.42484196854639,0.0,default +-39.682236301144165,41.42484196854639,0.0,default +-22.856815205235698,41.42484196854639,0.0,default +-6.031394109327229,41.42484196854639,0.0,default +10.794026986581239,41.42484196854639,0.0,default +27.619448082489704,41.42484196854639,0.0,default +44.4448691783982,41.42484196854639,0.0,default +61.27029027430664,41.42484196854639,0.0,default +78.09571137021508,41.42484196854639,0.0,default +94.92113246612358,41.42484196854639,0.0,default +111.74655356203208,41.42484196854639,0.0,default +128.5719746579405,41.42484196854639,0.0,default +145.39739575384894,41.42484196854639,0.0,default +162.22281684975744,41.42484196854639,0.0,default +179.04823794566593,41.42484196854639,0.0,default +195.87365904157437,41.42484196854639,0.0,default +212.6990801374828,41.42484196854639,0.0,default +229.5245012333913,41.42484196854639,0.0,default +246.3499223292998,41.42484196854639,0.0,default +-233.17457890409153,55.99608406697371,0.0,default +-216.34915780818307,55.99608406697371,0.0,default +-199.5237367122746,55.99608406697371,0.0,default +-182.69831561636613,55.99608406697371,0.0,default +-165.87289452045766,55.99608406697371,0.0,default +-149.0474734245492,55.99608406697371,0.0,default +-132.22205232864073,55.99608406697371,0.0,default +-115.39663123273226,55.99608406697371,0.0,default +-98.5712101368238,55.99608406697371,0.0,default +-81.74578904091533,55.99608406697371,0.0,default +-64.92036794500686,55.99608406697371,0.0,default +-48.09494684909839,55.99608406697371,0.0,default +-31.269525753189924,55.99608406697371,0.0,default +-14.444104657281457,55.99608406697371,0.0,default +2.3813164386270103,55.99608406697371,0.0,default +19.206737534535478,55.99608406697371,0.0,default +36.03215863044397,55.99608406697371,0.0,default +52.85757972635241,55.99608406697371,0.0,default +69.68300082226085,55.99608406697371,0.0,default +86.50842191816935,55.99608406697371,0.0,default +103.33384301407784,55.99608406697371,0.0,default +120.15926410998628,55.99608406697371,0.0,default +136.98468520589472,55.99608406697371,0.0,default +153.81010630180322,55.99608406697371,0.0,default +170.6355273977117,55.99608406697371,0.0,default +187.46094849362015,55.99608406697371,0.0,default +204.2863695895286,55.99608406697371,0.0,default +221.1117906854371,55.99608406697371,0.0,default +237.93721178134558,55.99608406697371,0.0,default +-224.7618683561373,70.56732616540103,0.0,default +-207.93644726022885,70.56732616540103,0.0,default +-191.11102616432038,70.56732616540103,0.0,default +-174.2856050684119,70.56732616540103,0.0,default +-157.46018397250344,70.56732616540103,0.0,default +-140.63476287659498,70.56732616540103,0.0,default +-123.8093417806865,70.56732616540103,0.0,default +-106.98392068477803,70.56732616540103,0.0,default +-90.15849958886956,70.56732616540103,0.0,default +-73.33307849296109,70.56732616540103,0.0,default +-56.50765739705263,70.56732616540103,0.0,default +-39.682236301144165,70.56732616540103,0.0,default +-22.856815205235698,70.56732616540103,0.0,default +-6.031394109327229,70.56732616540103,0.0,default +10.794026986581239,70.56732616540103,0.0,default +27.619448082489704,70.56732616540103,0.0,default +44.4448691783982,70.56732616540103,0.0,default +61.27029027430664,70.56732616540103,0.0,default +78.09571137021508,70.56732616540103,0.0,default +94.92113246612358,70.56732616540103,0.0,default +111.74655356203208,70.56732616540103,0.0,default +128.5719746579405,70.56732616540103,0.0,default +145.39739575384894,70.56732616540103,0.0,default +162.22281684975744,70.56732616540103,0.0,default +179.04823794566593,70.56732616540103,0.0,default +195.87365904157437,70.56732616540103,0.0,default +212.6990801374828,70.56732616540103,0.0,default +229.5245012333913,70.56732616540103,0.0,default +-233.17457890409153,85.13856826382835,0.0,default +-216.34915780818307,85.13856826382835,0.0,default +-199.5237367122746,85.13856826382835,0.0,default +-182.69831561636613,85.13856826382835,0.0,default +-165.87289452045766,85.13856826382835,0.0,default +-149.0474734245492,85.13856826382835,0.0,default +-132.22205232864073,85.13856826382835,0.0,default +-115.39663123273226,85.13856826382835,0.0,default +-98.5712101368238,85.13856826382835,0.0,default +-81.74578904091533,85.13856826382835,0.0,default +-64.92036794500686,85.13856826382835,0.0,default +-48.09494684909839,85.13856826382835,0.0,default +-31.269525753189924,85.13856826382835,0.0,default +-14.444104657281457,85.13856826382835,0.0,default +2.3813164386270103,85.13856826382835,0.0,default +19.206737534535478,85.13856826382835,0.0,default +36.03215863044397,85.13856826382835,0.0,default +52.85757972635241,85.13856826382835,0.0,default +69.68300082226085,85.13856826382835,0.0,default +86.50842191816935,85.13856826382835,0.0,default +103.33384301407784,85.13856826382835,0.0,default +120.15926410998628,85.13856826382835,0.0,default +136.98468520589472,85.13856826382835,0.0,default +153.81010630180322,85.13856826382835,0.0,default +170.6355273977117,85.13856826382835,0.0,default +187.46094849362015,85.13856826382835,0.0,default +204.2863695895286,85.13856826382835,0.0,default +221.1117906854371,85.13856826382835,0.0,default +-224.7618683561373,99.70981036225567,0.0,default +-207.93644726022885,99.70981036225567,0.0,default +-191.11102616432038,99.70981036225567,0.0,default +-174.2856050684119,99.70981036225567,0.0,default +-157.46018397250344,99.70981036225567,0.0,default +-140.63476287659498,99.70981036225567,0.0,default +-123.8093417806865,99.70981036225567,0.0,default +-106.98392068477803,99.70981036225567,0.0,default +-90.15849958886956,99.70981036225567,0.0,default +-73.33307849296109,99.70981036225567,0.0,default +-56.50765739705263,99.70981036225567,0.0,default +-39.682236301144165,99.70981036225567,0.0,default +-22.856815205235698,99.70981036225567,0.0,default +-6.031394109327229,99.70981036225567,0.0,default +10.794026986581239,99.70981036225567,0.0,default +27.619448082489704,99.70981036225567,0.0,default +44.4448691783982,99.70981036225567,0.0,default +61.27029027430664,99.70981036225567,0.0,default +78.09571137021508,99.70981036225567,0.0,default +94.92113246612358,99.70981036225567,0.0,default +111.74655356203208,99.70981036225567,0.0,default +128.5719746579405,99.70981036225567,0.0,default +145.39739575384894,99.70981036225567,0.0,default +162.22281684975744,99.70981036225567,0.0,default +179.04823794566593,99.70981036225567,0.0,default +195.87365904157437,99.70981036225567,0.0,default +212.6990801374828,99.70981036225567,0.0,default +-216.34915780818307,114.28105246068299,0.0,default +-199.5237367122746,114.28105246068299,0.0,default +-182.69831561636613,114.28105246068299,0.0,default +-165.87289452045766,114.28105246068299,0.0,default +-149.0474734245492,114.28105246068299,0.0,default +-132.22205232864073,114.28105246068299,0.0,default +-115.39663123273226,114.28105246068299,0.0,default +-98.5712101368238,114.28105246068299,0.0,default +-81.74578904091533,114.28105246068299,0.0,default +-64.92036794500686,114.28105246068299,0.0,default +-48.09494684909839,114.28105246068299,0.0,default +-31.269525753189924,114.28105246068299,0.0,default +-14.444104657281457,114.28105246068299,0.0,default +2.3813164386270103,114.28105246068299,0.0,default +19.206737534535478,114.28105246068299,0.0,default +36.03215863044397,114.28105246068299,0.0,default +52.85757972635241,114.28105246068299,0.0,default +69.68300082226085,114.28105246068299,0.0,default +86.50842191816935,114.28105246068299,0.0,default +103.33384301407784,114.28105246068299,0.0,default +120.15926410998628,114.28105246068299,0.0,default +136.98468520589472,114.28105246068299,0.0,default +153.81010630180322,114.28105246068299,0.0,default +170.6355273977117,114.28105246068299,0.0,default +187.46094849362015,114.28105246068299,0.0,default +204.2863695895286,114.28105246068299,0.0,default +221.1117906854371,114.28105246068299,0.0,default +-207.93644726022885,128.8522945591103,0.0,default +-191.11102616432038,128.8522945591103,0.0,default +-174.2856050684119,128.8522945591103,0.0,default +-157.46018397250344,128.8522945591103,0.0,default +-140.63476287659498,128.8522945591103,0.0,default +-123.8093417806865,128.8522945591103,0.0,default +-106.98392068477803,128.8522945591103,0.0,default +-90.15849958886956,128.8522945591103,0.0,default +-73.33307849296109,128.8522945591103,0.0,default +-56.50765739705263,128.8522945591103,0.0,default +-39.682236301144165,128.8522945591103,0.0,default +-22.856815205235698,128.8522945591103,0.0,default +-6.031394109327229,128.8522945591103,0.0,default +10.794026986581239,128.8522945591103,0.0,default +27.619448082489704,128.8522945591103,0.0,default +44.4448691783982,128.8522945591103,0.0,default +61.27029027430664,128.8522945591103,0.0,default +78.09571137021508,128.8522945591103,0.0,default +94.92113246612358,128.8522945591103,0.0,default +111.74655356203208,128.8522945591103,0.0,default +128.5719746579405,128.8522945591103,0.0,default +145.39739575384894,128.8522945591103,0.0,default +162.22281684975744,128.8522945591103,0.0,default +179.04823794566593,128.8522945591103,0.0,default +195.87365904157437,128.8522945591103,0.0,default +212.6990801374828,128.8522945591103,0.0,default +-199.5237367122746,143.42353665753762,0.0,default +-182.69831561636613,143.42353665753762,0.0,default +-165.87289452045766,143.42353665753762,0.0,default +-149.0474734245492,143.42353665753762,0.0,default +-132.22205232864073,143.42353665753762,0.0,default +-115.39663123273226,143.42353665753762,0.0,default +-98.5712101368238,143.42353665753762,0.0,default +-81.74578904091533,143.42353665753762,0.0,default +-64.92036794500686,143.42353665753762,0.0,default +-48.09494684909839,143.42353665753762,0.0,default +-31.269525753189924,143.42353665753762,0.0,default +-14.444104657281457,143.42353665753762,0.0,default +2.3813164386270103,143.42353665753762,0.0,default +19.206737534535478,143.42353665753762,0.0,default +36.03215863044397,143.42353665753762,0.0,default +52.85757972635241,143.42353665753762,0.0,default +69.68300082226085,143.42353665753762,0.0,default +86.50842191816935,143.42353665753762,0.0,default +103.33384301407784,143.42353665753762,0.0,default +120.15926410998628,143.42353665753762,0.0,default +136.98468520589472,143.42353665753762,0.0,default +153.81010630180322,143.42353665753762,0.0,default +170.6355273977117,143.42353665753762,0.0,default +187.46094849362015,143.42353665753762,0.0,default +204.2863695895286,143.42353665753762,0.0,default +-191.11102616432038,157.99477875596494,0.0,default +-174.2856050684119,157.99477875596494,0.0,default +-157.46018397250344,157.99477875596494,0.0,default +-140.63476287659498,157.99477875596494,0.0,default +-123.8093417806865,157.99477875596494,0.0,default +-106.98392068477803,157.99477875596494,0.0,default +-90.15849958886956,157.99477875596494,0.0,default +-73.33307849296109,157.99477875596494,0.0,default +-56.50765739705263,157.99477875596494,0.0,default +-39.682236301144165,157.99477875596494,0.0,default +-22.856815205235698,157.99477875596494,0.0,default +-6.031394109327229,157.99477875596494,0.0,default +10.794026986581239,157.99477875596494,0.0,default +27.619448082489704,157.99477875596494,0.0,default +44.4448691783982,157.99477875596494,0.0,default +61.27029027430664,157.99477875596494,0.0,default +78.09571137021508,157.99477875596494,0.0,default +94.92113246612358,157.99477875596494,0.0,default +111.74655356203208,157.99477875596494,0.0,default +128.5719746579405,157.99477875596494,0.0,default +145.39739575384894,157.99477875596494,0.0,default +162.22281684975744,157.99477875596494,0.0,default +179.04823794566593,157.99477875596494,0.0,default +-165.87289452045766,172.56602085439226,0.0,default +-149.0474734245492,172.56602085439226,0.0,default +-132.22205232864073,172.56602085439226,0.0,default +-115.39663123273226,172.56602085439226,0.0,default +-98.5712101368238,172.56602085439226,0.0,default +-81.74578904091533,172.56602085439226,0.0,default +-64.92036794500686,172.56602085439226,0.0,default +-48.09494684909839,172.56602085439226,0.0,default +-31.269525753189924,172.56602085439226,0.0,default +-14.444104657281457,172.56602085439226,0.0,default +2.3813164386270103,172.56602085439226,0.0,default +19.206737534535478,172.56602085439226,0.0,default +36.03215863044397,172.56602085439226,0.0,default +52.85757972635241,172.56602085439226,0.0,default +69.68300082226085,172.56602085439226,0.0,default +86.50842191816935,172.56602085439226,0.0,default +103.33384301407784,172.56602085439226,0.0,default +120.15926410998628,172.56602085439226,0.0,default +136.98468520589472,172.56602085439226,0.0,default +153.81010630180322,172.56602085439226,0.0,default +170.6355273977117,172.56602085439226,0.0,default +-157.46018397250344,187.13726295281958,0.0,default +-140.63476287659498,187.13726295281958,0.0,default +-123.8093417806865,187.13726295281958,0.0,default +-106.98392068477803,187.13726295281958,0.0,default +-90.15849958886956,187.13726295281958,0.0,default +-73.33307849296109,187.13726295281958,0.0,default +-56.50765739705263,187.13726295281958,0.0,default +-39.682236301144165,187.13726295281958,0.0,default +-22.856815205235698,187.13726295281958,0.0,default +-6.031394109327229,187.13726295281958,0.0,default +10.794026986581239,187.13726295281958,0.0,default +27.619448082489704,187.13726295281958,0.0,default +44.4448691783982,187.13726295281958,0.0,default +61.27029027430664,187.13726295281958,0.0,default +78.09571137021508,187.13726295281958,0.0,default +94.92113246612358,187.13726295281958,0.0,default +111.74655356203208,187.13726295281958,0.0,default +128.5719746579405,187.13726295281958,0.0,default +145.39739575384894,187.13726295281958,0.0,default +162.22281684975744,187.13726295281958,0.0,default +-132.22205232864073,201.7085050512469,0.0,default +-115.39663123273226,201.7085050512469,0.0,default +-98.5712101368238,201.7085050512469,0.0,default +-81.74578904091533,201.7085050512469,0.0,default +-64.92036794500686,201.7085050512469,0.0,default +-48.09494684909839,201.7085050512469,0.0,default +-31.269525753189924,201.7085050512469,0.0,default +-14.444104657281457,201.7085050512469,0.0,default +2.3813164386270103,201.7085050512469,0.0,default +19.206737534535478,201.7085050512469,0.0,default +36.03215863044397,201.7085050512469,0.0,default +52.85757972635241,201.7085050512469,0.0,default +69.68300082226085,201.7085050512469,0.0,default +86.50842191816935,201.7085050512469,0.0,default +103.33384301407784,201.7085050512469,0.0,default +120.15926410998628,201.7085050512469,0.0,default +136.98468520589472,201.7085050512469,0.0,default +-123.8093417806865,216.27974714967422,0.0,default +-106.98392068477803,216.27974714967422,0.0,default +-90.15849958886956,216.27974714967422,0.0,default +-73.33307849296109,216.27974714967422,0.0,default +-56.50765739705263,216.27974714967422,0.0,default +-39.682236301144165,216.27974714967422,0.0,default +-22.856815205235698,216.27974714967422,0.0,default +-6.031394109327229,216.27974714967422,0.0,default +10.794026986581239,216.27974714967422,0.0,default +27.619448082489704,216.27974714967422,0.0,default +44.4448691783982,216.27974714967422,0.0,default +61.27029027430664,216.27974714967422,0.0,default +78.09571137021508,216.27974714967422,0.0,default +94.92113246612358,216.27974714967422,0.0,default +111.74655356203208,216.27974714967422,0.0,default +-81.74578904091533,230.85098924810154,0.0,default +-64.92036794500686,230.85098924810154,0.0,default +-48.09494684909839,230.85098924810154,0.0,default +-31.269525753189924,230.85098924810154,0.0,default +-14.444104657281457,230.85098924810154,0.0,default +2.3813164386270103,230.85098924810154,0.0,default +19.206737534535478,230.85098924810154,0.0,default +36.03215863044397,230.85098924810154,0.0,default +52.85757972635241,230.85098924810154,0.0,default +69.68300082226085,230.85098924810154,0.0,default +86.50842191816935,230.85098924810154,0.0,default +-39.682236301144165,245.42223134652886,0.0,default +-22.856815205235698,245.42223134652886,0.0,default +-6.031394109327229,245.42223134652886,0.0,default +10.794026986581239,245.42223134652886,0.0,default +27.619448082489704,245.42223134652886,0.0,default +44.4448691783982,245.42223134652886,0.0,default diff --git a/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/cells_mutant.csv b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/cells_mutant.csv new file mode 100644 index 000000000..f586106ad --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/config/simple_tnf/cells_mutant.csv @@ -0,0 +1,801 @@ +x,y,z,type,volume,cycle entry,custom:GFP,custom:sample +-111.19820953578923,-210.66617480040955,0.0,default +-105.34025459796158,-105.17372632090374,0.0,default +142.53612087314067,-95.4508114744784,0.0,default +198.12903450290318,66.91226691987691,0.0,default +-85.05682632955937,228.22827103128574,0.0,default +-108.68669182170864,186.30845907856346,0.0,default +211.4948309159157,96.86182985755559,0.0,default +-223.94139000603866,100.6616834310153,0.0,default +159.75018119938346,59.318017611556634,0.0,default +-109.48172649635126,-135.31637677640254,0.0,default +65.42663510232391,197.1065597875167,0.0,default +111.37699739950743,82.39732581984579,0.0,default +-216.64623515795452,98.60895801000609,0.0,default +-211.02449192294068,-24.91050985655176,0.0,default +162.49899696747397,140.21223331380665,0.0,default +-54.1704860112403,-184.52621983225976,0.0,default +-93.93456830689504,70.4244065064853,0.0,default +-138.2103635490631,14.784355447697978,0.0,default +-59.138700823013345,-89.1194619201646,0.0,default +215.34559949092386,113.1194236745897,0.0,default +-50.58654716879079,165.206542429664,0.0,default +-163.27975450576469,-160.5305466387837,0.0,default +195.1400632470052,18.583098663170073,0.0,default +-76.5768691013011,-152.7171256510978,0.0,default +-83.62880793346208,200.44503292055677,0.0,default +157.84445729819166,-176.5739736304631,0.0,default +44.85894261020312,65.85527181363537,0.0,default +146.52937777201313,-132.50272384633877,0.0,default +-68.88152663814118,-217.27699355953484,0.0,default +208.0298755419479,20.185507422713652,0.0,default +-153.052763210345,49.45968692623931,0.0,default +115.11022709974645,-181.8854499701057,0.0,default +27.26622221095687,-3.966775224240761,0.0,default +-192.20898199080773,85.2162156727744,0.0,default +148.81542044266445,-88.57976839837636,0.0,default +-167.79042844268332,73.35747398772048,0.0,default +-158.4479311125609,-99.79325898129177,0.0,default +10.089348628815674,201.10812633741799,0.0,default +30.06876400880117,91.11859464192506,0.0,default +115.26446331989186,9.979740364197069,0.0,default +-10.105546956345544,76.86002499384178,0.0,default +-159.6687986241425,42.13091101078978,0.0,default +-112.66473571696538,-213.9935895830713,0.0,default +49.07579904297601,-78.97543635331559,0.0,default +169.7442970865709,-76.37236458154102,0.0,default +-96.39656245822754,-86.92419098610566,0.0,default +-108.89646082283689,-14.765279021445513,0.0,default +192.6849114359531,-104.72399149641465,0.0,default +-21.75177725944675,182.76137988636629,0.0,default +-94.99340109922123,-164.04834226868093,0.0,default +-162.96765010129963,-174.08401961939134,0.0,default +-203.9454832385206,99.7508956717094,0.0,default +204.61692454733688,-86.59765080601707,0.0,default +-30.647671064910952,112.3531558614498,0.0,default +-44.042578379884596,132.57772283997727,0.0,default +-241.49559357101924,13.525112540282306,0.0,default +21.183446237377378,-232.82712119342924,0.0,default +-5.141203348214917,79.82332508666919,0.0,default +191.9649169006581,91.05764026649942,0.0,default +92.16106214907504,-84.72085417635314,0.0,default +115.12382930921949,95.76607571774075,0.0,default +0.06420918127121082,237.36012266791747,0.0,default +-127.1918097158887,160.02265340591993,0.0,default +47.558062132880714,-188.70326104817056,0.0,default +162.86257287886107,-49.75041974614057,0.0,default +-45.61134379996616,-1.6153360142961604,0.0,default +189.0851397329229,142.09544032562343,0.0,default +-236.78417040136137,-4.660965534789288,0.0,default +-33.600466037697885,-67.98143938885589,0.0,default +-2.4540710779954047,-237.54798495968646,0.0,default +113.83785286559723,180.29337876946096,0.0,default +-29.93645399036968,-81.46076040255073,0.0,default +91.44320572981157,155.25473058428642,0.0,default +-18.657702562309186,-168.04142457600747,0.0,default +39.99494682498255,23.165202632586258,0.0,default +115.27823910195102,-94.32729442721761,0.0,default +146.24494094037684,113.94853190495645,0.0,default +-59.05879458577247,-47.46916007005713,0.0,default +-87.87392108689205,71.7401848186099,0.0,default +200.1668538532707,-51.578079878690616,0.0,default +-209.2961302983026,122.40552848883874,0.0,default +-72.1511633434353,-206.20131341190918,0.0,default +-179.37868965990342,-0.12707945322016187,0.0,default +-109.82222939595158,-119.05827971181432,0.0,default +-89.48389283151847,-69.9870578418276,0.0,default +140.04098192798875,175.5714859245285,0.0,default +-175.03087936809837,141.38665304057665,0.0,default +-109.21746055089075,-5.360394612021152,0.0,default +36.05304175611255,-130.9529372708889,0.0,default +-158.4765267281499,-63.5279001811419,0.0,default +-3.7697076148369737,183.31685392379467,0.0,default +-83.48362433755435,-19.022759776637162,0.0,default +113.26092938973765,-170.48805531944888,0.0,default +40.96599355463677,-153.3050024594628,0.0,default +99.74960089429557,-128.63976564576072,0.0,default +179.71979943188137,92.56932702445009,0.0,default +55.138493134191734,-39.128934205520714,0.0,default +167.02138431661433,-162.15957693429348,0.0,default +175.13510915553903,-35.6198873367012,0.0,default +183.3366278546144,92.12033936584685,0.0,default +-101.3877005823704,45.03472952958406,0.0,default +-61.681730119051856,128.63381810814545,0.0,default +-76.26898451984324,78.67056917229577,0.0,default +-151.23343472741504,34.56522957966922,0.0,default +-14.476968252558503,-54.621840885897754,0.0,default +-64.44873100670353,-103.97086435146161,0.0,default +56.97413913161791,-159.84242005216572,0.0,default +148.48321286666342,65.88180314991907,0.0,default +22.20283519652588,-109.07593153444188,0.0,default +-201.57326062624637,-22.905447299259933,0.0,default +-165.76387688132246,-156.59385772514452,0.0,default +30.466793660266816,84.58341831995848,0.0,default +134.99528137530254,-87.79344831233878,0.0,default +-75.36464738175945,-109.60617717377927,0.0,default +-106.14599447566674,-116.49302650060464,0.0,default +-24.79173601413623,-115.67227502497515,0.0,default +-44.542744643332426,105.05003893647053,0.0,default +-130.27009575755176,66.52978508923479,0.0,default +73.49388356828491,178.76398596183967,0.0,default +-96.06759453752784,87.08569516607756,0.0,default +69.06185474094363,-230.97232288486563,0.0,default +-9.365641984503489,105.72529416034456,0.0,default +-51.94381669641747,102.723233229829,0.0,default +-69.3665393879525,-191.31767865588537,0.0,default +-12.00822202713002,130.22033675964457,0.0,default +41.54260085566542,-233.47638141219642,0.0,default +198.13471154884866,122.93770018148012,0.0,default +-66.21312386001745,29.973422049955587,0.0,default +214.46216009236642,46.06873740096875,0.0,default +-165.12907315046638,-62.20408674945245,0.0,default +-23.691668631853602,47.95784732080096,0.0,default +-11.718625217272367,22.895646384658956,0.0,default +103.36925069687044,-201.5704080748856,0.0,default +-35.925543702322955,-18.791691706085096,0.0,default +231.28861086488706,-1.6093145011224461,0.0,default +12.578614148516985,-33.82392381909022,0.0,default +6.028512726259881,112.72449870853713,0.0,default +65.4848064899933,69.8051055996667,0.0,default +46.23313697317159,-214.82090136941727,0.0,default +-34.83462181272833,-50.804503891923844,0.0,default +13.823608431973135,-152.864808856526,0.0,default +131.7934075800995,32.90300125862241,0.0,default +-117.73782009112296,-49.54641655012867,0.0,default +-91.50900595552932,-55.63209666796786,0.0,default +8.986553349357324,-212.38726362777854,0.0,default +-158.42038245333623,132.35212450093027,0.0,default +163.99756973384723,-79.4718662046484,0.0,default +-195.19405078556093,-34.291140531358,0.0,default +135.55959926024133,-16.158632168182663,0.0,default +-35.15846633267847,-157.75622081344738,0.0,default +-155.42419467750426,45.40456833429893,0.0,default +-155.63060322340735,159.34622214249998,0.0,default +-152.9946642005595,-0.34553401534845896,0.0,default +-64.1505596045298,-86.72623530813316,0.0,default +-127.86900020416151,-146.77805916630354,0.0,default +-60.989390452120034,-210.61397766540574,0.0,default +24.637874153211534,-40.28083033063589,0.0,default +31.397475392259523,-169.7871026113788,0.0,default +31.069541445762635,-50.23565668368343,0.0,default +-216.94584494347708,-49.83321826920873,0.0,default +120.83006494505173,174.68816114797536,0.0,default +181.32155751370107,-97.75122202782309,0.0,default +-12.82232333707168,16.54660714674393,0.0,default +-153.18393234059772,80.08040532358024,0.0,default +83.95182081983029,-77.87566310560652,0.0,default +15.128969239599169,60.875653443435425,0.0,default +80.26687229875637,230.43407292101497,0.0,default +78.97434464152127,-230.00330925304615,0.0,default +80.71438512780695,-60.70851529807454,0.0,default +-221.9708423157995,49.60242471326269,0.0,default +-122.23076757992463,205.85632589796333,0.0,default +21.39386589196498,-47.80284296094015,0.0,default +98.22288595861558,58.17509024304515,0.0,default +42.58243573283127,169.34659240697906,0.0,default +-7.810125281388084,66.66133635914345,0.0,default +40.24813211828498,53.44833648755442,0.0,default +175.85674206433035,-36.11698915962809,0.0,default +46.73512756604852,-149.26387423914144,0.0,default +10.589645030076278,95.95292633610461,0.0,default +-113.1526444528274,145.27192165215789,0.0,default +58.695894975890894,231.66632681790605,0.0,default +-134.75442925671354,204.73687029182312,0.0,default +170.7487808473153,97.73042586643336,0.0,default +-216.81456240022348,-91.2607491155521,0.0,default +-141.96445799989237,-78.85963125971871,0.0,default +-135.45538339982443,-133.76126118733904,0.0,default +166.48882270763133,94.64815158204085,0.0,default +52.22752126101147,-106.81134700520118,0.0,default +-169.23550102907038,45.23474193466419,0.0,default +-44.82541907447303,-78.25832275617124,0.0,default +-60.733873016014826,143.113518917007,0.0,default +184.34768472421507,-12.236580629146696,0.0,default +64.93020779035076,180.94436568337312,0.0,default +-169.46230153761087,7.917933233412794,0.0,default +-118.11327274649689,140.2373893101335,0.0,default +-92.45960140188231,172.69748344823353,0.0,default +149.68639499318425,151.5831913034862,0.0,default +96.22137004792411,190.29596756892835,0.0,default +-218.1785502561773,14.243554882394227,0.0,default +-228.43744782476136,-78.47191758674597,0.0,default +119.37336994585844,146.57750300647498,0.0,default +-17.969227774484732,98.76555852414823,0.0,default +90.1241429808247,-174.94225938892802,0.0,default +175.3870484454667,-33.54079090164178,0.0,default +-147.16728367875092,148.00512411849698,0.0,default +127.72619281636321,77.73875791695934,0.0,default +60.322103816439224,-203.2076439510527,0.0,default +41.815996217857304,223.0442240774305,0.0,default +0.1372303480392817,65.97504159806809,0.0,default +99.7158891535182,-105.29610658510583,0.0,default +0.2548064662626212,-152.59282775943328,0.0,default +-86.11131046161218,116.63233292157315,0.0,default +72.81307842129391,-39.58978857556789,0.0,default +56.24562125324806,205.80733104141999,0.0,default +-189.40432581950213,38.518016680579265,0.0,default +129.49729216321182,189.2478246341755,0.0,default +-47.3694243538679,-33.03043507324662,0.0,default +-199.91736636265497,149.3851146941055,0.0,default +133.72730983822333,25.91385660403628,0.0,default +-118.30436806289879,-7.876583586378395,0.0,default +-137.61547312627013,-8.531306701798286,0.0,default +241.4079715339863,53.82023131830189,0.0,default +24.667093535302335,-39.31518265366253,0.0,default +-68.12520317692811,22.591007035331764,0.0,default +-28.603370362301415,-177.69066570668463,0.0,default +-26.812609367751566,135.68811227319793,0.0,default +68.06600240691282,-203.18645350490004,0.0,default +174.52540824911407,175.59520262015772,0.0,default +-55.62655797090937,-113.3552070472351,0.0,default +-16.204129341712434,13.87091506097916,0.0,default +81.266092936909,-154.99225572143465,0.0,default +9.164026695789289,93.34816492884543,0.0,default +96.8268050335272,-23.8954401782599,0.0,default +-17.256197619130365,176.66835043205597,0.0,default +-21.076827797566207,46.64115967396687,0.0,default +184.27953283133633,-162.76264251621552,0.0,default +-48.03611120610334,238.6242785204036,0.0,default +-35.51611915291632,-163.96359628651243,0.0,default +162.64821496595886,-10.121287678424832,0.0,default +154.75785749418043,83.74075075998209,0.0,default +-31.82827862650452,47.87057701804991,0.0,default +68.64845427452177,160.66351540582409,0.0,default +59.03782509477999,24.15426996248309,0.0,default +-182.09202066642422,-124.10590594320581,0.0,default +-176.6585597111611,61.45945899550669,0.0,default +-144.29162252270658,26.62387022891416,0.0,default +3.1455184457503154,-129.39905204425756,0.0,default +83.49743383317256,-185.2121738393145,0.0,default +218.78825634660612,9.460936754351989,0.0,default +-151.21726919056673,94.37696079005184,0.0,default +153.89712808282488,-118.50551017972991,0.0,default +-41.82703957950933,-107.72551475698243,0.0,default +77.06489563011897,176.964114581544,0.0,default +104.06780980848441,-186.65313046211122,0.0,default +-191.39149993037094,-38.32637116744382,0.0,default +-74.85838938582557,230.6760914422986,0.0,default +84.94161266035769,142.4116980825926,0.0,default +188.72414714052817,-132.79167308236032,0.0,default +-33.58763988528942,-51.954542808948965,0.0,default +-101.55413804947263,-45.1678729103798,0.0,default +-68.13189452093134,49.81615468587541,0.0,default +104.72541550164641,-200.6760966823513,0.0,default +-129.01470168429523,-67.64422971684391,0.0,default +69.95783456029773,-8.584088220000963,0.0,default +-159.58776672836694,-108.23216408799274,0.0,default +-86.21525263546451,-133.4642829698308,0.0,default +101.0830170339442,190.98187589974893,0.0,default +45.75736657661373,-18.679139978483203,0.0,default +-9.094406793793912,149.48423452509778,0.0,default +-14.825376316720611,21.089082370097003,0.0,default +-60.97527582236637,-159.87981886328953,0.0,default +-156.62496425183446,-136.29273587848283,0.0,default +-56.349761625562856,68.80882924750819,0.0,default +-176.54179978146163,25.2949479311516,0.0,default +46.06266801624571,-126.1639010329965,0.0,default +204.40949323351853,120.34778844894755,0.0,default +81.39722302405117,-126.65721708800145,0.0,default +71.01989041426687,-184.76185921846897,0.0,default +-184.77364985655572,48.52737823319671,0.0,default +70.2416157826299,64.84378621576917,0.0,default +-124.57188597677157,-25.041122914549085,0.0,default +-171.0196995649908,111.95769947971378,0.0,default +177.80293746424405,-32.586990964556655,0.0,default +121.34788228074017,55.665450344663135,0.0,default +-75.87041945713283,-65.04374788215318,0.0,default +200.4866511314967,105.030739526006,0.0,default +-72.15684774952933,50.234797271060685,0.0,default +-119.96280770512745,-101.5889670916159,0.0,default +151.0748191630897,118.52062516498383,0.0,default +-81.81679491523008,-162.64809029319952,0.0,default +-66.96939981220828,51.77224450166448,0.0,default +53.813699885020746,-101.94263775871268,0.0,default +69.27193195330663,122.7040001068888,0.0,default +22.354827813832188,190.2124613470789,0.0,default +215.6544220915991,-58.09725341104422,0.0,default +102.63085821421646,-44.946125169446994,0.0,default +-144.67975059681524,-153.72078897162254,0.0,default +-219.2189474773981,-43.668392784266686,0.0,default +-28.15618271123934,-241.08836243408774,0.0,default +76.54175475665436,-133.35407651905246,0.0,default +-160.28828473446387,73.8307790660656,0.0,default +-1.233810888194764,167.93724329627622,0.0,default +-219.51390490797903,-19.49207996208253,0.0,default +-35.42015694736073,69.28851804510299,0.0,default +13.963277521019052,0.5599579849879329,0.0,default +-183.0242658116028,141.68234823124683,0.0,default +-29.47269778592785,-54.49392015885473,0.0,default +-192.48416651750674,139.45606495157554,0.0,default +157.03444045800538,-9.550638166913965,0.0,default +-108.82419714225955,-170.30869785170952,0.0,default +186.17892500527748,-75.71026815820551,0.0,default +36.46027216351546,210.28125690013064,0.0,default +-71.83528900839651,41.157724475054366,0.0,default +-75.03808170968209,42.398983387303424,0.0,default +106.5041815188316,62.20100979815524,0.0,default +182.95917100796558,19.14356410195677,0.0,default +33.45931144482333,55.002525076060024,0.0,default +113.17908483219877,-191.52034849194789,0.0,default +5.955444331108687,50.93468672732179,0.0,default +-19.694598760613705,10.887319896146131,0.0,default +-94.21404286836336,-47.22403488095324,0.0,default +-172.96885056513545,-99.74635842108633,0.0,default +-54.56250895644972,147.3765872624012,0.0,default +-96.44595496712249,72.23907149124248,0.0,default +-38.72680839310233,242.15556920693413,0.0,default +190.5578287437827,-130.83173274976642,0.0,default +176.0982991637268,57.91969091854058,0.0,default +38.57325287706855,-105.78625016598814,0.0,default +99.95688900698512,-222.10397146207347,0.0,default +-188.2977795400937,61.10496531252433,0.0,default +208.47914051898678,120.70032731487605,0.0,default +221.630112312283,74.00926365862286,0.0,default +-116.904489038195,199.38304114014053,0.0,default +82.26557499101298,132.1253286313234,0.0,default +4.835205517248031,-75.63294413736712,0.0,default +-21.921013957605574,191.12960277292834,0.0,default +-9.763364206388887,-20.64616041575872,0.0,default +-173.2458808441167,139.852707705269,0.0,default +-134.5424221908398,-165.80030533642923,0.0,default +104.50768713205181,-80.34126516470833,0.0,default +-193.6954619100146,120.70824021928954,0.0,default +57.78666359037288,-111.56141425897091,0.0,default +-178.35385475237499,134.8039199341838,0.0,default +-150.64004358270026,180.99113669604017,0.0,default +185.6840958944146,103.95688079960624,0.0,default +57.07411026828546,-4.159656680340581,0.0,default +-74.91725853690669,-117.11002305215732,0.0,default +-55.9802016855575,221.26038101552248,0.0,default +-160.70662978761354,100.30925275000887,0.0,default +-217.93595401859903,-93.06302297001129,0.0,default +111.71008391358103,-48.81446956521211,0.0,default +-186.65936627541006,-68.78326330367697,0.0,default +96.85326879611351,-211.38062083572913,0.0,default +125.9357528523743,-6.365110351639085,0.0,default +21.23782859990338,-219.3269693116224,0.0,default +178.61853576172845,134.71280218582217,0.0,default +-95.40925994525713,-183.92170396521388,0.0,default +-89.42344478104715,-179.62371196886585,0.0,default +-102.37744092819042,-226.8642516183776,0.0,default +-40.33084605364782,245.42167428161187,0.0,default +-76.0627337303648,-200.73824739363607,0.0,default +-1.2788106453546675,-69.6525590442696,0.0,default +92.58474711769254,99.80949137201178,0.0,default +221.95639099169412,64.47948537283698,0.0,default +-183.11310493791538,24.854806717168373,0.0,default +-23.257562550057784,5.147008778695389,0.0,default +-8.892377412916716,164.56681676897816,0.0,default +-161.71773233203444,80.6174755571982,0.0,default +-26.388515792203826,88.88369319422752,0.0,default +126.55694116237115,41.48755398500938,0.0,default +-131.08587445599096,-55.6724749844363,0.0,default +198.9094737126038,126.01600202816459,0.0,default +119.30965444783028,-68.28365184194995,0.0,default +-45.008074147300725,-199.696749946275,0.0,default +-24.75261871555138,-72.79279869637247,0.0,default +-41.78346341421984,-83.76798922906842,0.0,default +-19.384981495004364,65.45654913005738,0.0,default +35.28937916600278,172.54161330079168,0.0,default +-155.05307982911162,-103.19693277413043,0.0,default +-86.7379439951355,174.19052879513092,0.0,default +-31.50028587629047,47.80330618858434,0.0,default +52.90714991895626,-94.10002041699039,0.0,default +172.96960015693028,131.46378948643027,0.0,default +5.506745037500682,-29.04492083897897,0.0,default +-36.0019754376888,-148.4666302013332,0.0,default +151.63819238283173,12.315303532377726,0.0,default +221.84857815609485,-60.49371057329362,0.0,default +199.83357197606148,118.27682362361018,0.0,default +-122.95264642077673,-98.0418888116468,0.0,default +85.11161441291054,57.81465103681881,0.0,default +63.01619331444362,127.40784591444911,0.0,default +-32.04959143426934,-6.505323273805275,0.0,default +-186.73904669697347,-106.84780746760798,0.0,default +-79.3312403969324,217.16059631659513,0.0,default +-46.33369040063469,-102.08998896114151,0.0,default +-119.00956974524846,-130.61866389066117,0.0,default +-47.50142330269487,-127.94592232526645,0.0,default +134.23875565992512,-137.89913603342015,0.0,default +-38.883754506142196,-36.135777538504264,0.0,default +-50.59507410100958,229.45311227039824,0.0,default +47.27003041160469,-65.09658961358602,0.0,default +142.7904636541764,-33.35245538611422,0.0,default +-134.72514772083076,-80.32168417855213,0.0,default +161.7953992354914,60.588396939704296,0.0,default +-209.47600662808472,-59.92449537456581,0.0,default +57.500993464676895,-122.06142726426818,0.0,default +-52.10865444845883,-129.96340571789685,0.0,default +-55.19576165193242,-47.8283344255829,0.0,default +-196.0728846078638,-112.86933941527829,0.0,default +-103.78763815835892,-127.01882023434852,0.0,default +-68.31380087449794,-218.3338015686153,0.0,default +71.4498407985283,-44.50457072496294,0.0,default +124.44717742019569,46.47271229632606,0.0,default +-113.53901261071941,202.433415507947,0.0,default +8.509454556283542,-216.4486420212817,0.0,default +85.13395235904407,-37.012402862925015,0.0,default +-140.7194058499867,-82.67689634737766,0.0,default +195.45881007366506,80.2959800980379,0.0,default +45.21991570470333,73.1952286427924,0.0,default +-180.2419101800321,56.393849878998786,0.0,default +131.51924148388616,116.16466733951343,0.0,default +-170.55676980888543,146.08784483303924,0.0,default +-130.5596655583573,-175.56848159746997,0.0,default +92.31843483462099,-36.213732788962915,0.0,default +133.62335405987955,187.44119290145673,0.0,default +-161.03578974868577,-90.83231651615043,0.0,default +96.87595571244394,99.12232602316763,0.0,default +-6.556250952303719,-66.5267797385073,0.0,default +-126.06834865739525,-43.04441416649227,0.0,default +-188.45666191127196,-98.99810832239207,0.0,default +-156.14519330322798,-40.38306021053725,0.0,default +145.03704992024333,-94.59653056380047,0.0,default +90.6233429538377,114.5393125234203,0.0,default +-202.00673544829516,-138.54869779442154,0.0,default +4.716039860433635,-146.15828705881316,0.0,default +195.52401433371793,107.78920444504556,0.0,default +111.40116963445367,-206.7643281654497,0.0,default +232.82826173397723,-90.69702299167396,0.0,default +221.06798909142108,-40.818939841489154,0.0,default +223.08409594750873,57.705046250599715,0.0,default +-85.64486888004154,-47.536825729228596,0.0,default +-59.53373984831769,7.035680731307178,0.0,default +230.60236326770706,32.178476047635584,0.0,default +40.59233187078766,-94.80385679199243,0.0,default +-226.57281451480148,89.94433564464917,0.0,default +117.28630035856212,41.864245072606664,0.0,default +-122.33467916748508,110.31493872728389,0.0,default +84.24777190901874,26.418730486245153,0.0,default +-180.22195710095312,-111.22118687685459,0.0,default +-127.72268356294136,-45.69947673750634,0.0,default +52.94279921394597,-241.07911441219883,0.0,default +206.0409524087414,-55.746494102891965,0.0,default +37.00052225142408,197.2449928944342,0.0,default +66.07587297202267,152.26796054018624,0.0,default +16.114671521165256,-186.84989002294935,0.0,default +-65.34513473452351,-112.9438422199974,0.0,default +50.06975482821918,82.7141907416602,0.0,default +-84.98063898554125,73.31569312692558,0.0,default +-215.93405776030795,-15.91283442440266,0.0,default +86.47085509500579,-137.88495521410164,0.0,default +149.1577365642692,61.2802406305561,0.0,default +-129.06366291780003,-56.834097714703624,0.0,default +35.511394000916155,-9.167495498406865,0.0,default +174.71903897047818,49.650406391824866,0.0,default +-151.2277643918241,-196.4156957116405,0.0,default +51.141852436265474,-78.21389907177078,0.0,default +30.17597663270288,54.797762013625345,0.0,default +-149.97104311401642,-17.570337042914684,0.0,default +91.47703556069226,-6.0407475332847,0.0,default +146.37800849704203,182.8427346471088,0.0,default +149.41816315911385,78.22321541045255,0.0,default +-141.49711693573036,-175.0779177661507,0.0,default +-77.45964667232826,45.51897099504231,0.0,default +104.47614664192498,211.85305048385416,0.0,default +-193.9145820346729,-139.6987530825234,0.0,default +-65.35608113722672,51.92520512471848,0.0,default +56.59861482244949,118.4028371125153,0.0,default +-144.11855013988966,-43.771164925289106,0.0,default +141.4577479941336,69.55856294323856,0.0,default +38.78757063054209,-187.73875251634462,0.0,default +166.27604421660044,-167.72969579884844,0.0,default +-123.4228512551975,90.46515822826613,0.0,default +91.1502746143749,196.55582440363543,0.0,default +-29.927652292794185,-247.79194388578,0.0,default +40.8526429072055,-71.50557569134031,0.0,default +193.58588067256503,76.1081571800349,0.0,default +-205.3319359631984,120.01185100815287,0.0,default +-215.4182167445948,-26.67982309110023,0.0,default +-59.70356431771796,-118.00957067119285,0.0,default +23.209369845235955,35.93840558440537,0.0,default +166.87643458678465,-110.30612148409071,0.0,default +-130.24112032223897,166.95217700061673,0.0,default +-207.301223029807,116.71181265239717,0.0,default +-140.77687152203492,-72.39183759635038,0.0,default +-184.19056307026548,-64.32164503382947,0.0,default +-4.6117888220112695,-94.89574071596955,0.0,default +38.920664341008425,-202.55851726174456,0.0,default +-53.93436610499843,-149.67012222752666,0.0,default +-21.17918947613523,-224.4314949603097,0.0,default +113.94460243942476,126.30677330867768,0.0,default +-162.70336128956453,-117.1199306767119,0.0,default +195.30509234608954,7.937024755093309,0.0,default +-14.695535687496733,-151.4823702623955,0.0,default +150.7168595790629,-58.06395742428854,0.0,default +172.89358716025882,111.90089501830056,0.0,default +-121.55252274128888,79.99218490152666,0.0,default +73.18661489247205,208.59067810473195,0.0,default +-113.3534520992017,-59.668829937373175,0.0,default +75.7014773747308,-190.63613832560978,0.0,default +160.82358968323564,-97.80177547530238,0.0,default +-13.123863869859361,110.59947636629191,0.0,default +-74.35361375139334,200.90089196650405,0.0,default +-155.99546974404018,77.64085107898741,0.0,default +146.89714506002454,90.38503458033367,0.0,default +38.33328667788683,166.5446884844132,0.0,default +62.84221593507121,-153.44018791046844,0.0,default +-32.76326379347783,-58.61227086478279,0.0,default +238.09254599405637,30.287616616828196,0.0,default +-186.5740064186536,49.759696947368454,0.0,default +-7.685070838898568,-16.086051113847837,0.0,default +-38.82098545185677,-204.60630814978293,0.0,default +207.54649081539097,66.31449003682644,0.0,default +-3.488438161035062,89.6262252665013,0.0,default +130.58741555384512,-159.65899599512534,0.0,default +8.270802587723022,120.20430319550589,0.0,default +-59.43984940266387,143.2508762748536,0.0,default +103.82717249726794,-15.402290696804105,0.0,default +-37.217546451547136,106.76145461927942,0.0,default +-57.42140585117668,-149.55693835830684,0.0,default +102.01470529946832,109.62055134779399,0.0,default +-158.40667077675909,-80.7881854488124,0.0,default +-88.29930835059254,214.35435478421982,0.0,default +-4.791527902917733,-159.31547484372877,0.0,default +-29.486356167023057,243.72754599797432,0.0,mutant +184.87857421224413,-118.5488650585929,0.0,mutant +193.67271364621968,-146.37628443576924,0.0,mutant +172.2723192381136,-48.536883370543265,0.0,mutant +137.49489089776745,56.88275535017737,0.0,mutant +2.005146616493262,218.54856543603236,0.0,mutant +148.74116024957482,-147.83059875519507,0.0,mutant +142.15230387433832,-178.05111786172424,0.0,mutant +-34.09997985204815,-86.63978277804402,0.0,mutant +-104.71239234456444,185.97064329008927,0.0,mutant +-107.76612735647318,-7.167920012351213,0.0,mutant +80.72121645837126,-236.27092028535301,0.0,mutant +236.77839874377597,-73.02701364336107,0.0,mutant +0.69465418338377,-60.57203268699647,0.0,mutant +-95.33520677239385,228.45432527609836,0.0,mutant +-40.43875878019224,-139.32477166719056,0.0,mutant +-3.48350283108286,239.49926507065257,0.0,mutant +190.41590821428596,66.71451053996617,0.0,mutant +80.4330648231273,-112.0363958504905,0.0,mutant +95.36692564507324,-157.9719138152509,0.0,mutant +-40.91390124947786,-217.32563503102793,0.0,mutant +-82.8666725832849,20.778691852308384,0.0,mutant +-59.58428666324323,-228.42030358965226,0.0,mutant +-111.89829011886397,-206.64691969294526,0.0,mutant +152.06129807242317,-144.0959340578257,0.0,mutant +-195.29619875011838,127.79780168479684,0.0,mutant +167.32511132131822,-41.37784019242152,0.0,mutant +-26.05840371403974,200.60207232214321,0.0,mutant +-62.07773345666709,198.35614866843363,0.0,mutant +88.93828087188021,106.4877752392583,0.0,mutant +179.48340893510158,-27.52774165721788,0.0,mutant +-133.93329922761302,199.51693952736815,0.0,mutant +179.7316232971058,-168.96074980228755,0.0,mutant +123.77768915024805,146.54256016686708,0.0,mutant +166.02382215450874,82.454905714311,0.0,mutant +-170.67924147937035,100.72870381294622,0.0,mutant +44.407706732608524,125.10191586467995,0.0,mutant +-156.00835475196905,87.08610144657759,0.0,mutant +2.768888611723548,-208.41392900490735,0.0,mutant +-117.12276948269692,-80.73135590740382,0.0,mutant +87.78412489147144,-47.76430340683229,0.0,mutant +45.25135136407514,153.03233398449436,0.0,mutant +60.27970142168919,0.08599045072228233,0.0,mutant +-3.4877057952777055,-71.96007281248232,0.0,mutant +79.07781613848103,35.76767806868009,0.0,mutant +-143.08265587244793,66.74213898149759,0.0,mutant +-144.89874958207906,202.54559899123655,0.0,mutant +-7.137431978191635,-35.84475979179678,0.0,mutant +71.59426599211108,-2.5515363031290987,0.0,mutant +39.72255995576694,100.09857637664207,0.0,mutant +63.48878862204433,-185.80966361589685,0.0,mutant +-70.94735405855893,-140.52036996302257,0.0,mutant +131.2301128551026,-146.91297522704616,0.0,mutant +-127.98532529093447,32.23296613611008,0.0,mutant +248.36221972193334,-20.495287926648405,0.0,mutant +-36.495090043630626,-8.979043883802214,0.0,mutant +194.02529622041615,136.12098304603398,0.0,mutant +159.40532476057933,6.997736312143131,0.0,mutant +87.55253701951811,-189.54240748040823,0.0,mutant +137.24512248732592,0.5156269301760642,0.0,mutant +6.578465906066681,63.487809471389305,0.0,mutant +-166.50544083442034,-60.59593271928332,0.0,mutant +-39.12906775214372,38.221705039490296,0.0,mutant +-109.13221965794075,4.832545093218112,0.0,mutant +85.66200235320444,-25.822044854224753,0.0,mutant +-36.04125611798327,115.687896004864,0.0,mutant +39.1682427692293,-185.25576724249092,0.0,mutant +174.48649711822534,171.9743940417126,0.0,mutant +58.23941826595216,147.44439548734007,0.0,mutant +176.0113484599843,93.69862423378869,0.0,mutant +155.31032317041817,-188.59201572497747,0.0,mutant +179.07386413302217,14.918828165752771,0.0,mutant +62.1829241898519,-27.003860644655617,0.0,mutant +92.2358853026213,-78.08651963379494,0.0,mutant +-46.68612029303534,186.8494589926864,0.0,mutant +-204.4978978460003,-58.79304349917332,0.0,mutant +100.70905419388673,176.7334122221837,0.0,mutant +44.22923184701965,-147.24999693290954,0.0,mutant +88.52086930305721,131.62560436755467,0.0,mutant +-81.3188513813272,78.93912160054474,0.0,mutant +-3.4053618449881653,22.4223633763963,0.0,mutant +-33.304309932955256,44.457709199891006,0.0,mutant +-177.49438819336268,142.71728424235442,0.0,mutant +19.29793642916756,-226.69506300661237,0.0,mutant +-162.29443441922717,149.3318240144468,0.0,mutant +-58.746657939484635,-60.75070297987302,0.0,mutant +45.078089293075244,-18.48503159969275,0.0,mutant +-154.66415859988376,-155.50890079926364,0.0,mutant +-120.54353442779002,204.44598525538953,0.0,mutant +-115.03345739688824,146.4716070113528,0.0,mutant +50.61520969703407,-118.21827111630037,0.0,mutant +44.16449965822702,126.87843129115686,0.0,mutant +-109.62796199468909,-137.35918316620456,0.0,mutant +-157.8043279717038,184.76046382938998,0.0,mutant +-240.6484776991685,47.41110820104934,0.0,mutant +149.08205446926064,123.11557912528602,0.0,mutant +-72.19291372221063,-163.63099535810727,0.0,mutant +-67.13588387469225,152.2428126714511,0.0,mutant +6.747819319648752,116.65201034730904,0.0,mutant +58.36512853222706,77.39346097621343,0.0,mutant +103.74990456278186,-65.08861375994951,0.0,mutant +136.94049941852543,133.95737463053035,0.0,mutant +109.09818718835226,176.0262229120193,0.0,mutant +-7.532476720637191,-142.0113757737946,0.0,mutant +-172.10240612482883,-60.73370650805146,0.0,mutant +94.90826405137861,163.34776870341537,0.0,mutant +-156.39046393142675,162.2323452175794,0.0,mutant +158.68035969107615,-49.29439448303234,0.0,mutant +56.182246091787036,-52.167107777356726,0.0,mutant +-236.887507269059,52.89385202433756,0.0,mutant +167.33032719071326,-93.07791165368174,0.0,mutant +226.69515023548018,-55.8567968953619,0.0,mutant +-77.72118332386118,104.67473614871264,0.0,mutant +16.16953513674709,-210.96731237662692,0.0,mutant +-180.21212121870107,79.74631088980085,0.0,mutant +29.69520877800709,-104.82437803756619,0.0,mutant +-4.599215758861346,-87.34475568555523,0.0,mutant +-89.53592153591298,69.40313184304345,0.0,mutant +-92.26703219452824,-177.63859534991596,0.0,mutant +-127.83498502384413,160.63189514472535,0.0,mutant +-0.7426256457718599,-187.43861821647752,0.0,mutant +-50.02952667803814,185.57190203467155,0.0,mutant +16.818236298194996,77.59933881344914,0.0,mutant +217.42009548751795,-60.01593115192962,0.0,mutant +153.8027874224199,-114.79197319035467,0.0,mutant +-1.9460357532889891,142.53079920587038,0.0,mutant +2.7449577358568678,9.670070204670978,0.0,mutant +224.11375763786222,-32.20674621906774,0.0,mutant +93.43751373452378,-149.09148139605645,0.0,mutant +-22.90702572049662,-165.54717369711852,0.0,mutant +13.954035206178116,-111.88982552106407,0.0,mutant +-97.58951270553746,150.3275076253722,0.0,mutant +89.36618368780331,-67.18823126299225,0.0,mutant +99.45195199757364,-226.8984747714648,0.0,mutant +-198.56373767514077,33.45324122706536,0.0,mutant +147.67451209648365,-157.95265946248261,0.0,mutant +88.0368753706593,-125.18414607409233,0.0,mutant +95.95676642156869,163.4230916256657,0.0,mutant +-67.33663148648124,-76.69195347347852,0.0,mutant +213.00188232515438,56.83084547753904,0.0,mutant +140.79444795021993,-174.75936798711783,0.0,mutant +83.87255050123905,-25.44527163334067,0.0,mutant +-76.76485126699548,-13.441339925071661,0.0,mutant +-15.870962766630809,-104.82487116638872,0.0,mutant +-204.4205488819902,-42.29449325556766,0.0,mutant +125.17388139729157,215.51923774555186,0.0,mutant +85.87374754829297,-16.48260547555411,0.0,mutant +15.019473355818032,-195.35857483343824,0.0,mutant +-96.7489136085702,-167.62020730580738,0.0,mutant +-215.3305769045228,13.838335606567707,0.0,mutant +-247.48411781135727,-30.179288608996526,0.0,mutant +51.16518844288386,119.83745618358371,0.0,mutant +-97.30656389090214,-149.78561141926434,0.0,mutant +-168.1404567111059,-64.34660499451991,0.0,mutant +183.52638426582484,-96.95803767538759,0.0,mutant +-10.326996495994605,-127.45279395368296,0.0,mutant +-120.33969809128813,199.6751324193176,0.0,mutant +-183.0184197915648,-63.0660177374603,0.0,mutant +109.47852582463698,65.12017876376038,0.0,mutant +-135.6471732430253,-118.36195850728926,0.0,mutant +-40.85256135427952,19.49108392246033,0.0,mutant +56.77674654614501,-92.68714872975379,0.0,mutant +-207.57453535582982,-6.407692652753839,0.0,mutant +-34.47314273565586,-18.06109911366269,0.0,mutant +225.0821739381515,77.44850269632511,0.0,mutant +172.35060562092258,50.25027835739723,0.0,mutant +-8.988633025804885,115.05821445564753,0.0,mutant +-202.0671175183834,66.95149448735341,0.0,mutant +-52.2480799391897,91.69875058137997,0.0,mutant +-145.0149886356178,160.78778717541334,0.0,mutant +40.291747350590605,-8.668150104141967,0.0,mutant +-198.71348575567,-145.89041525753262,0.0,mutant +-159.64022262255804,-171.65721370471357,0.0,mutant +7.325806222250289,-149.8104810101706,0.0,mutant +120.5611630092513,-61.77116574305096,0.0,mutant +179.9507782124292,-109.80669756755023,0.0,mutant +0.32335277518757816,201.16876390899563,0.0,mutant +-143.07153553479847,-55.83456439575948,0.0,mutant +163.99699702791455,16.571851674086815,0.0,mutant +-151.9911900708672,-115.18666401460383,0.0,mutant +159.9315263018167,-72.13116797151638,0.0,mutant +-180.13990572191756,-101.58544547254023,0.0,mutant +82.30695696341732,-77.44943109851204,0.0,mutant +-78.68358902145938,-77.2193976662604,0.0,mutant +24.665077223048556,78.9292439261748,0.0,mutant +-54.096258450898084,-108.51649534754605,0.0,mutant +7.090867666191681,-174.84314640734027,0.0,mutant +-68.10861977348536,-61.29065717503838,0.0,mutant +-212.62868785344202,42.562595120400594,0.0,mutant +21.216838539805025,80.73054385054695,0.0,mutant +29.598463603027753,-245.95585359095438,0.0,mutant +119.01966312104358,15.803019271266107,0.0,mutant +98.81552405104115,-221.98618001660418,0.0,mutant +-169.64876879907314,-41.703381783511084,0.0,mutant +111.56055214379602,-204.2457238167276,0.0,mutant +0.8541501904801766,-95.50827407086811,0.0,mutant +-128.50431404652932,148.74024092057974,0.0,mutant +-65.88959547795501,116.0710441280236,0.0,mutant +225.17385999789346,-106.99143608125195,0.0,mutant +-8.107625137994976,-112.46255656314578,0.0,mutant +-36.41556536277485,174.3789159864606,0.0,mutant +-47.68110267124252,-59.72880527749428,0.0,mutant +-136.8463150382019,133.1114254537031,0.0,mutant +148.70636449754528,-159.28891750175154,0.0,mutant +44.72240999345422,224.9951213954711,0.0,mutant +-185.97075415360692,146.59777992201512,0.0,mutant +-3.435931329676108,-71.61493296087849,0.0,mutant +-49.554868366400974,152.74472599331963,0.0,mutant +-69.96693811521139,90.43844781998969,0.0,mutant +-208.71317406959747,-120.45500136703808,0.0,mutant +-187.08600920446776,-132.02789716887688,0.0,mutant +-69.2135281514869,-218.12437649725834,0.0,mutant +161.5617223031183,7.469554376816009,0.0,mutant +158.45268562195838,38.99102290098318,0.0,mutant +-129.17077337979728,70.23573428331389,0.0,mutant +-31.665477181979305,-151.76297495855846,0.0,mutant +153.38792446733956,-175.38736984271623,0.0,mutant +-63.39883225997407,55.153862283636926,0.0,mutant +142.1890030839857,81.961561526753,0.0,mutant +219.5142323185252,101.20398028633448,0.0,mutant +174.32729966750097,-168.40598618179808,0.0,mutant +-227.5719167688445,-86.30072895987034,0.0,mutant +-189.4741508006665,-15.049995002250204,0.0,mutant +77.99502990460799,-96.90645765177459,0.0,mutant +158.781874282105,167.12040341789216,0.0,mutant +-96.85681922012003,17.452613853884845,0.0,mutant +-89.0414462080125,155.584599080251,0.0,mutant +165.6363945167351,-12.382551384288439,0.0,mutant +160.8196825140573,-131.11257723558134,0.0,mutant +36.52535370300556,-3.751225507439381,0.0,mutant +-21.50725710033165,-114.52969791669157,0.0,mutant +193.0254738713875,48.73642058928481,0.0,mutant +153.77440562357438,173.17613480749398,0.0,mutant +-182.46166747485185,88.17929861448035,0.0,mutant +86.01340288003672,5.690026100743109,0.0,mutant +-225.21325154477208,101.10916969392446,0.0,mutant +-41.94286254048317,35.05089562145271,0.0,mutant +-58.79290978370332,98.25956666469136,0.0,mutant +233.64581175717666,-56.779353771321674,0.0,mutant +-40.270635472865905,220.93835934755052,0.0,mutant +-123.0967303419039,-67.5014507154996,0.0,mutant +-195.62808965017007,133.00516425526914,0.0,mutant +-52.20098121988233,-28.07802290705335,0.0,mutant +-178.6131448922879,71.28594768551655,0.0,mutant +-39.558460994467595,89.16550366940612,0.0,mutant +176.14238244570805,-37.565427892392115,0.0,mutant +-206.62944955432818,-98.59002788376523,0.0,mutant +89.33583522672973,-222.83554450034802,0.0,mutant +66.24182500323246,106.50962978120113,0.0,mutant +176.1906427976439,15.758036275355455,0.0,mutant +-23.821707694156274,-63.53552635134932,0.0,mutant +-54.201839560725446,225.69694334604804,0.0,mutant +-176.9385539086601,119.20151743466592,0.0,mutant +135.7780672788169,-178.9186866433805,0.0,mutant +27.09785314119442,188.3716235406127,0.0,mutant +-99.14140391060882,-9.476608008491958,0.0,mutant +-162.36396614251018,170.79396386473582,0.0,mutant +-145.6478897406897,129.19549842831523,0.0,mutant +35.79364762498072,-176.86759651587366,0.0,mutant +-187.97406401799037,-98.0032881973025,0.0,mutant +13.395428506779481,181.72844795874332,0.0,mutant +-11.194444068077834,163.96444230319315,0.0,mutant +-146.52174144771053,-10.229803306370485,0.0,mutant +-224.74876435746148,-107.83452704825052,0.0,mutant +-124.45797795677707,-57.80930029693332,0.0,mutant +-23.18083983037541,-113.78603948555447,0.0,mutant +-178.19383172425216,48.266924033314666,0.0,mutant diff --git a/sample_projects_intracellular/boolean/tutorial/custom_modules/custom.cpp b/sample_projects_intracellular/boolean/tutorial/custom_modules/custom.cpp new file mode 100644 index 000000000..f06fa23e1 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/custom_modules/custom.cpp @@ -0,0 +1,244 @@ +/* +############################################################################### +# 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. # +# # +############################################################################### +*/ + +#include "./custom.h" + +void create_cell_types( void ) +{ + // set the random seed + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } + + /* + Put any modifications to default cell definition here if you + want to have "inherited" by other cell types. + + 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.update_migration_bias = NULL; + cell_defaults.functions.update_phenotype = NULL; // update_cell_and_death_parameters_O2_based; + 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; + + /* + This parses the cell definitions in the XML config file. + */ + + initialize_cell_definitions_from_pugixml(); + + /* + This builds the map of cell definitions and summarizes the setup. + */ + + build_cell_definitions_maps(); + + /* + This intializes cell signal and response dictionaries + */ + + setup_signal_behavior_dictionaries(); + + /* + Cell rule definitions + */ + + setup_cell_rules(); + + /* + Put any modifications to individual cell definitions here. + + This is a good place to set custom functions. + */ + + cell_defaults.functions.update_phenotype = phenotype_function; + cell_defaults.functions.custom_cell_rule = custom_function; + cell_defaults.functions.contact_function = contact_function; + + /* + This builds the map of cell definitions and summarizes the setup. + */ + + display_cell_definitions( std::cout ); + + return; +} + +void setup_microenvironment( void ) +{ + // set domain parameters + + // put any custom code to set non-homogeneous initial conditions or + // extra Dirichlet nodes here. + + // initialize BioFVM + + initialize_microenvironment(); + + 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]; + + 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 + + Cell* pC; + + for( int k=0; k < cell_definitions_by_index.size() ; k++ ) + { + 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++ ) + { + std::vector position = {0,0,0}; + position[0] = Xmin + UniformRandom()*Xrange; + position[1] = Ymin + UniformRandom()*Yrange; + position[2] = Zmin + UniformRandom()*Zrange; + + pC = create_cell( *pCD ); + pC->assign_position( position ); + } + } + std::cout << std::endl; + + // load cells from your CSV file + load_cells_from_pugixml(); +} + +std::vector my_coloring_function( Cell* pCell ) +{ return paint_by_number_cell_coloring(pCell); } + +void phenotype_function( Cell* pCell, Phenotype& phenotype, double dt ) +{ return; } + +void custom_function( Cell* pCell, Phenotype& phenotype , double dt ) +{ return; } + +void contact_function( Cell* pMe, Phenotype& phenoMe , Cell* pOther, Phenotype& phenoOther , double dt ) +{ return; } + +void treatment_function () +{ + if (PhysiCell::parameters.bools.find_index("treatment") != -1) + { + int treatment_substrate_index = BioFVM::microenvironment.find_density_index(PhysiCell::parameters.strings("treatment_substrate")); + + 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); + } + + 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); + } + } +} \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/custom_modules/custom.h b/sample_projects_intracellular/boolean/tutorial/custom_modules/custom.h new file mode 100644 index 000000000..f541082b6 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/custom_modules/custom.h @@ -0,0 +1,92 @@ +/* +############################################################################### +# 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. # +# # +############################################################################### +*/ + +#include "../core/PhysiCell.h" +#include "../modules/PhysiCell_standard_modules.h" + +using namespace BioFVM; +using namespace PhysiCell; + +// setup functions to help us along + +void create_cell_types( void ); +void setup_tissue( void ); + +// 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 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 (); \ No newline at end of file diff --git a/sample_projects_intracellular/boolean/tutorial/main.cpp b/sample_projects_intracellular/boolean/tutorial/main.cpp new file mode 100644 index 000000000..8b7814154 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/main.cpp @@ -0,0 +1,267 @@ +/* +############################################################################### +# 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. # +# # +############################################################################### +*/ + +#include +#include +#include +#include +#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" + +using namespace BioFVM; +using namespace PhysiCell; + +int main( int argc, char* argv[] ) +{ + // load and parse settings file(s) + + 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() ); + } + 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); + + // time setup + std::string time_units = "min"; + + /* Microenvironment setup */ + + setup_microenvironment(); // modify this in the custom code + + /* PhysiCell setup */ + + // set mechanics voxel size, and match the data structure to BioFVM + double mechanics_voxel_size = 30; + Cell_Container* cell_container = create_cell_container_for_microenvironment( microenvironment, mechanics_voxel_size ); + + /* Users typically start modifying here. START USERMODS */ + + create_cell_types(); + + setup_tissue(); + + /* Users typically stop modifying here. END USERMODS */ + + // set MultiCellDS save options + + set_save_biofvm_mesh_as_matlab( true ); + set_save_biofvm_data_as_matlab( true ); + set_save_biofvm_cell_data( true ); + set_save_biofvm_cell_data_as_custom_matlab( true ); + + // save a simulation snapshot + + char filename[1024]; + sprintf( filename , "%s/initial" , PhysiCell_settings.folder.c_str() ); + save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); + + // save a quick SVG cross section through z = 0, after setting its + // length bar to 200 microns + + PhysiCell_SVG_options.length_bar = 200; + + // for simplicity, set a pathology coloring function + + std::vector (*cell_coloring_function)(Cell*) = my_coloring_function; + std::string (*substrate_coloring_function)(double, double, double) = paint_by_density_percentage; + + sprintf( filename , "%s/initial.svg" , PhysiCell_settings.folder.c_str() ); + SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function, substrate_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); + + display_citations(); + + // set the performance timers + + BioFVM::RUNTIME_TIC(); + BioFVM::TIC(); + + std::ofstream report_file; + if( PhysiCell_settings.enable_legacy_saves == true ) + { + sprintf( filename , "%s/simulation_report.txt" , PhysiCell_settings.folder.c_str() ); + + report_file.open(filename); // create the data log file + report_file<<"simulated time\tnum cells\tnum division\tnum death\twall time"<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); + report_file.close(); + } + } + catch( const std::exception& e ) + { // reference to the base of a polymorphic object + std::cout << e.what(); // information from length_error printed + } + + // save a final simulation snapshot + + sprintf( filename , "%s/final" , PhysiCell_settings.folder.c_str() ); + save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); + + sprintf( filename , "%s/final.svg" , PhysiCell_settings.folder.c_str() ); + SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function, substrate_coloring_function ); + + // timer + + std::cout << std::endl << "Total simulation runtime: " << std::endl; + BioFVM::display_stopwatch_value( std::cout , BioFVM::runtime_stopwatch_value() ); + + return 0; +} diff --git a/sample_projects_intracellular/boolean/tutorial/paper/CellFate_Analysis.pdf b/sample_projects_intracellular/boolean/tutorial/paper/CellFate_Analysis.pdf new file mode 100644 index 000000000..f84d44f55 Binary files /dev/null and b/sample_projects_intracellular/boolean/tutorial/paper/CellFate_Analysis.pdf differ diff --git a/sample_projects_intracellular/boolean/tutorial/paper/Cell_cycle_analysis.pdf b/sample_projects_intracellular/boolean/tutorial/paper/Cell_cycle_analysis.pdf new file mode 100644 index 000000000..3e5ecd9c8 Binary files /dev/null and b/sample_projects_intracellular/boolean/tutorial/paper/Cell_cycle_analysis.pdf differ diff --git a/sample_projects_intracellular/boolean/tutorial/paper/Cell_cycle_boolean_analysis.pdf b/sample_projects_intracellular/boolean/tutorial/paper/Cell_cycle_boolean_analysis.pdf new file mode 100644 index 000000000..06ee6aefb Binary files /dev/null and b/sample_projects_intracellular/boolean/tutorial/paper/Cell_cycle_boolean_analysis.pdf differ diff --git a/sample_projects_intracellular/boolean/tutorial/paper/Corral_analysis.pdf b/sample_projects_intracellular/boolean/tutorial/paper/Corral_analysis.pdf new file mode 100644 index 000000000..609389ebe Binary files /dev/null and b/sample_projects_intracellular/boolean/tutorial/paper/Corral_analysis.pdf differ diff --git a/sample_projects_intracellular/boolean/tutorial/paper/PhysiBoSS_tutorial_main_text.pdf b/sample_projects_intracellular/boolean/tutorial/paper/PhysiBoSS_tutorial_main_text.pdf new file mode 100644 index 000000000..46d68f138 Binary files /dev/null and b/sample_projects_intracellular/boolean/tutorial/paper/PhysiBoSS_tutorial_main_text.pdf differ diff --git a/sample_projects_intracellular/boolean/tutorial/paper/PhysiBoSS_tutorial_supp_mat.pdf b/sample_projects_intracellular/boolean/tutorial/paper/PhysiBoSS_tutorial_supp_mat.pdf new file mode 100644 index 000000000..e7214757c Binary files /dev/null and b/sample_projects_intracellular/boolean/tutorial/paper/PhysiBoSS_tutorial_supp_mat.pdf differ diff --git a/sample_projects_intracellular/boolean/tutorial/scripts/CellFate_Analysis.ipynb b/sample_projects_intracellular/boolean/tutorial/scripts/CellFate_Analysis.ipynb new file mode 100644 index 000000000..f6284cad5 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/scripts/CellFate_Analysis.ipynb @@ -0,0 +1,1420 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:16.463942Z", + "iopub.status.busy": "2024-06-07T17:38:16.463743Z", + "iopub.status.idle": "2024-06-07T17:38:18.122598Z", + "shell.execute_reply": "2024-06-07T17:38:18.121665Z", + "shell.execute_reply.started": "2024-06-07T17:38:16.463921Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import maboss\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd\n", + "import os\n", + "from tools import to_bits, to_istates, change_inputs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Analysis of the Cell fate Boolean model\n", + "\n", + "In this Jupyter notebook, we'll look at the properties of the model by Calzone et al and study the effect of the TNF treatment on the possible cell fates. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Performing the default simulation\n", + "\n", + "First, we need to locate the BND and CFG files of the model, which are located in the config/simple_tnf folder and we load this model files to create out simulation object" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:18.125386Z", + "iopub.status.busy": "2024-06-07T17:38:18.124986Z", + "iopub.status.idle": "2024-06-07T17:38:18.279785Z", + "shell.execute_reply": "2024-06-07T17:38:18.279160Z", + "shell.execute_reply.started": "2024-06-07T17:38:18.125355Z" + } + }, + "outputs": [], + "source": [ + "# Set up the required files\n", + "path = \"../config/simple_tnf/boolean_network/\"\n", + "bnd_file = os.path.join(path, \"cellfate.bnd\")\n", + "cfg_WT = os.path.join(path, \"cellfate.cfg\")\n", + "b_sim = maboss.load(bnd_file, cfg_WT)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Then we create our default settings : the max time (here a bit more than 4 days), the step size of the simulation (1h), and the number of individual simulations (100k). \n", + "We also choose which nodes will appear in the result of the simulation. Here we only want to see if cells commit to one of the three cell fates : Survival, Apoptosis, or Necrosis (NonACD).\n", + "\n", + "We update our simulation to follow these settings :" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:18.280670Z", + "iopub.status.busy": "2024-06-07T17:38:18.280486Z", + "iopub.status.idle": "2024-06-07T17:38:18.284879Z", + "shell.execute_reply": "2024-06-07T17:38:18.284290Z", + "shell.execute_reply.started": "2024-06-07T17:38:18.280654Z" + } + }, + "outputs": [], + "source": [ + "param = {'max_time': 105, 'time_tick': 1, 'sample_count': 100000}\n", + "outputs = ['NonACD', 'Apoptosis', 'Survival']\n", + "b_sim.param.update(param)\n", + "b_sim.network.set_output(outputs)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### No TNF treatment\n", + "\n", + "The first condition we want to simulate is the absence of TNF treatment. For this, we modify our simulation to set the probability of TNF node off to 100% (1)." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:18.286386Z", + "iopub.status.busy": "2024-06-07T17:38:18.286116Z", + "iopub.status.idle": "2024-06-07T17:38:18.290903Z", + "shell.execute_reply": "2024-06-07T17:38:18.289624Z", + "shell.execute_reply.started": "2024-06-07T17:38:18.286362Z" + } + }, + "outputs": [], + "source": [ + "b_sim.network.set_istate('TNF', [1, 0])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We then lauch our simulation, and plot the distribution of states at the end of the simulation" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:18.292191Z", + "iopub.status.busy": "2024-06-07T17:38:18.291967Z", + "iopub.status.idle": "2024-06-07T17:38:18.557434Z", + "shell.execute_reply": "2024-06-07T17:38:18.556449Z", + "shell.execute_reply.started": "2024-06-07T17:38:18.292169Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "b_res = b_sim.run()\n", + "b_res.plot_piechart()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As we can see, in the absence of TNF treatment, cells do not commit to any of the cell fates." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Same one with TNF treatment\n", + "\n", + "This time we want to see what happens if we simulate a TNF treatment. First, we create a new simulation object, based on a copy of the previous one. In this new object, we set the probability of the TNF node to be active to 100% (1). We then launch the simulation, and plot the distribution of states at the end of the simulation :" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:18.559441Z", + "iopub.status.busy": "2024-06-07T17:38:18.559180Z", + "iopub.status.idle": "2024-06-07T17:38:19.221105Z", + "shell.execute_reply": "2024-06-07T17:38:19.220080Z", + "shell.execute_reply.started": "2024-06-07T17:38:18.559416Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 6, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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fvnLX2rKlCk1jy1YsEA2m01z5sxR3759FRMTo7PPPlvr19eeAv/xxx+rV69ecrlc6tixoyZOnFjr8Y4dO+qJJ57QDTfcoPj4eLVu3Vovv/xyrccl6de//rVsNlvNx5L0z3/+U126dFF0dLTS09P17rvv1jr3o48+WjOC17p1a9155521zvuPf/yjTsfiWIMHD1ZKSoqeeuqpEx5Tl+/9k08+qZtuukkJCQlq3769/vWvfx1znmnTpqlnz5564IEHtHjxYu3evbvmMZ/Pp1GjRqlbt25auHChLr/8cnXp0kX9+vXTI488ov/85z+1zpWUlKSUlBR17NhRQ4cO1UcffaSRI0fq9ttvt+RNhVBUUFCgRYsW6ZlnntGgQYPUoUMHnXXWWXrggQd0+eWXa/fu3bLZbLWmHBcUFMhms2nBggWSfvh5MW/ePA0YMEAul0uTJk2SzWbT5s2ba13v+eefV8eOHeXz+WqeV1BQoMLCQrndbn322We1jp8+fbri4uJqCuJf/vIXpaWlKTY2Vp07d9b48eNVVVUV0P9H4czj8WjOnDkaNmyYUlNTtWPHjprv+fTp0zVo0CDFxsaqb9++tWZITJky5aS3E8ydO1epqan64x//GPCZFRRxiziiKOIIXlnJ5u7VAU7G6/OqvNqad6YROj788EOlp6crPT1dN954oyZPnnzMGzb33XefnnvuOa1YsUItW7bUFVdcUfOid9WqVRo2bJhGjBih9evX69FHH9X48eNrFXpJmjBhgvr06aPVq1frgQce0N13360vvvhC0pEp5NIPI5lHP54xY4bGjh2rcePG6bvvvtOtt96q3//+9/rqq68kSR999JFeeOEFvf7669q2bZtmzpyp3r2Pf09+fY7FEXa7XU8++aRefvllZWRkHPN4Xb/3EydO1IABA7RmzRqNGTNGt9122zHFbNKkSbrxxhuVmJioX/ziF5o8eXLNY2vXrtWGDRs0bty4425nVJf7iu+++24VFRXV/JlDbfHx8YqPj9fMmTNVUVHRqHP9+c9/1lNPPaVNmzbp2muv1RlnnKF///vftY55//33dcMNNxwzCp6YmKjLL7/8uMdfeeWVio8/cutfQkKCpkyZoo0bN+rFF1/UG2+8oRdeeKFRuSPR+vXrde+996pt27b67W9/q+bNm+urr75S3759a4556KGHdO+992rt2rVKS0vT9ddfX6eZDpI0cuRIvffee8rPz9fFF1+s9PR0/f3vf9e+ffv8/rVQxC1CEUcwWxy/xXQE4ISio6JNR0CQOVqAJOmyyy5TcXGx5s+fX+uYRx55REOGDFHv3r319ttva//+/ZoxY4akIyNbl1xyicaPH6+0tDSNGjVKt99+uyZMmFDrHOedd57uv/9+paWl6Y477tC1115b88K5RYsWkn4YyTz68XPPPadRo0ZpzJgxSktL0z333KOrr75azz33nCRp7969SklJ0eDBg9W+fXudddZZuuWWW477ddbnWPzg17/+dc3I80/V9Xv/i1/8QmPGjFHXrl31l7/8RcnJyTWjqJK0bds2LVu2TMOHD5ekmjeEvF5vzeOS1L179wZ/HUef++ORdvzA4XBoypQpevvtt5WUlKTzzjtPDz74oNatW1fvcz3++OMaMmSIunTpoubNm2vkyJF6//33ax7funWrVq1aVfNz56dGjhypmTNnqrT0yJpQhw8f1pw5c2od/9e//lUDBw5Ux44d9atf/Urjxo3T1KlT6501Eh06dEgvvfSS+vfvrwEDBmj79u167bXXlJ2drX/+858699xzax1/77336vLLL1daWpoee+wx7dmzR9u3b6/TtRwOhy6//HJ9+OGHysnJ0X333ad58+apU6dOGjx4sN59912VlZX55euiiFuEIo5gtsD5nekIwHE5o5yyR7G/PX6wZcsWLV++XCNGjJB05EXT8OHD9dZbb9U67scvzJo1a6b09HRt2nRkFe5NmzbpvPPOq3X8eeedp23btqm6uvq45zj68dFznMiJzn30edddd53KysrUuXNn3XLLLZoxY8YJR2rqcyxqe+aZZ/T2229r48aNtT5f1+99nz59av7bZrMpJSVFubm5NZ+bNGmSLr30UiUnJ0s6UtxLSkr03//+V5JqZmg05h5if5wj3F1zzTXKysrSrFmzdOmll2rBggXq37//MTMcTmXAgAG1Ph4xYoT27NmjZcuWSZL+/e9/q1+/furZs+dxn3/55ZfL4XBo1qxZko7c/pCQkKChQ4fWHPPRRx/p/PPPV0pKiuLj4zV+/PiwWt8ikF5++WWNHTtW8fHx2r59u2bOnKmrr75a0dHHf6P+x39/U1NTJanW39+6SkxM1B/+8Af973//05IlS7Rr1y799re/1bx58xr2hfwERdwiFHEEM5+4BxfBKcYeYzoCgsykSZPk8XjUpk0bORwOORwO/fOf/9T06dNPeS/t0ULj8/mOKTd1XYugLqXoeOc++rl27dppy5YtevXVV+V2uzVmzBhdcMEFx71XtD7HorYLLrhAl156qR588MFan6/r997pdNb62Gaz1Yx2V1dX65133tGcOXNq/gzGxsYqLy+vZtG2tLQ0STrlGzcnc/S5nTp1avA5IkFMTIyGDBmihx9+WEuWLNGoUaP0yCOP1NwS8OPv74n+7sTFxdX6ODU1VYMGDaoZFf+///u/E46GS0cWb7v22mtrjn///fc1fPhwORxHXv8vW7ZMI0aM0M9//nN98sknWrNmjR566CFVVlY2/AuPIKNHj9bf/vY35eTkqGfPnho1apTmz59f83fyp3789/fo3/cTHXsy5eXlmjZtmq644gqdf/75Sk5O1quvvqpLLrmkYV/IT1DELcJibQBQfy6Hy3QEBBGPx6N33nlHEydO1Nq1a2t+ffvtt+rQoUOtezSPjmRJR1bU3bp1a81U3549e2rRokW1zr1kyRKlpaXJbrcf9xxHP/7xVGOn01lrFFWSevTocdxz9+jxwx7cbrdbV1xxhV566SUtWLBAS5cuPWYxuYYci9qefvppzZ49W0uWLKn5XF2/9yczd+5cFRUVac2aNbX+HE6bNk0zZ87UoUOHakZPJ06ceNwCcHQP45P5xz/+oSZNmmjw4MF1yoUjevbsqZKSkprbRbKzs2seq89e0SNHjtSHH36opUuXaseOHTWzcE52/GeffaYNGzboq6++0siRI2seW7x4sTp06KCHHnpIAwYMULdu3bRnz576fWERrHXr1nrooYe0detWzZs3Ty6XS9dcc406dOig+++/Xxs2bPDbtXw+nxYuXKjRo0crJSVFd999t3r27Kl169bpm2++0ZgxY5SQkOCXa9EOLcKIOADUHyPi+LFPPvlE+fn5uvnmm4/Zv/faa6/VpEmTau7hfvzxx9W8eXO1atVKDz30kJKTk3XVVVdJksaNG6czzzxTTzzxhIYPH66lS5fqlVde0WuvvVbrnIsXL9azzz6rq666Sl988YWmTZumOXPm1DzesWNHzZ8/X+edd55cLpeaNm2q++67T8OGDVP//v11ySWXaPbs2Zo+fXrNlOUpU6aourpaZ599tmJjY/Xuu+/K7XarQ4cOx3y99TkWx+rdu7dGjhxZa7X7un7vT2bSpEm6/PLLay0OJUm9evXSXXfdpffee09jx47V5MmTNXjwYF1wwQV68MEH1b17dxUXF2v27Nn6/PPP9fXXX9c8t6CgQDk5OaqoqKjZ7mzmzJl655136rSwWyQ6dOiQrrvuOt10003q06ePEhIStHLlSj377LO68sor5Xa7dc455+jpp59Wx44ddfDgQf31r3+t8/mvvvpq3Xbbbbrttts0aNAgtWnT5qTHX3jhhWrVqpVGjhypjh076pxzzql5rGvXrtq7d68++OADnXnmmZozZ07NmhWon4EDB2rgwIF68cUXNXPmTL399tt67rnntGbNGr8U5Pfee0+33nqrfv3rX2vq1KkaPHjwcRdc9AfaoUUo4gBQfzEOirgJ638XnCOukyZN0uDBg48p4dKRe0WffPJJrV69WtKR0dCxY8dq27Zt6tu3r2bNmlVzP2H//v01depUPfzww3riiSeUmpqqxx9/XKNGjap1znHjxmnVqlV67LHHlJCQoIkTJ+rSSy+teXzixIm655579MYbb6hNmzbavXu3rrrqKr344ouaMGGC7rzzTnXq1EmTJ0/WRRddJOnI4m5PP/207rnnHlVXV6t3796aPXu2mjdvfszXVJ9jrdBjc8OnWZvyxBNP1FoQq67f+xPZv3+/5syZU2shr6NsNpuuvvpqTZo0SWPHjtVZZ52llStX6u9//7tuueUWHTx4UKmpqRo4cGCtLeok6fe//72kI9Os27Rpo/PPP1/Lly9X//79G/y1N9af/t/Fxq5dF/Hx8Tr77LP1wgsvaMeOHaqqqlK7du10yy231NyS8NZbb+mmm27SgAEDlJ6ermeffbbWfdsn06RJE/3qV7/StGnTjlmD4nhsNpuuv/56TZgwQQ8//HCtx6688krdfffduv3221VRUaHLL79c48eP16OPPlrvrzsgHg293XNiYmI0YsQIjRgxQllZWYqPj2/w/vE/dskllygnJ0dNmjTxQ8qTs/nYoNUSw2YP06a80PsHDABM6tW8lz745QemY4Sl8vJy7dq1S506dVJMTPi84bFgwQINGjRI+fn5jRpJ7Nixo+666y7dddddfssGAAhv9fm3lXvELcKIOADUHyPiAAAgHFHELUIRB4D64x5xAAAQjmiHFrHb2AcXAOrLZWfVdNTPRRddVOetyE5m9+7d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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "b_sim_tnf = b_sim.copy()\n", + "b_sim_tnf.network.set_istate('TNF', [0, 1])\n", + "b_res_tnf = b_sim_tnf.run()\n", + "b_res_tnf.plot_piechart(prob_cutoff=0.0001)\n", + "plt.legend([\"Apoptosis\", \"NonACD\", \"Survival\", \"\"], ncols=4, loc='center left', bbox_to_anchor=(1, 0.5))" + ] + }, + { + "cell_type": "raw", + "metadata": {}, + "source": [] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see that this time, the vast majority of the cells commit to one of the cell fates : \n", + "- ~95% commit to Apoptosis\n", + "- ~3% commit to Necrosis\n", + "- ~2% commit to Survival\n", + "\n", + "A very small proportion of the cells haven't yet commited to a cell fate.\n", + "\n", + "We can then plot the trajectory of the simulation : " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:19.222438Z", + "iopub.status.busy": "2024-06-07T17:38:19.222158Z", + "iopub.status.idle": "2024-06-07T17:38:19.495476Z", + "shell.execute_reply": "2024-06-07T17:38:19.494332Z", + "shell.execute_reply.started": "2024-06-07T17:38:19.222417Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA2EAAAGdCAYAAACbw3t0AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACEL0lEQVR4nO3de3zO9f/H8cfnunbtZCfnGWMjzKHMIUKRYpJKpZzmq3WWTg6p1FfEt9RX5BvRaUgREqpvOqhf5JBvESUTClE2x9kwdriuz++Py3XZZcM2265tnvfb7fO9ruvzeX/en9fns752vfY+GaZpmoiIiIiIiEipsHg7ABERERERkUuJkjAREREREZFSpCRMRERERESkFCkJExERERERKUVKwkREREREREqRkjAREREREZFSpCRMRERERESkFCkJExERERERKUU+3g6gIBwOB/v27SM4OBjDMLwdjoiIiBSAaZocO3aMiIgILBb93VdExKVcJGH79u0jMjLS22GIiIhIEezdu5c6dep4OwwRkTKjXCRhwcHBgPMf8ZCQEC9HIyIiIgWRnp5OZGSk+/e4iIg4lYskzNUFMSQkREmYiIhIOaOhBCIintRBW0REREREpBQpCRMRERERESlFSsJERERERERKkZIwERERERGRUqQkTEREREREpBQpCRMRERERESlFSsJERERERERKkZIwERERERGRUqQkTEREREREpBQVOgn77rvvuPnmm4mIiMAwDJYuXXrBc1auXEnr1q3x9/enfv36vPHGG0WJVUREREREpNwrdBJ24sQJWrRowbRp0wpUfteuXdx4441cc801bNy4kWeeeYbHHnuMjz76qNDBioiIiIiIlHc+hT2hR48e9OjRo8Dl33jjDerWrcuUKVMAaNKkCevXr+eVV16hd+/ehb28iIiIiIhIuVboJKywvv/+e+Li4jz2de/encTERLKzs7HZbHnOyczMJDMz0/05PT29ZILbNA+SfwEfP/Dxd77aAqBWLES2A4uGzImIiIiISPEq8SQsJSWFmjVreuyrWbMmOTk5HDp0iFq1auU5Z8KECTz//PMlHRr8/jX8eo5ukSF1oPlt0PwOqNUCDKPk4xERERERkQqvxJMwAOOsBMY0zXz3u4waNYrhw4e7P6enpxMZGVn8gcXcBJWjICcTsk86X08dhZ0rIf0vWDvVuUW0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rFare9+6des8yqxbt85dB4DNZvNoOQNo0qQJq1evZtCgQR51N2nSxP05ICCAW265hVtuuYWHH36YmJgYNm/eTKtWrfLcc2HKinibkjAvck3MccHuiEf3gD0brPpLjoiIiFzYf//7X1JTU7n33nsJDQ31OHbHHXeQmJjIq6++CsC4ceOoWrUqNWvW5Nlnn6VatWrceuutAIwYMYIrr7yS8ePH07dvX77//numTZvG9OnTPepcs2YN//73v7n11ltZvnw5H374IZ999pn7eFRUFN988w0dO3bEz8+PypUrM3LkSPr06UOrVq24/vrr+fTTT1m8eDFff/01ALNnz8Zut9OuXTsCAwN57733CAgIoF69ennutzBlRcoCjQnzIvfsiAHV8y8QXAt8/MGRA2l7SzEyERERKc8SExPp2rVrngQMnC1hmzZt4qeffgLgpZde4vHHH6d169YkJyfzySef4OvrC0CrVq1YuHAh8+fPp3nz5jz33HOMGzfOY1IOcCZrGzZsoGXLlowfP55JkybRvXt39/FJkyaxfPlyIiMjadmyJQC33nor//nPf5g4cSLNmjXjzTffZNasWVx77bWAcyKPt99+m44dO3LFFVfwzTff8Omnn1K1atU891SYsiJlgWEWdq5TL0hPTyc0NJS0tDRCQkK8HU6xME2TK+deSaY9k2W3LSMyJDL/gq9fBQe3wsCP4LKu+ZcREREpgyrC7+9Tp06xa9cuoqOj8ff393Y4xWrFihV06dKF1NRUwsLCilxPVFQUQ4cOZejQocUWm0h5VdB/M9QS5iXpWelk2jMB5zph5+QeF6a1wkREREREKgIlYV7i6ooY6heKv895/rLmWrBZSZiIiIiISIWgiTm85IKTcrhU0TT1IiIiUvyuvfbaAk83fz67d++++GBELjFqCfMSdxIWcKEkTNPUi4iIiIhUJErCvMS1RtiFW8JOJ2Gpu8BhP39ZEREREREp85SEeUmBuyOG1AGLDexZkL6vFCITEREREZGSpCTMSw5mHAQKkIRZfaDy6YUG1SVRRERERKTcUxLmJa7uiDUDa164cO4uiSIiIiIiUq4pCfMSV3fE864R5qLJOUREREREKgwlYV6Q7cjmyKkjQAG6IwJU1jT1IiIiImeLiopiypQp3g6jVBX3Pe/evRvDMNi0aVOx1SkXpiTMCw5mHMTExMfiQxX/Khc+wd0Spu6IIiIiUjhr167FarVyww03eDUOwzBYunRpsdb5448/8sADDxRrnQXx5ptv0qJFCypVqkRYWBgtW7bk5ZdfLpVre+uepXhpsWYvyD0ezGIUIA/O3R3RNMEwSjA6ERERqUhmzpzJo48+yjvvvMOePXuoW7eut0MqNtWrF2BYRzFLTExk+PDhvPbaa3Tu3JnMzEx++eUXkpKSLqrerKwsfH19L1jOG/csxU8tYV6w/0QhJuUACKsLhgWyM+D4/hKMTERERCqSEydOsHDhQh566CFuuukmZs+e7XF8xYoVGIbBZ599RosWLfD396ddu3Zs3rzZo9xHH31Es2bN8PPzIyoqikmTJnkcj4qKYvz48QwYMICgoCAiIiKYOnWqx3GA2267DcMw3J8BZsyYQYMGDfD19aVx48a89957HnWPHTuWunXr4ufnR0REBI899phHvbm75p2vbHH59NNP6dOnD/feey+XXXYZzZo1o3///owfP95d5tprr2Xo0KEe5916660kJCR4xP6vf/2LhIQEQkNDuf/++2nfvj1PP/20x3kHDx7EZrPx7bff5rnn/v37069fP4/y2dnZVKtWjVmzZgHwxRdfcPXVVxMWFkbVqlW56aab+OOPP4rpaUhRKQnzAndLWKUCJmE+vhAa6XyvcWEiIiJeZZom2adOeWUzTbNQsS5YsIDGjRvTuHFjBg4cyKxZs/KtY+TIkbzyyiv8+OOP1KhRg1tuuYXs7GwANmzYQJ8+fejXrx+bN29m7NixjB49Ok9CN3HiRK644gp++uknRo0axbBhw1i+fDng7EIHMGvWLJKTk92flyxZwuOPP86IESP49ddfefDBB7n77rvdCceiRYt49dVXefPNN9mxYwdLly7l8ssvz/deC1P2YoSHh7Nu3Tr+/PPPi65r4sSJNG/enA0bNjB69Gji4+P54IMPPH5GCxYsoGbNmnTu3DnP+fHx8XzyySccP37cve/LL7/kxIkT9O7dG3Am4sOHD+fHH3/km2++wWKxcNttt+FwOC46fik6dUf0gpQTKQCEB4YX/KQq9eHon84krF6HEopMRERELiQnM5PX7rrDK9d+7N1F2Pz9C1w+MTGRgQMHAnDDDTdw/PhxvvnmG7p27epRbsyYMXTr1g2Ad999lzp16rBkyRL69OnD5MmTuf766xk9ejQAjRo1IikpiYkTJ3q07HTs2NHditOoUSPWrFnDq6++Srdu3dxd6MLCwggPP/P955VXXiEhIYEhQ4YAMHz4cNatW8crr7xCly5d2LNnD+Hh4XTt2hWbzUbdunVp27ZtvvdamLIXY8yYMdx+++1ERUXRqFEj2rdvz4033sgdd9yBxVK49o3rrruOJ554wv25b9++DBs2jNWrV3PNNdcAMG/ePAYMGJBv3d27d6dSpUosWbKEf/zjH+7yN998MyEhIQDuZMwlMTGRGjVqkJSURPPmzQsVrxQftYR5QaFbwkCTc4iIiEihbNu2jR9++MHdXc3Hx4e+ffsyc+bMPGXbt2/vfl+lShUaN27M1q1bAdi6dSsdO3b0KN+xY0d27NiB3W7Ptw7XZ1cd53Kuul3n3XnnnZw8eZL69etz//33s2TJEnJycvKtqzBl9+zZQ1BQkHt78cUXWbVqlce+uXPn5nturVq1+P7779m8eTOPPfYY2dnZ3HXXXdxwww2Fbl1q06aNx+fq1avTrVs397V37drF999/T3x8fL7n22w27rzzTnf5EydO8PHHH3uU/+OPPxgwYAD169cnJCSE6Oho9zMQ71FLmBcUaqFmlyqapl5ERKQs8PHz47F3F3nt2gWVmJhITk4OtWvXdu8zTRObzUZqaiqVK1c+7/nG6YnATNN0v89dT0GcfV5ByuS+XmRkJNu2bWP58uV8/fXXDBkyhIkTJ7Jy5UpsNpvHeYUpGxER4TEle5UqVQgICPDYV7Pm+b+nNW/enObNm/Pwww+7W65WrlxJly5dsFgseZ6Rq3tnbpUqVcqzLz4+nscff5ypU6cyb948mjVrRosWLc4ZR3x8PJ07d+bAgQMsX74cf39/evTo4T5+8803ExkZydtvv01ERAQOh4PmzZuTlZV13vuTkqUkzAsKPTEHaMFmERGRMsIwjEJ1CfSGnJwc5syZw6RJk4iLi/M41rt3b+bOncsjjzzi3rdu3Tr3rImpqals376dmJgYAJo2bcrq1as96li7di2NGjXCarV61JHbunXr3HWAs9Umd8sZQJMmTVi9ejWDBg3yqLtJkybuzwEBAdxyyy3ccsstPPzww8TExLB582ZatWqV574LWtbHx4fLLrssz/n57SuIpk2bAs6WKHC2aCUnJ7uP2+12fv31V7p06XLBum699VYefPBBvvjiC+bNm+fuZnguHTp0IDIykgULFvD5559z5513umdZPHz4MFu3buXNN990d288+2cp3qEkrJTlOHI4dPIQcBHdETVNvYiIiJzHf//7X1JTU7n33nsJDQ31OHbHHXeQmJjokYSNGzeOqlWrUrNmTZ599lmqVavGrbfeCsCIESO48sorGT9+PH379uX7779n2rRpTJ8+3aPeNWvW8O9//5tbb72V5cuX8+GHH/LZZ5+5j0dFRfHNN9/QsWNH/Pz8qFy5MiNHjqRPnz60atWK66+/nk8//ZTFixfz9ddfAzB79mzsdjvt2rUjMDCQ9957j4CAAOrVq5fnngtT9mI89NBDREREcN1111GnTh2Sk5P517/+RfXq1d1dMq+77jqGDx/OZ599RoMGDXj11Vc5evRogeqvVKkSvXr1YvTo0WzdupUBAwact7xhGAwYMIA33niD7du3uyc1AahcuTJVq1blrbfeolatWuzZsyfP7IviHRoTVsoOnzyM3bRjNaxU9a9a8BMrRzlfM9Mg40iJxCYiIiIVQ2JiIl27ds2TgIGzJWzTpk389NNP7n0vvfQSjz/+OK1btyY5OZlPPvnE3ZrSqlUrFi5cyPz582nevDnPPfcc48aN85iUA5zJ2oYNG2jZsiXjx49n0qRJdO/e3X180qRJLF++nMjISFq2bAk4W33+85//MHHiRJo1a8abb77JrFmzuPbaawHnRB5vv/02HTt25IorruCbb77h008/pWrVvN+hClP2YnTt2pV169Zx55130qhRI3r37o2/vz/ffPON+1r33HMPd911F4MGDaJz585ER0cXqBXMJT4+np9//plrrrmmQOu6xcfHk5SURO3atT3G2FksFubPn8+GDRto3rw5w4YNY+LEiYW/aSl2hlnYuU69ID09ndDQUNLS0twzvZRXvxz8hfhl8YRXCmf5HcsLd/LkppD+N9zzJdS9qmQCFBERKSYV4ff3qVOn2LVrF9HR0fiX8S6IRbFixQq6dOlCamoqYWFhRa4nKiqKoUOH5lkbS+RSU9B/M9QSVsqKNCmHS43T/aMPXNyK7CIiIiIi4j1KwkpZkSblcKnZzPma8msxRiQiIiIiIqVJE3OUsiKtEeZS8/SCevu3FGNEIiIicqm69tprCzzd/Pns3r374oMRuYSoJayUXVxLWK4krOwP5RMRERERkXwoCStlF9USVq0hWGyQdQyOapVzEREREZHySElYKXMlYeGB4YU/2WqD6qcXPVSXRBERERGRcklJWClymI4zSVilIiRhcGZyDiVhIiIiIiLlkpKwUnTk1BFyHDlYDAtVA4q4cKA7CdMMiSIiIiIi5ZGSsFLkagWr5l8Nm8VWtEqUhImIiIiIlGtKwkqRe2bEokzK4RJ+ufP18B+QlVEMUYmIiIiISGlSElaK3DMjFmV6epegGlCpOmDCwa3FE5iIiIhUOAkJCRiGwUsvveSxf+nSpRiGUSLXfOCBB7BarcyfPz/f47///jt33303derUwc/Pj+joaPr378/69evdZQzDcG+VKlWiYcOGJCQksGHDhhKJWcQblISVomJpCQNNziEiIiIF4u/vz8svv0xqamqJXysjI4MFCxYwcuRIEhMT8xxfv349rVu3Zvv27bz55pskJSWxZMkSYmJiGDFihEfZWbNmkZyczJYtW3j99dc5fvw47dq1Y86cOSV+HyKlQUlYKUrJSAEusiUMPBdtFhERETmHrl27Eh4ezoQJE85Z5qOPPqJZs2b4+fkRFRXFpEmTPI5HRUXx4osvcs899xAcHEzdunV566238tTz4Ycf0rRpU0aNGsWaNWvYvXu3+5hpmiQkJNCwYUNWrVpFz549adCgAbGxsYwZM4aPP/7Yo66wsDDCw8OJiooiLi6ORYsWER8fzyOPPFIqCaVISVMSVorcLWEXnYSpJUxERMRbTNPEkZHhlc00zULFarVaefHFF5k6dSp//fVXnuMbNmygT58+9OvXj82bNzN27FhGjx7N7NmzPcpNmjSJNm3asHHjRoYMGcJDDz3Eb7/95lEmMTGRgQMHEhoayo033sisWbPcxzZt2sSWLVsYMWIEFkver59hYWEXvJdhw4Zx7Ngxli9fXrCbFynDfLwdwKXEPSasuLojpmwG04QS6tctIiIieZknT7KtVWuvXLvxTxswAgMLdc5tt93mbnE6u5vg5MmTuf766xk9ejQAjRo1IikpiYkTJ5KQkOAud+ONNzJkyBAAnnrqKV599VVWrFhBTEwMADt27GDdunUsXrwYgIEDB/LYY48xZswYLBYLO3bsAHCXLwrXublb2ETKK7WElRLTNIuvJax6DBhWOHUU0vddfHAiIiJSob388su8++67JCUleezfunUrHTt29NjXsWNHduzYgd1ud++74oor3O8NwyA8PJwD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e+01nnzySZ5//nnatGlDly5diI+Pp379+oWqKzs7m+nTp9OiRQv3vr59+zJv3jzuvfdeAL755htSU1O58847860jPj6eadOmMX78eAC2b9/Ohg0b3F0xbTYbzz//vLt8dHQ0a9euZeHChfTp06dQ8Yp3qCWsGJT7roi5+YfAgAUQWheO/AEzb4DDf3g7KhEREbkIL7/8Mu+++y5JSUl5jm3dupWOHTt67OvYsSM7duzwaBW64oor3O8NwyA8PJwDBw649yUmJtK9e3eqVasGOJO2EydO8PXXXwO4W/EuZlKQC9UxePBggoKC3BtAjx493J+bNTv3d7WHH36YlJQU3n//fdq3b8+HH35Is2bNCt3q5uvr6/GswJlUrVixgn379gEwd+5cbrzxRipXrpxvHf369ePPP/9k3bp17vKxsbE0bdrUXeaNN96gTZs2VK9enaCgIN5++2327NlTqFjFe9QSVgzK3SLNF1KlPtzzOczpBYd/dyZi/1gC4RXk/kRERC5CgM1K0rjuXrt2UXTq1Inu3bvzzDPPeLRugTOxOTupya/bo81m8/js6hYHzu51c+bMISUlBR+fM18v7XY7iYmJxMXF0ahRI8CZ9MXGxhbpPrZu3Qo4W37yM27cOJ544gmPfe+88w4nT57M9x7OFhwczC233MItt9zCv/71L7p3786//vUvunXr5u5CmfvZZGdn56kjICAgz/Ns27YtDRo0YP78+Tz00EMsWbLEo6vm2WrVqkWXLl2YN28eV111FR988AEPPvig+/jChQsZNmwYkyZNon379gQHBzNx4kT+97//nff+pOxQElYMthw6nYSVx5kRzyW0Dtz9Bbx3G+zfDLN7QvyHENnW25GJiIh4lWEYhe4SWBa89NJLxMbGupMhl6ZNm7J69WqPfWvXrqVRo0ZYrQVL+pYtW8axY8fYuHGjxzm//fYb8fHxHD582N2SM2nSJPr27ZtnXNjRo0cvOC5sypQphISE0LVr13yP16hRI88sg7Vr1y7QPZzNMAxiYmJYu3Yt4Bw3BpCcnOxuwdq0aVOB6xswYABz586lTp06WCwWevbsed7y8fHxPPXUU/Tv358//viDfv36uY+tWrWKDh06uLuHAvzxh3oulSfqjniR9p/Yz74T+zAwaFq16YVPKE+CqkPCp1CnLZw66hwjtmoSOC5uwKqIiIiUvssv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efPmMWDAgDzxhYaG0rNnT+bOneuRhM2bN49evXoRFORcny44OJjZs2cTERHB5s2buf/++wkODubJJ58sctwiZVWhkjBfX19at27N8uXLue2229z7ly9fTq9evfI9p3379nz66ace+7766ivatGmjv2yIiIhIuZOT5eCtx1d65doP/KczNj9rgcr6+Pgwe/Zs7r//ft544w1atWpF586d6devH1dccUWhrjtu3Di6devm/hwfH8+0adPcSdj27dvZsGEDc+bMyff8+Ph4Bg0aREZGBoGBgaSnp/PZZ5/x0Ucfucv885//dL+PiopixIgRLFiwQEmYVEiFXnxp+PDhvPPOO8ycOZOtW7cybNgw9uzZ4173a9SoUQwaNMhdfvDgwfz5558MHz6crVu3MnPmTBITE3niiSeK7y5EREREJI/evXuzb98+PvnkE7p3786KFSto1aoVs2fPLlQ9bdq08fjcr18//vzzT9atc66TOnfuXGJjY2natGm+5/fs2RMfHx8++eQTAD766COCg4M9Jm9btGgRV199NeHh4QQFBTF69Gj27NlTqDhFyotCjwnr27cvhw8fZty4cSQnJ9O8eXOWLVtGvXr1AEhOTvb4P0x0dDTLli1j2LBhvP7660RERPDaa6+VqzXCRERERFx8fC088J/OXrt2Yfn7+9OtWze6devGc889x3333ceYMWNYtWoVcGasPkB2dna+dVSqVMnjc61atejSpQvz5s3jqquu4oMPPuDBBx88Zwy+vr7ccccdzJs3j379+jFv3jz69u3rnuBj3bp19OvXj+eff57u3bsTGhrK/PnzmTRpUqHvV6Q8KNLEHEOGDGHIkCH5HsvvLyudO3fmp59+KsqlRERERMoUwzAK3CWwLGratClLly6levXqgPMP6C1btgQo1Bpc8fHxPPXUU/Tv358//viDfv36XbB8XFwcW7Zs4dtvv/UYT7ZmzRrq1avHs88+6973559/FuKuRMqXIiVhIiIiIlK2HT58mDvvvJN77rmHK664guDgYNavX8+///1vevXqRUBAAFdddRUvvfQSUVFRHDp0yGNc1oXcfvvtPPTQQzz00EN06dKF2rVrn7d8586dqVmzJvHx8URFRXHVVVe5j1122WXs2bOH+fPnc+WVV/LZZ5+xZMmSIt+7SFlX+DZtERERESnzgoKCaNeuHa+++iqd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+b//+z+io6M9jkdHRxMeHu7xrLOysli5cqWe9QVcf/31bN68mU2bNrm3Nm3aEB8fz6ZNm6hfv76e7UXo2LFjnuUUtm/fTr169QD9t3uxMjIysFg8f8VYrVb3FPV6vsWjIM+xdevW2Gw2jzLJycn8+uuvetYiIt7itSlBvGz+/PmmzWYzExMTzaSkJHPo0KFmpUqVzN27d3s7tHLloYceMkNDQ80VK1aYycnJ7i0jI8Nd5qWXXjJDQ0PNxYsXm5s3bzb79+9v1qpVy0xPT/di5OVT7tkRTVPP9mL88MMPpo+Pj/nCCy+YO3bsMOfOnWsGBgaa77//vruMnm/R3XXXXWbt2rXN//73v+auXbvMxYsXm9WqVTOffPJJdxk934I5duyYuXHjRnPjxo0mYE6ePNncuHGj+eeff5qmWbDnOHjwYLNOnTrm119/bf7000/mddddZ7Zo0cLMycnx1m2JiFzSLtkkzDRN8/XXXzfr1atn+vr6mq1atXJPqy4FB+S7zZo1y13G4XCYY8aMMcPDw00/Pz+zU6dO5ubNm70XdDl2dhKmZ3txPv30U7N58+amn5+fGRMTY7711lsex/V8iy49Pd18/PHHzbp165r+/v5m/fr1zWeffdbMzMx0l9HzLZhvv/02339n77rrLtM0C/YcT548aT7yyCNmlSpVzICAAPOmm24y9+zZ44W7ERER0zRNwzRN0zttcCIiIiIiIpeeS3JMmIiIiIiIiLcoCRMRERERESlFSsJERERERERKkZIwERERERGRUqQkTEREREREpBQpCRMRERERESlFSsJERERERERKkZIwERERERGRUqQkTEREREREpBQpCRMRERERESlFSsJERERERERKkZIwERERERGRUvT/uPkF9n5KARcAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "b_res_tnf.plot_trajectory(prob_cutoff=0)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we see the transient behaviour of the TNF effect : cells start uncommited, and progressively commit to one of the phenotypes. We can see that some cells initially activate Survival, and end up inactivating it to choose another cell fate. \n", + "\n", + "We can also see (although barely) a transient behaviour, mixed cell fates : some cells with activate multiple cell fates at the same time. \n", + "\n", + "### Focusing on mixed cell fates\n", + "\n", + "Let's look at this in more details, by only plotting these states. To do this, we use the representation of the results as a Panda dataframe, filter to get only these mixed states, and plot them : " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:19.496681Z", + "iopub.status.busy": "2024-06-07T17:38:19.496302Z", + "iopub.status.idle": "2024-06-07T17:38:19.694058Z", + "shell.execute_reply": "2024-06-07T17:38:19.693219Z", + "shell.execute_reply.started": "2024-06-07T17:38:19.496654Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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Ke/w66yyVLADLCXAFUolACAnI73Kx0VERERE5EjKFSDp9XokJCQgIiLC5nhERAT27t1b7DX79u0r0n7QoEE4dOgQDAZDqW1u7/Ps2bPw9/dHUFAQRo0ahb///rs8w6/TCjaJLT1AkiQJzh6eAIBcBkhERERERDbKFSClpqbCZDLBN79UtJWvry9SUopf9J+SklJse6PRiNTU1FLbFO6zR48eWL16Nf73v//hs88+Q0pKCnr16oUbN26UOF6dToeMjAybV111p01iC3Nx9wDAAImIiIiI6HYVKtIgSZLN90KIIsfu1P7243fqc/DgwRg+fDg6duyIAQMG4PvvvwcAfPHFFyXed9asWfD09JRfAQEBd3hnjqusU+wAyBmknMy6GzASEREREVVEuQIkb29vKJXKItmia9euFckAWfn5+RXbXqVSoVGjRqW2KalPAHB1dUXHjh1x9uzZEttMnToV6enp8uvSpUulvj9HVrBJ7J0zSJxiR0RERERUvHIFSE5OTggLC0N8fLzN8fj4ePTq1avYa3r27Fmk/fbt2xEeHg61Wl1qm5L6BCzT506ePIkmTZqU2Eaj0cDDw8PmVVcVVLErwxQ7awaJARIRERERkY1yT7GLjo7G559/jhUrVuDkyZOYPHkykpKSMG7cOACWrM1TTz0ltx83bhwuXryI6OhonDx5EitWrEBsbCxee+01uc3EiROxfft2zJkzB6dOncKcOXOwY8cOTJo0SW7z2muvYdeuXTh//jx+//13jBgxAhkZGXj66acr8fbrDus+SGWbYmcJFHPSGSARERERERWmKu8FkZGRuHHjBmbMmIHk5GR06NAB27ZtQ4sWLQAAycnJNnsiBQUFYdu2bZg8eTKWLFkCf39/LFy4EMOHD5fb9OrVC3Fxcfj3v/+NadOmoVWrVli/fj169Oght7l8+TKeeOIJpKamwsfHB3fffTf2798v37e+02WVfYqdNYOUm8kAiYiIiIiosHIHSAAwfvx4jB8/vthzq1atKnKsX79+OHz4cKl9jhgxAiNGjCjxfFxcXLnGWN8UVLErR5EGTrEjIiIiIrJRoSp2VPuUp4qdizuLNBARERERFYcBUh2hK0eRhoIqdizzTURERERUGAOkOqJcG8V6WgIkXU42TEZDlY6LiIiIiMiRMECqA4QQcgapLFPstK5ukBSWP3pmkYiIiIiI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1QazZ89GaGioHKhYhYSEYM+ePTbH9u7dizZt2tgEBaXZtm0bMjMzceTIEZtrTp06haioKNy4cQOhoaEICQnB/PnzERkZWWQdUlpa2h3XIcXExMDDwwMDBgwo9nzjxo3RuHFjm2OlfXC3unHjBr799lvExcXZZJnMZjP69OmDH374AQ8++CAAwGg04tChQ+jevTsA4PTp00hLS5On/7Vr1w579uzBU089Jfezd+9etGvXzuae+/fvt2mzf/9+dOnSBQDg5GRZylA4g+fh4QF/f3/s2bMHffv2tenbOhZru8jISERGRmLEiBF44IEHcPPmTTRs2LDI+y5rW2dnZ5tphlbu7u7FPs87CQkJAWAJSABLZic5OVk+n5GRgfPnz5epr9GjR+Pf//43EhIS8M0332DZsmWltn/kkUfw4osv4scff8S6deswZswY+dypU6eQmpqK2bNnIyAgAABsys/bEwMkB2HNIKk1xQdIZd0DqTC51PeV4gMgjXWz2KzMMvdJRERE5dexY0dERUXJa2yspkyZgm7dumHmzJmIjIzEvn37sHjxYixdurTMfcfGxmLo0KHyb+Kt2rdvj0mTJmHNmjWYOHEiVq5ciQEDBqBv3754++23ERwcjKysLGzduhXbt2/Hrl275GvT0tKQkpICnU4nlwXfsmULVq9eXaaCDuXx5ZdfolGjRnj88ceLBG4PPvggYmNj5QBJrVbj1VdfxcKFC6FWq/HKK6/g7rvvloOU119/HSNHjkTXrl3Rv39/bN26FZs2bZKnGlpt2LAB4eHhuOeee7B27VocOHBAXiPWuHFjODs748cff0SzZs2g1Wrh6emJ119/HdOnT5er/61cuRJHjx6Vp4x99NFHaNKkCUJDQ6FQKLBhwwb4+fkV+7zK07YyRowYgd69e6NXr17w8/PD+fPnMXXqVLRp00YOKu+//36sWrUKDz30EBo0aIBp06aVOTgPCgpCr1698Nxzz8FoNGLYsGGltnd1dcWwYcMwbdo0nDx5EqNHj5bPNW/eHE5OTli0aBHGjRuHP//8EzNnzqz4my8F1yA5CH2u/fZAsrKW+jal6WDOKZoqldcgMYNERERU5WbOnFlkKlPXrl3x9ddfIy4uDh06dMC7776LGTNmlLly19WrV/H9999j+PDhRc5JkoTHHntM/uDfvXt3HDp0CK1atcILL7yAdu3a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lI8BEhERERERUT4GSERERERERPkYIBEREREREeVjgERERERERJSPARIREREREVE+BkhERERERET5VDU9gOokhABg2ZGbiIiIHIP157b15zgRUVWqVwFSZmYmACAgIKCGR0JERETllZmZCU9Pz5oeBhHVcZKoR7+OMZvNuHLlCtzd3SFJkt36zcjIQEBAAC5dugQPDw+79UsWfL5Vh8+2avH5Vh0+26pV256vEAKZmZnw9/eHQsHVAURUtepVBkmhUKBZs2ZV1r+Hh0et+EFSV/H5Vh0+26rF51t1+GyrVm16vswcEVF14a9hiIiIiIiI8jFAIiIiIiIiyscAyQ40Gg2mT58OjUZT00Opk/h8qw6fbdXi8606fLZVi8+XiOqzelWkgYiIiIiIqDTMIBEREREREeVjgERERERERJSPARIREREREVE+BkhERERERET5GCDZwdKlSxEUFAStVouwsDDs3r27pofkcGbNmoVu3brB3d0djRs3xiOPPILTp0/btBFC4L333oO/vz+cnZ1x77334sSJEzU0Ysc1a9YsSJKESZMmycf4bCvnn3/+wZNPPolGjRrBxcUFoaGhSEhIkM/z+VaM0WjEv//9bwQFBcHZ2RktW7bEjBkzYDab5TZ8tmX366+/4qGHHoK/vz8kScKWLVtszpflWep0Orz66qvw9vaGq6srHn74YVy+fLka3wURUdVjgFRJ69evx6RJk/DOO+/gyJEj6NOnDwYPHoykpKSaHppD2bVrF15++WXs378f8fHxMBqNiIiIQHZ2ttzm//7v/7BgwQIsXrwYBw8ehJ+fHwYOHIjMzMwaHLljOXjwID799FN06tTJ5jifbcXdunULvXv3hlqtxg8//IDExETMnz8fXl5echs+34qZM2cOli9fjsWLF+PkyZP4v//7P8ydOxeLFi2S2/DZll12djY6d+6MxYsXF3u+LM9y0qRJ2Lx5M+Li4rBnzx5kZWXhwQcfhMlkqq63QURU9QRVSvfu3cW4ceNsjgUHB4u33nqrhkZUN1y7dk0AELt27RJCCGE2m4Wfn5+YPXu23CYvL094enqK5cuX19QwHUpmZqZo3bq1iI+PF/369RMTJ04UQvDZVtabb74p7rnnnhLP8/lW3NChQ8Wzzz5rc+yxxx4TTz75pBCCz7YyAIjNmzfL35flWaalpQm1Wi3i4uLkNv/8849QKBTixx9/rLaxExFVNWaQKkGv1yMhIQERERE2xyMiIrB3794aGlXdkJ6eDgBo2LAhAOD8+fNISUmxedYajQb9+vXjsy6jl19+GUOHDsWAAQNsjvPZVs53332H8PBwPP7442jcuDG6dOmCzz77TD7P51tx99xzD3766SecOXMGAHDs2DHs2bMHQ4YMAcBna09leZYJCQkwGAw2bfz9/dGhQwc+byKqU1Q1PQBHlpqaCpPJBF9fX5vjvr6+SElJqaFROT4hBKKjo3HPPfegQ4cOACA/z+Ke9cWLF6t9jI4mLi4Ohw8fxsGDB4uc47OtnL///hvLli1DdHQ03n77bRw4cAATJkyARqPBU089xedbCW+++SbS09MRHBwMpVIJk8mEDz74AE888QQA/t21p7I8y5SUFDg5OaFBgwZF2vBnHhHVJQyQ7ECSJJvvhRBFjlHZvfLKK/jjjz+wZ8+eIuf4rMvv0qVLmDhxIrZv3w6tVltiOz7bijGbzQgPD8eHH34IAOjSpQtOnDiBZcuW4amnnpLb8fmW3/r167FmzRqsW7cO7du3x9GjRzFp0iT4+/vj6aefltvx2dpPRZ4lnzcR1TWcYlcJ3t7eUCqVRX5zdu3atSK/haOyefXVV/Hdd9/hl19+QbNmzeTjfn5+AMBnXQEJCQm4du0awsLCoFKpoFKpsGvXLixcuBAqlUp+fny2FdOkSROEhITYHGvXrp1cqIV/dyvu9ddfx1tvvYVRo0ahY8eOGDNmDCZPnoxZs2YB4LO1p7I8Sz8/P+j1ety6davENkREdQEDpEpwcnJCWFgY4uPjbY7Hx8ejV69eNTQqxySEwCuvvIJNmzbh559/RlBQkM35oKAg+Pn52TxrvV6PXbt28VnfQf/+/XH8+HEcPXpUfoWHhyMqKgpHjx5Fy5Yt+WwroXfv3kVK0p85cwYtWrQAwL+7lZGTkwOFwvbHlFKplMt889naT1meZVhYGNRqtU2b5ORk/Pnnn3zeRFS31Fh5iDoiLi5OqNVqERsbKxITE8WkSZOEq6uruHDhQk0PzaG89NJLwtPTU+zcuVMkJyfLr5ycHLnN7Nmzhaenp9i0aZM4fvy4eOKJJ0STJk1ERkZGDY7cMRWuYicEn21lHDhwQKhUKvHBBx+Is2fPirVr1woXFxexZs0auQ2fb8U8/fTTomnTpuK///2vOH/+vNi0aZPw9vYWb7zxhtyGz7bsMjMzxZEjR8SRI0cEALFgwQJx5MgRcfHiRSFE2Z7luHHjRLNmzcSOHTvE4cOHxf333y86d+4sjEZjTb0tIiK7Y4BkB0uWLBEtWrQQTk5OomvXrnJpaio7AMW+Vq5cKbcxm81i+vTpws/PT2g0GtG3b19x/Pjxmhu0A7s9QOKzrZytW7eKDh06CI1GI4KDg8Wnn35qc57Pt2IyMjLExIkTRfPmzYVWqxUtW7YU77zzjtDpdHIbPtuy++WXX4r9d/bpp58WQpTtWebm5opXXnlFNGzYUDg7O4sHH3xQJCUl1cC7ISKqOpIQQtRM7oqIiIiIiKh24RokIiIiIiKifAyQiIiIiIiI8jFAIiIiIiIiyscAiYiIiIiIKB8DJCIiIiIionwMkIiIiIiIiPIxQCIiIiIiIsrHAImIiIiIiCgfAyQiIiIiIqJ8DJCIiIiIiIjyMUAiIiIiIiLKxwCJiIiIiIgo3/8D36vIcFQ+mZIAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "b_res_tnf.get_states_probtraj().loc[:, [\"Apoptosis -- Survival\", \"NonACD -- Apoptosis\", \"NonACD -- Apoptosis -- Survival\", \"NonACD -- Survival\"]].plot(color=['C5', 'C6', 'C8', 'C0',])\n", + "plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We can see that we get a peak of these mixed phenotypes during the first 24 hours, after which they mostly disappear. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Pulses of TNF treatments\n", + "\n", + "We will now focus in a new type of treatment : pulses of TNF. This type of simulation is a bit more complex, as we need to chain multiple simulations, meaning that we will use the end state of one simulation as the initial state of a following one. \n", + "\n", + "Since MaBoSS only saves the simulations results for a specific list of output nodes, we want to also do simulations with all nodes marked as output, otherwise we would loose information on the state of many nodes. For this we need two simulations : \n", + "- One with all nodes as outputs, to be able to completely specify the next simulation's initial condition\n", + "- One with only the output we want, to be able to generate the figure (the *_fig simulations)\n", + "\n", + "We first define the duration of the treatment (24h), and the duration of the interval between treatments (24h). " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:19.695368Z", + "iopub.status.busy": "2024-06-07T17:38:19.695098Z", + "iopub.status.idle": "2024-06-07T17:38:19.700122Z", + "shell.execute_reply": "2024-06-07T17:38:19.699065Z", + "shell.execute_reply.started": "2024-06-07T17:38:19.695346Z" + } + }, + "outputs": [], + "source": [ + "dur_tnf = 24\n", + "dur_no_tnf = 24" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We also build a list of all the nodes of the model that we will use for this part, to make sure we always have the same order" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:19.701197Z", + "iopub.status.busy": "2024-06-07T17:38:19.700978Z", + "iopub.status.idle": "2024-06-07T17:38:19.708825Z", + "shell.execute_reply": "2024-06-07T17:38:19.707207Z", + "shell.execute_reply.started": "2024-06-07T17:38:19.701178Z" + } + }, + "outputs": [], + "source": [ + "nodes = list(b_sim_tnf.network.keys())" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### First, with TNF\n", + "\n", + "We copy the previous simulation with TNF treatment, and update it with the duration of the TNF treatment. We start with the full simulation, the one with all the nodes as output : " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:19.710192Z", + "iopub.status.busy": "2024-06-07T17:38:19.709925Z", + "iopub.status.idle": "2024-06-07T17:38:20.526092Z", + "shell.execute_reply": "2024-06-07T17:38:20.524814Z", + "shell.execute_reply.started": "2024-06-07T17:38:19.710165Z" + } + }, + "outputs": [], + "source": [ + "sim_1_full = b_sim_tnf.copy()\n", + "sim_1_full.update_parameters(max_time=dur_tnf)\n", + "sim_1_full.network.set_output(nodes)\n", + "res_1_full = sim_1_full.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "and we continue with the simple simulation, this time with only the cell fate nodes as output. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:20.527775Z", + "iopub.status.busy": "2024-06-07T17:38:20.527462Z", + "iopub.status.idle": "2024-06-07T17:38:21.311459Z", + "shell.execute_reply": "2024-06-07T17:38:21.310664Z", + "shell.execute_reply.started": "2024-06-07T17:38:20.527751Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAApQAAAGFCAYAAABDrWOfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABcrUlEQVR4nO3dd3xT5eIG8Oc0adLdAqWTUQp0sQpUVr0gylBwAQoIeK1eUUFEtOC8KIKoyFJwXMSyBGXIEAGZCsjeUKBAGWV2QPdumuT3Bz+isStpk7wZz/fz4SPNeXPOE4TycM553yNptVotiIiIiIhqyUl0ACIiIiKybSyURERERFQnLJREREREVCcslERERERUJyyURERERFQnLJREREREVCcslERERERUJyyURERERFQnLJREREREVCcslERERERUJyyURERERFQnLJREREREVCcslERERERUJyyURERERFQnLJREREREVCcslERERERUJyyURERERFQnLJREREREVCcslERERERUJyyURERERFQnLJREREREVCcslERERERUJyyURERERFQnLJREREREVCcslERERERUJ3LRAYjINPLL8nGn+A7uFN9BZnHmXz8vyUReaR7KteVQa9S6/6q1at1/n095B3n5KkCSIJNJcJI7Qe5894dM4QSFUg6FqwxR/mfgrcgEXHwA13qAe0PAMwBwawBIkuhfAiIiEoSFksjKlapLcTHnItIK0/SLYnEm7pTc/W9mcSZK1CW1PkZOaiHuZJbWOC4kYh28c9ZU3ODkDHj4A16BgFcw4N0I8GkK1A8F6jeD1rspJDm/3RAR2St+hyeyIjklOUjKSsL5rPM4l30O5zLPISUvBWqtWnQ0AIBCfafyDRoVkHfj7g8c1tuklSlx/udAODdqDGVoKBTNQ6Fs3hyK0FAoQ0Ph5Opq/uBERGRWLJREAmi1WtwouIFzWedwLusczmedR1JWEjKKMkRHq5ay/LbR79F6BEFbWoqyS5dQdukSsO1vGyUJzsHBcGndGm7to+EaHQ2XqChIzs6mC01ERGbHQklkAakFqTiYdhBJmUk4l3UOydnJyFfli45lNEVZutHvUct9AdysfKNWC9WNG1DduIH8zZsBAJJSCZdWreAaHQ3X9tFw69AB8gYN6pCaiIjMjYWSyAxUGhWOpR/Dnpt78OeNP3Ep95Lo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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sim_1_simple = sim_1_full.copy()\n", + "sim_1_simple.network.set_output(outputs)\n", + "res_1_simple = sim_1_simple.run()\n", + "res_1_simple.plot_piechart(prob_cutoff=0.0001)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-08T11:12:36.305683Z", + "iopub.status.busy": "2024-02-08T11:12:36.305269Z", + "iopub.status.idle": "2024-02-08T11:12:36.312336Z", + "shell.execute_reply": "2024-02-08T11:12:36.310773Z", + "shell.execute_reply.started": "2024-02-08T11:12:36.305651Z" + } + }, + "source": [ + "We can see the same behaviour we saw earlier : Most cells commited to apoptosis, a few cells to necrosis, and even fewer to survival" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Second, no TNF" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "First we have to generate our new initial states based on the last time point of the previous simulation, in which we only change the initial value of the TNF node to deactivate it:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:21.313573Z", + "iopub.status.busy": "2024-06-07T17:38:21.313057Z", + "iopub.status.idle": "2024-06-07T17:38:21.884653Z", + "shell.execute_reply": "2024-06-07T17:38:21.883523Z", + "shell.execute_reply.started": "2024-06-07T17:38:21.313530Z" + } + }, + "outputs": [], + "source": [ + "new_istates = change_inputs(nodes, to_istates(res_1_full.get_states_probtraj(), nodes), {\"TNF\": 0})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We then build our second full simulation, and set its initial states to the one we just generated" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:21.885968Z", + "iopub.status.busy": "2024-06-07T17:38:21.885725Z", + "iopub.status.idle": "2024-06-07T17:38:23.867484Z", + "shell.execute_reply": "2024-06-07T17:38:23.866763Z", + "shell.execute_reply.started": "2024-06-07T17:38:21.885946Z" + } + }, + "outputs": [], + "source": [ + "sim_2_full = sim_1_full.copy()\n", + "sim_2_full.update_parameters(max_time=dur_no_tnf)\n", + "sim_2_full.network.set_istate(nodes, new_istates)\n", + "res_2_full = sim_2_full.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-08T11:12:01.021088Z", + "iopub.status.busy": "2024-02-08T11:12:01.020604Z", + "iopub.status.idle": "2024-02-08T11:12:01.029686Z", + "shell.execute_reply": "2024-02-08T11:12:01.028109Z", + "shell.execute_reply.started": "2024-02-08T11:12:01.021033Z" + } + }, + "source": [ + "We then run our simple simulation, only looking at the cell fates nodes" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:23.868442Z", + "iopub.status.busy": "2024-06-07T17:38:23.868234Z", + "iopub.status.idle": "2024-06-07T17:38:26.004210Z", + "shell.execute_reply": "2024-06-07T17:38:26.003366Z", + "shell.execute_reply.started": "2024-06-07T17:38:23.868424Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkgAAAGFCAYAAAAGgAxYAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABArElEQVR4nO3dd3hUVeI+8PdmZjIzKSSkhyQkEEiA0EFRUCwUXd21oYDCKq4d5QuIrl1RFhui2PCHihTLKgooTZCqEHpTaiAJkE4CKaRNpt3fHyzRhCRkkpl77sy8n+fhMcncOffNssY35557riTLsgwiIiIiquUjOgARERGR2rAgEREREdXDgkRERERUDwsSERERUT0sSERERET1sCARERER1cOCRERERFQPCxIRERFRPSxIRERERPWwIBERERHVw4JEREREVA8LEhEREVE9LEhERERE9bAgEREREdXDgkRERERUDwsSERERUT0sSERERET1sCARERER1cOCRERERFQPCxIRERFRPSxIRERERPWwIBERERHVw4JEREREVA8LEhEREVE9LEhERERE9WhFByAi56gwV+BM9Znzf0xncLb6bO3n5eZyWO1WWGUrbHYbbLINNrut9vNvc/MBHw0g+QCS5vzHWj3g6w/4Bpz/pz4QMAQBhmDAGHz+n36hQGA04B8GSJLg/wWIiJyHBYlI5UxWEzLKMlBYWYgzpvOF56/l50z1GRSbilFtrW75SfKzWhfSRwcERgGB0SjI7gefNhHQxcZCFxsD37g46KKjIel0rTsHEZGCWJCIVKTUVIojxUdwtPgojhYfRVpxGk6eOwmbbBMdrWl2C1CWDbm8ACXf5wJ2ue7rGg20kRHwjY2DvlMnGFK6wdC1K/SdO7M4EZEqsSARCZJTnlNbhC78OV11WnSs1vGLuLgcAYDNBmtePqx5+ajaubP2y5JOB33nztB36wpDt24wpqTA0LUrJF9fBUMTEV2MBYlIAbkVudhdsLvOzFC5pVx0LKez+4YAONvs42WLBabDh2E6fBhlWAwAkHx9YUhJgbFPHxj79IZfnz7QhoW5KDERUcNYkIhcwGKzYE/hHmzO2YwtuVuQWZYpOpIibAiEIwWpIbLZjOp9+1C9b1/t13RxcTD27g3/AZfDf/Bg6CIiWpmUiKhpLEhETlJQWYDNuZuxJWcLdhTsQKWlUnQk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CxERKYYFiUhhBZUF2FWwC3tO78Gugl3IKs8SHUk4raRFp7ad0D2sO3qE9UD3sO5IDEqExkcjOhoReSkWJCLBSk2lyCjLQEZpBtJL02v/WWwqFh3NJcKMYYgJiEFcYBy6hnRFj/Ae6BrSlfsSEZGqsCARqVSJqQTppek4de4UcspzkF2ejZyK8/8sN5eLjtcoo9aImIAYxAbGIjYgtvafMQExiAmM4W33ROQWWJCI3FBZTRlyynOQU5GDUlMpKiwV5/+YK+p8XGmpRLm5/Pw/LeWw2q3NPodG0kCv0cOgNcCgMUCv1cOgMdR+btAa0NbQ9nwZ+l8RigmIQagx1IXfORGRMliQiLxIja2mtjBVmCtQba2uU4IM2vNFyKgx8rZ5IvJqLEhERERE9fiIDkBERESkNixIRERERPWwIBERERHVw4JEREREVA8LEhEREVE9LEhERERE9bAgEREREdXDgkRERERUDwsSERERUT0sSERERET1sCARERER1cOCRERERFQPCxIRERFRPSxIRERERPWwIBERERHVw4JEREREVA8LEhEREVE9LEhERERE9bAgEREREdXDgkRERERUDwsSERERUT0sSERERET1sCARERER1cOCRERERFQPCxIRERFRPf8fz3K6bvWWoa8AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sim_2_simple = sim_2_full.copy()\n", + "sim_2_simple.network.set_output(outputs)\n", + "res_2_simple = sim_2_simple.run()\n", + "res_2_simple.plot_piechart(prob_cutoff=0.0001)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here after this new simulation, this time without TNF active, we see that the cells which had previously commited to apoptosis and necrosis don't change. However, the cells which had previously commited to survival go back to being uncommited to a cell fate." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Third, with TNF\n", + "\n", + "Again, we have to generate our new initial states based on the last time point of the previous simulation, in which we only change the initial value of the TNF node to this time re-activate it:" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:26.005590Z", + "iopub.status.busy": "2024-06-07T17:38:26.005305Z", + "iopub.status.idle": "2024-06-07T17:38:26.028548Z", + "shell.execute_reply": "2024-06-07T17:38:26.026624Z", + "shell.execute_reply.started": "2024-06-07T17:38:26.005567Z" + } + }, + "outputs": [], + "source": [ + "new_istates = change_inputs(nodes, to_istates(res_2_full.get_states_probtraj(), nodes), {\"TNF\": 1})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We then create and run our full simulation, based on these new initial states:" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:26.030276Z", + "iopub.status.busy": "2024-06-07T17:38:26.029901Z", + "iopub.status.idle": "2024-06-07T17:38:26.613290Z", + "shell.execute_reply": "2024-06-07T17:38:26.612263Z", + "shell.execute_reply.started": "2024-06-07T17:38:26.030241Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning, node FASL was previously bound to othernodes\n" + ] + } + ], + "source": [ + "sim_3_full = sim_2_full.copy()\n", + "sim_3_full.update_parameters(max_time=dur_tnf)\n", + "sim_3_full.network.set_istate(nodes, new_istates)\n", + "res_3_full = sim_3_full.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And we run our simple simulation:" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:26.614729Z", + "iopub.status.busy": "2024-06-07T17:38:26.614394Z", + "iopub.status.idle": "2024-06-07T17:38:26.985212Z", + "shell.execute_reply": "2024-06-07T17:38:26.984385Z", + "shell.execute_reply.started": "2024-06-07T17:38:26.614701Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sim_3_simple = sim_3_full.copy()\n", + "sim_3_simple.network.set_output(outputs)\n", + "res_3_simple = sim_3_simple.run()\n", + "res_3_simple.plot_piechart(prob_cutoff=0.0001)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Here we observed that after this second round of TNF treatment, the previously uncommited cells dit commit to one of the cell fates (again, mostly to apoptosis). We still have a very small amount of cells which committed to survival. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Fourth, no TNF\n", + "\n", + "Again, we have to generate our new initial states based on the last time point of the previous simulation, in which we only change the initial value of the TNF node to this time deactivate it:" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:26.986501Z", + "iopub.status.busy": "2024-06-07T17:38:26.986109Z", + "iopub.status.idle": "2024-06-07T17:38:27.070270Z", + "shell.execute_reply": "2024-06-07T17:38:27.069507Z", + "shell.execute_reply.started": "2024-06-07T17:38:26.986462Z" + } + }, + "outputs": [], + "source": [ + "new_istates = change_inputs(nodes, to_istates(res_3_full.get_states_probtraj(), nodes), {\"TNF\": 0})" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We then create and run our full simulation, based on these new initial states:" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:27.071481Z", + "iopub.status.busy": "2024-06-07T17:38:27.071232Z", + "iopub.status.idle": "2024-06-07T17:38:27.390423Z", + "shell.execute_reply": "2024-06-07T17:38:27.389411Z", + "shell.execute_reply.started": "2024-06-07T17:38:27.071463Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning, node FASL was previously bound to othernodes\n" + ] + } + ], + "source": [ + "sim_4_full = sim_3_full.copy()\n", + "sim_4_full.update_parameters(max_time=dur_no_tnf)\n", + "sim_4_full.network.set_istate(nodes, new_istates)\n", + "res_4_full = sim_4_full.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And we run our simple simulation:" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:27.395277Z", + "iopub.status.busy": "2024-06-07T17:38:27.394715Z", + "iopub.status.idle": "2024-06-07T17:38:27.883104Z", + "shell.execute_reply": "2024-06-07T17:38:27.881985Z", + "shell.execute_reply.started": "2024-06-07T17:38:27.395243Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sim_4_simple = sim_4_full.copy()\n", + "sim_4_simple.network.set_output(outputs)\n", + "res_4_simple = sim_4_simple.run()\n", + "res_4_simple.plot_piechart(prob_cutoff=0.0001)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "As previously, the cells commited to apoptosis or necrosis don't change, but the cells which commited to survival go back to being uncommited. " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Fifth, with TNF\n", + "\n", + "Again, we have to generate our new initial states based on the last time point of the previous simulation, in which we only change the initial value of the TNF node to this time re-activate it:" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:27.884725Z", + "iopub.status.busy": "2024-06-07T17:38:27.884288Z", + "iopub.status.idle": "2024-06-07T17:38:27.894111Z", + "shell.execute_reply": "2024-06-07T17:38:27.893481Z", + "shell.execute_reply.started": "2024-06-07T17:38:27.884696Z" + } + }, + "outputs": [], + "source": [ + "new_istates = change_inputs(nodes, to_istates(res_4_full.get_states_probtraj(), nodes), {\"TNF\": 1})" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-08T11:19:54.784634Z", + "iopub.status.busy": "2024-02-08T11:19:54.784114Z", + "iopub.status.idle": "2024-02-08T11:19:54.793061Z", + "shell.execute_reply": "2024-02-08T11:19:54.791127Z", + "shell.execute_reply.started": "2024-02-08T11:19:54.784595Z" + } + }, + "source": [ + "We then create and run our full simulation, based on these new initial states:" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:27.895118Z", + "iopub.status.busy": "2024-06-07T17:38:27.894879Z", + "iopub.status.idle": "2024-06-07T17:38:28.091102Z", + "shell.execute_reply": "2024-06-07T17:38:28.090362Z", + "shell.execute_reply.started": "2024-06-07T17:38:27.895097Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Warning, node FASL was previously bound to othernodes\n" + ] + } + ], + "source": [ + "sim_5_full = sim_4_full.copy()\n", + "sim_5_full.update_parameters(max_time=dur_tnf)\n", + "sim_5_full.network.set_istate(nodes, new_istates)\n", + "res_5_full = sim_5_full.run()" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-08T11:20:05.015198Z", + "iopub.status.busy": "2024-02-08T11:20:05.014730Z", + "iopub.status.idle": "2024-02-08T11:20:05.023563Z", + "shell.execute_reply": "2024-02-08T11:20:05.021864Z", + "shell.execute_reply.started": "2024-02-08T11:20:05.015162Z" + } + }, + "source": [ + "And we run our simple simulation:" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:28.092660Z", + "iopub.status.busy": "2024-06-07T17:38:28.092245Z", + "iopub.status.idle": "2024-06-07T17:38:28.316022Z", + "shell.execute_reply": "2024-06-07T17:38:28.315168Z", + "shell.execute_reply.started": "2024-06-07T17:38:28.092626Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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S0s1e/Zs3XXXXfrNb36jGTNm1Dy2ePFi2Ww2zZs3T2effbZCQ0N17rnnauPG2itV//rXv9SzZ0+FhIQoLS1NU6ZMqfV4WlqaJk2apJEjRyoyMlLJycl67bXXaj0uSddcc41sNlvN25L01ltvqWPHjgoODlbXrl313nvv1XruJ598Um3btlVISIiSk5M1fvz4Ws/736fYTnXsmaAgeZGxfcYqwMaXDID1BdgCNK7vONMx/NZHH32krl27qmvXrho9erSmT58ut9td65gHHnhAL774on788UclJCToqquuqrn8fe3atRo+fLhuvPFGbdy4UU8++aQef/zxWkVLkiZPnqzevXtr3bp1euSRR3T//fdr4cKFko6dCpOk6dOnKycnp+btOXPm6N5779XEiRO1adMm/fGPf9Qtt9yi77//XpL0ySefaOrUqXr77be1bds2ffbZZzrrrBOf1mzMsY3FDJIX6RjbUZe3v1zzds4zHQUATunStEu96rYivmbatGkaPXq0JOmyyy5TSUmJFi1apKFDh9Yc85e//EXDhh07MzFz5kylpKRozpw5Gj58uF566SUNGTJEjz/+uCSpS5cuysjI0OTJkzVmzJia5xg0aJAefvjhmmOWLVumqVOnatiwYYqPj5f0n9t7/OLFF1/UmDFjNHbsWEnShAkTtHLlSr344ou65JJLtHfvXiUlJWno0KEKCgpS27Ztdc4555zw82zMsY3FcoSXuevsuxRoa/jN9gDA0+w2u+7uc7fpGH4rMzNTq1ev1o033ihJstvtGjFihN59991ax51//vk1v2/ZsqW6du2qLVu2SJK2bNmiQYMG1Tp+0KBB2rZtm5xO5wmf45e3f3mOkznZc//yfjfccIPKy8vVoUMH3X777ZozZ44cDscJn6sxxzYWBcnLtItup992/K3pGABwUr/r9Du1jW5rOobfmjZtmhwOh9q0aSO73S673a633npLn376qQoKCk75vr9spOh2u4/bVLHuKbr6nqMxx/z3x0tNTVVmZqbeeOMNhYWFaezYsRo8ePAJd79uzLGNRUHyQneefafsAZwdBWA9IYEhuvPsO03H8FsOh0OzZs3SlClTtGHDhppfP/30k9q1a6cPPvig5tiVK1fW/L6goEBZWVnq1q2bJKlHjx5KT0+v9dzLly9Xly5dat3D7L+f45e3f3kOSQoKCqq1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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sim_5_simple = sim_5_full.copy()\n", + "sim_5_simple.network.set_output(outputs)\n", + "res_5_simple = sim_5_simple.run()\n", + "res_5_simple.plot_piechart(prob_cutoff=0.0001)" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-08T11:20:46.701817Z", + "iopub.status.busy": "2024-02-08T11:20:46.701337Z", + "iopub.status.idle": "2024-02-08T11:20:46.710348Z", + "shell.execute_reply": "2024-02-08T11:20:46.709032Z", + "shell.execute_reply.started": "2024-02-08T11:20:46.701780Z" + } + }, + "source": [ + "Here we see that after this third round of treatment, there is no more (detectable) population of cells commited to survival" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Finally, we merge the trajectories of the five simulations\n", + "\n", + "To be able to look at the consolidated trajectory, we extract the trajectory of the previous 5 simulations:" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:28.316977Z", + "iopub.status.busy": "2024-06-07T17:38:28.316751Z", + "iopub.status.idle": "2024-06-07T17:38:28.326589Z", + "shell.execute_reply": "2024-06-07T17:38:28.325731Z", + "shell.execute_reply.started": "2024-06-07T17:38:28.316958Z" + } + }, + "outputs": [], + "source": [ + "table_1 = res_1_simple.get_states_probtraj()\n", + "table_2 = res_2_simple.get_states_probtraj()\n", + "table_3 = res_3_simple.get_states_probtraj()\n", + "table_4 = res_4_simple.get_states_probtraj()\n", + "table_5 = res_5_simple.get_states_probtraj()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "We need to fix the index since otherwise all the five simulations start at 0" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:28.327965Z", + "iopub.status.busy": "2024-06-07T17:38:28.327648Z", + "iopub.status.idle": "2024-06-07T17:38:28.335702Z", + "shell.execute_reply": "2024-06-07T17:38:28.334351Z", + "shell.execute_reply.started": "2024-06-07T17:38:28.327937Z" + } + }, + "outputs": [], + "source": [ + "table_2.index = np.array([value + dur_tnf - 1 for value in table_2.index.values])\n", + "table_3.index = np.array([value + dur_tnf + dur_no_tnf - 2 for value in table_3.index.values])\n", + "table_4.index = np.array([value + dur_tnf + dur_no_tnf + dur_tnf - 3 for value in table_4.index.values])\n", + "table_5.index = np.array([value + dur_tnf + dur_no_tnf + dur_tnf + dur_no_tnf - 4 for value in table_5.index.values])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "And finally we generate a figure with the consolidated trajectory, with the treatment periods in grey:" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:28.336905Z", + "iopub.status.busy": "2024-06-07T17:38:28.336658Z", + "iopub.status.idle": "2024-06-07T17:38:28.666412Z", + "shell.execute_reply": "2024-06-07T17:38:28.665152Z", + "shell.execute_reply.started": "2024-06-07T17:38:28.336885Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0oAAAGwCAYAAACXTJW7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACZn0lEQVR4nOzdeVxU9f7H8deZAYZNwB1cQXM3JTXXskzT1BbLUhNvUbZaV0vrlvUzTSs1l8y6lhVupbmVtuitrJtlLrc0KVNzSc1MXNlkh5n5/THOyAgqg8CAvp895gFzzvd8z+eME8yH7/f7OYbdbrcjIiIiIiIiLiZvByAiIiIiIlLeKFESERERERE5ixIlERERERGRsyhREhEREREROYsSJRERERERkbMoURIRERERETmLEiUREREREZGz+Hg7gLJms9k4fPgwlSpVwjAMb4cjIiIiRWC32zl16hS1atXCZNLfeUWk9F12idLhw4epW7eut8MQERGRYvjrr7+oU6eOt8MQkcvAZZcoVapUCXD8oA0JCSnx/o8cOVLifUpB4eHh3g7hsqD3c9nQ+7ns6D1dNkrjPZ2amkrdunVdv8dFRErbZZcoOafbhYSElEqilJ6eXuJ9SkGl8W8nBen9XDb0fi47ek+XjdJ8T2vavIiUFU3yFREREREROYsSJRERERERkbMoURIRERERETmLEiUREREREZGzKFESERERERE5ixIlERERERGRsyhREhEREREROYsSJRERERERkbMoURIRERERETmLEiUREREREZGzeDVR+v7777nllluoVasWhmGwcuXKCx7z3Xff0bZtW/z9/WnQoAFvv/126QcqIiIiIiKXFa8mSunp6bRu3Zo333yzSO33799Pnz59uPbaa9m6dSvPPfccw4cP56OPPirlSEVERERE5HLi482T9+7dm969exe5/dtvv029evWYMWMGAM2aNWPz5s1MnTqV/v37l1KURWSzQtIBTOmnsJst2H38wWwBw/BuXCIiIiIi4jGvJkqe2rhxIz179nTb1qtXL+Li4sjNzcXX17fAMdnZ2WRnZ7uep6amlk5wmUnwRhtq5ttkxyCvalMymt5B5hW3YPcPK51zi4iIiIhIiapQxRyOHDlCzZo13bbVrFmTvLw8Tpw4UegxEydOJDQ01PWoW7du6QRnzQG/YOyG2bXJwI7vyZ2E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KF4pOUV6p/z3v/91FWr49ttv+e9//1vg4dzuqbOTLmfCVRibzYZhGCxcuJD27dvTp08fpk+fzrx58845qmSxWAgJCXF7XApsAVWwY2DYrZiykwtto0IOIiIi5duuXbv48ccfXVOzfHx8GDhwYKF/AO7UqZPr+ypVqtCkSRN27twJwM6dO+nSpYtb+y5durBnzx63P2Ln78P53NnHuZyrb+dxd911F5mZmTRo0IAHH3yQFStWnHP9uCdtDx48SHBwsOvxyiuvsG7dOrdtCxcuLPTYiIgINm7cyLZt2xg+fDi5ubnce++93HTTTR6P0rRr187tefXq1bnxxhtd596/fz8bN24kJiam0ON9fX256667XO3T09P55JNP3Nr/8ccfDB48mAYNGhASEkJUVJTrNRDvKdKIUv5hxMKGFIujWrVqmM3mAqNHx44dKzDK5BQREUHt2rUJDQ11bWvWrBl2u51Dhw7RqFGjEomtQjD5YPOvjDkrEVPGCWwBVQs0cSZKWp8kIiKXGx+LheHzl3vt3EUVFxdHXl4etWvXdm2z2+34+vqSlJRE5cqVz3u884/Lhf2huahTAM/1B+rztcl/vrp167Jr1y7WrFnD119/zbBhw5gyZQrfffcdvr6+bsd50rZWrVpu5bCrVKlCQECA27ZzfWZ0atmyJS1btuSxxx5zjQB99913dOvWDZPJVOA1ck5lzC8oKKjAtpiYGEaMGMEbb7zBokWLaNGiBa1btz5nHDExMVx33XUcO3aMNWvW4O/vT+/evV37b7nlFurWrcu7775LrVq1sNlstGzZkpycnPNen5SuYt1HKSkpialTp7oKMUybNo3ExESP+vDz86Nt27auebFOa9asOWdxhi5dunD48GG3OZ67d+/GZDJRp04dzy+kgrNdYJ2SKt6JiMjlyjAMfP39vfIoSuIBkJeXx4IFC5g2bRrx8fGuxy+//EL9+vULjJZs2rTJ9X1SUhK7d++madOmADRv3pwffvjBrf2GDRto3LgxZrO50D6cz519gGP04+xlFM2aNSu072bNmrmeBwQEcOuttzJz5kzWrl3rGs0pTFHb+vj4cMUVV7gezkQp/7ZKlSoVeo7CNG/eHHCM6IBjZCghIcG132q18ttvvxWpr379+pGVlcUXX3zBokWLXFMnz6Vz587UrVuXJUuWsHDhQu666y5X9byTJ0+yc+dO/u///o/u3bvTrFkzkpKSinxdUnqKNKKU33fffcett95KaGioayhy5syZjB8/nk8//dSjEaeRI0fyj3/8g3bt2tGpUyfeeecdDh48yCOPPAI41hf9/fffLFiwAIDBgwczYcIE7rvvPl588UVOnDjB008/zf33309AQICnl1Lh2QKrQeLuc1a+U6IkIiJSfn3++eckJSUxdOhQt9kyAHfeeSdxcXE8/vjjrm3jx4+natWq1KxZk+eff55q1arRr18/AEaNGsXVV1/NhAkTGDhwIBs3buTNN99k1qxZbv2uX7+eV199lX79+rFmzRqWLVvGqlWrXPsjIyP55ptv6NKlCxaLhcqVK/P0008zYMAA2rRpQ/fu3fnss8/4+OOP+frrrwGYN28eVquVDh06EBgYyPvvv09AQAD169cvcM2etL0Yjz76KLVq1eKGG26gTp06JCQk8NJLL1G9enXX9MMbbriBkSNHsmrVKho2bMhrr71GcnJykfoPCgritttuY8yYMezcuZPBgweft71hGAwePJi3336b3bt3uwphgKMWQNWqVXnnnXeIiIjg4MGDBarqiXd4PKL02GOPMXDgQPbv38/HH3/Mxx9/zL59+xg0aBCPPfaYR30NHDiQGTNmMH78eKKjo/n+++9ZvXq163+WhIQEt7mZwcHBrFmzhuTkZNq1a0dMTAy33HILM2fO9PQyLgnWAMeUunPddNaZKGnqnYiISPkTFxdHjx49CiRJ4FjcHx8fz88//+zaNmnSJEaMGEHbtm1JSEjg008/dY1KtGnThqVLl7J48WJatmzJCy+8wPjx490KOYAjodqyZQtXXXUVEyZMYNq0afTq1cu1f9q0aaxZs4a6dety1VVXAY7Rk9dff50pU6bQokULZs+ezdy5c7n++usBR/GHd999ly5dutCqVSu++eYbPvvsM6pWLbgswJO2F6NHjx5s2rSJu+66i8aNG9O/f3/8/f355ptvXOe6//77uffee7nnnnu47rrriIqKolu3bkU+R0xMDL/88gvXXnttke57FRMTw44dO6hdu7bbmi+TycTixYvZsmULLVu25Mknn2TKlCmeX7SUOMPuYQ1L59zQJk2auG3ftWsX0dHR5y3VXR6kpqYSGhpKSkpKqRR2yD+EW9oqbZpC8C9xpF15L6c6j3bbZ7VZ6ft1X2zY+PC6D6lqKdkfQN4WERHh7RAuC2X5fr6c6f1cdvSeLhul8Z4+3+/vrKws9u/fT1RUFP4eVJurKNauXUu3bt1ISkoiLCys2P1ERkbyxBNPFLh3kMjlpqg/MzweUWrTpk2h1VF27txJdHS0p93JRXCuUSps6t3J7JPYsOFj+FDZ7/wLQUVERERExF2R1ij9+uuvru+HDx/OiBEj2Lt3Lx07dgQcCwH//e9/M2nSpNKJUgpldd5LqZCpd/mn3ZmMYtXsEBERERG5bBUpUYqOjsYwDLcSiv/6178KtBs8eDADBw4suejkvGyB516jpEIOIiIil4brr7++yKW+z+fAgQMXH4zIZaRIidL+/ftLOw4phvNNvVMhBxERERGR4itSolTSJRulZLim3mWngDUHzH6ufc6bzdYI0IiSiIiIiIinPL6PktOOHTs4ePBggTsG33rrrRcdlBSN3RKK3eSLYcvFlHECW6Varn3HMjWiJCIiIiJSXB4nSvv27eP2229n27ZtbuuWnHehPvtuzlKKDANbYDXMaQmYM90TJeeIUnWLEiUREREREU95XA5txIgRREVFcfToUQIDA9m+fTvff/897dq1Y+3ataUQopzPuSrfncw+CWhESURERESkODweUdq4cSP//e9/qV69OiaTCZPJxDXXXMPEiRMZPnw4W7duLY045RycBR1M+Qo65NpySclNAbjkbjQrIiIiIlIWPB5RslqtBAcHA1CtWjUOHz4MOAo+7Nq1q2SjkwuynR5RMucbUUrKTgLA1/Clkm8lr8QlIiIiIlKReZwotWzZ0nUD2g4dOvDqq6+yfv16xo8fT4MGDUo8QDk/ayH3UnJOu6tiqeJaOyYiIiLlT2xsLIZhMGnSJLftK1euLLXf4Q899BBms5nFixcXun/v3r3cd9991KlTB4vFQlRUFHfffTebN292tTEMw/UICgqiUaNGxMbGsmXLllKJWcQbPE6U/u///g+bzQbASy+9xJ9//sm1117L6tWrmTlzZokHKOd3Zurdcdc2Z6KkaXciIiLln7+/P5MnTyYpKanUz5WRkcGSJUt4+umniYuLK7B/8+bNtG3blt27dzN79mx27NjBihUraNq0KaNGjXJrO3fuXBISEti+fTv//ve/SUtLo0OHDixYsKDUr0OkLHicKPXq1Ys77rgDgAYNGrBjxw5OnDjBsWPHuOGGG0o8QDk/W4Aj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f/IDDzzA//73Pz7//HOSk5NJSUnh888/Z/Pmzbq3khdl5GWQdfp/wOo5WV6ORkRExLsMw8DkZ/bK42JGYyZNmsRnn33Ghg3u0wabN2/ODz/84LZtw4YNNG7c2C05OJ/Vq1dz6tQptm7dSnx8vOuxbNkyVq5cycmTJ4mOjqZ58+ZMmzbNlWDll5ycfMHzzJgxg5CQEHr06FHo/ho1anDFFVe4HgC1a9d2PT/X9LKTJ0/yySefsHjxYrf44+PjSUtL4z//+Y+rbV5enlsp8127dpGcnOyaFtisWbNCX89mzZq5bdu0aVOB584+/Pz8ANxG9EJCQqhVq9YF+w4JCWHgwIG8++67LFmyhI8++ojExMRCr9uTtlKyPB5RWrVqFV9++SXXXHONa1uvXr149913uemmm0o0OCm6k9knAahktRGUmcilVShTRETk8nDllVcSExPjWoPjNGrUKK6++momTJjAwIED2bhxI2+++SazZs0qct9xcXH07duX1q1bu21v0aIFTzzxBB988AEjRoxg7ty59OjRg65du/Lcc8/RtGlT0tLS+Oyzz/jqq6/47rvvXMcmJydz5MgRsrOzXeXEV65cyYIFC4pU+MET77//PlWrVuWuu+4qUGji5ptvJi4ujptvvhlwjEr985//ZObMmfj6+vL444/TsWNH2rdvD8DTTz/NgAEDaNOmDd27d+ezzz7j448/dk1BdFq2bBnt2rXjmmuuYeHChfz444+uNWQ1atQgICCAL774gjp16uDv709oaChPP/00Y8eOdVULnDt3LvHx8SxcuBCA1157jYiICKKjozGZTCxbtozw8PBCXy9P2krJ83hEqWrVqoVOrwsNDaVyZRUR8BZnolTdasWcftTL0YiIiEhxTZgwocC0ujZt2rB06VIWL15My5YteeGFFxg/fnyBKXrncvToUVatWkX//v0L7DMMgzvuuMOVALRv357NmzfTsGFDHnzwQZo1a8att97K9u3bmTFjhtux9913HxERETRt2pRHH32U4OBgfvzxRwYPHlysaz+fOXPmcPvttxdaja9///58/vnnHD3q+AwUGBjIM888w+DBg+nUqRMBAQFuN9ft168fr7/+OlOmTKFFixbMnj2buXPnukp8O7344ossXryYVq1aMX/+fBYuXEjz5s0BxzqomTNnMnv2bGrVqsVtt90GwPDhwxk1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h0ycOJGUlBTCw8O54YYbGDdunGtwYvTo0ezbt4+bb76Z0NBQJkyYUOQRJXBMp3vssce45557ijSyFRMTQ9++fenatatb7YLq1aszb948nnvuOWbOnEmbNm2YOnUqt956q+cXfgGG3cNi/926dePjjz+mcuXKF258Hjk5OQQGBrJs2TJuv/121/YRI0YQHx9foNR4cnIylStXdkvQbDYbdrsds9nMV199xQ033HDB86amphIaGkpKSgohISEXdQ2FyT8kWRa+SfiGydsmc1WVq5jcbjIAfn9vournseSFRXF8YPEqlpR3ERER3g7hslDW7+fLld7PZUfv6bJRGu/p8/3+zsrKYv/+/a4qunJ5mzdvHk888USRpgmej2EYrFixgn79+pVIXFJ+FPVnhsdV75w3erpYfn5+tG3bljVr1rglSmvWrCl0OC4kJIRt29yr18yaNYv//ve/LF++/JwLBi91rhEly5nE1XXTWY0oiYiIiIgUS7HKgx86dIhPP/2UgwcPFqguMX369CL3M3LkSP7xj3/Qrl07OnXqxDvvvMPBgwddN6QaPXo0f//9NwsWLMBkMtGyZUu342vUqIG/v3+B7ZeTs0uDw5mpd6bcDIycNOx+wYUeKyIiIiIihfM4Ufrmm2+49dZbiYqKYteuXbRs2ZIDBw5gt9s9no86cOBATp48yfjx40lISKBly5asXr3aVe0kISGBgwcPehriZcXtZrOn2X2DsPkFY8pJw5x+lDwlSiIiInKZiI2NLfLarfPxcHWKXII8Xgk2evRoRo0axW+//Ya/vz8fffQRf/31F9dddx133XWXxwEMGzaMAwcOkJ2dzZYtW+jatatr37x589zuJn02542mLmfOEaX8xRwArIHOyneFVxAUEREREZFz8zhR2rlzJ/feey/gqPaRmZlJcHAw48ePZ/LkySUeoJyfc0SpiqWK23ZrpVoAmNO0cFlERERExFMeJ0pBQUFkZ2cDUKtWLf744w/XvhMnTpRcZFIkhZUHB7BWqg2A+dTfZR6TiIiIiEhF5/EapY4dO7J+/XqaN29O3759GTVqFNu2bePjjz+mY8eOpRGjnEOeLY+U3BSgsBElJUoiIiIiIsXlcaI0ffp00tLSAMcaobS0NJYsWcIVV1zhuimtlI3knGQAzIaZSr6V3PZZgx2Jko8SJRERERERj3mcKDVo0MD1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V68+b/+VKlXi1ltv5eWXX+aXX37h2muv5aWXXgJwTRfM/9rk5uYW6CMgIKDA69m+fXsaNmzI4sWLyczMZMWKFa7RocJERETQrVs316jShx9+6NZ+6dKlPPnkk9x///189dVXxMfHc99995GTo9u2VBRFHlGKj493m4O5ePFiOnTowLvvvgtA3bp1GTt2LOPGjSvxIKWgzLxMMq2ZQOHlwSH/vZSOOe6lZPYrs/hERETEc5MmTSI6OtqVsDg1b96cH374wW3bhg0baNy4cZHX6qxevZpTp06xdetWt2N+//13YmJiOHnypGtEZNq0aQwcOLDAOqXk5OQLrlOaMWMGISEh9OjRo9D9NWrUoEaNGm7bateuXaRrOJthGDRt2pQNGzYAjnVMAAkJCa6RIGcyVhSDBw9m4cKF1KlTB5PJRN++fc/bPiYmhmeeeYa7776bP/74w62C4Lp16+jcuTPDhg1zbfvjjz+KHIt4X5FHlJKSkqhZs6br+XfffcdNN93ken711Vfz119/lWx0ck7O0uD+Zn8CfAovVWnzr4LNJ+D0vZQSyjI8ERERKYYrr7ySmJgY3njjDbfto0aN4ptvvmHChAns3r2b+fPn8+abb/LUU08Vue+4uDj69u1L69atadmypevRv39/qlevzgcffIBhGMydO5fdu3fTtWtXVq9ezb59+/j11195+eWXC0z/S05O5siRI/z555+sWbOGO++8k0WLFvHWW2+V+M1Z4+Pjue2221i+fDk7duxg7969xMXFMWfOHFdcV1xxBXXr1mXcuHHs3r2bVatWeVSVOSYmhp9//pmXX36ZO++8E39///O2v+OOO0hNTeXRRx+lW7dubgnfFVdcwebNm/nyyy/ZvXs3Y8aM4aeffirexYtXFDlRqlmzJvv37wccdex//vlnOnXq5Np/6tSpAsO9Unqc0+7ONZoEgGFo+p2IiEgFM2HChALT6tq0acPSpUtZvHgxLVu25IUXXmD8+PFuFe/O5+jRo6xatYr+/fsX2GcYBnfccYdr+l379u3ZvHkzDRs25MEHH6RZs2bceuutbN++nRkzZrgde9999xEREUHTpk159NFHCQ4O5scff2Tw4MHFuvbzqVOnDpGRkbz44ot06NCBNm3a8Prrr/Piiy/y/PPPA46phx9++CG///47rVu3ZvLkya5peUXRqFEjrr76an799VdiYmIu2D4kJIRbbrmFX375pUD7Rx55hDvuuIOBAwfSoUMHTp486Ta6JOWfYS9isf+HH36Ybdu2MXnyZFauXMn8+fM5fPgwfn6O6VwLFy5kxowZ5T5TTk1NJTQ0lJSUFEJCQkq8/4SEshm5WXd0HRN+mUCLsBa81v61c7ar/J+H8T/4HcldJ5DZrPCqLRVRRESEt0O4LJTV+/lyp/dz2dF7umyUxnv6fL+/s7Ky2L9/P1FRURccARARKerPjCKvUXrppZe44447uO666wgODmb+/PmuJAlgzpw59OzZ8+KiliK7UGlwJ2uwRpRERERERDxV5ESpevXqrFu3jpSUFIKDgwssHFy2bBnBwcElHqAU7kKlwZ10LyUREREREc8V/bbRp4WGhha6vUqV839gl5KVmO1IlM5VGtxJ91ISEREREfFckYs5SPniTJTOW8yBfIlS6qFSj0lERERE5FKhRKmCciVKRZx6Z844fS8lERERERG5ICVKFVRREyWbf2Vsp++zZE47XOpxiYiIiIhcCpQoVUBWu5XknGTgwomS7qUkIiIiIuI5JUoVUHJOMjZsmDAR5hd2wfZKlEREREREPKNEqQJyTrsL8wvDbJgv0PrMvZRUIlxEREREpGiUKFVARV2f5GQN0YiSiIiIuFu7di2GYZCcnFxifY4bN47o6OgS60/Em5QoVUDORKmqpWqR2mvqnYiISPl17NgxHn74YerVq4fFYiE8PJxevXqxcePGUj1v586dSUhIOOc9MkUudx7fcFa872T2ScCDESUlSiIiIuVW//79yc3NZf78+TRo0ICjR4/yzTffkJiYWKz+7HY7VqsVH5/zf8zz8/MjPDy8WOcQuRxoRKkC8nTqXV5wHUD3UhIRkcuH3W4nN9vqlYfdbi9ynMnJyfzwww9MnjyZbt26Ub9+fdq3b8/o0aPp27cvBw4cwDAM4uPj3Y4xDIO1a9cCZ6bQffnll7Rr1w6LxUJcXByGYfD777+7nW/69OlERkZit9vdpt6lpKQQEBDAF1984db+448/JigoiLS0NACeeeYZGjduTGBgIA0aNGDMmDHk5uYW7x9JpJzTiFIF5OmIkt0/DJtPIKa8DMyn/sYaFlWa4YmIiHhdXo6Nd0Z855VzP/T6dfhaLlxsCSA4OJjg4GBWrlxJx44dsVgsxT7vv/71L6ZOnUqDBg0ICwvj3XffZeHChUyYMMHVZtGiRQwePBjDMNyODQ0NpW/fvixcuJCbbrrJrf1tt91GcHAwAJUqVWLevHnUqlWLbdu28eCDD1KpUiX+9a9/FTtukfJKI0oVkKcjShgG1pC6APikHCilqERERMRTPj4+zJs3j/nz5xMWFkaXLl147rnn+PXXXz3ua/z48dx44400bNiQqlWrEhMTw6JFi1z7d+/ezZYtWxgyZEihx8fExLBy5UoyMjIASE1NZdWqVW7t/+///o/OnTsTGRnJLbfcwqhRo1i6dKnHsYpUBBpRqoASc04nSn5FTJSAvMoN8U3chU/SPrLrdyut0ERERMoFHz8TD71+ndfO7Yn+/fvTt29f1q1bx8aNG/niiy949dVXee+997j++uuL3E+7du3cng8aNIinn36aTZs20bFjRxYuXEh0dDTNmzcv9Pi+ffvi4+PDp59+yqBBg/joo4+oVKkSPXv2dLVZvnw5M2bMYO/evaSlpZGXl0dISIhH1ytSUWhEqYKx2+0kZScBRa96B45ECcAnaW+pxCUiIlKeGIaBr8XslcfZ09qKwt/fnxtvvJEXXniBDRs2EBsby9ixYzGZHB/V8q97OteaoKCgILfnERERdOvWzTWq9OGHH55zNAkcxR3uvPNOV/tFixYxcOBAV1GITZs2MWjQIHr37s3nn3/O1q1bef7558nJ0fpnuTQpUapgUnNTybPnAVDZUrnIx+WFnU6UkveVSlwiIiJScpo3b056ejrVq1cHICEhwbUvf2GHC4mJiWHJkiVs3LiRP/74g0GDBl2w/RdffMH27dv59ttviYmJce1bv3499evX5/nnn6ddu3Y0atSIP//807MLE6lANPWugnEWcgj1DcXX5Fvk49xGlOx2KMZfu0RERKRknTx5krvuuov777+fVq1aUalSJTZv3syrr77KbbfdRkBAAB07dmTSpElERkZy4sQJ/u///q/I/d9xxx08+uijPProo3Tr1o3atWuft/11111HzZo1iYmJITIyko4dO7r2XXHFFRw8eJDFixdz9dVXs2rVKlasWFHsaxcp7zSiVMF4XMjhtLzQ+tgNM6bcdEwZx0ojNBEREfFQcHAwHTp04LXXXqNr1660bNmSMWPG8OCDD/Lmm28CMGfOHHJzc2nXrh0jRozgpZdeKnL/ISEh3HLLLfzyyy9uo0PnYhgGd999d6Htb7vtNp588kkef/xxoqOj2bBhA2PGjPHsgkUqEMPuSbH/S0BqaiqhoaGkpKSUyuLD/EPjpeGrv79i6vaptK3aloltJ3p0bPUlvfFJ3s/JvnPIqdO5lCIsGxEREd4O4bJQ2u9ncdD7uezoPV02SuM9fb7f31lZWezfv5+oqCj8/f1L/Nwicmkp6s8MjShVMJ7eQyk/1zolFXQQERERETkvJUoVjKs0eLESpQaACjqIiIiIiFyIEqUKxrVGyYN7KDnlVb4CAJ+kP0o0JhERERGRS40SpQrGmSh5cg8lp9zKp0eUlCiJiIiIiJyXEqUK5mISJevpqXfmrESMrKQSjUtERMTbLrP6VCJSTEX9WaFEqQKx2+0XVczB7htIXnAtAHyStE5JREQuDb6+jvsKZmRkeDkSEakInD8rnD87zkU3nK1A0vPSybHlAMVLlMBx41mftMP4JO0lN6JtSYYnIiLiFWazmbCwMI4dc9wnMDAwEEM3VheRs9jtdjIyMjh27BhhYWGYzebztleiVIE4p90F+QRhMVuK1UdeWAP4a50q34mIyCUlPDwcwJUsiYicS1hYmOtnxvkoUapALmbanZMq34mIyKXIMAwiIiKoUaMGubm53g5HRMopX1/fC44kOSlRqkBc91AqRmlwp7zKjpvO+iYrURIRkUuP2Wwu8ocgEZHzUTGHCsRV8c7f84p3Ts6bzprTEjBy0kokLhERERGRS40SpQrkYm4262T3D8MaUA0An+T9JRKXiIiIiMilRolSBVISa5QA8pw3ntX0OxERERGRQilRqkAu5maz+eWFqaCDiIiIiMj5KFGqQFxT70pqREmJkoiIiIhIoZQoVSAlliiFOSrfaeqdiIiIiEjhlChVEJl5mWRYM4CSGFFyJErm1L/AmnPRsYmIiIiIXGqUKFUQznsoWUwWAs2BF9WXLbA6Nksoht2GT+LukghPREREROSS4vVEadasWURFReHv70/btm1Zt27dOdt+/PHH3HjjjVSvXp2QkBA6derEl19+WYbRek/+eygZhnFxnRkGOdWvBMDv2K8XG5qIiIiIyCXHq4nSkiVLeOKJJ3j++efZunUr1157Lb179+bgwYOFtv/++++58cYbWb16NVu2bKFbt27ccsstbN26tYwjL3slcQ+l/HJrtALA99gvJdKfiIiIiMilxKuJ0vTp0xk6dCgPPPAAzZo1Y8aMGdStW5e33nqr0PYzZszgX//6F1dffTWNGjXilVdeoVGjRnz22WdlHHnZc95D6WJLgzvl1mwNaERJRERERKQwXkuUcnJy2LJlCz179nTb3rNnTzZs2FCkPmw2G6dOnaJKlXOPsmRnZ5Oamur2qIhKquKdU051x4iST/J+jOyUEulTRERERORS4bVE6cSJE1itVmrWrOm2vWbNmhw5cqRIfUybNo309HQGDBhwzjYTJ04kNDTU9ahbt+5Fxe0tx7OOA1DNv1qJ9GcPqExeSD0AfDWqJCIiIiLixuvFHM4uTGC324tUrODDDz9k3LhxLFmyhBo1apyz3ejRo0lJSXE9/vrrr4uO2RuOZh0FoKZ/zQu0LDrnOiVNvxMRERERcefjrRNXq1YNs9lcYPTo2LFjBUaZzrZkyRKGDh3KsmXL6NGjx3nbWiwWLBbLRcfrbccyjwFQI+DcSaGncmq0ImDv5xpREhERERE5i9dGlPz8/Gjbti1r1qxx275mzRo6d+58zuM+/PBDYmNjWbRoEX379i3tMMuFXFuuq5hDyY4oOQs6/AJ2e4n1KyIiIiJS0XltRAlg5MiR/OMf/6Bdu3Z06tSJd955h4MHD/LII48Ajmlzf//9NwsWLAAcSdI999zD66+/TseOHV2jUQEBAYSGhnrtOkrbiawT2LHjZ/IjzC+sxPrNrdYMu8kXU1Yy5tS/sIbWK7G+RUREREQqMq+uURo4cCAzZsxg/PjxREdH8/3337N69Wrq168PQEJCgts9lWbPnk1eXh6PPfYYERERrseIESO8dQllwrk+qYZ/jYu/2Wx+Zj9yqzUHdD8lEREREZH8vDqiBDBs2DCGDRtW6L558+a5PV+7dm3pB1QOHc08XcghoOSm3Tnl1miF37Ff8Dv2K1mNbinx/kVEREREKiKvV72TC3MmSjX8S66Qg1PO6cp3KuggIiIiInKGEqUK4FiWo+Jd6YwoOQo6+J7YAdacEu9fRERERKQiUqJUAZTmiJI1pC5W/8oYtlx8T/5e4v2LiIiIiFRESpQqgNIcUcIwXDeeVUEHEREREREHJUrlnM1u43jWcaBk76GUnzNR8juqdUoiIiIiIqBEqdxLzE4kz56HyTBR1VK1VM6hgg4iIiIiIu6UKJVzznsoVbdUx2wyl8o5cmu0wo6BT+qfmNKPlso5REREREQqEiVK5Vxp3kPJyW4JdU2/sxz8vtTOIyIiIiJSUShRKudKs+Jdftn1rgPA/+DaUj2PiIiIiEhFoESpnCvVinf5ZNW/HgC/QxshL7tUzyUiIiIiUt4pUSrnympEKa9qM6yBNTDlZeCX8GOpnktEREREpLxTolTOldWIEoaRb/rdd6V7LhERERGRck6JUjlmt9vPFHMopXso5eecfmf5cy3Y7aV+PhERERGR8kqJUjmWmptKts2xXqi6f/VSP19O7Y7YzX74nDqET/IfpX4+EREREZHySolSOea8h1IVSxX8zH6lfj67bxDZEe0BsPyp6XciIiIicvlSolSOleW0O6ds5/S7g9+W2TlFRERERMobJUrlmKviXUDpVrzLL7ve9QD4HdmKkZ1SZucVERERESlPlCiVY66Kd2U4omQNqUNu5Ssw7FYsf/1QZucVERERESlPlCiVY2V1D6WzOUeVLCoTLiIiIiKXKSVK5ViZ3UPpLG73U7LmlOm5RURERETKAyVK5dixTEeiVNYjSjnhV2ENCseUnYL/vi/L9NwiIiIiIuWBEqVyKiMvg1N5p4CyH1HC5ENGs7sACNrxYdmeW0RERESkHFCiVE451ydV8q1EoE9gmZ8/o+md2E0++B35GZ+Tu8r8/CIiIiIi3qREqZxy3my2LCve5WcLqklWZHcAAncs9koMIiIiIiLeokSpnHKtTyrDeyidLaP53QAE7PkEIyfNa3GIiIiIiJQ1JUrl1KGMQwBEBER4LYacWh3IC4vClJtBwN7PvRaHiIiIiEhZU6JUTv1x6g8AGlRq4L0gDIP0ZoMACNz+Idjt3otFRERERKQMKVEqh+x2O/tO7QOgYaWGXo0ls0k/7D7++CbuwvfoVq/GIiIiIiJSVpQolUNHs46SnpeOj+FD3aC6Xo3Fbgkls2EfAIK2q1S4iIiIiFwelCiVQ87RpPrB9fE1+Xo5Gsho4Sjq4P/HasxJ+7wcjYiIiIhI6VOiVA6Vi/VJ+eRWv5Ks+jdg2K2E/DjN2+GIiIiIiJQ6JUrlkHNEqbwkSgCpHZ7CbpjxP/ANvgmbvR2OiIiIiEipUqJUDjlHlLxdyCE/a+UGZDS7C4CQTa+qAp6IiIiIXNKUKJUz6bnpHMk8ApSvESWAtLaPY/MJxO/Yr/jv+8Lb4YiIiIiIlBolSuXMvjTHtLvq/tUJ8Q3xcjTubIHVSI8eCkClH6eDNcfLEYmIiIiIlA4lSuWMa31ScPkaTXJKb3Uf1sDq+KT+5bgJrYiIiIjIJUiJUjnjWp8UUn7WJ+Vn9w3kVLvhAFTa/DrmlD+9HJGIiIiISMlTolTOlPcRJYDMJneQXas9ptwMwv77L7DmejskEREREZESpUSpHLHarOxP2w+U3xElAExmkrtNxuYXgt+xXwj+eZa3IxIRERERKVFKlMqRQxmHyLXlEmAOICIgwtvhnJctOIKUruMBCN46W/dWEhEREZFLihKlcsS5PikqOAqTUf7/abIa3kRG49sx7DbC/vsvjOxUb4ckIiIiIlIiyv+n8cuIa31SObt/0vmkdnmevJB6+KQd1nolEREREblkKFEqR5wjShUpUbL7BZPcfSp2swX/g2sJWzsabFZvhyUiIiIiclGUKJUjzhGlhpXKcSGHQuTWaEXSja9jN/kQsPdzQteNA7vd22GJiIiIiBSbEqVyIjE7kaScJAwMIoMjvR2Ox7LrX0/yDVOxGyYCf19GpU2TlSyJiIiISIWlRKmccI4m1Q6sTYBPgJejKZ6shjeR0nUCAMG/ziNkw8tasyQiIiIiFZISpXLipxM/AdAopJGXI7k4mU37k9LleQCCfvuAqp/HYko/5uWoREREREQ8o0SpHMix5vB1wtcAdI/o7uVoLl5Gy3+Q2PNNbH7B+B3ZQrWP++s+SyIiIiJSofh4OwCBH479wKncU1T3r07bam3P2c6aa8Nms4Md7JmZWH+Nx/hzP9b9joft6FGwWh1rg+x2MJsxKlfGVKUKRpUqmKpWwVS9OqbqNTCqV8NUrRpGaChGcDCG2Vyi15Qd1YMTVZZT+at/4pu4h6qf3Uta9IOkXfUw+F781EK78xqd66Dyfz39vf2s5wW+nums0M3nOXtxw65w7Glp7s/B8R6z2RwvWF4e9uxsyM7BnpONPTMLe2YGpGdgzzj9SEvDnp6OPT0Ne0Ym9owMyMzEnpWJPScH8qyOfvLyzvR7NpMJDMPxPs33MMwmMExgMhxfDeNMW5P7c8f3BmCceW5w5jlgnP7qYpzzieuYkvCnxa/E+pLzy8k5z3Tgc/xsyLfh/J17+0dDyb0lPWc2EzxlihcDEBEpeUqUyoH/HPoPADfVvgmz4Z6w5OXY+HtHKge2JnPyYKb7gfbKhJxKperJBKqdtBGcleX+e9JqxX70KNajR88fgGFgVKrkeAQGQGAQRmAAhp8l3wdSZ1x27LbTyYfNdvrh+OBsz82D3FzHh99cxwfgpLxqmE9ZITsNPv0YO59i8wnGbvi4jrc7+8mf/Jz9/CzJHr3Ccqnw8GNrhZHn7QBELpaPPk6IyKVHP9m87FD6IX5J+gUTJnrV7uXanpGSy87vjvP39lPk5dgKP9gwkRoSRWpIFPujbsE/0KBeUwv1mwcQFOqDPTcXe1IStsRE7ImJ2E6cwH78OLbjJ7AdO4Y9KckxYmC3Y09NxZ6aWirX6Ig+/1strfCGUrGYTI5E2s8Pw2LBsFjAYsEICsQICHR8DQzCCArCCA6CoCDH84AAjAB/jIAAsFjAx8eRiPv4uI/+GIZ7smy3O0azrFbsVscolGObDeynE267HWx24PR28iXdNptjNNbuTMLh9AbH9RTIwvJvuMBIw0VmbGFhYRfXgRRZcnKyZwc4//rkGkG8wLBNCY40esTbVUZN3hzOEhEpHUqUvOw/fztGk66udjU1/GsA8NdvKcSvOkJuliPFCLSlEn5gLeFHf8TPyMb32q749elNXmQTjv2RzpE9aRzbl05Whp3dP2ex++csal4RRFTbyoQ3DcfnPL/A7Hl5jiQpJQV7Wjr2jPTT06PSIScXuzXP8eE07/RNZF1TlwCT2TG9yWxyfMD19cPw9XV8cPbzBbOPYzTKxwwmM9hzCdz7CYF7V2LY8zAMyAuLJKvxLWRFdcduCXZMfTKdXjp39ofmfGrWrFlwulT+r27bjHyfcc5qC0V7fjZvfRgqY0cSEgpeq8nx711gmpoUW2hEhLdDuGxkJCR4OwQREakglCh5Ua4tl6/+/gqAPnX6kJtlJf4/R/jrV8fITph/Og22zCX0+E4MHx8sgwZiGTgQU3AwABYgqq0fUW0rY82zcWR3Gvu3JHNsXzpH9zoeASE+RLYJI7JNGAGVfAvEYPj4YFSpAlWqlMk157S6CmvKfQRvfYeAvZ9jse4laNdr2Pa9Q1ZUD7Ia3kx2nU5gOv9b06eM4i02mxXyssGa7SiRbrOCLQ/sVsf3dtuZr84H9tPfnx4RKewvxB7/1fji/srsl3jC/S/phgm7yQyGGUw+2M0WbH5B2P0qXfDfTERERKQiMex2b4/Xl63U1FRCQ0NJSUkhJCSkxPtP8OCvld8f+Z6Xfn2JqpaqzIx8ly0rj5CRnAsGNEj9H/V+/gCT3Ya5dWsCn3wCc/36Reo3LTGHA1uSORCfTE6GYyTIMEFE40pENA0mvFEwlkDvf6g1slMI2LWSoB2L8En507Xd6l+ZrAa9yK7blZxa7bH7BRc4NqK0/wKfnQanEiD1MJw6AplJkJUMmcmQlQLZqZB9yvHISYPczDOPvCxHQnSZsfv4Y/Wvgi04AmtwLayVapEXUo+8sAbkVW6I3VLy/79dKkr9/SwunvyMluIrjfd0af/+FhE5mxKlEubJL+FnNj9D/Ml47s0YRcC2utjtEOCbQ/MtswhN3IMRHIz/Y8Pw69WrWNOcrHk2Du88xb6fkjj5V75CEAZUrRNAjYZBVK4VQFgtf/yDvJg42W34HtlKwN5V+O/7AnNW4pldJh9ya7QmJ7wt1qCa2AKrYg2oTrXIFhBa1zG9r1jntEPaUUg6AIn7IXEfJP5x+us+RzJUkkw+rlEYTObTFdpMju8xzjw38lVlc05x9LSU1QXfK+fb7/7jIC8vz2274RoJs2LY8jCs2Rh5WUUKyxpYnbwqjcit2pzcak3Jrdoca2j906/B5U2JUtlRolQ2lCiJyKVAiVIJK+ov4d0pu3nm+/+j+55/UOvUFQCEZ++h8Y9v42PNwqd9ewKffgpTtWolElfK0SwObU/lyO40Uo5mF9gfEOJDSE0LlapaCK7iR3BVPwJDffELNOPrX3LrUWw2O7Y8Ozaro3qezWY/PQvNsd2am4spYRvmv+MxH9sFGUlY7T7Y8MFmN2HnzMOKBaulGlb/atgtIZh8/TH8/DH8AvD1M2Hxy8XfNxeLbw5BxgmCcg9gnDrsGCVKPgh5mecP1q8ShERApXAIrAr+YRAQ5vhqqQSWEMdXvyDwCwSfAPD1d3z1sYDZz/HV5FNh1zQV6f1szcXITceUk4Yp8wTmU4cxpx3GfOowPikH8En+A3N64ZUX7T7+5Fa+grwqjcmr0pjcKo3Iq3wFtsAaFfY1Kw4lSmVHiVLZUKIkIpcCrydKs2bNYsqUKSQkJNCiRQtmzJjBtddee8723333HSNHjmT79u3UqlWLf/3rXzzyyCNFPl95SJTWHlzHV//9iSsPXYfFGoiZPBrvXEjE0R/B35+AYcPwu7nvRSUnzn/WwvrISM4lYfcpTv6VSXJCFmknc87fmQF+AWZ8/EyYzAZmHwOT2cA4q0iEzWbHbnUkQa7H6aTIevq5N+s5+5BNiM9RQs0JhJoTqOx7mLDQPMKqWwioGY5RtSFUaeB4hNYBf/0iLqkPlUZOGj5Jf+Bz8nd8T+7E98ROfBN3nXM0yuYXQl7lhuSF1sNaqY7rkRdSx5FEXWKjUEqUyo4SpbKhRElELgVeXaiyZMkSnnjiCWbNmkWXLl2YPXs2vXv3ZseOHdSrV69A+/3799OnTx8efPBBPvjgA9avX8+wYcOoXr06/fv398IVeCY7K5ePvvgWtlehXV5vACqd+pMWO+YSmHkc3+u64v/ww5gL+QVjt9vJTk8jPfEk6UknSU88SUZSIpmpyWSmpJB9Kg1rRg52mw3D5hitMQwzZl8zJj8/TL4+mC1++Ab64xsUiCU4iIDgEKq0DcUvMIy8nGBysy1kpZtIT8wl7WQOWWl55GU7SirnZFhd651KkmGAYXIkXiYfRxJm9jFh8jmzzWQ+nZgZjsTPMEFAgD9mcjBb0zDlncLIy8Sem4MtNwd7Xi55eSayrP5k5/mTletPek4AeXYLiXn1SMzL995KAQ6CX4APYTUDCasZQOWaAVSqkk5QWB7Blf0JCrPga7m0PpiXNbtfMLk1W5NbszWucTybFXPqQXwTd+Fzcje+iXvwSdqDOfUgppxU/I5uxe/o1oJ9mXyxBkdgrVQba2B1bAFVsAVUxeZfBZt/Zcfz09/bfQMvuaRKREREyoZXR5Q6dOhAmzZteOutt1zbmjVrRr9+/Zg4cWKB9s888wyffvopO3fudG175JFH+OWXX9i4cWORzllaf5E6lZrCpq++Ji0tA7vVcEwrs0Jmqo2sZBN56QHYskMwTuemvrmJVEnZRFDmbuy1a5Pbti25oZXJysx1PLLzyMq2kpllIyvHTnaeQZ7hg90wA46vhmHGZJgwYcJkGDj2GPhixxfwNRyZsBnwxe743nBEYLJZMWHFsNkwyMVkt2K352Fgzbd8xoRhArvJDwwfR8Uz187T0/FMhqNEuGFg8rFjmE0YZgPD13BU9z5dIM0wGRhmu2OJjsmR7GB2lu0+vRbn7ArdZ22o5h+KxccCQJWqVU+3yX/cmfZnSoY7vthsdtJP5ZKWnEdqUg6nknNJTczhVGIOaSm5F/z3NZkNLP4m/PzN+Pmb8bWY8PUzub76+DofBmZfE+Z8I2/m06Nvzus2DMNVwdwwGfkqlp+J2e3KC7wuZymlKWrHM05yIvFkwR1nDwzaz2wz7GcK+DlvY+Qs4mez5msP2PJ3ZDi3O+6VZOScwshJxZSbjk9eOkZOGqbcNEx5aRh2KwaOzg1sGMbpE2DLdyuX0yOq2LCbfU9X6PPFbvhimH2wm3ywm30wDLPj/ynTmfVjdsOx//Qb1/G9yQz/397dB0VV7nEA/559YUHeX4J1A7lQTb6SCTr5UloX8d70otNMqdcuVjM1VJbIpGLlaDal4WTltTcLu93ecKZBp+54q8UURS0NpCS5SUViCjKWAQnC7p7n/gEcObuHtxX2kHw/M2dgn/Occ37728Muv/PsOQftl8HvuPqf1P47AEhS+9+m+lL2HVFo7eCBARZER4UDAMIjItr2d+XvoVN/zfv3eN7XSZLaky21JVMSou0Fgdsu0ot3fPUupXEPqe7ma6+xF30G1oUmF35rlNHgfr84b87pU73xqOeLTu0CQuP16/Q+1eOmevrjH1zixycqv3NEiYiuBLqNKLW2tqKkpAQ5OTmq9rS0NBw8eFBzmUOHDiEtLU3VNmvWLOTl5cHhcMBs9rz8dUtLC1paLp2T4/Eh2U++PnAIJwrDAYR32UcC8ItBxiF/J/5nDoC46lYAt7bNrOro5a+9sMHtccf/hl7zzJVCbp+cXXfpO62bd/btCWwM+h8m/34NAKDJi5vWSgCC26fOja5QEy7IwO8ugd/ltqlZBi62/3Sh7Ryq5gsuNF8Yalez0+stIgBAtE7b9qWOvwGNgpQGiPubqbe8ex+7UrkgED9e7yiIiPqXboXSuXPn4HK52m4c2klMTAxqa2s1l6mtrdXs73Q6ce7cOc0jWOvXr8dTTz3Vf4F3wWCU4ISADMAlibZ/riWg0SCjzujCWZMLdSYXzhvaRmz82o87GiQZBkmGsf2n2eCA2eCEn9EBs8EBi7FVmfyMDpgMl/pL7UeLBSQIIUEWEpzCCKdsgkM2wSmb4BIGuGQjXMIIp2yASxjhEoa2ebIBsmhvk42QIUEWBshCar9wQtt6O362bQsAJI3b+XR/qFP0w6FQWTjRIl+6AIN6xEnSiMK9TTsGSZIQaAACDYB675IghIATgEN4Ts7OEwCXaJ8AyKK93hSX6k6BtoPxHTWu6t8soV1KXq7LWY9Dkttff+11Kj8lQLQdO780SR2/t/1NCKkjB0LzOLzW6wYoAyJoG7u59HpKnQLQHq/RerV7vw+KHjIndYwWqJbpG7PkQjA6ztFShtS84p5VAal9n9Ie9VAv21fdZ3qwlg0uYYQThkEb3+XSe7BJ1nn7REQDQfeb6bhfbEAI0e1FDLT6a7V3WLVqFbKzs5XHDQ0NiIuL8zbcLk1Jm4UpaTxR2Fd48rtvcH/2De7PvsN9moiIeku3QikqKgpGo9Fj9Kiurs5j1KiD1WrV7G8ymRDZfs6KO4vFAovF0j9BExERERHRkNBfX9buMz8/PyQnJ8Nut6va7XY7pkyZornM5MmTPfp/9tlnSElJ0Tw/iYiIiIiIyBu6FUoAkJ2djTfffBPbtm1DRUUFli1bhurqauW+SKtWrUJGRobSPzMzEydPnkR2djYqKiqwbds25OXl4bHHHtPrKRARERER0RVI13OU5s+fj19++QXr1q1DTU0Nxo4di127diE+Ph5A23fJq6urlf4JCQnYtWsXli1bhpdffhk2mw2bN2/+Q9xDiYiIiIiI/jh0vY+SHgb6Pgw8Udg3ePK7b3B/9g3uz77Dfdo3eB8lIroS6PrVOyIiIiIiosGIhRIREREREZEbFkpERERERERuWCgRERERERG5YaFERERERETkhoUSERERERGRGxZKREREREREblgoERERERERuWGhRERERERE5MakdwC+JoQA0HaH74HQ2Ng4IOsltcDAQL1DGBK4P/sG92ff4T7tGwOxT3d8bnd8jhMRDbQhVyh1fEjGxcXpHAkRERH1VWNjI0JDQ/UOg4iGAEkMsUMzsizjzJkzCA4OhiRJ/bruhoYGxMXF4dSpUwgJCenXdV/JmDfvMXfeYd68x9x5h3nzTue8BQcHo7GxETabDQYDzxwgooE35EaUDAYDYmNjB3QbISEh/CD0AvPmPebOO8yb95g77zBv3unIG0eSiMiXeEiGiIiIiIjIDQslIiIiIiIiNyyU+pHFYsGaNWtgsVj0DuUPhXnzHnPnHebNe8ydd5g37zBvRKSnIXcxByIiIiIiop5wRImIiIiIiMgNCyUiIiIiIiI3LJSIiIiIiIjcsFAiIiIiIiJyw0Kpn7zyyitISEiAv78/kpOTsX//fr1DGlTWr1+PiRMnIjg4GNHR0Zg3bx6+++47VR8hBNauXQubzYaAgADMmDED3377rU4RD17r16+HJEnIyspS2pg7badPn8bdd9+NyMhIDBs2DOPHj0dJSYkyn3nT5nQ68eSTTyIhIQEBAQFITEzEunXrIMuy0oe5A/bt24e//e1vsNlskCQJO3fuVM3vTY5aWlrwyCOPICoqCoGBgUhPT8fPP//sw2ehj+5y53A4sHLlSowbNw6BgYGw2WzIyMjAmTNnVOsYqrkjIt9hodQPtm/fjqysLDzxxBM4evQobr75Zvz1r39FdXW13qENGkVFRXj44YfxxRdfwG63w+l0Ii0tDRcuXFD65ObmYtOmTdiyZQuOHDkCq9WKmTNnorGxUcfIB5cjR45g69atSEpKUrUzd57Onz+PqVOnwmw247///S+OHz+O559/HmFhYUof5k3bc889h9deew1btmxBRUUFcnNzsXHjRvzzn/9U+jB3wIULF3DDDTdgy5YtmvN7k6OsrCzs2LED+fn5KC4uxu+//445c+bA5XL56mnoorvcNTU1obS0FKtXr0ZpaSkKCgpw4sQJpKenq/oN1dwRkQ8JumyTJk0SmZmZqraRI0eKnJwcnSIa/Orq6gQAUVRUJIQQQpZlYbVaxYYNG5Q+Fy9eFKGhoeK1117TK8xBpbGxUVx33XXCbreL6dOni6VLlwohmLuurFy5UkybNq3L+cxb12bPni3uu+8+Vdsdd9wh7r77biEEc6cFgNixY4fyuDc5+u2334TZbBb5+flKn9OnTwuDwSA++eQTn8WuN/fcaTl8+LAAIE6ePCmEYO6IyDc4onSZWltbUVJSgrS0NFV7WloaDh48qFNUg199fT0AICIiAgBQVVWF2tpaVR4tFgumT5/OPLZ7+OGHMXv2bKSmpqramTttH330EVJSUnDnnXciOjoaN954I9544w1lPvPWtWnTpmH37t04ceIEAODrr79GcXExbr/9dgDMXW/0JkclJSVwOByqPjabDWPHjmUe3dTX10OSJGVEmLkjIl8w6R3AH925c+fgcrkQExOjao+JiUFtba1OUQ1uQghkZ2dj2rRpGDt2LAAoudLK48mTJ30e42CTn5+P0tJSHDlyxGMec6ftxx9/xKuvvors7Gw8/vjjOHz4MB599FFYLBZkZGQwb91YuXIl6uvrMXLkSBiNRrhcLjzzzDNYuHAhAO5zvdGbHNXW1sLPzw/h4eEeffj5ccnFixeRk5ODv//97wgJCQHA3BGRb7BQ6ieSJKkeCyE82qjNkiVL8M0336C4uNhjHvPo6dSpU1i6dCk+++wz+Pv7d9mPuVOTZRkpKSl49tlnAQA33ngjvv32W7z66qvIyMhQ+jFvnrZv3453330X77//PsaMGYOysjJkZWXBZrNh8eLFSj/mrmfe5Ih5vMThcGDBggWQZRmvvPJKj/2ZOyLqT/zq3WWKioqC0Wj0OIJVV1fncSSRgEceeQQfffQR9uzZg9jYWKXdarUCAPOooaSkBHV1dUhOTobJZILJZEJRURE2b94Mk8mk5Ie5Uxs+fDhGjx6tahs1apRykRXuc11bvnw5cnJysGDBAowbNw7/+Mc/sGzZMqxfvx4Ac9cbvcmR1WpFa2srzp8/32WfoczhcOCuu+5CVVUV7Ha7MpoEMHdE5BsslC6Tn58fkpOTYbfbVe12ux1TpkzRKarBRwiBJUuWoKCgAJ9//jkSEhJU8xMSEmC1WlV5bG1tRVFR0ZDP45///GccO3YMZWVlypSSkoJFixahrKwMiYmJzJ2GqVOnelyC/sSJE4iPjwfAfa47TU1NMBjUHw9Go1G5PDhz17Pe5Cg5ORlms1nVp6amBuXl5UM+jx1FUmVlJQoLCxEZGamaz9wRkU/odRWJK0l+fr4wm80iLy9PHD9+XGRlZYnAwEDx008/6R3aoPHggw+K0NBQsXfvXlFTU6NMTU1NSp8NGzaI0NBQUVBQII4dOyYWLlwohg8fLhoaGnSMfHDqfNU7IZg7LYcPHxYmk0k888wzorKyUrz33nti2LBh4t1331X6MG/aFi9eLK6++mrxn//8R1RVVYmCggIRFRUlVqxYofRh7tquRHn06FFx9OhRAUBs2rRJHD16VLkyW29ylJmZKWJjY0VhYaEoLS0Vt912m7jhhhuE0+nU62n5RHe5czgcIj09XcTGxoqysjLVZ0ZLS4uyjqGaOyLyHRZK/eTll18W8fHxws/PT0yYMEG57DW1AaA5vfXWW0ofWZbFmjVrhNVqFRaLRdxyyy3i2LFj+gU9iLkXSsydto8//liMHTtWWCwWMXLkSLF161bVfOZNW0NDg1i6dKkYMWKE8Pf3F4mJieKJJ55Q/ZPK3AmxZ88ezfe1xYsXCyF6l6Pm5maxZMkSERERIQICAsScOXNEdXW1Ds/Gt7rLXVVVVZefGXv27FHWMVRzR0S+IwkhhO/Gr4iIiIiIiAY/nqNERERERETkhoUSERERERGRGxZKREREREREblgoERERERERuWGhRERERERE5IaFEhERERERkRsWSkRERERERG5YKBEREREREblhoUREl23t2rUYP368bttfvXo1HnjgAeXxjBkzkJWVpVs83Zk4cSIKCgr0DoOIiIh6wEKJiLolSVK30z333IPHHnsMu3fv1iW+s2fP4qWXXsLjjz+uy/b7avXq1cjJyYEsy3qHQkRERN1goURE3aqpqVGmF198ESEhIaq2l156CUFBQYiMjNQlvry8PEyePBl/+tOfdNl+Z62trT32mT17Nurr6/Hpp5/6ICIiIiLyFgslIuqW1WpVptDQUEiS5NHm/tW7e+65B/PmzcOzzz6LmJgYhIWF4amnnoLT6cTy5csRERGB2NhYbNu2TbWt06dPY/78+QgPD0dkZCTmzp2Ln376qdv48vPzkZ6e7tEuyzJWrFiBiIgIWK1WrF27VjW/uroac+fORVBQEEJCQnDXXXfh7NmzHs+hs6ysLMyYMUN5PGPGDCxZsgTZ2dmIiorCzJkzAbR9FXHEiBGwWCyw2Wx49NFHlWWMRiNuv/12fPDBB90+LyIiItIXCyUiGhCff/45zpw5g3379mHTpk1Yu3Yt5syZg/DwcHz55ZfIzMxEZmYmTp06BQBoamrCrbfeiqCgIOzbtw/FxcUICgrCX/7yly5Has6fP4/y8nKkpKR4zHv77bcRGBiIL7/8Erm5uVi3bh3sdjsAQAiBefPm4ddff0VRURHsdjt++OEHzJ8/v8/P8+2334bJZMKBAwfw+uuv48MPP8QLL7yA119/HZWVldi5cyfGjRunWmbSpEnYv39/n7dFREREvmPSOwAiujJFRERg8+bNMBgMuP7665Gbm4umpiblXKJVq1Zhw4YNOHDgABYsWID8/HwYDAa8+eabkCQJAPDWW28hLCwMe/fuRVpamsc2Tp48CSEEbDabx7ykpCSsWbMGAHDddddhy5Yt2L17N2bOnInCwkJ88803qKqqQlxcHADgnXfewZgxY3DkyBFMnDix18/z2muvRW5urvJ4165dsFqtSE1NhdlsxogRIzBp0iTVMldffTWqq6shyzIMBh6vIiIiGoz4CU1EA2LMmDGqIiAmJkY1smI0GhEZGYm6ujoAQElJCb7//nsEBwcjKCgIQUFBiIiIwMWLF/HDDz9obqO5uRkA4O/v7zEvKSlJ9Xj48OHKtioqKhAXF6cUSQAwevRohIWFoaKiok/P0300684770RzczMSExNx//33Y8eOHXA6nao+AQEBkGUZLS0tfdoWERER+Q5HlIhoQJjNZtVjSZI02zqu/ibLMpKTk/Hee+95rOuqq67S3EZUVBSAtq/guffpbltCCGXUqrPO7QaDAUII1XyHw+GxTGBgoOpxXFwcvvvuO9jtdhQWFuKhhx7Cxo0bUVRUpMT066+/YtiwYQgICNB8XkRERKQ/jigR0aAwYcIEVFZWIjo6Gtdee61qCg0N1VzmmmuuQUhICI4fP96nbY0ePRrV1dXK+VEAcPz4cdTX12PUqFEA2oqzmpoa1XJlZWW9Wn9AQADS09OxefNm7N27F4cOHcKxY8eU+eXl5ZgwYUKfYiYiIiLfYqFERIPCokWLEBUVhblz52L//v2oqqpCUVERli5dip9//llzGYPBgNTUVBQXF/dpW6mpqUhKSsKiRYtQWlqKw4cPIyMjA9OnT1e+Snfbbbfhq6++wr///W9UVlZizZo1KC8v73Hd//rXv5CXl4fy8nL8+OOPeOeddxAQEID4+Hilz/79+zXPuSIiIqLBg4USEQ0Kw4YNw759+zBixAjccccdGDVqFO677z40NzcjJCSky+UeeOAB5Ofn9+kGrpIkYefOnQgPD8ctt9yC1NRUJCYmYvv27UqfWbNmYfXq1VixYgUmTpyIxsZGZGRk9LjusLAwvPHGG5g6dSqSkpKwe/dufPzxx8p9pk6fPo2DBw/i3nvv7XW8RERE5HuScP8SPhHRH4gQAjfddBOysrKwcOFCvcPp0fLly1FfX4+tW7fqHQoRERF1gyNKRPSHJkkStm7d6nFlucEqOjoaTz/9tN5hEBERUQ84okREREREROSGI0pERERERERuWCgRERERERG5YaFERERERETkhoUSERERERGRGxZKREREREREblgoERERERERuWGhRERERERE5IaFEhERERERkRsWSkRERERERG7+D9JM/EfrgaVKAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure()\n", + "fig.subplots(1)\n", + "pd.concat([table_1, table_2, table_3, table_4, table_5]).plot(ax=fig.axes[0],color=['C1', 'C2', 'C5', 'C3', 'C6', 'C8', 'C0', 'C4'])\n", + "plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))\n", + "plt.xlabel('Time (hours)')\n", + "plt.ylabel('State probability')\n", + "fig.axes[0].axvspan(0., dur_tnf-1, facecolor='0.9')\n", + "fig.axes[0].axvspan(dur_tnf+dur_no_tnf-2, dur_tnf+dur_no_tnf+dur_tnf-3, facecolor='0.9')\n", + "fig.axes[0].axvspan(dur_tnf+dur_no_tnf+dur_tnf+dur_no_tnf-4, dur_tnf+dur_no_tnf+dur_tnf+dur_no_tnf+dur_tnf-5, facecolor='0.9')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To conclude this last part, with pulsative treatments we can observe a behaviour which couldn't be seen with a permanent treatment : the population of cells surviving the TNF treatment (resistant cells) can be destroyed by the alternance of treatment and pauses. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.2" + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} diff --git a/sample_projects_intracellular/boolean/tutorial/scripts/Cell_cycle_analysis.ipynb b/sample_projects_intracellular/boolean/tutorial/scripts/Cell_cycle_analysis.ipynb new file mode 100644 index 000000000..7a04eb8cc --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/scripts/Cell_cycle_analysis.ipynb @@ -0,0 +1,1425 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "3cfd0747-bf47-4b03-8a8c-3b1cc4118158", + "metadata": {}, + "source": [ + "# Analysis of the PhysiBoSS cell cycle model \n", + "\n", + "In this notebook, we will analyse the results of the cell cycle model built with PhysiBoSS by introducing the Sizek model as an intracellular model controlling the transitions between the phases of the PhysiCell cell cycle. " + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "28c2a1b2", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:11.960258Z", + "iopub.status.busy": "2024-06-07T17:38:11.959928Z", + "iopub.status.idle": "2024-06-07T17:38:14.371096Z", + "shell.execute_reply": "2024-06-07T17:38:14.370603Z", + "shell.execute_reply.started": "2024-06-07T17:38:11.960221Z" + } + }, + "outputs": [], + "source": [ + "import pcdl as pc\n", + "import pandas as pd\n", + "import os\n", + "import seaborn as sb\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "from tqdm.notebook import tqdm" + ] + }, + { + "cell_type": "markdown", + "id": "8541ac53-67f7-4998-94cb-5ff28a21f2df", + "metadata": {}, + "source": [ + "To run these simulation, you need to first run the model, populating the output directory with the simulation results.\n", + "In order to get better statistics for this notebook, we used a larger initial population of cells (71), as well as a larger simulation time (5 days). \n", + "To produce these results, run the model using the XML settings file **PhysiCell_settings_notebook.xml**." + ] + }, + { + "cell_type": "markdown", + "id": "a8fbd03b-05f1-4163-ade3-a30ef78e2a5c", + "metadata": {}, + "source": [ + "## Loading simulation results" + ] + }, + { + "cell_type": "markdown", + "id": "4ebcd1f2-c317-4b78-a772-2a479ef8acd8", + "metadata": {}, + "source": [ + "After setting the relative output path, we create the list of XML output files that we need to load. " + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "59d0497d", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:14.372085Z", + "iopub.status.busy": "2024-06-07T17:38:14.371790Z", + "iopub.status.idle": "2024-06-07T17:38:14.377658Z", + "shell.execute_reply": "2024-06-07T17:38:14.376885Z", + "shell.execute_reply.started": "2024-06-07T17:38:14.372065Z" + } + }, + "outputs": [], + "source": [ + "path = \"../../../../output\"\n", + "xml_files = []\n", + "\n", + "for folder, cose, files in os.walk(path):\n", + " for name in files:\n", + " if name.endswith(\".xml\") & name.startswith(\"output\"):\n", + " xml_files.append(name)\n", + " \n", + "xml_files.sort()" + ] + }, + { + "cell_type": "markdown", + "id": "cbdd1fee-f912-488c-8595-374fde6bb1ce", + "metadata": {}, + "source": [ + "Aside from the total length of the cell cycle, we are interested in the duration of phases, so we will print the phase names instead of their PhysiCell code" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "21363263", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:14.378608Z", + "iopub.status.busy": "2024-06-07T17:38:14.378428Z", + "iopub.status.idle": "2024-06-07T17:38:14.381830Z", + "shell.execute_reply": "2024-06-07T17:38:14.381282Z", + "shell.execute_reply.started": "2024-06-07T17:38:14.378591Z" + } + }, + "outputs": [], + "source": [ + "phase_dict = {4: \"G0G1_phase\", 10: \"S_phase\", 11: \"G2M_phase\", 100: \"apoptotic\"}" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "9eda6fcd", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:14.382665Z", + "iopub.status.busy": "2024-06-07T17:38:14.382496Z", + "iopub.status.idle": "2024-06-07T17:38:23.401952Z", + "shell.execute_reply": "2024-06-07T17:38:23.400832Z", + "shell.execute_reply.started": "2024-06-07T17:38:14.382649Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "529056994749455bb2a09e3b932fc1b9", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/21 [00:00" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from scipy.optimize import curve_fit\n", + "import matplotlib.pyplot as plt\n", + "from sklearn.metrics import r2_score\n", + "\n", + "N0 = data[\"phase\"][0]\n", + "\n", + "# Exponential growth model\n", + "def exp_growth_model(t, r):\n", + " return N0 * np.exp(r * t)\n", + "\n", + "# Fit the model to the data\n", + "popt, pcov = curve_fit(exp_growth_model, data.index, data['phase'], p0=[0.01])\n", + "\n", + "# Use the optimized parameters to calculate the fitted values\n", + "fitted_values = exp_growth_model(data.index, *popt)\n", + "\n", + "# Calculate R^2 using the r2_score function from sklearn.metrics\n", + "R_squared = r2_score(data['phase'], fitted_values)\n", + "\n", + "# Extract the fitted parameter (only r in this case)\n", + "r_fitted = popt[0]\n", + "\n", + "# Calculate the average division time based on the fitted growth rate\n", + "average_division_time = np.log(2) / r_fitted\n", + "\n", + "print(f\"Known initial number of cells (N0): {N0}\")\n", + "print(f\"Estimated growth rate (r): {r_fitted:.4g} per time unit (R2={R_squared:.3f})\")\n", + "# print(f\"Average Division Time (cell cycle duration): {average_division_time} time units\")\n", + "print(f\"Average cell cycle duration: {(average_division_time/60):.2f} hours\")\n", + "# print(R_squared)\n", + "# Plot the data and the fit\n", + "plt.scatter(data.index, data['phase'], label='Data')\n", + "plt.plot(data.index, exp_growth_model(data.index, r_fitted), label='Fit', color='red')\n", + "plt.xlabel('Time Step')\n", + "plt.ylabel('Cell Count')\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "id": "e09c3089-532c-4505-ac93-e9806797ddf8", + "metadata": {}, + "source": [ + "This part was used to find the proper value for our scaling parameter. By entering desired duration of our cell cycle, we can compute the adjusted scaling value in order to obtain it. " + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "05836b13", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:23.816388Z", + "iopub.status.busy": "2024-06-07T17:38:23.816022Z", + "iopub.status.idle": "2024-06-07T17:38:23.823354Z", + "shell.execute_reply": "2024-06-07T17:38:23.822451Z", + "shell.execute_reply.started": "2024-06-07T17:38:23.816368Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Correction Factor: 1.9245900201199895e-08\n", + "Corrected Scaling Factor: 7.698360080479958e-07\n" + ] + } + ], + "source": [ + "# Known values\n", + "desired_cell_cycle_duration_hours = 24 # hours\n", + "observed_average_cell_cycle_duration_hours = average_division_time/60 # hours\n", + "current_scaling_factor = 40\n", + "\n", + "# Compute the correction factor\n", + "correction_factor = desired_cell_cycle_duration_hours / observed_average_cell_cycle_duration_hours\n", + "\n", + "# Apply the correction factor to the current scaling factor\n", + "corrected_scaling_factor = current_scaling_factor * correction_factor\n", + "\n", + "print(f\"Correction Factor: {correction_factor}\")\n", + "print(f\"Corrected Scaling Factor: {corrected_scaling_factor}\")" + ] + }, + { + "cell_type": "markdown", + "id": "15d978bb-3bb5-4e24-b404-0154fa0c12f4", + "metadata": {}, + "source": [ + "## Analysis of phases durations\n", + "\n", + "Once the data is loaded, we can look at the distribution of phases duration, and their average value." + ] + }, + { + "cell_type": "markdown", + "id": "a216db66-f6e0-4ae3-987a-f1f952f1fb09", + "metadata": {}, + "source": [ + "First, we need to compute the average durations of each phase. Since what we obtain at each time point is the duration of the phase at that time point, we only need to keep the last timepoint for each phase. " + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "46f2cad2", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:23.824885Z", + "iopub.status.busy": "2024-06-07T17:38:23.824527Z", + "iopub.status.idle": "2024-06-07T17:38:23.831310Z", + "shell.execute_reply": "2024-06-07T17:38:23.830376Z", + "shell.execute_reply.started": "2024-06-07T17:38:23.824858Z" + } + }, + "outputs": [], + "source": [ + "def filter_duration(full_data, phase, ID):\n", + " df = full_data[(full_data.phase == phase) & (full_data.ID == ID)]\n", + " df2 = df.copy()\n", + "\n", + " for i in range(1, len(df[\"duration\"])):\n", + " index_prev = df[\"duration\"].index[i - 1]\n", + " index = df[\"duration\"].index[i]\n", + " if df[\"duration\"][index] > df[\"duration\"][index_prev]:\n", + " df2.drop([index_prev], inplace=True)\n", + " return df2" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "13171806", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:23.832651Z", + "iopub.status.busy": "2024-06-07T17:38:23.832289Z", + "iopub.status.idle": "2024-06-07T17:38:30.684785Z", + "shell.execute_reply": "2024-06-07T17:38:30.684225Z", + "shell.execute_reply.started": "2024-06-07T17:38:23.832623Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "43ac4cf3649e44cdab7843e0c06e12fa", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/486 [00:00" + ] + }, + "execution_count": 10, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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hyVJx44dU2JiotatW6d69erp5ptv1syZM9W6desKHc8lFQp8CxYsqNROAADAz0tOTo7WrVun559/3i3s/ZjNZlN6errOnz+vmJgYV3uLFi3UuXNnbd26VQMGDNDy5ct1/vx5/f73vy9zO560f/9+vfvuu/rggw+Ul5enUaNGacyYMW5PIlm/fr2aN2+u9evXa//+/Ro+fLhuuOEGPfbYY5KkwsJCPffcc7r22muVnZ2t8ePHa+TIkVqzZo0kadKkSdq9e7c++ugjhYSEaP/+/Tp79qwk6cyZM7rtttsUHR2tTZs2qX79+vrjH/+oO++8U1988YXsdnuFj6lSX60GAABwJfv375dlWbr22mvd2kNCQnTu3DlJ0pgxY9S1a1fZ7XZdddVVbv1CQ0OVlZUlSfrmm28UFBSksLAw1/vLly93u/K4bds2denSxSO1nzt3Tm+//bbrM4SvvvqqBg8erNTUVFcNV111lWbPni0fHx916NBBgwcP1r///W9X4HvkkUdc22vTpo1mzZqlHj166PTp02rUqJEyMzN14403qnv37pLkNnO3dOlS1atXT2+99ZYrzC5YsECNGzfWhg0b3MJxeVXosSwAAAAVcfns23//+1/t3LlTnTp1uuJn/y//utbLtzNgwADt3LlTH374ofLz81VUVOSxmlu1auV2w0ivXr1UXFysvXv3uto6derk+nyhJDVv3lzZ2dmu1xkZGRoyZIgiIiIUGBiovn37SpIyMzMlSU888YSWLl2qG264Qb///e+1detW17rp6enav3+/AgMD1ahRIzVq1EjBwcE6d+6cDhw4UKljYoYPAAB4XLt27WSz2fT111+7tbdp00aS1KBBA0lSWFiYCgsL9cMPP7jN8mVnZ6t3796SpGuuuUa5ubnKyspyzbA1atRI7dq1u+LTQzzlUtj8cei89Fm9H/cpLi6WJOXn5ysmJkYxMTF655131LRpU2VmZmrAgAEqLCyUdPHZxUeOHNGHH36of/3rX7r99ts1ZswYvfzyyyouLlZUVFSpX2bRtGnTSh0DM3wAAMDjmjRpojvuuEOzZ89Wfn5+mf2ioqLk6+urtLQ0V5vT6dSXX37pCny//OUv5evrqxdffLHa65YuzsJ99913rtfbtm1TvXr11L59+3Kt//XXX+v48eN64YUXFB0drQ4dOrjN/l3StGlTjRw50nWD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p59KkmbOnKlevXrpsccek9PplNPpVHh4eIntpqen6/7779cDDzygXbt2acqUKZo0aZIrcF6Smpqq7t27KyMjQ6NHj9YTTzyhr7/+ulLnBABQfvW9XQCAKzt9+rTmzZunRYsW6Y477pAkvf3222rZsmWFt5WQkKBhw4a5tSUlJbn+PW7cOK1du1bvvfeeevbsKYfDIbvdroCAAIWFhZW53enTp+v222/XpEmTJEnt27fX7t279dJLL2nkyJGufoMGDdLo0aMlXQyfr7zyijZs2KAOHTpU+FgAAOXHDB9Qyx04cECFhYXq1auXqy04OFjXXntthbfVvXt3t9dFRUX605/+pOuvv15NmjRRo0aNtG7dOmVmZlZou3v27FGfPn3c2vr06aN9+/apqKjI1Xb99de7/m2z2RQWFqbs7OwKHwcAoGKY4QNqOcuyfrKPzWYr0a+0mzIaNmzo9jo1NVWvvPKKZsyYoS5duqhhw4ZKSEhQYWFhhWu8/AaO0ur29fUtUXdxcXGF9gUAqDhm+IBarl27dvL19dUnn3ziavvhhx/0zTffuF43bdpUTqfT9Xrfvn06c+bMT2578+bNGjJkiH7zm9+oa9euatOmjfbt2+fWx263u83Slea6667Tli1b3Nq2bt2q9u3by8fH5yfrAABUL2b4gFquUaNGGjVqlJ566ik1adJEoaGhmjhxourV+7+/1/r166fZs2frpptuUnFxsSZMmFBiNq007dq10/Lly7V161ZdddVVmj59urKystSxY0dXn9atW+vTTz/V4cOH1ahRIwUHB5fYzpNPPqlf/OIXeu655zR8+HBt27ZNs2fP1pw5czxzEgAAVcIMH1AHvPTSS7rlllt0zz33qH///rr55psVFRXlej81NVXh4eG65ZZb9OCDDyopKUkBAQE/ud1JkyapW7duGjBggPr27auwsDANHTrUrU9SUpJ8fHx03XXXqWnTpqV+vq9bt2569913tXTpUnXu3FnPPvuspk2b5nbDBgDAe2xWeT4gBAAAgDqLGT4AAADDEfgAAAAMR+ADAAAwHIEPAADAcAQ+AAAAwxH4AAAADEfgAwAAMByBDwAAwHAEPgAAAMMR+AAAAAxH4AMAADAcgQ8AAMBw/x8RkrHZenrYkQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "palette = ['purple', 'dodgerblue', 'orange']\n", + "sb.displot(filtered_data, x=\"duration\", kind=\"kde\", hue='phase', fill=True, bw_adjust=.25, palette=palette)\n", + "plt.axvline(x=filtered_data[(filtered_data.phase == \"G2M_phase\")][\"duration\"].mean(),\n", + " color='orange')\n", + "plt.axvline(x=filtered_data[(filtered_data.phase == \"G0G1_phase\")][\"duration\"].mean(),\n", + " color='purple')\n", + "plt.axvline(x=filtered_data[(filtered_data.phase == \"S_phase\")][\"duration\"].mean(),\n", + " color='dodgerblue')" + ] + }, + { + "cell_type": "markdown", + "id": "dba1dcf5-5cf2-4747-8010-0dc357a02287", + "metadata": {}, + "source": [ + "We can see that some cell cycles phases can get very long, most likely due to incomplete cycles in the Sizek model. However, they are very rare cases, and most of the distribution has coherent values. We can filter out durations above 1000 minutes to have a better look at the distributions." + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "c508e181", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:31.021966Z", + "iopub.status.busy": "2024-06-07T17:38:31.021759Z", + "iopub.status.idle": "2024-06-07T17:38:31.028347Z", + "shell.execute_reply": "2024-06-07T17:38:31.027357Z", + "shell.execute_reply.started": "2024-06-07T17:38:31.021948Z" + } + }, + "outputs": [], + "source": [ + "filtered_data_duration = filtered_data[filtered_data['duration'].abs() < 1000]" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "ef2b61e5", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:31.029601Z", + "iopub.status.busy": "2024-06-07T17:38:31.029281Z", + "iopub.status.idle": "2024-06-07T17:38:31.293009Z", + "shell.execute_reply": "2024-06-07T17:38:31.292340Z", + "shell.execute_reply.started": "2024-06-07T17:38:31.029574Z" + } + }, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/tmp/ipykernel_127996/1160040058.py:2: UserWarning: The palette list has more values (3) than needed (1), which may not be intended.\n", + " sb.displot(filtered_data_duration, x=\"duration\", kind=\"kde\", hue='phase', fill=True, bw_adjust=.25, palette=palette)\n", + "/tmp/ipykernel_127996/1160040058.py:2: UserWarning: Dataset has 0 variance; skipping density estimate. Pass `warn_singular=False` to disable this warning.\n", + " sb.displot(filtered_data_duration, x=\"duration\", kind=\"kde\", hue='phase', fill=True, bw_adjust=.25, palette=palette)\n" + ] + }, + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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hyVJx44dU2JiotatW6d69erp5ptv1syZM9W6desKHc8lFQp8CxYsqNROAADAz0tOTo7WrVun559/3i3s/ZjNZlN6errOnz+vmJgYV3uLFi3UuXNnbd26VQMGDNDy5ct1/vx5/f73vy9zO560f/9+vfvuu/rggw+Ul5enUaNGacyYMW5PIlm/fr2aN2+u9evXa//+/Ro+fLhuuOEGPfbYY5KkwsJCPffcc7r22muVnZ2t8ePHa+TIkVqzZo0kadKkSdq9e7c++ugjhYSEaP/+/Tp79qwk6cyZM7rtttsUHR2tTZs2qX79+vrjH/+oO++8U1988YXsdnuFj6lSX60GAABwJfv375dlWbr22mvd2kNCQnTu3DlJ0pgxY9S1a1fZ7XZdddVVbv1CQ0OVlZUlSfrmm28UFBSksLAw1/vLly93u/K4bds2denSxSO1nzt3Tm+//bbrM4SvvvqqBg8erNTUVFcNV111lWbPni0fHx916NBBgwcP1r///W9X4HvkkUdc22vTpo1mzZqlHj166PTp02rUqJEyMzN14403qnv37pLkNnO3dOlS1atXT2+99ZYrzC5YsECNGzfWhg0b3MJxeVXosSwAAAAVcfns23//+1/t3LlTnTp1uuJn/y//utbLtzNgwADt3LlTH374ofLz81VUVOSxmlu1auV2w0ivXr1UXFysvXv3uto6derk+nyhJDVv3lzZ2dmu1xkZGRoyZIgiIiIUGBiovn37SpIyMzMlSU888YSWLl2qG264Qb///e+1detW17rp6enav3+/AgMD1ahRIzVq1EjBwcE6d+6cDhw4UKljYoYPAAB4XLt27WSz2fT111+7tbdp00aS1KBBA0lSWFiYCgsL9cMPP7jN8mVnZ6t3796SpGuuuUa5ubnKyspyzbA1atRI7dq1u+LTQzzlUtj8cei89Fm9H/cpLi6WJOXn5ysmJkYxMTF655131LRpU2VmZmrAgAEqLCyUdPHZxUeOHNGHH36of/3rX7r99ts1ZswYvfzyyyouLlZUVFSpX2bRtGnTSh0DM3wAAMDjmjRpojvuuEOzZ89Wfn5+mf2ioqLk6+urtLQ0V5vT6dSXX37pCny//OUv5evrqxdffLHa65YuzsJ99913rtfbtm1TvXr11L59+3Kt//XXX+v48eN64YUXFB0drQ4dOrjN/l3StGlTjRw50nWD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p59KkmbOnKlevXrpsccek9PplNPpVHh4eIntpqen6/7779cDDzygXbt2acqUKZo0aZIrcF6Smpqq7t27KyMjQ6NHj9YTTzyhr7/+ulLnBABQfvW9XQCAKzt9+rTmzZunRYsW6Y477pAkvf3222rZsmWFt5WQkKBhw4a5tSUlJbn+PW7cOK1du1bvvfeeevbsKYfDIbvdroCAAIWFhZW53enTp+v222/XpEmTJEnt27fX7t279dJLL2nkyJGufoMGDdLo0aMlXQyfr7zyijZs2KAOHTpU+FgAAOXHDB9Qyx04cECFhYXq1auXqy04OFjXXntthbfVvXt3t9dFRUX605/+pOuvv15NmjRRo0aNtG7dOmVmZlZou3v27FGfPn3c2vr06aN9+/apqKjI1Xb99de7/m2z2RQWFqbs7OwKHwcAoGKY4QNqOcuyfrKPzWYr0a+0mzIaNmzo9jo1NVWvvPKKZsyYoS5duqhhw4ZKSEhQYWFhhWu8/AaO0ur29fUtUXdxcXGF9gUAqDhm+IBarl27dvL19dUnn3ziavvhhx/0zTffuF43bdpUTqfT9Xrfvn06c+bMT2578+bNGjJkiH7zm9+oa9euatOmjfbt2+fWx263u83Slea6667Tli1b3Nq2bt2q9u3by8fH5yfrAABUL2b4gFquUaNGGjVqlJ566ik1adJEoaGhmjhxourV+7+/1/r166fZs2frpptuUnFxsSZMmFBiNq007dq10/Lly7V161ZdddVVmj59urKystSxY0dXn9atW+vTTz/V4cOH1ahRIwUHB5fYzpNPPqlf/OIXeu655zR8+HBt27ZNs2fP1pw5czxzEgAAVcIMH1AHvPTSS7rlllt0zz33qH///rr55psVFRXlej81NVXh4eG65ZZb9OCDDyopKUkBAQE/ud1JkyapW7duGjBggPr27auwsDANHTrUrU9SUpJ8fHx03XXXqWnTpqV+vq9bt2569913tXTpUnXu3FnPPvuspk2b5nbDBgDAe2xWeT4gBAAAgDqLGT4AAADDEfgAAAAMR+ADAAAwHIEPAADAcAQ+AAAAwxH4AAAADEfgAwAAMByBDwAAwHAEPgAAAMMR+AAAAAxH4AMAADAcgQ8AAMBw/x8RkrHZenrYkQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "palette = ['purple', 'dodgerblue', 'orange']\n", + "sb.displot(filtered_data_duration, x=\"duration\", kind=\"kde\", hue='phase', fill=True, bw_adjust=.25, palette=palette)\n", + "plt.axvline(x=filtered_data_duration[(filtered_data.phase == \"G2M_phase\")][\"duration\"].mean(),\n", + " color='orange')\n", + "plt.axvline(x=filtered_data_duration[(filtered_data.phase == \"G0G1_phase\")][\"duration\"].mean(),\n", + " color='purple')\n", + "plt.axvline(x=filtered_data_duration[(filtered_data.phase == \"S_phase\")][\"duration\"].mean(),\n", + " color='dodgerblue')" + ] + }, + { + "cell_type": "markdown", + "id": "830c9408-0cc1-4928-bf15-d26fd3aac45d", + "metadata": {}, + "source": [ + "Here we can see better the distributions. Average values look similar to what is in the flow cytometry model of PhysiCell : 5 hours for G0G1 and for G2M, 8 hours for S phase. " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "2e6d41a5", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:31.294403Z", + "iopub.status.busy": "2024-06-07T17:38:31.294059Z", + "iopub.status.idle": "2024-06-07T17:38:31.522553Z", + "shell.execute_reply": "2024-06-07T17:38:31.521221Z", + "shell.execute_reply.started": "2024-06-07T17:38:31.294375Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjsAAAGxCAYAAACEFXd4AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA5P0lEQVR4nO3de1hVZf7//9eWs4AoB0FS0VLTBM2wTD+WFiSZDjZaHqJJJ2s6KInpZNZY2jThNGOW+bHTWDg5MzRTWZZ9HLU8ZpaDUHhIKVExQabCjSgCwf37o5/r2w5RRHBvls/Hda3rknvde+337b33tV7Xvdfey2GMMQIAALCpFu4uAAAAoCkRdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK15u7sAT1BTU6NDhw4pODhYDofD3eUAAIB6MMbo6NGjio6OVosWda/fEHYkHTp0SB06dHB3GQAAoAEKCgrUvn37OvcTdiQFBwdL+vE/q1WrVm6uBgAA1Edpaak6dOhgncfrQtiRrI+uWrVqRdgBAKCZOdMlKFygDAAAbI2wAwAAbI2wAwAAbI1rdgAAblddXa2qqip3lwEP4+PjIy8vr3M+DmEHAOA2xhgVFRXpyJEj7i4FHqp169aKioo6p9/BI+wAANzmZNBp27atWrZsyQ+7wmKM0fHjx1VcXCxJateuXYOPRdgBALhFdXW1FXTCwsLcXQ48UEBAgCSpuLhYbdu2bfBHWlygDABwi5PX6LRs2dLNlcCTnXx9nMs1XYQdAIBb8dEVTqcxXh+EHQAAYGuEHQAAmlCnTp307LPPuruMC5pbw87s2bPlcDhctqioKGv/22+/raSkJIWHh8vhcCgnJ6fWMSoqKpSamqrw8HAFBgYqOTlZBw8ePI+jAAAAnsztKzs9e/ZUYWGhteXm5lr7jh07pv/5n//R3Llz63x8Wlqali1bpszMTG3atEllZWUaPny4qqurz0f5AADAw7k97Hh7eysqKsraIiIirH2/+tWv9NhjjykxMfGUj3U6nVq8eLHmzZunxMRE9enTR0uXLlVubq7WrFlzvoYAALiADR48WJMnT9bkyZPVunVrhYWF6Xe/+52MMVaf48eP684771RwcLA6duyol19+2eUYM2bMULdu3dSyZUtdfPHFmjVrlsu3jz7//HNdd911Cg4OVqtWrRQfH6///Oc/1v7Nmzfr2muvVUBAgDp06KAHHnhAx44da/rBNxNuDzt5eXmKjo5W586dNXbsWO3du7fej83KylJVVZWGDBlitUVHRys2NlabN29uinIBAKhlyZIl8vb21qeffqoFCxZo/vz5+stf/mLtnzdvnvr27avs7Gzdf//9uu+++/Tll19a+4ODg5WRkaGdO3fqueee0yuvvKL58+db+1NSUtS+fXtt3bpVWVlZevjhh+Xj4yNJys3NVVJSkkaOHKkvvvhCb7zxhjZt2qTJkyefv/8AT2fc6IMPPjBvvvmm+eKLL8zq1avNoEGDTGRkpPn2229d+uXn5xtJJjs726X9b3/7m/H19a113BtuuMH85je/qfN5T5w4YZxOp7UVFBQYScbpdDbKuAAAZ1ZeXm527txpysvL3V3KORk0aJDp0aOHqampsdpmzJhhevToYYwxJiYmxtx+++3WvpqaGtO2bVvzwgsv1HnMp59+2sTHx1t/BwcHm4yMjFP2/dWvflXrnLdx40bTokWLZv9/a8zpXydOp7Ne52+3ruwMHTpUo0aNUlxcnBITE7VixQpJPybkc2GMOe338tPT0xUSEmJtHTp0OKfnAwBc2K6++mqX807//v2Vl5dnXT/aq1cva9/JL+OcvA2CJL355psaOHCgoqKiFBQUpFmzZunAgQPW/gcffFB33XWXEhMTNXfuXH399dfWvqysLGVkZCgoKMjakpKSVFNTo/z8/KYcdrPh9o+xfiowMFBxcXHKy8urV/+oqChVVlaqpKTEpb24uFiRkZF1Pm7mzJlyOp3WVlBQcE51AwBwOic/cjrJ4XCopqZGkrRlyxaNHTtWQ4cO1fvvv6/s7Gw9+uijqqystPrPnj1bO3bs0LBhw/TRRx/psssu07JlyyRJNTU1uueee5STk2Ntn3/+ufLy8nTJJZecv0F6MI+6N1ZFRYV27dqla665pl794+Pj5ePjo9WrV2v06NGSpMLCQm3fvl1PP/10nY/z8/OTn59fo9QMAMCWLVtq/d21a9d63cvp448/VkxMjB599FGrbf/+/bX6devWTd26ddPUqVM1btw4vfbaa/rlL3+pK664Qjt27FCXLl3OfSA25daVnenTp2v9+vXKz8/Xp59+qltuuUWlpaUaP368JOn7779XTk6Odu7cKUnavXu3cnJyVFRUJEkKCQnR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NOhsvGzZslptNTU1uv/++3XxxRefc1EAAACNpdGu2WnRooWmTp2q+fPnN9YhAQAAzlmjXqD89ddf64cffmjMQwIAAJyTBn2M9eCDD7r8bYxRYWGhVqxYofHjxzdKYQAAAI2hQWEnOzvb5e8WLVooIiJC8+bNO+M3tQAAAM6nBoWdtWvXNnYdAAAATeKcvhv93//+V7t375bD4VC3bt0UERHRWHUBAAA0igZdoHzs2DHdeeedateuna699lpdc801io6O1sSJE3X8+PHGrhEAAKDBGhR2HnzwQa1fv17vvfeejhw5oiNHjujdd9/V+vXrNW3atMauEQAAoMEadNfz8PBwvfnmmxo8eLBL+9q1azV69Gj997//baz6zoumuOs5AABoWvU9fzdoZef48eOKjIys1d62bVs+xgIAAB6lQWGnf//+evzxx3XixAmrrby8XHPmzFH//v0brTgAAIBz1aBvYz377LMaOnSo2rdvr969e8vhcCgnJ0d+fn5atWpVY9cIAADQYA26Zkf6cSVn6dKl+vLLL2WM0WWXXaaUlBQFBAQ0do1Njmt2AABofup7/m7Qyk56eroiIyN19913u7S/+uqr+u9//6sZM2Y05LAAAACNrkHX7Lz00kvq3r17rfaePXvqxRdfPOeiAAAAGkuDwk5RUZHatWtXqz0iIkKFhYXnXBQAAEBjaVDY6dChgz7++ONa7R9//LGio6PPuSgAAIDG0qBrdu666y6lpaWpqqpK119/vSTpww8/1EMPPcQvKAMAAI/SoLDz0EMP6fvvv9f999+vyspKSZK/v79mzJihmTNnNmqBAAAA56LBXz2XpLKyMu3atUsBAQHq2rWr/Pz8GrO284avngMA0Pw06VfPTwoKCtKVV155LocAAABoUg26QBkAAKC5IOwAAABbI+wAAABbI+wAAABbI+wAAABbI+wAAABbI+wAAABbI+wAAABbI+wAAABbI+wAAABbI+wAAABbI+wAAABb85iwk56eLofDobS0NKutrKxMkydPVvv27RUQEKAePXrohRdecHlcRUWFUlNTFR4ersDAQCUnJ+vgwYPnuXoAAOCpPCLsbN26VS+//LJ69erl0j516lStXLlSS5cu1a5duzR16lSlpqbq3XfftfqkpaVp2bJlyszM1KZNm1RWVqbhw4erurr6fA8DAAB4ILeHnbKyMqWkpOiVV15RmzZtXPZ98sknGj9+vAYPHqxOnTrpN7/5jXr37q3//Oc/kiSn06nFixdr3rx5SkxMVJ8+fbR06VLl5uZqzZo17hgOAADwMG4PO5MmTdKwYcOUmJhYa9/AgQO1fPlyffPNNzLGaO3atdqzZ4+SkpIkSVlZWaqqqtKQIUOsx0RHRys2NlabN2+u8zkrKipUWlrqsgEAAHvydueTZ2Zmatu2bdq6desp9y9YsEB333232rdvL29vb7Vo0UJ/+ctfNHDgQElSUVGRfH19a60IRUZGqqioqM7nTU9P15w5cxpvIAAAwGO5bWWnoKBAU6ZM0dKlS+Xv73/KPgsWLNCWLVu0fPlyZWVlad68ebr//vvP+BGVMUYOh6PO/TNnzpTT6bS2goKCcxoLAADwXG5b2cnKylJxcbHi4+Otturqam3YsEELFy6U0+nUI488omXLlmnYsGGSpF69eiknJ0d//vOflZiYqKioKFVWVqqkpMRldae4uFgDBgyo87n9/Pzk5+fXdIMDAAAew20rOwkJCcrNzVVOTo619e3bVykpKcrJyVF1dbWqqqrUooVriV5eXqqpqZEkxcfHy8fHR6tXr7b2FxYWavv27acNOwAA4MLhtpWd4OBgxcbGurQFBgYqLCzMah80aJB++9vfKiAgQDExMVq/fr3++te/6plnnpEkhYSEaOLEiZo2bZrCwsIUGhqq6dOnKy4u7pQXPAMAgAuPWy9QPpPMzEzNnDlTKSkp+v777xUTE6M//OEPuvfee60+8+fPl7e3t0aPHq3y8nIlJCQoIyNDXl5ebqwcAAB4Cocxxri7CHcrLS1VSEiInE6nWrVq5e5yAABAPdT3/O3239kBAABoSoQdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABga4QdAABgax4TdtLT0+VwOJSWlma1ORyOU25/+tOfrD4VFRVKTU1VeHi4AgMDlZycrIMHD7phBAAAwBN5RNjZunWrXn75ZfXq1culvbCw0GV79dVX5XA4NGrUKKtPWlqali1bpszMTG3atEllZWUaPny4qqurz/cwAACAB3J72CkrK1NKSopeeeUVtWnTxmVfVFSUy/buu+/quuuu08UXXyxJcjqdWrx4sebNm6fExET16dNHS5cuVW5urtasWeOO4QAAAA/j9rAzadIkDRs2TImJiaftd/jwYa1YsUITJ0602rKyslRVVaUhQ4ZYbdHR0YqNjdXmzZvrPFZFRYVKS0tdNgAAYE/e7nzyzMxMbdu2TVu3bj1j3yVLlig4OFgjR4602oqKiuTr61trRSgyMlJFRUV1His9PV1z5sxpeOEAAKDZcNvKTkFBgaZMmaKlS5fK39//jP1fffVVpaSk1KuvMUYOh6PO/TNnzpTT6bS2goKCs6odAAA0H25b2cnKylJxcbHi4+Otturqam3YsEELFy5URUWFvLy8JEkbN27U7t279cYbb7gcIyoqSpWVlSopKXFZ3SkuLtaAAQPqfG4/Pz/5+fk18ogAAIAnctvKTkJCgnJzc5WTk2Ntffv2VUpKinJycqygI0mLFy9WfHy8evfu7XKM+Ph4+fj4aPXq1VZbYWGhtm/fftqwAwAALhxuW9kJDg5WbGysS1tgYKDCwsJc2ktLS/Wvf/1L8+bNq3WMkJAQTZw4UdOmTVNYWJhCQ0M1ffp0xcXFnfGCZwAAcGFw6wXK9ZGZmSljjMaNG3fK/fPnz5e3t7dGjx6t8vJyJSQkKCMjw2VlCAAAXLgcxhjj7iLcrbS0VCEhIXI6nWrVqpW7ywEAAPVQ3/O3239nBwAAoCkRdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK0RdgAAgK15TNhJT0+Xw+FQWlqaS/uuXbuUnJyskJAQBQcH6+qrr9aBAwes/RUVFUpNTVV4eLgCAwOVnJysgwcPnufqAQCAp/KIsLN161a9/PLL6tWrl0v7119/rYEDB6p79+5at26dPv/8c82aNUv+/v5Wn7S0NC1btkyZmZnatGmTysrKNHz4cFVXV5/vYQAAAA/kMMYYdxZQVlamK664QosWLdKTTz6pyy+/XM8++6wkaezYsfLx8dHrr79+ysc6nU5FRETo9ddf15gxYyRJhw4dUocOHfTBBx8oKSmpXjWUlpYqJCRETqdTrVq1apRxAQCAplXf87fbV3YmTZqkYcOGKTEx0aW9pqZGK1asULdu3ZSUlKS2bduqX79+euedd6w+WVlZqqqq0pAhQ6y26OhoxcbGavPmzedrCAAAwIO5NexkZmZq27ZtSk9Pr7WvuLhYZWVlmjt3rm688UatWrVKv/zlLzVy5EitX79eklRUVCRfX1+1adPG5bGRkZEqKiqq83krKipUWlrqsgEAAHvydtcTFxQUaMqUKVq1apXLNTgn1dTUSJJGjBihqVOnSpIuv/xybd68WS+++KIGDRpU57GNMXI4HHXuT09P15w5c85xBAAAoDlw28pOVlaWiouLFR8fL29vb3l7e2v9+vVasGCBvL29FRYWJm9vb1122WUuj+vRo4f1bayoqChVVlaqpKTEpU9xcbEiIyPrfO6ZM2fK6XRaW0FBQeMPEAAAeAS3hZ2EhATl5uYqJyfH2vr27auUlBTl5OTIz89PV155pXbv3u3yuD179igmJkaSFB8fLx8fH61evdraX1hYqO3bt2vAgAF1Prefn59atWrlsgEAAHty28dYwcHBio2NdWkLDAxUWFiY1f7b3/5WY8aM0bXXXqvrrrtOK1eu1Hvvvad169ZJkkJCQjRx4kRNmzZNYWFhCg0N1fTp0xUXF1frgmcAAHBhclvYqY9f/vKXevHFF5Wenq4HHnhAl156qd566y0NHDjQ6jN//nx5e3tr9OjRKi8vV0JCgjIyMuTl5VXv5zn57XsuVAYAoPk4ed4+06/ouP13djzBwYMH1aFDB3eXAQAAGqCgoEDt27evcz9hRz9+8+vQoUMKDg4+7be4zlZpaak6dOiggoIC214XZPcx2n18kv3HyPiaP7uPkfE1nDFGR48eVXR0tFq0qPsyZI/+GOt8adGixWkT4bm6EC6CtvsY7T4+yf5jZHzNn93HyPgaJiQk5Ix93P4LygAAAE2JsAMAAGyNsNOE/Pz89Pjjj8vPz8/dpTQZu4/R7uOT7D9Gxtf82X2MjK/pcYEyAACwNVZ2AACArRF2AACArRF2AACArRF2mtCiRYvUuXNn+fv7Kz4+Xhs3bnR3SQ2Snp6uK6+8UsHBwWrbtq1uvvnmWjdonTBhghwOh8t29dVXu6niszN79uxatUdFRVn7jTGaPXu2oqOjFRAQoMGDB2vHjh1urPjsderUqdYYHQ6HJk2aJKn5zd+GDRv0i1/8QtHR0XI4HHrnnXdc9tdnzioqKpSamqrw8HAFBgYqOTlZBw8ePI+jOL3TjbGqqkozZsxQXFycAgMDFR0drTvuuEOHDh1yOcbgwYNrzevYsWPP80hO7UxzWJ/XpCfP4ZnGd6r3o8Ph0J/+9CerjyfPX33OC570PiTsNJE33nhDaWlpevTRR5Wdna1rrrlGQ4cO1YEDB9xd2llbv369Jk2apC1btmj16tX64YcfNGTIEB07dsyl34033qjCwkJr++CDD9xU8dnr2bOnS+25ubnWvqefflrPPPOMFi5cqK1btyoqKko33HCDjh496saKz87WrVtdxrd69WpJ0q233mr1aU7zd+zYMfXu3VsLFy485f76zFlaWpqWLVumzMxMbdq0SWVlZRo+fLiqq6vP1zBO63RjPH78uLZt26ZZs2Zp27Ztevvtt7Vnzx4lJyfX6nv33Xe7zOtLL710Pso/ozPNoXTm16Qnz+GZxvfTcRUWFurVV1+Vw+HQqFGjXPp56vzV57zgUe9DgyZx1VVXmXvvvdelrXv37ubhhx92U0WNp7i42Egy69evt9rGjx9vRowY4b6izsHjjz9uevfufcp9NTU1JioqysydO9dqO3HihAkJCTEvvvjieaqw8U2ZMsVccsklpqamxhjTvOdPklm2bJn1d33m7MiRI8bHx8dkZmZafb755hvTokULs3LlyvNWe339fIyn8tlnnxlJZv/+/VbboEGDzJQpU5q2uEZwqvGd6TXZnOawPvM3YsQIc/3117u0NZf5M6b2ecHT3oes7DSByspKZWVlaciQIS7tQ4YM0ebNm91UVeNxOp2SpNDQUJf2devWqW3bturWrZvuvvtuFRcXu6O8BsnLy1N0dLQ6d+6ssWPHau/evZKk/Px8FRUVucyln5+fBg0a1GznsrKyUkuXLtWdd97pci+45jx/P1WfOcvKylJVVZVLn+joaMXGxjbbeXU6nXI4HGrdurVL+9/+9jeFh4erZ8+emj59erNakTzda9JOc3j48GGtWLFCEydOrLWvuczfz88LnvY+5N5YTeDbb79VdXW1IiMjXdojIyNVVFTkpqoahzFGDz74oAYOHKjY2FirfejQobr11lsVExOj/Px8zZo1S9dff72ysrI8/oey+vXrp7/+9a/q1q2bDh8+rCeffFIDBgzQjh07rPk61Vzu37/fHeWes3feeUdHjhzRhAkTrLbmPH8/V585Kyoqkq+vr9q0aVOrT3N8j544cUIPP/ywbrvtNpd7D6WkpKhz586KiorS9u3bNXPmTH3++efWx5ie7EyvSTvN4ZIlSxQcHKyRI0e6tDeX+TvVecHT3oeEnSb08zuoG2Ma9a7q7jB58mR98cUX2rRpk0v7mDFjrH/Hxsaqb9++iomJ0YoVK2q9gT3N0KFDrX/HxcWpf//+uuSSS7RkyRLrgkg7zeXixYs1dOhQRUdHW23Nef7q0pA5a47zWlVVpbFjx6qmpkaLFi1y2Xf33Xdb/46NjVXXrl3Vt29fbdu2TVdcccX5LvWsNPQ12Rzn8NVXX1VKSor8/f1d2pvL/NV1XpA8533Ix1hNIDw8XF5eXrWSaXFxca2U25ykpqZq+fLlWrt27RnvEt+uXTvFxMQoLy/vPFXXeAIDAxUXF6e8vDzrW1l2mcv9+/drzZo1uuuuu07brznPX33mLCoqSpWVlSopKamzT3NQVVWl0aNHKz8/X6tXrz7jHaWvuOIK+fj4NMt5/flr0i5zuHHjRu3evfuM70nJM+evrvOCp70PCTtNwNfXV/Hx8bWWGlevXq0BAwa4qaqGM8Zo8uTJevvtt/XRRx+pc+fOZ3zMd999p4KCArVr1+48VNi4KioqtGvXLrVr185aQv7pXFZWVmr9+vXNci5fe+01tW3bVsOGDTttv+Y8f/WZs/j4ePn4+Lj0KSws1Pbt25vNvJ4MOnl5eVqzZo3CwsLO+JgdO3aoqqqqWc7rz1+TdphD6ceV1vj4ePXu3fuMfT1p/s50XvC492GjXu4MS2ZmpvHx8TGLFy82O3fuNGlpaSYwMNDs27fP3aWdtfvuu8+EhISYdevWmcLCQms7fvy4McaYo0ePmmnTppnNmzeb/Px8s3btWtO/f39z0UUXmdLSUjdXf2bTpk0z69atM3v37jVbtmwxw4cPN8HBwdZczZ0714SEhJi3337b5ObmmnHjxpl27do1i7H9VHV1tenYsaOZMWOGS3tznL+jR4+a7Oxsk52dbSSZZ555xmRnZ1vfRKrPnN17772mffv2Zs2aNWbbtm3m+uuvN7179zY//PCDu4bl4nRjrKqqMsnJyaZ9+/YmJyfH5X1ZUVFhjDHmq6++MnPmzDFbt241+fn5ZsWKFaZ79+6mT58+HjHG042vvq9JT57DM71GjTHG6XSali1bmhdeeKHW4z19/s50XjDGs96HhJ0m9L//+78mJibG+Pr6miuuuMLlq9rNiaRTbq+99poxxpjjx4+bIUOGmIiICOPj42M6duxoxo8fbw4cOODewutpzJgxpl27dsbHx8dER0ebkSNHmh07dlj7a2pqzOOPP26ioqKMn5+fufbaa01ubq4bK26Yf//730aS2b17t0t7c5y/tWvXnvI1OX78eGNM/easvLzcTJ482YSGhpqAgAAzfPhwjxrz6caYn59f5/ty7dq1xhhjDhw4YK699loTGhpqfH19zSWXXGIeeOAB891337l3YP+/042vvq9JT57DM71GjTHmpZdeMgEBAebIkSO1Hu/p83em84IxnvU+5K7nAADA1rhmBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphBwAA2BphB8B5tW7dOjkcDh05csTdpQC4QBB2ADSpwYMHKy0tzfp7wIABKiwsVEhIiPuKOg3CGGA/3u4uAMCFxdfXV1FRUe4uA8AFhJUdAE1mwoQJWr9+vZ577jk5HA45HA5lZGS4rJxkZGSodevWev/993XppZeqZcuWuuWWW3Ts2DEtWbJEnTp1Ups2bZSamqrq6mrr2JWVlXrooYd00UUXKTAwUP369dO6devqVdf+/fv1i1/8Qm3atFFgYKB69uypDz74QPv27dN1110nSWrTpo0cDocmTJggSTLG6Omnn9bFF1+sgIAA9e7dW2+++aZ1zJMrQitWrFDv3r3l7++vfv36KTc3t1H+LwE0HCs7AJrMc889pz179ig2NlZPPPGEJGnHjh21+h0/flwLFixQZmamjh49qpEjR2rkyJFq3bq1PvjgA+3du1ejRo3SwIEDNWbMGEnSr3/9a+3bt0+ZmZmKjo7WsmXLdOONNyo3N1ddu3Y9bV2TJk1SZWWlNmzYoMDAQO3cuVNBQUHq0KGD3nrrLY0aNUq7d+9Wq1atFBAQIEn63e9+p7ffflsvvPCCunbtqg0bNuj2229XRESEBg0aZB37t7/9rZ577jlFRUXpkUceUXJysvbs2SMfH5/G+m8FcLYa/T7qAPATgwYNMlOmTLH+Xrt2rZFkSkpKjDHGvPbaa0aS+eqrr6w+99xzj2nZsqU5evSo1ZaUlGTuueceY4wxX331lXE4HOabb75xea6EhAQzc+bMM9YUFxdnZs+efcp9P6/PGGPKysqMv7+/2bx5s0vfiRMnmnHjxrk8LjMz09r/3XffmYCAAPPGG2+csSYATYeVHQBu17JlS11yySXW35GRkerUqZOCgoJc2oqLiyVJ27ZtkzFG3bp1czlORUWFwsLCzvh8DzzwgO677z6tWrVKiYmJGjVqlHr16lVn/507d+rEiRO64YYbXNorKyvVp08fl7b+/ftb/w4NDdWll16qXbt2nbEmAE2HsAPA7X7+EY/D4ThlW01NjSSppqZGXl5eysrKkpeXl0u/nwakutx1111KSkrSihUrtGrVKqWnp2vevHlKTU09Zf+Tz7tixQpddNFFLvv8/PzO+HwOh+OMfQA0HcIOgCbl6+vrcmFxY+jTp4+qq6tVXFysa665pkHH6NChg+69917de++9mjlzpl555RWlpqbK19dXklxqvuyyy+Tn56cDBw64XJ9zKlu2bFHHjh0lSSUlJdqzZ4+6d+/eoBoBNA7CDoAm1alTJ3366afat2+fgoKCrFWSc9GtWzelpKTojjvu0Lx589SnTx99++23+uijjxQXF6ebbrrptI9PS0vT0KFD1a1bN5WUlOijjz5Sjx49JEkxMTFyOBx6//33ddNNNykgIEDBwcGaPn26pk6dqpqaGg0cOFClpaXavHmzgoKCNH78eOvYTzzxhMLCwhQZGalHH31U4eHhuvnmm895zAAajq+eA2hS06dPl5eXly677DJFRETowIEDjXLc1157TXfccYemTZumSy+9VMnJyfr000/VoUOHMz62urpakyZNUo8ePXTjjTfq0ksv1aJFiyRJF110kebMmaOHH35YkZGRmjx5siTp97//vR577DGlp6erR48eSkpK0nvvvafOnTu7HHvu3LmaMmWK4uPjVVhYqOXLl1urRQDcw2GMMe4uAgCau3Xr1um6665TSUmJWrdu7e5yAPwEKzsAAMDWCDsAbGfo0KEKCgo65fbUU0+5uzwA5xkfYwGwnW+++Ubl5eWn3BcaGqrQ0NDzXBEAdyLsAAAAW+NjLAAAYGuEHQAAYGuEHQAAYGuEHQAAYGuEHQAAYGuEHQAAYGuEHQAAYGuEHQAAYGv/H6aVB8UZ5cgXAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df2 = full_data.groupby(['time_step','phase'])['phase'].count().reset_index(name='counts')\n", + "\n", + "sb.lineplot(data=df2, x=\"time_step\", y=\"counts\", hue=\"phase\")" + ] + }, + { + "cell_type": "markdown", + "id": "cf074706-9356-411c-9133-7d72b91b517e", + "metadata": {}, + "source": [ + "However, when looking at the growth curves for each phase of the cell cycle, we can see that while S phase is clearly the longest, G0G1 seems to be longer than G2M." + ] + }, + { + "cell_type": "markdown", + "id": "5987379c", + "metadata": {}, + "source": [ + "## PLK1 Knock-Out Analysis" + ] + }, + { + "cell_type": "markdown", + "id": "2e9934f6-5816-4bb0-8dd2-3832e1611def", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-29T19:00:30.602222Z", + "iopub.status.busy": "2024-02-29T19:00:30.601762Z", + "iopub.status.idle": "2024-02-29T19:00:30.612180Z", + "shell.execute_reply": "2024-02-29T19:00:30.610759Z", + "shell.execute_reply.started": "2024-02-29T19:00:30.602187Z" + } + }, + "source": [ + "We then look at the effect of a PLK1 knock out on our model. The simulation results analysed here can be produced by running the model with the XML settings **PhysiCell_settings_plk1_knockout_notebook.xml**. \n", + "Once simulated, we can load the data in the same way as with the wild type model." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "44b86fd4", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:31.524721Z", + "iopub.status.busy": "2024-06-07T17:38:31.524283Z", + "iopub.status.idle": "2024-06-07T17:38:31.533211Z", + "shell.execute_reply": "2024-06-07T17:38:31.531728Z", + "shell.execute_reply.started": "2024-06-07T17:38:31.524691Z" + } + }, + "outputs": [], + "source": [ + "path = \"../../../../output_plk1_knockout\"\n", + "xml_files = []\n", + "for folder, cose, files in os.walk(path):\n", + " for name in files:\n", + " if name.endswith(\".xml\") & name.startswith(\"output\"):\n", + " xml_files.append(name)\n", + " \n", + "xml_files.sort()" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "01079f18", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:31.534631Z", + "iopub.status.busy": "2024-06-07T17:38:31.534266Z", + "iopub.status.idle": "2024-06-07T17:39:05.395811Z", + "shell.execute_reply": "2024-06-07T17:39:05.394882Z", + "shell.execute_reply.started": "2024-06-07T17:38:31.534609Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "db4660a356144eb0823112fc250cc439", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/241 [00:00" + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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du1aXC4X27dv97XKHevKK69k8+bNFBcXs2nTJkaNGlWt6/qzY8cOJk2aVK17a4g8Lg8hjvK/FjlHllv026XrOLIos1r4RESkAueeey633347t99+O7GxscTFxfHQQw/5Jl8CFBQUcNNNNxEVFUX79u159dVXy5zjvvvuo1u3boSHh9OpUyemTZvmW5YNzGXjzjvvPKKiooiOjiY5OZnVq1f73l+xYgVDhgwhLCyMdu3aMXHiRPLz8+v+5oNAjQLfsf9xjpWXl0doaOhJVUgCq6IxfKUtfBV16R4qAotNgU9ERCr21ltvYbPZWLlyJS+88ALPPfcc//jHP3zvz5gxg5SUFNatW8eECRP405/+xObNm33vR0VF8eabb/Lzzz/z/PPP89prr/Hcc8/53r/22mtp27Ytq1atYs2aNdx///2+Mf4bN25k2LBhjBo1ih9++IF58+axfPlybr/99vp7AAFUrS7dKVOmAOaSJn/+858JDw/3vef1elm5ciWnnXZarVZQ6ldFW6vlFIEtxJyRe7xoJ5QYUICWZRERkYq1a9eO5557DovFwimnnMLGjRt57rnnuPXWWwEYMWIEEyZMAMzWvOeee44lS5bQvXt3AB566CHfuTp27Mhdd93FvHnzuPfeewFIS0vjnnvu8ZXv2rWrr/zf/vY3rrnmGl9vXdeuXXnhhRc455xzmD17dqNvsKpW4Fu3bh1gtvBt3LgRh+Noc4/D4aBv377cfffdtVtDqVdel9fvThuHjizJ4m9ZwtLFlw971cInIiIVO/PMM8usbztw4EBmzJiB12uu7nDqqaf63rNYLCQmJpKZmek79u9//5uZM2fy22+/kZeXh8fjKbPm7ZQpU7jlllv45z//yYUXXshVV11F586dAXON3d9++413333XV94wDEpKSti+fTs9evSos/sOBtUKfN988w0Af/jDH3j++ecb5MLCUrkKx/D52WWjVGngO1Qa+AoV+EREpPqO37feYrFQUlICwHfffcfvf/97Hn30UYYNG0ZMTAxz585lxowZvvKPPPII11xzDZ999hmff/45Dz/8MHPnzuWKK66gpKSEP/7xj3530Grfvn3d3lgQqNEs3TfeeKO26yFBoqIu3UOF/idsAITbwRpyTOBTl66IiPjx3Xfflfu5a9euWK3+d3g61v/+9z86dOjAgw8+6Du2c+fOcuW6detGt27dmDx5MldffTVvvPEGV1xxBf379+enn36iS5cuJ38jDVCVA9+oUaN48803iY6O9jvr9VgffvjhSVdMAsPj8vjdaSPHdXQbteOFWI5M3PCoS1dERCq2a9cupkyZwh//+EfWrl3Liy++WKaFrjJdunQhLS2NuXPncvrpp/PZZ5+xYMEC3/uFhYXcc889XHnllSQlJbF7925WrVrlW7rtvvvu48wzz+S2227j1ltvJSIigk2bNrF48WJefPHFOrnfYFLlwBcTE+Prd4+JiamzCknglHhKMLyG3zF8B4ugdVTFn41ywiF3CJFWi7p0RUTEr+uvv57CwkLOOOMMrFYrd9xxB//3f/9Xpc+OHDmSyZMnc/vtt+NyubjkkkuYNm0ajzzyCABWq5UDBw5w/fXXs2/fPuLj4xk1ahSPPvooYI4PXLp0KQ8++CCDBw/GMAw6d+7M2LFj6+p2g0qVA9+x3bjq0m2cSrti/XXpHi42u24rEmE3WwFjHFa18ImIiF92u52ZM2cye/bscu/t2LGj3LH169eX+fmvf/0rf/3rX8scK51163A4yuy85c/pp5/OokWLqlXnxqJG6/AVFhZSUFDg+3nnzp3MnDmzyT7ExqJ0D9zjA1+x19xWzd+SLKXC7ebSLVYFPhERkaBTo8A3cuRI3/62hw4d4owzzmDGjBmMHDnSb2qXhsHXwndcl25+sfnVzxa7PqUtfDanTYFPREQkyNQo8K1du5bBgwcD5po4iYmJ7Ny5k7fffpsXXnihViso9ac0qB2/LEvBkV1rnJV06YY7zG5ftfCJiIg/S5YsYebMmYGuRpNVo8BXUFBAVJQ5gn/RokWMGjWKkJAQzjzzTL9TpKVhqKhLN/9I4AutZNZ8hN3s9rXYrbgL3RUXFBERkXpXo8DXpUsXPvroI3bt2sV///tfhg4dCkBmZqYWY27ASrt0j1+WpTTwnahLFwCbWvhERESCTY0C35///GfuvvtuOnbsyIABAxg4cCBgtvb169evViso9ac0qFU0hi/0BLN0AQy7FW+Rty6qJyIiIjVUo502rrzySs4++2zS09Pp27ev7/gFF1zAFVdcUWuVk/pVUZdugdtcXNnPesw+4Ue2VfZa1cInIiISbGoU+AASExNJTEwsc+yMM8446QpJ4FQ2SzfMDsfsd11OuA0sgNcaojF8IiIiQaZGgS8/P5+nnnqKr776iszMTN/GxqW2bdtWK5WT+lVhl66n8gkbACEhZiufJ8SqnTZERESCTI0C3y233MLSpUsZN24crVq18m25Jg1baZfu8ZM2CorBWYXflAj7kcCnLl0RkXqRk5ZDQVbBiQvWgvD4cGLaa2tVgBtvvJFDhw7x0UcfBboqVVajwPf555/z2WefcdZZZ9V2fSSAKtpaLd9d+QzdUuE2cIXY8BQV1UX1RETkGDlpObzc42XcBfUzjMYebue2TbdVO/RlZGQwffp0PvvsM3bv3k1MTAxdu3bluuuu4/rrryc8PByXy8Xdd9/Ne++9R2FhIRdccAGzZs2ibdu2Zc71zTffMGPGDFauXMnhw4dp06YNKSkp3HbbbQwZMgSAoqIixo8fz5o1a9i0aROXXnppgwpmdaVGga9Zs2Y0b968tusiAeZbePm4Fr68KrbwhTug2KJ1+ERE6kNBVgHuAjeDHxhMTIe6bXnL2ZnDsieXUZBVUK3At23bNs466yxiY2N58skn6dOnDx6Phy1btvD666/TunVrLrvsMiZNmsR//vMf5s6dS1xcHHfddReXXnopa9aswWo1GyFmzZrF7bffzrhx45g3bx5JSUmkp6ezatUqJk+ezJo1awDwer2EhYUxceJE5s+fXyfPoyGqUeB7/PHH+fOf/8xbb71FeHh4bddJAsTr8hJiCyHEWn6njVjniT8fYYcii7p0RUTqU0yHGOK6xQW6Gn5NmDABm83G6tWriYiI8B3v06cPo0ePxjAMcnJymDNnDv/85z+58MILAXjnnXdo164dX375JcOGDSMtLY1JkyYxadIknn32Wd95kpKSGDRoEBMnTvQdi4iI8G3z+r///Y9Dhw5Vq86PPPIIH330EX/605/4y1/+woEDB7jkkkt47bXXiI2NLVP2mWeeYcaMGRQXF/P73/+emTNnYrfbffcwc+ZMfvnlFyIiIjj//POZOXMmLVu2BODgwYPcfvvtLFq0iLy8PNq2bcsDDzzAH/7wBwD27NnDlClTWLRoESEhIZx99tk8//zzdOzYsVr3U6pG6/DNmDGD//73vyQkJNCnTx/69+9f5iUNk8flKde6B2aXbmVr8JWKcEARCnwiIgIHDhxg0aJF3HbbbWXC3rEsFgtr1qzB7Xb7NnEAaN26Nb1792bFihUAzJ8/H7fbzb333lvheWrTb7/9xvvvv89//vMfvvjiC9avX89tt91Wpsw333zD1q1b+eabb3jrrbd48803efPNN33vFxcX8/jjj7NhwwY++ugjtm/fzo033uh7f9q0afz88898/vnnbNq0idmzZxMfHw+YO5qdd955REZG8u2337J8+XIiIyO5+OKLKS4urtE91aiF7/LLL6/RxSS4eV3ecjN0wVyWJbSKY/h2q4VPREQwQ5NhGJxyyilljsfHx1N0ZKz3bbfdRt++fXE4HDRr1qxMuYSEBDIyMgDYsmUL0dHRZZaDmz9/PjfccIPv59TUVPr06VMrdS8qKuKtt97yjSF88cUXueSSS5gxY4avDs2aNeOll17CarXSvXt3LrnkEr766ituvfVWAG666Sbf+Tp16sQLL7zAGWecQV5eHpGRkaSlpdGvXz9SUlIAyrTczZ07l5CQEP7xj3/4wuwbb7xBbGwsS5YsKROOq6pGge/hhx+uycckyHmKPNiOG6xnGGaX7omWZQGzhc9jteLRThsiInLE8a1v33//PSUlJVx77bW4XK4KP2cYRpnPHn+eYcOGsX79evbs2cO5556L11t7f/e0b9++zISRgQMHUlJSwi+//OILfL169fKNLwRo1aoVGzdu9P28bt06HnnkEdavX092drZvCbu0tDR69uzJn/70J0aPHs3atWsZOnQol19+OYMGDQJgzZo1/Pbbb0RFRZWpV1FREVu3bq3RPdWoSxfg0KFD/OMf/2Dq1KlkZ2cDsHbtWvbs2VPTU0qAeYrKd+kWeaDEqFqXbrgDSqxWPEWatCEi0tR16dIFi8XC5s2byxzv1KkTXbp0ISwsDDA3ciguLubgwYNlymVmZpKQkABA165dycnJ8bX4AURGRtKlSxc6dOhQx3dyNGweGzpLx+odW6Y01OXn5zN06FAiIyN55513WLVqFQsWLADwdckOHz6cnTt3MmnSJPbu3csFF1zA3XffDUBJSQnJycmsX7++zGvLli1cc801NbqHGgW+H374gW7duvH000/zzDPP+AZELliwgKlTp9aoIhJ4niJPuS7d0tn+VenSjbCbW6sZXoMST8mJPyAiIo1WXFwcF110ES+99BL5+fkVlktOTsZut7N48WLfsfT0dH788Udfi9eVV16J3W7n6aefrvN6g9kKt3fvXt/PqamphISE0K1btyp9fvPmzWRlZfHUU08xePBg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NGmRkZFERkby0Ucf1XiM/7Rp0xg9ejQbNmzguuuu4+qrr2bTpk1lyjz44IPcfffdrF+/nm7dunH11Vf7JpAWFRWRnJzMp59+yo8//sj//d//MW7cOFauXAlAeno6V199NTfddBObNm1iyZIljBo1CsMwAHjttdd48MEHeeKJJ9i0aRNPPvkk06ZN46233jqJJxMYCnwCgMdVPvAV1bCFz+KwUayt1UREmjSbzcabb77JW2+9RWxsLGeddRYPPPAAP/zwQ5XPcdVVV3HLLbfQrVs3Hn/8cVJSUnjxxRfLlLn77ru55JJL6NatG48++ig7d+7kt99+A6BNmzbcfffdnHbaaXTq1Ik77riDYcOG+VoK09PT8Xg8jBo1io4dO9KnTx8mTJhAZGQkAI8//jgzZsxg1KhRJCUlMWrUKCZPnszf//73WnpK9UeBTwD/LXyljXTOarbwhdhDcGtrNRGRJm/06NHs3buXTz75hGHDhrFkyRL69+/Pm2++WaXPHz+xY+DAgeVa+E499VTf961atQLMySJgLif3xBNPcOqppxIXF0dkZCSLFi0iLS0NgL59+3LBBRfQp08frrrqKl577TXfesL79+9n165d3Hzzzb7WysjISP7yl7+wdevWGj2PQFLgE+CYwHfMwsulma06Cy8DhNiteNTCJyIiQGhoKBdddBF//vOfWbFiBTfeeCMPP/xwjc9nsVjK/Gy328u9V1JSAsCMGTN47rnnuPfee/n6669Zv349w4YNo7i4GDDXD168eDGff/45PXv25MUXX+SUU05h+/btvnO89tprrF+/3vf68ccf+e6772pc/0AJeOCbNWsWSUlJhIaGkpyczLJlyyotv3TpUpKTkwkNDaVTp0688sor5crMnz+fnj174nQ66dmzJwsWLKj2dR955BG6d+9OREQEzZo148ILL/T1+TdGlbbwVTPwWR1WSlxujgyBEBGROrTnMGw/WLevPYdrr749e/YsMymiMscHq++++47u3btX+VrLli1j5MiRXHfddfTt25dOnTrx66+/liljsVg466yzePTRR1m3bh0Oh4MFCxaQkJBAmzZt2LZtG126dCnzSkpKqnIdgkV1h+PXqnnz5jFp0iRmzZrFWWedxd///neGDx/Ozz//TPv27cuV3759OyNGjODWW2/lnXfe4X//+x8TJkygRYsWjB49GoDU1FTGjh3L448/zhVXXMGCBQsYM2YMy5cvZ8CAAVW+brdu3XjppZfo1KkThYWFPPfccwwdOpTffvuNFi1a1N9Dqidelxc4btJGMYRYwFbNfxZYHVZCDnt8s3xFRKT2NQ81F0N+aVX9XC/UZl6zqg4cOMBVV13FTTfdxKmnnkpUVBSrV6/mr3/9KyNHjqzSOT744ANSUlI4++yzeffdd/n++++ZM2dOlevQpUsX5s+fz4oVK2jWrBnPPvssGRkZ9OjRA4CVK1fy1VdfMXToUFq2bMnKlSvZv3+/7/1HHnmEiRMnEh0dzfDhw3G5XKxevZqDBw8yZcqUqj+MIBDQwPfss89y8803c8sttwAwc+ZM/vvf/zJ79mymT59ervwrr7xC+/btmTlzJgA9evRg9erVPPPMM77AN3PmTC666CKmTp0KwNSpU1m6dCkzZ870TcWuynWvueaacnWdM2cOP/zwAxdccEHtP4wA89fCV+Q1x+8d13p+QnanFau7iIP1tN2PiEhT1Cba3PkiWLdWi4yMZMCAATz33HNs3boVt9tNu3btuPXWW3nggQeqdI5HH32UuXPnMmHCBBITE3n33Xfp2bNnleswbdo0tm/fzrBhwwgPD+f//u//uPzyy8nJyQEgOjqab7/9lpkzZ5Kbm0uHDh2YMWMGw4cPB+CWW24hPDycv/3tb9x7771ERETQp08fJk2aVPUHESQCFviKi4tZs2YN999/f5njQ4cOZcWKFX4/k5qaytChQ8scGzZsGHPmzMHtdmO320lNTWXy5MnlypSGxJpct7i4mFdffZWYmBj69u1b4T25XK4yU89zc3MrLBtsKlqHL7S6a/BRGvg8HCqsrdqJiIg/baKDZ6uz4zmdTqZPn+63AaeqWrduzaJFi/y+17FjR9/yKaViY2PLHGvevDkfffRRhefv0aMHX3zxRaV1uOaaa8o1AjVEARvDl5WVhdfrJSEhoczxhIQEMjIy/H4mIyPDb3mPx0NWVlalZUrPWZ3rfvrpp0RGRhIaGspzzz3H4sWLiY+Pr/Cepk+fTkxMjO/Vrl27Sp5AcPHbwlfNbdVK2Z1WrB5Pvf2rU0RERCoX8Ekbx8+2MQyj3LETlT/+eFXOWZUy5513HuvXr2fFihVcfPHFjBkzxjfV25+pU6eSk5Pje+3atavCssHG78LL7urP0AVwhFqxqYVPREQq8O6775ZZ6uTYV69evQJdvUYpYF268fHxWK3Wcq1qmZmZ5VrfSiUmJvotb7PZiIuLq7RM6Tmrc92IiAjfjJwzzzyTrl27MmfOHN/4wOM5nU6cTucJ7jw4eVweQmwhhFiP6dL11GBbNcDmtKmFT0REKnTZZZf5JlIer3SZleO7a+XkBKyFz+FwkJyczOLFi8scX7x4MYMGDfL7mYEDB5Yrv2jRIlJSUny/IBWVKT1nTa5byjCMGm8PE+w8RZ4yrXtQ8xY+iz0Em8ejSRsiIuJXVFRUuaVOSl8dOnQIdPUapYDO0p0yZQrjxo0jJSWFgQMH8uqrr5KWlsb48eMBs4t0z549vP322wCMHz+el156iSlTpnDrrbeSmprKnDlzymyEfOeddzJkyBCefvppRo4cyccff8yXX37J8uXLq3zd/Px8nnjiCS677DJatWrFgQMHmDVrFrt37+aqq66qxydUfzxFnjITNsDcSzfaUf1zhThsWN1uDhYYhNVS/URERKTmAhr4xo4dy4EDB3jsscdIT0+nd+/eLFy40Jfu09PTfdufACQlJbFw4UImT57Myy+/TOvWrXnhhRd8S7IADBo0iLlz5/LQQw8xbdo0OnfuzLx588o0HZ/oularlc2bN/PWW2+RlZVFXFwcp59+OsuWLWu0Yws8RR5sx+2hVuiG+BokthCnDUuJwcG8EgU+ERGRIBDQwAcwYcIEJkyY4Pc9f3vtnXPOOaxdu7bSc1555ZVceeWVNb5uaGgoH374YaWfb2y8Lm/5Ll1P9ffRBQg5MvDv0GE3rWujciIiInJSAj5LV4KDp8hDiOO4Ll13zSZthBxZy+VwjvbTFRERCQYBb+GT4OAp8mC1H013JQa4PDWbtBFy5EN5h7W3mohIncpPA1dW/VzLGQ8R5bc9lYZBgU+A8rN0XR4wqGGX7pEWvoI8tfCJiNSZ/DT4tAd4C+rnetZwuHRTkwh9S5Ys4bzzzuPgwYPExsYGujq1QoFPgPItfIVHslqNWviO9AOHuNXCJyJSZ1xZZtjr9QCE1/FSJgU74acnzWtWM/BlZGQwffp0PvvsM3bv3k1MTAxdu3bluuuu4/rrr6eoqIiHH36YRYsWsWvXLuLj47n88st5/PHHiYmJ8Z2ndHOE1NRUzjzzTN9xl8tF69atyc7O5ptvvuHcc8+tlVtubBT4BDAnbRw7hq/wSFY7mRY+mwKfiEjdC+8A0d0CXQu/tm3bxllnnUVsbCxPPvkkffr0wePxsGXLFl5//XVat25Np06d2Lt3L8888ww9e/Zk586djB8/nr179/Lvf/+7zPnatWvHG2+8USbwLViwgMjISLKzs+v79hoUTdoQANxFbr8tfDWatHHkQ7ZidemKiDRlEyZMwGazsXr1asaMGUOPHj3o06cPo0eP5rPPPuN3v/sdvXv3Zv78+fzud7+jc+fOnH/++TzxxBP85z//weMp+/fIDTfcwNy5cyksPLp35+uvv84NN9xQ5Trt2LEDi8XC3LlzGTRoEKGhofTq1YslS5aUK7tmzRpSUlIIDw9n0KBB/PLLL773tm7dysiRI0lISCAyMpLTTz+dL7/8ssznZ82aRdeuXQkNDSUhIaHMCiKGYfDXv/6VTp06ERYWRt++fcsF3NqkwCcAeAqP69I90jhXs0kbZgtfiFuBT0SkqTpw4ACLFi3itttuIyIiwm+Z4/ewL5WTk0N0dDQ2W9lupuTkZJKSkpg/fz4Au3bt4ttvv2XcuHHVrt8999zDXXfdxbp16xg0aBCXXXYZBw4cKFPmwQcfZMaMGaxevRqbzcZNN93key8vL48RI0bw5Zdfsm7dOoYNG8bvfvc73/rBq1evZuLEiTz22GP88ssvfPHFFwwZMsT3+Yceeog33niD2bNn89NPPzF58mSuu+46li5dWu17qQoFPgHKT9o4qRa+0i5dj7p0RUSaqt9++w3DMDjllFPKHI+PjycyMpLIyEjuu+++cp87cOAAjz/+OH/84x/9nvcPf/gDr7/+OgBvvPEGI0aMoEWLFtWu3+23387o0aPp0aMHs2fPJiYmhjlz5pQp88QTT3DOOefQs2dP7r//flasWEFRkblvaN++ffnjH/9Inz596Nq1K3/5y1/o1KkTn3zyCQBpaWlERERw6aWX0qFDB/r168fEiRMBc0evZ599ltdff51hw4bRqVMnbrzxRq677jr+/ve/V/teqkKBTwDwuMoGvqKTmLRhsYeABSJKFPhERJq641vxvv/+e9avX0+vXr3K7U+fm5vLJZdcQs+ePXn44Yf9nu+6664jNTWVbdu28eabb5ZpdauOgQMH+r632WykpKSwadOmMmVOPfVU3/etWrUCIDMzEzBD27333kvPnj2JjY0lMjKSzZs3+1r4LrroIjp06ECnTp0YN24c7777LgUF5ozqn3/+maKiIi666CJf+I2MjOTtt99m69atNbqfE9GkDQH8tPC5IcQCthr8k8BisRDisBGuwCci0mR16dIFi8XC5s2byxzv1KkTAGFhZTffPHz4MBdffDGRkZEsWLAAu93u97xxcXFceuml3HzzzRQVFTF8+HAOHz5cK3U+PpweW4fS90pKSgCzS/i///0vzzzzDF26dCEsLIwrr7yS4uJiAKKioli7di1Llixh0aJF/PnPf+aRRx5h1apVvnN89tlntGnTpsw1nU5nrdzL8RT4BABvUdlZui6v2bpXwfCKEwpxWgkv8dZS7UREpEIFO4PyGnFxcVx00UW89NJL3HHHHRWO4wOzZW/YsGE4nU4++eQTQkNDKz33TTfdxIgRI7jvvvuwWmvQFQV89913vjF1Ho+HNWvWcPvtt1f588uWLePGG2/kiiuuAMwxfTt27ChTxmazceGFF3LhhRfy8MMPExsby9dff81FF12E0+kkLS2Nc845p0b1ry4FPgH8j+GryZIspUKcNpxetfCJiNQZZ7y5GPJPT9bP9azh5jWrYdasWZx11lmkpKTwyCOPcOqppxISEsKqVavYvHkzycnJHD58mKFDh1JQUMA777xDbm4uubm5ALRo0cJvoLv44ovZv38/0dHRNb6dl19+ma5du9KjRw+ee+45Dh48WK3u4S5duvDhhx/yu9/9DovFwrRp03wtdwCffvop27ZtY8iQITRr1oyFCxdSUlLCKaecQlRUFHfffTeTJ0+mpKSEs88+m9zcXFasWEFkZGS1Zh1XlQKfAH7G8LlrNn6vVIjDRqgCn4hI3Ylob+58EcRbq3Xu3Jl169bx5JNPMnXqVHbv3o3T6aRnz57cfffdTJgwge+//56VK1cCZog61vbt2+nYsWO581osFuLjqxc+j/fUU0/x9NNPs27dOjp37szHH39crXM+99xz3HTTTQwaNIj4+Hjuu+8+X1AFiI2N5cMPP+SRRx6hqKiIrl278t5779GrVy8AHn/8cVq2bMn06dPZtm0bsbGx9O/fnwceeOCk7qsiFsMwjDo5s5Cbm0tMTIxvenkwezLiSU77w2n0vLInAK+shi3ZcHO/mp3v5/v+Q/YpHQj9Yh0AU/Om4ohw1OhcBW7oMcv8ftMECPc/rEPk5Hny4f1I8/sxeWCruAtKRBqmHTt2kJSUxLp16zjttNMCXZ16o1m6gmEY/rt0T6KFz+Kw4vBoHT4REZFgoMAnlHhKMEqMcsuynGyXrl2BT0RE6tmTTz5ZZqmTY1/Dhw8PdPUCRmP4BM+RRfeOX5blpCZt2K1YPR40T1dEROrT+PHjGTNmjN/3wsLCaNOmDU1xNJsCn+B1mbHs+C7d6JNYCijEacPqKj7ZqomIiFRL8+bNad68eaCrEXTUpSu4j2ycW7tdulZCijVLV0REJBgo8AmewvJduie9LIvTBi6N4RMREQkGCnxytIXvmGm5hd6Tb+ErKVQLn4iISDBQ4BNfC5/tyCwNbwm4veA4mUkbDhtetfCJiIgEBQU+KdfCdyT/ndQ6fCFOGyVFauETEREJBgp8Um4M35FVWk6+S7dILXwiIiLBQIFPfC18pV26pUPvTr6FT4FPREQkGCjwCe6Csl26RUdWSz7ZFj4REREJDgp8Ur5L90gL38lurXasJriouYiISNBQ4BPchW6sTisWiwU4OmnjZAKf5bgP52vTDRERkYBR4BM8hR7f+D2opUkbx23Ee6Cw5ucSERGRk6PAJ74WvlKFbgixgO0kfjuOH8OnwCciIhI4CnxSvoXPC04bHOnhrZHjW/iyCmp+LhERETk5CnxSroWvyHNy3blQvoVPgU9ERCRwFPgET6GnbOBzn9wafFB+lu4BBT4REZGAUeATM/Ad0yJXqBY+ERGRRkWBT3AXurEd0yJXK4FPs3RFRESChgKflJ+lWwuBz3LcFN/M/JM7n4iIiNScAp/gKSjbpVsbY/gsFguWY06iFj4REZHAUeATs0vXWbtdulB24kZWgbZXExERCRQFPik/S7e2At8xIbLYC3naXk1ERCQgFPgEd4G7XJfucauq1MjxM3X3a6auiIhIQCjwSfkuXe/Jj+GD8mvxaWkWERGRwFDgkzJduh4vuL2106VrDS0b+NTCJyIiEhgKfIKn6Ogs3SKveax2WviOnsQeosAnIiISKAp8TZxhGHiKPL4u3QK3ebxWJm2E2n3fR4fCfq3FJyIiEhAKfE2cp8gDgDX0SAuf+WPttPAdMy4wxqkWPhERkUBR4GviPIVmwivdWq3wSAufsxZm6VqPOUm0A7LUwiciIhIQCnxNnPtIwiudtHEk/9VKl67lmC7dmFDIVAufiIhIQAQ88M2aNYukpCRCQ0NJTk5m2bJllZZfunQpycnJhIaG0qlTJ1555ZVyZebPn0/Pnj1xOp307NmTBQsWVOu6breb++67jz59+hAREUHr1q25/vrr2bt378nfcJApbeE7PvDVRpduaTcxmIFvn1r4REREAiKggW/evHlMmjSJBx98kHXr1jF48GCGDx9OWlqa3/Lbt29nxIgRDB48mHXr1vHAAw8wceJE5s+f7yuTmprK2LFjGTduHBs2bGDcuHGMGTOGlStXVvm6BQUFrF27lmnTprF27Vo+/PBDtmzZwmWXXVa3DyQASlv4SidtlHbp1srCy86jLXzNQs11+LwlJ39eERERqR6LYQRuh9MBAwbQv39/Zs+e7TvWo0cPLr/8cqZPn16u/H333ccnn3zCpk2bfMfGjx/Phg0bSE1NBWDs2LHk5uby+eef+8pcfPHFNGvWjPfee69G1wVYtWoVZ5xxBjt37qR9+/ZVur/c3FxiYmLIyckhOjq6Sp+pb3u+38M/BvyD3732O5p3ac5nv8J7P8LUs0/+3Jn/3UzaHDNoN186lWfWOfj+ZkiIrN55CtzQY5b5/aYJEG6vvLxIjXny4f0jv6Bj8sAWEdj6iIjUkoC18BUXF7NmzRqGDh1a5vjQoUNZsWKF38+kpqaWKz9s2DBWr16N2+2utEzpOWtyXYCcnBwsFguxsbEVlnG5XOTm5pZ5BbtyY/jctdOdC2WXZWnmNL+qW1dERKT+BSzwZWVl4fV6SUhIKHM8ISGBjIwMv5/JyMjwW97j8ZCVlVVpmdJz1uS6RUVF3H///VxzzTWVttRNnz6dmJgY36tdu3YVlg0Wvlm6R7p0i7wQWluB75hZurFh5teMvNo5t4iIiFRdwCdtWCyWMj8bhlHu2InKH3+8Kues6nXdbje///3vKSkpYdasWZXcCUydOpWcnBzfa9euXZWWDwblWviKa2f8HpSdtBHtBKtFLXwiIiKBUEt/tVdffHw8Vqu1XKtaZmZmuda3UomJiX7L22w24uLiKi1Tes7qXNftdjNmzBi2b9/O119/fcJxeE6nE6fTWWmZYOM+srVG6dZqhV5w1NI/A47t0rVYoFmYWvhEREQCIWAtfA6Hg+TkZBYvXlzm+OLFixk0aJDfzwwcOLBc+UWLFpGSkoLdbq+0TOk5q3rd0rD366+/8uWXX/oCZWNTrkvXXYstfMet3txMS7OIiIgERMBa+ACmTJnCuHHjSElJYeDAgbz66qukpaUxfvx4wOwi3bNnD2+//TZgzsh96aWXmDJlCrfeeiupqanMmTPHN/sW4M4772TIkCE8/fTTjBw5ko8//pgvv/yS5cuXV/m6Ho+HK6+8krVr1/Lpp5/i9Xp9LYLNmzfH4XDU1yOqc+5CNyH2ECwhZnd2gad2Fl2Gsi18YAY+tfCJiIjUv4AGvrFjx3LgwAEee+wx0tPT6d27NwsXLqRDhw4ApKenl1mTLykpiYULFzJ58mRefvllWrduzQsvvMDo0aN9ZQYNGsTcuXN56KGHmDZtGp07d2bevHkMGDCgytfdvXs3n3zyCQCnnXZamTp/8803nHvuuXX0ROqfp9Dja90Dc5ZuXFjtnDsk9LgWvjDYfrB2zi0iIiJVF9B1+Bq7hrAO35JHl/D9i98z5t9jAJj4BXRuBhd2OvlzewpcrL9xLgDn/zKVz3Y5+OxX2Di+eufROnxSb7QOn4g0UgGfpSuB5a+Fr7a6dC0hZX+9moVCrguKPLVzfhEREakaBb4mzl3oLrN8SpGn9hZePl6zI13F+zSOT0REpF4p8DVxnkIPtiPTcr0lUOytvVm6x2sean7VTF0REZH6pcDXxHkKPUcXXT7S1VrXLXyaqSsiIlK/FPiaOHeh27focunYutoaw3e8cDuE2SBdgU+kcTEM2DILFrSFZVdCxleBrpGIHEeBr4k7NvAd2WWtzlr4AOLDFfhEGp3Vd8Dq2yCqCxxcD0tGwKGfAl0rETmGAl8T5853l+vSrasWPjDX+NudW3fnF5F6lr4Ifn0Zuk2EPo9AyiwIawXf3QAlmpIvEiwU+Jo4d74be5i5sF3RkRa+ugx88eGwR4FPpHEwSmDdPRDTB9pebh6zOqDHvZC9Dra8FNDqichRCnxNnCvPhS3MnJZb6DWPhdbh/itx4bDncN2dX0Tq0Y534dAP0OX/wGI5ejymJyReYAY+re0vEhQU+Jo4d74b25GEV1gPLXwtwiHHBfnFdXcNEaknm56B+IEQ27v8e62GQ95W2P+/+q+XiJSjwNfEFecV+7p0Cz1gCwFrHf5WxIWbX9XKJ9LAHVxvtu61vtT/+836Qmgr2PZ6vVZLRPxT4Gvi3AVHW/iK3OCsw+5cMFv4QIFPpMHb9hY4mkPcGf7ft4RAq2Gw831wa2q+SKAp8DVhJZ4SvC6vbwxfQR1uq1Y6jqdZKIRYYK8Cn0jDVeKGHe9AwvkQUsm/ElsNBW8+7F1Yf3UTEb8U+Jqw4iMD6eyhZpduQXHdTdgoObKqszXEXJpFM3VFGrD0/4Iry2zBq0xYK4joCBmL6qVaIlIxBb4mrDjPDHy+Wbqeupuw4S08OksjXjN1RRq23R9BeHtzoeUTaZ5iBkTN1hUJKAW+Jsydb07LLR3Dl++uuxY+z5FrgRZfFmnQjBLY/R9zdm5VNE+Bgt2Q+0vd1ktEKqXA14SVtvCVztItKK67SRvefLXwiTQKB1aDKxPiB1WtfLNTwWJXt65IgCnwNWGlY/jqY9KGt6Bs4NuXD56SurmWiNShPZ+APQZielWtvDUMYvuY3boiEjAKfE3Y8WP4CtwQWkeBz53n8n3fIhxKDM3UFWmQdn9iLsUSUo0/LJqnwL6l2ltXJIAU+Jqw0jF8vi7dOlyHz3uoyPd9QqT5NS2nbq4lInWkYDfkbKz6+L1SsX3M5VkO/VA39RKRE1Lga8J8LXyhNrwlUOSpu8DnPnw08LUIB6sFth+qm2uJSB1JXwxYoHly9T4X1Q0sNti/ok6qJSInpsDXhBXnFxNiDyHEFkLhkZ6WOpulm3u0S9caAi0jYMehurmWiNSR9EUQ3R3s0dX7nNUB0d0gK7Vu6iUiJ6TA14Qdu49uwZFVU+pq0obnmBY+gAQFPpGGxSiBjMXQvH/NPh/dE7LUwicSKAp8TZg7311mwgbUXQuf+7jAlxipwCfSoBzcAMUHzAkYNRHTE/J3QOG+Wq2WiFSNAl8TVpxX7Ft02dfCV1eTNo7p0gVz4kZarjlbV0QagIzFYA01g1tNlC7jom5dkYBQ4GvCivOPdukW1nULX+5xLXwRUOyFjLy6uZ6I1LL0RRDbF0IcNft8aEvzpW5dkYBQ4GvC3HlurEcW3ss/MmmjzsbwHRf4Spdm0UxdkQbAWwT7/1fz8XulorpD1sraqZOIVIsCXxNWnFeMPfTotmrWELDV0W+EO6ds4GsZASEW2Hmobq4nIrUoKxVKiqDZSQa+6G5wcL05AURE6pUCXxNWnF92DF+oDSyWurnW8bN0bSHQMhx2aPFlkeCX8TXYYyGy08mdJ6obeHLh8NZaqZaIVJ0CXxNWfLi4zD66dbWtGoDnsAvDKDtDIyESth+su2uKSC3J+BKanQaWk/wrI6qb+fXg2pOukohUjwJfE3ZsC19hcd3N0AXAa+AtnRlyROso2JJdh9cUkZPnPgzZq6BZv5M/lyMGQhMhW4FPpL4p8DVhZRZe9tTdhI1SnuPG8bWLNvfTLdJ+6iLBK/NbMLwnP2GjVFQXyF5TO+cSkSpT4GvCjl14Od9dxy18lJ+p2y7GXIfvV7XyiQSvjK8gNAHC2tTO+aK6mYHP0CKcIvVJga8JKzNpo667dCm/Fl+7I9tx/pJVt9cVkZOQsdjszq2tGV1RXcF9yNx1Q0TqjQJfE1XiLcFT6Cmzl25dTtqA8i18oTZzT91fDtTtdUWkhgozIOdHaJ5ce+csnbihbl2ReqXA10S5j+ylduws3Tpv4TtuDB+YrXyb1cInEpz2fW1+Pdn1947lbA7OOHNvXhGpNwp8TZQ7/7jAV1zHLXw2S7kWPjDH8W1WC59IcMr4EiI7myGtNkV2hkMKfCL1SYGviSrOKwbAFmrDWwIuLzjtdXc9W4Sz3CxdMFv4MvPhUPm3RCSQDOPo+L3aFtnJ3HFDROqNAl8TVZxvBj57mJ3CI8ui1GULnzXcUW7SBpgtfKBxfCJB5/CvULC79pZjOVZkFyjYBS5N0RepLwp8TdSxLXxHsl+drsNnDbf77dJtFQkOK/yYWXfXFpEaSP8CQuwQe1rtnzuys/n10A+1f24R8UuBr4k6dgxfaeALq8MuXWuY3W8Lny0EOsXCmvS6u7aI1MCezyC2L9jCav/c4e0gxKGJGyL1SIGviTq2he/It4TW4Sxda4TD7xg+gK5xsGZv3V1bRKrJUwCZSyHu9Lo5f4gVIpI0cUOkHinwNVHHjuE7fCTwhdflpI1wB+6cQr/vnRIHGfmw93DdXV9EqmHfEihxQdyAuruGJm6I1CsFvibKlePC6rBidVjJK4YQizmWrq6ERDhwH/Qf+LoeWfFB3boiQSL9cwhtBeHt6+4aUZ0h52co0WbaIvVBga+JKjpUhCPKAcDhYrN1r7Z2TvLHFuWk+EA+hp/9M2NCzckbCnwiQcAwYO9Cszu3Lv9QiOxstiLm/lJ31xARHwW+JqroUBGOSDPw5RfX7YQNAHtsGCVFHrylM0SO06U5rNY4PpHAy/kR8rZB/KC6vY5m6orUKwW+JqroUBGOCDPw5RVDWB1vq2aPCQWgeH++3/dPiYOf90OOq27rISInkDYfbJF1s/7esexREJqgwCdSTxT4mqiiQ0XYI8xmvcP1EfiizcDn2p/n9/3TEsFrwDfb67YeInICu+ZD/JnmGnx1TRM3ROpNwAPfrFmzSEpKIjQ0lOTkZJYtW1Zp+aVLl5KcnExoaCidOnXilVdeKVdm/vz59OzZE6fTSc+ePVmwYEG1r/vhhx8ybNgw4uPjsVgsrF+//qTuM9gc28J3uB66dG2x5lpexVn+A198OHRuBou21m09RKQSub+aXbotBtfP9SI7qYVPpJ4ENPDNmzePSZMm8eCDD7Ju3ToGDx7M8OHDSUtL81t++/btjBgxgsGDB7Nu3ToeeOABJk6cyPz5831lUlNTGTt2LOPGjWPDhg2MGzeOMWPGsHLlympdNz8/n7POOounnnqq7h5AABUdPDqGrz5a+KzhDizWEFwVdOkCpLSGb3ZCkSbtiQTG7g8hJBTizqif60V2gsK94NLeiiJ1LaCB79lnn+Xmm2/mlltuoUePHsycOZN27doxe/Zsv+VfeeUV2rdvz8yZM+nRowe33HILN910E88884yvzMyZM7nooouYOnUq3bt3Z+rUqVxwwQXMnDmzWtcdN24cf/7zn7nwwgurfD8ul4vc3Nwyr2BVlFO/kzYsIRZsMaEUV9ClC3B6ayhww/921W1dRMQPw4Dt/zS7c62h9XNNTdwQqTcBC3zFxcWsWbOGoUOHljk+dOhQVqxY4fczqamp5coPGzaM1atX43a7Ky1Tes6aXLeqpk+fTkxMjO/Vrl27kzpfXSqdpVtimCGrrlv4wJypW1GXLkCbKHN5lk+31H1dROQ42Wsg5ydodXH9XTOsLYQ44aACn0hdC1jgy8rKwuv1kpCQUOZ4QkICGRkZfj+TkZHht7zH4yErK6vSMqXnrMl1q2rq1Knk5OT4Xrt2BWdTlWEYuHJc2CPtFLihxKj7Fj4AW0xopV26Fguc3xE+2QIZFedCEakL214HZwuIS6m/a4ZYIaKjtlgTqQcBn7RhOW5hT8Mwyh07Ufnjj1flnNW9blU4nU6io6PLvIKRu8BNiacER4TDt49ueH208MWE4sqsPMld0AmcVpizru7rIyJHeAphx78g8SKw1OGWO/5EJmmmrkg9CFjgi4+Px2q1lmtVy8zMLNf6VioxMdFveZvNRlxcXKVlSs9Zk+s2NkWHigBwRB4NfPXRwmePDat0DB+YO35c2Ane2Qg5RXVfJxEB0j4Adw60rsfu3FKR2mJNpD4ELPA5HA6Sk5NZvHhxmeOLFy9m0CD/K7wPHDiwXPlFixaRkpKC3W6vtEzpOWty3cbm2MB3uDTw1UsLX1iF26sda3gX8+tD35jjyEWkDhkl8PPTED8QwgMw7jiqi7ZYE6kH9fDXfMWmTJnCuHHjSElJYeDAgbz66qukpaUxfvx4wBwTt2fPHt5++20Axo8fz0svvcSUKVO49dZbSU1NZc6cObz33nu+c955550MGTKEp59+mpEjR/Lxxx/z5Zdfsnz58ipfFyA7O5u0tDT27jX3+/rlF/MPo8TERBITE+v82dQlv4GvnsbwlRR58OYVY4tyVlguNhRu6QcvfA9nt4ffdav7uok0WXs+hdyfIfmFwFy/dKbuwfUQ2yswdRBpAgIa+MaOHcuBAwd47LHHSE9Pp3fv3ixcuJAOHToAkJ6eXmZtvKSkJBYuXMjkyZN5+eWXad26NS+88AKjR4/2lRk0aBBz587loYceYtq0aXTu3Jl58+YxYMCAKl8X4JNPPuEPf/iD7+ff//73ADz88MM88sgjdfVI6oXryP5ljkgH+YfAbjVfdc1+ZPFlV1ZepYEPYFA7+DETHvgaSkrqvm4iTZJhwE9PQmxfiO0TmDrYoyC0FRxaD1wbmDqINAEW40T9a1Jjubm5xMTEkJOTE1QTODb+ayMfXvsh135+LR9utbF4G0w6s/av4y1ys+76fwHQ7+1rKM7K56cpH3P6/D/Q7Iz2J/y8p8ScvPHNjqPHNk0wx/mJ1AlPPrwfaX4/Jg9sEYGtT13b+T78byyc9nT9Lbbsz4aHwBYG5y8+cVkRqZGAz9KV+ld0qIgQWwhWp5U8d/1054I5Sxcq3k/3eLYQ+L/+8PveR499/qvG9YnUCncurLkTWpwd2LAHENXZ7NLV/9widUaBrwkqXXTZYrGQ56qfCRsA1ggnFmvICWfqHstigYs7H/15ymK44n1Yd3JLJorI+gfAfQi63R7ompjj+FxZUKT/sUXqigJfE1Qa+ADy6mFbtVKWEAv25mG4Mg7X+Bz3DILsQrh8Hty2EHYeqr36iTQZ296EX1+GzrdCaBAsRxV1ZGq+1uMTqTMKfE3QsYEvtx5b+ACcLaMo2Hmwxp/v1QKmX2B29a7YDee9Dbd/bu6/69IyXiInlvEVfP9HaD0C2l4R6NqYQhPBGqHAJ1KHAjpLVwKj6FAR9gizWe+QC9rF1N+1nQlRFOzIPqlzhFjg/CQ4q505oeOLrfCfLRBqg3bREB9uTuxoEQ5dm8Nlp0DLRj72XqRKfvsHrPoTNO8Pp0wyx0wEA0vIkXF82mJHpK4o8DVBRQfNFr4Sw9zN4khjX71wJkZxaFVa7WxlZ4OLu8DQzpCWAz9lwv4CM8QeKoLtB+HDzfC3VLi1P0w50wyLIk3OwQ2w7l7IWARtLoNud0BIkP3xH9UNDqwOdC1EGq0g+z9e6kNRThERLSM47IISAyLrcZkTZ2IUnsMu3AcLcTQPr5VzhligY6z5Ol5eMXy6BV763gyBj58bPI0aInXGfdgMefuXwa75kL0GwtrCqY9D/FnB+T9BVDfY9W8oPgiOZoGujUijo8DXBBUdKiI2KZYjG24QWfkayLUqNNFcj7BgR3atBb7KRDrMZV1aRsCrayExAm4P8AoUIrXCMKBwDxzaCDmb4PCvR15boGCXWcYaAc37QZ9Hza3TQoJ4EcuorubX7HWQeH5g6yLSCCnwNUGlkzYOlga++mzhS4gCoHBnNrH929bbdc9Pgn35MHMlXNIVktSAIA1RwW5zK7T0xZD1PyjaZx4PCYXwNhDW2lxXL6KDudRJRBKE1MM2OrUhoh1Yw8zWSAU+kVqnwNfEGIaBK8eFI9JBZmngq8cxfNYwO/bYsJOeuFETo7pD6m6YtgT+eXlw9mqJlFPigd0LYMvLkPmtOcEhphckXAAxPcxgF5pgHm/ILFaI7AIH1wa6JiKNkgJfE1OcV4y32IszysnBInMNPls9NwA4E6Mo2FHzpVlqfF0b3HCqOYlj6U44t2O9V0Gk6gwD0j6ADVMhb5u5322Pe80WPHtkoGtXN6K6aOKGSB1R4Gti8vflAxDWPIycIoiqx9a9Us6WURRsP1D/Fwb6t4IuzWDWagU+CWJ52yD1D7D/W3PsXY/7ILpboGtV96K7ma2Z7lywB8/+4yKNQQPvA5DqysswtzULax7GwSKICMAYbmfiyS2+fDIsFnNdvpV7tD2bBKnt78Bnp5oTME77G/R9smmEPYCoU8yv2WsCWw+RRkiBr4nJ23c08B2q5zX4SjkTo3BnF+DOLar/iwMpraFNFMxWz5EEkxIPrJkEqePMbtsB/4C4lEDXqn5FtDdnFmetDHRNRBodBb4mJi8jjxBbCI4oB9lFEBGAwBfWLhaAwz/vq/+LY67bN7wLLN4Ge3IDUgWRsrxFsPxK2PISdJsIPe8DW90vWxR0LFaI6Q5Z3wW6JiKNjsbwNTF5GXmENQ/DYrHU3hg+92FzzJHrAHjyoMQLVgd4j/kLyzB834a1iyUkzE7O2l00P7NDLVSg+s5uD+9uhH/9CPcMCkgVREyefFhyidmqderj5pi9piy6B6QvMv/M0FR6kVqjwNfE5O/LJ6x5GEUeKPKcRJduiRcObYB9S6Fgp3nM4gB7OBBidk8VFgK9zfd+egLiT4FmyViiuhDZJZ5Dq3fVwh3VTKgNBreHuT/CnQPA0UCWKpNGxpMP34yA7NXQ768Q2yfQNQq8mJ6w4x3I3wmRHQNdG5FGQ4GvicnLyCM0NvToLhs1CXwFe2DHv8xV/sPbQeIFENYObBHAMf8id3mAI2NxIjuZOwAc+B6cLYho25eslbtrZU/dmrqoMyzaBv/dCr9rImPiJYh4XbB0pBn2TnsaYnsHukbBIbqH+TXrOwU+kVqkMXxNTGmX7qFC8+dqB779qbBphvmXVbsroc1IiOoBtkjKhD0o+3PcmdDhWmg3GuxRRER8jzu7gMJNG0/ibk5Ou2joEQ///CFgVZCmqsQL/7vG3Ou27xMKe8dyxJr7/h7QOD6R2qTA18TkZeQR2jyUgy7z52oFvr3/hbR5ZpdL+6sgNLGaV7dAaCtoNYLIlHMBODT/acj4uprnqT0XdTKXaNkSmGUBpSkyDFh9G+z5GHo/DM1OC3SNgk9Md8hKDXQtRBoVBb4mxDAMcwxfszAOFoItxBzLViX7lkD65xA3AFqeY86mOwm2+PaEtgolZ1dH+PEx2Pb2SZ2vps5oA7FOcwKHSL348S/w29+h+13QQjOG/IrpBdnrzDGOIlIrFPiaEFeOC2+xl7DmYWTmQ7OwKk6Cy14Puz+GZv2h+emU77qtmcjO0Rz4qRlGq+Gw7XXY+matnLc6bCFwTkf49ybIL673y0tTs/V12Phn6HQztB4e6NoEr9i+YLjVyidSixT4mpBjd9nYlwfNnFX4UOE+2PGeual5/Jm1Wp9mKfEUpOVz+NAAaH0pbH/T3Du0nl3UCQrc8P7P9X5paUr2fg7f/x+0uQw6Xhvo2gS3iI5gjzV7FkSkVijwNSGlgS+0WSgZ+RAbdoIPeIvNEGYPh4TzqO1fl6juMdii7aR/vgcSL4SE82HLLNj/v1q9zonEh8PAtvCPdeApqddLS1OR9T0su9IcEtFtotaXOxGLBZr1VeATqUUKfE1I6bZqzmZh7C8wu3QrtXchFO2HxKEQUvtbcoTYQmiWHEfG57sxSgxocynEngob/wJ5O2r9epW5tCvszoUvfqvXy0pTkLsFlowwlybqPQ1CtOhjlcT2NZdx8hQEuiYijYICXxOSl5GH1Wklz2LH7YVmoZUV3gGZSyHuDHC2qLM6NT+jBa7MIg6uOQCEQMdrwBEDGx8Gb2GdXfd4Sc2gdwt4aRWUGCcuL1Il+bvg6wvAHgV9/wLWyv6nkzKanaZxfCK1SIGvCSndZSOzwOxOal7R3z1eN+z8F4S2NLtV6lBk5yhCW4Wx4+0jTWshTuh0IxSmw+bn6/Tax7uqF2zKgo821+tlpbEqzICvLzTX3Dvtr2CPCXSNGhbfOL5vAl0TkUZBga8JyUvPI6yZOWEDIKaiwJf5DRRlQcvzgbrtfrKEWGg1oi1Z3+4jd9Mh82Boormoc/oX5tZt9eSUOBjQBp5eYW47J1Jjhfvgq/Og+CD0+xuE1l0reUO2v8jOnF/aMjG1B29saYPLe3RsY85eFxvXDWPDP380h3yIyElR4GtCsrdmE5EYwb58iHaC3V+Wc2WZG5c3Ow2ccfVSr+ZntMCZEMrWv/9y9GDc6eYYns3PmOGznlzdG7IK4PmV9XZJaWwKdsNX55r/L/WfAeFtAl2joLTzcCgjFyUzfUMnNmZH8djaLpy/8Ax25YWye00uL575PR9O78FHM/rxyY1zKfFqRpXIyVDga0IObDlATNsYMvMr6M41DNg1H6xhEJdSb/WyWC20GtGO/d9kcGh9dulR6HAVEAJb6q9rNzESruoJs1dD6u56u6w0Frm/wqKzoPgQ9H/O3GtaykkvcDL6q34YwHMDNvFkyhb+dsZm3CUhjF/YiXm3/Exc53DG/qMjZ1/2LRve3cKiuxYFutoiDZoCXxPhynWRvy+f6HbRZORDjL8Zujk/Qc4maHEWWGp/Vm5l4ga2ILxDBJum/4DhPdJ9Y42E9mPgwKp6rcvvukHPFnDnF3BkJRuRE8v8FhYNMJcUSX4ewtsGukZByTBg6qpueA0Lf+73G/GhbgDaRLi4u892Et5cSm6uwZAp7QltFkPnMw36X3KA71/6ngO/ag9EkZpS4GsiSv+gjG4Xzb48Py18XjfsWmC2SER2rvf6WUIstL+mE4c357Bnwc6jb8T0gubJ9VqXEAvcdjp4DbhuARwqqtfLS0NjGPDrbPjqQnOiQfKL5oQn8evDHQl8kx7Hzd12E+soO1i2+f79dFj3Mz+dnsy2kObmwZgedO/9DeFxYXwzTRM4RGpKga+JOLDFDHzWltHkFftZgy/zG3OAeYvB1NbWadUV2TmauEEt2TLzZ1wHjklZbS47+r1RP4O3m4fB1LNgXz78fj6+iS4iZRTnwIrrYNUEcx3J0542l2ARvw67rTy+rgtnJWSTHJ9b7v3tr/+GPdaBJbk1b21pg9cAYnpiC8mj76gYfpr3ExkbMuq/4iKNgAJfE3HglwOExYWxu9jsqk2MOOZNVzakLzaXYHE0D0wFj2h7VUcwDDb/9cejB63HpNOML+utLm2iYdpgyMyHy+fB5vqbOyINQfpiWNgb9nwCvR6CUyZCiD3QtQpq/9jcjnyPlWs6pZd7ryijkPRPd5FwUWuGdshmd34oX++Ng7DWENqCzj3XEdEygu9f/D4ANRdp+BT4mogDWw4Q3Taa3w5CqA2ahx/z5q6PzPXvmp8eqOr52KPstBubxL4v9rB/qZ9/yf/2ChRm1lt92sXAY+eCwwoj58HHv5zwI9LY5e+C5VfDN0PNRcnPeA0SLwh0rYJeVpGdV39py7A2+4k7Mm7vWLve306IM4QWQxJpHV5Mr+aH+XBHAsUlFmiWTEjWUrpd0omN/9pIYXb9Lcou0lgo8DURB34xA9/Wg+ZM1JDSXtucTZDzA7QYWCfbp9VE8zNbEHNqM356dD3Fh4rLvmmxwaan661rFyAuHB49F1JawcQv4MGvq79On8sDm/bDl9vgp/3mz9LAFO2HdffBf7pBxn+h5/3QbwaEJQa6Zg3CrJ/bYwFGdij/D7YSdwm7P9xJ3JktsYaa60UNSTjIIZedr9PjoHl/8BbS9YwDlLhLWPfGunquvUjDp8DXBBiGwYFfzcC3LRtalw4x8hZD2gcQ1haiugW0jseyWCx0uL4z3iIvm57YgHFsuGs3GrLXwO6P6rVOTps5keOWfjDvJ7j0PdhYhYbGrQfhoW8g5TW4+F9w839gxL8g+TV47jvIddV93eUk5WyG1XfAxx1gy4vQ/ioY+E9oNcyckSsntK/QwTu/tWZE2/1E2r3l3s/8Oh33wWJanHM0PMeHuund/DAfbU+g2N4SIpIIK/qajud2ZNXLq7QYs0g1KfA1Afn78ik+XIy1ZTQHCo8JfBn/BXcuJJxLoCZqVMQR66TDdZ3Zt2gve/694+gb0d0h/mxzVmTe9nqtk8UCF3aCJ84HdwmMnGu29u3LL192XQbcthAueBs+3QLnJZmthC8PN78Obg+zVsPF78J6jUEPTlvfhMWD4bMesONdM+id9R50vglsESf8uBw1e1N7bCEGw9vt9/v+rve3E9ktmrA24WWOD07MJqfYztfpzc1WvgOrOGV4Aoe2H2Lbl9vqo+oijYYt0BWQupd1ZLZBdlQ0ZEOrSCAvDTK+MXe0sMcGtH4VaX56PHm/5bJl5s8wfeTRN9peBnlbYeNjcMYrYHXWa73ax8BfzoPPf4UFm+FfP5rdvZ2amUFwzV7YkQMJEfCH0+DcjuYYwFJx4eY2bhd3gRe/h9EfwPTzYUyver0NOVaJG7LXwt4vjh5bczs0T4FeD0DLc4JmyENDk1Hg4N3fWjOywz7CbeV3y8jbmsvB1QdIurV8L0Oc02O28u1I4PwzTsexdyEtopbQrHMiq2avovPQ+l9CSqShUuBrAnYu24kj0sGesGgi7BDrcMPmd8AZD836B7p6lWp7VUdyM47r9wxxQNI4+GUmbH4Oet5X711rthD43Slmy93KPbAuHdakgwF0izPD22mJx4yV9KNlBDx8DryxHu75EtJy4a4z1UtY50o8cPhXOLjODHkHvjeHCXgLIOSYBSoHvgvhrQNXz0bi+Z864rSWMLxtBa1787Zjj7HTLNn/Vo5nJx7klZ/b83Vmay6OPxPLnk/odsl0vn95Hbm7c4luG12X1RdpNBT4moDtX24noW8C/8sOoXUUWPZ8ai7F0u4qsPjbUDd4hNhCSPq/7maSAnJ+yCa0X6y5VEP7q8yutpge0HZkpeepK5EOuCDJfNWELcQcF9gywmzt234QZgw1Z1JLLSjxQs6PR0LdajPgHfoRSo6s8xjaCqJPgaTrIbaPuTvGt0d+l5zNAlfvRmL74TDmbWvF1Z32+m3d8+S52fvJLlpe2JoQm/8RRvFOcyzfh9sTOCf5XMIyv6Vzz82sddpY/ffVnP/4+XV9GyKNgv5aaeTcBW52f7ebXjcn8/N+uLj1bti/FFqcDU7//6IONrZwKxwZJ7dmQip9Jnen7VUdsTQ/HfLT4JcXIKxNve7/W5ssFhh5ijl7etYquGwuvHgxnBJfxROUuKFwLxTsBVemGeY9h8GTb75nlIAlxOz6toaBLRLs0eBoZrbyOluYO0OENII/Dkq8cHCtuV7jvm8gKxU8eUAIRHaEyC7Q+WaI6gKRnczncCyvlvuoTX/7IYlYh5uhbfwvYrn3k12UFJfQ4pyESs9zTmI2sze157OMrlzZrD/2ff+iy7C7WfXyKs6+72wckepuFzmRRvAnvFQm7X9peIu97GudCBkGPXLeMP/Si+0b6KrVSNyglmx64gcyv0mn559PI6zt5eA6AD9MM/cvjQ6e2cbVNaCNOb7yxe/h0rlwY1/4U4q56wdGiRluczdB7uYjry2Q95sZ9Diu9SQkFKyhR0KcxXy/xANe19HWrTIsZvgLa2O2ckW0g/D25lZ7Ee3NY2Gtqz9essRt7uDizgVPARhu4Ej4tMea/+g42TGYedvNgJe+yPzqPgTWcLPFrsPVENPb/L2wHr+foNSl5RmxfLarJX/qvhOHtfyM2pJiL9vf/JVmKXE4Yiv/HWjm9JDSIof/pLXkguSRNDv0GD3P+JFf/hPO2n+s5cxJZ9bVbYg0Ggp8jdz2r7YTFhfGak847e07iHAYkHAewTYrt6raj02isGcUO/+5lRVXfE2X23vQfuz1WLbNhnV3Qb9nzC66hsQwoKQY3IdpH3KIJ07N5uPtMfxzfRJvrLNwQfhSLrLNY5D1C1pbd5thLrydOb6sxRDfTgQ4481WO1tU5a11htcMX57D5tZg7kNQnG0GZ1eWud5c7maztdB93PZXjmbgbAnO5mCPMVsMQ2zmPXiLzFZF9yEz5LkOmNc4EUccRHQ40urWGaI6mz+HtTkSCMPNFkpPnlm/vB2Q+7PZPbt/GRTsBkLMGdxtfmdORIru0ThaLBsol9fCQ2u60T0mjyGJB/2W2fNRGq79RXS5vUeVzjk44SA/ZEfz1o6eTEq8gMj0D+g4+G5WPLOC0yecjtUR3MNTRAJNfyI2ctu+3EZc73h+yrJxcdgP5n6fIfU7q7W2xZ7anMhHo9n7URq/PPMj6Qt302vaNUQ53oO1d8Gpf4Hmp1XpXK79eRTtyaGk2Etk95bYo6vZCuQthrxtkL/DDB5FmVB8ANyHze7BEpfZzchxLRxGCb5WtxKXGcKOcABXEcKwZu1Z5hnB/4oG8d/8VzGw0DYsj7Nb5XJRmwMMScz223JyQharud+rPcoMi5XxFJrBryjTDFvF2VB86GiXcXH20UWwQ+zm71Z4WzNw2aOPvKLAGmG25IXYzXsvKTYDXHEOuPZD0T5zIkXmt+b3xz+v41nDzHAYP8hsyYs9DeyR1X8WUiee/7EjO/PCeCrlF7+TkEqKvWx7bQvNz2hBWKvw8gX8CLOVMKzNfhbsTOSslldwunM1vfsu5D9LU1j54koG3TWolu9CpHFR4GvE9qzaQ/qadEIvNwNe93ZtwNY4ZrTZwm20v6YTzQe0YOfbv/HdtSvpeMP5dLpgOdZ1d0HXCdBulN8pr95CN3v/vYE9768nd/2eMu9Fn9aGjreeScsRPf0PIvcUwMH1Rwb//2AuD1Ma1hzNzG5Ke/SRlqlQsNjN1qly9Thy7hCbWcYaemR8XYTZcmaPJtpi5RLgErI47D7IpkORbDoUybcZzZm7rTXNncWMScrgplN2kxB23I4k1eQtgdTMWFbtj+XX3HAMoLnTTf+4XM5tFU1cXIeTOn+1lBSbrYyuA+DJNUM13iPPJ9rc2cIZF/QTjpqqpenNeHlTB67utJf2kf6GD8DWV7dQnO2i68Sqte6V6t0sj58O5fHalg507vN/NC/+G6cM7s7SR5bQ+/e9iW7TOP58E6kLFsOoxz2qmpjc3FxiYmLIyckhOrr+/yD619CXSF+3i4/HXE+/+FyGtvezQnAd8rq8rLvtOwD6vXwmVmfN/oJ2GSFMzjdn4j0X8TVOS9nxaiWeEjI+3036Z7txxofSdVw+Cad8S0h8P+hxF4S3AcB9qJBd/1zNzjnf4T5YSGz/tsQO6EB4+1gIsVCwPZvsZdvI3ZhOZPeWdH98BM0HtDf3Tj2QClnfwaGNYHjMbsjIJIjoaHavhiXWa8vprvxQvt7bnKUZzfGUhHB1573c3jONltUMftkuO//8tTXv/NaazCIn0XY37SKKsFoMDhbb2ZUfhs1SwrC2WfypRxp9mufV0R0FCW8hLBlhfn/uQjNkSpVtyQnnqq/60TGykHtP3eZ3WaJDP2Tz/Q3LaH1Ze1pf2q7a18hzW5mzpS3NnG4e7fg+Ib++x4LXfk+H83ow9sOxWCpbC0mkCQt44Js1axZ/+9vfSE9Pp1evXsycOZPBgwdXWH7p0qVMmTKFn376idatW3Pvvfcyfvz4MmXmz5/PtGnT2Lp1K507d+aJJ57giiuuqNZ1DcPg0Ucf5dVXX+XgwYMMGDCAl19+mV69qr46bsACnzuX9A+e5NVrwygckcj3Xc/ntp5phNak++8k1FfgK1W0r5Dd/97BoXXZOOOstDgtk4iWh/DYupG7O4Gs5fsAiD+3Mwm/60Voov//Jnmbd7Hrje/I315AqyE5nDJ6I45YiznZJaaHOVbMGU8wjIPMd1v57554PtvVAq9h4doue/lj910nbPHbk+/kH7+0419bW2EYMDjxIOe2yqZzVEGZxsjcYivL9zVj8d540gtCOb/VASb32cGpzaswNq8hUuCrsc2HIrj6m75E2z08eNpWovxsoVa0r5BVf1hOiCOE7vefisVas/+H9hU6eOPXNnSNLmBKq/c58PW3LJl/Pmffl8IFT11ysrci0igFtEt33rx5TJo0iVmzZnHWWWfx97//neHDh/Pzzz/Tvn37cuW3b9/OiBEjuPXWW3nnnXf43//+x4QJE2jRogWjR48GIDU1lbFjx/L4449zxRVXsGDBAsaMGcPy5csZMGBAla/717/+lWeffZY333yTbt268Ze//IWLLrqIX375haioqHJ1CwpFmfDbq+SumMO//3wZxMewpMNF/K71/noPe4EQmhBGl9t6UJCWx/5v93HgFwd7vo3D5nThbPYLbc/z0HxAC+wti8G+DQ45AOPoRIOifVCwi8iiTLpfBVk/tWXPN/Fkrh5M0k1daX9NF2wR9kDfZhkRdi+jOu5jaJssFu5qwdytrXhrSxsuanOA4e32kxKfQ0JYMSUGpBc4Wbk/ls93tWBJenPCbV4uabefYW32E+0o/5czQLTDy4h2WVzcNosVmbEs2JHI7xYlMyQxmz9238WghIOVLi4tjV+JAe/81pon1ncmMczFA339h738nXmsGZ9KSbGXLrf3qHHYA0gIK+bqTul8sL0VD7mu5U9DEknOWczyp8Fy+FfOfXY8IU7NyhY5VkBb+AYMGED//v2ZPXu271iPHj24/PLLmT59erny9913H5988gmbNm3yHRs/fjwbNmwgNTUVgLFjx5Kbm8vnn3/uK3PxxRfTrFkz3nvvvSpd1zAMWrduzaRJk7jvvvsAcLlcJCQk8PTTT/PHP/6xSvdX5y18rmxzUdms72Dv5xj7lvHLuh78591R5BZGsOx3wxnSq4gBLXJq/9pVUN8tfBUyvFC4x5xcUZR5ZKKBp2wZa9jRZULCEszJDLYY3IfdpH+2i/1LMghxWGn9u7a0PL8Vsf3ianw/dSnfbWXZvmYsSW/Ojryjg+EtGBhYsGDQNTqfc1plc1bLQ4T6WQy3MiUGrMiM5dO0luzIC6dNeBGXdchkSGI2fZsfJsLPX/QNilr4qmxXXihf7Y3jzS1t2J4XztA2+7m2816cx/3jsmBXPnsW7GTHP7fiaOag25ReOONqJ4wdcNn4cEci6QWhnN4sk56p/yHrmxBaJWVx1q1hnDLmXKytzjDXmRRp4gIW+IqLiwkPD+eDDz4o09165513sn79epYuXVruM0OGDKFfv348//zzvmOlLXgFBQXY7Xbat2/P5MmTmTx5sq/Mc889x8yZM9m5c2eVrrtt2zY6d+7M2rVr6devn6/MyJEjiY2N5a233vJ7Ty6XC5fr6DZgOTk5tG/fnl27dtU88JW4YdUE2Pn+CYtOf/5h+NG8/u5TOmOLtRJvzz3Bp+qQtwRbaiYAnoEtwep/Jf0TcVttzB8+DoDRn/8Tu9dzgk9URcnR2aWWEE7UPWvJc2Ndf+DEpw2xHHlhnjOArV8GFkqw+Oa7WoAQjGOOnJwSQvAaVb9BvyWDrHXQ5ihm6rNPATB9yv14ipvQgr5+fi0q+02xgO//ISslWAwDPJX/A8I7oCWGvWZ/DlQmoziWohIzRMZkZtEibbfvPSPEwpUPz6db6y3mgTaXwsC3TnrZnqioKCzaB1EakIB16WZlZeH1eklIKLvCekJCAhkZGX4/k5GR4be8x+MhKyuLVq1aVVim9JxVuW7pV39ldu7cWeE9TZ8+nUcffbTc8Xbtqj8wuWaOufYv9XTJqko9yc8vvR2A509QLOCOrLYiDZQLnrq19IenAlmTxmllAK5ZAk8/fOyBT4GT32UoUJPxRGoq4MuyHP8vJMMwKv1Xk7/yxx+vyjlrq8yxpk6dypQpU3w/l5SUkJ2dTVxcXIP4l2Bubi7t2rU7uRbJJk7P8OTpGdYOPceTV9kzDNqx3CIVCFjgi4+Px2q1lmvNy8zMLNeyVioxMdFveZvNRlxcXKVlSs9ZlesmJiYCZktfq1atqlQ3AKfTidNZdmmO2NjYCssHq+joaP0FcZL0DE+enmHt0HM8eXqG0hjU/mCKKnI4HCQnJ7N48eIyxxcvXsygQf5XTB84cGC58osWLSIlJQW73V5pmdJzVuW6SUlJJCYmlilTXFzM0qVLK6ybiIiISNAyAmju3LmG3W435syZY/z888/GpEmTjIiICGPHjh2GYRjG/fffb4wbN85Xftu2bUZ4eLgxefJk4+effzbmzJlj2O1249///revzP/+9z/DarUaTz31lLFp0ybjqaeeMmw2m/Hdd99V+bqGYRhPPfWUERMTY3z44YfGxo0bjauvvtpo1aqVkZubWw9PJjBycnIMwMjJyQl0VRosPcOTp2dYO/QcT56eoTQmAQ18hmEYL7/8stGhQwfD4XAY/fv3N5YuXep774YbbjDOOeecMuWXLFli9OvXz3A4HEbHjh2N2bNnlzvnBx98YJxyyimG3W43unfvbsyfP79a1zUMwygpKTEefvhhIzEx0XA6ncaQIUOMjRs31s5NB6mioiLj4YcfNoqKigJdlQZLz/Dk6RnWDj3Hk6dnKI1JwHfaEBEREZG6FbAxfCIiIiJSPxT4RERERBo5BT4RERGRRk6BT0RERKSRU+ATn1mzZpGUlERoaCjJycksW7Ys0FUKiOnTp3P66acTFRVFy5Ytufzyy/nll7J71RmGwSOPPELr1q0JCwvj3HPP5aeffipTxuVycccddxAfH09ERASXXXYZu3fvLlPm4MGDjBs3jpiYGGJiYhg3bhyHDh2q61usV9OnT8disTBp0iTfMT2/qtmzZw/XXXcdcXFxhIeHc9ppp7FmzRrf+3qOlfN4PDz00EMkJSURFhZGp06deOyxxygpObr/oZ6hNBmBnCIswaN0bcLXXnvN+Pnnn40777zTiIiIMHbu3BnoqtW7YcOGGW+88Ybx448/GuvXrzcuueQSo3379kZeXp6vzFNPPWVERUUZ8+fPNzZu3GiMHTu23DqN48ePN9q0aWMsXrzYWLt2rXHeeecZffv2NTwej6/MxRdfbPTu3dtYsWKFsWLFCqN3797GpZdeWq/3W5e+//57o2PHjsapp55q3Hnnnb7jen4nlp2dbXTo0MG48cYbjZUrVxrbt283vvzyS+O3337zldFzrNxf/vIXIy4uzvj000+N7du3Gx988IERGRlpzJw501dGz1CaCgU+MQzDMM444wxj/PjxZY51797duP/++wNUo+CRmZlpAL61GktKSozExETjqaee8pUpKioyYmJijFdeecUwDMM4dOiQYbfbjblz5/rK7NmzxwgJCTG++OILwzAM4+effzaAMouCp6amGoCxefPm+ri1OnX48GGja9euxuLFi41zzjnHF/j0/KrmvvvuM84+++wK39dzPLFLLrnEuOmmm8ocGzVqlHHdddcZhqFnKE2LunSF4uJi1qxZw9ChQ8scHzp0KCtWrAhQrYJHTk4OAM2bNwdg+/btZGRklHleTqeTc845x/e81qxZg9vtLlOmdevW9O7d21cmNTWVmJgYBgwY4Ctz5plnEhMT0yie+2233cYll1zChRdeWOa4nl/VfPLJJ6SkpHDVVVfRsmVL+vXrx2uvveZ7X8/xxM4++2y++uortmzZAsCGDRtYvnw5I0aMAPQMpWmxBboCEnhZWVl4vV4SEhLKHE9ISCAjIyNAtQoOhmEwZcoUzj77bHr37g3geyb+ntfOnTt9ZRwOB82aNStXpvTzGRkZtGzZstw1W7Zs2eCf+9y5c1m7di2rVq0q956eX9Vs27aN2bNnM2XKFB544AG+//57Jk6ciNPp5Prrr9dzrIL77ruPnJwcunfvjtVqxev18sQTT3D11VcD+l2UpkWBT3wsFkuZnw3DKHesqbn99tv54YcfWL58ebn3avK8ji/jr3xDf+67du3izjvvZNGiRYSGhlZYTs+vciUlJaSkpPDkk08C0K9fP3766Sdmz57N9ddf7yun51ixefPm8c477/Cvf/2LXr16sX79eiZNmkTr1q254YYbfOX0DKUpUJeuEB8fj9VqLfcv0czMzHL/8m1K7rjjDj755BO++eYb2rZt6zuemJgIUOnzSkxMpLi4mIMHD1ZaZt++feWuu3///gb93NesWUNmZibJycnYbDZsNhtLly7lhRdewGaz+e5Nz69yrVq1omfPnmWO9ejRg7S0NEC/h1Vxzz33cP/99/P73/+ePn36MG7cOCZPnsz06dMBPUNpWhT4BIfDQXJyMosXLy5zfPHixQwaNChAtQocwzC4/fbb+fDDD/n6669JSkoq835SUhKJiYllnldxcTFLly71Pa/k5GTsdnuZMunp6fz444++MgMHDiQnJ4fvv//eV2blypXk5OQ06Od+wQUXsHHjRtavX+97paSkcO2117J+/Xo6deqk51cFZ511VrnlgLZs2UKHDh0A/R5WRUFBASEhZf+as1qtvmVZ9AylSQnARBEJQqXLssyZM8f4+eefjUmTJhkR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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "palette = ['purple', 'dodgerblue', 'orange']\n", + "print(\"AVERAGE DURATION OF EACH CELL CYCLE PHASE\")\n", + "sb.displot(filtered_data, x=\"duration\", kind=\"kde\", hue='phase', fill=True, bw_adjust=.25, palette=palette)\n", + "plt.axvline(x=filtered_data[(filtered_data.phase == \"G2M_phase\")][\"duration\"].mean(),\n", + " color='orange')\n", + "plt.axvline(x=filtered_data[(filtered_data.phase == \"G0G1_phase\")][\"duration\"].mean(),\n", + " color='purple')\n", + "plt.axvline(x=filtered_data[(filtered_data.phase == \"S_phase\")][\"duration\"].mean(),\n", + " color='dodgerblue')\n", + "\n", + "#change color into red blue yellow" + ] + }, + { + "cell_type": "markdown", + "id": "fd1dba1e-0c84-4769-b188-3ace61c393d7", + "metadata": {}, + "source": [ + "We can see that there is a big accumulation of cells taking close to the whole duration of the simulation is G2M phase, meaning the cell cycle is blocked in G2M. " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "ca3ec0b6", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:10.719828Z", + "iopub.status.busy": "2024-06-07T17:39:10.719576Z", + "iopub.status.idle": "2024-06-07T17:39:10.930056Z", + "shell.execute_reply": "2024-06-07T17:39:10.929132Z", + "shell.execute_reply.started": "2024-06-07T17:39:10.719806Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 18, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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Nzc3unbtWmWrzp49e+jbty8eHh4MGjSImJgY477Tp09z2223ERwcbCwVuXxx6A8++IDIyEhji9Rdd91l3KcoCgsXLqRt27a4u7vTo0ePSsmbPUgy01DKuplKXNRkxiYtM84aAMJK9fDREHivL5QUWf19hBDCEoqikFec1+APc5YYSE1NZd26dUydOhVPz6pbuDUaTZXbDas7a7WmnR59+vQhIiKC7777DoDExET++usv7r///jrHZfDMM8/wr3/9i3379jFo0CBuvfVWUlNTTY6ZO3cub7zxBrt370ar1fLQQw8Z9+Xk5HDTTTexYcMG9u3bx8iRI7nllltISEgAYPfu3TzxxBO89NJLxMTEsHbtWq699lrj+f/5z39YunQpixcv5siRIzz11FPcd999bN682ex7sSbpZmooZd1Mpa6GZMb6rSaJqAlSWFoiZJT126bHQfOOVn8vIYQwV35JPv2/rHptI1vaMX4HHi4edTr21KlTKIpCx46m/28GBgZSUFAAwNSpU3n11VdN9qempvLyyy9XuxDlgw8+yKeffsp9993H0qVLuemmm2jevLnZ9zJt2jTuvPNOABYvXszatWv55JNPmDVrlvGY//73vwwZMgSAf//734wePZqCggLc3Nzo0aMHPXr0MB47b948Vq9ezZo1a5g2bRoJCQl4enpy88034+3tTXh4OL169QIgNzeXRYsW8eeffzJw4EAA2rZty5YtW/joo4+M72kP0jLTUMq6mRSdD4BNRjMlFKtrP7UurnDttFirv48QQji6y1tfdu7cyf79++natSuFhYUm+7Kyshg9ejRdunThhRdeqPJ69913H9u2bSM2NpZly5aZtJaYw5BEAGi1Wvr27cuxY8dMjunevbvxuWHpoeTkZEBNSGbNmkWXLl3w8/PDy8uL48ePG1tmhg8fTnh4OG3btuX+++/niy++IC8vD4CjR49SUFDA8OHD8fLyMj5WrFjB6dOnLbofa5GWmYZS1s2Em5rM2KRlpiAFgNbFFa4tyYwQopFw17qzY/wOu7xvXbVv3x6NRsPx48dNtrdt21a9lrvptbKzs7nxxhvx8vJi9erVxtWzLxcQEMDNN9/Mww8/TEFBAaNGjSI7O9vMO6na5YlXxRgM+/R6dT3AZ555ht9//53XX3+d9u3b4+7uzl133WWcANfb25u9e/eyadMm1q1b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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df2 = full_data.groupby(['time_step','phase'])['phase'].count().reset_index(name='counts')\n", + "\n", + "sb.lineplot(data=df2, x=\"time_step\", y=\"counts\", hue=\"phase\")" + ] + }, + { + "cell_type": "markdown", + "id": "9c065bf7-be65-474b-86d1-a07a31eddfe9", + "metadata": {}, + "source": [ + "When looking at the growth curves by cell phase, we see that the total size of the population reaches a plateau, which is only composed of cells in G2M phase. Interestingly, it seems that no cells is activating apoptosis. " + ] + }, + { + "cell_type": "markdown", + "id": "c47c9834", + "metadata": {}, + "source": [ + "## FOXO3 KNOCK-OUT ANALYSIS" + ] + }, + { + "cell_type": "markdown", + "id": "01428a2d-bb80-43f6-93bb-b9a4486b3cf5", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-29T19:04:10.780747Z", + "iopub.status.busy": "2024-02-29T19:04:10.779547Z", + "iopub.status.idle": "2024-02-29T19:04:10.787143Z", + "shell.execute_reply": "2024-02-29T19:04:10.786093Z", + "shell.execute_reply.started": "2024-02-29T19:04:10.780698Z" + } + }, + "source": [ + "We then look at another mutant : FoxO3 inhibition. Again, the simulation results analysed here can be produced by running the model with the XML settings **PhysiCell_settings_foxo3_knockout_notebook.xml**. \n", + "Once simulated, we can load the data in the same way as with the wild type model." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "23476cc5", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:10.931559Z", + "iopub.status.busy": "2024-06-07T17:39:10.931222Z", + "iopub.status.idle": "2024-06-07T17:39:10.940002Z", + "shell.execute_reply": "2024-06-07T17:39:10.939432Z", + "shell.execute_reply.started": "2024-06-07T17:39:10.931530Z" + } + }, + "outputs": [], + "source": [ + "path = \"../../../../output_foxo3_knockout/\"\n", + "xml_files = []\n", + "for folder, cose, files in os.walk(path):\n", + " for name in files:\n", + " if name.endswith(\".xml\") & name.startswith(\"output\"):\n", + " xml_files.append(name)\n", + " \n", + "xml_files.sort()" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "b089f2f4", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:10.940908Z", + "iopub.status.busy": "2024-06-07T17:39:10.940702Z", + "iopub.status.idle": "2024-06-07T17:40:03.793807Z", + "shell.execute_reply": "2024-06-07T17:40:03.792852Z", + "shell.execute_reply.started": "2024-06-07T17:39:10.940890Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "c5d28b42b33a4c1aa7d446e0049b1ff0", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/241 [00:00" + ] + }, + "execution_count": 22, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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AZ999lm175uQkBCuGJZyOBwkJyfTr1+/hv5YGpURMggFQrWew2exWLC77KrwiYiINGNNGvimTp1KVlYWDz30EAcOHGDw4MEsW7aM7t27A3DgwIEye+OlpqaybNkyZs2axTPPPEOnTp148sknmTRpUrjN6NGjWbRoEffeey9z586lV69eLF68mJEjR1b7vm1JwGsGtdpW+MCcx6cKn4iISPPV5Is2ZsyYwYwZMyp87uWXXy732FlnncWGDRuqvObkyZOZPHlyre9bkV27dlW7bUtSumFybSt8gCp8IiIizVyTH60mTSvoDQLUetEGmGFRFT4REZHmq1Y/5Xfu3Fnf/ZAmEq7w1XFIVxU+ERGR5qtWga93796cc845vPbaa3g8nvrukzSi8By+Ogzpag6fiIhI81arwLd582ZOOeUUfve735GcnMxNN93El19+Wd99k0ZQWuGzOmo/pGt3ag6fiIhIc1arn/KDBw/m8ccfZ9++fbz00ktkZGRw5plnMmjQIB5//HEOHz5c3/2UBlI6h69OFT6nhnRFRESaszot2rDb7Vx++eX885//ZP78+Wzfvp3bb7+dLl26cPXVV3PgwIH66qc0kPqaw6chXRERkearToFv3bp1zJgxg5SUFB5//HFuv/12tm/fzkcffcS+ffuYOHFiffVTGki9zOFz2vAXKfCJiIg0V7UKfI8//jhDhgxh9OjR7N+/n1dffZXdu3fzhz/8gdTUVM444wz++te/nnC/PGl62odPRESagx49epCWltbU3Wi1arXx8rPPPst1113Hr3/9a5KTkyts061bN1588cU6dU4aXr3M4dOQroiISLNWq8C3YsUKunXrhtVatkBoGAZ79uyhW7duOJ1OrrnmmnrppDSc+lilq0UbIiIizVutfsr36tWLzMzMco9nZ2eTmppa505J46mPs3TtLrsqfCIiUqWzzz6bW265hVtuuYX4+HgSEhK49957MQwj3KaoqIjrrruOmJgYunXrxvPPP1/mGnfeeSd9+/YlMjKSnj17MnfuXPz+oz9/Nm/ezDnnnENMTAyxsbEMHz6cdevWhZ9fvXo1Y8eOJSIigq5duzJz5kwKCwsb/s03A7UKfMf+4RyroKAAt9tdpw5J4wp4AljtVixWS62voZM2RESkOl555RXsdjtr167lySef5IknnuBvf/tb+PkFCxYwYsQINm7cyIwZM/jNb37D999/H34+JiaGl19+mS1btvCXv/yFF154gSeeeCL8/JVXXkmXLl346quvWL9+PXfddRcOhwOAb775hvHjx3PFFVfw9ddfs3jxYj777DNuueWWxvsAmlCNhnRnz54NgMVi4b777iMyMjL8XDAYZO3atZx88sn12kFpWEFvEJur9tU9KBnS9SjwiYhI1bp27coTTzyBxWKhX79+fPPNNzzxxBPceOONAFx00UXMmDEDMKt5TzzxBJ988gn9+/cH4N577w1fq0ePHvzud79j8eLF/P73vwcgPT2dO+64I9y+T58+4fZ//vOf+dWvfsVtt90Wfu7JJ5/krLPO4tlnn231BasaBb6NGzcCZoXvm2++wel0hp9zOp2cdNJJ3H777fXbQ2lQAU+gTsO5cHRI1zAMLJbaVwpFRKR1O/3008v8nBg1ahQLFiwgGDQXEA4dOjT8nMViITk5mUOHDoUf+/e//01aWho//fQTBQUFBAIBYmNjw8/Pnj2bG264gX/84x+cf/75/PznP6dXr14ArF+/np9++onXX3893N4wDEKhEDt37mTAgAEN9r6bgxoFvo8//hiAX//61/zlL38p8yFLyxTwBuq0QhfMIV0MCPqC2F21WgckIiISHn4tZbFYCIVCAHzxxRf84he/4MEHH2T8+PHExcWxaNEiFixYEG7/wAMP8Ktf/Yr33nuP999/n/vvv59FixZx+eWXEwqFuOmmm5g5c2a5+3br1q1h31gzUKufzi+99FJ990OaSMBTT4EPCBQHFPhERKRSX3zxRbnv+/Tpg8124p9Dn3/+Od27d+eee+4JP7Z79+5y7fr27Uvfvn2ZNWsWv/zlL3nppZe4/PLLGTZsGN999x29e/eu+xtpgar90/mKK67g5ZdfJjY2liuuuKLKtm+++WadOyaNI+gNYnXW6cAV7E7zr5G/2I87vnXPgRARkdrbs2cPs2fP5qabbmLDhg089dRTZSp0Venduzfp6eksWrSIU089lffee4+lS5eGny8uLuaOO+5g8uTJpKamsnfvXr766ismTZoEmHMCTz/9dG6++WZuvPFGoqKi2Lp1KytWrOCpp55qkPfbnFQ78MXFxYXH3ePi4hqsQ9K46mMO37EVPhERkcpcffXVFBcXc9ppp2Gz2fjtb3/L//3f/1XrtRMnTmTWrFnccssteL1eLr74YubOncsDDzwAgM1mIysri6uvvpqDBw+SmJjIFVdcwYMPPgiY8wNXrlzJPffcw5gxYzAMg169ejF16tSGervNSrUD37HDuBrSbT2C3mCNN10OhiC7GDpEmd+XBj7txSciIlVxOBykpaXx7LPPlntu165d5R7btGlTme//9Kc/8ac//anMY6Wrbp1OJ2+88UaV9z/11FNZvnx5jfrcWtRqLK+4uJiioqLw97t37yYtLa3NfogtWU0rfIYBz62Dmf+FLYfNx0rn7anCJyIi0jzVKvBNnDiRV199FYCcnBxOO+00FixYwMSJEytM7dJ8Bbw1C3zLt8On6RDnhrQvzEpf6aIPVfhERESap1oFvg0bNjBmzBjA3BMnOTmZ3bt38+qrr/Lkk0/WawelYQU8gWov2ijwwatfw6md4NcnQ8iA177RHD4RETmxTz75hLS0tKbuRptVq8BXVFRETEwMAMuXL+eKK67AarVy+umnV7hEWpqvQHH1t2XZlgmBEJzeBaKdMCwFNhwA7EdX6YqIiEjzU6vA17t3b9566y327NnD//73P8aNGwfAoUOHtBlzC1OTjZe3ZkGsC0p3XumTAMV+2FGkCp+IiEhzVqvAd99993H77bfTo0cPRo4cyahRowCz2nfKKafUawelYdVk4+XvD0O3WCg9FSc5GmKcsClLc/hERESas1odizB58mTOPPNMDhw4wEknnRR+/LzzzuPyyy+vt85Jw6vuKl1vAHYcgfG9jj5mtUCv9rDxoJVhdqsqfCIiIs1Urc/BSk5OJjk5ucxjp512Wp07JI2ruhW+H7MhaEDX4/bc7tMeNmXACJddFT4REZFmqlaBr7CwkEcffZQPP/yQQ4cOhQ82LrVjx4566Zw0vKA3WK3A930mRDiObrZcqmc7sAAhu00VPhERkWaqVoHvhhtuYOXKlUybNo2UlJTwkWvS8lS3wvdDNnSJMYdxj+WymyEwaLepwici0shy03Mpyiw6ccN6EJkYSVw3Ha0KcO2115KTk8Nbb73V1F2ptloFvvfff5/33nuPM844o777I40s4A1U62i1A/nQq13FzyVHg89qV4VPRKQR5abn8syAZ/AXNc7/bDsiHdy89eYah76MjAzmzZvHe++9x969e4mLi6NPnz5cddVVXH311URGRuL1ern99tt54403KC4u5rzzzmPhwoV06dKl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8O9TUlIAwsWZYDDII488wtChQ0lISCA6Oprly5eTnp4OwEknncR5553HkCFD+PnPf84LL7wQ3k/48OHD7Nmzh+uvvz5crYyOjuYPf/gD27dvr9Xn0ZSaLPCVbnWyYsWKMo+vWLGC0aNHV/iaUaNGlWu/fPlyRowYgcPhqLJN6TVrc99ShmHUuizdHAW8lQe+Qj/4gzUMfE57eEgXYFduPXRSRERaNLfbzQUXXMB9993H6tWrufbaa7n//vtrfb3jR+NKf/4f+1woFAJgwYIFPPHEE/z+97/no48+YtOmTYwfPx6fzweY+wevWLGC999/n4EDB/LUU0/Rr18/du7cGb7GCy+8wKZNm8Jf3377LV988UWt+99UarRKt77Nnj2badOmMWLECEaNGsXzzz9Penp6eF+9OXPmsG/fPl599VUApk+fztNPP83s2bO58cYbWbNmDS+++GKZCZi33norY8eOZf78+UycOJG3336bDz74gM8++6za9y0sLOSRRx7h0ksvJSUlhaysLBYuXMjevXv5+c9/3oifUMOqapVufkmujarJog2njVCxnxgnRNjNzZdFRKRh7ctvWfcYOHAgb731VrXafvHFF2W2e/viiy845ZRTqn2vVatWMXHiRK666irADII//vgjAwYMCLexWCycccYZnHHGGdx33310796dpUuXMnv2bDp37syOHTu48sorq33P5qpJA9/UqVPJysrioYce4sCBAwwePJhly5bRvXt3wBxbLy27AqSmprJs2TJmzZrFM888Q6dOnXjyySfDW7IAjB49mkWLFnHvvfcyd+5cevXqxeLFi8tsmHyi+9psNr7//nteeeUVMjMzSUhI4NRTT2XVqlUMGjSokT6dhlfVkG5eSeCLrMHfEEvJKl2LBZKiYY8Cn4hIg2nvNjdDfvqrxrmf227es7qysrL4+c9/znXXXcfQoUOJiYlh3bp1/OlPf2LixInVusa//vUvRowYwZlnnsnrr7/Ol19+WaOpVb1792bJkiWsXr2adu3a8fjjj5ORkREOfGvXruXDDz9k3LhxdOzYkbVr13L48OHw8w888AAzZ84kNjaWCRMm4PV6WbduHUeOHGH27NnV/zCagSYNfAAzZsxgxowZFT5X0Rj/WWedxYYNG6q85uTJk5k8eXKt7+t2u3nzzTerfH1rEPQEKw18+Wa1m8gaDOna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2cpV8w4dOlSuslYqOTm5wvZ2u52EhIQq25Reszr3TU42j0zIyMggJSWlwjYVcblcuFxlh/3i4+Mrbd/cxMbG6odDHekzrB/6HOuHPse602corUX9bJteC06nk+HDh7NixYoyj69YsYLRo0dX+JpRo0aVa798+XJGjBiBw+Gosk3pNatz39TUVJKTk8u08fl8rFy5stK+iYiIiDRbRhNatGiR4XA4jBdffNHYsmWLcdtttxlRUVHGrl27DMMwjLvuusuYNm1auP2OHTuMyMhIY9asWcaWLVuMF1980XA4HMa///3vcJvPP//csNlsxqOPPmps3brVePTRRw273W588cUX1b6vYRjGo48+asTFxRlvvvmm8c033xi//OUvjZSUFCMvL68RPpnGlZubawBGbm5uU3elxdJnWD/0OdYPfY51p89QWpsmDXyGYRjPPPOM0b17d8PpdBrDhg0zVq5cGX7ummuuMc4666wy7T/55BPjlFNOMZxOp9GjRw/j2WefLXfNf/3rX0a/fv0Mh8Nh9O/f31iyZEmN7msYhhEKhYz777/fSE5ONlwulzF27Fjjm2++qZ833cx4PB7j/vvvNzweT1N3pcXSZ1g/9DnWD32OdafPUFqbJj9pQ0REREQaVpPN4RMRERGRxqHAJyIiItLKKfCJiIiItHIKfCIiIiKtnAJfG7dw4UJSU1Nxu90MHz6cVatWNXWXmsS8efM49dRTiYmJoWPHjlx22WVs27atTBvDMHjggQfo1KkTERERnH322Xz33Xdl2ni9Xn7729+SmJhIVFQUl156KXv37i3T5siRI0ybNo24uDji4uKYNm0aOTk5Df0Wm8S8efOwWCzcdttt4cf0OVbPvn37uOqqq0hISCAyMpKTTz6Z9evXh5/X51i1QCDAvffeS2pqKhEREfTs2ZOHHnqIUCgUbqPPUNqUplwiLE2rdD/CF154wdiyZYtx6623GlFRUcbu3bubumuNbvz48cZLL71kfPvtt8amTZuMiy++2OjWrZtRUFAQbvPoo48aMTExxpIlS4xvvvnGmDp1arm9GadPn2507tzZWLFihbFhwwbjnHPOMU466SQjEAiE21x44YXG4MGDjdWrVxurV682Bg8e/P/buf+YqOs/DuDPD3fcERy7BIWPhoLMDBFocleKMGRquqmr5lZJKDJbLQ3lMgiXo1qFuTn8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "palette = ['purple', 'dodgerblue', 'orange']\n", + "print(\"AVERAGE DURATION OF EACH CELL CYCLE PHASE\")\n", + "sb.displot(filtered_data, x=\"duration\", kind=\"kde\", hue='phase', fill=True, bw_adjust=.25, palette=palette)\n", + "plt.axvline(x=filtered_data[(filtered_data.phase == \"G2M_phase\")][\"duration\"].mean(),\n", + " color='orange')\n", + "plt.axvline(x=filtered_data[(filtered_data.phase == \"G0G1_phase\")][\"duration\"].mean(),\n", + " color='purple')\n", + "plt.axvline(x=filtered_data[(filtered_data.phase == \"S_phase\")][\"duration\"].mean(),\n", + " color='dodgerblue')\n", + "\n", + "#change color into red blue yellow" + ] + }, + { + "cell_type": "markdown", + "id": "48ab65d0-59c0-4c6c-be87-319c92c1bc98", + "metadata": {}, + "source": [ + "Here we see that cells have a larger tail in all phases : cycle is active, but is slowed down in all phases." + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "aea3630c", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:40:14.810720Z", + "iopub.status.busy": "2024-06-07T17:40:14.810304Z", + "iopub.status.idle": "2024-06-07T17:40:15.091612Z", + "shell.execute_reply": "2024-06-07T17:40:15.090193Z", + "shell.execute_reply.started": "2024-06-07T17:40:14.810685Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 23, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df2 = full_data.groupby(['time_step','phase'])['phase'].count().reset_index(name='counts')\n", + "\n", + "sb.lineplot(data=df2, x=\"time_step\", y=\"counts\", hue=\"phase\")" + ] + }, + { + "cell_type": "markdown", + "id": "dd96d2c9-f2c8-40b6-9fda-1809286ab5d2", + "metadata": {}, + "source": [ + "Here we get a better idea of the behavior of this mutant. After a first normal cell cycle, we see a large amount of cell death, followed by a slow growth, corresponding to the long cell cycle phases observed above. " + ] + }, + { + "cell_type": "markdown", + "id": "d0d8c86c", + "metadata": {}, + "source": [ + "## p110_H KNOCK-IN ANALYSIS\n", + "\n", + "Finally, we look at one more mutant : p110++. Again, the simulation results analysed here can be produced by running the model with the XML settings **PhysiCell_settings_p110_kockin_notebook.xml**. \n", + "Once simulated, we can load the data in the same way as with the wild type model." + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "b0cee070", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:40:15.093298Z", + "iopub.status.busy": "2024-06-07T17:40:15.092922Z", + "iopub.status.idle": "2024-06-07T17:40:15.100894Z", + "shell.execute_reply": "2024-06-07T17:40:15.099938Z", + "shell.execute_reply.started": "2024-06-07T17:40:15.093271Z" + } + }, + "outputs": [], + "source": [ + "path = \"../../../../output_p110_knockin\"\n", + "\n", + "xml_files = []\n", + "for folder, cose, files in os.walk(path):\n", + " for name in files:\n", + " if name.endswith(\".xml\") & name.startswith(\"output\"):\n", + " xml_files.append(name)\n", + " \n", + "xml_files.sort()" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "d485adcb", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:40:15.102498Z", + "iopub.status.busy": "2024-06-07T17:40:15.102033Z", + "iopub.status.idle": "2024-06-07T17:43:32.266335Z", + "shell.execute_reply": "2024-06-07T17:43:32.265398Z", + "shell.execute_reply.started": "2024-06-07T17:40:15.102451Z" + } + }, + "outputs": [ + { + "data": { + "application/vnd.jupyter.widget-view+json": { + "model_id": "7418615994994be599627fe1b19eaf33", + "version_major": 2, + "version_minor": 0 + }, + "text/plain": [ + " 0%| | 0/161 [00:00" + ] + }, + "execution_count": 27, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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1lm6omVzOaVrrVC+trYMH4A+Cno+BgFR8P0zUOX7jUERyRGc3S8BnxBC1KawsJBt27Yxf/58Ro0aRWJiIldccQWzZ8/m+uuvr/d+lUrFkiVLGDt2LIGBgSQlJfHvf/+7Rrtjx44xatQogoKC6NevH+np6Y738vLy+M1vfkOnTp0ICgqiT58+rFy50un+//znP/Tp04fAwECioqL41a9+RVlZmeP9d999l549e2IwGOjRoweLFy/24KfiOxLw+SGr2Vpz00ZrDvgA9JGQMBnsNig66OvREJEcQcGxAqpKq5yul+WUse6udXxw/Qd88+I3PhqdEEL4ntFoxGg0sm7dOrfX+M+dO5eJEyeyf/9+7rjjDn7zm99w8KDz3wFz5szhscceY9++fVx22WX85je/cWwgraysJDU1lf/+978cOHCA3/3ud0ydOpUdO3YAkJWVxW9+8xvuueceDh48yObNm5kwYQJ2ux2Av/71r8yZM4eXXnqJgwcP8vLLLzN37lzee+89D34yviEBnx9yOaVrOR/waVpRWZZL6SOUNXwtIeDrosyf5BzIcbq+b/k+Dqw6QN6hPLb9aRs2q5RuEUK0TVqtluXLl/Pee+8RHh7OlVdeydNPP83333/f4Gfceuut3HfffVx22WW88MILpKWl8eabbzq1eeyxx7j++uu57LLL+OMf/8iJEyc4ckSp7tCxY0cee+wx+vfvT3JyMv/3f//HmDFjHJnCrKwsLBYLEyZMoHPnzvTp04fp06djNBoBeOGFF3jttdeYMGECSUlJTJgwgZkzZ/L222976afUfCTg80PWKheFl63lytdWt4bvYioISoSiH309EMITw1FpVDXW8f34rx/pOLgjlz90OeYys5y5K4Ro0yZOnMiZM2f4+OOPGTNmDJs3b2bgwIEsX768QfdfurFjyJAhNTJ8ffv2dfy6Q4cOgLJZBJRyci+99BJ9+/YlKioKo9HIhg0byMzMBKBfv35cc8019OnTh1tvvZW//vWvjnrC586d4+TJk9x7772ObKXRaOTFF1/k6NGjbv08fEkCPj/ksvCy9XyhptZ00oYrwYlQfEjZhOJDGr2GsIQwp4Cv8HghWbuz6DyyM1GXRYEKzuw848NRCiGE7xkMBq699lqeffZZtm/fzt13380f/vAHt5+nUjkvWdLpdDXes9mU2ZXXXnuN119/nSee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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "filtered_data_duration = filtered_data[filtered_data['duration'].abs() < 1000]\n", + "\n", + "palette = ['purple', 'dodgerblue', 'orange']\n", + "print(\"AVERAGE DURATION OF EACH CELL CYCLE PHASE\")\n", + "sb.displot(filtered_data_duration, x=\"duration\", kind=\"kde\", hue='phase', fill=True, bw_adjust=.25, palette=palette)\n", + "plt.axvline(x=filtered_data_duration[(filtered_data.phase == \"G2M_phase\")][\"duration\"].mean(),\n", + " color='orange')\n", + "plt.axvline(x=filtered_data_duration[(filtered_data.phase == \"G0G1_phase\")][\"duration\"].mean(),\n", + " color='purple')\n", + "plt.axvline(x=filtered_data_duration[(filtered_data.phase == \"S_phase\")][\"duration\"].mean(),\n", + " color='dodgerblue')\n", + "\n", + "#change color into red blue yellow" + ] + }, + { + "cell_type": "markdown", + "id": "4d98e8da-0e80-407a-a283-3f893c23a57e", + "metadata": {}, + "source": [ + "Here we don't see much difference in the phasers durations, aside from a shorted G2M phase. " + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "04c18f89", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:45:03.447190Z", + "iopub.status.busy": "2024-06-07T17:45:03.446793Z", + "iopub.status.idle": "2024-06-07T17:45:03.664100Z", + "shell.execute_reply": "2024-06-07T17:45:03.662586Z", + "shell.execute_reply.started": "2024-06-07T17:45:03.447159Z" + } + }, + "outputs": [ + { + "data": { + "text/plain": [ + "" + ] + }, + "execution_count": 28, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "df2 = full_data.groupby(['time_step','phase'])['phase'].count().reset_index(name='counts')\n", + "\n", + "sb.lineplot(data=df2, x=\"time_step\", y=\"counts\", hue=\"phase\")" + ] + }, + { + "cell_type": "markdown", + "id": "80e48ed1-b44c-48e2-a052-a5d31354c07c", + "metadata": {}, + "source": [ + "And again, by looking at the growth curves, we obtain a very similar distribution of phase durations as for the wild type. The big difference is not in the phase duration : it is in the complete inactivation of apoptosis. " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1538cb22-aaf0-42b5-81f9-1d22d2b4a9e3", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/sample_projects_intracellular/boolean/tutorial/scripts/Cell_cycle_boolean_analysis.ipynb b/sample_projects_intracellular/boolean/tutorial/scripts/Cell_cycle_boolean_analysis.ipynb new file mode 100644 index 000000000..1024fd9ab --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/scripts/Cell_cycle_boolean_analysis.ipynb @@ -0,0 +1,1846 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "2873973f-44fb-4af5-ac9d-30410021457f", + "metadata": {}, + "source": [ + "# Analysis of the Boolean model of cell cycle by Sizek et al.\n", + "\n", + "In this jupyter notebook, we will analyse different aspects of the cell cycle model published here : \n", + "https://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1006402" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "id": "c6cdcd90", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:06.823340Z", + "iopub.status.busy": "2024-06-07T17:38:06.822862Z", + "iopub.status.idle": "2024-06-07T17:38:09.484519Z", + "shell.execute_reply": "2024-06-07T17:38:09.484026Z", + "shell.execute_reply.started": "2024-06-07T17:38:06.823276Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import maboss\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import pandas as pd \n", + "import os\n", + "from tools import load_trajs, draw_graph_from_pandas, compute_circuits, compute_stg_counts" + ] + }, + { + "cell_type": "markdown", + "id": "cf77012b-96d7-47a6-a7ca-871a2c6afd8e", + "metadata": {}, + "source": [ + "The model files are available in the config/cell_cycle/boolean_network folder of the tutorial sample project" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e4316244", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:09.485800Z", + "iopub.status.busy": "2024-06-07T17:38:09.485231Z", + "iopub.status.idle": "2024-06-07T17:38:09.489581Z", + "shell.execute_reply": "2024-06-07T17:38:09.488936Z", + "shell.execute_reply.started": "2024-06-07T17:38:09.485767Z" + } + }, + "outputs": [], + "source": [ + "path = \"../config/cell_cycle/boolean_network/\"\n", + "bnd_file = os.path.join(path, \"intracellular_model.bnd\")\n", + "cfg_file = os.path.join(path, \"intracellular_model.cfg\")" + ] + }, + { + "cell_type": "markdown", + "id": "3cd60c6f-98f1-426f-ab60-f0898560733f", + "metadata": {}, + "source": [ + "## Simulation of the wild type model" + ] + }, + { + "cell_type": "markdown", + "id": "61fffc0a-f7e8-413d-85d5-e0b6e51efbc4", + "metadata": {}, + "source": [ + "We initially load this model, and simulate it for 48 hours, focusing on Cyclin A, Cyclin B, Cyclin E and Caspase 3" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "c1ecd843", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:09.490629Z", + "iopub.status.busy": "2024-06-07T17:38:09.490386Z", + "iopub.status.idle": "2024-06-07T17:38:10.890170Z", + "shell.execute_reply": "2024-06-07T17:38:10.888883Z", + "shell.execute_reply.started": "2024-06-07T17:38:09.490610Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sim = maboss.load(bnd_file, cfg_file)\n", + "sim.update_parameters(max_time=48)\n", + "sim.network.set_output([\"CyclinA\", \"CyclinB\", \"CyclinE\", \"Casp3\"])\n", + "\n", + "model = sim.run()\n", + "model.plot_node_trajectory()" + ] + }, + { + "cell_type": "markdown", + "id": "ef5ef318-ec58-48b2-8c81-cd8e57b6c1e2", + "metadata": {}, + "source": [ + "We can observe here the classic sequence of cyclins activation : Cyclin E, followed by Cyclin A, and finally Cyclin B. \n", + "But what we also observe, is that we very quickly loose this cyclic behavior : MaBoSS computes probability distribution. Since cells are not synchronized, very quickly what we obtain is just the average probability of each cyclin at any time point during the cell cycle. This informs us about the duration of the phases, but not about the sequential oscillations.\n", + "\n", + "Aside the cyclin trajectory, we also observe the behavior of Caspase 3, which slowly increase during the simulation to reach about 5% after 48h. This means an average cell will have 5% chances of dying in 48 hours. We can simulate a longer time frame to see it's behavior on more than 48 hours." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "1db1cafb-e8a5-4508-b895-9cab9a05852a", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:10.892772Z", + "iopub.status.busy": "2024-06-07T17:38:10.891999Z", + "iopub.status.idle": "2024-06-07T17:38:13.836839Z", + "shell.execute_reply": "2024-06-07T17:38:13.835593Z", + "shell.execute_reply.started": "2024-06-07T17:38:10.892725Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sim_long = sim.copy()\n", + "sim_long.update_parameters(max_time=480)\n", + "res_long = sim_long.run()\n", + "res_long.plot_node_trajectory()" + ] + }, + { + "cell_type": "markdown", + "id": "15c0b75f-2edd-4944-b6a5-6e3b6f942807", + "metadata": {}, + "source": [ + "Here we get a beter idea about the long term trajectory of the activation of Caspase 3 : after 480h (20 days), a cell has 50% chances of dying.\n", + "\n", + "One way to try to see better the cyclins oscilations is to remove one of the two sources of stochasticity of MaBoSS : the transition time, by switching to discrete time simulation : " + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "8586a6a4", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:13.838136Z", + "iopub.status.busy": "2024-06-07T17:38:13.837915Z", + "iopub.status.idle": "2024-06-07T17:38:14.385831Z", + "shell.execute_reply": "2024-06-07T17:38:14.384832Z", + "shell.execute_reply.started": "2024-06-07T17:38:13.838109Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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kpISxowZA8C0adN46623ePHFF0lOTmb+/PmEhYVVO46ysjLeffdd5s6dy4YNG0hPT+epp5664vUGg8GWxDS/uFTtKA3rJJ56xFa86oQlmpKNmwDwuu46h48F4Kn2pGdUT/5M/5PfTvxGiy4tnDLu1aijogi47Tby583j/JtvErfoZySl0tVhCUKDZ6qw8OX/Ob6m4Z8e+rAPam31/gacOHECWZZp0eLKf8u6d+9O8+bNmTt3LlOnTgVg1qxZ3HrrrXh7e1NcXMyHH37IJ598wj333ANAfHw8PXv2rHbMRqORzz//nPj4eAAeffRRpk+fXuWagwcP4u1tnW0vKyvDx8eHBQsW4OvrW+1xroWYGXFTzpoZkS0WSjZuBMC7T2+HjvV3Nze9GYD5R+azLXOb08a9muBHJ6Hw88Nw9CgFC39ydTiCILiJylmUf6vfGD9+PLNmzQIgOzubpUuXcv/99wOQkpKCwWCo1SF6np6etkQEICIiguzs7CrXNG/enH379rFv3z52797NI488wq233squXbuuedzqEDMjbkiWZaftpNGnpGDOyUHh6YkuKcmhY/1d3+i+jGw6kl9O/MIzG55h4bCFhHqGOm38y1EFBBAyaRLn33iD3G++wX/MrXZtiy8IQs2pNAoe+rCPS8atroSEBCRJIiUlhREjRlzxunHjxvHss8+ydetWtm7dSmxsLL169QJAp9PVNmTUanWV/5Yk6ZLlJo1GQ9Omf824d+jQgV9//ZUPPviA7777rtYxXIn4S+qGssuyKa4oRikpifOLc+hYpRs2AODZrRsKjcahY/3Tc12fo3lAc/L0eXy05yOnjn0l/reORuHri/HMGUovzhgJguA6kiSh1iqd/lGTXSqBgYEMGjSITz/9lNLS0ku+XllkGhQUxIgRI5g1axazZs3ivvvus12TkJCATqdzyDbgf6NUKikvL3foGCIZcUOVsyIxvjFolI5NEEo2XFyi6e28JZpKHioPXu72MgC/n/qdtMI0p8fwTwqdDv+RIwHImz/fxdEIguAuZsyYgdlspkuXLvz8888cP36clJQUPvroI7p162a7bvz48Xz77bekpKTYakMAPDw8eOaZZ5g6dSpz5szh5MmTbNu2jW+++caucZpMJrKyssjKyuL48eO89tprJCcnc/PNN9t1nH8SyzRuyHYmjYOLV80FBba+Gt69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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sim_discrete = sim.copy()\n", + "sim_discrete.update_parameters(discrete_time=1, max_time=250)\n", + "res_discrete = sim_discrete.run()\n", + "res_discrete.plot_node_trajectory()" + ] + }, + { + "cell_type": "markdown", + "id": "aaf404ea-9876-4179-82d1-a2cca6c45c95", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-28T20:11:23.042987Z", + "iopub.status.busy": "2024-02-28T20:11:23.042565Z", + "iopub.status.idle": "2024-02-28T20:11:23.416115Z", + "shell.execute_reply": "2024-02-28T20:11:23.415077Z", + "shell.execute_reply.started": "2024-02-28T20:11:23.042951Z" + } + }, + "source": [ + "We can indeed see a bit of a second oscillation, but barely. We still have one large source of stochasticity that we can't get rid of : the choice of the next transition, from the asynchronous update that MaBoSS is using. " + ] + }, + { + "cell_type": "markdown", + "id": "dd2d5ac4", + "metadata": {}, + "source": [ + "## Analysis of the model for PhysiBoSS with phenotypes output\n", + "\n", + "Conditions describing the transition to a next phase of the cell cycle are not so obvious : It does not depend on only one cyclin, and we need to prevent some abherent phenotypes. \n", + "To solve this, we added three new nodes : \n", + "- G0G1 entry : representing the transition from G2M to G0G1\n", + "- S_entry : representing the transition from G0G1 to S phase\n", + "- G2M_entry : representing the transition from S to G2M" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "9d13f315", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:14.388205Z", + "iopub.status.busy": "2024-06-07T17:38:14.387958Z", + "iopub.status.idle": "2024-06-07T17:38:14.945888Z", + "shell.execute_reply": "2024-06-07T17:38:14.944427Z", + "shell.execute_reply.started": "2024-06-07T17:38:14.388178Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGdCAYAAADAAnMpAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAACOhUlEQVR4nOzdd3xV9f348de5M/tmLwhJSNhhBkFAEFRAXKBW0bpQUKltrVrbau23VdpKf621tLagVgHrRMVVRRSoAsreYa+EhOy9c+f5/XGTSwIBkpDk3CTv5+NxIDn3jPfNuu/7Ge+PoqqqihBCCCGERnRaByCEEEKInk2SESGEEEJoSpIRIYQQQmhKkhEhhBBCaEqSESGEEEJoSpIRIYQQQmhKkhEhhBBCaEqSESGEEEJoyqB1AC3hcrnIyckhMDAQRVG0DkcIIYQQLaCqKpWVlcTGxqLTnb/9o0skIzk5OcTFxWkdhhBCCCHaICsri969e5/38S6RjAQGBgLuJxMUFKRxNEIIIYRoiYqKCuLi4jyv4+fTJZKRhq6ZoKAgSUaEEEKILuZiQyxkAKsQQgghNCXJiBBCCCE0JcmIEEIIITTVJcaMCCGE8C6qquJwOHA6nVqHIjSk1+sxGAyXXHZDkhEhhBCtYrPZyM3NpaamRutQhBfw8/MjJiYGk8nU5mtIMiKEEKLFXC4X6enp6PV6YmNjMZlMUoyyh1JVFZvNRmFhIenp6fTr1++Chc0uRJIRIYQQLWaz2XC5XMTFxeHn56d1OEJjvr6+GI1GTp06hc1mw8fHp03XkQGsQgghWq2t74BF99MePwvy0ySEEEIITUkyIoQQQghNtSkZWbx4MYmJifj4+JCamsrGjRsvePzbb7/N8OHDPSNu77//foqLi9sUsBBCCCG6l1YnIytWrOCxxx7jmWeeYffu3UycOJEZM2aQmZnZ7PHfffcd9957L3PnzuXAgQN88MEHbN++nXnz5l1y8EIIIURr5OXl8bOf/Yzk5GR8fHyIioriiiuu4OWXX/ZMVbZarfz0pz8lPDwcf39/brrpJk6fPn3Otb755htuuOEGIiIi8PHxISkpidmzZ7NhwwbPMXV1dcyZM4ehQ4diMBiYNWtWZz1Vj2+//RZFUSgrK+v0e7dUq5ORF198kblz5zJv3jwGDRrEokWLiIuLY8mSJc0ev2XLFhISEnj00UdJTEzkiiuu4OGHH2bHjh2XHLw3sdfVse3TD6kqkRYfIYTwRidPnmTkyJF8/fXXPP/88+zevZu1a9fy+OOP89///pe1a9cC8Nhjj/Hxxx/z3nvv8d1331FVVcUNN9zQpMDb4sWLufrqqwkLC2PFihUcOnSIN998k/Hjx/P44497jnM6nfj6+vLoo49yzTXXdPpzbg2bzabdzdVWsFqtql6vVz/66KMm+x999FF10qRJzZ7z/fffqyaTSf3iiy9Ul8ul5uXlqZMmTVIffvjh896nrq5OLS8v92xZWVkqoJaXl7cm3E71/ftvqS/cfr268vnfah2KEEJ0mNraWvXgwYNqbW2tqqqq6nK5VFttrSaby+VqVezTp09Xe/furVZVVTX7uMvlUsvKylSj0ai+9957nv3Z2dmqTqdTV69eraqqqp46dUo1Go3q448/ft7rNOe+++5TZ86c2aqYVVVVP/vsM3XUqFGq2WxWExMT1WeffVa12+2exwH13//+tzpr1izV19dXTU5OVj/99FNVVVU1PT1dBZps9913n6qqqnrllVeqP/7xj9XHH39cDQsLUydNmqTef//96vXXX9/k/na7XY2KilJff/31ZuM7+2eisfLy8ha9freqzkhRURFOp5OoqKgm+6OiosjLy2v2nPHjx/P2228ze/Zs6urqcDgc3HTTTbz00kvnvc/ChQt57rnnWhOa5tL37HT/v3cX5QX5WCKjLnKGEEJ0fQ6rlX/c9wNN7v3oGx9ibGFdi+LiYk+LiL+/f7PHKIrCzp07sdvtTJs2zbM/NjaWlJQUNm3axPTp01m5ciV2u51f/vKX571Oe/nqq6+4++67+cc//sHEiRM5ceIEDz30EAC/+93vPMc999xz/PnPf+Yvf/kLL730EnfddRenTp0iLi6OlStXcuutt3LkyBGCgoLw9fX1nPfGG2/wox/9iO+//x5VVSkpKWHSpEnk5uYSExMDwKpVq6iqquL2229vt+d1tjYNYD37C62q6nm/+AcPHuTRRx/lt7/9LTt37mT16tWkp6czf/78817/6aefpry83LNlZWW1JcxOU1tVSd6JY+5PVJW0/32tbUBCCCGaOH78OKqqMmDAgCb7w8PDCQgIICAggF/96lfk5eVhMpkICQlpclzjN91Hjx4lKCiI6Ohoz+MrV670XCcgIIC0tLR2ifuPf/wj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C4DevXtz6623EhISonFkF1eal8POLz7lwLdrPf3ogWERjJpxI0Ovno7Zz706dHFxMTt27GD37t2UlZWxbt06vvnmG4YMGcJll11Gnz59tHwaQgghyUhHcpZZwamCXkEfbNY6nFbzDw6h96AhnD64v1t21eTl5fHhhx9SVFQEwMSJE5k8eTJ6Lx9PkX3kEDs//5hj2zdD/biWyIQkRt94M/0vvwL9WVN8w8LCmD59OldddRX79+9nx44dZGdnk5aWRlpaGgMGDGD69OltrlkihBCXqk3JyOLFi/nLX/5Cbm4uQ4YMYdGiRUycOLHZYz/66COWLFnCnj17sFqtDBkyhGeffZbp06dfUuBdgaOovosmzAdFp31/a1v0v/yK+mSk+3TVqKrK1q1bWbNmDU6nk8DAQG655RYSE727DHre8aOsf2sppw/t9+xLHDma0TfcTNyQYRft0zcajYwcOZKRI0eSk5PD9u3b2bNnD0eOHOH48eNMmDCBK664ApNMaRRCdLJWJyMrVqzgscceY/HixUyYMIFXXnmFGTNmcPDgwWabezds2MDUqVN5/vnnCQ4OZtmyZdx4441s3bqVkSNHtsuT8FZnxot03emT/cdO4H/LXnF31RQVEBTetbtqqqur+eSTTzyzTgYMGMBNN92Ev7+/xpGdX0VhARvffYPD368H3FUgB02cQur1swiPi2/TNWNjY5k5cybjxo3jyy+/JD09nQ0bNrBnzx6mT5/O4MGDvWLAohCiZ2j11N6xY8cyatQolixZ4tk3aNAgZs2axcKFC1t0jSFDhjB79mx++9vftuj4rjq1t+y/J6j6PoeASb0Ivq6v1uG02YrnnuL0wf1cec9cRt9ws9bhtFlpaSnLly+nvLwcvV7P9OnTueyyy7z2RddaU83WTz5g16pP3cWbFIXBE6cwYfY9BIVHtNt9VFXl0KFDfPXVV5SXlwOQmJjIjBkziIzs2smnEEJbHTK112azsXPnTp566qkm+6dNm8amTZtadA2Xy0VlZWWP6J8+003T9QavNubpqtn8XZdNRsrKynjjjTcoLy8nJCSE2bNnEx0drXVYzXI6HOxbt5rNH7xDbX211Lghw7jy7geI6pvc7vdTFIXBgweTnJzM999/z/fff096ejpLlixhzJgxTJ48GV/frv0zLITwbq1KRoqKinA6nURFNV2rJCoqiry8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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sim_phenotypes = sim.copy()\n", + "sim_phenotypes.network.set_output(['G0G1_entry', 'S_entry', 'G2M_entry'])\n", + "res_phenotypes = sim_phenotypes.run()\n", + "res_phenotypes.plot_node_trajectory()" + ] + }, + { + "cell_type": "markdown", + "id": "793401a9-72f7-4e43-9ae4-6d3342f1acf3", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-28T19:15:57.568954Z", + "iopub.status.busy": "2024-02-28T19:15:57.568784Z", + "iopub.status.idle": "2024-02-28T19:15:57.760622Z", + "shell.execute_reply": "2024-02-28T19:15:57.759074Z", + "shell.execute_reply.started": "2024-02-28T19:15:57.568941Z" + } + }, + "source": [ + "We can observe in this simulation the sequence of transition which is expected : Cells first enter G0G1, then go to S, and finally to G2M. And then a new cycle starts" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "d906a4f6-fd09-4b5d-b588-1197b51a99ca", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:14.947488Z", + "iopub.status.busy": "2024-06-07T17:38:14.947165Z", + "iopub.status.idle": "2024-06-07T17:38:15.199168Z", + "shell.execute_reply": "2024-06-07T17:38:15.198277Z", + "shell.execute_reply.started": "2024-06-07T17:38:14.947463Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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4+Li0uA65/tNLy0txc3NDZWq7qVifHw84eHh/PDDD0ydOpWMjAw2bdrEv//9b1566aVGfYbKykqGDRvG4MGD2bRpEyqVipdffpnRo0ezd+9eNDXZRdevX09gYCDr16/n+PHjjlqMWbNm8eOPPxIXF8d9993HrFmz6m1/wYIFLFq0CG9vb0JCQoiIiOCLL77gySefBOwtQL788kteffXVRpW5sZKSkjh06BDffPPNOfsB1x73rVu34u7uTr9+/Ryv9e/fH3d3d7Zs2UJUVBTffPMNer2eBx988Lzbagmffvopzz//PB9++CG9evViz549zJo1CxcXF+655x7HenPnzuXNN9+kc+fOzJ07lzvuuIPjx48zcOBA3n33Xf71r39x5MgRgDo1e2+88Qb//Oc/ee655wB7TdfDDz/MW2+9hVarBeCrr74iKCiIYcOGXdRnEU3UWpC7e088PPohy2YyMk5X354rwcDvab/z6g77P9bDPR9mYqeJjdqPRqlhasxUVk9azcweM9EoNOzM2cntv97O3L/mklOR0zIfCOhz482o1Bqyjx0hLXl3i233Yp04cYLVq1cDMGLECLp06dLsbcmyTEbGUvYk3YXZXIjeJYo+CcsvOrjJPXGcPxb/B4BBt99FWGyvi9re5UCj0XDNNdfw97//ncGDB6NWq8nKyuKLL75g6dKl5ObmtnURBUEQBOx9QGRZJioqqs5yHx8f9Ho9er2ep59+usH3FhYW8tJLL3H//fc3+Pq9997L4sWLAViyZAljx45t0k3GZcuWoVAoWLRoET169CA6OpolS5aQnp5epw+Pp6cnH374IV27dmX8+PGMGzeO33//HQAvLy+USiWurq4EBAQQEHD6BqLZbGbhwoUMHDiQqKgoXFxcmDFjRp2mdStXrqSyspLJkyc3utyNcfToUYA6xz0vL89xzPV6PQsXLgTs/aP8/OpnU/Xz8yMnJ8exvYiIiDqB5ttvv11ne2f3lWqul156ibfeeotJkyYRHh7OpEmTeOyxx/j444/rrDdnzhzGjRtHly5dePHFF0lLS+P48eNoNBrc3d2RJMlxTs4McK677jrmzJlDp06d6NSpEzfffDOSJPHzzz871lmyZAnTpk276MBN1OC0sI4d76OkZDunspYRFvYQarU75gYSDCTlJfH0n08jI3NLl1u4L/a+Ju9Lr9Hz995/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Nmyo99qZd/3Pbo0jSRI2W+MSNp3dPEyj0XDXXXexZMkSJk2axNdff33e7GuzZ8+u00wqKCiIefPmXfAmeqdOnZAkqV7f8YiICIA6TbYCAgIwmUwUFxfXqcXJy8tj4MCBAHTu3JnS0lJycnIctTh6vZ5OnTq1eOIEm83Giy++yKRJk+q9dma/lOael4aa7N19990888wzbN26la1btxIWFsbgwYObUfrW06yj/uCDD/Lggw82+FpDdwWGDBnC7t27m7MrQRAEQRCEy4okSY1qJnY5iomJaVSn9t69e5OTk4NKpTpnDUpjaDSaJtVezJw5k+7du7Nw4ULMZnODF/K1vLy8HM2tavn5+eHn53fefXh7ezNixAg+/PBDHnnkkXP2wwGIj49HrVazbt06RzCVnZ3N/v37HU25brnlFp555hlee+013nnnncZ+1Gbp3bs3R44coVOnTs3eRm1mtMaeF29vbyZOnMiSJUvYunUr9957b7P33VpaLx+fIAiCIAiC0CoKCwu59dZbmT59OrGxsbi6urJr1y5ef/31c/abPtPw4cMZMGAAEydO5LXXXiMqKoqsrCxWrVrFxIkTG2zK1JCwsDC2b99Oamoqer2+XkBytujoaPr378/TTz/N9OnT69SmtKSFCxcyaNAgEhISeOGFF4iNjUWhULBz504OHz5MfHw8AO7u7syYMYMnnngCb29vvLy8mDNnDj169GD48OEAdOjQgbfeeou///3vFBUVMW3aNMLDwykqKuLLL78EcKSTBjh48CAmk4mioiLKy8tJSkoCoGfPnhcs97/+9S/Gjx9PaGgot956KwqFgr1797Jv3z5efvnlRn32jh07IkkSv/76K2PHjkWn012wOd/MmTMZP348Vqu1Tt+iy5UIcARBEARBENoZvV5Pv379eOedd0hJScFsNhMaGsqsWbP4xz/+ccH3S5LEqlWrmDt3LtOnTyc/P5+AgACuvfbac2bObcicOXO45557iImJoaqqipMnT17wPTNmzGDLli2XtJ9HZGQke/bsYf78+Tz77LNkZmai1WqJiYlhzpw5dVoqvfPOO6hUKiZPnuwY6HPp0qV1gpZHHnmE6Oho3n77bW655RbKysrw9vZmwIABrFmzpk6CgbFjx5KWluZ43qtXL8Der+dCRo0axa+//sq8efN4/fXXUavVdO3alZkzZzb6swcH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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "res_phenotypes.plot_trajectory()" + ] + }, + { + "cell_type": "markdown", + "id": "ac3dadcd-7c52-4a49-ae20-dab3d71b9a69", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-28T19:15:57.906950Z", + "iopub.status.busy": "2024-02-28T19:15:57.905636Z", + "iopub.status.idle": "2024-02-28T19:15:58.214142Z", + "shell.execute_reply": "2024-02-28T19:15:58.213236Z", + "shell.execute_reply.started": "2024-02-28T19:15:57.906915Z" + } + }, + "source": [ + "Looking at the state trajectories, we can see a even more important detail : We start from a phase were no transition is active (\\), then activate the G0G1_entry. Then we activate S_entry, and subsequently inactivate G0G1_entry. We then activate G2M_entry, and again immediately inactivate S_entry. \n", + "This is important because it gives us a clear information of the state of the system at any time. If for example we inactivated G0G1_entry before activating S_entry, we would end up up a \\ state, without remembering in which phase we were. " + ] + }, + { + "cell_type": "markdown", + "id": "58c3bd0f-4340-454b-8b9b-6f5937c73983", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-29T10:48:01.261086Z", + "iopub.status.busy": "2024-02-29T10:48:01.260686Z", + "iopub.status.idle": "2024-02-29T10:48:01.268096Z", + "shell.execute_reply": "2024-02-29T10:48:01.267180Z", + "shell.execute_reply.started": "2024-02-29T10:48:01.261052Z" + } + }, + "source": [ + "## Studying the sequence of transitions, and the possible cell cycles\n", + "\n", + "One way to study the sequence of cell cycle phases would be to only focus on the transitions affecting these nodes, and completely ignore the other transitions. To do this, we need to look at the complete list of transitions, and filter out the transitions that don't interest us. \n", + "First, we need to create a simulation with the display_traj setting active, and also reduce the number of cores used in the simulation to 1, as the display_traj mode only support single-core simulation. We also increase the simulation time, in order to get more transitions to get better statistics" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "dc6ad9cd", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:15.200123Z", + "iopub.status.busy": "2024-06-07T17:38:15.199925Z", + "iopub.status.idle": "2024-06-07T17:38:40.362902Z", + "shell.execute_reply": "2024-06-07T17:38:40.361905Z", + "shell.execute_reply.started": "2024-06-07T17:38:15.200104Z" + } + }, + "outputs": [], + "source": [ + "sim_phenotypes_trajs = sim_phenotypes.copy()\n", + "sim_phenotypes_trajs.update_parameters(display_traj=1, thread_count=1, max_time=480)\n", + "res_phenotypes_trajs = sim_phenotypes_trajs.run()" + ] + }, + { + "cell_type": "markdown", + "id": "42f23a9b-0abf-4f63-9cfa-ef0417af4db1", + "metadata": {}, + "source": [ + "Once the simulation has completed, we need to filter the trajectories by the cell cycle transition nodes, and build a simplified state transition matrix where we only have the states composed of these cell cycle transition nodes. " + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "9f6f4c52", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:40.364349Z", + "iopub.status.busy": "2024-06-07T17:38:40.364011Z", + "iopub.status.idle": "2024-06-07T17:38:49.165956Z", + "shell.execute_reply": "2024-06-07T17:38:49.165096Z", + "shell.execute_reply.started": "2024-06-07T17:38:40.364292Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
<nil>G0G1_entryG0G1_entry -- G2M_entryG0G1_entry -- S_entryG2M_entryG2M_entry -- S_entryS_entry
<nil>0.010908.00.00.00.00.00.0
G0G1_entry2924.00.00.012622.00.00.00.0
G0G1_entry -- G2M_entry0.04579.00.00.0152.00.00.0
G0G1_entry -- S_entry0.0148.00.00.00.00.012458.0
G2M_entry4390.00.04738.00.00.00.00.0
G2M_entry -- S_entry0.00.00.00.09032.00.0335.0
S_entry3193.00.00.00.00.09379.00.0
\n", + "
" + ], + "text/plain": [ + " G0G1_entry G0G1_entry -- G2M_entry \\\n", + " 0.0 10908.0 0.0 \n", + "G0G1_entry 2924.0 0.0 0.0 \n", + "G0G1_entry -- G2M_entry 0.0 4579.0 0.0 \n", + "G0G1_entry -- S_entry 0.0 148.0 0.0 \n", + "G2M_entry 4390.0 0.0 4738.0 \n", + "G2M_entry -- S_entry 0.0 0.0 0.0 \n", + "S_entry 3193.0 0.0 0.0 \n", + "\n", + " G0G1_entry -- S_entry G2M_entry \\\n", + " 0.0 0.0 \n", + "G0G1_entry 12622.0 0.0 \n", + "G0G1_entry -- G2M_entry 0.0 152.0 \n", + "G0G1_entry -- S_entry 0.0 0.0 \n", + "G2M_entry 0.0 0.0 \n", + "G2M_entry -- S_entry 0.0 9032.0 \n", + "S_entry 0.0 0.0 \n", + "\n", + " G2M_entry -- S_entry S_entry \n", + " 0.0 0.0 \n", + "G0G1_entry 0.0 0.0 \n", + "G0G1_entry -- G2M_entry 0.0 0.0 \n", + "G0G1_entry -- S_entry 0.0 12458.0 \n", + "G2M_entry 0.0 0.0 \n", + "G2M_entry -- S_entry 0.0 335.0 \n", + "S_entry 9379.0 0.0 " + ] + }, + "execution_count": 9, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "outputs_phenotype = [\"G0G1_entry\", \"G2M_entry\", \"S_entry\"]\n", + "trajs, all_states = load_trajs(res_phenotypes_trajs._path, outputs_phenotype)\n", + "stg_counts, state_ids, ids_state = compute_stg_counts(trajs, all_states)\n", + "data = pd.DataFrame(\n", + " data=stg_counts,\n", + " index=state_ids.keys(), columns=state_ids.keys()\n", + ")\n", + "data" + ] + }, + { + "cell_type": "markdown", + "id": "d0145d21-4a29-450f-8df7-ecc5f05e408e", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-29T10:38:05.907642Z", + "iopub.status.busy": "2024-02-29T10:38:05.907308Z", + "iopub.status.idle": "2024-02-29T10:38:05.925175Z", + "shell.execute_reply": "2024-02-29T10:38:05.923764Z", + "shell.execute_reply.started": "2024-02-29T10:38:05.907612Z" + } + }, + "source": [ + "We can then plot this matrix as a graph, and visualize the possible transition between all this subset of states. " + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "ae9294c1", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:49.167239Z", + "iopub.status.busy": "2024-06-07T17:38:49.166986Z", + "iopub.status.idle": "2024-06-07T17:38:49.616026Z", + "shell.execute_reply": "2024-06-07T17:38:49.614173Z", + "shell.execute_reply.started": "2024-06-07T17:38:49.167217Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABGQAAAJrCAYAAACm8kUqAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3yV5f3/8dfZOdk7ISQhgICyZQ8FxF1xl2otLlBR3NVqv/1922q/1WpbtVZRcSBWa62jKi7qFtk4kI0ikEH23mfevz9OciAEEDCck/F+Ph7nQXLfd859nQTIfd735/pcJsMwDEREREREREREJGTM4R6AiIiIiIiIiEhPo0BGRERERERERCTEFMiIiIiIiIiIiISYAhkRERERERERkRBTICMiIiIiIiIiEmIKZEREREREREREQkyBjIiIiIiIiIhIiFnDPQARERERERERCZ/m5mbcbnfIz2u324mIiAj5eTsLBTIiIiIiIiIiPVRzczPOmCTwNob83Onp6ezcubPHhjIKZERERERERER6KLfbDd5GHIMvB4s9dCf2uSne/Bxut1uBjIiIiIiIiIj0UBY7phAGMkbIztR5qamviIiIiIiIiEiIKZAREREREREREQkxBTIiIiIiIiIiIiGmHjIiIiIiIiIiPZ3ZDGZL6M5nqD5E3wERERERERERkRBTICMiIiIiIiIiEmIKZEREREREREREQkyBjIiIiIiIiIhIiCmQEREREREREREJMa2yJCIiIiIiItLTmS0hXmUphOfqpFQhIyIiIiIiIiISYgpkRERERERERERCTIGMiIiIiIiIiEiIKZAREREREREREQkxBTIiIiIiIiIiIiGmVZZEREREREREejqtshRyqpAREREREREREQkxBTIiIiIiIiIiIiGmQEZEREREREREJMQUyIiIiIiIiIiIhJgCGRERERERERGRENMqSyIiIiIiIiI9nSnEqyz5tcqSKmREREREREREREJMgYyIiIiIiIiIdGpLly7l7LPPJiMjA5PJxBtvvBHc5/F4uPPOOxk2bBhRUVFkZGRw2WWXUVhY2OY5XC4XN954I8nJyURFRXHOOedQUFDQ5piqqiouvfRS4uLiiIuL49JLL6W6urrNMXl5eZx99tlERUWRnJzMTTfdhNvtPuzXpEBGRERERERERDq1hoYGRowYwaOPPtpuX2NjI1999RW//e1v+eqrr/jPf/7Dt99+yznnnNPmuFtuuYXXX3+dl156iWXLllFfX8+MGTPw+XzBYy655BLWrVvHkiVLWLJkCevWrePSSy8N7vf5fJx11lk0NDSwbNkyXnrpJV577TVuu+22w35NJsMwjMP+KhERERERERHp8mpra4mLi8Mx5hZMVkfIzmt4Xbi++Bs1NTXExsYe1teaTCZef/11zjvvvAMes3btWsaNG0dubi7Z2dnU1NSQkpLC888/z0UXXQRAYWEhWVlZvPvuu5x++uls2bKFwYMHs2rVKsaPHw/AqlWrmDhxIlu3bmXQoEG89957zJgxg/z8fDIyMgB46aWXuOKKKygtLT2s16IKGREREREREREJi9ra2jYPl8vVIc9bU1ODyWQiPj4egC+//BKPx8Npp50WPCYjI4OhQ4eyYsUKAFauXElcXFwwjAGYMGECcXFxbY4ZOnRoMIwBOP3003G5XHz55ZeHNUYFMiIiIiIiIiI9ndkS+geQlZUV7NcSFxfHn/70px/9Upqbm/n1r3/NJZdcEqxYKS4uxm63k5CQ0ObYtLQ0iouLg8ekpqa2e77U1NQ2x6SlpbXZn5CQgN1uDx5zqLTstYiIiIiIiIiERX5+fptpPg7Hj5s25fF4uPjii/H7/Tz22GM/eLxhGJhMpuDne3/8Y445FKqQEREREREREZGwiI2NbfP4MYGMx+PhZz/7GTt37uSDDz5oE/Skp6fjdrupqqpq8zWlpaXBipf09HRKSkraPW9ZWVmbY/athKmqqsLj8bSrnPkhCmREREREREREpEtrDWO+++47PvzwQ5KSktrsHz16NDabjQ8++CC4raioiI0bNzJp0iQAJk6cSE1NDWvWrAkes3r1ampqatocs3HjRoqKioLHvP/++zgcDkaPHn1YY9aUJRERERERERHp1Orr69m+fXvw8507d7Ju3ToSExPJyMjgpz/9KV999RVvv/02Pp8vWMWSmJiI3W4nLi6OOXPmcNttt5GUlERiYiK33347w4YN45RTTgHguOOO44wzzuDqq69mwYIFAFxzzTXMmDGDQYMGAXDaaacxePBgLr30Uv7yl79QWVnJ7bffztVXX334q0Vp2WsRERERERGRnim47PW420K/7PWaBw552etPP/2Uk046qd32yy+/nLvuuou+ffvu9+s++eQTpk2bBgSa/f7qV7/ixRdfpKmpiZNPPpnHHnuMrKys4PGVlZXcdNNNLF68GIBzzjmHRx99NLhaE0BeXh7z5s3j448/xul0cskll/DXv/71sKdbKZARERERERER6aGCgcyEO0IfyKz68yEHMt2ResiIiIiIiIiIiISYAhkRERERERERkRBTICMiIiIiIiIiEmIKZEREREREREREQkyBjIiIiIiIiIhIiFnDPQARERERERERCTOzBcwhjAjM3tCdq5NShYyIiIiIiIiISIgpkBERERERERERCTEFMiIiInJUrF+/njlz5tC/f3+cTidOp5MBAwYwd+5cvvjii3bHl5aWcsUVV5CcnExkZCQTJ07ko48+2u9zu1wu5s+fz9SpU0lKSsJms5GUlMS0adNYsGABdXV1bY7/xz/+wcUXX8ygQYMwm83k5OQcjZd8RDZv3sxdd93Frl27wj2UI1JSUsJvfvMbRo4cSWxsLHa7nczMTC644AIWL16Mz+cLHvvll19y/fXXM2zYMGJiYkhLS+OUU07h448/bve8V1xxBSaTiZiYGOrr69vtz83NxWw2YzKZuOuuu47mS/xBhYWF3HXXXaxbty6s4xARka5FgYyIiIh0uAULFjB69GhWr17NzTffzNtvv80777zDLbfcwqZNmxg7dizff/998HiXy8XJJ5/MRx99xMMPP8ybb75JWloaZ5xxBp999lmb5y4rK2PSpEn88pe/ZNCgQTz55JN8/PHHPPPMMwwfPpw77riDefPmtfma559/nk2bNjFu3Dj69+8fku/Bodq8eTN33313lwxkVq1axbBhw3jqqac455xzeOmll/jwww+57777sNlsXHDBBSxatCh4/L/+9S/WrFnD7NmzefPNN3n66adxOBycfPLJ/OMf/2j3/DabDa/Xy7///e92+5599lliYmKO5ss7ZIWFhdx9990KZERE5LCoqa+IiIh0qOXLlzNv3jzOOussXn31Vex2e3Df9OnTuf7663nllVdwOp3B7c888wwbN25kxYoVTJw4EYCTTjqJESNGcMcdd7B69ergsbNmzWLDhg18+OGHTJkypc25zzvvPH7/+9/z3nvvtdn+3//+F7M5cB9qxowZbNy4scNfd6g0NjYSGRkZ7mFQXV3NeeedR3R0NMuXL6dXr15t9s+aNYv169dTUVER3HbHHXfw17/+tc1xP/nJTxg1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+e1vf9ssSGWz2fj000/RasMfAjIyMpg4cSJffPEFl1xyCf369SM1NRWAk0466bCPWVdXx+bNm4mPj49c1rt3b+69916ee+65SLAHwgGg6dOnN1uDEEL0VPurGsuVcuKlXEkIIdqDTFgSQpyoVodYx40bh16vj3z95S9/Oex2qqpy7bXX8t133/HGG2+QlZV1xPu85ppr+Pjjj6moqODll19m+vTphw18tMSnn37K8OHDGT16NIFAIPI1a9asw05smj59erP+KqmpqaSkpHDgwIEWP+bIkSObBWMgXI5188038+mnn3Lw4EEg3BtnwYIF/PrXvz5quVAoFGq29mAw3MRLVdVmlzctFToco9HIhx9+yLZt23jqqae45JJLKCsr45FHHmHIkCHs2LGjxT/jp59+yvTp08nIyGj2+A2BpaVLlzbb/uyzz44EYxp+R0Crfq+nn356s2AMhAM9v/jFL3jttdciJWhff/0127Zt4+abb27xfQshRHcm/WOEEKJ9yYQlIURbaPUz+p133mH16tV8/PHHR9xGVVWuu+463nrrLV577TXOPffco97nhRdeiMlk4qmnnuKTTz7h2muvbe2yIkpKSti0aVOzoJFer8dms6GqKuXl5c22T0xMPOQ+jEYjbre7xY/ZtMymqWuuuQaz2cw//vEPIJzFYTabueaaa456fw8++GCztffr1w+A119//ZCfK7/Cxcdr8lmWW3rE+xsyZAjz5s3jrbfe4uDBgzz55JNUVFTwxz/+scU/Y0lJCZ988skhjz9s2DCAY/5ejUYjQJv8Xm+55RZqa2t5++23gXDWUa9evY75fyaEED1BrTdAudMHQLLVQIyx3auThRCix5EJS0KIttDqvbSGkpCG5qs/1hCMefXVV3n55Ze54oorjnmfFouFSy65hMceewy73c7555/f2mVFJCUlYTabeeWVV454fVs7UrZLbGwsP//5z/nnP//JnXfeyauvvspll11GXFzcUe/vhhtuYO7cuZHzDcGMWXPO5o0PF5Fb4GBrvoPcfAfj7/o8st17805h2rCjd3hXFIXf/OY3PPjgg2zZsqWFP2H49zZy5Mhm07Caatrcua0c6ffav39/5syZw3PPPcecOXP4+OOPeeCBB5pl5AghRE+1X7JjhBCi3TWdsNSe/WNkwpLoSDpFQdfKwS8nItiBj9VZtelhM1VV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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw_graph_from_pandas(data)" + ] + }, + { + "cell_type": "markdown", + "id": "9783b403-08c6-4232-af53-ac7b1e3ac8a9", + "metadata": {}, + "source": [ + "We can observe that, starting from a \\ state, most of the transitions activate G0G1_entry, then activate S_entry, inactivate G1G0_entry, activate G2M_entry, inactivate S_entry. Then we have half of the transitions inactivating G2M_entry and the other half activating G0G1_entry. \n", + "\n", + "We can compute the same matrix but instead of transition counts, we have the probabilities. " + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "66d5ffe5", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:49.618727Z", + "iopub.status.busy": "2024-06-07T17:38:49.617739Z", + "iopub.status.idle": "2024-06-07T17:38:49.632211Z", + "shell.execute_reply": "2024-06-07T17:38:49.630295Z", + "shell.execute_reply.started": "2024-06-07T17:38:49.618689Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
<nil>G0G1_entryG0G1_entry -- G2M_entryG0G1_entry -- S_entryG2M_entryG2M_entry -- S_entryS_entry
<nil>0.0000001.0000000.0000000.0000000.0000000.0000000.000000
G0G1_entry0.1880870.0000000.0000000.8119130.0000000.0000000.000000
G0G1_entry -- G2M_entry0.0000000.9678710.0000000.0000000.0321290.0000000.000000
G0G1_entry -- S_entry0.0000000.0117400.0000000.0000000.0000000.0000000.988260
G2M_entry0.4809380.0000000.5190620.0000000.0000000.0000000.000000
G2M_entry -- S_entry0.0000000.0000000.0000000.0000000.9642360.0000000.035764
S_entry0.2539770.0000000.0000000.0000000.0000000.7460230.000000
\n", + "
" + ], + "text/plain": [ + " G0G1_entry G0G1_entry -- G2M_entry \\\n", + " 0.000000 1.000000 0.000000 \n", + "G0G1_entry 0.188087 0.000000 0.000000 \n", + "G0G1_entry -- G2M_entry 0.000000 0.967871 0.000000 \n", + "G0G1_entry -- S_entry 0.000000 0.011740 0.000000 \n", + "G2M_entry 0.480938 0.000000 0.519062 \n", + "G2M_entry -- S_entry 0.000000 0.000000 0.000000 \n", + "S_entry 0.253977 0.000000 0.000000 \n", + "\n", + " G0G1_entry -- S_entry G2M_entry \\\n", + " 0.000000 0.000000 \n", + "G0G1_entry 0.811913 0.000000 \n", + "G0G1_entry -- G2M_entry 0.000000 0.032129 \n", + "G0G1_entry -- S_entry 0.000000 0.000000 \n", + "G2M_entry 0.000000 0.000000 \n", + "G2M_entry -- S_entry 0.000000 0.964236 \n", + "S_entry 0.000000 0.000000 \n", + "\n", + " G2M_entry -- S_entry S_entry \n", + " 0.000000 0.000000 \n", + "G0G1_entry 0.000000 0.000000 \n", + "G0G1_entry -- G2M_entry 0.000000 0.000000 \n", + "G0G1_entry -- S_entry 0.000000 0.988260 \n", + "G2M_entry 0.000000 0.000000 \n", + "G2M_entry -- S_entry 0.000000 0.035764 \n", + "S_entry 0.746023 0.000000 " + ] + }, + "execution_count": 11, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "probas = pd.DataFrame(\n", + " data=np.divide(stg_counts,stg_counts.sum(axis=1)[:, np.newaxis]), \n", + " index=state_ids.keys(), columns=state_ids.keys()\n", + ")\n", + "probas" + ] + }, + { + "cell_type": "markdown", + "id": "6e4856b9-c356-422b-8d0a-70caf93e83b0", + "metadata": {}, + "source": [ + "The subsequent analysis we can do is look at the different observed lists of activation, starting from the \\ state. " + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "ca6b682c-6674-477b-847f-840f36eb6ffe", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:49.634100Z", + "iopub.status.busy": "2024-06-07T17:38:49.633773Z", + "iopub.status.idle": "2024-06-07T17:38:49.895799Z", + "shell.execute_reply": "2024-06-07T17:38:49.894791Z", + "shell.execute_reply.started": "2024-06-07T17:38:49.634066Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABE0AAAJxCAYAAAC390zNAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd3hTdRvG8W9W093SQdlTtgwZIqBsGQKKKOJAmTLduPV1D1QUUYbIFLeiIgIiiKgIiKAM2coeLaWD7pXkvH8EIrUFC5Sm4/5cVy+ak9OcJ1Rpeuf5PT+TYRgGIiIiIiIiIiKSi9nbBYiIiIiIiIiIFEcKTURERERERERE8qHQREREREREREQkHwpNRERERERERETyodBERERERERERCQfCk1ERERERERERPKh0EREREREREREJB8KTURERERERERE8qHQREREREREREQkHwpNRERERERERETyodBERERERERERIq1n3/+mT59+lCpUiVMJhMLFiz4z6/56aefaNGiBb6+vtSqVYt33nnnnK+r0EREREREREREirW0tDSaNm3K5MmTC3T+vn37uOaaa7jqqqvYuHEjjz/+OPfccw9ffPHFOV3XZBiGcT4Fi4iIiIiIiIgUNZPJxFdffUXfvn3PeM4jjzzCwoUL2bFjh+fYqFGj2Lx5M2vXri3wtawXUqiIiIiIiIiIlGyZmZlkZ2cX+XUNw8BkMuU6ZrfbsdvtF/zYa9eupVu3brmOde/enVmzZpGTk4PNZivQ4yg0ERERERERESmjMjMz8QsKB0d6kV87MDCQ1NTUXMeefvppnnnmmQt+7JiYGKKionIdi4qKwuFwEBcXR8WKFQv0OApNRERERERERMqo7OxscKRjbzgILD5Fd2FnNqnb3+PQoUMEBwd7DhdGl8kp/+5iOTWd5N/Hz0ahiYiIiIiIiEhZZ/HBVIShyanhqsHBwblCk8JSoUIFYmJich2LjY3FarUSHh5e4MfR7jkiIiIiIiIiUqq0adOG5cuX5zq2bNkyWrZsWeB5JqDQRERERERERESKudTUVDZt2sSmTZsA95bCmzZt4uDBgwA89thj3HHHHZ7zR40axYEDB3jggQfYsWMHs2fPZtasWTz44IPndF0tzxERERERERGRYm3Dhg106tTJc/uBBx4AYNCgQcydO5fo6GhPgAJQs2ZNlixZwv3338+UKVOoVKkSb731FjfccMM5XddknJqEIiIiIiIiIiJlSnJyMiEhIdibjsRkKbwhrP/FcGaRtXk6SUlJF2WmSWHR8hwRERERERERkXwoNBERERERERERyYdCExERERERERGRfCg0ERERERERERHJh0ITEREREREREZF8aMthERERERERkbLObHF/FBWjCK91AdRpIiIiIiIiIiKSD4UmIiIiIiIiIiL5UGgiIiIiIiIiIpIPhSYiIiIiIiIiIvlQaCIiIiIiIiIikg/tniMiIiIiIiJS1mn3nHyp00REREREREREJB8KTURERERERERE8qHQREREREREREQkHwpNRERERERERETyodBERERERERERCQf2j1HREREREREpKwzFfHuOS7tniMiIiIiIiIiUmIpNBERERERERERyYdCExERERERERGRfCg0ERERERERERHJh0ITEREREREREZF8aPccERERERERkbLOXMS75xTltS6AOk1ERERERERERPKh0EREREREREREJB8KTURERERERERE8qHQREREREREREQkHwpNRERERERERETyod1zRERERERERMo67Z6TL3WaiIiIiIiIiIjkQ6GJiIiIiIiIiEg+FJqIiIiIiIiIiORDoYmIiIiIiIiISD4UmoiIiIiIiIiI5EO754iIiIiIiIiUdWYLmIswIjA7iu5aF0CdJiIiIiIiIiIi+VBoIiIiIiIiIiKSD4UmIiIiclFs2bKFYcOGUbt2bfz8/PDz86NOnTqMHDmSDRs25Dk/NjaWwYMHExERgb+/P23atGHFihX5PnZWVhZTpkyhQ4cOhIeHY7PZCA8Pp2PHjkyfPp2UlJRc58+bN4+bb76ZevXqYTabqVGjxsV4yudl+/btPPPMM+zfv9/bpZyXY8eO8fjjj9OsWTOCg4Px8fGhSpUq9OvXj4ULF+J0Oj3n/v7774wdO5bGjRsTFBREVFQUXbt25YcffsjzuIMHD8ZkMhEUFERqamqe+w8cOIDZbMZkMvHMM89czKf4n44ePcozzzzDpk2bvFqHiIgUPoUmIiIiUuimT59OixYtWLduHffeey+LFi1i8eLF3HfffWzbto1WrVqxZ88ez/lZWVl06dKFFStWMGnSJL7++muioqLo0aMHP/30U67HPn78OG3btuWBBx6gXr16vPvuu/zwww/MmjWLJk2a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uXtnd4mOMXr0aH799dfA6QcffJCbbropcPpwgfIjBdE/+ugjzjrrrMBpq9WK3W4/htUeSKPR8M3Xy4iJieG2v179mzWdSubipxjbS89bb/0Ln89HVtb7xMb35YEnbiK/uIqC0mryi6t4q/AzvIoLS6SZqpq6A+6notrR4nRsbOwBAROAG264gbPPPpuVK1cyceJEbDYbr7zyCpdffjkRERGH/D1+G2AC0Ol0hzz/UBRF4ZlnnuHWW29lyZIlrFmzhm+//ZZHHnmE//73vyxZsqTVjWAXL17MkCFDGDFiBB5P04jwk08+GUVR+Prrr1sELKZOnRoImAAkJyeTlJTE/v0te9kczrBhw1oETMD/N7722mu5+eabycnJoUePHuzevZulS5fyf//3f932y5zOQKMoHbo/FC77XhI0EUJ0K4qiEGnSEWnSkRFnosrhpsLupqZZ+U6d20ddlZOCKidWo7YhgKJDH8ZNDzUahYtOyOakYanc/sYvfLLWP5746y3FTFnwBTefPoirutF44rX5VdS5/R+Qs+MsZERLU7quQFVVSivt7MopZXdOKbtyS9mdW8bunFJ255UedaaIQa9tCIY0BUV6pMQFzktPjsFokF0q0XESEhIwm80H/fD6+uuv43A4KCws5PTTT29xWXx8fCCbpLmKigqgKeOkMXtg//799O/fP7DdlClT+PnnnwFYuHAhK1asaJ9f6DeKi4upqqo6aHNb8GfagP/Dt0ajkJmeyskTB7XYZutX/wXg66/vp7bOyaIXX+X6P3/G3y4/ib6DRjD7xCEttj9UX5gzzjiDrKwsnnzySSZOnMiLL75IbW0t11xzzWF/h5deeumAPiqqqvLNN98wderUFue3ZvJMz549+dOf/hQ4/fbbb3PBBRdw8803s3r16sNet1FxcTG7du1Cr9cf9PLGx7VRfHz8AdsYjUbq6g4MQh3KoR7XefPmceedd/LMM89w77338uSTT2I2m5k3b16rb1uIjiLv8EKIbqt5+Y7b46PS4abC7sHhagqg1Dq91Dq95FX4G8jGWvXEWPTotOERGf+tpGgTz149rsV44jqXl7ve3ciHq3P5v24wnriqzs3GQn/vCa0C47v479vVqKpKWVVtIDCyO7chOJLjD5A0Tvdoi9goS1OGSIo/INIjNTYQFEmKi5ByGdGpaLVapk2bxhdffEFhYWGL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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw_graph_from_pandas(probas)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "337773e3", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:49.896889Z", + "iopub.status.busy": "2024-06-07T17:38:49.896637Z", + "iopub.status.idle": "2024-06-07T17:38:49.904650Z", + "shell.execute_reply": "2024-06-07T17:38:49.903535Z", + "shell.execute_reply.started": "2024-06-07T17:38:49.896868Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "CPU times: user 2.01 ms, sys: 1 µs, total: 2.01 ms\n", + "Wall time: 2.02 ms\n" + ] + } + ], + "source": [ + "%time paths_dict = compute_circuits(probas, ids_state, '', 0)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "2ccd2b55", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:49.905663Z", + "iopub.status.busy": "2024-06-07T17:38:49.905417Z", + "iopub.status.idle": "2024-06-07T17:38:49.911717Z", + "shell.execute_reply": "2024-06-07T17:38:49.910495Z", + "shell.execute_reply.started": "2024-06-07T17:38:49.905636Z" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.28 : ['', 'G0G1_entry', 'G0G1_entry -- S_entry', 'S_entry', 'G2M_entry -- S_entry', 'G2M_entry']\n", + "0.20 : ['', 'G0G1_entry', 'G0G1_entry -- S_entry', 'S_entry']\n", + "0.19 : ['', 'G0G1_entry']\n" + ] + } + ], + "source": [ + "for proba in sorted(paths_dict, reverse=True):\n", + " #if proba > 0.01:\n", + " print(\"%.2f : %s\" % (proba, paths_dict[proba]))" + ] + }, + { + "cell_type": "markdown", + "id": "809a4f3f-6fb6-4d9e-a56a-3e271f4fe451", + "metadata": {}, + "source": [ + "We can see that the model is not perfect here : while most of the sequence are complete, a large proportion skips the G2M phase. We refer to these cycles as incomplete cell cycles. " + ] + }, + { + "cell_type": "markdown", + "id": "bd923340-2fed-4ee2-a396-6d8e240cbf26", + "metadata": { + "execution": { + "iopub.execute_input": "2024-02-02T19:14:23.685530Z", + "iopub.status.busy": "2024-02-02T19:14:23.684816Z", + "iopub.status.idle": "2024-02-02T19:14:23.690765Z", + "shell.execute_reply": "2024-02-02T19:14:23.689674Z", + "shell.execute_reply.started": "2024-02-02T19:14:23.685486Z" + } + }, + "source": [ + "## Analysis of mutants\n", + "\n", + "We can then look at known mutant affecting the cell cycle, and simulate them to see how the model predicts them. We will also include Caspase 3 as an output node, to see how these mutants affects cell death, and we will simulate them for 480 hours to see long term effects.\n", + "\n", + "First, we look at the wild type, to remind us of its behavior and allow us to compare with mutants below." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "a618e5db", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:49.912819Z", + "iopub.status.busy": "2024-06-07T17:38:49.912555Z", + "iopub.status.idle": "2024-06-07T17:38:52.624486Z", + "shell.execute_reply": "2024-06-07T17:38:52.623504Z", + "shell.execute_reply.started": "2024-06-07T17:38:49.912790Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGdCAYAAADaPpOnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAADdUklEQVR4nOzdd3hUZfbA8e+dPumNNBJI6L1LFbsoKoJlxV0bCpbFXlfX/a2KhS3qsquLu64r2FZZRV0LiliQptKR3iGQ3vv0+/vjztxk0khCIIScz/PkkZm5M/MGQ3Jy3vOeo6iqqiKEEEII0UEY2nsBQgghhBAtIcGLEEIIIToUCV6EEEII0aFI8CKEEEKIDkWCFyGEEEJ0KBK8CCGEEKJDkeBFCCGEEB2KBC9CCCGE6FBM7b2A5vD5fGRlZREeHo6iKO29HCGEEEI0g6qqlJeXk5ycjMHQdvmSDhG8ZGVlkZqa2t7LEEIIIUQrHDlyhJSUlDZ7vQ4RvISHhwPaJx8REdHOqxFCCCFEc5SVlZGamqr/HG8rHSJ4CWwVRURESPAihBBCdDBtXfIhBbtCCCGE6FAkeBFCCCFEhyLBixBCCCE6lA5R8yKEEOLUoqoqHo8Hr9fb3ksR7choNGIymU56GxMJXoQQQrSIy+UiOzubqqqq9l6KOAWEhISQlJSExWI5ae8pwYsQQohm8/l8HDx4EKPRSHJyMhaLRZqHdlKqquJyucjPz+fgwYP07t27TRvRNUWCFyGEEM3mcrnw+XykpqYSEhLS3ssR7cxut2M2mzl8+DAulwubzXZS3lcKdoUQQrTYyfoNW5z62uNrQb76hBBCCNGhSPAihBBCiA6lVcHL/PnzSU9Px2azMXLkSFauXNnk9e+88w5Dhw7VK5JvvvlmCgsLW7VgIYQQQnRuLQ5eFi1axH333cfjjz/Opk2bmDhxIpMnTyYjI6PB61etWsWNN97IzJkz2b59O++//z7r1q1j1qxZx714IYQQoiVycnK499576dWrFzabjYSEBM4880z+8Y9/6Ee/nU4nd999N3FxcYSGhnL55Zdz9OjReq/13Xffcdlll9GlSxdsNhs9e/Zk+vTprFixQr/G4XAwY8YMBg8ejMlkYtq0aSfrU9UtX74cRVEoKSk56e99orQ4eHnxxReZOXMms2bNon///sybN4/U1FReeeWVBq//8ccfSUtL45577iE9PZ0zzzyT22+/nfXr1x/34ttK/uGDrP/sI7weT3svRQghxAly4MABhg8fzldffcVzzz3Hpk2b+Prrr7n//vv59NNP+frrrwG47777+Oijj3jvvfdYtWoVFRUVXHbZZUEN+ebPn8/5559PbGwsixYtYufOnbz11luMHz+e+++/X7/O6/Vit9u55557uOCCC07659wSLpervZfQfGoLOJ1O1Wg0qh9++GHQ/ffcc4961llnNfic1atXqxaLRf38889Vn8+n5uTkqGeddZZ6++23N/o+DodDLS0t1T+OHDmiAmppaWlLlttsz19zqfr8NZeq6z/7+IS8vhBCnC6qq6vVHTt2qNXV1aqqqqrP51Nd1dXt8uHz+Vq09osuukhNSUlRKyoqGnzc5/OpJSUlqtlsVt977z39/szMTNVgMKhffvmlqqqqevjwYdVsNqv3339/o6/TkJtuukmdOnVqi9asqqr6ySefqCNGjFCtVquanp6uPvnkk6rb7dYfB9R//etf6rRp01S73a726tVL/d///qeqqqoePHhQBYI+brrpJlVVVfXss89W77zzTvX+++9XY2Nj1bPOOku9+eab1UsvvTTo/d1ut5qQkKD++9//bnB9db8maistLT0hP79b1OeloKAAr9dLQkJC0P0JCQnk5OQ0+Jzx48fzzjvvMH36dBwOBx6Ph8svv5yXXnqp0feZO3cuTz31VEuW1iay9+0+6e8phBAdmcfp5G83Xd0u733PGx9gbmZfkcLCQj3jEhoa2uA1iqKwYcMG3G43kyZN0u9PTk5m0KBBrFmzhosuuojFixfjdrt55JFHGn2dtrJ06VKuv/56/va3vzFx4kT279/PbbfdBsATTzyhX/fUU0/xpz/9iT//+c+89NJLXHfddRw+fJjU1FQWL17MVVddxe7du4mIiMBut+vPe+ONN/j1r3/N6tWrUVWVoqIizjrrLLKzs0lKSgJgyZIlVFRUcM0117TZ53W8WlWwW/d/jKqqjf7P2rFjB/fccw+///3v2bBhA19++SUHDx7kjjvuaPT1H3vsMUpLS/WPI0eOtGaZLab6fCflfYQQQpxc+/btQ1VV+vbtG3R/XFwcYWFhhIWF8Zvf/IacnBwsFgvR0dFB19X+JX3Pnj1ERESQmJioP7548WL9dcLCwti6dWubrPvZZ5/l0Ucf5aabbqJHjx5ceOGFPP300/zzn/8Mum7GjBn88pe/pFevXjz33HNUVlaydu1ajEYjMTExAMTHx5OYmEhkZKT+vF69evGnP/2Jvn370q9fP8aPH0/fvn1566239GsWLFjAL37xC8LCwtrkc2oLLcq8xMXFYTQa62VZ8vLy6mVjAubOncuECRN4+OGHARgyZAihoaFMnDiRZ555Ro/sarNarVit1pYsrU1I8CKEEC1jslq5540P2u29W6ruL9pr167F5/Nx3XXX4XQ6G31e3V/S677ORRddxObNm8nMzOScc85ps4GVGzZsYN26dTz77LP6fV6vF4fDQVVVld7leMiQIfrjoaGhhIeHk5eXd8zXHzVqVL37Zs2axauvvsojjzxCXl4en3/+Od98800bfDZtp0XBi8ViYeTIkSxbtowrrrhCv3/ZsmVMnTq1wedUVVVhMgW/jdFoBLQvhlOJzyfTUYUQoiUURWn21k176tWrF4qisGvXrqD7e/ToAaBvpSQmJuJyuSguLg7KvuTl5TF+/HgAevfuTWlpKTk5OXr2JSwsjF69etX7eXe8fD4fTz31FFdeeWW9x2q34jebzUGPKYqCrxm/kDe0hXbjjTfy6KOP8sMPP/DDDz+QlpbGxIkTW7H6E6fF20YPPPAAr732Gq+//jo7d+7k/vvvJyMjQ98Geuyxx7jxxhv166dMmcKHH37IK6+8woEDB1i9ejX33HMPo0ePJjk5ue0+kzYgmRchhDg9xcbGcuGFF/Lyyy9TWVnZ6HUjR47EbDazbNky/b7s7Gy2bdumBy9XX301ZrOZP/7xjyd83SNGjGD37t306tWr3kdz2/IHpj03NxsUGxvLtGnTWLBgAQsWLODmm29u9fpPlBaHiNOnT6ewsJA5c+aQnZ3NoEGDWLJkCd27dwe0/8m1e77MmDGD8vJyXn75ZR588EGioqI477zzTsr/9JbytVGaTwghxKln/vz5TJgwgVGjRvHkk08yZMgQDAYD69atY9euXYwcOZLIyEhmzpzJgw8+SGxsLDExMTz00EMMHjxYP+rcrVs3XnjhBe69916KioqYMWMG6enpFBUV8fbbbwM1Owyg1X66XC6KioooLy9n8+bNAAwbNuyYa/7973/PZZddRmpqKr/4xS8wGAz8/PPPbN26lWeeeaZZn3f37t1RFIXPPvuMSy65BLvdfsz6lVmzZunHw2+66aZmvc9J1aZnl06QE3XUKiBwVPq/Tz9+Ql5fCCFOF00di+0IsrKy1LvuuktNT09XzWazGhYWpo4ePVr985//rFZWVqqqqn2Od911lxoTE6Pa7Xb1sssuUzMyMuq91rJly9TJkyerMTExqslkUhMSEtRp06bpR6oDunfvXu+4ckt+/H755Zfq+PHjVbvdrkZERKijR49WX331Vf1xQP3oo4+CnhMZGakuWLBAvz1nzhw1MTFRVRQl6Kj0vffe2+B7+nw+tXv37uoll1xyzPW1x1FpRVVPscKTBpSVlREZGUlpaSkRERFt/vovTL8MgNSBQ7jm98+1+esLIcTpwuFwcPDgQX1EjDg9VVVVkZyczOuvv95gvU1tTX1NnKif321bWdQB1S7SlZoXIYQQnZnP5yMnJ4cXXniByMhILr/88vZeUoM6/VRpr9ut/7k5ldlCCCFEWxk4cGBQf5jaH++8885JX09GRgZdu3blv//9L6+//nqbn55qK6fmqk4ir7tmnpEqBbtCCCFOoiVLluCu9Ut0bY31TzuR0tLSTrk2Jg2R4MVT80Xj9cpgRiGEECdP4KSuaBnZNqoVvHg60kRNIYQQopOS4MVdO3hpvDW0EEIIIU4NErzUCl7cTcy1EEIIIcSpQYIXT02di0eCFyGEEOKU1+mDF0/tzIvL2SGqrIUQQojOrNMHL7W3jVBVPG4p2hVCCCFOZRK8eILP18vWkRBCnJ7y8vK4/fbb6datG1arlcTERC666CJ++OGHk/L+55xzDvfdd99Jea/TnfR5qdMcyO10Yg9vp8UIIYQ4Ya666ircbjdvvPEGPXr0IDc3l2+++YaioqL2XppOVVW8Xu8p29n2VCGZl7qZF/9xaVVVKXx3F8Uf75M6GCGEaISqqvhc3nb5aMn35pKSElatWsUf//hHzj33XLp3787o0aN57LHHuPTSS4/5/NLSUm677Tbi4+OJiIjgvPPOY8uWLfrjTz75JMOGDeOtt94iLS2NyMhIrr32WsrLywGYMWMG33//PX/9619RFAVFUTh06BDLly9HURSWLl3KqFGjsFqtvPXWWxgMBtavXx+0hpdeeonu3bvLzyQk89Jg5gXAW+Sgeks+AKEjE7CkSjpGCCHqUt0+sn6/pl3eO3nOeBSLsVnXBuYFffzxx4wdOxar1drs91FVlUsvvZSYmBiWLFlCZGQk//znPzn//PPZs2cPMTExAOzfv5+PP/6Yzz77jOLiYq655hr+8Ic/8Oyzz/LXv/6VPXv2MGjQIObMmQNAly5dOHToEACPPPIIzz//PD169CAqKooLLriABQsWMGrUKH0dCxYsYMaMGSiK0uy1n646febF42645sVbWXN/xU/ZJ3VNQggh2pbJZGLhwoW88cYbREVFMWHCBH7729/y888/H/O53333HVu3buX9999n1KhR9O7dm+eff56oqCg++OAD/Tqfz8fChQsZNGgQEydO5IYbbuCbb74BIDIyEovFQkhICImJiSQmJmI01gRec+bM4cILL6Rnz57ExsYya9Ys3n33XZz+n0lbtmxh8+bN3HzzzW38N9MxSealzraR279t5Kuq6f/i2Fl4UtckhBAdhWI2kDxnfLu9d0tcddVVXHrppaxcuZIffviBL7/8kj/96U+89tprzJgxo9HnbdiwgYqKCmJjY4Pur66uZv/+/frttLQ0wsNrsvRJSUnk5eU1a221MywA06ZN46677uKjjz7i2muv5fXXX+fcc88lLS2tWa93upPgpU7mRfX5APDVyrz4Kj2oHh+KqdMnqoQQIoiiKM3eujkV2Gw2LrzwQi688EJ+//vfM2vWLJ544okmgxefz0dSUhLLly+v91hUVJT+Z7PZHPSYoij4/D9TjiU0NDTotsVi4YYbbmDBggVceeWV/Oc//2HevHnNeq3OQIKXOsGLz+vV/lsZfL+3woUpynbS1iWEEOLEGzBgAB9//HGT14wYMYKcnBxMJtNxZT4sFgte/8+Y5pg1axaDBg1i/vz5uN1urrzyyla/9+mm06cS6m4b+XwNBy++8uDbQgghOo7CwkLOO+883n77bX7++WcOHjzI+++/z5/+9CemTp3a5HMvuOACxo0bx7Rp01i6dCmHDh1izZo1/O53v6t3IqgpaWlp/PTTTxw6dIiCgoJjZmX69+/P2LFj+c1vfsMvf/lL7HZ7s9/rdCeZl1qzjQBUf1TsrZt5KZfOu0II0VGFhYUxZswY/vKXv7B//37cbjepqanceuut/Pa3v23yuYqisGTJEh5//HFuueUW8vPzSUxM5KyzziIhIaHZa3jooYe46aabGDBgANXV1Rw8ePCYz5k5cyZr1qzhlltuafb7dAaK2gEOjJeVlREZGUlpaSkRERFt+trL33yNDZ9/rN++9J6H6TfhbAre3IFjR02hbtQVvQgbk9Sm7y2EEB2Nw+Hg4MGDpKenY7PJVvqJ9uyzz/Lee++xdevW9l5Ko5r6mjhRP79l26jetlFwwa4hVEtO+STzIoQQ4iSpqKhg3bp1vPTSS9xzzz3tvZxTjgQvxyjYNSdoFeCybSSEEKend955R29iV/dj4MCB7bKmu+66izPPPJOzzz5btowaIDUvjQUvVf7gJTEU54FSvFKwK4QQp6XLL7+cMWPGNPhY3ePPJ8vChQtZuHBhu7x3R9DpgxdP3YJdnxfVq+Kr1u43JYYA4KuQzIsQQpyOwsPDg5rLiVOfbBs1kHlRnR7wlzGb47TgRbaNhBBCiFNDpw9efF5Pnds+VLf/7L1BwRBh0e6v8tR9qhBCCCHaQacPXuqeFPf5vPj8wYtiMWAM0XbWVKcX1dO8Ns9CCCGEOHEkePEfjTb4p3v6vF5Ul1a0q5iNKDYT+KePS/ZFCCGEaH8SvPgzLwajP8Pi9erbRorFgGJQMPizL4ETSEIIIYRoP60KXubPn6930hs5ciQrV65s9NoZM2ZoU0frfLTX2fl6/MGL0eQPUHw1mReDf9y6IUQ7KifBixBCCNH+Why8LFq0iPvuu4/HH3+cTZs2MXHiRCZPnkxGRkaD1//1r38lOztb/zhy5AgxMTH84he/OO7Ft4WazEtg28hXK/Oi3RcIXryVsm0khBAdWU5ODvfeey+9evXCZrORkJDAmWeeyT/+8Q+qqqooKiri7rvvpm/fvoSEhNCtWzfuueceSktLg14n8Iv4jz/+GHS/0+kkNjYWRVFYvnz5Sfu80tLSmDdv3kl7v/bW4j4vL774IjNnzmTWrFkAzJs3j6VLl/LKK68wd+7cetdHRkYSGRmp3/74448pLi7m5ptvPo5lt6G6mRevp1bNSyDzIttGQgjR0R04cIAJEyYQFRXFc889x+DBg/F4POzZs4fXX3+d5ORkevToQVZWFs8//zwDBgzg8OHD3HHHHWRlZfHBBx8EvV5qaioLFixg7Nix+n0fffQRYWFhFBUVnexP75i8Xi+KomAwdPyKkRZ9Bi6Xiw0bNjBp0qSg+ydNmsSaNWua9Rr//ve/ueCCC+jevXuj1zidTsrKyoI+ThQ986IHL7VqXszBmRcp2BVCiGCqquJyudrlo6VzhWfPno3JZGL9+vVcc8019O/fn8GDB3PVVVfx+eefM2XKFAYNGsTixYuZMmUKPXv25LzzzuPZZ5/l008/rdfU9KabbuK9996jurpav+/111/npptuatG6MjMzmT59OtHR0cTGxjJ16lQOHTqkPz5jxgymTZvG888/T1JSErGxsdx55524/X3KzjnnHA4fPsz999+vZ4RA69IbFRXFZ599xoABA7BaraxcuRKz2UxOTk7QGh588EHOOuusFq27PbUo81JQUIDX6603AjwhIaHeX0RDsrOz+eKLL/jPf/7T5HVz587lqaeeasnSWk1touZFsfgzL6GSeRFCiIa43W6ee+65dnnv3/72t1gslmZdW1hYyFdffcVzzz1HaGhog9cEfujXFZiIbDIF/8gcOXIk6enpLF68mOuvv54jR46wYsUK/v73v/P00083a11VVVWce+65TJw4kRUrVmAymXjmmWe4+OKL+fnnn/XP77vvviMpKYnvvvuOffv2MX36dIYNG8att97Khx9+yNChQ7ntttu49dZb673+3Llzee2114iNjSUlJYUePXrw1ltv8fDDDwNap/m3336bP/zhD81a86mgVbmjuv+DVVVt9H96bYEocNq0aU1e99hjj1FaWqp/HDlypDXLbJa6p418Xl9Nn5e6mZdKCV6EEKIj2rdvH6qq0rdv36D74+Li9CGMv/nNb+o9r7CwkKeffprbb7+9wde9+eabef311wFYsGABl1xyCV26dGn2ut577z0MBgOvvfYagwcPpn///ixYsICMjIygmpno6Ghefvll+vXrx2WXXcall17KN998A0BMTAxGo5Hw8HASExNJTEzUn+d2u5k/fz7jx4+nb9++hIaGMnPmTBYsWKBf8/nnn1NVVcU111zT7HW3txZlXuLi4jAajfWyLHl5efWyMXWpqsrrr7/ODTfccMxI2Wq1YrVaW7K01quzbaR662dejLJtJIQQDTKbzfz2t79tt/duqbq/aK9duxafz8d1112H0+kMeqysrIxLL72UAQMG8MQTTzT4etdffz2PPvooBw4cYOHChfztb39r0Xo2bNjAvn376s1Wcjgc7N+/X789cOBAjP6DJQBJSUls3br1mK9vsVgYMmRI0H0zZszgd7/7HT/++CNjx47l9ddf55prrmk0I3UqalHwYrFYGDlyJMuWLeOKK67Q71+2bBlTp05t8rnff/89+/bt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4403UlhYSGVlJQD33HMPzzzzDBMmTOCJJ57g559/rvca48aN0/8cExND37592blzZ9A1ixYtYuPGjfznP//h888/5/nnnz/eT7FTkcxL3ZoXfdsoOK5TbEYt1POBr8qNMdJ6MlcphBCnJnOIlgFpr/dupt69e6MoCjt37mTatGkNXnP48GEuueQS7rjjDp5++mliYmJYtWoVM2fO1E8DzZo1i4suuojPP/+cr776irlz5/LCCy9w9913N/n+dYOm1NRUAAYMGIDX6+W2227jwQcfxGg0NvR0UYdkXvSaFy2zovi3jepmXhRFweDfOvJK3YsQQmgURdu6aY+PZta7gJYBueiii/j73/+uZ1FqKykpYf369Xg8Hl544QXGjh1Lnz59yMqqH5ilpqZyxx138OGHH/Lggw/yr3/9K+jxQPEvQHFxMXv27Glyu0pVVdxut/7zSBxbp8+8BIYwBqJdRfX/YzDVj+sMoWZ8FW58VRK8CCFERzN//nzGjx/P6NGjmTNnDkOGDMHj8bBs2TJeeeUV3n33XTweDy+99BJTpkxh9erV/OMf/wh6jfvuu4/JkyfTp08fiouL+fbbb+nfv3/QNXPmzCE2NpaEhAQef/xx4uLi9GzPO++8g9lsZvDgwVitVjZs2MBjjz3G9OnTMZk6/Y/kZuv0f1OBODcwmFFRtaCl7lFpQM+8yIkjIYToeNLT09m4cSPPPvssDz74INnZ2XTp0oWRI0fyyiuvMGzYMF588UX++Mc/8thjj3HWWWcxd+5cbrzxRv01vF4vd955J0ePHiUiIoKLL76Yv/zlL0Hv84c//IF7772XvXv3MnToUD755BMsFgsAJpOJP/7xj+zZswdVVenevTt33nkn999//0n9u+joOn3wgp558QcvBIKX+ulIY5icOBJCiI4sKSmJl19+mZdffrnBx++///56gcQNN9yg//mll1465nuceeaZbNu2rcHHpk+fzvTp01uwYtEQqXkhUPOiBS9Gxf9X0tC2kb9RndS8CCGEEO1Hghdf8Gkjg+LPwDSQedEb1UnNixBCCNFuZNuoTubFENg2ajDzIjUvQgghGnbOOefIiaGTRDIvvuAmdYHMC01mXqTmRQghhGgvErz4My+Bgl2D0sRpI5sW4MhwRiFEZycZBhHQHl8LnT54wZ95UQwGFMWAMVDzYmog82KXydJCiM4t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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sim_mutants = sim_phenotypes.copy()\n", + "sim_mutants.network.set_output([\"G0G1_entry\", \"G2M_entry\", \"S_entry\", \"Casp3\"])\n", + "sim_mutants.update_parameters(max_time=480)\n", + "res_mutants = sim_mutants.run()\n", + "res_mutants.plot_node_trajectory()" + ] + }, + { + "cell_type": "markdown", + "id": "7ebf2446-2209-4aca-b111-6bd25d1d5224", + "metadata": {}, + "source": [ + "We first look at the Plk1-- mutant, by forcing the inactivation of Plk1 along the simulation. " + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "ad576fa3-e54e-46e6-b577-347dd08203e4", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:52.626543Z", + "iopub.status.busy": "2024-06-07T17:38:52.625733Z", + "iopub.status.idle": "2024-06-07T17:38:55.201276Z", + "shell.execute_reply": "2024-06-07T17:38:55.200394Z", + "shell.execute_reply.started": "2024-06-07T17:38:52.626501Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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OHTokPrnzp07e0xaSEtLQ3FxsU9tq7/a+DXXXIO77roLH374IW688UasWLECo0ePRufOnX263rmMwSWMWSwWvPvuuzCbzUhISMCQIUMwePBgj58CiIiaIkmSz901ZwOj0YgxY8ZgzJgx+Mtf/oKZM2diwYIFTQYXRVGQlpaGjRs3NngtLi5O/X39RTglSYKiKD61y2QyefxZr9fjlltuwcqVK3HttdfiX//6F2cjuTC4hClFUfDRRx/h9OnTiI2Nxe23346IiIhQN4uIqE317t1b7SZvzMCBA1FYWAitVtuqioder4fD4fD5/JkzZ6Jv375YunQpbDYbrr322hbf+1zCMS5hSAiBzz77DHv37oUsy7j22msZWojonFZaWopLL70U//znP7Fr1y7k5ubiP//5D5577jlcffXVTb738ssvx7Bhw3DNNdfgs88+Q15eHr755hs8+uijDWb+NKVz5874/vvvkZeXh5KSkmarMb169cLQoUPx5z//Gb///e/577QLKy5h6IcffsD3338PAPjd736HrKysELeIiCi4oqKiMGTIELz44os4dOgQbDYbMjMzcfvtt+Phhx9u8r2SJGHdunV45JFHcNttt+HkyZNITU3FqFGjkJKS4nMb7r//ftx6663o3bs3qqurkZub2+x7ZsyYgW+++Qa33Xabz/c510miHUwILy8vR2xsLMrKyhATExPq5rRrR44cwVtvvQVFUXD55ZdzIC4R+aWmpga5ubnIzs6G0WgMdXPOeU899RTeffdd7N69O9RNaVRTXxPB+P7NrqIwUl5ejn//+99QFAV9+/bFiBEjQt0kIiLyorKyEj/++CNefvll3H333aFuzlmFwSVMWCwWrF69GlVVVejQoQMmTZoU9osYEREBwOrVq9UF6up/9OnTJyRtuuuuu3DRRRfh4osvZjdRPRzjEgbcS/kXFRXBZDLh97//PfR6faibRUR0Vpg0aRKGDBni9bX6U5zbyqpVq7Bq1aqQ3Ptsx+ByjqusrMTHH3+Mffv2QZIkTJ48GfHx8aFuFhHRWSM6Opq73bcjDC7nsLKyMrzxxhuoqqqCLMuYMGECZxAREVG7xuByjlIUBWvXrkVVVRWSkpJw/fXXIzU1NdTNIiIiahUGl3OQEAIbNmzAoUOHoNVqMWXKFG6aSERE5wQGl3PM8ePHsWHDBnVho6uuuoqhhYiIzhkMLucQu92Of/7zn6iuroYsyxg/fjxycnJC3SwiIqKAYXA5hxw6dAjV1dWQJAl33nlngy3YiYiI2jsuQHcO2bt3LwDgggsuYGghIvKisLAQc+fORbdu3WA0GpGSkoKLLroIr732GsxmM06dOoU5c+agZ8+eiIyMRKdOnXD33XejrKzM4zqSJEGSJHz33Xcexy0WCxITEyFJEjZu3Nhmn1fnzp2xZMmSNrtfKLUouCxdulTdk2DQoEHYsmVLk+evXr0aOTk5iIyMRFpaGqZPn47S0tIWNZi8KywsVPey6N27d4hbQ0R09jl8+DDOP/98fP7553j66aexY8cObNiwAffeey/++9//YsOGDThx4gROnDiB559/Hrt378aqVavw6aefYsaMGQ2ul5mZiZUrV3oc+/DDDxEVFdVWn5JfHA5HsztStwvCT++++67Q6XTi73//u9izZ4+YO3euMJlM4siRI17P37Jli5BlWbz00kvi8OHDYsuWLaJPnz7immuu8fmeZWVlAoAoKyvzt7lhwWq1ildffVUsWLBArF69WiiKEuomEdE5qrq6WuzZs0dUV1cLIYRQFEVYLJaQfPj7b924ceNERkaGqKys9Pp6Y9f797//LfR6vbDZbOoxAOLRRx8VMTExwmw2q8fHjBkj/u///k8AEF999ZVP7Tp27JiYPHmyiIuLEwkJCWLSpEkiNzdXff3WW28VV199tfjrX/8qUlNTRUJCgpg9e7awWq1CCCEuvvhiAcDjQwghVq5cKWJjY8V///tf0atXL6HRaMTGjRuFVqsVBQUFHm2YN2+eGDlypE/tra/+10Rdwfj+7fcYl8WLF2PGjBmYOXMmAGDJkiX47LPPsGzZMixatKjB+d999x06d+6sbhKVnZ2NO+64A88991wLo1bgVZwqQdGhg+g6eEi727/HbDZj7dq1KC4uhslkwtVXX93uPgciar9sNhuefvrpkNz74Ycf9nn7ktLSUrXSYjKZvJ7T2L+d7p2NtVrPb5mDBg1CdnY23n//ffzhD3/A0aNHsXnzZrz66qt44oknfGqX2WzG6NGjMXLkSGzevBlarRZPPvkkrrjiCuzatUv9/L766iukpaXhq6++wsGDBzFlyhQMGDAAt99+Oz744APk5OTgj3/8I26//fYG11+0aBGWL1+OxMREZGRkoEuXLnj77bfxwAMP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gGfFxX66BkKINhtnYrfb8cMPPwAALrzwwja5JxFRi+ginZWPUN3bR927d4ckSdi7dy+uueYar+ccOXIEEyZMwKxZs/DEE08gISEBX3/9NWbMmKHO+pk5cybGjRuHTz75BJ9//jkWLVqEF154AXPmzGny/vW/f2RmZgJwrojucDjwxz/+Effddx+XvfABKy72+sHFWXFxVNQ57hBQzPY2a9OmTZtw5swZREZGquVIIqKzkiQ5u2tC8eHHD5MJCQkYN24cXn31VbV6UteZM2fw008/wW6344UXXsDQoUPRo0cPnDjRMJRlZmZi1qxZ+OCDD3Dffffh73//u8fr7oG+AHD69GkcOHCgyS4qIQRsNptaFaKmseJSv6vI0bCryP1njanhwKpAq6ysxNatWwEAEydOhF6vD/o9iYjCwdKlSzF8+HBceOGFWLhwIfr37w+73Y7169dj2bJleOedd2C32/Hyyy/jqquuwtatW/Haa695XOOee+7B+PHj0aNHD5w+fRpffvklevXq5XHOwoULkZiYiJSUFDzyyCNISkpSqzyrV6+GTqdDv379YDAYsG3bNsyfPx9TpkyBVhv235J9EvZPqf4CdIq9YVcRADjKrdClBn9m0c8//wxFUdCxY0f07t076PcjIgoX2dnZ2L59O5566incd999KCgoQHJyMgYNGoRly5ZhwIABWLx4MZ599lnMnz8fo0aNwqJFizB16lT1Gg6HA3feeSeOHTuGmJgYXHHFFXjxxRc97vPMM89g7ty5+O2335CTk4O1a9eqP4RqtVo8++yzOHDgAIQQyMrKwp133ol77723TZ9Fexb2waX+rCJFUSCEUIOLNjkC9pPVcJRbvb09oIQQ2L59OwBuqEhEFAxpaWl45ZVX8Morr3h9/d57720QIm655Rb19y+//HKz97jooovUzXHrmzJlCqZMmeJHi6k+jnGp11XksNshahyAw9nXqHOt31K/AhMMR44cQWlpKfR6Pfr27Rv0+xEREbU3YR9c6s8qEooDitU5zgWyBG1CBICGY16CwV1t6du3LwwGQ9DvR0RE1N6wq8hWv+LigLA4g4uk10AT4+yXdJQHd9doRVHUDRUHDBgQ1HsREVHgXXLJJZwZ1AbCvuLinkXkJhQHhKviIutlyNGu4FJha/DeQCotLYXFYoFWq0XHjh2Dei8iIqL2KuyDC9TV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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "mut_Plk1_OFF = sim_mutants.copy()\n", + "mut_Plk1_OFF.mutate(\"Plk1\", \"OFF\")\n", + "mutres_Plk1_OFF = mut_Plk1_OFF.run()\n", + "mutres_Plk1_OFF.plot_node_trajectory()" + ] + }, + { + "cell_type": "markdown", + "id": "23d23f04-d9e7-4fde-a3f6-c569a909da2f", + "metadata": {}, + "source": [ + "We can see that we don't see any cells in G0G1 nor S phase : cells get stuck in G2M phase.\n", + "We can also look at the sequence of transitions for this mutant" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "711cbd1d-602d-4840-a3be-d5628e569a42", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:55.202554Z", + "iopub.status.busy": "2024-06-07T17:38:55.202263Z", + "iopub.status.idle": "2024-06-07T17:39:24.872372Z", + "shell.execute_reply": "2024-06-07T17:39:24.870829Z", + "shell.execute_reply.started": "2024-06-07T17:38:55.202528Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
<nil>G0G1_entryG0G1_entry -- G2M_entryG0G1_entry -- S_entryG2M_entryG2M_entry -- S_entryS_entry
<nil>0.01532.00.00.00.00.00.0
G0G1_entry188.00.00.01368.00.00.00.0
G0G1_entry -- G2M_entry0.020.00.00.02.00.00.0
G0G1_entry -- S_entry0.04.00.00.00.00.01364.0
G2M_entry112.00.022.00.00.00.00.0
G2M_entry -- S_entry0.00.00.00.01054.00.08.0
S_entry310.00.00.00.00.01062.00.0
\n", + "
" + ], + "text/plain": [ + " G0G1_entry G0G1_entry -- G2M_entry \\\n", + " 0.0 1532.0 0.0 \n", + "G0G1_entry 188.0 0.0 0.0 \n", + "G0G1_entry -- G2M_entry 0.0 20.0 0.0 \n", + "G0G1_entry -- S_entry 0.0 4.0 0.0 \n", + "G2M_entry 112.0 0.0 22.0 \n", + "G2M_entry -- S_entry 0.0 0.0 0.0 \n", + "S_entry 310.0 0.0 0.0 \n", + "\n", + " G0G1_entry -- S_entry G2M_entry \\\n", + " 0.0 0.0 \n", + "G0G1_entry 1368.0 0.0 \n", + "G0G1_entry -- G2M_entry 0.0 2.0 \n", + "G0G1_entry -- S_entry 0.0 0.0 \n", + "G2M_entry 0.0 0.0 \n", + "G2M_entry -- S_entry 0.0 1054.0 \n", + "S_entry 0.0 0.0 \n", + "\n", + " G2M_entry -- S_entry S_entry \n", + " 0.0 0.0 \n", + "G0G1_entry 0.0 0.0 \n", + "G0G1_entry -- G2M_entry 0.0 0.0 \n", + "G0G1_entry -- S_entry 0.0 1364.0 \n", + "G2M_entry 0.0 0.0 \n", + "G2M_entry -- S_entry 0.0 8.0 \n", + "S_entry 1062.0 0.0 " + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mut_Plk1_OFF_trajs = mut_Plk1_OFF.copy()\n", + "mut_Plk1_OFF_trajs.update_parameters(display_traj=1, thread_count=1, max_time=480)\n", + "res_mut_Plk1_OFF_trajs = mut_Plk1_OFF_trajs.run()\n", + "\n", + "trajs, all_states = load_trajs(res_mut_Plk1_OFF_trajs._path, outputs_phenotype)\n", + "stg_counts, state_ids, ids_state = compute_stg_counts(trajs, all_states)\n", + "data_plk1 = pd.DataFrame(\n", + " data=stg_counts,\n", + " index=state_ids.keys(), columns=state_ids.keys()\n", + ")\n", + "data_plk1" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "efed6ed6-7b66-4682-84a2-1c23c12f88cb", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:24.873884Z", + "iopub.status.busy": "2024-06-07T17:39:24.873376Z", + "iopub.status.idle": "2024-06-07T17:39:25.207446Z", + "shell.execute_reply": "2024-06-07T17:39:25.206085Z", + "shell.execute_reply.started": "2024-06-07T17:39:24.873850Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABFsAAAJrCAYAAAA/CpyfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd5xcdb3/8dc5Z/ps71my6Y2EFDoBgRCQIiEIiiCClCBRkKIoXr3eK9yrCF4L3B8BI9IEEQUuRaR36QGEEALpPdmabbPTz5zfH7M7yWY3ld2dLe/ng30ke+bszHfY7M7Mez7fz8dwHMdBRERERERERER6hJntBYiIiIiIiIiIDCYKW0REREREREREepDCFhERERERERGRHqSwRURERERERESkBylsERERERERERHpQQpbRERERERERER6kMIWEREREREREZEe5Mr2AkREREREREQke6LRKPF4vM9v1+Px4PP5+vx2+4LCFhEREREREZEhKhqN4s8thmS4z2+7oqKCNWvWDMrARWGLiIiIiIiIyBAVj8chGcY7+QKwPH13w3ac6qX3Eo/HFbaIiIiIiIiIyCBkeTD6MGxx+uyWskMNckVEREREREREepDCFhERERERERGRHqSwRURERERERESkB6lni4iIiIiIiMhQZ5pgWn13e87grv0Y3PdORERERERERKSPKWwREREREREREelBCltERERERERERHqQwhYRERERERERkR6ksEVEREREREREpAdpGpGIiIiIiIjIUGdafTyNqA9vKwtU2SIiIiIiIiIi0oMUtoiIiIiIiIiI9CCFLSIiIiIiIiIiPUhhi4iIiIiIiIhID1LYIiIiIiIiIiLSgzSNSERERERERGSo0zSiHqXKFhERERERERGRHqSwRURERERERESkBylsERERERERERHpQQpbRERERERERER6kMIWEREREREREZEepGlEIiIiIiIiIkOd0cfTiFKaRiQiIiIiIiIiIntIYYuIiIiIiIiISA9S2CIiIiIiIiIi0oMUtoiIiIiIiIiI9CCFLSIiIiIiIiIiPUjTiERERERERESGOrOPpxH15W1lgSpbRERERERERER6kMIWEREREREREZEepLBFRERERERERKQHKWwREREREREREelBCltERERERERERHqQphGJiIiIiIiIDHWaRtSjVNkiIiIiIiIiItKDFLaIiIiIiIiIiPQghS0iIiIiIiIiIj1IYYuIiIiIiIiISA9S2CIiIiIiIiIi0oM0jUhERERERERkqDMtMPswIjCTfXdbWaDKFhERERERERGRHqSwRURERERERESkBylsERERkV6xePFi5s2bx9ixY/H7/fj9fsaPH8/8+fN57733upxfW1vLhRdeSElJCYFAgJkzZ/Liiy92e92xWIwFCxZw7LHHUlxcjNvtpri4mFmzZrFw4UJaW1s7nf+nP/2Jc845h4kTJ2KaJqNGjeqNu7xPli5dynXXXcfatWuzvZR9UlNTw09+8hNmzJhBXl4eHo+H4cOHc+aZZ/LEE09g23bm3Pfff5/LL7+cqVOnkpubS3l5OSeccAIvvfRSl+u98MILMQyD3NxcQqFQl8vXrVuHaZoYhsF1113Xm3dxtzZv3sx1113Hhx9+mNV1iIhI/6GwRURERHrcwoULOfjgg3nnnXe46qqrePLJJ/nHP/7B1VdfzSeffMKhhx7KqlWrMufHYjGOP/54XnzxRW655RYef/xxysvLOfnkk3n11Vc7XXddXR1HHnkk3//+95k4cSJ/+MMfeOmll7jzzjuZNm0a1157LZdddlmnr7nvvvv45JNPOOywwxg7dmyf/D/YU0uXLuX6668fkGHL22+/zdSpU7njjjuYO3cuDz74IC+88AI33ngjbrebM888k3vuuSdz/l/+8hfeffddLr74Yh5//HH++Mc/4vV6Of744/nTn/7U5frdbjfJZJK//vWvXS67++67yc3N7c27t8c2b97M9ddfr7BFREQy1CBXREREetQbb7zBZZddxqmnnsrDDz+Mx+PJXDZ79mwuv/xyHnroIfx+f+b4nXfeyZIlS3jzzTeZOXMmAMcddxzTp0/n2muv5Z133smce9555/Hxxx/zwgsvcMwxx3S67S9/+cv87Gc/4+mnn+50/Nlnn8U00+8xzZkzhyVLlvT4/e4r4XCYQCCQ7WXQ1NTEl7/8ZXJycnjjjTcYNmxYp8vPO+88Fi9eTENDQ+bYtddey69//etO533pS1/ioIMO4r/+67/45je/2ekyj8fDaaedxl133cW8efMyxx3H4Z577uHss8/mjjvu6IV717v6y/dQRER6jypbREREpEfdcMMNWJbFwoULOwUt2zvrrLOorKzMfP7oo48yceLETNAC4HK5OO+883j33XfZtGkTAIsWLeK5557j0ksv7RK0dCguLua8887rdKwjaOkJ8Xicn//850yaNAmv10tpaSkXXXQRdXV1nc4bNWoUc+bM4ZlnnuGggw7C7/czadIk7rrrrsw599xzD2eddRaQDpcMw8AwjEw1yKxZszjggAN47bXXOPLIIwkEAlx88cXMmzePoqIiwuFwl/XNnj2bKVOm9Nj93Zk77riDmpoafvWrX3UJWjpMmzaN4447LvN5WVlZl3Msy+Lggw9mw4YN3V7HxRdfzJtvvsmyZcsyx1544QXWrVvHRRddtE9rdxyH2267jRkzZuD3+yksLOSrX/0qq1ev7nRex///RYsWcfTRRxMIBBgzZgw33ngjqVQKgFdeeYVDDz0UgIsuuijzPezY2nThhReSk5PDxx9/zIknnkhubi7HH388//3f/43L5er2fl988cUUFxcTjUb36f6JiOwTy+r7j73w2muvcdppp1FZWYlhGDz22GM7PXf+/PkYhsHNN9/c6XgsFuOKK66gpKSEYDDI3Llz2bhxY6dzGhsbOf/888nPzyc/P5/zzz+fpqamvVorKGwRERGRHmTbNi+//DKHHHLITl+Ad2fJkiVMmzaty/GOY5988gkAzz//PABz587tgdXuvVQqxemnn86NN97Iueeeyz/+8Q9uvPFGnn/+eWbNmkUkEul0/kcffcQ111zD9773PR5//HGmTZvGvHnzeO211wA49dRTueGGGwBYsGABb731Fm+99Rannnpq5jq2bNnCeeedx7nnnstTTz3FZZddxlVXXUVjYyMPPPBAp9tbunQpL7/8Mpdffnkv/59Ify8sy+JLX/rS57qeZDLJP//5z50GRCeccAIjR47sFFLdeeedHHPMMYwfP36fbnP+/PlcffXVnHDCCTz22GPcdtttfPLJJxx55JHU1NR0Ore6uppvfOMbnHfeeTzxxBOccsop/PjHP+b+++8H4KCDDuLuu+8G4Kc//Wnme3jJJZdkriMejzN37lxmz57N448/zvXXX8/8+fNxuVwsXLiw0+1t3bqVBx98kHnz5uHz+fbp/omIDEZtbW1Mnz6dW2+9dZfnPfbYY7zzzjud3tTpcPXVV/Poo4/y4IMP8vrrrxMKhZgzZ06n/mLnnnsuH374Ic888wzPPPMMH374Ieeff/5er1fbiERERKTH1NfXE4lEGDlyZJfLbNvGcZzM55ZlYRgGAA0NDRQVFXX5mo5jHVtROqoAdrx+x3E6PVEyDANrL98x2xN/+9vfeOaZZ3jkkUc488wzM8enT5/OoYceyj333MN3vvOdzPH6+nreeOMNRowYAcAxxxzDiy++yAMPPMAxxxxDaWlpJjCYPHkyRxxxRJfb3Lp1Kw899BCzZ8/udPzYY49lwYIFnV7U33rrreTl5XXZjtMbNmzYQGlpaZftMKlUKlP1Aemqol1VFl133XWsXLlyp+9QGobBhRdeyMKFC/nFL35BS0sLjz32WJeQYk+9/fbb3HHHHfzmN7/h+9//fub40UcfzYQJE/jtb3/LTTfdlDne0NDAU089xWGHHQakw59XXnmFBx54gG9+85vk5eVxwAEHADB27Nhuv4eJRIL//M//7FKJc84553DHHXfwn//5n5kqsD/+8Y/EYrEufYdERIa6U045hVNOOWWX52zatInvfve7PPvss53euABobm7mzjvv5L777uOEE04A4P7776eqqooXXniBk046iU8//ZRnnnmGt99+m8MPPxxIV3LOnDmTZcuWMXHixD1erypbREREpE8cfPDBuN3uzMdvfvObTpd3BC/d2dVlAI8//nin687Pz++RNe/oySefpKCggNNOO41kMpn5mDFjBhUVFbzyyiudzp8xY0YmaAHw+XxMmDCBdevW7fFtFhYWdgpa7JRDLJli/mVX8OGHH/L0868STaRoaWnhvvvu44ILLiAnJ2en1+c4Tqe1J5PJXR7fW9///vc7fS92VYX0xz/+kV/84hdcc801nH766Ts976KLLqKmpoann36aP//5z3g8nsz2q7315JNPYhgG5513Xqf7WlFRwfTp07t8DysqKjJBS4dp06bt1fcQ4Ctf+UqXY1dddRW1tbU89NBDQDqouv322zn11FP71cQsEZHe1NLS0ukjFovt0/WkUinOP/98fvjDH3ZbLfn++++TSCQ48cQTM8cqKys54IADePPNNwF46623yM/PzwQtAEcccQT5+fmZc/aUwhYRERHpMSUlJfj9/m5fiD7wwAMsWrSIJ554ostlxcXFnRqpdti6dSuwrcKlI7jY8fpnzZrFokWLWLRoEXPmzPnc92NnampqaGpqwuPxdAoU3G431dXV1NfXdzq/uLi4y3V4vd4u240A4naKUDRJU1uCutY4W5pixBIpSsoqWFHdxqebQny8oZUlG0N8trmNSYedQOXwkfzvrbeyorqNO++6m7a2tt1uIbr33nu7rB3g1Vdf7XJ8VxOSRowYQV1dXZe+Mddcc03me7GrrWR333038+fP59JLL+V//ud/drnmkSNHcvzxx3PXXXdx1113cc455+xzg9mamhocx6G8vLzL/X377bc/1/dwZwKBAHl5eV2OH3jggRx99NEsWLAASAdBa9eu5bvf/e5e3isRkYGrqqoq0x8lPz+fX/7yl/t0PTfddBMul4srr7yy28urq6vxeDwUFhZ2Ol5eXk51dXXmnO76i5WVlWXO2VPaRiQiIiI9xrIsZs+ezXPPPceWLVs6vdiePHkyQLcv4KdOncrHH3/c5XjHsY5tGl/84hf5yU9+whNPPNHpnamCggIOOeQQoPsXxz2lpKSE4uJinnnmmW4v724UccJOkbAdkrZDwk4RT6ZwHFhdGyZhO6xvSDdBXV8fpby28wv4RMoh5UA4nupyvaZpcvY3v8X/+5/rqaupZuHvb+f444/fbYnzaaedxqJFi7ocP/jgg7sc726/e4cvfvGLPPfcczz11FN89atfzRyvqqqiqqoKYKcNku+++24uueQSLrjgAn7/+9/vtnIJ0k1jzzvvvEz1x74qKSnBMAz++c9/4vV6u1ze3bHPa1f378orr+Sss87igw8+4NZbb2XChAl88Ytf7PE1iIj0Vxs2bOgUSO/L7+H333+fW265hQ8++GCPHlO25zhOp6/p7ut3PGdPKGwRERGRHvXjH/+Yp59+mm9/+9s8/PDDmcqJXTnjjDO47LLLeOeddzKlu8lkkvvvv5/DDz8886L/kEMO4cQTT+SOO+7g7LPP5uijj+7V+7KjOXPm8OCDD2LbNoccelgmQEl0/Jl0WFsXyRxriSRZuqmt03XE7XTfmtZouseMy50OJGLRXVdKWKaByzRwWe0fpsG3L72EP9zyS/77h/NZtmxZp14jO1NcXNxtIJWbm5sJrPbEJZdcwq9//WuuvfZajjrqqD1uiHzPPfdwySWXcN555/HHP/5xj5+8nnHGGZxxxhnk5+d32xdlT82ZM4cbb7yRTZs28bWvfW2fr2d7HS8M9qbapcMZZ5zBiBEjuOaaa3j11Vf53e9+t9dP6EVEeoRppT/68vaAvLy8bqv/9sY///lPamtrO23dtW2ba665hptvvpm1a9dSUVFBPB6nsbGxU3VLbW0tRx55JJDeOrpjo3SAuro6ysvL92pNCltERESkRx111FEsWLCAK664goMOOohLL72UKVOmYJomW7Zs4ZFHHgHo9MTq4osvZsGCBZx11lnceOONlJWVcdttt7Fs2TJeeOGFTtd///33c9JJJ3HCCSdw4YUXctJJJ1FWVkZLSwuLFy/mhRde6PKkbenSpSxduhRIlwiHw2EefvhhIF1x01F1sz075RBPpognHeLtFSmHH386x8w+kZNOPoVzL/4OB0w/GJfLTU31Jha99U+O++KpzD75NACcLtfYlQFM2j9920/89V4qywoI+v2MGTOG8tISAh6TiNtkWlVO9y/Ai3x885vf5Pbbb2fkyJGcdtppe3CrPaOgoIDHHnuM0047jenTp/Od73yHI444gpycHBoaGnjttdeorq7OPIEFeOihh5g3bx4zZsxg/vz5vPvuu52u88ADD9zpO5o+ny/zPfs8jjrqKC699FIuuugi3nvvPY455hiCwSBbtmzh9ddfZ+rUqZ2aHO+JsWPH4vf7+fOf/8z+++9PTk4OlZWVu6wM6mBZFpdffjk/+tGPCAaDXHjhhft4z0REhq7zzz8/0/S2w0knncT555+faU7e0Tvu+eefz4TtW7ZsYcmSJfzqV78CYObMmTQ3N/Puu+9m+nW98847NDc3d3o82xMKW0RERKTHffvb32bmzJnccsst/O53v2Pz5s0YhsHw4cM58sgjefHFFzs1ffV6vbz44otce+21XHHFFYTDYWbMmMHTTz/Nscce2+m6S0tLeeutt7jjjjv461//yt/+9jdCoRB5eXlMmTKFK6+8stOEHkhPEbr++us7HetosPpvP/kPrvm3n6aDFXtbwGKnuo9LfnvHgzxw1+08+eiD3LXgt1guF+UVlRx8xBcYN2lbaGMApmmQ67NwWyZuy8DtMvC7TQwDJu8XxGUaTBtxADfffDO33HILZ512ErZtc/fdd3PhhRdiGgYGu96GcvbZZ3P77bfzne98Z5dTf3rDEUccwZIlS7jlllt47LHH+M1vfkM8Hqe0tJSDDz6YO+64g69//euZ8//xj3+QSqX44IMPOOqoo7pc35o1a/qkMezChQs54ogjWLhwIbfddhupVIrKykqOOuqoLs1w90QgEOCuu+7i+uuv58QTTySRSPCzn/2M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hAkT0Gg03HffffTr148ffviBBx98kLy8PF555ZUW2z/zzDMMHjyYJ554AoB7772XU045hV27dhEXF8e9996Lw+Hg7bff5ocffgjfrvH3C/D+++/z7bffct9995Genk5qaio+n485c+awbds2BgwYEN721VdfxW63S7BFCCGAGrefem8o5TzNZsSok51zIYSINJlEJIQ4mDYHWwKBQItsDa1We8AMCb/fz1VXXUVMTAy33nrrfrfp168fU6ZMYf78+Zx88sl89tlnFBUVccUVV+zTgLc1nnzySdauXctPP/3E+PHjAZg5cya9evXi3HPPZfHixZx88snh7V0uF19++WW4zGbs2LFkZmby1ltv8cc//pGsrCx69+4NwJgxY8jJydnnMcvKyti4cSMDBw4MXxYMBunbty9PP/10i2DL008/Tb9+/Vqsob3cfvvtrFq1ijfeeIM33ngDrVbLyJEjOeWUU7jllltISUlp9X3NnTuX6upqNmzYEP59zJw5E7PZzO23384dd9zRIgBls9n46KOP0GpD3dIzMzOZMGECn376KRdeeCH9+vUjLS0NgKOPPnq/j1lfX8+6detISGjq7N67d2/+9Kc/8cwzz4QDORAK7kyfPr3FGoQQoqeSKURCCNH+ZBKREOJg2hwaHTduHHq9Pvz1j3/8Y7/bqarKVVddxbfffsurr75Kdnb2Ae/zyiuv5IMPPqCyspKXX36Z6dOn7zeo0RofffQRw4cPZ/To0fj9/vDXiSeeuN/JRtOnT2/RzyQtLY3U1FR2797d6sccOXJki0ALhEqkbrzxRj766CP27NkDhHrRLF68mOuvv/6gJTzBYLDF2gOB0NFJVVVbXN68fGd/jEYj7733Hhs3buTxxx/nwgsvpLy8nIceeoghQ4awZcuWVv+MH330EdOnTyczM7PF4zcGjZYtW9Zi+1NPPTUcaGn8HQFt+r3OmDGjRaAFQkGcK664ggULFoTLwr7++ms2btzIjTfe2Or7FkKI7qxA+rUIIUS7kklEQohDafOzddGiRaxcuZIPPvjggNuoqsrVV1/N66+/zoIFCzjjjDMOep/nnnsuJpOJxx9/nA8//JCrrrqqrcsKKy0tZe3atS0CQnq9HpvNhqqqVFRUtNg+KWnflD+j0YjL5drn8gNpXvrS3JVXXonZbOb5558HQtkXZrOZK6+88qD398AD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D3L88cezZcuWcKB2zpw5fPjhh7z55pskJSVx2223MXv2bH7++eeI9qGSYIsQQhyE2aDFbNCSHmfA6Q1S4/RR4/DjDzZNNKpx+qlx+tFqIM4cmmhkNWq7TM3x2NwEPrz9OF74egdPf7YdbyBIfqWLS59bwdlH9eKeM7rHmOhAUGVVflNT3DFZcT2mR01nUFHrDAVV8hqCKrsr2bS7gora1u+gKwr0To2jf694+mW2DKrkpEtARfQsxxxzDM888ww33XQTY8eO5ZprrmHYsGFoNBqKi4t55513AFpMrrnyyit55plnOO+88/jrX/9Kamoqzz77LFu2bOHLL79scf+vv/46J554IrNmzeLyyy/nxBNPJDU1Fbvdztq1a/nyyy/3mYqzceNGNm7cCEBJSQlOp5O3334bCGXcNJ9SczAXXngh//73vznllFO45ZZbmDBhAnq9noKCApYsWcIZZ5zRondMazRm7bz44ovYbDZMJhO5ubmtytCJj4/n0ksv5bnnnqNPnz6cdtppbXrsI/HQQw/x/fffc8EFFzB69GjMZjO7du3i6aefprKykr/97W+tvq85c+bwzjvvMGXKFG699VZGjhxJMBhkz549fP7559x2221tDm6NGBEqyfrnP//JZZddhl6vZ9CgQa3KPho4cCAnnXQSn376KcceeyyjRo1q02OL7sNut7c4bzQaw4G85vbOdnvllVdITU3l559/ZsqUKaiqyhNPPME999wTbq69cOFC0tLSWLRoEddeey21tbW8/PLLvPbaa+EGza+//jrZ2dl8+eWXnHjiiRH7uSTYIoQQraAoClajFqtRS2a8Sr0nQI3DT63LR+MAk0CwaZS0TqMQZ9ERZ9ER0wUCLwadhptOGMApozK4+611rGgYE/3uykKWbizn3rOGcsa4zE7/cxzMlrJ66jyhhoApVgM5CeYor6h7qrK7woGUjbsr2JQXOl3WMKK1NTKSYhjcO7EhMyUhnK2Smx4njWiFaOb3v/89kyZN4p///CePP/44RUVFKIpCVlYWkydP5quvvmrR9NVoNPLVV19x5513ctNNN+F0Ohk9ejSffvrpPk1WU1JS+OGHH3jppZf4z3/+w1tvvUV9fT2xsbEMGzaMm2++ucWEHgj1Ebn//vtbXHbeeecB8Oc//5m5c+e26ufSarV88MEH/POf/+S1117j4YcfRqfT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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw_graph_from_pandas(data_plk1)" + ] + }, + { + "cell_type": "markdown", + "id": "3708b336-1ebc-4a65-becf-c217bd0ab095", + "metadata": {}, + "source": [ + "And indeed, we can see that most trajectories stop at this G2M_entry.\n", + "\n", + "\n", + "Then, we look at the Fox03 mutant." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "71336142", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:25.209915Z", + "iopub.status.busy": "2024-06-07T17:39:25.209454Z", + "iopub.status.idle": "2024-06-07T17:39:25.823701Z", + "shell.execute_reply": "2024-06-07T17:39:25.823047Z", + "shell.execute_reply.started": "2024-06-07T17:39:25.209875Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAi8AAAGdCAYAAADaPpOnAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAByK0lEQVR4nO3deXiU1fn/8fcza1YSSMgGYUdAVg0ugLgiiLhVW2hr3QpVvrghWivaX7VYxVqrWFusVgF3aV1aW6lK3QBxA0FB9jVAEkJYsmcmM/P8/pjMJJNMQhImCSGfV6+5knnWMw+5nLv3uc85hmmaJiIiIiLthKWtGyAiIiLSFApeREREpF1R8CIiIiLtioIXERERaVcUvIiIiEi7ouBFRERE2hUFLyIiItKuKHgRERGRdsXW1g1oDJ/PR05ODvHx8RiG0dbNERERkUYwTZPi4mIyMjKwWCKXL2kXwUtOTg6ZmZlt3QwRERFphj179tC9e/eIXa9dBC/x8fGA/8N36tSpjVsjIiIijVFUVERmZmbwezxS2kXwEugq6tSpk4IXERGRdibSJR8q2BUREZF2RcGLiIiItCsKXkRERKRdaRc1LyIicnwxTROPx4PX623rpkgbslqt2Gy2Vp/GRMGLiIg0idvtJjc3l7KysrZuihwHYmJiSE9Px+FwtNo9mxW8zJ8/nz/84Q/k5uYyePBg5s2bx9ixY+s9/pVXXuHRRx9l69atJCQkcNFFF/HYY4+RlJTU7IaLiEjr8/l87Ny5E6vVSkZGBg6HQ5OHdlCmaeJ2uzlw4AA7d+6kf//+EZ2IriFNDl4WL17MzJkzmT9/PmPGjOGZZ55h4sSJbNiwgR49etQ5fsWKFVx77bU88cQTXHrppezbt4/p06czbdo03n777Yh8CBERaR1utxufz0dmZiYxMTFt3RxpY9HR0djtdnbv3o3b7SYqKqpV7tvkEOnxxx9n6tSpTJs2jUGDBjFv3jwyMzN5+umnwx7/xRdf0KtXL2677TZ69+7NWWedxU033cSqVauOufEiItI2Wuv/Ycvxry3+Fpp0R7fbzerVqxk/fnzI9vHjx7Ny5cqw54wePZq9e/eyZMkSTNNk//79vPHGG0yaNKn5rRYREZEOq0nBS0FBAV6vl9TU1JDtqamp5OXlhT1n9OjRvPLKK0yZMgWHw0FaWhqJiYk89dRT9d7H5XJRVFQU8hIRERGBZs7zUrs4yzTNegu2NmzYwG233cZvfvMbVq9ezXvvvcfOnTuZPn16vdefO3cuCQkJwZcWZRQREZGAJgUvycnJWK3WOlmW/Pz8OtmYgLlz5zJmzBh++ctfMmzYMCZMmMD8+fNZsGABubm5Yc+ZPXs2hYWFwdeePXua0kwREZGw8vLyuP322+nXrx9RUVGkpqZy1lln8de//jU49NvlcnHrrbeSnJxMbGwsl112GXv37q1zrY8//phLLrmErl27EhUVRd++fZkyZQrLli0LHlNRUcH111/P0KFDsdlsXHHFFa31UYM++eQTDMPgyJEjrX7vltKk4MXhcJCVlcXSpUtDti9dupTRo0eHPaesrKxOMY/VagX8GZtwnE5ncBHG1liM8cDunaz6z9v4NNmSiMgJa8eOHZxyyil88MEHPPzww6xZs4b//e9/3HHHHfz73//mf//7HwAzZ87k7bff5vXXX2fFihWUlJRwySWXhEzIN3/+fC644AKSkpJYvHgxGzdu5KWXXmL06NHccccdweO8Xi/R0dHcdtttjBs3rtU/c1O43e62bkLjmU30+uuvm3a73Xz++efNDRs2mDNnzjRjY2PNXbt2maZpmvfcc495zTXXBI9fuHChabPZzPnz55vbt283V6xYYY4cOdI8/fTTG33PwsJCEzALCwub2txGeWzyJPOxyZPMr//9VotcX0TkRFFeXm5u2LDBLC8vN03TNH0+n+kuL2+Tl8/na1LbJ0yYYHbv3t0sKSkJu9/n85lHjhwx7Xa7+frrrwe379u3z7RYLOZ7771nmqZp7t6927Tb7eYdd9xR73XCue6668zLL7+8SW02TdN85513zFNPPdV0Op1m7969zQceeMCsrKwM7gfMv/3tb+YVV1xhRkdHm/369TP/9a9/maZpmjt37jSBkNd1111nmqZpnnPOOebNN99s3nHHHWZSUpJ59tlnmzfccIM5adKkkPtXVlaaqamp5vPPPx+2fbX/Jmpqqe/vJs/zMmXKFA4ePMicOXPIzc1lyJAhLFmyhJ49ewKQm5tLdnZ28Pjrr7+e4uJi/vznP3PnnXeSmJjI+eefz+9///sIhF6RtW/TBkZe8oO2boaISLvhcbn403U/bJN73/bCG9gbOa/IwYMHgxmX2NjYsMcYhsHq1auprKwMGVWbkZHBkCFDWLlyJRMmTODNN9+ksrKSu+++u97rRMr777/Pz372M/70pz8xduxYtm/fzo033gjA/fffHzzut7/9LY8++ih/+MMfeOqpp7j66qvZvXs3mZmZvPnmm1x11VVs3ryZTp06ER0dHTzvhRde4P/+7//47LPPME2TQ4cOcfbZZ5Obm0t6ejoAS5YsoaSkhMmTJ0fscx2rZhXszpgxg127duFyuVi9ejVnn312cN+iRYv45JNPQo6/9dZb+f777ykrKyMnJ4eXX36Zbt26HVPDW4Knsh2lzEREpNG2bduGaZoMGDAgZHtycjJxcXHExcXxq1/9iry8PBwOB507dw45ruao2i1bttCpUyfS0tKC+998883gdeLi4li3bl1E2v3QQw9xzz33cN1119GnTx8uvPBCHnzwQZ555pmQ466//np+8pOf0K9fPx5++GFKS0v56quvsFqtdOnSBYCUlBTS0tJISEgIntevXz8effRRBgwYwMCBAxk9ejQDBgzgpZdeCh6zcOFCfvSjHxEXFxeRzxQJWtuoBm976u8TETkO2JxObnvhjTa7d1PVzop89dVX+Hw+rr76alwuV73nmbVG1da+zoQJE1i7di379u3j3HPPjdiClatXr+brr7/moYceCm7zer1UVFRQVlYWnOV42LBhwf2xsbHEx8eTn59/1OuPHDmyzrZp06bx7LPPcvfdd5Ofn8+7777Lhx9+GIFPEzkKXmrwKHgREWkSwzAa3XXTlvr164dhGGzatClke58+fQCCXSlpaWm43W4OHz4ckn3Jz88PDkzp378/hYWF5OXlBbMvcXFx9OvXD5stsl+rPp+P3/72t1x55ZV19tWcit9ut4fsMwwDn8931OuH60K79tprueeee/j888/5/PPP6dWrV4PrF7YFze9cQ6W7/qhbRETar6SkJC688EL+/Oc/U1paWu9xWVlZ2O32kFG1ubm5rF+/Phi8/PCHP8Rut7dK7eapp57K5s2b6devX51XY6flD6z23NhsUFJSEldccQULFy5k4cKF3HDDDc1uf0tR5qUGj4IXEZETVmBB4ZEjR/LAAw8wbNgwLBYLX3/9NZs2bSIrK4uEhASmTp3KnXfeSVJSEl26dOGuu+5i6NChwaHOPXr04I9//CO33347hw4d4vrrr6d3794cOnSIl19+GaieEgT8k7W63W4OHTpEcXExa9euBWDEiBFHbfNvfvMbLrnkEjIzM/nRj36ExWLhu+++Y926dfzud79r1Ofu2bMnhmHwn//8h4svvpjo6Oij1q9MmzYtODz8uuuua9R9WpOClxrUbSQicuLq27cva9as4eGHH2b27Nns3bsXp9PJySefzF133cWMGTMAeOKJJ7DZbEyePJny8nIuuOACFi1aFBKQ3HrrrQwaNIjHH3+cH/7whxQVFZGUlMSoUaN47733GDp0aPDYiy++mN27dwffn3LKKUD9c53VNGHCBP7zn/8wZ84cHn30Uex2OwMHDmTatGmN/tzdunXjt7/9Lffccw833HAD1157LYsWLWrwnHHjxpGens7gwYPJyMho9L1ai2E25um1saKiIhISEigsLGyRCev+OOUSAKLi4rn5+dcifn0RkRNFRUUFO3fupHfv3iE1F3JiKSsrIyMjgwULFoStt6mpob+Jlvr+7vCZF5+vug9QmRcREenIfD4feXl5/PGPfyQhIYHLLrusrZsUVocv2PV6PMHfNc+LiIi0psGDB4fMD1Pz9corr7R6e7Kzs+nWrRt///vfWbBgQcRHT0XK8dmqVuStrKx+Y5r4fF4sFmv9J4iIiETIkiVLqKz5PVRDfQset6RevXo1qhanrSl4qfVH4y4rJ+o4mkVQREROXIGldaRp1G3kCQ1eXGUlbdQSERERaQwFL7UyLxUNTF4kIiIibU/BS63gxaXgRURE5Lim4KXGaCP/+/CFUyIiInJ86PDBi6dW5sXn9dRzpIiIiBwPOnzwUrvbyOeJzDLmIiIi0jIUvNTqJvIq8yIickLKz8/npptuokePHjidTtLS0pgwYQKff/55q9z/3HPPZebMma1yrxOd5nmpVfPia+SS4SIi0r5cddVVVFZW8sILL9CnTx/279/Phx9+yKFDh9q6aUGmaeL1eo/bmW2PF8q81Oo2UsGuiEjjmaaJz+1tk1dTZoI9cuQIK1as4Pe//z3nnXcePXv25PTTT2f27NlMmjTpqOcXFhZy4403kpKSQqdOnTj//PP59ttvg/sfeOABRowYwUsvvUSvXr1ISEjgxz/+McXFxQBcf/31fPrppzz55JMYhoFhGOzatYtPPvkEwzB4//33GTlyJE6nk5deegmLxcKqVatC2vDUU0/Rs2fPdjEDbkvr8KFd7WBFNS8iIo1nVvrI+c3KNrl3xpzRGI7GLecSWC/on//8J2eeeSZOp7PR9zFNk0mTJtGlSxeWLFlCQkICzzzzDBdccAFbtmyhS5cuAGzfvp1//vOf/Oc//+Hw4cNMnjyZRx55hIceeognn3ySLVu2MGTIEObMmQNA165d2bVrFwB33303jz32GH369CExMZFx48axcOFCRo4cGWzHwoULuf766zEMo9FtP1Ep86LRRiIiJzybzcaiRYt44YUXSExMZMyYMdx777189913Rz33448/Zt26dfzjH/9g5MiR9O/fn8cee4zExETeeOON4HE+n49FixYxZMgQxo4dyzXXXMOHH34IQEJCAg6Hg5iYGNLS0khLS8NqrQ685syZw4UXXkjfvn1JSkpi2rRpvPbaa7hcLgC+/fZb1q5dyw033BDhJ9M+KfNSJ3hR5kVEpLEMu4WMOaPb7N5NcdVVVzFp0iSWL1/O559/znvvvcejjz7Kc889x/XXX1/veatXr6akpISkpKSQ7eXl5Wzfvj34vlevXsTHxwffp6enk5+f36i21cywAFxxxRXccsstvP322/z4xz9mwYIFnHfeefTq1atR1zvRKXipPdrIo8yLiEhjGYbR6K6b40FUVBQXXnghF154Ib/5zW+YNm0a999/f4PBi8/nIz09nU8++aTOvsTExODvdrs9ZJ9hGPh8vka1KzY2NuS9w+HgmmuuYeHChVx55ZW8+uqrzJs3r1HX6gg6fPBSZ5I6BS8iIh3GySefzD//+c8Gjzn11FPJy8vDZrMdU+bD4XDgbUJ2f9q0aQwZMoT58+dTWVnJlVde2ex7n2hU81J7tJG6jURETjgHDx7k/PPP5+WXX+a7775j586d/OMf/+DRRx/l8ssvb/DccePGMWrUKK644gref/99du3axcqVK/n1r39dZ0RQQ3r16sWXX37Jrl27KCgoOGpWZtCgQZx55pn86le/4ic/+QnR0dGNvteJrsNnXuqMNlLBrojICScuLo4zzjiDJ554gu3bt1NZWUlmZia/+MUvuPfeexs81zAMlixZwn333cfPf/5zDhw4QFpaGmeffTapqamNbsNdd93Fddddx8knn0x5eTk7d+486jlTp05l5cqV/PznP2/0fToCw2wHA8aLiopISEigsLCQTp06RfTan7z4HKvf/Wfw/chLr+Scn+mPREQknIqKCnbu3Env3r2Jiopq6+ac8B566CFef/11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mNzcXNavX69/lwaYpsktt9zCW2+9xUcffUTv3r1D9uvZtx7TNHG5XHrmLeiCCy5g3bp1rF27NvgaOXIkV199NWvXrqVPnz569q3E5XKxceNG0tPTW/9vvknlvSeQwFDp559/3tywYYM5c+ZMMzY21ty1a1dbN63dKi4uNtesWWOuWbPGBMzHH3/cXLNmTXD4+SOPPGImJCSYb731lrlu3TrzJz/5SdhhdN27dzf/97//md988415/vnna/jiUfzf//2fmZCQYH7yySchQxjLysqCx+jZR97s2bPNZcuWmTt37jS/++4789577zUtFov5wQcfmKapZ96aao42Mk09+5Zy5513mp988om5Y8cO84svvjAvueQSMz4+Pvi92ZrPvcMGL6Zpmn/5y1/Mnj17mg6Hwzz11FODQ0uleT7++GMTqPO67rrrTNP0D6W7//77zbS0NNPpdJpnn322uW7dupBrlJeXm7fccovZpUsXMzo62rzkkkvM7OzsNvg07Ue4Zw6YCxcuDB6jZx95P//5z4P//ejatat5wQUXBAMX09Qzb021gxc9+5YRmLfFbrebGRkZ5pVXXml+//33wf2t+dwN0zTNZueMRERERFpZh6x5ERERkfZLwYuIiIi0KwpeREREpF1R8CIiIiLtioIXERERaVcUvIiIiEi7ouBFRERE2hUFLyIiItKuKHgRERGRdkXBi4iIiLQrCl5ERESkXVHwIiIiIu3K/wffREtqIkyOVQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "mut_FoxO3_OFF = sim_mutants.copy()\n", + "mut_FoxO3_OFF.mutate(\"FoxO3\", \"OFF\")\n", + "mutres_FoxO3_OFF = mut_FoxO3_OFF.run()\n", + "mutres_FoxO3_OFF.plot_node_trajectory()" + ] + }, + { + "cell_type": "markdown", + "id": "9a52d904-7394-43bb-9f1c-c79abf81bdce", + "metadata": {}, + "source": [ + "We can see that the cell cycle stops after one or a few cycles." + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "440a2bd6-7fc9-41e5-8627-9f700b92bb91", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:25.824641Z", + "iopub.status.busy": "2024-06-07T17:39:25.824440Z", + "iopub.status.idle": "2024-06-07T17:39:28.774789Z", + "shell.execute_reply": "2024-06-07T17:39:28.773871Z", + "shell.execute_reply.started": "2024-06-07T17:39:25.824623Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
<nil>G0G1_entryG0G1_entry -- G2M_entryG0G1_entry -- S_entryG2M_entryG2M_entry -- S_entryS_entry
<nil>0.01645.00.00.00.00.00.0
G0G1_entry429.00.00.01705.00.00.00.0
G0G1_entry -- G2M_entry0.0470.00.00.032.00.00.0
G0G1_entry -- S_entry0.019.00.00.00.00.01686.0
G2M_entry764.00.0502.00.00.00.00.0
G2M_entry -- S_entry0.00.00.00.01234.00.029.0
S_entry452.00.00.00.00.01263.00.0
\n", + "
" + ], + "text/plain": [ + " G0G1_entry G0G1_entry -- G2M_entry \\\n", + " 0.0 1645.0 0.0 \n", + "G0G1_entry 429.0 0.0 0.0 \n", + "G0G1_entry -- G2M_entry 0.0 470.0 0.0 \n", + "G0G1_entry -- S_entry 0.0 19.0 0.0 \n", + "G2M_entry 764.0 0.0 502.0 \n", + "G2M_entry -- S_entry 0.0 0.0 0.0 \n", + "S_entry 452.0 0.0 0.0 \n", + "\n", + " G0G1_entry -- S_entry G2M_entry \\\n", + " 0.0 0.0 \n", + "G0G1_entry 1705.0 0.0 \n", + "G0G1_entry -- G2M_entry 0.0 32.0 \n", + "G0G1_entry -- S_entry 0.0 0.0 \n", + "G2M_entry 0.0 0.0 \n", + "G2M_entry -- S_entry 0.0 1234.0 \n", + "S_entry 0.0 0.0 \n", + "\n", + " G2M_entry -- S_entry S_entry \n", + " 0.0 0.0 \n", + "G0G1_entry 0.0 0.0 \n", + "G0G1_entry -- G2M_entry 0.0 0.0 \n", + "G0G1_entry -- S_entry 0.0 1686.0 \n", + "G2M_entry 0.0 0.0 \n", + "G2M_entry -- S_entry 0.0 29.0 \n", + "S_entry 1263.0 0.0 " + ] + }, + "execution_count": 20, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "mut_FoxO3_OFF_trajs = mut_FoxO3_OFF.copy()\n", + "mut_FoxO3_OFF_trajs.update_parameters(display_traj=1, thread_count=1, max_time=480)\n", + "res_mut_FoxO3_OFF_trajs = mut_FoxO3_OFF_trajs.run()\n", + "\n", + "trajs, all_states = load_trajs(res_mut_FoxO3_OFF_trajs._path, outputs_phenotype)\n", + "stg_counts, state_ids, ids_state = compute_stg_counts(trajs, all_states)\n", + "data_foxo3 = pd.DataFrame(\n", + " data=stg_counts,\n", + " index=state_ids.keys(), columns=state_ids.keys()\n", + ")\n", + "data_foxo3" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "97ed6617-6f34-4edf-b96b-d6033df038d4", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:28.778069Z", + "iopub.status.busy": "2024-06-07T17:39:28.777764Z", + "iopub.status.idle": "2024-06-07T17:39:29.081838Z", + "shell.execute_reply": "2024-06-07T17:39:29.080809Z", + "shell.execute_reply.started": "2024-06-07T17:39:28.778041Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAABFsAAAJrCAYAAAA/CpyfAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdd5hU5d3/8feZujNbZnuji/QOFkpURARUil1jwIbRRGOJ5jExeWIwT2LJk8T4/ERD7LHEWCIiKhYUO4giwgKCIHV779PP749ZBtYFBNzd2fJ5Xddcu3POmTP3sMCe+cz3/t6GaZomIiIiIiIiIiLSKiyxHoCIiIiIiIiISFeisEVEREREREREpBUpbBERERERERERaUUKW0REREREREREWpHCFhERERERERGRVqSwRURERERERESkFSlsERERERERERFpRbZYD0BEREREREREYsfr9eL3+9v9eR0OB3Fxce3+vO1BYYuIiIiIiIhIN+X1enElpkGwod2fOzs7m+3bt3fJwEVhi4iIiIiIiEg35ff7IdiAc+hlYHW03xOH/BRtfAK/36+wRURERERERES6IKsDox3DFrPdnik21CBXRERERERERKQVKWwREREREREREWlFCltERERERERERFqReraIiIiIiIiIdHcWC1is7fd8Zteu/ejar05EREREREREpJ0pbBERERERERERaUUKW0REREREREREWpHCFhERERERERGRVqSwRURERERERESkFWk1IhEREREREZHuzmJt59WI2vG5YkCVLSIiIiIiIiIirUhhi4iIiIiIiIhIK1LYIiIiIiIiIiLSihS2iIiIiIiIiIi0IoUtIiIiIiIiIiKtSKsRiYiIiIiIiHR3Wo2oVamyRURERERERESkFSlsERERERERERFpRQpbRERERERERERakcIWEREREREREZFWpLBFRERERERERKQVaTUiERERERERke7OaOfViMJajUhERERERERERA6TwhYRERERERERkVaksEVEREREREREpBUpbBERERERERERaUUKW0REREREREREWpFWIxIRERERERHp7iztvBpRez5XDKiyRURERERERESkFSlsERERERERERFpRQpbRERERERERERakcIWEREREREREenQ3n//fWbNmkVubi6GYbB48eIWx2zatInZs2fj8XhITExk/Pjx7Nq1K7rf5/Nx/fXXk56eTnx8PLNnz2bPnj3NzlFZWcm8efPweDx4PB7mzZtHVVXVEY9XYYuIiIiIiIiIdGj19fWMGjWK+++//4D7t23bxg9+8AMGDx7MihUr+PLLL/ntb39LXFxc9JibbrqJl156iWeffZYPP/yQuro6Zs6cSSgUih5zySWXsHbtWpYtW8ayZctYu3Yt8+bNO+LxGqZpmkf+MkVERERERESks6upqcHj8eAcfyuGzdluz2sGffhW/ondu3eTlJQU3e50OnE6Dz0OwzB46aWXOPvss6PbLr74Yux2O08++eQBH1NdXU1GRgZPPvkkF110EQAFBQX06tWL1157jenTp7Np0yaGDh3KypUrOfHEEwFYuXIlEyZM4KuvvmLQoEGH/fpU2SIiIiIiIiIiMdGrV6/olB2Px8Ndd911xOcIh8O8+uqrDBw4kOnTp5OZmcmJJ57YbKrR559/TiAQYNq0adFtubm5DB8+nI8//hiATz75BI/HEw1aAMaPH4/H44kec7gUtoiIiIiIiIhITOzevZvq6uro7bbbbjvic5SUlFBXV8fdd9/NjBkzePPNNznnnHM499xzee+99wAoKirC4XCQkpLS7LFZWVkUFRVFj8nMzGxx/szMzOgxh8t2xK9CRERERERERKQVJCUlNZtGdDTC4TAAc+bM4ec//zkAo0eP5uOPP+bvf/87p5xyykEfa5omhmFE7+///cGOORyqbBERERERERGRTis9PR2bzcbQoUObbR8yZEh0NaLs7Gz8fj+VlZXNjikpKSErKyt6THFxcYvzl5aWRo85XApbRERERERERKTTcjgcHH/88WzevLnZ9i1bttCnTx8Axo0bh91u56233oruLywsJC8vj4kTJwIwYcIEqqur+fTTT6PHrFq1iurq6ugxh0vTiERERERERES6O4sVLO0YEViCR3R4XV0dW7dujd7fvn07a9euJTU1ld69e/Nf//VfXHTRRZx88smceuqpLFu2jFdeeYUVK1YA4PF4mD9/PrfccgtpaWmkpqbyi1/8ghEjRjB16lQgUgkzY8YMfvzjH7No0SIArr76ambOnHlEKxGBln4WERERERER6baiSz9PvA3DFtduz2sGvfg+vovq6urD6tmyYsUKTj311BbbL7vsMh5//HEAHn30Ue666y727NnDoEGDuOOOO5gzZ070WK/Xy3/913/xzDPP0NjYyGmnncYDDzxAr169osdUVFRwww03sGTJEgBmz57N/fffT3Jy8hG9PoUtIiIiIiIiIt1UZwlbOhv1bBEREZE2sW7dOubPn0///v1xuVy4XC4GDBjANddcw2effdbi+JKSEi6//HLS09Nxu91MmDCB5cuXH/DcPp+PhQsXcsopp5CWlobdbictLY3JkyezaNEiamtrmx3/z3/+k4svvphBgwZhsVjo27dvW7zko7Jx40YWLFjAjh07Yj2Uo1JcXMyvf/1rRo8eTVJSEg6Hg549e3LuueeyZMkSQqFQ9NjPP/+c6667jhEjRpCYmEhWVhZTp07lnXfeaXHeyy+/HMMwSExMpK6ursX+nTt3YrFYMAyDBQsWtOVL/E4FBQUsWLCAtWvXxnQcIiLScShsERERkVa3aNEixo0bx6pVq7jxxhtZunQpr776KjfddBMbNmzg+OOPZ9u2bdHjfT4fp512GsuXL+e+++7j5ZdfJisrixkzZvDee+81O3dpaSkTJ07k5ptvZtCgQfzjH//gnXfe4ZFHHmHkyJHceuutXHvttc0e8+STT7JhwwZOOOEE+vfv3y5/Bodr48aN3HHHHZ0ybFm5ciUjRozgoYceYvbs2Tz77LO8/fbb3H333djtds4999xoaTfAv/71Lz799FOuvPJKXn75ZR5++GGcTiennXYa//znP1uc3263EwwG+fe//91i32OPPUZiYmJbvrzDVlBQwB133KGwRUREotQgV0RERFrVRx99xLXXXstZZ53FCy+8gMPhiO6bMmUK1113Hc8//zwulyu6/ZFHHiEvL4+PP/6YCRMmAHDqqacyatQobr31VlatWhU9du7cuaxfv563336bk08+udlzn3322fzud7/j9ddfb7b9jTfewGKJfMY0c+ZM8vLyWv11t5eGhgbcbnesh0FVVRVnn302CQkJfPTRR+Tk5DTbP3fuXNatW0d5eXl026233sqf//znZsedeeaZjB07lt///vdceumlzfY5HA5mzZrFo48+yvz586PbTdPk8ccf56KLLuKhhx5qg1fXtjrKz1BERNqOKltERESkVd15551YrVYWLVrULGjZ3wUXXEBubm70/ksvvcSgQYOiQQuAzWZj7ty5fPrpp+Tn5wOwevVq3nzzTa6++uoWQcteaWlpzJ07t9m2vUFLa/D7/fzhD39g8ODBOJ1OMjIyuOKKKygtLW12XN++fZk5cybLli1j7NixuFwuBg8ezKOPPho95vHHH+eCCy4AIuGSYRgYhhGtBpk8eTLDhw/n/fffZ+LEibjdbq688krmz59PamoqDQ0NLcY3ZcoUhg0b1mqv92AeeughiouL+dOf/tQiaNlr5MiRzZoZZmZmtjjGarUybtw4du/efcBzXHnllXz88cfNlvN8++232blzJ1dcccVRjd00TR544AFGjx6Ny+UiJSWF888/n2+++abZcXv//FevXs1JJ52E2+3mmGOO4e677yYcDgORho3HH388AFdccUX0Z7h3atPll19OQkIC69evZ9q0aSQmJnLaaafxP//zP9hstgO+7iuvvJK0tDS8Xu9RvT4RkaNitbb/rQtT2CIiIiKtJhQK8e6773Lccccd9A34geTl5TFy5MgW2/du27BhAwBvvfUWEFkZIBbC4TBz5szh7rvv5pJLLuHVV1/l7rvv5q233mLy5Mk0NjY2O/7LL7/klltu4ec//zkvv/wyI0eOZP78+bz//vsAnHXWWdx5550ALFy4kE8++YRPPvmEs846K3qOwsJC5s6dyyWXXMJrr73Gtddey4033khlZSXPPPNMs+fbuHEj7777Ltddd10b/0lEfhZWq5Uzzzzze50nGAzywQcfHDQgmjp1Kn369GkWUj3yyCOcfPLJDBgw4Kie85prruGmm25i6tSpLF68mAceeIANGzYwceJEiouLmx1bVFTEj370I+bOncuSJUs444wzuO2223jqqacAGDt2LI899hgA//3f/x39GV511VXRc/j9fmbPns2UKVN4+eWXueOOO7jmmmuw2WzRpUX3qqio4Nlnn2X+/PnExbVfo0oREWldmkYkIiIiraasrIzGxkb69OnTYl8oFGL/RRCtViuGYQBQXl5Oampqi8fs3bZ3KsreKoBvn980zWaNWA3DwNoGn5g999xzLFu2jBdffJFzzz03un3UqFEcf/zxPP744/z0pz+Nbi8rK+Ojjz6id+/eAJx88sksX76cZ555hpNPPpmMjIxoYDB06FDGjx/f4jkrKip4/vnnmTJlSrPtp5xyCgsXLmz2pv7+++8nKSmpxXSctrB7924yMjJaTIcJh8PRqg+IVBUdqrJowYIFbN26lcWLFx9wv2EYXH755SxatIg//vGP1NTUsHjx4hYhxeFauXIlDz30EH/5y1+4+eabo9tPOukkBg4cyF//+lfuueee6Pby8nJee+01TjjhBCAS/qxYsYJnnnmGSy+9lKSkJIYPHw5A//79D/gzDAQC3H777S0qcS6++GIeeughbr/99mgV2MMPP4zP52vRd0hERDoXVbaIiIhIuxg3bhx2uz16+8tf/tJs/97g5UAOtQ/g5ZdfbnZuj8fTKmP+tqVLl5KcnMysWbMIBoPR2+jRo8nOzmbFihXNjh89enQ0aAGIi4tj4MCB7Ny587CfMyUlpVnQEgqb+IJhrrn2etauXcvrb72HNxCmpqaGJ598kssuu4yEhISDns80zWZjDwaDh9x+pG6++eZmP4tDVSE9/PDD/PGPf+SWW25hzpw5Bz3uiiuuoLi4mNdff52nn34ah8MRnX51pJYuXYphGMydO7fZa83OzmbUqFEtfobZ2dnRoGWvkSNHHtHPEOC8885rse3GG2+kpKSE559/HogEVQ8++CBnnXVWh1oxS0REjpzCFhEREWk16enpuFyuA74RfeaZZ1i9ejVLlixpsS8tLa1ZI9W9KioqgH0VLnuDi2+ff/LkyaxevZrVq1czc+bM7/06Dqa4uJiqqiocDkezQMFut1NUVERZWVmz49PS0lqcw+l0tphuBOAPhanzBqmqD1Ba66ewyocvECY9M5uvi+rZlF/H+t215O2p46uCegafMJXcnn34v/vv5+uieh559DHq6+u/cwrRE0880WLsAO+9916L7YdaIal3796Ulpa26Btzyy23RH8Wh5pK9thjj3HNNddw9dVX87//+7+HHHOfPn047bTTePTRR3n00Ue5+OKLj7rBbHFxMaZpkpWV1eL1rly58nv9DA/G7XaTlJTUYvuYMWM46aSTWLhwIRAJgnbs2MHPfvazI3xVIiLS0WgakYiIiLQaq9XKlClTePPNNyksLGz2Znvo0KEAB3wDP2LECNavX99i+95te6dpnH766fz6179myZIlTJs2LXpccnIyxx13HHDgN8etJT09nbS0NJYtW3bA/QdaijgQChMImQRDJoFQGH8wjGnCNyUNBEImu8ojTVB3lXnJKmn+Bj4QNgmb0OAPtzivxWLhokt/zP/73zsoLS5i0d8f5LTTTmPQoEGHfA2zZs1i9erVLbaPGzeuxfb9mxh/2+mnn86bb77Ja6+9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cNz7rfJjsVj42c9+xtKlS9m1axcQ6UWzbNkyrr32WpVci4hIpzUiJ4kZgzLYu7DfjspGXlhfSK0vGNuBiUi3t3c1ova8dWVd+9WJxEh6ejoul4udO3e22PfMM8+wevVqlixZcsDHmqbJVVddxVNPPcXjjz/OnDlzDvlc559/PnFxcdx777288sorzJ8//6jHXVxczLp165qFQXa7ncTEREzTpKK8nMuO68mNJ/UFYPzg3lx+fC8uHJ3LzKFZnHpsOgnuONxGiGPS4slOdBJnP/R/MwebZnXllVficrn4+9//DsDChQtxuVxceeWVR/36REREOoKBGQnMGZaNwxr5HVlW7+ffawsorvXFeGQiItJaNI1IpA1YrVamTJnCm2++SWFhYbNAYejQyDScHTt2tHjc3qDlscce45FHHmHu3Lnf+Vxut5uLL76Yu+66i6SkJM4999yjHvfekOjRRx896H7DMHDarEf9HN92sCoVj8fDZZddxsMPP8wvfvELHnvsMS655JLDXj5aRESkI+uV7OLCUTm8srGYam+QhkCIF9cXcvrADAakx3/3CUREpENTZYtIG7ntttsIhUL85Cc/IRAIfOfxpmny4x//mMcee4xFixZxxRVXHPZz/fSnP2XWrFncfvvtxMXFHfWYZ86cybZt20hLS+O4445rcTua6UlOpxOAxsbGI37sDTfcQFlZGeeffz5VVVX87Gc/O+JziIiIdFSpbgcXjsolNynyuzIYNnn9qxJW765q1t9NREQ6H1W2iLSRSZMmsXDhQq6//nrGjh3L1VdfzbBhw7BYLBQWFvLiiy8CkJSUBESChUceeYQrr7ySESNGsHLlyui5nE4nY8aMOehzjR49msWLF3/vMd900028+OKLnHzyyfz85z9n5MiRhMNhdu3axZtvvsktt9zCiSeeeETnHDFiBAD33Xcfl112GXa7nUGDBpGYmPidjx04cCAzZszg9ddf5wc/+AGjRo06qtclIiLSUbnsVs4ensM7W8v4qiSy2t8nOyupagxw6rHp2CzqUyYi0hkpbBFpQz/5yU+YMGEC9913H/feey8FBQUYhkHPnj2ZOHEiy5cvZ8qUKQC88sorADz66KMtpvH06dPngNOOWlt8fDwffPABd999N//4xz/Yvn07LpeL3r17M3Xq1KOqbJk8eTK33XYbTzzxBA899BDhcJh3332XyZMnH9bjL7roIl5//XVVtYiISJdlsxicPiCdFJc9ujT0ppI6qr0BzhqShcveetN3RUSkfRimahRFpAM777zzWLlyJTt27MBut8d6OCIiIm3q67J63txSSigcuUT3xNmYPTSLFLfjOx4pInJ0ampq8Hg8ZF/5FBaHu92eN+xvoOjRuVRXV0er/bsSVbaIyCGFwiYrtpZjtRicdEwq1nYoZ/b5fKxZs4ZPP/2Ul156ib/+9a8KWkREpFsYkB5PktPGKxuLaQiEqPYGee7LQs4ckkmvZFeshyciIodJYYtIN2CaJqFQ6JDHWK3WA64MtL6wlodX7gHgs13VXH9yX5y2tu2tXVhYyMSJE0lKSuKaa67h+uuvb9PnExER6UiyEp1cNCqXVzYWU9bgxxcK8/KGIib3T2N4dtf79FdEpCvSakQi3cB7772H3W4/5O2JJ5444GNzkpzRapbP99Twx7e2UusNtul4+/bti2maVFdX8+CDD2K1aq66iIh0L4lxNs4fmUPflEg1S9iEd7aW88H2csLqAiAi0uGpZ4tIN1BbW8vmzZsPeUy/fv1IS0s74L68wlr+umI7jYEwALlJTn419RgyEpytPlYRERHZJ2yafLi9grUFNdFt/VLdTB+UgcOqz01F5PtTz5a2obBFRA7LjooG7ln+DVWNkaqWZJeNX552DH1T2+8/ZBERke5qfWENK7aVs/fCPT3ewayhWSQ61RVARL4fhS1tQ3G4iByWvqlufn/GAHKTItUsVY1Bfv/GVvIKa2M8MhERka5vRE4Sc4ZlR6tZyur9PPdlASV1vhiPTES6CovF0u63rqxrvzoRAeCzbeUMu+VVht6ylD3l9Ud9nowEJ7+bMYAB6ZHEuzEQ5u7l3/DR9srWGqqIiIgcRO8UFxeOyiEpLlLNUu8P8cK6QraWHf3vdhERaRsKW0S6uDe/LOT8ez+gqsFPdUOAh9/Z9r3OlxRn4zfTjmVsz0ipXyhscv8HO1m6oaQ1hisiIiKHkOp2cNGo3GilaTBs8tpXJXy2uwp1BxAR6TgUtoh0UaZpct/rm7ly0UoCoX0XX0lu+/c+t9Nm4ebJ/ZgyYF9D3ac/L+DJ1flaIUFERKSNuexWzh6ew6CM+Oi2j3dWsvzrMkJh/R4WEekIFLaIdEENviA/eXg1f1qykW9nH9ZWmhtptRhcNb4n54/Kjm57bVMp93+wk0Ao3CrPISIiIgdmsxhMG5jBhD4p0W0bS+pYnFdEYyAUw5GJiAgobBHpckzTZO79H7N0Tf4B9zf6g632XIZhcN6obH48oRcWI7Ltkx1V3P32NzT4daEnIiLSlgzD4PheycwYlIG16Rdxfo2X574soLIxEOPRiYh0bwpbRLqYslofq7aWA5HpPt/W2AYhyJQBadxyaj8c1siF3sbiOhYs+5qKBn+rP5eIiIg0NzAjgfNGZOO2WwGo9gZ57ssCdlc1xnhkItKZGBaj3W9dmcIWkS4mIymO288bznkn9iIt0dlif1uELQBje3r47bRjSXBGLvR2V3m5/bWv2VPlbZPnExERkX2yE+O4cFQOaU292XzBMC9vKGJDUW2MRyYi0j0pbBHpgq6ZOoCpI7IpqIx8onX8ManRfeE2bJx3bEY8vz9jABkJDgDKGwL87vUtrCvQhZ6IiEhbS4qzc8HIXPqmuAAIm7B8axkfbq/QSkUi0um9//77zJo1i9zcXAzDYPHixdF9gUCAX/7yl4wYMYL4+Hhyc3O59NJLKSgoaHYOn8/H9ddfT3p6OvHx8cyePZs9e/Y0O6ayspJ58+bh8XjweDzMmzePqqqqIx6vwhaRLsg0TR544+vo/ZtnDmHm2B6kJjg454RebfrcOUlx/P6MAfRNjVzoNQTC3LN8G29+VdqmzysiIiLgsFmYOTSL0blJ0W1r8qt5dVOJGtiLSKdWX1/PqFGjuP/++1vsa2hoYM2aNfz2t79lzZo1/Oc//2HLli3Mnj272XE33XQTL730Es8++ywffvghdXV1zJw5k1BoX/X/JZdcwtq1a1m2bBnLli1j7dq1zJs374jHa5iKuUW6nPc3lfDD//sIgBG9knn9tskYhkE4bGJpp7mRjYEQ93+wkzV7aqLbTh+UzqXH98DWxednioiIdATrCmt4b1s5ey/2M+IdzByaRaLTFtNxiUjHUlNTg8fjocfV/8LicLfb84b9DeT/44dUV1eTlJT03Q/Yj2EYvPTSS5x99tkHPWb16tWccMIJ7Ny5k969e1NdXU1GRgZPPvkkF110EQAFBQX06tWL1157jenTp7Np0yaGDh3KypUrOfHEEwFYuXIlEyZM4KuvvmLQoEGHPUZVtoh0QQ+8uSX6/bXTB2AYkXCjvYIWAJfdyi2T+zFrWGZ021uby7hn+TbqfK23IpKIiIgc2MicJGYPy4o2sC+t9/Ps2nw1zhWRDqWmpqbZzefztcp5q6urMQyD5ORkAD7//HMCgQDTpk2LHpObm8vw4cP5+OOPAfjkk0/weDzRoAVg/PjxeDye6DGHS2GLSBezbmclHzRN2embEc9ZY3rEbCwWi8El43L5ycRe0SUp8wrruP31rymsUeNcERGRttYnxc0Fo3JJaqpmaQyEWZxXxOrdVerjIiLNWC1WrNZ2vFkiC2v06tUr2h/F4/Fw1113fe/X4vV6+dWvfsUll1wSrZopKirC4XCQkpLS7NisrCyKioqix2RmZrY4X2ZmZvSYw6UaQpEu5oG39vVquWbqgGjIEUunHJtGVqKTv67YTq0vRGGNj9++9jU3ndKX4TmJsR6eiIhIl5bmdnDR6Fze3FLKzspGTOCTnZUU1niZNiiDOJs11kMUkW5s9+7dzaYROZ0tV1Q9EoFAgIsvvphwOMwDDzzwncebphmdCQA0+/5gxxwOVbaIdCE7Sut4dU0+AOmJTi4Y3zvGI9pncFYCfzhzIL2S4wCo94e46+1tvLW5LMYjExER6fpcdiuzh2ZxYu/k6LYdlY08+0UBJXWtU7IvInI0kpKSmt2+T9gSCAS48MIL2b59O2+99VazECc7Oxu/309lZWWzx5SUlJCVlRU9pri4uMV5S0tLo8ccLoUtIl3I39/ayt6Vneef2h+Xo2N9UpWZ6GTBjAGM6RH5Ty9swqOr9vD4p3sIteGS1CIiIhL5tPbE3inMGZZFnC3yNqDGF+T5LwvJK6rRtCIR6dT2Bi1ff/01b7/9Nmlpac32jxs3DrvdzltvvRXdVlhYSF5eHhMnTgRgwoQJVFdX8+mnn0aPWbVqFdXV1dFjDpemEYl0EaU1Xp77ZCcA8U4bl57cL8YjOjC3w8ovTu3HM2sKeHVjpLfMG1+VUVjt44ZT+hDv0H9LIiIibalPipsfju7Ba5tLKK71ETJN3tlaTmGNj8n907Bb9XmsiHQ8dXV1bN26NXp/+/btrF27ltTUVHJzczn//PNZs2YNS5cuJRQKRXuspKam4nA48Hg8zJ8/n1tuuYW0tDRSU1P5xS9+wYgRI5g6dSoAQ4YMYcaMGfz4xz9m0aJFAFx99dXMnDnziFYiAlW2iHQZD771Nb5gGIC5J/UlOd4R4xEdnMViMPe4Hlw9YV/j3HWFtdz++tcU1aiUWUREpK0lxtk4f0QOI3P2ldhvKqnj+S8LqWoMxHBkIiIH9tlnnzFmzBjGjBkDwM0338yYMWO4/fbb2bNnD0uWLGHPnj2MHj2anJyc6G3/VYTuvfdezj77bC688EImTZqE2+3mlVdewWrdNyPg6aefZsSIEUybNo1p06YxcuRInnzyySMer2GqXlCk0yuu9jLxt2/gDYSJs1v4+H+mk+WJi/WwDsum4jr+umI7db4QAAkOKzdN7suwbDXOFRERaQ9bSutY/nUZgaYpvQ6rwekDMuifHh/jkYlIe6ipqcHj8dDn2uexON3t9rxhXwM7H7iA6urqZr1VugpVtoh0AQvf2II3EKlqufTkYzpN0AIwpKlxbo+mMdf5Q9z11jaWbymP8chERES6h4EZCVw4OpcUlx0Af8jk1a9K+HB7hXqqiYgcJYUtIp1cYVUjT32wHQCXw8q10wbEeERHLivRye/PGMDoHpFqlpAJD6/czT9X5xPWRZ6IiEibS3M7uGhULgP2q2ZZk1/NS3mF1PuDMRyZiEjnpLBFpJNb+MaWaK+Wy085hoykzlPVsj+3w8p/nXoMZw7JiG57fVMp//vuNzT4QzEcmYiISPfgsFmYMSiDU45JpamlGgU1Pv71RQF7qhpjOzgRkU5GYYtIJ5Zf0cDTH+4AwO208tPTO19Vy/4sFoN5x/fgqvG9sDZd5K3NjzTOLa5V41wREZG2ZhgGo3I9nDcihwRHpGFkQyDES3lFfLanSstDi4gcJoUtIp3Y/1u2BX9TVcuVk/uTluiM8Yhax2kD0/j16f2jF3n51V7++7UtbCqui/HIREREuoecpDguHtODXsmRilkT+HhHJUs3leALquJUROS7KGwR6aR2l9fz7Mc7AEiIs3HN1GNjO6BWNjQ7kf85cyC5nkiAVOcL8ce3tvHu12qcKyIi0h7cditzhmVzQq/k6LbtFQ38a20BpXWqOBXpaiwWo91vXZnCFpFO6v9e30wgFCnlvWpKf1ITukZVy/6ykyKNc0fmNjXODZv845PdPPWZGueKiIi0B4thML5PCrOHZRFni7x1qPEGeW5dIRuKamM8OhGRjkthi0gntKO0jn9/sguAJJedH0/pWlUt+4t32Lh1yjHMGJwe3fbqxlL+/O52Nc4VERFpJ31T3Fw8OpesBAcQ+QBk+dYy3v66lGAoHOPRiYh0PApbRDqh+17fTKipsuPq044lOd4R4xG1LavF4LITenLliT2jqyN8kV/DgmVfq4xZRESknSTF2TlvZC4jchKj2zYW1/HcukKqGgMxHJmISMejsEWkk/mmpI4XVkaqWjwuO/On9I/xiNrP6YPSuW1qf+KbGufurvLym1e38JUa54qIiLQLm8Xg1P7pTBuYga3pE5Cyej/Pri1gW3l9jEcnItJxKGwR6WT+9tpX7G1Xcs3pA0hy2WM7oHY2PCfSODcnKdKjprapce572ypiPDIREZHuY3BmAheNyiWl6TrEHwrz6qYSPtpeQVjLQ4uIKGwR6Uy2FtXy0qe7AUiOtzP/1GNiPKLYyGlqnDs8JwGAYNjk7x/t4pnPC9Q4V0REpJ2kxTu4aFQux6bHR7d9nl/NS+uLqPcHYzgyETkahqV9VyQyunga0cVfnkjXcu+r+6parj19IAlx3auqZX8JThu/PK0/0wbta5z7yoYS/vfd7dT5dIEnIiLSHhw2C2cMyuDkfqnRvmr5NV7+9UUB+dXe2A5ORCSGFLaIdBKbC2p4+fM9AKQlOLj8lO5Z1bI/m8XgihN7csUJ+xrnrs2v4balm9lapnnjIiIi7cEwDEb38HDeiJxoX7WGQIj/rC9kzZ5qTE0rEpFuSGGLSCfx11e/Yu+1yrXTBxIfZ4vtgDqQaYMjjXMTnZELvLL6AAuWbeWNr0p1gSciItJOcpLi+OHoHvTyxAFgAh/uqODVTSU0BkKxHZyISDtT2CLSCWzcU83SNfkAZCQ5uezkfjEeUcczPCeRu2YOYmBGZN54KGzy+Kf5/N/7O3WBJyIi0k7cDitzhmdzfC9PdNs3FQ08vSafHRUNMRyZiEj7Utgi0gn89dVN0e+vmzYQl0NVLQeSFu/gt9OP5ayhGdFtK3dW8ZtXt7CrsjGGIxMREek+LIbBhD6pzBqaRZwt8najIRBiycZi3t1WRiAUjvEIRUTansIWkQ4ub3cVr68tBCDLE8fck1TVcig2i8Hc43pw8+S+uO2R/+IKa3z89rUtvLe1PMajExER6T76pbr50dge9ElxRbetL6zlX2sLKK71xXBkInIg7bkS0d5bV6awRaSD+8vSfVUt188YiKup8Zwc2vG9k7lz5iD6pkYu8Pwhk79/vJtFH+/CF9QnaiIiIu0h3mFj9tAsTu2fhq3pjVVVY4Dnvizg012VhNVbTUS6KIUtIh3YlzsreXNdEQA5KS5+OKlvbAfUyWQlOrnjjAGcNjAtum3F1gp++9oWCmu0HKWIiEh7MAyDETlJ/HBMD7ISHECkee7KXVW8sK6QqsZAbAcoItIGFLaIdGB/3q+q5YYZg4izq6rlSDmsFq4a34vrftAbZ9O88d1VXn7z6hZW7qiK7eBERES6kRSXnfNH5nJCr2T2Th4oqvXxry/yySuq0QqCItKlKGwR6aA+/6aCd/KKAeiR6uLiiX1iPKLO7QfHpPKHMwfSw+MEoDEQ5r73d/D4p3sIqlGfiIhIu7BaDMb3SeH8kTl44iIN/wNhk3e2lrN0UwkNfq0gKCJdg8IWkQ5q/14tN54xCIdN/1y/r57JcfzhzIFM6pcS3fbGV2UseGMrpXX+GI5MRESke8lJiuOHY3owPDsxum17RQNPf7GHb8q1RLSIdH569ybSAX26tYz3NpUA0DvNzYUTVNXSWuLsVq77QW/mj+8ZbdS3rayBXy/dzBd7amI8OhERke7DYbUw5dh0Zg7JwtW0gmBjIMzSTcUs/7oMvypPRdqV1Wq0+60rU9gi0gH9eelX0e9vOnMwdqv+qbYmwzCYOjCd358xgMymRn11/hB/eucbnl1TQCisOeMiIiLt5Zg0Nz8a05N+qe7otg3Ftfzri3w1tBeRTkvv4EQ6mE+2lPHR5lIA+mbEc96JvWI8oq6rX5qbO2cO5Lhenui2l/NKuPOtbVQ2aGUEERGR9uJ2WJk5JJMpx6Zhb6o8rfYGeWFdISt3VuqDEBHpdBS2iHQgpmny56Ubo/d/ftZgbKpqaVPxDhs3T+7L3ONy2VvJuLG4jtuWbmZjUW1sByciItKNGIbB8OzIEtHZiZGG9ibw6e4qXlhXQGWD+quJSOehd3EiHci7G4pZ+XU5AP2zEjj7uJ4xHlH3YBgGZw3N5LfTjyXVbQcin6b94a1tLF5fTFhLUYqIiLSbZJed80fmML73viWii+v8/GttAesKtUS0iHQOCltEOohAKMzvX8yL3r9l5hBVtbSzQZkJ3DVzECNzIisjmCb8+4tC/ved7dR6gzEenYiISPdhMQxO6J3ChaNySXZFPggJhk1WbCtnycZi6v36vSwiHZveyYl0EE9/sIOvm6atjDsmldnjesR4RN1TUpyNX552DOePyo5+mrY2v4Zfv7qZraX1MR2biIhId5OV6OSHo3MZkbNvieidlY08vSafbWX6vSzSmiwWo91vXZnCFpEOoKrez5+XboreX3D+CAyja//n05FZLAbnjcrmV1P7kxRnA6CsPsCCN7aybFOpypdFRETakd1q4dT+6cwemoXbbgXAGwzz6lclvL2lFH9QS0SLSMejsEWkA7jv9c1U1keavp1zfE/G9kuN8YgEYGRuInfNHMigjHgAQmGTJ1bnc9/7O2nwh2I8OhERke6lb6qbH43tQf+0fUtEbyyp45kv8imo1hLRItKxKGwRibFvSup4bMU2AOLsFm47e1iMRyT7S3U7+O/pxzJzWGZ026qdVfzm1S3srGiM4chERES6H5fdypmDM5k6IB170zKCNb4gL64v5OMdFVoiWkQ6DIUtIjH2x//kEQhFLgyumTqAHqnu73iEtDebxeBH43K55dR+xDsi5ctFtT5++/oW3m1aPUpERETah2EYDM1K5JIxPchJ2rdE9Gd7qnnuywIqtES0iHQACltEYuijzaUs+7IQgCxPHNdNGxjjEcmhHNfLw51nDaRfmguAQMjkH5/s5v/e30GdT6siiIiItCdPnJ3zRuQwoU8Ke/tsltZHloj+sqBaPdZEJKYUtojESChscscL66P3fzl7KPFNzVil48pMdLJgxgCmDkyLbvtkRxW3LtnMuoKaGI5MRESk+7EYBsf3SubCUbmkNC0RHQqbvPdNBYs3FFHjDcR4hCKdh8ViafdbV9a1X51IB/b8yp1s2FMNwPBeHi4Y3zvGI5LD5bBamD++Fzec1Cc6raiyMcBdb3/DY6v24NOqCCIiIu0qMyGyRPSonKTott1VXp5ak88X+dWEVeUiIu1MYYtIDNR5A9zz8sbo/QXnj+zy68x3RRP6pfCn2YMYmZMY3fbm5jJuW7qZbWUNMRyZiIhI92OzWjilfxpzhmVFPwwJhk0+2F7Bv9cWUFLni/EIRaQ7UdgiEgML3/iakprIL/wzRucwYWB6jEckRyvV7eBXU4/hihN64GhaFaGwxsftr2/hhbWFBLUqgoiISLvqk+Jm7tiejNjvw5DSej//XlvAB9vLCYRUgSoibU9hi0g721PewKK3vwbAbjX4zTnDYzwi+b4Mw2Da4AzumjmI/mmR1aTCJry4rpjfvb6F/GpvjEcoIiLSvThtFk7tn84FI3NIdUd6uZjAF/k1PLUmnx0VqkAVkbalsEWknd25eEO0p8f8U/vTLzMhxiOS1pLriWPBGQM4b1R2dFWEb8obuW3pZpZtKtV8cRERkXaWkxTHD0f3YEKfFKxG5JdzrS/Iko3FLPuqhAZ/KMYjFJGuSkufiLSjz74p5+XP9gCQmuDgxjMHx3hE0tpsFoPzR2UzpkcSD3y4k4IaH4GQyROr8/l8TzU/mdibtHhHrIcpIiLSbVgtkRWLBqTH887WMvY0VZxuKatnZ2Ujk/qlMiwrAcNQ/zzp3iyG0a59JM0u/m9OlS0i7SQcNlnw/L6lnn8xcwhJTUsUStfTP93NnTMHMX3wvn48eYV1/PKVzXy0vTKGIxMREemekl12zhmezekD0omzRd4G+UJh3tlaxovri6ho8Md4hCLSlShsEWknL3+2hy92RN5kD8pJ5Ec/6BvbAUmbc9osXH5CT26b2j86X7zeH+L+D3byf+/voM4XjPEIRUREuhfDMBiSlcjccT0ZnLFvKndBjZdnvshn1a5KNbcXkVahsEWkHTT6g9y5eEP0/u3nj8Bm1T+/7mJkbiL3zBrEpH4p0W2f7Kji1iWb+TK/JoYjExER6Z7cdivTBmVw9rBskuIinRXCJqzaVcW/vshXc3sR+d70bk+kHSx6eysFlY0ATBmWxeShWTEekbS3BKeNn53UhxtO6kO8wwpAZWOAu5d/w6Or9uANqEGfiIhIe+ud4uJHY3owrqeHvd0jKhsDvLi+kOVfl+EN6veziBwdhS0ibayoqpGFb24BIg3abj9PSz13ZxP6pfCn2YMYmZsY3fbW5jJuW7qFraX1MRyZiIhI92S3WpjUN5WLR+eSleCMbt9QXMtTn+ezpbQOUysKisgRUtgi0sb+tGQjDb7IpyLzTurHgJykGI9IYi3V7eBXpx3DFSf0xGGNfI5WVOvjd8u+5vm1hZorLiIiEgMZCU4uGJXDKcekYm/6/dwQCLFscymvbCymxhuI8QhF2pbFYrT7rStT2CLShtbvquK5lbsASHLZuWWmlnqWCMMwmDY4nbtnDaJ/uhuIzBX/z7pibn99C/lVmisuIiLS3iyGwahcD3PH9qRfqju6fUdlI0+tyeeL/GrCqnIRkcOgsEWkjZimyR0vrGfv7+ObzhxE6n6lqSIAOUlx3DFjABeMzqbpQzS2lzdy26ubWbapVBd0IiIiMZDotDFzSCZnDs6M9loLhk0+2F7Bv9cWUFLni/EIRaSjU9gi0kaWfVnIJ1+XAdA3I54rJveP8Yiko7JaDM4dmc0dZwwk1xMJ5AIhkydW53PXW9sor/fHeIQiIiLdj2EYHJsez9yxPRmRs6/XWmm9n3+vLeCD7eUEQuEYjlBEOjKFLSJtwBcI8Yf/5EXv//bc4Ths+ucmh9Y/3c1dZw1ixuD06La8ojpuXfIVH35ToeZ8IiIiMeC0WTi1fzoXjMwh1W0HwAS+yK/hqTX57KhoiO0ARaRD0rs/kTbw2HvfsKNpZZkJA9OZPionxiOSzsJhs3DZCT359dT+0Qu6hkCYhR/u4r73d1LrDcZ4hCIiIt1TTlIcPxzdgwl9UrAakbm/tb4gSzYWs+yrEhr8WiZaRPZR2CLSysprfdz32mYADAMWnD8Cw+janbal9Y3ITeSeWYOY1C8lum3VzipufeUr1ubXxHBkIiIi3ZfVYnB8r2R+NLYHPT1x0e1byup58vM95BXVqhJVOi2tRtS6FLaItLK/LN1ETWNkacCLJvRheK/k2A5IOq0Ep42fndSHG07uE23OV9UY5J7l3/DwJ7up96vKRUREJBaSXXbOGZ7N1AHpxDVNFfeFwryztYwX1xdR0aB+ayLdncIWkVb0VX4NT324AwC308qts4fGdkDSJUzom8KfZg9mZO6+5nzLvy7nFy9/xSc7KvUJmoiISAwYhsHQrETmjuvJoIz46PaCGi/PfJHPJzsr1UBXpBtT2CLSSsJhk18+8wWhcOSN78+mDyJrv/JSke8j1W3nV6cdw5Un9sTZ9AlaVWOQ/3t/J396ZzulWoJSREQkJtx2K9MHZXL2sGyS4mwAhE1YvbuKJz/fw5bSOn0wItINKWwRaSVPf7SDz76pAKBfZjzXTD02xiOSrsYwDE4flM6fZw9mbM+k6Pa1+TX84uWveCWvhGBYF3MiIiKx0DvFxY/G9GBcTw97W1HU+UMs21zKi+sL9cGISDejsEWkFRRXe7nzpQ3R+/dcMoY4uzWGI5KuLD3BwS9O7cfNk/tGVyzyh0yeWVPAb17dzNamlbBERESkfdmtFib1TeVHY3vSJ8UV3V5Q4+PZtQW8u7WMxoBWLRLpDhS2iLSC3z2/LtoU98IJvZk0KCPGI5KuzjAMju+dzP/OHsyMwens7eW+q9LL7a9/zWOr9mgJShERkRhJcdmZMyybWUOz8DRNLTKB9UW1/PPzPXxZUEO4aWqRaZqsya9m1a5KgmH1eJHY0WpErUthi8j3tDyviFc+zwcgNcHBb88dHuMRSXfidli57ISe/M+ZA6OfoJnAm5vLuOXlTazaWaV54iIiIjHSL9XNj8b2ZFLfFOzWyBtLXzDMe9+U868v8tld1UhRrY8Pt1ewalcVH2yviPGIRTqu999/n1mzZpGbm4thGCxevLjZftM0WbBgAbm5ubhcLiZPnsyGDRuaHePz+bj++utJT08nPj6e2bNns2fPnmbHVFZWMm/ePDweDx6Ph3nz5lFVVXXE41XYIvI9NPiC/PpfX0bv/+78EaQmOGM4Iumu+qe7+eNZA5l7XG6zBrp/e28H//vOdkrrtASliIhILNgsBuN6JjNvbE8GZyREt5c3BHgpr4jPdldha/qEf31hLburGmM1VJEOrb6+nlGjRnH//fcfcP+f/vQn/vrXv3L//fezevVqsrOzOf3006mtrY0ec9NNN/HSSy/x7LPP8uGHH1JXV8fMmTMJhfZVhF9yySWsXbuWZcuWsWzZMtauXcu8efOOeLyGqY88RY7a719cz6K3twLwg0EZPHvjJAyja5fDScdXWufn8U/3sGZPTXSb02bh/FHZnDEkA2sXL9kUERHpyAprvLz3TTkl+30QYhiw911ZotPGj8b0wGHT5+LSPmpqavB4PIy7/VWscfHf/YBWEvLW8/nvz6K6upqkpKTvfsB+DMPgpZde4uyzzwYiVS25ubncdNNN/PKXvwQiVSxZWVncc889XHPNNVRXV5ORkcGTTz7JRRddBEBBQQG9evXitddeY/r06WzatImhQ4eycuVKTjzxRABWrlzJhAkT+Oqrrxg0aNBhj1H/gkWO0vpdVTy0PBK0xNkt3H3JaAUt0iFkNDXQvemUviS7IvPEfcEwT39ewG9e3cLWMjXQFRERiZWcpDguGpXLacem47JH3o7t//F3rS/Ihzs0nUi6j5qammY3n+/IV+7avn07RUVFTJs2LbrN6XRyyimn8PHHHwPw+eefEwgEmh2Tm5vL8OHDo8d88skneDyeaNACMH78eDweT/SYw6WwReQoBENhbn36C/ausnvjGYPpl5lw6AeJtCPDMDixTzJ/mTOEaYP2NdDdWdnI7a99zeOfqoGuiIhIrBiGgS8YxmWzRgOX/eUV1fJVSe0BHinS9fTq1SvaH8Xj8XDXXXcd8TmKiooAyMrKarY9Kysruq+oqAiHw0FKSsohj8nMzGxx/szMzOgxh8t2REeLCACPrfiGdbuqABiUk8hPTh8Q2wGJHITbYeWKE3ty0jEpPLRyN7sqvZjAG1+V8enOai4/oQfH9/aoKktERKQdhcImn+ysJHSIjg7vfVPB4MzEdhyVdHdGO68QFG56rt27dzebRuR0Hn0PzG9f05qm+Z3Xud8+5kDHH855vk2VLSJHKL+igT+9sjF6/54fjdGcWunwjs2I549nDeJH4/Y10K1sDHDvezv487vbKVMDXRERkah169Yxf/58+vfvj8vlwuVyMWDAAK655ho+++yzZseWlJRw+eWXk56ejtvtZsKECSxfvvyA5/X5fCxcuJApp07m1zPH8vPJA7ntrLH8v+t/yEcvP4O3oS56rMtm4Z///CcXX3wxgwYNwmKx0Ldv3zZ81Udm48aNLFiwgB07dsR6KNLJJSUlNbsdTdiSnZ0N0KL6pKSkJFrtkp2djd/vp7Ky8pDHFBcXtzh/aWlpi6qZ76J3iCJHwDRNfvPslzT4ItMv5p3Uj+P7p8V4VCKHx2YxmDksk/+dPYjRPfZ9erBmTw2/WPIVr20sIRRWz3QREeneFi1axLhx41i1ahU33ngjS5cu5dVXX+Wmm25iw4YNHH/88Wzbtg2IhCennXYay5cv57777uPll18mKyuLGTNm8N577zU7b2lpKRMnTuTmm29m0KBBPPrwQ6x49x2eevxRpv/geJb94098/vjdXDAyhzMHZzB3bA+efPJJNmzYwAknnED//v1j8cdxUBs3buSOO+5Q2CIdQr9+/cjOzuatt96KbvP7/bz33ntMnDgRgHHjxmG325sdU1hYSF5eXvSYCRMmUF1dzaeffho9ZtWqVVRXV0ePOVyaRiRyBF77ooC31kfS0swkJ7edPTTGIxI5chkJTm6d0o9Pd1Xz+Kd7qGoM4guGefKzAj74ppKrxveif7o71sMUERFpdx999BHXXnstZ511Fi+88AIOhyO6b8qUKVx33XU8//zzuFwuAB555BHy8vL4+OOPmTBhAgCnnnoqo0aN4tZbb2XVqlXRx8+dO5f169fz9ttvc/LJJzd73nPOOYc7Fizg9ddfJycpLrr9jTfewGKJfD4+c+ZM8vLy2uy1t7WGhgbcbl1fyNGrq6tj69at0fvbt29n7dq1pKam0rt3b2666SbuvPNOBgwYwIABA7jzzjtxu91ccsklAHg8HubPn88tt9xCWloaqamp/OIXv2DEiBFMnToVgCFDhjBjxgx+/OMfs2jRIgCuvvpqZs6ceUQrEYEqW0QOW01jgN8+ty56//cXjsLjdhziESId1/4NdE/fr4HujopGfvv6Fp74dA+NATXQFRGR7uXOO+/EarWyaNGiZkHL/i644AJyc3MBeOmllxg0aFA0aAGw2WzMnTuXTz/9lPz8fABWr17Nm2++ydVXX90iaNkrLS2NuXPnNtu2N2hpDX6/nz/84Q8MHjwYp9NJRkYGV1xxBaWlpc2O69u3LzNnzmTZsmWMHTsWl8vF4MGDefTRR6PHPP7441xwwQVAJFwyDAPDMHj88ccBmDx5MsOHD+f9999n4sSJuN1urrzySubPn09qaioNDQ0txjdlyhSGDRvWaq9Xup7PPvuMMWPGMGbMGABuvvlmxowZw+233w7Arbfeyk033cS1117LcccdR35+Pm+++SaJift6H917772cffbZXHjhhUyaNAm3280rr7yC1WqNHvP0008zYsQIpk2bxrRp0xg5ciRPPvnkEY/XMM1DdGUSkahf/2stT7y/HYDThmfxxLUT1FRUuoyvS+t5uKmB7l6pbntTA93k2A1MRESknYRCIRITExk9evRhL/Gak5PDSSedxHPPPdds+6uvvsrMmTN54403mDZtGnfeeSe/+c1vovePxt7KlqOZthMOhznrrLP44IMPuPXWW5k4cSI7d+7kd7/7HR6Ph88++yxardO3b19CoRBJSUn86le/Iisri4cffpjnn3+e9957j5NPPpnS0lIefvhhfv3rX7Nw4ULGjh0LQP/+/cnIyGDy5MmsX7+e+Ph4br31VoYPH47FYiE5OZlRo0bx0EMPcdVVV0XHt3HjRoYNG8bChQu59tprj+rPR45eTU0NHo+H4xa8hi0uvt2eN+it57MFZ1JdXd2sQW5XoWlEIofhs2/K+ecHkaDF5bBy58WjFbRIlzKgqYHu6xtLeeHLQvwhk4qGAH9dsYPjeiVx+Qk9SYtXJZeIiHQdYdMkFG66mSaFhUU0NjaS3aMXxbW+fftNE38gSDAcJhQ2CZtgGhbCJpSVlxN0xLNqVyUGRCpFDSgO2AFYvWUX6UOrWPNVZOpDfVwqawuq2XcVaRIOhQEwjEjlqc1qxTAMLAb0SXHjslv5vp577jmWLVvGiy++yLnnnhvdPmrUKI4//ngef/xxfvrTn0a3l5WV8dFHH9G7d28ATj75ZJYvX84zzzzDySefTEZGBgMGRFbjHDp0KOPHj2/xnBUVFTz//PNMmTKl2fZTTjmFhQsXNgtb7r//fpKSkrj00ku/92uVo2dp59WI2vO5YkFhi8h3CITC/PLpteytAfuvWUPomab5ptL12CwGs4ZncmIfD4+u2sOXBbUAfLa7hrzCr7hwTA7TB6V3+V+MIiLS/oLhMN5AGF8wjDcYwh+KBBvBpnBj/1Ck2dem78NhDrqv2TH7bft2eX9NRWQ6ze6qRl7KK2y274+XncmerzdF75/7s9s4/ZKrMU0oawjwRX51s+O/KYmsKvRNRSOf7q6ipGnVvy8Lqim271sJZe17b7Lotmui950uN39bviF63xNXzcWje3zvD/mWLl1KcnIys2bNIhgMRrePHj2a7OxsVqxY0SxsGT16dDRoAYiLi2PgwIHs3LnzsJ8zJSWlRdACcOONN3Luuefy0UcfMWnSJGpqanjyySe54oorSEhIOMpXKNLxKGwR+Q6L3v6arwpqABjRK5n5p3asTvAirS0z0ckvTzuGlTur+OfqfKoag3iDYf65Op8PtlVw6fE9GJyliyEREWkpbJr4g2G8TaGJLxgJUaLf793etM0bjAQswQ6wGl6CJxW7M46KovwW+65ccB9+byPV5SU8eOuPo9vjPcnUV1e2OL6+piqyP8kDQGpWpMdLRVE+2X32XUsOHDueXz3yMgCvPnofW9asbLXXs7/i4mKqqqoO2oemrKys2f20tJarbTqdThobGw/7OXNycg64fc6cOfTt25eFCxcyadIkHn/8cerr67nuuusO+9winYHCFpFD2FFax72vfgWAxYA//Wg0Nqv6SkvXZxgGE/qmMDI3kWfXFLJ8SzkmsL2ikTve2MoJvT1cMi6XrERnrIcqIiJtwDQjVSWRMCTUFJjsH6A0D0+8wTC+QBhf05SYjsJmMbAYBlYLWA0Dq8XY97Xpe0t0G4ydcBKff7SCbEs9WVk50eMsvU/AajEo2rOTB4EBafFMG5jBMyNGULhnGzOHZoFJtFpmx7I9AMydNonM7Exyzp/Ny3//X6ryPmLavPMwoalqOh1z7DGYJmx+899s+8Lg1P7pmJhYDINeya5Wmbqenp5OWloay5YtO+D+/RuItpaDjdtisXDdddfx61//mr/85S888MADnHbaaUe80otIR6ewReQgTNPktn99iTcQuWi48tT+jOyTEuNRibSveIeN+eN7cVL/VB7Zr4Hup7uqWbOnhhmD0zl7ZBbxDv06ERHpyPzBMPX+YFM4sn+Asq+6ZF/FSeT7ti42sRgQZ7PitFmIs1mIs+/73mmzYLVYsBq0CEgsLUKTlkGKpannyZEGFe4//I6TT17OY3f+mhdeeAG73d5sf5IvEkqkJzg5Ji2eH154Ptdeey35X63jxBNPBCAYDLL0xec48cQTOWFopIql72k/YNq0afz7ycf58WVzOemkk1o8d1KcHcOAQZmtXz06c+ZMnn32WUKhUHSc35fTGfnA5UiqXfa66qqrWLBgAT/60Y/YvHkz99xzT6uMSaQj0dWxyEG8tHoP728qASA3xcWts4bGeEQisTMwI567zhrEim0VPPdFIdXeIMGwydKNpazYVsEFo7I5bWA6VvVzERFpd6Zp0hgIUesLUecPUusLUufb/2ukB0pbclj3BiYWnDZrNDCJs1mJs+8NUKzNQhW7xehwCw5MmjSJhQsXcv311zN27Fiuvvpqhg0bhsViobCwkBdffBEgunLKlVdeycKFC7ngggu4++67yczM5IEHHmDz5s28/fbbzc791FNPMX36dKZOnco5511EfNZAcrKzcDugvGgnb731dosVWTZu3MjGjRsBKCoqoqGhgRdeeAGINKYdOvTwrk8vvvhinn76ac4880xuvPFGTjjhBOx2O3v27OHdd99lzpw5nHPOOUf0ZzV8+HAA/vGPf5CYmEhcXBz9+vU74BSkb0tOTubSSy/lwQcfpE+fPsyaNeuInlukM1DYInIAFXU+fvf8uuj9P148ivg4/XOR7s1iMZgyII0JfZNZklfCqxtLCIRM6nwhHvs0nzc3l/GjcT0Y3SOxw108i4h0ZqGwSX00RAntC1H8ka91viChVqpCsRrGAcKRgwUokdDEabNg6UL/7//kJz9hwoQJ3Hfffdx7770UFBRgGAY9e/Zk4sSJLF++PNr41el0snz5cm699Vauv/56GhoaGD16NK+//jqnnHJKs/NmZGTwySef8I9//INfLvgLjdXPQTgAFgeGOx1rcn9cuWPImvLfXP/Dk/nvH0/jueee44477mh2ngsuuACA3/3udyxYsOCwXpPVamXJkiXcd999PPnkk9x1113YbDZ69uzJKaecwogRI474z6lfv3787W9/47777mPy5MmEQiEee+wxLr/88sN6/EUXXcSDDz7IT3/6UywWTdPvCKxWC9Z2bJlgdvH2DIZpmrHvRiXSwdz8z8/59ye7ADhzTC4PXd065ZYiXUlZnZ9nvyjko+3NGwOOyElk7nG59E5xxWhkIiKdSyAUptb37YqUUDRMqfeHjvrcFiMyJTTRaSPBYW02VSfObm0eqtgs6k3XTiZfdT+r1h98ZZ84p53K9+9sxxG1v1tuuYUHH3yQ3bt3H1Y1jLSdmpoaPB4PE/74Bra4+HZ73qC3nk9+M53q6uoWVV1dgT6qF/mWj7eURoOWxDgb/3PhyBiPSKRjSk9w8LOT+jBjcDpPflbAltJ6ANYX1vKrpZs59dg0LhidTbLL/h1nEhHpukwz0mS2ZZgSmd5T5wt+r6aydotBgrMpTHHaSHRa99132HA7rF2q6qQrKK+u58Jpo6mu9fLVjuIDHjPl+GPbeVTtZ+XKlWzZsoUHHniAa665RkGLdFkKW0T24w2E+OXTa6P3f3X2MLKT9em8yKEcmxHPghnHsmpnNc+sKaC0zo9pwjtfl/Px9krmjMjizCEZOGz6tFREup6waTZN5dlXifLtCpXQ9ygkd9ktJDj2D1P2C1UcNpw2i6ZudgINXj+vfrCRf7/xBW9+splA8ODVShdOG81jd/zwsM8dDAYPud9isXSoaToTJkzA7XYzc+ZM/vCHP8R6OCJtRmGLyH7uX7aFb0rqABjbL4VLT+oX4xGJdA6GYTC+bzJjeyWxbFMpi9cX09i0osW/vyhk+ZYyLh6by8S+yXpTICKdUiAUptoboLIhQGVj5FbVGKDaGzjqVXsMIN5pJXG/MGVvoLJ32o+m9XRewWCIFZ9t5dk3vuDlFXnUNfhaHNM3J4XC8lp8/khgcs6UkTy64IeHHY7s2LGDfv0Ofb16JL1d2oO6WEh3obBFpMnXhTXc/8ZmAGwWgz/9aAwWrawickQcVguzh2dxSv9UXviyiOVfl2OaUFYf4P4PdrJsUynzju/BwIz2mw8sInIkfMEwVY3+SKCyX7BS6zt09cCB2CzGvhDFYW1WnZLo1BSfrsg0TT7ftIdnl63hhbfWUlxR1+KYnIwkLjx9NBdOG8Pc3zwZDVpOHz+Qx+744RE1KM3NzWX16tXfeYyItD+FLSJEuvz/19NfEGhq5f+T0wcwpIcnxqMS6bw8Ljvzx/di2uB0nvm8gLX5tQBsLWvgd69/zYS+yfxwbA4ZCc4Yj1REuqvGQKgpTPFHA5XKhgANgcNvRmsxINllxxNnj07tSXTsq1CJ0xSfbmPb7jKefWMN/35jLV/vKm2xPyk+jnOmjODiGWM5acwxWK0WvL4A1bVeACaO6sez91yG03F4b88++Oxr/vzYW1x53iTmTDmuVV+LdF8Wi9GuHzZ39Q+2FbaIAA++tYXV2yoA6JMez01nDo7xiES6hl7JLn55Wn++zK/hqc8L2FMVuaj8ZEcVn+2q5owhGcwZkYXbYY3xSEWkKzJNk3p/qClM8UcrVaoaA3iDh9+U1m4xSHbZSXHbSXHZSXE5SHbZSYqzqTKlG9tZUMHL7+Xx/Ftr+WzD7hb7HXYrMyYN4eLpYzhj0hDinM0bxsc57bz595+ydvMezp0yClfc4TWUD4fDXPHfT5BfXMXuogrmTBnVKq9HRFqXwhbp9vJ2V/HnVzYBkU+o/nbZWFx64yfSqkb1SGJ4TiIrtpbz3NoiarxBAmGTJRtKWLGtggtGZ3PqsWlYu/gnHCLSNsKmSa03uK9CpSlYqfIGolWrh8NpszSFKXuDFQcpLjvxDqsqVATTNNn4TTFLVqzn5RV5fLmloMUxhmFw0phjuHjGGM4+dQQpSe5DnnNY/2yG9c8+onF8/MU35BdXAdCvZ/oRPVZE2o/CFunWvIEQ1z/2WfRC7NppAznhWP3SEmkLVovBaQPTmdA3hZfzinl9YymBsEmNN8gjK/fwxldlzB2Xy6geSbEeqoh0YIFQmPIGP2V1fsrq/ZQ1+Kls8HMEmQpuu3W/KpWmUMVt17QfaSEcDvPphl0sWZHHkhUb2Lan7IDHjRyQw0XTx3LhtNH0zEpu0zE9/8bn0e8vmDGuTZ9LRI6ewhbp1u5+eQNbCiO9JIb19HDLzCExHpFI1+d2WPnh2FymDkzjX2sK+WRHFQB7qrzcvfwbRuUm8qPjcumlZddFur3GQCgSqNT7Ka/3U1bvo8p7+I1qk5y2yPSf/aYAJbscOLUUvRyCPxDk/c+3seS9PF55fyNFZTUHPG7skJ7MmTyc2acMZ3C/rHYZWzAY4j9vfQGAK87OzFNGAhAIhvmqsB7ThP5ZLuKdepsnEmv6Vyjd1gdflfDQ8m1ApGz4/11xHA5dfIm0m4wEJzec3JcZQ+p5cnU+W8saAPiyoJZ1r2zmtAFpnD8qG4/r8Oawi0jnZZomdf69wYqvKVjxU+f/7ma1BpGm3Cn739yRprV2LZssh6m+0c9bKzezZEUer324keo6b4tjrFYLPxjdj9mThzPrlOH0auMKlgNZsXoLZVWRFY7OOGk4Ce5Io/k9lb7oEuR7KnwMytHbPJFY079C6ZaqG/z8/J9rovdvO3sYg3I1dUEkFgZmxPP7MwbwyY4q/rWmgLL6AKYJb28p56PtlZw9IosZQzJw6E2TSJcQNk2qvYFoxcreqpXDaVhrMSDN7SA9ft8t1e1QqCJHpaK6gdc+3MjLK/J4e9VmvAdY3tvpsDH1xIHMPmU4Z540lPTk+BiMdJ/nln0W/f6C6ZEpRMFwpGfRXt5AmAZ/SM3n5YhpNaLWpbBFuqX//vc6CisbAZg0KIP5p/aP8YhEujfDMJjYL4Xjenl4fVMpL+cV0xgI0xgI8681hby9pZwfjsnhxL7JWvlDpJOp8wUprvNRUuujuM5HWb2fYPi7G6w4rMZ+wYqT9PjICkBqpC3fx57iKl55fwNLVuTxwRffEAq1DPmS4uM44wdDmH3KcKZNGBStHok1nz/Ay+98CUBifBwzfjAMgPJaP+a3/kkVVfk4JvPQzXlFpG0pbJFu5+XP9vCfTyPL8yW57Nx76dgun6qKdBYOm4U5I7I45dhUXlhbxDtbyzFNKK3z838f7KRPXjHnjcrmuF4eNbEU6YACoTCldf5IuFLno7jWR0Pgu6cCueyWaKCSHu8g3e34/+zdd3hb9dXA8e/VHra8d5zYcZzp7EUGJCFhJmWX3bLa0gKFUKAtpdCwQqEt8DJaCmWWBgpl75CQBJJA9t7L8d7b2tJ9/5At25lOYlu2fD7P48caV9LPQ9LVuWdgM+nkeS46xO6DZXy0dCsfL9t6xBHNAEmxEfxoWg4XTM9h2tgsDPru9zFp4Yod1DWVN10wYwQmox6fX6W83n3YtvVOHw1OLxGm7vdzCNFbyLNP9CrFNQ7+8NbG4Pn5V44kLVai/kJ0N9FmPT+blM7Zg+N5c20RW5oaWR+sdvLk0lz6xZi5bGQyY9Nt8mFMiBBRVZUah6dNYKXK7uF4OSuRRl2bMqB4qwGrQXZJRcdRVZX1OwuaJghtZWdu2RG3y0yL5YKmAMvEnH5ou3k52pFKiCobPBwhOQeAklo3WUYZWy5EqMg7m+g1/H6V37yxnhq7B4ALxqZx0fg+IV6VEOJY+saYuXdWfzYX1fPuxhL2VQaa6B6sdvC3pQfIjDVz6chkxvSRoIsQnc3h8QWDKqUNLsobXLiPM29Zr1VIjDCSFGEMfI80YtZLHwnR8bxeHys2HuCjZVv5ZNk2CkprjrjdiOwULmiaIJQzIKXHvHc0Olx8/u1WAOKirZw5cTAAlQ2HZ7VoNeDzQ6PLh8vrxyTPOSFCQoItotd4/dv9fLsjcGQjOcrE/KtG9Zg3WCF6M0VRGJlmY0RqJBsK63hvUwn7KwM9lw5UOfjrkgP0jwsEXUanSdBFiI7gV1UqG92UNAVWyupd1B2heWhrChBr0QeDKokRRmLMenlOik7jcHpYvHp3cIJQZa39sG0URWHSiAwumD6MC6blkJkWF4KVnrrPlm3B7gwEVi6eOQp9UwAl0MdMxWrU0ugKlOzZTDqq7V40CtLnTIgQkmCL6BX2ltTzyPtbg+efum4sMVZDCFckhDhRiqIwpk8Uo9NsrC8IBF0OVAWCLvsrHfzlmwNkxVm4dGQyo9Ii5QOeECfA51cpa3BRXOekuM5JSYMLz3GyVix6bTCokhhhIDHCKFOBRKerbXDwxYqdfLx0Kwu/30mj4/DMDr1Oy5njs7lgeg6zTx9KUlxkCFbasd79qmWK5o/PHRs83T/RjMPtR1XVYLDFqNcwOMWKRgG9Tp6Tov20itKlTcjVMN9Xk2CLCHsen59fv7oWpydQ0Hrj9P6cMSQxxKsSQpwsRVEYmx7FmD421jUFXXKbgi77Ku088c1+BsQHgi4jUyXoIsSReHx+SupbgitlDS6OFVvRKgoJEYZAOVBkoCzIapBeEKJrlFTW8emybXy8bCtL1+7D4z286bLVbOCcyYO5YFoO504ZTFSEOQQr7Rw19XYWrtgOQHK8jSmjBwSv02s16M0a6hwtmWcqgYCLECK0JNgiwt7Tn+9kc14NAAOSI/jDxcNCuyAhRIdQFIVx6VGM7WNjbX4t720q4WB1YErD3go7jy/eT3aChctGJjM8RYIuondzenzB4EpRnZOKRvcxG9la9FpSbEZSIk0kRRqJtRhk5LLoMn6/n427ili8ajefr9jOqi15qIfONgbio63MPn0oF0zP4czx2ZiM+hCstvN9/M0m3J5AMOXSs8d0+0a+QogACbaIsLZufxXPfLELAJ1G4Znrx2GWiQdChBVFURjfN5qx6VGszavlf5tKyK8JBF32lNt5bNF+BiZYuWxkMjkpERJ0Eb1Co9tLcV1L5kqVw3PM7W1GHSk2UzDAImOXRVfLL63hm1W7WbRqN0vW7Dli/xWA9ORoLpiWw4XTc5g0IgOdLvybv763cEPw9OXnjjv+DY43EkwI0SXkU6cIW41OL7e/thZ/0xvOnbMHM7JfTGgXJYToNBpFYUK/aMb1jWJNU9CloCnosru8kfmL9jEoMRB0GZYsQRcRXhpcXgpqHcEAy/Ga2caY9W2CKxFG2SUUXavB7uK79ftZtGo3i1fvZtdRxjMDDMlMCk4QGj04rVe9ftc1OFiyOnDgsE9yDONz+h1xu97zGxGi55B3VhG2Hnp/C7nljQCMyYzhtnMGhnhFQoiuoFEUJvaLZnzfKFYdrOG9TaUU1gaCLrvKGnn0630MTrLy45HJDE3u+U0TRe/k8fkpqnOSX+OgoNZJzTEyVxQg3moIBleSI00yfll0OZ/Pz8bdhSxuyl75YfPBI/ZeAYiKMDFt3ABmTRzIzAnZ9O8T38Wr7T4WrtwR/D3NmTb86IGmVhdLYosQ3YMEW0RYWrSlhDe/ywXAbNDyzPXj0El9qxC9ikZRmJQRw8S+0fxwsIb3NpdQVOsCYGdpIw8v3MfQpAguHZnM0OSIEK9WiGPzqyoVjW4Kahzk1zoorXcFMzcPpVEgKcLYFFwxkRRhxCATSUQI5JVU883qPSxatZulxygN0mo1jB+WHgiuTBzIuCHpvaI8qD0+Xbo5ePpH00eEcCWiN9BoFDRd2J+rKx8rFCTYIsJOZb2Lu99sGY8377LhZCbKBykheiuNRmFyZgyn9Yvm+9wa3t9cQlFdIOiyvbSB7Qv3MjQ5gh+PTGZwkrxWiO6j3uWloMZBQW0ge8Xl9R9xOwVIjDTSJ8pEWpSZxAgDOo0EV0TXa7C7+Hb9vkBp0Krd7D5YftRts/rEM3NiNjMnDmTa2Kywmh7UUTweH18t3wZAVISZ08dmh3hFQogTIcEWEVZUVeW3/9lAedMHqZk5SVwzNSO0ixJCdAsajcKU/jFMyohmRW41728qpaS+KehS0sCDJXvJSY7gslHJDJIArQgBt89PUa0zEFypcVDjPHrfFZtRR59oM+nRJlJtZoySuSJCwOfzs2FXS2nQqi3HLg2a3lwaNHEgmWlxXbzanmf5+r3U1DsAOGfqUPRS/idEjyLBFhFW3vkhjy83FQMQG2Hgr9eO6VVN1IQQx6fRKJzeP5bJGTGsPFDN+5tLKKl3A7C1pIGtX+5leEokl41KZmCCNcSrFeHMr6qUN7iDwZXShqOXBhm0CmlRZtKjzfSJMmEzheeIW9H95ZVUs3jVbhav3sOS1Xuoqjt6adDEnH7MnBDIXhk7pI+UBp2gT1qVEM05TglR68nYYV6ZIUSPIcEWETbyKhp54J2WN6UnrhlNYpQphCsSQnRnWo3C6VmxTM6MYfmBaj7YXEJpU9BlS3E9W4rrGZEayY9HJjNAgi6igzSXBuXXOiisceLyHb00KCnSSJ8oM32iTSRGGNHIwQMRArUNDpZvOMDi1ccvDRqQHh8MrpwhpUGnRFXVYL8WvU7LOVOGHnN7f6toi7xUCNE9SLBFhAWfX2Xu6+toaEq5vmJSX84blRriVQkhegKtRmFaVixTMmNYvr+KDzaXUtYQCLpsLqpnc1E9o9IiuXSEBF3EiWtdGpRf46D2WKVBJh3pUWb6RJtJtZmkNEiERFlVAys27mf5hgOs2LifzXuKUdUjp1xFR5qZMT47GGDJSI3t4tWGr827C8kvqQZg2vhsbMcJXLX+EykyCFqIbkGCLSIs/HPRHlbtrQQgPc7Cgz+Wbu1CiBOj0yhMHxDH1P6xfLevig+2lFLeFHTZWFjPxsJ6BidaOX9oAmP7RIV9B31xck6sNEhDnygTfaQ0SITQweJqVjYFV5Zv3H/MzBWdVsPE4c2lQYMYO6QPWpn22Ck+PYESIjgk2CJvT+IkaTSBg1BdxR/mLx8SbBE93raCWp74eDsQeHP5v+vGEmmWHVYhxMnRaRRmZMdxev8Ylu2r5sMtJVQ0egDYWdbIzrJGkiMNnDckgTOyYjFJw8Jez+PzU1Dj4ECVnYPVjuOWBjX3XUmQ0iDRxVRVZffBcpZv2M+KjYHgSn5JzVG3VxSFEdkpTB6VyZnjszljTBa2CCnR7gqfLGkJtsyeNvy427cuI5LXFSG6Bwm2iB7N6fFx+6tr8fgCbzC3nJXNxOz4EK9KCBEOdFoNMwfGMS0rhm/3V/PZ9jKKagPTi0rq3by6upB3NpYwa2AcZw9OINYiQd7exOnxcbDGwYFKOwW1DrxHSV+JMuma+q6YSbOZMEhpkOhCPp+fLXuLWb5hP8s37GflpgOUVzcedXu9TsuYIX2YOro/U0dlctqIDKIjpe9KVztYVMWmXQUAjBmSTp+kmOPeRjJbhOh+JNgierRH39/KzqI6AIb2ieKuOUNCvCIhRLjRaTWcmR3H9AGxbCqs5/PtZWwtaQCg0e3jo61lfLq9nMkZ0cwemki/WPlgEq4aXF5yq+0cqLJTVOvkSOEVvVYJ9l2R0iDR1ZwuD+t3FrBi4wFWbDjA95tzqWt0HnV7s1HPxOH9mDo6k6mj+jM+py8Wk6ELVyyO5LNlJ1ZCBKAiDXKF6G4k2CJ6rI/XFfDK0v0AGHUanr1+HEZJ5xdCdBKNojC6j43RfWzkVtn5fHs5K3Nr8PlVfH6V7/ZX893+anKSIzh/aCIj0yIllTsM1Dg8HKiyc6CqMdg4+VBmvYaMGAuZsRbSosxdWu8uei9VVdmXX8GabXms2prHmm15bNlTjMfrO+ptoiJMTB6ZyZSm4MrowWkY9PJxoLv5dOmW4OkfzWhfsMXfZvSzvAYJ0R3Iq6vokfaW1HP3vzcEzz90+QgGp9lCuCIhRG+SEWvhlqn9uHJMKgt3lrNodyWN7sAHnK0lDWwtaSAtysh5QxI5vX+MlI70IKqqUtHobgqw2Kl2eI64XaRRR2ZsIMCSFCm9V0Tnq66zs3Z7Pmu25rF6ax5rt+dRWWs/5m0SYyKYMro/U0dnMmVUJjlZKdLQtpurqbfz3fo9AGSkxTFsQPuma0oZkRDdjwRbRI9jd3n5xYuraHQFxmdeOjGda6ZmhHZRQoheKdai58oxqVw0PIlv91XzxY4ySuoD2Q+FtS7+9UM+72ws5qyBcZw1KJ4oad7dLflVleI6Jweq7ORW2WlwHzkzINaiDwZY4iwGFPlEIzqJ1+tj674SVm89yJptgeDKsaYENRuckcj4YX05bUQGU0dnkt03Qf5Pe5gvl2/D6w002Z4zfUS7/36tx3PLX1ycLI2idOnBg3A/UCHBFtGjqKrK79/ayK7iegAGpUTy56tGyY6EECKkTHotZw+OZ9bAONYX1PHZ9jJ2lgWaUNY5vby3uZSPt5YxtX8M5w9NpE+0TPMINa/fT0GNs2mCkB2n98gThJIijcEAS5T0XxGdpKC0htVNpUBrtuWxfkcBDteRs6qaxUdbGT+sL+OHpTMhpx9jh6ZLM9sw0KaEaPrxpxA1kzIiIbofCbaIHmXBilzeW5UPgNWo48VfTMRilH9jIUT3oNEojOsbxbi+UeyrsPPZ9jJWHazBr4LHr7JkbxVL9lYxKi2S84ckkpMSIcHiLuTy+smrCZQH5VUfeYKQRoE0m4nMOCsZMWYsBnmPER1HVVWKK+rYtKuIjbsK2Li7iLXb8ikqrz3m7fQ6LSMHpTJhWD/G5/RlwrB0MtPi5PUjzLjcHhau2A5AbJSFyaOy2n1bKSMSovuRPQjRY2zJq+H+/7Z0Z//LtaMZkBwZwhUJIcTRZcVbuP2MDCoa3Hy5s5xv9lTi8ASyJzYW1rOxsJ6+MSbOH5rI5Ixo9NJHoVPY3b7gBKHCWgdHmtCs0yj0jTaTEWuhX4wZo06arYtT5/f7OVBYxYZdhWzaVcim3YVs2lVEWXXDcW+bkRrLhJy+TZkrfRk5MBWTUTKrwt23a/dQ3zQ96typOehO4LWodRmRZLYI0T1IsEX0CDWNbn7x4ipcTWneN07vz4Xj+oR4VUIIcXzxEQauHZfGJSOSWbq3ki92lFPRGCgPyKt28sKKPN5eX8Q5gxOYNTCOCMnWO2V1Tk+wwW1JveuI2xh1LROE+kSZ0EmwS5wCj9fHjv2lbNpdyMZdRWzaXcjm3UXU24/8/9eazWpi3LD0YGBl/LC+JMZGdMGqRXfTuoRozgmUEAG0LoSUWIsQ3YPs0YluT1VV7nxjHXmVgY77ozNiuP/SE3sDEkKIULMYtJw/NJFzBiewJq+Wz7aXsbci8LpW4/Dy3w3FfLillDOyYjlvSAIpNmOIV9xzqKpKlb1lRHOl/ci9LqwGbbD/SorNJEd/xUlpdLjZsreITU1BlU27iti6rxi35+gjl5vFR1sZOTCVkYPSGDkwjdGD08jqE4dGI8G+3k5VVT5dFgi2GA06zpo89ARv33JaXtqE6B4k2CK6vRe+3sPCzSUARFv1/PPnE2SMqhCix9JqFE7LiOa0jGh2lzXy2fYy1uTVohLoKfL1rgoW7apgbLqN84cmMjjRKn0ZjkBVVUrqXeQ2ZbDUNU2oO1S0uWWCUIJVJgiJ9nN7vOzLr2Rnbik7D5Sy40AZW/YUsTuvHP+R6tEOkZ4czciBaYwalNr0PY20xCj5HxRHtH57HkVlNQDMmDCICMuJBdyljEh0BK1GQavpuv8ffxc+VihIsEV0az/sqeCxjwKNwhQFnrthPGmxlhCvSgghOsbARCsDEzMprXfx5Y5yluytwuX1owJr8+tYm19H/zgz5w9NZGK/aHRhvlNyPD6/SmGtIzCiudoe7IFzqASrgcy4QIAlxmzo4lWKnsbudLP7YDk7DpSyK7cs+H1ffgVe35H/x1pTFIWB/RICGSvNwZVBacRFWbtg9SJcnEoJEbSdRtS73ymE6D4k2CK6rbJaJ7/612p8Te8et587iBnDkkK8KiGE6HhJkUaum9CHS0cm882eSr7aWUFVUynM/koHz313kLfWFXHWoHimD4glytx7GmX6VZXiOid7yhvZX9WI23d4RoECpNpMZMZayIi1SN8bcUQ19Q525pay60BZm8BKXklNm6yAYzHotQzrn9xUBhQIqgwfkHLCWQhCHOrTZS1DIM4/48SDLa3/hyWxRYjuQfZGRLfk9fm59ZU1lNUFGstNGZTAXXOGhHhVQgjRuSKMOi7ISeL8oYn8kFvNZ9vLya1yAFBp9/D2hmLe3VTChL5RzBoYz5Ck8CwxUlWVSrubPeWN7K1spNF9eC8MraKQHm0iM9ZKvxgzJr1MEBKB/52yqoZgIGVnbhk7m76XVNS1+35MRh0D+yYwKCOJIZmJTd+TyEqPw6CX3WfRsXILK9i6pwiA8cMzSEmIOuH7aI61KBCW7wtC9ETybiG6pb9+uoOVuysASI4y8fcbx3dp/aAQQoSSTqMwtX8sUzJj2FHawGfby1lfEPig6POrfJ9bw/e5NaRGGZk1MJ7T+8ccls2xvqCWKruHaVmx3WasdGWjG4tBi/kogZE6p4c9FY3srWik2nF4k1u9RqFfrIX+sRbSo83d5ucSXU9VVfJLa4KBlJ0HStl5oIyduaVU1znafT+RFiODMhMZkpEU+J6ZxOCMRPqlxKKV/y/RRT5pVUL0o2knNwSiueBN4ixCdB8SbBHdzqItJTz75W4g0KTpHz8bT7xM5RBC9EKKojA0OZKhyZGU1rv4ZnclS/dVUecMNIMtqnXxxppC3lpfxOSMGGYNjCMr3kJZg5u/fnMAFdhUWMfcaZkhDVirqsoPB6vZVFyHUavh2rF9goESh8fHvspG9lQ0UnqEMc0aBdKjzWTHR9AvRgIsvYnb46WgtIb8khrySqrJK6lmf0ElO3PL2JVbRqPD3e77io+2MrgpkNL6e2qCTbIARMh9smRT8PSc6SNO6j6ay4jk/1mI7kOCLaJbya9s5I7X1gbP/+HiYUwYEB/CFQkhRPeQFGnkqrGpXDYqmTV5tSzaXcGO0kYAPD6VZfuqWLavin4xZqYNiMGk1+Dw+FmbX8erqwq46bQ+IdsJX19Yy6biQGaO1+/H5fVzsNrOnopG8mscHGmwS3Kkkex4K/3jrEfNhBE9W32jk7ySGvKKq4PBlNaBlZKK+nb3UmmWlhh1WEBlcGYS8dHSrFZ0T5U1DazYsA+ArPQEBvdPPqn7CZYRSaxFnAKZRtSxJNgiug2Xx8cvX1pDTVNTyHNHpnDzzAEhXpUQQnQveq2GyZkxTM6MobDGyaI9FXy3rzrY1+RgtYM31jjQaxQUQAUW76kk2qLnspEntxN/KjYX17EmvyZ4Pt5q4L8bC/EcIcISY9aTHW9lQLwVm6n3NAEOR829Uw4NouQHAys11NS3v9ynNUVRyEyLZUhmEoMyEoPfB/VLxBZh6uCfRIjO9dXy7cFR4nOmDz/poHjzS2qYf3YVokeRYIvoNh56bysbD1YDkJFg5cmfjpFUSCGEOIa0aBPXje/DlaNT+SG3mkW7K9lbYQc4LJjx3qYSIo1azhmc0GXr21laz8rcqjaXlTa0Lf2wGrQMiLOSnWAlzmKQ1/0ewuP1UVhWS35TMCWQnVITDKzkl1bjdHlP+v6TYiNIT4mhb3LgKz05mr7JMfRLiWFAegJmCcaJMLFw5fbg6TnTTq6ECFqVEcngZyG6DQm2iG7hwzX5vLZsPwBGnYZ//nwCURZDiFclhBA9g1GnYdqAOKYNiGNVbjWf7Shnf4WdQ6ckv7a6EI0CZw06uYBLRkYG06dP57XXXgMgNzeXzMxMXn31Va6//vo2224qquX7pgD6ofQa6B9nZWBCBCk2ExoJsHQ7jQ53m/KevOJq8ktbSn6KK+qCR+NPlE6roU9SdJsgSt+UGPo2ne6TFI3JKMEUEf5UVWXZmkCfwgiLkYkjMk/hvgLf5eVUiO5Dgi0i5PYU13HPfzYEzz965Uhy0qNDtyAhhOihKhvd/N93BzlWm4tFuytPOtjywQcfYLPZ2rXthsLao17n8UOj20dalPmk1iFOjs/np7reQVVtI5W1dqpq7cHTBaUtWSl5xdVU1dlP+nGsZkMwI6VvSjTph2SnpMTbZNKPEMCO/SXBkeRTxwxAf5L9qVRVpfllX8qIhOg+JNgiQqrR6eXnL67G7gr0Grh8Ul+unNwvxKsSQoieSVVBoyj4Dom2KIBOq2DQarhydCrFxcVYrdZ2B06ajR49+rjbVFVV4ff7yYqzsK204ajbFdc58fj8Ml3oJKiqSqPD3RQwaaSq1t7mdFVdcyDFTmVdY/D0yfZIOVRCjDUYQOmbEkN6UnRTZkrgK8ZmlnIwIdph6epdwdPTJww86ftp/Yovzz0hug8JtoiQUVWV37+1kT0l9QAMSbMx/8qR8iYhhBAnKT7CwBM/GkRulYNIo44os44ok45Io47a2href/997rn+TpYsWcK6desYNWoU8+bN48EHH2Tr1q088sgjfP7555hMJmbPns1TTz1FVFRU8P4PLSM6ks2bN3PWWWcxa9YsrrzySs6dcwGK0UKjy0uD20eD24vT4ydDxjgDgd4nwcBIbWMwUFLZFDiprrO3yUJpDqa4Pb5OWY9WqyEtMSoQQAmW9wRKfNKbslMsJinzFaIjLFm9O3h6+oRBJ30/rePrshstToVGo6DpwvSornysUJBgiwiZf3+Xy/ur8wGIMOn4588nYDbIv6QQQpyK1CgTqVGBiSx2u51PPn6fBQsW8OWXX6LVajn//PP573//y9ChQ9vc7tJLL+WKK67gpptuYsuWLdx7770AvPLKKyf0+Keddhqvv/46b7/9Nr/4xS/QaH7JnDlzuOqqq5g9ezZG44ll03Q3Pp8fl8eLy+1t+u7D3XTe6Q58bz4fKNlpKdWpbp1x0hQ4qbe7OnW9iqIQHWki1mYlNspCrM0S+B5lIS7KQmxU4PKUeBt9U2JIjbeh08mobSE6m9fr47u1ewCIj45geHbqSd9X6/5J0gNLhDOv18u8efP4z3/+Q0lJCSkpKVx//fX88Y9/RKMJHMBRVZUHH3yQF198kerqaiZOnMjzzz/PsGHDgvfjcrm4++67eeutt3A4HMycOZO///3v9OnTp0PXK59sRUhsOljNn97dHDz/t5+MISspMoQrEkKI8ODxeFi4cCELFizgo48+wuPxcPbZZ/PKK69w4YUXEhERccTb3XTTTdxzzz0AzJo1i7179/LKK6/w8ssvn1DGodFoZMSEGQwcdTq/ua+WpYu/YuHnn3DFFVdgNluYefZ5nP+ji5g85Qx0Oh2aphHVgaNpGhRA0SgoioJGUVAUmrZRUFHbBDeagx5ujy943unyHvV6p9tz9Ns33dbl8eJudZ3L4wued7q9+Hz+DvgrnRyzUX9YkKRt8MQaPB243EpMpFn6owjRDW3YmU9tQ6C074zx2cEPiifD2yrYogvzTAHRuz3++OO88MILvP766wwbNoy1a9dyww03EBUVxR133AHAE088wZNPPslrr73GwIEDeeSRRzjrrLPYtWsXkZGBz5tz587lk08+4e233yYuLo677rqLOXPmsG7dOrTajjvgIMEW0eWqG9384sXVuL2BHdafnZnFnDFpIV6VEEL0fJs3b2bGjBnU1tYyc+ZMnnnmGS655BKio6OPe9sLLrigzfkRI0bgdDopKysjKSmp3Wu4/oEFvLNw4yGXjkc7fBiO6t18tHAFH773X9BZMAy9Go3p+GsLNxqNcniQpNX55kBJXPP5putl3LEQ4WPpqpZ+LTNOoYQIwNcq2CKxVdET1dXVtTlvNBoxGo2Hbff9999z4YUXMnv2bCBQ3vzWW2+xdu1aIJDV8vTTT3PfffdxySWXAPD666+TlJTEggULuPnmm6mtreXll1/m3//+N7NmzQLgzTffJD09nUWLFnHOOed02M8lwRbRpfx+lbmvr6OgKjDlYGz/WO67OCfEqxJCiPCg1+uJioqiqqqK2tpaamtraWhoaFewJS4urs355p0ch+PEmqpu319yxMtVnxu8LvC5AVB0RhSl+30qUBQFo0GLUa/DqNdhMAS+Gw1aTAY9hubrDDoMTd+Nem3gu0HfclqvwxZhapOF0nzaZjWe0lFsIUTPt3RNS7+WUw22tMls0Upmi+h50tPT25z/05/+xLx58w7bburUqbzwwgvs3r2bgQMHsmnTJpYvX87TTz8NwIEDBygpKeHss88O3sZoNDJt2jRWrlzJzTffzLp164JZv81SU1PJyclh5cqVEmwRPdczX+5i0ZbAjnhshIF/3DQeg052OIUQoiMMGTKE/fv38/3337NgwQL+/Oc/c9dddzFlyhSuuOIKLrvsMpKTkzt1Df9+5Fre/Hwddqeb2qpy9mxawa5NKygr2IvVFsuA0ZPJGj6Z+NQs/KofVQ0E4lXUwHcV/KqKqgbON59Wmz5MGI0tAY2WYEcgGGLQ6zAZ9MFgSUugJBAQMRn1Tbc5csDEZNSj02qkUbsQolM5XR5WbtwPQJ/kGPqnx5/S/bXNbJHXL9Hz5Ofnt5mQeKSsFoDf/e531NbWMnjwYLRaLT6fj0cffZSrrroKgJKSwOfMQzNyk5KSOHjwYHAbg8FATEzMYds0376jSLBFdJlP1xfyl092AIFO6c/dMI60WEuIVyWEEOFn0qRJTJo0iaeffprFixezYMEC7rvvPu644w6mTZvGFVdcwU9/+lPMZnOHP3ZavIUk/z7++8F/WblyJTExMVx66aVcddWLTJs2TTI6hBC93qrNB3C6PADMmDDwlAO8Xp/0bBEdQ6tRujRg5296LJvN1ibYcjT//e9/efPNN1mwYAHDhg1j48aNzJ07l9TUVK677rrgdoc+p1RVPe7zrD3bnCjZ4xFdYtPBau54bV3w/O8uGMq0oe3vASCEEOLEabVazj77bF577TVKS0t55513iImJYe7cuezatev4d3AS1q1bx+9//3vS09P58MMPKSkp4cUXX2TGjBkSaBFCCGDJ6o7r1wKS2SJ6j3vuuYff//73XHnllQwfPpyf/OQn3HnnnTz22GMAwezdQzNUWvefS05Oxu12U11dfdRtOors9YhOV1zj4MZ//IDT4wPgsonp3HbOwBCvSggheheTycSll17Ke++9R2lpKdnZ2Z3yOGPGjKGsrIy33nqLCy64AL1emroKIURrS1o1x502/tT3iWUakegt7Hb7YQdutFotfn9g8EpmZibJycl8/fXXwevdbjfLli1j8uTJAIwdOxa9Xt9mm+LiYrZu3RrcpqNIGZHoVHaXlxv+/gMltU4AxmfF8sQ1o6UeXgghQqh1qu68efOO2ITu+uuv5/rrr29zWW5ubpvzGRkZqKra5rL2pAELIURvVdfgYN32PAAGZyaTmhh9yvfZJrNFGuSKMPajH/2IRx99lL59+zJs2DA2bNjAk08+yY033ggEyofmzp3L/Pnzyc7OJjs7m/nz52OxWLj66qsBiIqK4qabbuKuu+4iLi6O2NhY7r77boYPHx6cTtRRJNgiOo3fr3LHa+vYkl8DQHqchZdvPg2jvuNmlwshhBBCCNFTLF+/F58vcBR+2oSOyfRu3bNFyohEOHv22We5//77ueWWWygrKyM1NZWbb76ZBx54ILjNb3/7WxwOB7fccgvV1dVMnDiRhQsXEhkZGdzmqaeeQqfTcfnll+NwOJg5cyavvfYaWm3Hfk5V1EMPSQnRQf780Tae/TIw1i7CpOPje6YxKFWOeAohhBBCiN7pnr++x3P/WQLA23/7OReeOfKU73NnUSMurx+NAsPTI49/AyEOUVdXR1RUFBf/41v05ogue1yPo4EPfnUGtbW1YZkZK5ktolP8b1VeMNCiUeAfN42XQIsQQgghhOjVljY1x9VoFM4Y1zG9s5p7tki/FnGqNIqCpgvbPXTlY4WCNMgVHW7NvkrueXND8PyfLhvOmTnJIVyREEIIIYQQoVVWVc/WPUUAjBqcTozNcsr3qapqsGeL9GsRonuRYIvoUPmVjdz0wg+4vYFa1GtPz+CmGVkhXpUQQgghhBChtWzN7uDpjhj5DNCqN670axGim5Fgi+gw9Q4P1z3/PZUNbgCmDkrgkStGyuQhIYQQQgjR6zWXEAFM74TmuFJGJET3IsEW0SF8fpVbXlnDruJ6APonRvDPn09Ar5V/MSGEEEIIIZasDmS2GPQ6Jo/qmMzvNmOfJdgiRLcin4RFh3jovS18s7UUgGiLntdvnUS01RDiVQkhhDgZqw5W8/aGQsrqnaFeihBChIWDRZUcKKgAYOKIDCzmjtlP9vols0WI7kqmEYlT9uZ3B/jXN/uAwIv8i7+YSP/ErhsZJoQQouPsKmtgbUEtAAt3V3Dt2D4hXpEQQvR8S1d3fL8WOCSzRRrkilOk1ShdmiHlD/MAoWS2iFOyfGc59729KXh+/lUjmTIoIYQrEkIIcbKq7W6W7qsMnq93efGr6jFuIYQQoj2WtOnX0nHBFunZIkT3JcEWcdL2ldbzixdXBdMXfzFzANdMzQzxqoQQQpwMl9fP5zvK2qSk+1Uob2p6LoQQ4uSoqhqcRBRhMTJuWL8Ou2/p2SJE9yXBFnFSqhvdXPf376l1eACYNTyZP16SE+JVCSGEOBmqqrJodzk1Tu9h1xXWSt8WIYQ4FTv2l1BSUQfA1DED0Ou1HXbf0rNFiO5Lgi3ihHl8fm5+aTUHyhoBGJJm4/kbx0k0XQgheqh1BbXkVjuOeF1h7ZEvF0II0T5LVnX8yOdm0rNFiO5Lgi3ihKiqyn1vb2LFrnIA4iONvParSUSY9CFemRBCiJO1o6zhsMuaA+hFda42O/NCCCFOzNI1ndMcFySzRYjuTIIt4oT865t9/Gd5LgBGnYaXfzmRPnGW0C5KCCHEKRmZYiPGrGdggjV4WZwlEET3+lXqnJ5QLU0IIXo0n8/Pd2v3ABAfHUFOdmoH339LsEViLeJUKYqCRtN1X4oS3v+0EmwR7bZ4awkPvbcleP6vPxnDuP5xIVyREEKIjjAi1cbVY9LwtzpCOiLFhk6jEGfRE2HUhXB1QgjRc+3OLaW2IVCOOXlMFhpNx378as5s0fWCD65C9DSy9yTaZWdhHbe8vIbm/fA7zhvEJRPSQ7soIYQQHaqk3gWAXqOQnWBlYIIVFdDIDrwQQpyUNVtzg6fH52R0+P03l3lK70Qhuh8Jtojjqqhzcd3fv6ehaUrF7DGp3D1nSIhXJYQQoiPVu7w0uH0AJEUagwEW2X0XQoiTt2ZLbvD0hOEdN/IZwK+qwQOhOmmOK0S3I2VE4picHh83/fMHCqrsAIzsF83/XTcWjUTPhRAirJTUtYx4To40hnAlQggRPtZsPQiARqMwZmjHBlta92uRzBYhuh8JtoijUlWVe97cwNr9VQAkR5t45ZenYTZIQpQQQoSb4qYSIoBkmwRbhBDiVNkdbrbuLQJgaFYKEZaOfW2VSURCdG/yqVkc1TNf7ub91fkAmA1aXvvVJJKjzSFelRBCiM5QUtcq2CKZLUIIcco27MzH5/MDMG5Yx2a1QNtgi2S2iI6g1Shd+r8U7v+3ktkijujtlbk88fH24Plnrh/L8L7RoVuQEEKITuP2+alodAMQa9Fj1GlDvCIhhOj5WvdrGT88o8Pv3+1tCbYYdOH9oVWInkiCLeIwX24s4p43NwTP33vRUM4fnRbCFQkhhOhMxXVOmnfZU2ymkK5FCCHCxdptB4OnO2MSkcfrD5426ORjnRDdjTwrRRsrd5e3GfF804wsbj17YGgXJYQQolMV1LQ0x+0TJcEWIYToCM2ZLVazgaFZKR1+/25fS7BFL9OIhOh2JNgigrbm13DDP37A1RQlv2RCOvMuG46iyIu3EEKEs/xaR/C0BFuEEOLUlVbWkVccGDIxekhftNqO/9jlaVNGJB/rhOhu5FkpANhf1sDVz6ygwekFYGZOEk/+dIyMeBZCiDDn8PiobPQAkGA1YNJLvxYhhDhVnd2vBVoyWzRK+DcaFaInkmlEgpIaB1c/s4LKhkBzxPFZsfzz5xPQd0IEXgghRPfSpoQoWrJahBCiI7Tt19Lxk4hUVQ1mtkhWi+goOo3SpWPE/WEeJJRnZi9X3ejmmmdXkl9pB2BImo3XfjUJs0HicEII0RsUtCkhModwJUIIET5aZ7aM64TmuF6fGmxsLpOIhOieJNjSi9ldXq77+/fsLKoDoG+chTdvm0y01RDilQkhhOgqzZktGgVSbMYQr0YIIXo+v98fzGxJjrfRJym6wx/D7Wvp1yLZ6EJ0T/LM7KU8Pj83v7SadfsDjbsSbEYW3D6F5Gg5qimEEL1FrdNDnSvQqysl0iQ77EII0QH2HCyjriEQyB4/PKNThk24ZeyzEN2ePDN7Ib9f5c7X1/HNtlIAIk063rxtMpmJESFemRBCiK4k/VqEEKLjtWmO2wklRBA4cNrMIGOfheiWJNjSy6iqyp/e3cwHawoAMOk1vHbLJHLSo0O7MCGEEF2uTb8WCbYIIUSHWLO1c5vjArhbjX3WS2aLEN2SdEHtZZ7+YhevLN0PBEbE/eOmCZyWHR/iVQkhhOhqqqoGM1sMWoXECOnXIoQQHWHt1lwAFEVhzNC+nfIYbcuIJLNFdAyNRkHThROCuvKxQkHCoL3I68v289dPdgTP/+Xa0Zw9MiWEKxJCCBEqlXYPzqad9dQoE5pO6CkghBC9jcPpZvOeQgCG9E/GFtE5/RA9TQ1yFejSUb1CiPaTYEsv8fG6Au7776bg+fsvzeGKSZ2T1iiEEKL7y69pKSFKl5HPQgjRITbuLMDbFMjurH4tqqoGM1v0OqVTGvAKIU6dBFt6gWXbS7n91bWoTaWdt56dzS9nZYd2UUIIIUJKmuMKIUTHW9NUQgQwrpP6tfhU8Dft1xtkipwQ3ZY8O8Pc+gNV/OzFVcFUw6sm9+Pei4aFeFVCCCFCyedXKaoLBFssei0xZn2IVySEEOFhbevmuMMzOuUxPDL2WYgeQZ6dYWxPcR0/eX4ldpcPgHNHpvDnq0dJqqEQQvRypfUuvE2HRftEm+R9QQghOkhzZovZpGdYVuf0RmzdHFcvzXGF6LZkGlGYKqyyc9WzK6lp9AAwaWA8z980Hp2kGgohRK+X32rkc3q09GsRQoiOUF5VT25hJQCjh/RFp9N2yuO4fS1jn6WMSHQkrUZB24UNl7vysUJBnp1hqLLexVXPrKC4OrAzPTw9mld/eRomfee84AshhOhZ2vRriZJ+LUII0RHWbmtVQtRJ/Vrg0DKi8P6wKkRPJsGWMNPg9PCT51eyr7QBgMxEK2/eNplIqccXQghBIP28tN4FQLRZR4RRklyFEKIjrNmSGzzdWf1aANzelswWvfRsEaLbkmdnGHF5fNz4wio2HawBIDnKxFu3TyHeZgztwoQQQnQbRXVOmnfT+8jIZyGE6DCtJxF11thnALevVc8WrWS2CNFdSbAlTPj8Kre9upYVu8oBiLboWXD7FNLjrCFemRBCiO6kdQlRuox8FkKIDuH3+4OTiJLiIklPjum0x/I0ZbbotQoaaXAuRLclwZYwoKoq9761kc83FAFgNmh5/dZJDEq1hXhlQgghupvm5rgKkCr9WoQQokPkFlZSUx94fR2fk9FpU978fjU4TU6yWoTo3qRQOww8/vF2/rM8FwCdRuGlX0xkXP+40C5KCCFEt9Po9lJlD0ypS4gwYOqkSRlCCNHbbNtbHDw9fGBapz2Op/UkIunXIjqYVlHQdmG2VFc+VijIM7SHe2HRHp79cjcAigL/d/1YZgxLCvGqhBBCdEeFta2nEEm/FiGE6Cg79rcEW4ZkpXTa47hbTSKS5rhCdG/yDO3BXv5mHw+/tzV4/uHLR3DR+PQQrkgIIUR31mbks/RrEUKIDrNjf0nw9JD+yZ32OK2b4xqkjEiIbk2CLT3Ua8v288C7m4Pn7/nREG6YnhXCFQkhhOjOVFUN9mvRKpASKZPqhBCio+zYF8hs0Wo1ZPdL7LTHaT32WcqIhOje5BnaA7353QHue3tT8Pzc8wcx9/zBIVyREEKI7q7K4aHB5QMgxWZCp5VdACGE6Ag+n59duaUADOibgNGg77TH8sjYZyF6DNnT6mH+u/Igv1uwMXj+tnMGcvecIaFbkBBCiB7hQKU9eDoj1hLClQghRHjJLazE6Qo0Hx+c2XklRAAuyWwRoseQaUQ9yP9W5XHXm+uD5385awC/v3Bop42WE0IIET72twq2ZEqwRQghOsz2fS3NcYd2YnNcVVVxuQMZinqtglYjnwFEx9Jouvb/ShPm/8MSDu0hPlidz52vr0NtCmb/7Mws/nhJjgRahBBCHFe9y0t5oxuAeKsBm0mOtQghREfpqklEXp9K8+Rnk14+xgnR3cmztAf4ZF0ht7+2Fn/Ti+sN0/sz77LhEmgRQgjRLgeqWrJa+ktWixBCdKiuymxxelr6tUiwRYjuT56l3dznGwq59ZU1wUDLtadn8PDlIyTQIoQQot1a92vJjJNgixBCdKSdTWOftVoNA/omdNrjtA62GPXaTnscIUTHkGBLN7ZwUzG/+tcafE2Rlqsm9+OxK0dJoEUIIUS7Ob0+CmudANhMOuIsnTclQwghepuunEQkmS1C9CzyLO2mFm8t4RcvrcLbFGj58Wl9eeKa0WHfREgIIUTHOljloHl2RWasRQL2QgjRgQ4UVAQnEQ3p33klRABOjy94WoItQnR/0iGvG1q2vZSf/3MVnqYOWJdMSOdvPxkjgRYhhBAnTPq1CCFE59nRVEIEMKR/5419VlUVV1Nmi0wiEp1F28XTiML9/1hCot3MvtJ6bnzhB1zewIvpBWPTeOqnY8L+H1EIIUTH8/r8HKx2AGDSaUi2GUO8IiGECC8yiUgIcTTyTO1mVu+tDNZjnj86lWdvGIdOK38mIYQQJ66g1hksR82MtaCREiIhhOhQMolICHE0UkbUzcwZk8aOwjriIo3ccna2BFqEEEKctP0yhUgIITrVjqZgi0wiEkIcqt2f5LOysjCbzZjNZrKzs7n55ptZu3Ztm23ef/99rrrqKgYMGIDZbCYjI4NrrrmGPXv2HHZ/GRkZKIrC9OnTj/h4b7zxBoqioCgKS5cuPaEfqqOtXLmSefPmUVNT0+mPFWnW89DlI7jjvEHoOyDQsmPHDn7yk5/Qv39/TCYT8fHxjBkzhttuu426uroOWPHJ+/zzz5k3b15I1yCEEOHKr6rkVgeCLTqNQnqUKcQrEkKI8CKTiIQQx9LuZ+odd9zBp59+ymeffcbcuXPZtm0b48ePZ9++fcFtHn/8cex2O/fddx9ffvkljzzyCBs2bGDMmDFs27btsPuMjIzk22+/bXMfzV555RVsNttJ/lgda+XKlTz44INdEmzpSBs2bGDs2LFs376dBx54gC+//JIXXniB2bNn89VXX1FVVRXS9X3++ec8+OCDIV2DEEKEq5I6F46mnfN+MWbJlBRCiA52oKACl9sLyCQiIcTh2v1Mvf3225k5cyZnnnkmt956K8uXL+edd97BbDYHt/nkk0/46KOPuOGGG5g2bRrXXnstixYtwuVy8dRTTx12n1OnTiUtLY1XXnmlzeX79u3j22+/5YorrjiFHy10HA5HqJcAwNNPP41Go2Hp0qVcf/31TJ8+ncsuu4yHH36YPXv20K9fv1Avsd1UVe02v1chhOgJ9reaQpQpU4iEEKLDbW/dHLeTJxE5ZRKR6AJaTdd/najCwkKuvfZa4uLisFgsjBo1inXr1gWvV1WVefPmkZqaitlsZvr06YclfrhcLn79618THx+P1WrlggsuoKCg4FR/fYc5pbDoj3/8Y1JTU4PnExMTD9smNTWVPn36kJ+ff/iDazT89Kc/5fXXX8fvb0mNe+WVV0hPT2fWrFknta66ujruvvtuMjMzMRgMpKWlMXfuXBobG9tspygKt912G//+978ZMmQIFouFkSNH8umnnwa3mTdvHvfccw8AmZmZh5U2ZWRkMGfOHN5//31Gjx6NyWTiwQcfZObMmQwePBhVVds8pqqqDBgwgNmzZ5/Uz3YiKisrsdlsREREHPF65QQbJZaUlHDzzTfTp08fDAYDmZmZPPjgg3i93uA2ubm5KIrCX//6V5588kkyMzOJiIhg0qRJ/PDDD8Htrr/+ep5//vngOpq/cnNzg5fddtttvPDCCwwZMgSj0chrr71GdnY255xzzmFra2hoICoqiltvvfWEfiYhhAhHqqoGRz4rQL9Y87FvIIQQ4oTtbD32uZMnEfllEpEQVFdXM2XKFPR6PV988QXbt2/nb3/7G9HR0cFtnnjiCZ588kmee+451qxZQ3JyMmeddRb19fXBbebOncsHH3zA22+/zfLly2loaGDOnDn4fL4jPOrJ6/QGufv37+fgwYNcdNFFR7z+xhtv5LHHHuOrr77ivPPOw+fz8frrr3PTTTeh0Zz4i4ndbmfatGkUFBTwhz/8gREjRrBt2zYeeOABtmzZwqJFi9oEGT777DPWrFnDQw89REREBE888QQXX3wxu3bton///vzsZz+jqqqKZ599lvfff5+UlMAL6dChQ4P3sX79enbs2MEf//hHMjMzsVqtTJ48mQsvvJDFixe3CRp98cUX7Nu3j2eeeeaEf7YTNWnSJD777DOuueYabr75ZiZMmNAmE+lElJSUMGHCBDQaDQ888ABZWVl8//33PPLII+Tm5vLqq6+22f75559n8ODBPP300wDcf//9nH/++Rw4cICoqCjuv/9+Ghsb+d///sf3338fvF3z7xfgww8/5LvvvuOBBx4gOTmZxMREPB4Pc+fOZc+ePWRnZwe3feONN6irq5NgixBCAFV2D3XOQCA8LcqESSfNFIUQoqPJJCIhOsahvUSNRiNGo/Gw7R5//HHS09PbfPbMyMgInlZVlaeffpr77ruPSy65BIDXX3+dpKQkFixYwM0330xtbS0vv/wy//73v4Of0998803S09NZtGjREQ/sn6wTDrb4fL422RparfaoGRJer5ebbrqJiIgI7rzzziNuk5WVxRlnnMErr7zCeeedx1dffUVRURE33HDDYQ142+OZZ55h8+bNrFq1inHjxgEwc+ZM0tLSuOyyy/jyyy8577zzgts7HA4WLVpEZGQkAGPGjCE1NZV33nmH3//+9/Tp04e+ffsCMHr06DZ/zGZlZWVs376dgQMHBi/z+/3079+f5557rk2w5bnnniMrK6vNGjrL3Xffzdq1a3nrrbd466230Gq1jBgxgvPPP5877riDhIT2d0yfN28e1dXVbNu2Lfj7mDlzJmazmbvvvpt77rmnTQAqMjKSTz/9FK02sIOfmprKhAkT+OKLL7jyyivJysoiKSkJgNNOO+2Ij9nQ0MCWLVuIiYkJXta3b1/++Mc/8vzzzwcDORAI7syYMaPNGoQQordqU0IkU4iEEKJTyCQiITpGenp6m/N/+tOfjjhI5eOPP+acc87hxz/+McuWLSMtLY1bbrmFn//85wAcOHCAkpISzj777OBtjEYj06ZNY+XKldx8882sW7cOj8fTZpvU1FRycnJYuXJlhwZbTjg0OnbsWPR6ffDrb3/72xG3U1WVm266ie+++4433njjsF9gazfeeCMff/wxlZWVvPzyy8yYMeOIQY32+PTTT8nJyWHUqFF4vd7g1znnnHPEyUYzZswIBloAkpKSSExM5ODBg+1+zBEjRrQJtECgROq2227j008/JS8vDwj0ovnyyy+55ZZbjlnC4/f726y9OZ1JVdU2l7cu3zkSo9HIBx98wPbt23nqqae48sorKS8v59FHH2XIkCHs2rWr3T/jp59+yowZM0hNTW3z+M1Bo2XLlrXZfvbs2cFAS/PvCDih3+uZZ57ZJtACgSDODTfcwGuvvRYsC/vmm2/Yvn07t912W7vvWwghwtmBSunXIoQQnUkmEQnRcfLz86mtrQ1+3XvvvUfcbv/+/fzjH/8gOzubr776il/+8pfcfvvtvPHGG0CgGgMIHtRvlpSUFLyupKQEg8Fw2OfM1tt0lBN+ti5YsIA1a9bw8ccfH3UbVVX52c9+xptvvslrr73GhRdeeMz7vOyyyzCZTDz11FN88skn3HTTTSe6rKDS0lI2b97cJiCk1+uJjIxEVVUqKirabB8XF3fYfRiNxhNqxtq69KW1G2+8EbPZzAsvvAAEsi/MZjM33njjMe/voYcearP2rKwsIJACdejPVVBl55N1BSzfWXbU+xsyZAhz587lzTffJC8vjyeffJLKykruv//+dv+MpaWlfPLJJ4c9/rBhwwCO+3ttTgPriN/rr3/9a+rr6/nPf/4DBLKF+vTpc9z/MyGE6A3qXV7KG90AJFgNRBo7vWJYCCF6HZlEJETHsdlsbb6OVEIEgaSEMWPGMH/+fEaPHs3NN9/Mz3/+c/7xj3+02e7QxAZVVY/br7Q925yoE94Day7TaG5keqjmQMurr77Kyy+/zLXXXnvc+7RYLFx55ZU89thj2Gy2YH3VyYiPj8dsNh824aj19R3taH+UqKgorrvuOv71r39x99138+qrr3L11Ve3aeBzJL/4xS+YM2dO8HzzP9s5583mjQ++ZkdhXeCroJYJ934Z3G7BHVOYPjTpsPs7dK133nknDz30EFu3bm3nTxj4vY0YMYJHH330iNe3bpTcUY72ex0wYADnnXcezz//POeddx4ff/wxDz74YJtMGiGE6K1aZ7X0lxIiIYToFK0nEXVmvxaZRCS6kk5R0HVwwOFYfCf4WCkpKYe1jRgyZAjvvfceAMnJgalgJSUlbQ7cl5WVBbNdkpOTcbvdVFdXt8luKSsrY/LkySf1cxxNhx7uUlWVn//857z66qv885//5IYbbmj3bX/1q19RWlrKtGnTMJlMJ72GOXPmMH/+fOLi4sjMzDzp+2ntZLIymt1+++38/e9/57LLLqOmpqZdpS6pqamHBS92FdZy1qPL8fqa++XYwGwLXq9RwHxIDWdxcfERs0OKioqoq6tj7Nix7f455syZw+eff05WVtZhKVcnq/Xv9UQb995xxx2cffbZXHfddWi12mCdnhBC9HbSr0UIITrfjlbNcQd34thnmUQkRIspU6Yc1gpj9+7d9OvXDwhMD05OTubrr79m9OjRALjdbpYtW8bjjz8OtLRF+frrr7n88suBwOfmrVu38sQTT3ToetsdbHn22WcZNmwYGo2G4uLiYPTIZmv5wH/77bfz8ssvc+ONNzJ8+PA2o36NRmPwBz6SUaNG8eGHH57Ej9DW3Llzee+99zjjjDO48847GTFiBH6/n7y8PBYuXMhdd93FxIkTT+g+hw8fDsD//d//cd1116HX6xk0aFCbXi9HM3DgQM4991y++OILpk6dysiRI0/q51q8tbRVoKWFVqPQN97CWcNTiDTr8ftVNE0R71/84hfU1NRw6aWXkpOTg1arZefOnTz11FNoNBp+97vftfvxH3roIb7++msmT57M7bffzqBBg3A6neTm5vL555/zwgsv0KdPnxP6mZp/r48//jjnnXdesIGvwWA47m3POusshg4dypIlS7j22muPOHZcCCF6G6fHR1GtE4Aok45Yc+f1EBBCiN5sR6uxzzKJSIiuceeddzJ58mTmz5/P5ZdfzurVq3nxxRd58cUXgUBlxNy5c5k/fz7Z2dlkZ2czf/58LBYLV199NRCoPrnpppu46667iIuLIzY2lrvvvpvhw4e3GWzTEdodbHnqqacoKipCURT69OnD5MmTWbx4MWeeeWZwm08++QSAV1555bAynn79+h219KgjWa1WvvvuO/785z/z4osvcuDAAcxmM3379mXWrFkn1Xh3+vTp3Hvvvbz++uu89NJL+P1+lixZwvTp09t1+yuuuIIvvvjilBq43nRmFguW57K/rKHN5T6/yoGyRl5cvJcXF+8lLtLI5IHxTB2cwGXX/oxlX33ESy+9RGFhIY2NjSQkJDBp0iTeeOONo04BOpKUlBTWrl3Lww8/zF/+8hcKCgqIjIwkMzOTc88996SyXa6++mpWrFjB3//+dx566CFUVeXAgQPt/htdfvnlzJs3TxrjCiFEk9xqB81h+cxYS4fXHgshhAhoPYkou1/nHfRrG2yRknnRu40fP54PPviAe++9l4ceeojMzEyefvpprrnmmuA2v/3tb3E4HNxyyy1UV1czceJEFi5c2CZR4qmnnkKn03H55ZfjcDiYOXMmr732Woe3pVDU1nOcRae49NJL+eGHH8jNzUWvP/5RRlVVqWr04PWpxEXo0WkDUWyfX+XBdzfzr2/2Bbc16DS4vf6j3RWpMWamDk5gyqAEpgxOIDUmfFLKx40bh6IorFmzJtRLEUKIbuGLHWXBMqJLhieTYjv5slwhhBBHpqoqsZN+g9PlYWBGEps+aP/QiROVX+mkqtEDwIAkC1ajBFxEx6urqyMqKorfvLsOoyWiyx7XZW/gyR+Ppba2tk3FTLiQEQWdxOVysX79elavXs0HH3zAk08+2a5AC4DL66egygVARb2HPrFG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hNlsxpkzZ7Bq1So4ODhg1qxZNTrPmjVrEBkZiaeeegpTp05FYGAgCgsLceXKFXz33Xf4z3/+U+t7Cw0Nxddff41169YhIiICEokEPXr0qNGxr7zyCubPn4/Dhw9j0aJFNguAiIiIiKjlYNhCRESPZdGiRfj222+xevVqZGVlobS0FD4+Phg8eDDmz5+PTp061eg8nTt3RkJCAt59910sWrQIOTk5cHFxQbt27ax9W2pr1qxZOH/+PBYsWACtVgtRFFHT4XtqtRrR0dHYtm0bpkyZ8ljXJyIiImpqJILlUZ/Xa844+pmIiOg+BoMBgYGBiIyMxI4dOxr6doiIiIjqVMXo5x8T6n/089DuzXf0MytbiIiIANy+fRspKSnYtGkTbt26hb/+9a8NfUtERERE1EQxbCEiojphNpthNpur3Ucmazy/hn744Qe89tpr8PHxQVxcHMc9ExEREdFjkzT0DRARUfP0zjvvQC6XV/tIT09v6Nu0mjhxIkRRRGZmJiZPntzQt0NERERETVjj+UqRiIialTfeeAMjRoyodp+ajIcmIiIiImpqGLYQEVGd8PX1ZZhCRERE1ERIIUAq1N+IICma9zgiLiMiIiIiIiIiIrIhhi1ERERERERERDbEsIWIiIiIiIiIyIYYthARERERERER2RDDFiIiIiIiIiIiG+I0IiIiIiIiIqIWThAECPU4jag+r9UQWNlCRERERERERGRDDFuIiIiIiIiIiGyIYQsRERERERERkQ0xbCEiIiIiIiIisiGGLURERERERERENsRpREREREREREQtnCAAknocENTMhxGxsoWIiIiIiIiIyJYYthARERERERER2RDDFiIiIiIiIiIiG2LYQkRERERERERkQwxbiIiIiIiIiIhsiNOIiIiIiIiIiFo4QRAg1OOIoPq8VkNgZQsRERERERERkQ0xbCEiIiIiIiIisiGGLURERERERERENsSwhYiIiIiIiIjIhhi2EBERERERERHZEKcREREREREREbVwEsHyqM/rNWesbCEiIiIiIiIisiGGLURERERERERENsSwhYiIiIiIiIjIhhi2EBERERERERHZEMMWIiIiIiIiIiIb4jQiIiIiIiIiohZOEAQIQv2NCKrPazUEVrYQEREREREREdkQwxYiIiIiIiIiIhti2EJEREREREREZEMMW4iIiIiIiIiIbIhhCxERERERERGRDXEaEREREREREVELJxEsj/q8XnPGyhYiIiIiIiIiIhti2EJEREREREREZEMMW4iIiIiIiIiIbIhhCxERERERERGRDbFBLhEREREREVELV1xU2KyvV98YthARERERERG1UAqFAt7e3hjap1O9X9vb2xsKhaLer1sfBFEUxYa+CSIiIiIiIiJqGHq9HgaDod6vq1AooFKp6v269YFhCxERERERERGRDbFBLhERERERERGRDTFsISIiIiIiIiKyIYYtREREREREREQ2xLCFiIiIiIiIiMiGGLYQEREREREREdkQwxYiIiIiIiIiIhti2EJEREREREREZEP/D9atddfKEAbgAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "draw_graph_from_pandas(data_foxo3)" + ] + }, + { + "cell_type": "markdown", + "id": "76f230f8-a4c2-4303-9c0f-f6c624c3725c", + "metadata": {}, + "source": [ + "Here we can see that most trajectories goes back to the \\, and the cycle stops there. " + ] + }, + { + "cell_type": "markdown", + "id": "65f9859b-28f3-485e-a1c6-fde74d7efd6d", + "metadata": {}, + "source": [ + "Finally we look at the p110++ mutant. " + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "e04c2e43", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:29.082671Z", + "iopub.status.busy": "2024-06-07T17:39:29.082479Z", + "iopub.status.idle": "2024-06-07T17:39:31.047290Z", + "shell.execute_reply": "2024-06-07T17:39:31.046423Z", + "shell.execute_reply.started": "2024-06-07T17:39:29.082653Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "mut_p110_ON = sim_mutants.copy()\n", + "mut_p110_ON.mutate(\"p110_H\", \"ON\")\n", + "mutres_p110_ON = mut_p110_ON.run()\n", + "mutres_p110_ON.plot_node_trajectory()" + ] + }, + { + "cell_type": "markdown", + "id": "64a1bbf3-5d7b-4790-afc2-4a6398677e4a", + "metadata": {}, + "source": [ + "We don't see much effect on the cell cycle, but the apoptosis pathway is turned off." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "6a89a111-efb6-41de-b3a1-505d5cbe4ce8", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/sample_projects_intracellular/boolean/tutorial/scripts/Corral_analysis.ipynb b/sample_projects_intracellular/boolean/tutorial/scripts/Corral_analysis.ipynb new file mode 100644 index 000000000..642446a5d --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/scripts/Corral_analysis.ipynb @@ -0,0 +1,1516 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "2699cff0", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:22.240723Z", + "iopub.status.busy": "2024-06-07T17:38:22.239631Z", + "iopub.status.idle": "2024-06-07T17:38:24.311161Z", + "shell.execute_reply": "2024-06-07T17:38:24.310056Z", + "shell.execute_reply.started": "2024-06-07T17:38:22.240702Z" + } + }, + "outputs": [ + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "text/html": [ + "" + ], + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "import maboss\n", + "import os\n", + "import matplotlib.pyplot as plt\n", + "from tools import change_inputs, to_istates" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "e7adac19", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:24.312464Z", + "iopub.status.busy": "2024-06-07T17:38:24.311997Z", + "iopub.status.idle": "2024-06-07T17:38:24.316585Z", + "shell.execute_reply": "2024-06-07T17:38:24.315601Z", + "shell.execute_reply.started": "2024-06-07T17:38:24.312429Z" + } + }, + "outputs": [], + "source": [ + "path = \"../config/differentiation/boolean_network/\"" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "f6218a95", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:24.317642Z", + "iopub.status.busy": "2024-06-07T17:38:24.317442Z", + "iopub.status.idle": "2024-06-07T17:38:24.876052Z", + "shell.execute_reply": "2024-06-07T17:38:24.874739Z", + "shell.execute_reply.started": "2024-06-07T17:38:24.317624Z" + } + }, + "outputs": [], + "source": [ + "bnd_file = os.path.join(path,\"tcell_corral.bnd\")\n", + "cfg_file = os.path.join(path,\"tcell_corral.cfg\")\n", + "\n", + "tcell_sim = maboss.load(bnd_file, cfg_file)" + ] + }, + { + "cell_type": "markdown", + "id": "52b810db-be3e-4057-bacd-778591c79ed9", + "metadata": {}, + "source": [ + "# Wild type Tcell\n", + "This is a simulation where all the nodes are 0. The starting point of the PysiBoSS simulation.\n", + "\n", + "We choose to include all the nodes in the results as they will be used as a starting point of a following simulation. \n" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "5d7dddb6-fcdc-4a9b-8d30-483963ea4037", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:24.877594Z", + "iopub.status.busy": "2024-06-07T17:38:24.877216Z", + "iopub.status.idle": "2024-06-07T17:38:24.902500Z", + "shell.execute_reply": "2024-06-07T17:38:24.900394Z", + "shell.execute_reply.started": "2024-06-07T17:38:24.877563Z" + } + }, + "outputs": [], + "source": [ + "sim = tcell_sim.copy()\n", + "sim.network.set_output(sim.network.keys())\n", + "sim.update_parameters(sample_count=1000,max_time=100, time_tick=0.5)\n", + "maboss.set_nodes_istate(sim, sim.network.keys(), [1, 0])" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "32ce22af-7912-40c6-a085-ac5b04c0410e", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:24.904639Z", + "iopub.status.busy": "2024-06-07T17:38:24.904153Z", + "iopub.status.idle": "2024-06-07T17:38:25.397208Z", + "shell.execute_reply": "2024-06-07T17:38:25.396054Z", + "shell.execute_reply.started": "2024-06-07T17:38:24.904595Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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3r17q3Hjxg6v4+TkZN10003q37+//bbsrKu0bZPbb79d69evzzRffr+fZXdMdeY56OyYeuXrz8vLS+XKldNdd92lv//+Oz8eqiTb54FHH31UVapUkb+/vypWrKjOnTvr22+/dVhuy5Yt6t27t8LCwuTv76/KlSurU6dO+vzzz9N9Xlm6dKlatmypkJAQBQcHq27duho3bpxOnjyZq6wUHgVVp6lSUGnTKQAUJEGlmcqqAEpISFC7du307LPPZvj9P//8U6mpqXr//fe1fft2TZ06Ve+9916my3s6q9Wq++67T717987w+xs2bFDdunW1dOlSbd26Vffdd58GDhyY7sNssWLFFBsbq6NHj+rLL7/U+fPn1bFjx3RFUbt27RQbG6vY2Fh9++238vHxUadOnRyWSUpK0l133aWHHnoobx9sHsjL58+aNWsUGxurX375RY0aNVKPHj30xx9/OCyTtl5jY2O1ZcsW3XHHHerVq5d27dplz7N582Y9//zz2rx5s5YtW6bdu3erSxf3OBDk/PnzuvHGG/XOO+9k+P3s5B83bpxiY2O1c+dOPfHEE3r22Wc1Y8aMfMm9b98+1a9fX6tWrdLEiRO1ZcsWrVmzRiNGjNDnn3+uNWvWZJht69at6tq1q4YMGaKFCxdKki5evKgyZcpo9OjRuvHGGzP8fSVLltTo0aP1008/aevWrbr33nt17733OnwgXLhwoYYPH67Ro0dry5YtuvXWW9W+fXsdPHgwzx9/VFSUHn/8cQ0bNky///671q9fr1GjRik+Pl6StHHjRvvzcunSpZKkXbt22W9LK+USEhK0cOFCPfnkk4qKirLff9pysbGxeuONNxye57GxsXrzzTcluX4scGZ8upKfn59CQ0Ndcv2rrMaevJDV+0FeSUpKUps2bXT27FktW7ZMu3bt0sKFC1W7dm2dOXNGvXv3dng+NG3aVA888IDDbbfccoskW+naq1cvJSQk2HcAPfHEEw7LVqhQwf4aTfuqWLGiPc/ff/+tJ554Qrfeemu+PeY1a9aoT58+6tmzp3799Vdt2rRJEyZMsL9HLlu2zJ7t119/tf9M2m0bN26039esWbM0atQozZw5036bs69JSenW5ZUF7ZW/IzY2Vvv379e0adM0Z84cjR8/Ps/WR0JCgqpUqaKXX35ZoaGheXa/ecGZMVuSIiMjFRsbq8OHD2vhwoXatm2bevXqlW65devWKTExUXfddZdmz56d4X2l/U127dqlYcOG6bnnntOrr76aVw8px5wdg7PannF2neaF7du3q3379rr55pv1ww8/aNu2bXr77bfl6+ur1NRUvfnmmw7Pf+ny8/3K2yRp5syZGjVqlBYsWGDfkZ2d1+qV7ymxsbFauXJlurxpY9PBgwc1d+5c/fDDDxo2bFierY8ffvhBbdq00cqVK7Vp0ya1atVKnTt31pYtW/Lsd1zp/fffV+vWrRUaGqqlS5dqx44deu+993TmzBm99tprDsvu2rVLR48e1caNG/XUU09pzZo1ql27trZt22ZfZu7cuXr66ac1ZswY7dy5U1FRUVq4cKGeeeYZ+zKu3D6SpAEDBmj48OG68847tXbtWsXExOj555/XihUrtGrVKkm2Aubvv/92KKZfeuklxcXF6e23387RuoqNjVV0dLTKlCmjjh076tixY+myueL9LLucfQ46O6amjZdHjhzRihUrdOjQIYcSKS8dOHBADRo00HfffacpU6Zo27Zt+vrrr9WqVSsNHTrUvtyKFSvUpEkTxcfH66OPPtKOHTu0ePFide3aVc8995zOnDljX3b06NHq3bu3br75Zn311Vf6448/9Nprr+n333/P8GCn7PDJ1U/DfRUpLXV8VVo8yHQSAAVFx9dsYwsKlLSjytKODr1au3bt1K7d5QvUV6lSRbt27dL06dNz9OEzOjparVq10po1a/TUU09px44dqlevnmbNmqUaNWrk5CHkqbfeekuS9O+//2Z4JPPVO9eGDRumb775Rp9++qk6d+5sv91isdh3WoSFhWnEiBHq0qWLdu3apTp16tiX8/f3ty8XGhqqp556Si1atNC///6rMmVsU8e9+OKLkpTpjgGT8vL5U6pUKYWGhio0NFQTJkzQ22+/rbVr16p27dr2Za5cr6GhoRo/frxeffVVbd26VTVq1FBISIhWr17tcL9vv/22GjVqpIMHD6pSpUp58Khzrn379mrfvn2m389O/qJFi9rXxf3336/p06dr1apVevDBB/M898MPPywfHx/99ttvKlKkiP32OnXqqEePHumO1Loy2/jx47Vo0SItX75cvXv3Vnh4uH0H/pU7KK905RkRku1I+48++kjr1q3THXfcIUl6/fXXNXjwYN1///2SbEc8fvPNN5o+fbomTZqUJ487zeeff65evXpp8ODB9tsiIyPt/5/2WpVsZY0klS1bNt0RwIsXL1atWrX0zDPPKCwsTAcOHFB4eLjDDs6QkBCH5/mVXD0WODM+XSltfD916pSKFy+u2bNna/jw4frkk080cuRIHTp0SB06dNBHH32kJUuWaMyYMTpz5oz69++vN954Q97e3pJsR/kOHjxYO3fu1GeffaZixYrpmWee0aOPPmr/XVmNPc74888/9fDDD2vz5s2qWrWq3n33XYfnXlbvB3llx44d2rdvn7777jtVrlxZklS5cmU1a9bMvkxgYKD9//38/BQUFJTuOWK1WjVr1ixNmzZNFSpUUFRUlJo1a6bg4GAFBwfbl/P29nZ4jV4pJSVFd999t1588UX9+OOP+TY92RdffKHmzZvrySeftN8WERFhPwI37XUkyX7kctp7xJW+//57XbhwQePGjdPHH3+sH374QS1atHD6NSkpw3V5teLFi9uXqVixorp06aLNmzc7/4Bl25k3fvx4nThxQh07dtQHH3xgz3PzzTfr5ptvliQ9/fTT2brf/ObMmC1JPj4+9nVUvnx5PfDAAxo2bJjOnj2rYsWK2ZeLiopSv379dNttt2no0KF69tln05WkV/5NHnnkEa1YsULLly/XU089ldcPL1ucHYOz2p5xdp3mhdWrVyssLExTpkyx31a1alX7tpmfn1+6s/KufL6nOXDggDZs2KClS5dq7dq1WrJkiQYOHOj0a1VyfE/JzJVj03XXXaeBAwc6nBHpjOXLl2vUqFE6ePCgbr31Vs2cOdNe6l599tTEiRO1YsUKff7556pfv362fk9WDh8+rGHDhmnYsGGaOnWq/fbw8HC1aNEi3fiaNkaFhoYqIiJCd955p+rXr6+HHnpI69atkyT99NNPatasmfr162e/r759+9rLJsm120eLFi3S3LlztXz5ct15550Oj7FLly46e/asJNtzYsaMGbrrrrvUuXNnJScna9KkSVqxYoVKlCiRq3X13HPPadGiRfrll18cPou56v0su5x9Djo7pl45XoaFhWno0KEOZ2HlpYcfflgWi0W//vqrw+eByMhI3XfffZJsB3cNHjxYHTt2dDi4oGrVqmrUqJHuv/9+++eGX3/9VRMnTtQbb7yhxx57zL5seHi42rRpk+u/GWd4FGSR3aRaXU2nQC798PcldZ6foPKvnZPl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io4fP65ly5bZl0k7u7x+/fpq3Lix9u7dq+eff15dunSx7+h25fZRr1699Omnn6pv3756/vnn1aZNG5UpU0bbtm3T1KlT9eijj6pr16568803tW3bNm3fvl2S7XPRhx9+qI4dO6p79+5q1KhRttbVlby8vDR8+HCNHz9eDz74oIKCglz6fpaZzMbUpUuX5ug5eOWYmnYNDMlWgqXdxz///KPx48crICAgX84enjZtmm655RY1atRI48aNU926dXXp0iWtXr1a06dP186dOxUcHKwPP/zQPo3dsGHDVL16dcXHx+vrr7+WdLmUady4sUaNGqWRI0fqyJEj6tatm8qXL6+9e/fqvffeU/PmzZ3aPs4MhUdhElxG6v6BNKerZHXfCyTCeaHBto2OuHirwq44EPVYglXl/vteaLBFSSnSqQtWh7M8jp236pYKGe/MLh1kkbdF6c4AOXbemu6sjzTHE1I17vuL+uHeIvrlSIoiSnmpeilvVS8lJafapryqU45rengEi5fU4wPbmIH0xp4xnSDboqOjVb9+fYfb7rnnHs2ePTvd6expOw9mzZqlQYMGadWqVdq7d6/27t3rMP+0dHkuT0/z6quvpjvaNe3x3n///fr+++/tt6ett/379ys8PFyzZ89WQkKCJk2apEmTJtmXu+2229JdX+Bqjz32mN566y0tXrzYfirx119/bT+6rWjRoqpZs6YWL16sli1b2n/uhRde0EcffZQu09q1ax2Wyy+mnj+dOnVSeHi4fa5iyXaR2rT15e/vr8qVK2vcuHH2nYKHDx/WZ599Jsk2DdKVXLW+4uPj062vypUr68CBA/rtt98cpj96/HHbWXRp6zM3+cuUKaMBAwZo7Nix6t69e56eiVW1alX7NVOeeeYZHT58WP7+/qpVq5aeeOIJPfzww9m6vyvXz6ZNmzRv3jz7OpJsZ008/PDDOnz4sAIDA1WzZk198skn9gt+S7b5wE+cOKFx48YpNjZWtWvX1sqVK/Pl7K/WrVtr5syZmj59uk6cOKHSpUuradOm+vbbb7M8M+Off/7Rl19+qXnz5qX7nsViUffu3RUVFeXUBzpXjwXOjE/5ZeTIkdq0aZNefPFFFS1aVK+99pruuOMO+/ezGnuc8fLLL2vy5MnasmWLqlatqhUrVjjM953V+0FeqVChgsLDw/Xiiy/qwIEDslgs9n+P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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "model = sim.run()\n", + "model.plot_piechart()" + ] + }, + { + "cell_type": "markdown", + "id": "262b9bb6-a189-4a55-a62b-d29add4be910", + "metadata": {}, + "source": [ + "The result of the previous simulation shows that none of the phenotype nodes (Treg, Th17, Th1) are active, and that the cells are in a fixed point corresponding to the naive state. \n", + "\n", + "\n", + "Now we will simulate the effect of the dendritic cells binding and deliver their signal to the naive T cell." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "39b733bc", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:25.403156Z", + "iopub.status.busy": "2024-06-07T17:38:25.402622Z", + "iopub.status.idle": "2024-06-07T17:38:25.409296Z", + "shell.execute_reply": "2024-06-07T17:38:25.408372Z", + "shell.execute_reply.started": "2024-06-07T17:38:25.403110Z" + } + }, + "outputs": [], + "source": [ + "dc_signal = {node:1 for node in [\"IL1_In\", \"MHCII_b1\", \"MHCII_b2\", \"IL12_In\", \"IL6_In\", \"CD4\", \"CD80\", \"IL23_In\", \"PIP2\"]}" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "687ea560", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:25.412973Z", + "iopub.status.busy": "2024-06-07T17:38:25.411293Z", + "iopub.status.idle": "2024-06-07T17:38:25.418348Z", + "shell.execute_reply": "2024-06-07T17:38:25.417039Z", + "shell.execute_reply.started": "2024-06-07T17:38:25.412928Z" + } + }, + "outputs": [], + "source": [ + "output_maboss = [\"Treg\", \"Th17\", \"Th1\"]" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "7a39d734-ac85-4353-a1b7-f5f7c8c15863", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:25.420585Z", + "iopub.status.busy": "2024-06-07T17:38:25.420140Z", + "iopub.status.idle": "2024-06-07T17:38:25.424500Z", + "shell.execute_reply": "2024-06-07T17:38:25.423640Z", + "shell.execute_reply.started": "2024-06-07T17:38:25.420542Z" + } + }, + "outputs": [], + "source": [ + "nodes = list(sim.network.keys())" + ] + }, + { + "cell_type": "markdown", + "id": "32dc6c7d-1bc8-47a0-80c1-286eee965f46", + "metadata": {}, + "source": [ + "Now we assign the previous final state as the initial state for a new simulation and on top of that we are going to activate the input nodes that the dendritic cells will activate in the PhysiBoSS simulation." + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "158af04c-3efa-4c49-af21-5e16850b937c", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:25.426665Z", + "iopub.status.busy": "2024-06-07T17:38:25.426190Z", + "iopub.status.idle": "2024-06-07T17:38:25.537784Z", + "shell.execute_reply": "2024-06-07T17:38:25.536977Z", + "shell.execute_reply.started": "2024-06-07T17:38:25.426621Z" + } + }, + "outputs": [], + "source": [ + "new_istates = change_inputs(nodes, to_istates(model.get_states_probtraj(), nodes), dc_signal)" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "ada84f24", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:25.539534Z", + "iopub.status.busy": "2024-06-07T17:38:25.539106Z", + "iopub.status.idle": "2024-06-07T17:38:25.865948Z", + "shell.execute_reply": "2024-06-07T17:38:25.864931Z", + "shell.execute_reply.started": "2024-06-07T17:38:25.539498Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "sim_next = sim.copy()\n", + "sim_next.network.set_output(output_maboss)\n", + "sim_next.update_parameters(sample_count=1000,max_time=100, time_tick=0.5)\n", + "sim_next.network.set_istate(nodes, new_istates)\n", + "\n", + "\n", + "model_activated = sim_next.run()\n", + "model_activated.plot_piechart()" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "fe6d7ba2", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:25.867671Z", + "iopub.status.busy": "2024-06-07T17:38:25.867244Z", + "iopub.status.idle": "2024-06-07T17:38:26.073622Z", + "shell.execute_reply": "2024-06-07T17:38:26.073151Z", + "shell.execute_reply.started": "2024-06-07T17:38:25.867635Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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SP3VCByp0YSqfOx57Bv8O2usLktERETEcgqvXZTD4yb1l0fh7B1HuDbAnie+wZdfZXVZIiIiIpZSeO3C7HEuUq8+EldeAqYvxJ5531G/vtzqskREREQso/DaxdmiHKReMZyowckQDFP27Frqvi6xuiwRERERSyi8RgDDaSdlxhCij06FsEn5Sxuo/aLY6rJEREREOp3Ca4Qw7DaSLxxE7NhMMKHi9U0KsCIiItLjKLxGEMNmkHhWf+LGZ30fYL9UgBUREZGeQ+E1whiGgefMfsSOazoC+9omalfutrosERERkU6h8BqBDMMg8ef9v+9C8OpGar9SgBUREZHuT+E1QhlGYxeC5gD7ykZqV2kUAhEREeneFF4jWPMR2DEZjQH25Q3UKcCKiIhIN6bwGuEaT+I6gtjjGgNs+csbqFutACsiIiLdk8JrN2DYDBLPPoKY0emNAXbBBuq+3mN1WSIiIiLtTuG1mzBsBknnDiBm1N4Au566bxRgRUREpHtxWF2AtB/DZpB03gAA6lbupvyl9QDEHJVqZVkiIiIi7UZHXruZvQE25pg0CEP5S+up+7bU6rJERERE2oXCazdk2AySzh9IzMjvA2zDxgqryxIRERH5yRReuynDZpB0wUCij+oFIZOy59bi21ZldVkiIiIiP4nCazdm2AySLxyEe2ASZiBM6fw1+HfVWF2WiIiISJspvHZzhsNGyi+G4MpNwGwIUfrUdwT21FldloiIiEibKLz2ADaXnV6XDcOZGUu4JkDpvO8IVvqsLktERESk1RReewhbtINeVw7H0SuaUKWP0nnfEqrxW12WiIiISKsovPYg9jgXva4ajt3jJrinntKn1xBuCFpdloiIiMhhU3jtYRyJUfS6aji2WCeBnTWUPrMGMxCyuiwRERGRw6Lw2gM5U2PodcVwDLcdf76XsufXY4bCVpclIiIickgKrz2Uq3ccvS4bBg4bDevLKX95I2bYtLosERERkYNSeO3B3HkeUn4xBGwG9V/vofIfmzFNBVgRERHpuhRee7jowckkTx8EBtSuKMb7/narSxIRERE5IIVXIWZEKolnHwFA9SeFeD9UgBUREZGuSeFVAIgbk4lnWh4A3g8L8P67wOKKRERERPal8CrN4if1wTO1LwDeD7bj/aTQ2oJEREREfkThVVqIn5xNwqm5AHjf20b1pzssrkhERETk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JJmZmZx00kl8/PHHHV1am23atImsrCzy8vK46KKL2Lp16wHbRvr+8/v9/P3vf+eKK67AMIyDto2U/fdD+fn5FBcXt9hHbrebyZMnH/A9CQferwebp6uoqqrCMAwSExMP2q6mpobc3Fz69OnDGWecwapVqzqnwDb65JNPSEtLY+DAgVx99dWUlJQctH2k7sPdu3fzr3/9iyuvvPKQbbvqPvzx50JPfB9K99Ntw2tpaSmhUIj09PQW09PT0ykuLt7vPMXFxfttHwwGKS0t7bBa24NpmsyePZuJEycyfPjwA7bLzMzkiSee4LXXXuP1119n0KBBnHTSSXz66aedWO3hGTNmDM8++yzvv/8+Tz75JMXFxYwfP56ysrL9to/k/Qfw5ptvUllZyWWXXXbANpG0/35s7/uuNe/JvfO1dp6uoKGhgdtuu41LLrmEhISEA7YbPHgw8+fP56233uLFF18kKiqKCRMmsGnTpk6s9vBNnTqV559/nn//+9888MADfPHFF5x44on4fL4DzhOp+/CZZ54hPj6ec88996Dtuuo+3N/nQk97H0r35LC6gI724yNYpmke9KjW/trvb3pXc8MNN/DNN9+wePHig7YbNGgQgwYNan4+btw4CgsLuf/++zn++OM7usxWmTp1avPjI488knHjxtG/f3+eeeYZZs+evd95InX/AcybN4+pU6eSlZV1wDaRtP8OpLXvybbOY6VAIMBFF11EOBxmzpw5B207duzYFic8TZgwgWOOOYaHH36Yv/71rx1daqtNnz69+fHw4cMZPXo0ubm5/Otf/zpoyIu0fQjw1FNPcemllx6y72pX3YcH+1zoCe9D6b667ZHXXr16Ybfb9/lWWFJSss+3x70yMjL2297hcJCSktJhtf5Uv/71r3nrrbf4+OOP6dOnT6vnHzt2rOVHCA5HbGwsRx555AFrjdT9B7B9+3Y+/PBDrrrqqlbPGyn7b+9IEa15T+6dr7XzWCkQCHDhhReSn5/PwoULD3rUdX9sNhvHHntsROxTaPw1IDc396D1Rto+BPjss8/YsGFDm96TXWEfHuhzoae8D6V767bh1eVyMWrUqOazt/dauHAh48eP3+8848aN26f9Bx98wOjRo3E6nR1Wa1uZpskNN9zA66+/zr///W/y8vLatJxVq1aRmZnZztW1P5/Px7p16w5Ya6Ttvx96+umnSUtLY9q0aa2eN1L2X15eHhkZGS32kd/vZ9GiRQd8T8KB9+vB5rHK3uC6adMmPvzwwzZ9aTJNk9WrV0fEPgUoKyujsLDwoPVG0j7ca968eYwaNYoRI0a0el4r9+GhPhd6wvtQegArzhLrLC+99JLpdDrNefPmmWvXrjVvuukmMzY21ty2bZtpmqZ52223mTNmzGhuv3XrVjMmJsa8+eabzbVr15rz5s0znU6n+eqrr1q1CQf1q1/9yvR4POYnn3xiFhUVNd/q6uqa2/x4G//v//7PfOONN8yNGzea3333nXnbbbeZgPnaa69ZsQkH9dvf/tb85JNPzK1bt5rLly83zzjjDDM+Pr7b7L+9QqGQmZOTY9566637vBZp+6+6utpctWqVuWrVKhMwH3zwQXPVqlXNZ9v/4Q9/MD0ej/n666+b3377rXnxxRebmZmZptfrbV7GjBkzWowIsmTJEtNut5t/+MMfzHXr1pl/+MMfTIfDYS5fvrxLbV8gEDB//vOfm3369DFXr17d4j3p8/kOuH133323+d5775lbtmwxV61aZV5++eWmw+EwV6xY0enbZ5oH38bq6mrzt7/9rbl06VIzPz/f/Pjjj81x48aZvXv37hb7cK+qqiozJibGnDt37n6X0ZX34eF8LkT6+1CkW4dX0zTNRx991MzNzTVdLpd5zDHHtBhGatasWebkyZNbtP/kk0/MkSNHmi6Xy+zbt+8B/3h1BcB+b08//XRzmx9v4x//+Eezf//+ZlRUlJmUlGROnDjR/Ne//tX5xR+G6dOnm5mZmabT6TSzsrLMc88911yzZk3z65G+//Z6//33TcDcsGHDPq9F2v7bO5TXj2+zZs0yTbNxmJ677rrLzMjIMN1ut3n88ceb3377bYtlTJ48ubn9Xq+88oo5aNAg0+l0moMHD7YsrB9s+/Lz8w/4nvz444+bl/Hj7bvpppvMnJwc0+VymampqeaUKVPMpUuXdv7GNTnYNtbV1ZlTpkwxU1NTTafTaebk5JizZs0yCwoKWiwjUvfhXo8//rgZHR1tVlZW7ncZXXkfHs7nQqS/D0UM02w6o0VEREREpIvrtn1eRURERKT7UXgVERERkYih8CoiIiIiEUPhVUREREQihsKriIiIiEQMhVcRERERiRgKryIiIiISMRReRURERCRiKLyKiIiISMRQeBURERGRiKHwKiIiIiIRQ+FVRERERCLG/wc9WsdRq89N2QAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "model_activated.plot_trajectory(until=20)" + ] + }, + { + "cell_type": "markdown", + "id": "4ec2ad69-ca7f-4f89-a31f-d5600c9e84ff", + "metadata": {}, + "source": [ + "The input delivered by the dendritic cells, will allow the differentiation of the naive tcell into Treg, Th17 and Th1" + ] + }, + { + "cell_type": "markdown", + "id": "cb560e61-7ec0-4cc1-b063-210897173fd4", + "metadata": {}, + "source": [ + "# Analysis of the Mutants\n", + "\n", + "## Single mutants" + ] + }, + { + "cell_type": "markdown", + "id": "23070f68-12f5-4055-90df-1c82354a354b", + "metadata": {}, + "source": [ + "Now we are going to test a series of mutations in the model. To perform this kind of analysis, we are not going to test the mutations on the wild type state, but on the stable state prior to contact with the dendritic cells. Moreover, we are going to test the input delivered by the dendritic cells to those mutations results that did not trigger any differentiation. The objective of this analysis is to search for undifferentiated stable state of the network that are more vulnerable or more resistant to the dendritic cell contact." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "7ff4bc24-5174-409e-9f7f-ce8e4a86e3e9", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:26.075402Z", + "iopub.status.busy": "2024-06-07T17:38:26.075173Z", + "iopub.status.idle": "2024-06-07T17:38:26.080218Z", + "shell.execute_reply": "2024-06-07T17:38:26.079552Z", + "shell.execute_reply.started": "2024-06-07T17:38:26.075382Z" + } + }, + "outputs": [], + "source": [ + "def compute_input_on_mutations(model, res_mutations, nodes, inputs):\n", + " new_results = {}\n", + " for mutation_target in res_mutations:\n", + " mutation_result = res_mutations[mutation_target]\n", + " new_istates = change_inputs(nodes, to_istates(mutation_result.get_states_probtraj(), nodes), inputs)\n", + " s_model = model.copy()\n", + " s_model.network.set_istate(nodes, new_istates)\n", + " if isinstance(mutation_target[0], str):\n", + " s_model.mutate(*mutation_target)\n", + " else:\n", + " for mutant in mutation_target:\n", + " s_model.mutate(*mutant)\n", + " new_results.update({mutation_target: s_model.run()})\n", + " return new_results\n", + " " + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "f0fb89e9-1bca-4882-86cd-a79fdfa9ade4", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:26.082465Z", + "iopub.status.busy": "2024-06-07T17:38:26.082157Z", + "iopub.status.idle": "2024-06-07T17:38:26.102660Z", + "shell.execute_reply": "2024-06-07T17:38:26.101454Z", + "shell.execute_reply.started": "2024-06-07T17:38:26.082445Z" + } + }, + "outputs": [], + "source": [ + "sim_test_single_mut = sim.copy()" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "bd2cf398-b48b-4a70-9594-8de13d38e7d7", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:26.104236Z", + "iopub.status.busy": "2024-06-07T17:38:26.103873Z", + "iopub.status.idle": "2024-06-07T17:38:26.111360Z", + "shell.execute_reply": "2024-06-07T17:38:26.110191Z", + "shell.execute_reply.started": "2024-06-07T17:38:26.104204Z" + } + }, + "outputs": [], + "source": [ + "nodes_test = ['PI3K_b1', 'PI3K_b2', 'IL6_Aut', 'IL12R', 'IL6R', 'STAT1', 'Tbet', 'AP1', 'NFAT1', 'NFKB', 'Blimp1_b1', 'Blimp1_b2', 'RUNX1_b1', 'RUNX1_b2', 'STAT4', 'RUNX3', 'EOMES', 'IFNg', 'IL12RB1', 'IL12RB2', 'IL1RAP', 'IL1R1', 'IL1R', 'IL23R', 'STAT3', 'cMAF', 'IL21', 'RORGt', 'IRF4', 'AHR', 'NFAT2A_b1', 'NFAT2A_b2', 'STAT5B_b1', 'STAT5B_b2', 'SMAD2', 'RORA', 'STAT5A_b1', 'STAT5A_b2', 'IL17A', 'IL17F', 'LCK', 'TCR_b1', 'TCR_b2', 'CD28', 'ZAP70', 'LAT', 'VAV', 'RAS', 'SOS', 'PLCG', 'RAC', 'FOXP3', 'PTEN', 'PIP3', 'IP3', 'DAG', 'PKCO', 'ITK_b1', 'ERK1_2', 'cFOS', 'cJUN', 'MEKK1', 'TRAF6', 'TAK1', 'IKK', 'Myd88', 'IRAK1_4', 'NFAT2', 'NFAT4', 'IL2RA', 'IL2RB', 'CGC', 'IL2', 'IL2R_b1', 'IL2R_b2', 'SATB1', 'TGFBR', 'GP130', 'MINA', 'FOXP3_2', 'TGFB_In', 'CXCR4', 'ITK_b2']" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "b226d017-fb50-4a8e-98e7-8264cb95d2c6", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:26.113747Z", + "iopub.status.busy": "2024-06-07T17:38:26.112916Z", + "iopub.status.idle": "2024-06-07T17:38:42.546893Z", + "shell.execute_reply": "2024-06-07T17:38:42.545450Z", + "shell.execute_reply.started": "2024-06-07T17:38:26.113714Z" + } + }, + "outputs": [], + "source": [ + "res_single = maboss.pipelines.simulate_single_mutants(sim_test_single_mut, nodes_test)" + ] + }, + { + "cell_type": "markdown", + "id": "e9902fa6-ffcc-4a69-bed8-78264339e9fe", + "metadata": {}, + "source": [ + "In the following cell, we filter the results because we want to test the input delivered by the mDCs on an undifferentiated population of T0." + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "id": "60407916-bac7-4146-94a3-05d0184af4cb", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:42.548307Z", + "iopub.status.busy": "2024-06-07T17:38:42.548011Z", + "iopub.status.idle": "2024-06-07T17:38:42.812613Z", + "shell.execute_reply": "2024-06-07T17:38:42.811987Z", + "shell.execute_reply.started": "2024-06-07T17:38:42.548279Z" + } + }, + "outputs": [], + "source": [ + "filtered_res = maboss.pipelines.filter_sensitivity(res_single, node=\"Treg\", maximum=0.0)\n", + "filtered_res = maboss.pipelines.filter_sensitivity(filtered_res, node=\"Th1\", maximum=0.0)\n", + "filtered_res = maboss.pipelines.filter_sensitivity(filtered_res, node=\"Th17\", maximum=0.0)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "6cafbc7b-0693-4526-bd4f-4f804e5c13f2", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:42.813840Z", + "iopub.status.busy": "2024-06-07T17:38:42.813535Z", + "iopub.status.idle": "2024-06-07T17:38:42.830324Z", + "shell.execute_reply": "2024-06-07T17:38:42.829816Z", + "shell.execute_reply.started": "2024-06-07T17:38:42.813813Z" + } + }, + "outputs": [], + "source": [ + "stable_state = sim.copy()\n", + "nodes = list(stable_state.network.keys())\n", + "stable_state.network.set_output(output_maboss)" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "04266bc0-48fa-4548-9ca3-1b68f8404372", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:38:42.831165Z", + "iopub.status.busy": "2024-06-07T17:38:42.830984Z", + "iopub.status.idle": "2024-06-07T17:39:33.634150Z", + "shell.execute_reply": "2024-06-07T17:39:33.633065Z", + "shell.execute_reply.started": "2024-06-07T17:38:42.831150Z" + } + }, + "outputs": [], + "source": [ + "updated_mutations = compute_input_on_mutations(stable_state, filtered_res, nodes, dc_signal)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "58043735-4b9e-4189-8c7d-6df3e5fc65e3", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:33.636518Z", + "iopub.status.busy": "2024-06-07T17:39:33.635873Z", + "iopub.status.idle": "2024-06-07T17:39:33.736649Z", + "shell.execute_reply": "2024-06-07T17:39:33.735560Z", + "shell.execute_reply.started": "2024-06-07T17:39:33.636485Z" + } + }, + "outputs": [], + "source": [ + "filtered_mutations_Treg = maboss.pipelines.filter_sensitivity(updated_mutations, node=\"Treg\", minimum=0.8)" + ] + }, + { + "cell_type": "code", + "execution_count": 20, + "id": "f9d0b415-2ec3-423d-8e85-e4df6d17ce9b", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:33.738255Z", + "iopub.status.busy": "2024-06-07T17:39:33.737925Z", + "iopub.status.idle": "2024-06-07T17:39:34.508837Z", + "shell.execute_reply": "2024-06-07T17:39:34.508379Z", + "shell.execute_reply.started": "2024-06-07T17:39:33.738227Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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yuKc7dV6auds24ScXF25xw+oFc3Nundbueb3LJGDMwziXvr55ynjvJGmY6AD3HrrrZo5c6aeeuopud1uzZ49W3fddZceeeQRnXDCCfrss880ceJE+Xw+XXnllWpoaNDo0aM1atQoPfvss9qwYYMmTZrUIVmYCUlwXe6+SymHuWIdYltTJKL+bo/uKCw84Mef3L5df6qp0R2FhVrQs0R5KSmasGmT/JHw7mN+W1GhdxsbNaNLV/2/Hj3VZEX035u/VvgQ1yp8s75ev63YputycvVizxKd5PXquq83acvO8/5XtwT0SFWVpnfpqvu7dNWsqkqt2XnrgJBl6X+3leuuwiIKSAJI6dpFXe6+23QMdJBJkyZpzJgx6tWrl7p27ap7771XM2fO3P2+MWPG6KabbtIf//hHSdIzzzwjm82m2bNna+DAgTr//PP1P//zPx2ShRKS4BxZWSqeOUNKYdIrXn0nLU035ufrnD1mP3axLEvzarbrupxcnZOerr5ut35b1EUBK6I36uslSQ3hsF6sq9Ut+QU63efTQI9H07p00ZqWFi1p8h/0886t2a4fZmbp4qws9XG7dXtBobo4nXq+tkaStLYlqH5ut071+XSaz6d+brfWBneUkDnbqzUk1avB+6w/Iw6lpKh4xkw5MjNNJ0EHGTJkyO4/V1ZWatOmTbrmmmuUlpa2++3Xv/611q5dK0latWqVjjvuOHk8nt2PGzp0aIdk4SdTEvCeeKLyb7hBlbNmmY6CDvZ1KKSqcFin+3y73+ey2zXE69Xnzc0am5Wt0kBArdJexxSkONXX7dZnzc06w5e23/MGLUtfBgKamLP3aZine336vLlZktTP7VZZMKgtoZAsSRuCQfV1ubUhGNQrdXV6oaSkM75kRFn+z38u74knmI6BDuTbYyyIRCKSpNmzZ+uUU07Z67hdl1u3LGu/s2466o4vlJAkkXvdtWr65BP5//5301HQgarCrZKkvJS9782Q53BoS6h19zFOm02Z+9y/IdfhUFVrWAdSG25VWFLuPs+bm+JQlX/HY/q43ZqUn68JmzZJkibl56uP262rN23U5PwCfez369GqKqXYbPrVPntJEB983/62cq+daDoGOlFhYaGKi4u1bt06/ehHPzrgMQMGDNAzzzyjlpYWuXfuNfv000875PNTQpKEzWZT1/unad33v69wZZXpOOhg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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiEAAAGZCAYAAABfZuECAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1MElEQVR4nO3deXhU5eH28XtmMjPJTHayEpCAsghKXXBf4a24oLZSWaRaRUFbW6uWVktRtFZ/dUOp4lKRRasoSt2ruEHVKioWlxYpIBD2kBCyTjKZycx5/wAiISwJJPPM8v1c11yQycnknsA8c+c5zznHZlmWJQAAgAizmw4AAAASEyUEAAAYQQkBAABGUEIAAIARlBAAAGAEJQQAABhBCQEAAEZQQgAAgBGUEAAAYAQlBDhAd9xxh/r3769wONx8n81m0+zZs5s/nj17tmw2W/MtKSlJhYWFGj16tFauXLnXx37ooYdks9l0xBFH7HWbiooKTZw4Uf3795fX61VGRob69eunyy67TN98802rDAeipKRENptN//znP1t9bv78+Ro2bJhyc3PldrvVvXt3XX755fr2229bbXv77be3+Dnseps2bVrzdnvbJicnp8VjFRcXN38cDAZ16KGHaurUqQf0HAGYk2Q6ABCLNm3apHvvvVezZ8+W3b7/Lj9r1iz169dPfr9fH3/8se666y4tXLhQ//vf/5SVldVq+5kzZ0qSli5dqs8++0wnnHBCi8/X1dXpxBNPVF1dnX73u9/pBz/4gRoaGrRixQq99NJL+uqrrzRw4MCOebJ7cNNNN+m+++7TOeeco0cffVT5+flasWKFHnjgAR1zzDGaM2eOhg8f3urr5s+fr4yMjBb39ezZs8XHF198sSZMmNDiPqfTudcsTqdTkydP1o033qjLLrtMXbp0OYhnBiCiLADtdtNNN1lFRUVWKBRqcb8ka9asWc0fz5o1y5JkLV68uMV2f/zjHy1J1syZM1s99uLFiy1J1rBhwyxJ1vjx41ttM3PmTEuStWDBgj3m2zXXzgwHYs2aNZYka+HChc33zZkzx5Jk/eIXv2i1fV1dnXXsscdaHo/HWrVqVfP9t912myXJKi8v3+f3k2T98pe/3Oc2t912m9WjR48W9zU2NlrZ2dnWXXfdtf8nBSBqsDsGaKdAIKAZM2ZozJgxbZoF2ZNBgwZJkrZs2dLqczNmzJAk3X333Tr55JP1/PPPq76+vsU2FRUVkqTCwsI9Pv6B5mqLu+66S1lZWbr//vtbfc7r9erhhx9WfX29HnzwwU7LsDuXy6VRo0bpiSeekMU1OYGYQQkB2umzzz5TRUWFBg8e3OpzlmXpiiuu2O9jrFmzRpLUp0+fFvc3NDToueee03HHHacjjjhCV155pWpra/Xiiy+22O6kk06SJP3sZz/TK6+80lxK9uSKK6444Dfm4uJiWZalM888U5K0efNmLV26VEOHDpXH49nj15x00knKy8vTu+++2+pzoVBITU1NzbdQKNRqG8uyWmzT1NTUIv/tt9+ukpKSVl935plnau3atfrvf/97QM8VQORRQoB2WrRokSTpmGOOafPX7Hzzraur09tvv60777xTp59+ui688MIW282bN0/V1dW66qqrJEmjRo1Sampq8+zITqeccoruuOMOff3117rooouUk5OjXr166Re/+EWLRakdbd26dZJar+PYXc+ePZu33VVBQYGcTmfzrUePHq22efTRR1ts43Q6Wz3/Pdn57/Hxxx+35akAiAIsTAXaadOmTa2O2NifE088scXHhx9+uF599VUlJbV8Cc6YMUMpKSkaPXq0JCk1NVUjRozQrFmztHLlSvXu3bt521tvvVVXX3213nzzTX322Wf65JNP9Pjjj+vJJ5/U008/rUsuueQgnuXBsSxrj0fkvPfeey0WprpcrlbbjBw5Ur/73e9a3Lfr0TB7k5eXJ0nauHFjO9MCMIWZEKCdGhoa5HQ65XA42vw1Tz/9tBYvXqwFCxbommuu0bJly1qVhO+++04ffvihhg0bJsuyVFVVpaqqKl188cWSvj9iZlf5+fkaO3asHn/8cX3zzTf64IMP5HK5dP311x/ck9yLQw45RNL3u5P2Zu3aterevXur+3/wgx9o0KBBzbc9HcGTm5vbYptBgwa1qfAlJydL2v7vAyA2UEKAdsrJyVEgEJDP52vz1xx++OEaNGiQBg8erMcff1zjxo3T/PnzNW/evOZtZs6cKcuyNG/ePGVlZTXfhg0bJkl66qmn9riGYlenn366hg4dqvLycpWVlR3YE9yHwsJCDRgwQO+8806rxbI7LVq0SFu2bNFZZ53V4d9/X7Zt2yZJ7ZqhAmAWJQRop379+kmSVq1adcCPce+99yorK0uTJ09WOBxWKBTS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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiEAAAGZCAYAAABfZuECAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA0J0lEQVR4nO3deXiU1cH+8XtmMktmsu8QluACCGpdcKliBRQQlGppFaWtooB9q62l0rfuSNW6U9Fq+1YEkZ9WQesGKi7grlQRtRYpWiDsISF7JpnMZOb5/QFEdhJI5szy/VxXLsnwZHInOCd3zjnP89gsy7IEAAAQZXbTAQAAQHKihAAAACMoIQAAwAhKCAAAMIISAgAAjKCEAAAAIyghAADACEoIAAAwghICAACMoIQAO7ntttvUr18/RSKR1sdsNptmz57d+v7s2bNls9m0dOlSlZaWymaztemttLRU77zzjmw2m5577rldPm9jY6NGjBghp9OpOXPmtCnrjs99//33H/DY+vp6/f73v9ewYcOUn58vm82mqVOn7vXYQYMGady4cW3KsLupU6eqpKRkj8f9fr/uvvtuHX/88UpLS5PP59Nxxx2nO++8U36/f4/jS0pK9vl9bGhokPTdv8Pe3n73u9/t8lw7f62LFi1SWlqaNm7ceFBfI4COk2I6ABArNm3apHvvvVezZ8+W3d62ft6lSxd9/PHHuzx21VVXqba2Vk899dQex5aWlu7xHLW1tTr33HO1dOlSPffcczr//PMP+mvYl8rKSj366KP63ve+pwsuuECPPfZYh3+OfdmyZYvOPvtsrVq1Stdcc43uvfdeSdLixYt1xx136Omnn9Zbb72lwsLCXT7u9NNP32vB8nq9u7z/+OOPq2/fvrs81rVr133mOeuss3TyySfrxhtv1BNPPHGwXxaADkAJAbZ78MEHlZWVpdGjR7f5Y9xut0499dRdHsvIyFAwGNzj8b0pLy/X8OHDtWrVKr322msaPHhwu3O3Rc+ePVVdXS2bzaatW7dGtYRceuml+s9//qO3335bAwcObH186NChOvfcczV48GBddtllWrhw4S4fl5WV1abv4dFHH60BAwa0K9PVV1+tMWPG6I477lD37t3b9bEAOg7LMYCkYDComTNnauzYsW2eBTlUa9eu1cCBA7VhwwYtXrz4oAtIJBLRH//4R/Xo0UMe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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiEAAAGZCAYAAABfZuECAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1TElEQVR4nO3deXhU5cH+8XtmMjPJTPaNQFiCCyAoVUShiBVQkUWrpa+o1NYFsO+LGy3+3FhEpe4oVqlWZJHWWlzqhgsu4C5VRK0iRQXCFkJCyDpZJpk5vz+AyBIggWSeWb6f68olSc7M3Jk4z9x5znPOsVmWZQkAACDE7KYDAACA2EQJAQAARlBCAACAEZQQAABgBCUEAAAYQQkBAABGUEIAAIARlBAAAGAEJQQAABhBCUHMu+OOO9SzZ08Fg8HGr9lsNi1YsKDx8wULFshmsx3w47333mvcNi8vb6/veb1e9enTR48++qj2PUHxe++9J5vNpueff36vr1dXV2v48OFyOp1auHChJKmyslI33nijhg4dqqysLNlsNk2fPv2wfualS5fqyiuvVI8ePeT1epWbm6vzzz9fX3zxxX7bDho0SJdffvlhPc706dOVl5e339d9Pp/uuecenXTSSUpMTJTX69WJJ56ou+66Sz6fb7/t931O9/yoqqqSdPDf0Q033LDXfe35vL377rtKTEzUli1bDutnBHD44kwHAEwqKCjQfffdpwULFshuP3Qnnz9/vnr06LHf13v27LnX56eddpoeeOCBxsd48MEHde2116qiokK33nrrQR+jvLxcI0eO1IoVK/T888/r/PPPlySVlJToiSee0M9+9jNdcMEFevLJJ5v7Y+7nscceU0lJia6//nr17NlTxcXFmjlzpvr3768lS5ZoyJAhh33fh7Jt2zadddZZWrt2ra677jrdd999knYWoxkzZuiZZ57RO++8o3bt2u11uz2f0z15PJ69Pm/qd9ShQ4cD5jnzzDN16qmn6tZbb9VTTz11uD8WgMNACUFMe/jhh5WamqpRo0Y1a/vjjz9effv2PeR2qamp6t+/f+PnZ511ljp37qy//vWvBy0hRUVFOuecc7R27Vq98cYbGjx4cOP3unTpotLSUtlsNm3fvv2ISsjs2bOVnZ2919eGDRumY445RnfddVeblpDf/e53+u9//6tly5Zp4MCBjV8/++yzNXLkSA0ePFiXXXaZ3nzzzb1ut+9zeiDN/R3t6eqrr9ZFF12kGTNmqFOnTi26LYDDx+4YxCy/36+5c+dqzJgxzZoFORLJycnq1q2btm3bdsBtNmzYoIEDB2rz5s1aunTpXgVEUuOuhdawbwGRpMTERPXs2VObNm1qlcdoyooVK/TWW29p7NixexWQ3QYOHKgrr7xSS5YsaXLXUFs577zzlJiYqDlz5oTsMQFQQhDD/v3vf6ukpGS/N3tJsiyryXUQgUBADQ0Ne30EAoFDPlZDQ4M2bdqkbt26Nfn91atXa+DAgaqpqdEHH3zQ4r/kW0N5eblWrlypXr167fX19957b6/1MS0xffp05efnN37+9ttvS5IuuOCCA95m9/d2b7ubZVn7Pfd7ruPZranf0Z7y8/P3W0vjcrk0YMAAvfbaa83/4QAcMUoIYtann34qSerTp0+zb9O/f385nc69Ptxu937b7fmGuXHjRk2YMEElJSW6++67m7zfadOmaevWrXrrrbd03HHHHd4PdISuvvpq+Xw+TZ48uc0eY+PGjZKkrl27HnCb3d/bve1ur7/++n7P/bRp0/a7fVO/o32LSFP69Omjr776qsmFsQDaBmtCELMKCgpks9mUmZnZ7NssXLhwv5LQ1C6S3W+Ye3r88cc1cuTIJu/33HPP1Wuvvaarr75aixcv3m+xZVubOnWqnn76aT3yyCM6+eSTQ/rY+9p9BNG+z+vAgQP10EMP7fW1phacNvU7ios79FCXnZ2tYDCowsJCHX300S2NDeAwUEIQs2pqauR0OuVwOJp9m+OOO65Zu0p2v2EGAgH98MMPmjp1qq655hr16tWrybUQl112mS644AKNHz9eI0eO1OLFi+X1elv08xyu22+/XTNmzNCf/vQnXXPNNW36WJ07d5YkrV+/Xt27d29ym927b/ZdIJqSktKs5765v6N9xcfHS9r5/wWA0GB3DGJWZmam/H5/m0y/737D7Nevny699FK99dZbcjqdmjBhQpPrGCRp7Nixmjt3rj744AONGDEiJLsFbr/9dk2fPl3Tp08/5KHDreHss8+WJL300ksH3Gb393ZvGyo7duyQpBbNjAE4MpQQxKzd55JYu3Ztmz/WscceqxtvvFHffPONFi1adMDtrrjiCs2dO1cfffSRhg8f3ngirrZw5513avr06ZoyZYpuu+22NnucPfXt21dDhw7V3Llz9fHHH+/3/Y8++kjz5s3TsGHDQr5baN26dcrIyNjv/CQA2g67YxCzBg0aJElavny5evfu3azbfPvtt00ucjz66KOVlZV10NvecMMNevzxx3X77bdr9OjRB9wNdPnll8tut+uKK67Q8OHD9cYbbygxMVGS9MYbb8jn86myslKS9N133zWebXXEiBHNXksyc+ZMTZs2TcOGDdPIkSO1fPnyvb5/qPNxDBo0SO+///5+Z4BtjoULF+qss87S0KFDdd111+nMM8+UtPNkZQ8//LB69Ohx2EfjHInly5frjDPOaLXDoAE0gwXEsNNPP90aMWLEIbebP3++JemAH3PmzGnctkuXLtbIkSObvJ/Zs2dbkqynnnrKsizLWrZsmSXJeu655/bb9m9/+5vlcDisAQMGWBUVFY33faAM69evb/bPfcYZZxz05zmUk08+2crJyWn24+2rqqrKuuuuu6wTTzzR8ng8lsfjsXr37m3NmDHDqqqq2m/7gz2nu+3+HX3++ectzvPjjz9akqwXXnihxbcFcPhslnUYf8oAUeKFF17QRRddpA0bNig3N9d0nIhQWVmp9PR0zZo1S1dffbXpOK1i6tSpWrhwodauXdusI2kAtA7WhCCmjRo1SqeccsoBz9+B/X3wwQfKzc3V+PHjTUdpFWVlZZo9e7buuusuCggQYsyEIOZ9++23euWVV3TzzTe3+enb21owGDzg0Te78Ua7ty+//FLvvPOObrjhBtaDACFGCQGiyPTp03X77bcfdJv169crLy8vNIEA4CAoIUAUKSgoUEFBwUG36d27t1wuV4gSAcCBUUIAAIARkb0DHAAARCxKCAAAMIISAgAAjKCEAAAAIyghAADACEoIAAAwghICAACMoIQAAAAjKCEAAMAISggAADCCEgIAAIyghAAAACMoIQAAwAhKCAAAMIISAgAAjKCEAAAAIyghAADACEoIAAAwIs50AABHLlDlU0NRkRqKi9WwvVjByioFfb6dH9XV+/3X8vtlWUEpaEnB4M47sdslu002m102l0t2j0d2r3f//3q9siclKi4zS3FZWYrLzpYj0Wv2CQAQkSghQJizLEsNBQWqy8+XPz9f9Rs3qb5o287CUVyshuLtsqqrjWa0eTyKy8pUXFaWnNnZisvKlrNzJ7ny8uTOy1Nchw6y2WxGMwIIPzbL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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiEAAAGZCAYAAABfZuECAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA1KElEQVR4nO3deXxU1eH+8WdmMjPJTDZCNghLQDZBrVoUtVqWXwGlWpVWUFyrgK2tLULriri2FgW1dfsqCpSKCtQNV4qCOxQtalukoEDYQ0LIPklmu78/gChrEkjmzPJ5v168CMnN5MnonDw559x7bZZlWQIAAIgwu+kAAAAgMVFCAACAEZQQAABgBCUEAAAYQQkBAABGUEIAAIARlBAAAGAEJQQAABhBCQEAAEZQQoBmuvvuu9W3b1+Fw+HG99lsNs2ePbtFj/Pee+/JZrMd9M/PfvazfY4NBAJ64okndPrppysjI0MpKSk69thjdfPNN6usrOyAxw4EAnryySd1yimnKCsrSx6PR127dtX555+vl19+ufG4oqIi2Ww2vffeey3KvldhYaHuvPPOA96/evVqXXXVVerSpYtcLpeys7M1YsQIvfXWW0f8PAwaNOiQx/33v//d57GKiooaP+/yyy/XBRdccETfH4DISDIdAIgF27Zt0/3336/Zs2fLbm+d7v7HP/5RgwcP3ud97du3b3zb5/NpxIgR+uijjzR+/HjdfvvtSklJ0bJlyzRt2jQ999xzWrx4sXr37t34OZdffrleeuklTZgwQXfddZfcbrfWr1+vt99+W4sWLdKFF17YKtkP5qWXXtKYMWPUvXt33X777erdu7d27NihWbNmacSIEfr973+v+++/v8XPgyR1795dc+fOPeBzjznmmEPmufPOO9WnTx8tWbJEQ4YMOcLvCkCbsgA06cYbb7QKCgqsUCi0z/slWbNmzWrRYy1dutSSZC1YsOCwx40fP96SZL3wwgsHfGzNmjVWRkaG1a9fPysYDFqWZVnr16+3JFlTpkw56ON9N/uGDRssSdbSpUtblH2vrl27WnfccUfjv7/55hvL4/FY/fv3t2pqag44/he/+IUlyXr++ecb39fc52HgwIFWv379DnvM3sfasGHDPu8/99xzraFDhzb9DQEwguUYoAl+v1/PPPOMxowZ06xZkP/973+65JJLlJeXJ7fbrS5duuiKK65QQ0NDs79mcXGxZs6cqeHDh2v06NEHfLxXr1666aabtGrVKr3yyiuS1Lg806FDh4M+ZmvN4BzMQw89JJ/Pp0ceeURer/eAj0+fPl2ZmZn6wx/+0GYZDubyyy/XO++8o3Xr1kX06wJoHpZjgCb885//VFlZ2QFLBpJk7XcT6i+//FJnnnmmsrOzdffdd6tnz57avn27Fi5cKL/fL7fb3XhsOBxWMBjc5/OTkna/JJcuXapgMHjYPQ0XXHCBbr31Vi1evFg//elPdeyxxyozM1N33XWX7Ha7hg0bpsLCwoN+bmFh4QHZW+K7ey8kafHixcrLy9Npp5120OM9Ho+GDRum+fPnq7i4WPn5+Y0fO9zz8F37H2O32xuL1aBBgw76/ex9/5tvvqnrr7++Wd8bgMhhJgRowrJlyyRJJ598cpPHTpw4UUlJSVqxYoWuvfZaDRkyRJdeeqnmzZuntLS0fY4dPXq0nE7nPn+++eYbSdKmTZskSd26dTvk19r7sb3Her1ezZ07V8FgUNdee626deum7OxsjRo1Sq+99lrLv/EW2LRp02GzHizvXod7HvZatWrVAcdcccUVTebKzc1VQUGBPv744xZ+RwAigZkQoAnbtm2TzWZTdnb2YY/z+Xx6//33dc011ygnJ6fJx506deoBGyY7d+7c4nw2m63x7REjRmjTpk1atGiRPv74Y61YsUKvvPKKFixYoF/96ld69NFHW/z4rWXvTMV380rNex6OOeYYvfDCC/u8b//Nq4eSm5urrVu3tjQugAighABNqKurk9PplMPhOOxx5eXlCoVC6tSpU7Met3v37urfv/9BP9alSxdJ0oYNGw75+Xs/tv8P7JSUFF1wwQWNSzmbNm3SOeeco8cee0y//OUv1a9fv2bla4kuXbocNqv07RLO/nkP9zzslZyc3OQxh/vcurq6I/pcAG2L5RigCdnZ2fL7/aqtrT3scVlZWXI4HNqyZctRf83BgwcrKSmpcdPpwez92NChQw/7WF26dNH48eMl7V7WaAtDhw7Vjh07tHz58oN+3OfzafHixTruuOP22Q8SCbt27WpyFguAGZQQoAl9+vSRpCbPsEhJSdHAgQO1YMEC7dy586i+Zn5+vq6++motWrRI8+bNO+Dja9eu1dSpU9WvX7/GGY/q6mrV1NQc9PFWr14tSerYseNR5TqUG264QSkpKbr++usPWtZ+97vfqby8XJMnT26Tr38owWBQmzdvVt++fSP6dQE0D8sxQBMGDRokSVq+fLlOOOGEwx774IMP6swzz9SAAQN08803q0ePHtqxY4cWLlyoJ5988oDNqU091po1a3TZZZfpgw8+0HnnnSe3263ly5dr2rRpSktL04svvti4TLRmzRoNHz5cF198sQYOHKgOHTqovLxcb7zxhp566ikNGjRIZ5xxxiG/XlFRkbp166Yrr7yyxVeBPeaYY/S3v/1Nl156qU455RRNnDix8WJlM2fO1FtvvaXf/e53Bz3duC39+9//ls/nO+iZTQDMo4QATejcubPOOussvfrqq43LGofyve99TytWrNAdd9yhW265RdXV1crPz9eQIUPkcrla9HW9Xq8WL16sGTNmaM6cOZozZ44CgYAKCws1duxY3XjjjftszuzRo4cmTpyoJUuW6NVXX1VpaamcTqd69uype++9VxMnTjzstUL2zqIc6jojTdl7mvD999+vu+66Szt27FBaWppOPfVUvfHGGxoxYsQRPe7ReOWVV5Sdna1hw4ZF/GsDaJrNOpqLBQAJ4sUXX9To0aO1ceNGFRQUmI7TJh5//HHdeOONWrdunfLy8kzHOWqhUEg9evTQmDFjIn6RNADNw54QoBlGjhypU045Rffdd5/pKG1m6dKl+s1vfhMXBUSSnn32WdXU1Oj3v/+96SgADoHlGKAZbDabZsyYoYULFyocDrfpJdBNWbBggekIrSocDmvu3LnKzMw0HQXAIbAcAwAAjIi/X+cAAEBMoIQAAAAjKCEAAMAISggAADCCEgIAAIyghAAAACMoIQAAwAhKCAAAMIISAgAAjKCEAAAAIyghAADACEoIAAAwghICAACMoIQAAAAjKCEAAMAISggAADCCEgIAAIyghAAAACMoIQAAwAhKCAAAMCLJdAAARy9UU6tgSYmCpaUK7ixVuLpG4dra3X98vgP+tvx+WVZYCltSOLz7Qex2yW6TzWaXzeWS3eOR3es98G+vV/a0VCVl5ygpJ0dJublypHrNPgEAYhIlBIhylmUpuG2bGoqK5C8qUmDTZgVKduwuHKWlCpbulOXzGc1o83iUlJOtpJwcOXNzlZSTK2eXznIVFspdWKikjh1ls9mMZgQQfWyWZVmmQwCQrEBADV9/rfr/rZF/wwb595QO/+bNsurr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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiEAAAGZCAYAAABfZuECAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA0B0lEQVR4nO3deXhU5cH+8fvMZJbMZN8hLAEUENS6oCjVCrwqYmsXFFC0ShX0fVErytsXFUSrtkoRl9atRRH91QWXura4VNBqgaKitI0UVAh7yEL2bSYz5/cHi+wkkMwzy/dzXbmE5GTmTnCe3Hme55xj2bZtCwAAIMIcpgMAAIDERAkBAABGUEIAAIARlBAAAGAEJQQAABhBCQEAAEZQQgAAgBGUEAAAYAQlBAAAGEEJAdrpzjvv1IABAxQOh3e9z7IszZs3r12P88EHH8iyLL388su73nfHHXfIsixVVFTs93OOPfZYDR06dNffS0pKZFmWLMvSCy+8sM/x+3u88ePH7/EY7TFv3jxZlrXP+4PBoB577DGdfvrpSk9PV3Jyso455hjdfPPNqqys3Of4oUOH7sq999u///1vSd9+f/b3dtFFF+3xWOPHj9/199WrV8vtdmv58uWH9TUCiJwk0wGAWLJ582b95je/0bx58+RwRFeHnzZtmi688EK5XK6IPm9jY6POP/98ffzxx7r66qt12223KTk5WUuWLNF9992n5557Tu+995769eu3x+f17t1bzz777D6P16dPnz3+/utf/1rDhg3b433Z2dkHzNO3b19deumluvHGG/Xhhx8ewVcGoLNRQoB2eOihh5SRkaFRo0aZjrKHkSNHasGCBXr88cd1/fXXR/S5d/6wf+GFFzR27Nhd7x82bJguuuginXrqqbrwwgu1YsUKOZ3OXR9PTk7WaaeddsjHP/roo9t03O6uu+46DRo0SIsXL9aQIUPa9bkAIie6fpUDolggENCTTz6pcePGtWkW5D//+Y8uueQS5efny+PxqEePHrr88svV0tLS4dmGDx+uESNG6K677lJdXV2HP/6BlJaWau7cuRoxYsQeBWSnvn37aurUqSouLtZrr70WsVwnn3yyjjnmGD3++OMRe04A7UcJAdroH//4hyorK/dZGpAk27b32JewYsUKnXLKKVq6dKnuvPNOLViwQPfcc49aWloUCAQ6Jd/MmTNV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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for mutant, res in filtered_mutations_Treg.items():\n", + " res.plot_piechart()\n", + " plt.title(mutant)" + ] + }, + { + "cell_type": "code", + "execution_count": 21, + "id": "a2b841c3-1d16-4c4e-88c4-302145ed5a1d", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:34.511399Z", + "iopub.status.busy": "2024-06-07T17:39:34.511164Z", + "iopub.status.idle": "2024-06-07T17:39:34.519613Z", + "shell.execute_reply": "2024-06-07T17:39:34.518674Z", + "shell.execute_reply.started": "2024-06-07T17:39:34.511379Z" + } + }, + "outputs": [], + "source": [ + "filtered_mutations_Th1 = maboss.pipelines.filter_sensitivity(updated_mutations, node=\"Th1\", minimum=0.5)" + ] + }, + { + "cell_type": "code", + "execution_count": 22, + "id": "9632752a-fe34-497b-93c0-969d30931204", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:34.520866Z", + "iopub.status.busy": "2024-06-07T17:39:34.520649Z", + "iopub.status.idle": "2024-06-07T17:39:34.940840Z", + "shell.execute_reply": "2024-06-07T17:39:34.940215Z", + "shell.execute_reply.started": "2024-06-07T17:39:34.520847Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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wOPyio4lTGzyKRQd/MAnj2UOCUXSiFFIzhyNpMwxiElJhaTT+eSxiUhZWE6IBpDb6UHFqUZU5DfgdH4DKvIb4WjRzshKVEI1So++3q/7WsPCkZQ5BkkjRyF55GhEJQ/mxfaINILlhMjP6k/bUZHf0PFRW9YSsJNrg8NaUVPwco/H6Q0GRCalIHbwECRmjEBS5mhEJib5ISERKRHLCZFgTocbteUtqC1r/2hGTVkL7AGwrb6k88JR93vI3m9PbQUFByNmcBpiBw9BTOoQxKYOQVRSMpf5ElEHlhMihXK0uDrKSn1VK5prHGiqdaCprg2tTU5AwX9zTWY9QmMsCI2yIDTyMEKiIhARn4iIhEGwRUaJjkdECsdyQqRCbpcHzbVtaKpzoKnGgZb6NjiaXWizu9FmP/Nfx1l/vqBJuRJgMOigN+lgDNLDGmKCJcQES4gRlhATrKHffm4NNcEWYYY5mKMgRNR/LCdEGuB2eeBq88DrkSF7ZXg9Mrzf/Lf9c1mWodPrYDDpYDDqv/mvDnqjjhNRicivWE6IiIhIUbhJABERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESnK/wclfpEMm8FGXwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAicAAAGZCAYAAABSeJFFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/y0lEQVR4nO3deXhU5cE+/nvWzGSd7HsgK5CQsC+ibCKoLIriBorSWltt1doWaX+X7Vv0+75v1da2aq1926JYd4u7oIJssgtCCEvYQvZtsu+zn98fQEpMQgKZmefMnPtzXbkkk5Mz90SS3DznOc+jkiRJAhEREZFMqEUHICIiIroYywkRERHJCssJERERyQrLCREREckKywkRERHJCssJERERyQrLCREREckKywkRERHJCssJERERyQrLCdF5Tz31FLKzs+FyubofU6lUWLt2bff7a9euhUqlwoEDB7ofW716NVQqFerr6y95/l//+tdYuHAhEhMToVKpsGLFij6PW7FiBVQqVfebXq9Heno6Vq5cidbW1n7Pf+utt0KlUuHhhx/u8+Pbtm3rcV6NRoPY2FjcfvvtKCws7D6upKQEKpUK27Ztu+Tr6c/w4cOxevXqXo8XFhZixYoVSElJgV6vR1RUFObPn4/PP/98wKwXv912223dx82aNavf444ePdrjXCUlJd2ft3z5cixevPiKXh8ReZ5WdAAiOaiqqsKzzz6LtWvXQq32TGf/05/+hLy8PNx000145ZVXLnms0WjEli1bAADNzc1Yt24dnnvuORQUFGDjxo29jjebzfjss88AAG+++Sb+8Ic/wGAw9Hnu//3f/8Xs2bNhs9lw4MABPPXUU9i8eTOOHDmCxMTEIb7Kvn3wwQdYtmwZ0tLS8Jvf/AYjRoxAbW0tXn31VcyfPx+PP/44nn322X6zXiwyMrLH+2lpaXjzzTd7fW56enq/eVavXo2RI0diy5YtuPbaa6/wVRGRp7CcEAF4/vnnYTKZcOutt3rsOdra2rqLz+uvv37JY9VqNaZOndr9/g033ICzZ89i06ZNKC4uRmpqao/j//Wvf8Fut2PBggVYv359dxnoS2ZmZve5Z8yYAZPJhPvvvx9r167FE088MZSX2KeioiIsX74cubm52LZtG4KCgro/dvvtt+Ohhx7C73//e4wfPx533XVXv1n7YzQaBzzmu9LT03HDDTfg6aefZjkhkiFe1iHFs9lsWLNmDZYtW+axURMAQz73xIkTAQC1tbW9PvbKK68gNjYWr732GoxG44AjMxe78Iu9tLR0SPn686c//QmdnZ148cUXexSTC5577jmYTCb8z//8j0eevz/Lly/HV199haKiIq8+LxENjCMnpHj79u1DQ0NDr8sHACCnTbuLi4uh1WqRlpbW4/Hdu3ejsLAQjz/+OCIjI7FkyRK8+eabfY6w9OXMmTMAgOjoaADn5owM5XVfPLcDADZt2oTY2Nh+RzcCAwMxb948vPfee6ipqUFcXFz3x1wuFxwOR4/jtdreP7a+e4xare4ug7Nmzerz9Vx4fMOGDXjkkUcG9dqIyDs4ckKKt2fPHgDA+PHjBSfpyeFwwOFwoKGhAX/729/wwQcfYNWqVYiJielx3Jo1awAA3//+9wEA999/PyRJwquvvtrneS/8wu/q6sKOHTvwi1/8AhqNBnfeeadHXkdZWdmAJenCx8vKyno8fuedd0Kn0/V4u1CmLjh27FivY+69994Bc8XExCAxMRG7du26zFdERJ7GkRNSvKqqKqhUKkRFRYmO0q2jowM6na7HY0uXLu116aO9vR3vvfcepk2bhpEjRwIAZs6cifT0dKxduxarV6/udTnpuyUkNTUV69atQ15engdeyeBcGNlQqVQ9Hn/mmWd6zQlJTk7u8X56ejreeeedHo99d9Jsf2JiYlBZWXm5cYnIw1hOSPG6urqg0+mg0WhER+lmNBrx9ddfAwBqamrw3HPP4e2330ZeXh5+9atfdR/37rvvor29HXfccQeam5u7H7/jjjvwu9/9Dps2bcL111/f49wXfuFrNBpERUX1+mXvbikpKSguLr7kMRcuBX03S1paWvdcm/4YDIYBj7nU53Z1dV3R5xKR5/CyDileVFQUbDYbOjo6REfpplarMXHiREycOBELFy7EF198gZycHDz55JMoLy/vPu7CJZ3HHnsM4eHh3W+/+93venz8Yhd+4Y8bN87jxQQA5s6di9raWuzdu7fPj3d2dmLTpk0YPXp0j/km3tDY2CirETMiOoflhBTvwuUQOd+1ERAQgJdeegkWiwX//d//DeDcomZ79uzBkiVLsHXr1l5vc+bMwccff4yGhgah2X/2s5/BaDTikUce6bMArly5Ek1NTfj1r3/t1VwOhwPl5eXIzs726vMS0cB4WYcUb9asWQCAvXv3DmnexaeffoqQkJBej19Y0XT79u2oq6sDADidTpSWlmLdunUAzs0TuXC3TH9mzpyJ+fPn49VXX8WvfvWr7lGRVatWYfLkyb2Ob2trw+bNm/HGG2/gpz/96RW/LuDcZZfU1FTcd999PVbMHYz09HS8/vrruPvuuzFp0iT8/Oc/716E7ZVXXsHnn3+OlStXemxCbn8KCgrQ2dnZ511aRCQWywkpXnJyMqZPn46PP/4YP/zhD6/4PBfulvmuC5M9f/vb32L79u3dj2/btq17ifitW7d2l6RLeeaZZ/DFF1/gqaeewoYNGzB27Ng+iwkAzJ8/H0lJSVizZs2Qy0l7ezsAID4+/oo+f8mSJRg1ahSeffZZPPnkk6itrUVISAgmT56M9evXY/78+UPKdyU++ugjREVFYd68eV5/biK6NJUkp4UciAR5//33ceedd6K0tNRjS7j7sr/+9a9YtWoVioqKEBsbKzrOkDmdTmRkZGDZsmVeX/yNiAbGOSdEOLdp3qRJk7onklJPW7duxaOPPuoXxQQA3njjDbS3t+Pxxx8XHYWI+sDLOkQ4t77GP/7xD3zyySdwuVweXcbeF/373/8WHcGtXC4X3nzzTZhMJtFRiKgPvKxDREREssJ/HhIREZGssJwQERGRrLCcEBERkaywnBAREZGssJwQERGRrLCcEBERkaywnBAREZGssJwQERGRrLCcEBERkaywnBAREZGssJwQERGRrLCcEBERkaywnBAREZGssJwQERGRrLCcEBERkaywnBAREZGssJwQERGRrLCcEBERkaywnBAREZGssJwQERGRrGhFByCioXG5JHS12mDptMPW6YC1ywFrpwO28/+1djlg67R3/9nllCC5JLhcEiQJkFwSbG1vQa1WQ3X+7cKfdQYDDEEhMAQHwxAcAmNICAzB/3kzBofAEBICvcEo+stARH6E5YRI5iSXhPZmK9oaLGhr6EJrgwWt5//c1mBBe5MVLqc0pOewNJ0e0udrtFoYgkMQHBEJU1wCwuMTEB6XAFNcPExxCQgMDRvS+YlIWVSSJA3tpxoRuYUkSWgxd6GuvA31Fe2oL29Hc22HW8rHQCxNf/To+QOCgs6XlYuKS3wCopKHQRdg8OhzE5HvYTkhEsDpcKGxquNcESk7X0Yq2mG3OoXk8XQ56Y9ao0Fk8jAkZI5AfOZIxGVkISIhCSqVSkgeIpIHlhMiL7B2OVB1qgmVJ5tReboJjVUdHh8NuRyiyklfDEHBiMvIQvz5whKfMQKG4GDRsYjIi1hOiDzAZnGg+kwLKk82ofJUE+rK2yG55PutJqdy0otKhfC4BCRkjcLwMeMwfOwEGIJYVoj8GcsJkRu4nC5UnWlBRWEjKk81wVzSBpeMy8h3ybqcfIdao0FC1iikjpuI9AmTEZmUIjoSEbkZywnRFXLaXSgrbMTZg2YUH6mHtcMhOtIV86Vy8l2h0bFIGz8RaeMmITknD1q9XnQkIhoilhOiy2C3OlF6tAFFh8woPdoAu0XMBFZ38+VycjFtQABSRo9B2rhJyJg0FUGmcNGRiOgKsJwQDcDaaUdJQT2KDtWh7HgjnHaX6Ehu5y/l5GJqjQbDx4xH9ow5SJ84BVqdTnQkIhoklhOiPkiShIqTTSjcWYWz+fVwOvyvkFzMH8vJxQxBwRgxbQZyZs1BfMYI0XGIaAAsJ0QX6WixonB3NQp3V6O1rkt0HK/x93JysYjEZOTMnIPs6bMRHBEpOg4R9YHlhBTP5ZJQdrQBx3ZWoexog0/dZeMuSionF6jUagzLHYucmXOQMekqTqQlkhGWE1KstkYLju+sQuHuanQ0W0XHEUqJ5eRixtAwjJ23AGOvX8B9gIhkgOWEFKehsh0HN5bizH6zIkdJ+qL0cnKBVh+AnJlzMHHhLTDFxYuOQ6RYLCekGFWnm3FwYylKjzYA/FvfA8tJTyqVGhmTp2LSoiWIz+QEWiJvYzkhvyZJEkqONODQl6WoLmoRHUe2WE76lzgyB5NuuhVp4ydzQ0IiL2E5Ib/kcrpwan8tDm0sQ2NVh+g4ssdyMrCIxGRMXHgLRk2fzTVTiDyM5YT8issl4cTuauzfUIz2RmVPcr0cLCeDFxodg6vvuAejps/mSAqRh7CckN8oOmjGvk/OoqmmU3QUn8Nycvlihqdjxt3fw7C8saKjEPkdlhPyeRUnm7DngzMwl7aJjuKzWE6u3LC8cZhx9/cQMzxNdBQiv8FyQj6rqaYDu98/g5IjDaKj+DyWk6FRqdQYNX0Wrr5zOUKjokXHIfJ5LCfkc7rabfjm02Ic31HFdUrchOXEPbQ6PcbduAiTF98OQ1Cw6DhEPovlhHyG5JJQsK0C33xaDFuXQ3Qcv8Jy4l6G4BBMvfVOjLthEdQajeg4RD6H5YR8Ql15G7a9cYLzSjyE5cQzolKGY+4DDyMha6ToKEQ+heWEZM1uc2L/p8U4vLmcl3A8iOXEc1QqNfKuux7Tl61AQGCQ6DhEPoHlhGSr9FgDtr91Em0NFtFR/B7LiecFhUdg9n0/xIirrhEdhUj2WE5Idjpbbdj53imcPmAWHUUxWE68J33iVMx94CcIMoWLjkIkWywnJBuSJKFwVzV2f3AG1k5OePUmlhPvMgQFY9Z9DyBn5hzRUYhkieWEZKGz1YbNrxWi7BjXLBGB5USMtPGTcN0DP0FIRJToKESywnJCwpUda8BXrxWiq9UmOopisZyIExAYhLk/fBgjrpouOgqRbLCckDBOhwt7PirC4c3lAP8WCsVyIt6YufMx674HuOMxEVhOSJDm2k5sXHMMdWVct0QOWE7kIWZ4Ohb+7JcIj0sQHYVIKJYT8rrju6qw473TcFidoqPQeSwn8qE3BmLejx7hZR5SNJYT8hprpx1b3ziJooO8RVhuWE7kh5d5SMlYTsgrGirbseHlArTWc0E1OWI5kaeY4elY9LNfwRQXLzoKkVexnJDHnc2vw1evHoedl3Fki+VEvs5d5nmUK8uSorCckEcd2FCMfZ8W824cmWM5kb9xNyzCrPt+ALWauxyT/9OKDkD+yW5zYsu/CnGGS9ATucWhLz5Fc201Fj72S+gNRtFxiDxKLToA+Z+2Rgs+/MNBFhMiNys+dADv/vZXaG/kSsrk31hOyK2qi1rw76cPcP0SIg8xlxThrV+vRF1ZiegoRB7DckJuc2JPNT7600EuQ0/kYW0NdXjnv1ahpOCQ6ChEHsFyQm5xcGMpNr9WCJeDM1+JvMHW1YkPn16NI1s3io5C5HYsJzRkez4swp4PikTHIFIcl9OJjX97ATvfeV10FCK3YjmhKya5JGx78wQOflkqOgqRou378F1sePEPcDrsoqMQuQXLCV0Rp9OFja8cw7EdVaKjEBGAwp3b8P7//hZ2C1dhJt/HckKXzWFzYsNfj/BWYSKZKT9WgA+eWQ27lQWFfBvLCV0Wa5cDn7yQj7JjXGeBSI4qjh/FB0+zoJBvYzmhQetsteGjPx5E9ZkW0VGI6BIqjh/Fh08/yYJCPovlhAbF0mHHJ8/no768XXQUIhqE8uNH8OEzT7GgkE9iOaEB2SwOfPriYTRUspgQ+ZLyYwUsKOSTWE7okhw2J9a/VABzSavoKER0BcqPFeCjZ1lQyLewnFC/nA4XPv+/o6g63Sw6ChENQdnR8wXFZhUdhWhQWE6oTy6XhE1rjvGuHCI/UXa0AB898yQLCvkElhPqRZIkbPlXIYoO1YmOQkRuVHa0AJ+/+Bwkl0t0FKJLYjmhXr5+5xRO7q0RHYOIPOD0N7ux/c1XRccguiSWE+ph3ydncXR7pegYRORB3372IfK/XC86BlG/WE6o28l9NTiwoUR0DCLygi1r/w9nD+4XHYOoTywnBACoOduCra+fEB2DiLxEcrnw2fPPora4SHQUol5YTghtjRZseLkATgcnyREpid3ShY+eeRJtDfWioxD1wHKicDaLA+tfKkBXm110FCISoL2pER88vRrWzk7RUYi6sZwomOSSsOmV41yWnkjh6stK8OmffgeX0yk6ChEAlhNF2/1hEUoKOJxLREBpwSF8teavomMQAWA5UazC3VXI31QmOgYRyciRzV+iYPMXomMQsZwoUc3ZFmx766ToGEQkQ1vX/gN1ZSWiY5DCsZwojKXDjo3/PAaXQxIdhYhkyGGz4rM/PQ27hbsYkzgsJwqz9fUTaGvkDx0i6l9jVQW++udLomOQgrGcKMiRbRU4m8/N/IhoYMd3bMWRrRtFxyCFYjlRiPqKNuxad0Z0DCLyIVte/T/Ul5eKjkEKxHKiAHarE1/+4xhXgCWiy+KwWvEp55+QACwnCvD12yfRXMvVH4no8jVWlmPzKy+LjkEKw3Li507uq8GJvTWiYxCRDzu2fTOObd8sOgYpCMuJH2uu7cR2rmdCRG7w1Zq/orGqUnQMUgiWEz8luSRsfu047FbulUFEQ+ewWrHp7y9CkrhGEnkey4mfOrylHDVnW0XHICI/UlF4FEc2fyk6BikAy4kfajZ3Yt/HZ0XHICI/9PWbr6K9sUF0DPJzLCd+RpIkbH39BBx23jZMRO5n7ezg3TvkcSwnfubYjipUnW4WHYOI/NiZ/Xtxat8u0THIj7Gc+JGOFiv2fFgkOgYRKcCWV/4GS0e76Bjkp1hO/MiOd0/D1uUQHYOIFKCjuQnbX39FdAzyUywnfqLkSD2KDppFxyAiBTm6dSPKjhaIjkF+iOXED9htTnz99inRMYhIgTb940XYbVbRMcjPsJz4gUNflqKtkRtzEZH3NddUY+/774iOQX6G5cTHdTRbcWhTmegYRKRgB9d/jNZ6XlYm92E58XF7PzkLh41rmhCROA67DbvefUN0DPIjLCc+rL6iDSf3VIuOQUSEwh3bYC7hytTkHiwnPmzXujPgHlxEJAeS5MKOt9aKjkF+guXER5UcqUfFiSbRMYiIupUcPojSgnzRMcgPsJz4IJdLwu4PuBIsEcnP12+9ColDujRELCc+6PjOKjRVd4iOQUTUi7m4CCd2bhMdg3wcy4mPsVkc+OZTTjojIvna+e4bcNjtomOQD2M58TEFWyrQ1cZveiKSr9a6WuR/+ZnoGOTDWE58iN3mxOEt5aJjEBENaN+H73HXYrpiLCc+5PiOKljaOWpCRPJnaW/Dt+s/Fh2DfBTLiY9wOlxcpp6IfEr+l5/BZukSHYN8EMuJjzixpxodzdz5k4h8h6W9DQVffSE6BvkglhMf4HJJOLiRoyZE5Hu+Xf8RnA5ejqbLw3LiA07vr0VrHYdGicj3tDc24PjXW0XHIB/DciJzkiTh4JelomMQEV2x/Z9+wFVj6bKwnMhc8eF6NFZxNVgi8l1NVRU4e3C/6BjkQ1hOZO7QRo6aEJHvO7jhI9ERyIewnMhYXXkbas62io5BRDRkZUcLYC7h1hs0OCwnMnZsR5XoCEREbnNwwyeiI5CPYDmRKZvFgVPf1IiOQUTkNid2b0dHc5PoGOQDWE5k6vT+WtgtTtExiIjcxmm34+jWTaJjkA9gOZEpXtIhIn90bPtm0RHIB7CcyFBtSSvqytpExyAicrum6kpUnTohOgbJHMuJDB37ulJ0BCIijzn+NUdP6NJYTmTG2uXA6QO1omMQEXnMyd074LBzvx3qH8uJzJzcWwOHzSU6BhGRx1g62lF0YJ/oGCRjLCcyc3JvtegIREQex0s7dCksJzLSWt8FcyknwhKR/ys5fJBrnlC/WE5k5My3ZtERiIi8wuV0onDnNtExSKZYTmSE5YSIlOQ41zyhfrCcyERrfRfXNiEiRakrK+FmgNQnlhOZ4KgJESnR8R1bRUcgGWI5kQmWEyJSorMH94uOQDLEciIDLXW8pENEytRUVYHmWu7ATj2xnMhA0UGOmhCRcnH0hL6L5UQGeEmHiJSs+BDLCfXEciJYR7OVl3SISNEqjh+F3WoRHYNkRCs6gNKVn2gUHYGILmH3mVLsKSpFY0cXACAuLBjXZWdiVHxM9zG1rW1YX3ACZ+saIUkSYkNDsPyq8QgPMg54/kNlVXhz7yHkJMTie9dM7H78YGkl1hecgM3pxOTUZCwaM6r7Y40dnfj79m/w2NyrYdDp3PhqxXDYbSg7ehjpE6aIjkIywXIiWEUhl28mkrOwQAPm541EVHAgAOBASQXW7jqAn82djriwENS3d+ClLXswOTUZ1+dkwaDToba1DVrNwAPTjR2d+OxwIVKjIno83mG14b0DBbhr0hhEBAdizY79SI+OQHZCLADg/W+PYkHeCL8oJhecPbif5YS6sZwIVsGREyJZyzlfCC64MXckdheVobShCXFhIfjiyEmMjI/BwotGNiLPF5lLcbkkvLUvH/NyMlFc34Qum737Yw3tnTDqdBibkgAAyIiJRG1rO7ITYnGwtBJatRq5SfFueoXyUHzoW9ERSEY450SgxqoOdLTYRMcgokFyuSQcKquCzeHEsMhwuCQJhdVmRAcH4e/b9+G3H2/C81/twtHKgW+N3XT8NIID9JiSltLrY1EhQbA5nKhsakGn1YbyxmYkmELRabXhy2OncMv4HE+8PKHaGupQV1YiOgbJBEdOBOJ8EyLfUN3cihe37IbD6YJeq8GKqycgLiwErV0WWB1ObDlRhBtHZ2FB3kicrKnDa7u+xYOzpiI9JrLP8xXXN+Kb4nL8fN70Pj8eqNfhrslj8PY3h2F3OjFhWBJGxEXj3W8O45qM4Wjo6MQrOw/A6XJhXk4WxiT7xyjK2YP7EZ0yXHQMkgGWE4EqTnC+CZEviA4Jxs/nTkeX3Y4jFTV455vDeGjWVBj15+Z8jE6MxYwRaQCAxPAwlDQ0YU9RWZ/lxGJ34K19+bhtYi6CAvT9PmduUhxyk+K63z9jbkB1SxtuGT8aT2/YirunjkOIIQAvbN6FtOgIhBgC3Pyqva/40H5MWXy76BgkAywngricLlSdYjkh8gVajRpRIUEAgOQIE8obm7HzdAkWj8uBWqVCbGhwj+NjQoJRUt/393dDeweaOrrw6s4D3Y9JkgQAWPXvDVh140xEBQf1+ByH04kPDh7FsiljUd/eAackdRefqOAglDU295ob44uqT5+Cw2aDVt9/aSNlYDkRpLakDTaLU3QMIroCEgCHywWtRo3kiDCY2zp6fLy+vaPf24hjQoPxi+tn9HjsiyMnYXU4cPO4HJiMvT9v0/EzGBkXjaTwMFQ2tcB1vswAgEuSusuNr3M5HTCXFCEha9TAB5Nf44RYQXiXDpFv2HB+/ZLGjk5UN7fi8yMnUFTXgPHn76SZNSIdh8ursLeoDPVtHdh5ugTHq8yYlj6s+xxv78vHhoITAACdRoP4sJAeb0a9DgFaLeLDQnrdglzT0obD5VW4fnQWgHOjMioA+86W4XhVLcyt7UgON3nla+EN1adPiY5AMsCRE0GqTjeLjkBEg9ButeLtfflotVhh0GmREBaCB6ZPRlZcNIBzc0OWjM/FlhNn8FH+McSEBOPeaeORGv2ftUuaOrugUqku+7klScK6A0dw09hsBGjP/bjWaTW4a/IYfHDwGJwuF24Zn4OwQIN7XqwMVJ8+AeBm0TFIMJXkL+OBPuafv/ga1g6H6BhEAABL0x9FRyACAIRGx+KBv6wRHYME42UdAVrru1hMiIj60FpXi86WZtExSDCWEwHMpdzoj4ioP9VnToqOQIKxnAhQV9YqOgIRkWxVn2Y5UTqWEwE4ckJE1D+WE2I5EaCunOWEiKg/NUWnIblcomOQQCwnXsbJsEREl2br6kRDZbnoGCQQy4mX8ZIOEdHAas5wMTYlYznxMk6GJSIaWGNVhegIJBDLiZfVl7eLjkBEJHvNNdWiI5BALCde1lzXJToCEZHsNddUiY5AArGceJHL6UJ7g0V0DCIi2Wuq5ciJkrGceFFboxUuF7cyIiIaiMNqRXtjg+gYJAjLiRe11vOSDhHRYDXx0o5isZx4UQvnmxARDRonxSoXy4kXtbKcEBENGkdOlIvlxItaeFmHiGjQeMeOcrGceBHnnBARDV5zNcuJUrGceBHnnBARDV5zbY3oCCQIy4mXdLXbYLc4RccgIvIZdqsFHc1NomOQACwnXtLRbBUdgYjI53S1cT8yJWI58ZKuNrvoCEREPsfSzp3clYjlxEu62m2iIxAR+RxLOzdLVSKWEy/pauXICRHR5eLIiTKxnHgJR06IiC4fy4kysZx4ibXDIToCEZHPsXTwso4SsZx4ibWTl3WIiC4X55woE8uJl1i7OHJCRHS5eFlHmVhOvMTGckJEdNl4WUeZWE68xNrJckJEdLk4cqJMLCdeYrdy6XoiosvFcqJMLCde4nJJoiMQEfkca2en6AgkAMuJl0gsJ0REl0/iz04lYjnxEn5/ERERDQ7LiZdw5ISIiGhwWE68hCMnRERXQKUSnYAEYDnxEo6cEBERDQ7LiZdIHDohGUscdZXoCERE3VhOvITdhOSsoeYqpOTdIDoGEREAlhOv4WUdkjtzeTaS8+6AWqMVHYXoPzjnRJFYTryEIyfkC+rKkxCXdQ/0xkDRUYhIwVhOvESj45eafENjTQTCEpYjKDxKdBQiUij+xvQSfYBGdASiQWtrDII+6E6EJwwTHYWIFIjlxEv0Rl7HJ9/S1REAu2Mx4jLyREchBVOr+WtKifh/3Ut0HDkhH+Swa9DSOAdJOdNFRyGFMgQFi45AArCceIneyHJCvkmSVKivmoSUMQt55wR5nSEkVHQEEoDlxEv0Bl7WId9mLstC8ui7oNHpREchBTGGhIiOQAKwnHiJzsCRE/J9dRXxiElfjgAOtZOXGIJYTpSI5cRLOHJC/qKp1oSQmOUIiYoVHYUUwMCRE0ViOfESPUdOyI+0NxuhDrgdkcnpoqOQnzMGs5woEcuJl+g4ckJ+xtqph8WyEPFZ40VHIT9mYDlRJJYTLzEEcRIh+R+nQ4OmuplIHj1bdBTyU5wQq0wsJ14SbAoQHYHIQ1SoqxyHlLzFUKn4I4XcyxDMW4mViD9JvCQ4wiA6ApFHmcvTkJi9DFq9XnQU8iOGYN4ZpkQsJ14SHM6RE/J/9VUxiBx+L4whYaKjkJ8wchE2RWI58RJDkI5rnZAitNSFIjByGcJiEkRHIV+nUrGcKBTLiRcFh/PSDilDR4sRLu0SRA8bIToK+bAgUzgvEyoUy4kXhfDSDimIvUuHjo4bkThysugo5KPCYuJERyBBWE68iJNiSWlcTjXqa69GSu5c0VHIB5liuAqxUrGceBEnxZISqaCCuSIXKXm3Qa3hvCsavLBYjpwoFcuJF4Vw5IQUzFyegviRd0Nn4PcBDQ4v6ygXy4kXsZyQ0jVURSE8+V4EmiJERyEfYIrjHV9KxXLiReHxQaIjEAnXWh+MgNClCI9PER2FZC4iMUl0BBKE5cSLAkP1MIZwjx2irrYAOFyLEZs2WnQUkiljaBh3JFYwlhMvi0zkUsxEAGC3adHach2SsqeJjkIyFJHAURMlYznxssgklhOiCySXGvXVU5GSN190FJKZyMRk0RFIIJYTL4viyAlRL+bykUjOvRNqjVZ0FJIJzjdRNpYTL+NlHaK+1VUkIi7rHgQEcuI4AZHJw0RHIIFYTrwsIj4IarVKdAwiWWqsiUBI/HIER0SLjkIiqVSIz8gSnYIEYjnxMo1OjbDYQNExiGSrvTEQ2sA7EZGYKjoKCRKRkMQRNIVjOREgMpHfdESXYunQw2q/CXEZY0RHIQHiM7mbtdKxnAjAeSdEA3PaNWhuvBbJOTNERyEvS8gcKToCCcZyIkBsaqjoCES+QVKhrmoiUvJuAlScq6UU8VksJ0rHciJAXFoY1Br+oCUaLHN5BpJylkKj04uOQh6mNxoRlcStDZSOiwoIoNNrEDMsBDVnW0VHcZvmjjp8vPcfOFb+DexOG2LCknD3zJVIiT434379gddwsGgrmtrroFFrkRKdhUWTvo/hsaMued5Oazs+/WYNDpfsRKe1DZEh8bj1qgeRkzIFALD/9Ff4eN8/YXNYcNWIG3HLVT/q/tyGthr8Zf0qrLr1ZRj1nOfj6+or4xCdthzNlf+Gpd1/vneop7j0TKjU/Hez0rGcCJKQafKbctJpbcMfP/opMhPG4sfzn0aI0YT6lioY9f+ZWxMTloTbr34EUaHxsDts2HJkHf6y4Zf47V3/QojR1Od5HU47/rJ+FUKMJtw/97cID4pGU7sZAfpzdzu1d7Xgre3P4Z5ZqxAVGo+XP38CmQljMHrYVADAuzv+jJsnP8Bi4keazWEIirobeuOHaK2rER2HPCCe800ILCfCJGSG4+CXZaJjuMWm/HcQHhyN5bNXdT8WGRLX45hJmXN6vH/rVQ9hz4nPUdVwFiOSxvd53j0nv0CntRW/uPkFaM6vHBoREtv98fq2ahj0QZiQMRsAkJUwFjVNpRg9bCr2n94MjVqHsWnT3fIaST46WozQG29HVMoXqC87LToOuRnLCQEsJ8LEZ4RBpVZBckmiowzZkZLdGJU8CWs2PYnTVQUwBUVhes5NuHrUgj6Pdzjt2FW4HkZ9EBIj0y953tSYbLy78wUcKd2FYIMJEzOuxdyxd0Gt1iAmLBF2hxXl9acRERyL0rqTmDryBnRYWrH+wFr8dNFznnrJJJitSweHdgESRuxE1ckDouOQG/E2YgJYToTRG7SISgpGXVmb6ChDVt9WjR3HP8G1ubdh3rhlKDWfwLpdf4FWo8OUrHndxx0p3YNXv/pv2B1WhAZG4OEFzyLYGNbveRvaqnGq6hAmZczBQzf+DuaWCry38wW4JCdunHAvAgNCsHz2L/Gvrc/A7rBictZcZCdPwhvbfo+ZoxejobUG//fFb+B0OTB/4r0YlzbTG18O8hKXQ40G83Qk54ah/Mhm0XHIDUyx8QgM7f9nAikHy4lACVkmvygnkiQhJToLN035AQAgOSoT1U2l2HHskx7lJCthLP6/2/6OdksLdheuxytf/T+svOUvCDGG93lel+RCiDEcS2f8HGq1BinRWWjpbMDmw+/hxgn3AgDGpF6DManXdH/Oqap8VDUW446rH8Hqd+7F9+Y8gdDACPz+w58gIz6v3+ci36SCCnUVY5CSF4ryox9DcrlER6IhSMrOFR2BZIJTogVKyDCJjuAWoYERiAvvuUlXnCkFTe3mHo8F6IyIDktEamw27p71ONQqDXaf+Lzf84YFRiImLAlqtabHeVs7G+Fw2nsdb3fa8N6O57F0+mOoa62Ey+VEZsIYxJqSEROWhJLawiG+UpIrc3kqEkbdDa0+QHQUGoK0CZNERyCZYDkRKCHTBPjBcidpcaNhbi7v8Zi5paLH5NW+SJD6LBnd543NQV1LJVzSf/41bG6pQGhgJLQaXa/jv/j2DWSnTEZydBZckgsuydn9MafL0eM85H8aqqIROfxeGENNoqPQFdDodBieO050DJIJlhOBDEE6xKSEiI4xZNfmLkGxuRBfHnwTdS2V2H96M3YVrseMnJsBAFZ7Fz7Z908U1x5HY1styutO4c3tf0BzRx3GXzQP5F9bnsbH+/7Z/f70nJvQYW3Ful0voba5HEdL92Ljobe6z3ux6sYSHCzahgUTVwAAYk0pUKlU2H1iA46W7kVtcxmGxXCinb9rqQuBMXwZwmITRUehy5Q0ajR0BoPoGCQTnHMiWOqYKJhLfXveybCYkXhg3pP45Js1+Pzg64gMiceSaT/GpMzrAABqlQa1zeXYt3E1OiytCDSEYlj0CPzspj8jPmJ493ka281QXbREeXhwDH4y/xl8sOdl/G7dAzAFRWHW6Fsxd+xdPZ5fkiS8/fUfceu0hxCgMwIA9NoA3DNrFd7b+QIcTjvuuPoRmIKiPf/FIOE6Ww3QG5YgZvgmmEt4Kc9XpI2fLDoCyYhKkiTfv5fVhzVUtuOd//eN6BhEfkelcSEiei8qC/eKjkKD8IMX/4mwmLiBDyRF4GUdwSITgxEabRQdg8jvSE41GmqmISX3etFRaACRSSksJtQDy4kMpI6JEh2ByG+ZK3KQknc71BrNwAeTEGnjeZcO9cRyIgNpYzgXgsiTzOXJiBtxD/TGQNFRqA9p41hOqCeWExmITw+DMaT3rbFE5D6N1ZEwJS5HUHik6Ch0EUNQMBJGXnp3clIelhMZUKlVGJ7LSztEntbaEARd8FKEJwwb+GDyiuFjJ/RYaJEIYDmRDc47IfIOS7sedudixKZzqXQ5SJvAW4ipN5YTmUjOjoA2gP96IPIGh02D1qbrkJR9zcAHk8fojUZkTJwiOgbJEMuJTGh1GqTm8lo4kbdIkgr11ZORkrcAUPnBPhI+KGvqdOgCuCos9cZyIiMjp8WLjkCkOObyEUgefSc0Wi6Y7W05s+aIjkAyxXIiI8kjIxAczl1VibytriIBMRnLERAULDqKYpji4pE0Mkd0DJIplhMZUalVGHkVR0+IRGiqDUdo7D0IiYwRHUURcmZw1IT6x3IiMyOvigd4+ZtIiLamQKiNdyIyKU10FL+mUqmRPZPlhPrHciIzYdFGJGSYRMcgUixrhw4W2yLEZ44VHcVvJefkIjSKK2NT/1hOZGjU1by0QySS065BU/1sJI+eJTqKXxo96zrREUjmWE5kKH18DPQGrnlCJJYKdZXjkZK3GCoVf1S6i94YiIwp00THIJnjd5wM6fQaZEzgpDwiOTCXpyExZym0er3oKH5hxFXXQKfnXYl0abyxX6ZGXZ2A47uqRccgIgD1lbGISl2Olqp/o6utVXQcn5Yza67oCJfN6XTCbreLjuHzdDodNJrBXRVgOZGpuLQwRCUHo768XXQUIgLQbA5DYOQ90Bs/RIuZ/3C4ErFpGUgc4Ts7EEuShJqaGjQ3N4uO4jdMJhPi4uKgGmBVZpYTGRszJxmb1xaKjkFE53W2GKA33I7oYV+grvSU6Dg+Z+KiW0VHuCwXiklMTAwCAwMH/IVK/ZMkCZ2dnTCbzQCA+PhL3/jBciJjmRNjsefDInS22ERHIaLzbBYtHPb5SBgRhqqT+0XH8RlhMbHImnq16BiD5nQ6u4tJZCT3PXMHo9EIADCbzYiJibnkJR5OiJUxjVaN3JlJomMQ0Xe4nGo0mK9BSq7vzZ8QZcKCxVCrfecuxAtzTAIDAwUn8S8Xvp4DzeFhOZG50TMSodXxfxOR3KiggrkiFyl5S6BS83v0UgwhoRg92zeLHC/luNdgv578jpI5Q7AOo7hbMZFsmcuHIWHUPdAZDKKjyNbYeQugC+DXhwaP5cQHjJ2bArWa7Z1IrhqqohCRfC8Cw8JFR5EdrT4A425YKDoG+RhOiPUBoVFGpE+Iwen9taKjEFE/WuqDYQxbCr3xEzTXVIiOIxs5M+cgMDRMdAy3eunBLV59vp/87Vq3nq+kpASpqak4dOgQxo4d69ZzuwtHTnzEhBuGiY5ARAPoajPAiSWISc0WHUUWVCo1Ji68RXQMRVGpVJd8W7FixaDOY7FYsGLFCuTm5kKr1WLx4sUezf1dHDnxEZGJwRieG4mSIw2ioxDRJditGjjs85A0KgwVhXtExxEqc/JVMMVxzpw3VVf/Z4HAd999F//1X/+FkydPdj9mNBrR1NQ04HmcTieMRiMeffRRvP/++x7JeikcOfEhU25OAzj1hEj2JJca9TVXISXvRtFRhJp00xLRERQnLi6u+y0sLAwqlarXYxecPXsWs2fPRmBgIMaMGYM9e/5TpoOCgvDyyy/jgQceQFxcnNdfB8uJD4lKCkHmxFjRMYhokMzlo5CSewfUGuUNUmdOnoa4jCzRMegSnnjiCaxcuRL5+fnIysrC0qVL4XA4RMcCwHLic6bclAa1hsMnRL7CXJGEuBH3QG9UzmJeao0G05fdJzoGDWDlypVYsGABsrKy8OSTT6K0tBRnzpwRHQsAy4nPCYs2IueaBNExiOgyNFZHICxhOYIjokRH8YrcOTcgPD5RdAwaQF5eXvefL+x1c2HvG9FYTnzQxAWp0Ab4zjLQRAS0NQZBG3gXIhKHi47iUXqjEdNuWyo6Bg2CTqfr/vOFlVtdLpeoOD2wnPigwFA9xs5JFh2DiC6TpUMPm/1mxGXkDXywj5q0aAkCw0yiY5CPYznxUePmpsAQrBv4QCKSFYddg+bGOUjOmSE6itsFh0dgwsLFomOQmxw/fhz5+flobGxES0sL8vPzkZ+f75XnVt4Ucj+hN2ox4YZh2LVOHpOXiOgySCrUVU1ESl4Yyo58BkiS6ERuMe2OexSxh467V2yVq/nz56O0tLT7/XHjxgEAJC/8fVVJ3ngW8gin3YU3frsH7Y1W0VGI6ApFJ1Wj6sQ6OAfYQl7uopKHYfmzL0Ct9o/5cBaLBcXFxUhNTYWBmzq6zWC/rrys48M0OjWuuS1TdAwiGoK6injEpC9HQFCw6ChDMv3uFX5TTEg8lhMflz4+BsNGR4qOQURD0FRrQkjscoRE+eYiiymj85A2bpLoGORHWE78wIy7sqDV8X8lkS9rbzJCHXAHIpPTRUe5LGqNBjOX/0B0DPIz/I3mB0KjjJgwf7joGEQ0RNZOHSyWhYjPmiA6yqBNumkJYoaniY5BfoblxE+Mm5eC8Pgg0TGIaIicDg2a6mYgebT87wgJT0jC1CVccI3cj+XET2g0asxaxk22iPyDCnWVY5Ey5haoVDL9Ma1SYd6PHoFWx/WWyP1k+reerkRCZjhGTvX+1tZE5BnmslQk5iyDVh8gOkovY+bOR9LIHNExyE+xnPiZaUsyEBDEtfWI/EV9ZQwihy+HMdQkOkq3kMhozOCuw+RBLCd+xhiix7RbMkTHICI3aqkLRWDEMoTFymNH8ut+8GPojYGiY9AVKikpgUql8tpS9FeC/8T2Q9nXJOBsfh1KjzaIjkJEbtLRYoDecBuih3+JupKTwnKMvHom0sYre02T5+5c6NXn+8W7nw362Au7C/fnvvvuw+rVqwc8j8ViwYMPPohvv/0WhYWFWLhwIT766KMex6xYsQKvvfZar8/Nzs7GsWPHBp25Lxw58VPX3jsKxhBOVCPyJzaLFu3tNyJx5BQhz28ICcXsFT8U8tw0ONXV1d1vf/7znxEaGtrjseeff35Q53E6nTAajXj00Udx3XXX9XnM888/3+Pc5eXliIiIwO233z7k18Fy4qcCQ/WYvXyU6BhE5GaSU4362mlIyZvn9eeefd8DCAwN8/rz0uDFxcV1v4WFhUGlUvV67IKzZ89i9uzZCAwMxJgxY7Bnz57ujwUFBeHll1/GAw88gLi4vm+0CAsL63HuAwcOoKmpCd/73veG/DpYTvxYal4UsqfL4xo1EbmPCiqYy0cjJe82qDXe2c8mfeJUZE+f7ZXnIu944oknsHLlSuTn5yMrKwtLly6Fw+G44vOtWbMG1113HYYNGzbkbCwnfu6a2zNhiuXENSJ/ZC5PQfzIu6EzGD36PKHRsbjhx4959DnI+1auXIkFCxYgKysLTz75JEpLS3HmzJkrOld1dTU+//xz/OAH7tnKgOXEz+n0Gsz9fjbUmktPkiIi39RQFYXwpOUIMkV45PxqjRYLH1sFg4/vmky95eXldf85Pj4eAGA2m6/oXGvXroXJZMLixYvdEY3lRAlihoVi0oJU0TGIyENaG4KhD12K8PgUt597xt3fQ3zGCLefl8TTXbS674W7fFwu12WfR5IkvPLKK1i+fDn0er1bsrGcKMSEG4YhPoMT2Yj8VVdbAByuxYhNG+22c2ZMugoTFtzstvORf9q+fTvOnDmD+++/323nZDlRCJVaheu+lw1DEG8vJvJXdpsWrc1zkZR99ZDPFRYTi+sf+qkbUpGvOn78OPLz89HY2IiWlhbk5+f3uXDbmjVrMGXKFIwe7b5izEXYFCQ00oh5D+Tg0xcOQ3JJouMQkQdIkgr11VOQkheGsoINV3QOjVaLhY/9ivNMFG7+/PkoLS3tfn/cuHEAzl3GuaClpQXvv//+oNdPGSyVdPGzkCLkf1WGXeuubEY2EfmO6KQqVBWug/Mybw+dveKHGH/jTR5K5RssFguKi4uRmpoKg8EgOo7fGOzXlZd1FGjsdSnImhIrOgYReVhdRQJiM5cjIDBo0J+TOWWa4osJicdyolCz7x6J6JQQ0TGIyMMaa8IRErccwZHRAx4bFhuH6x/kPBMSj+VEobR6DW58MJf77xApQHtTIDTGuxCZlNbvMXpjIBY//pvLGmUh8hSWEwULiTDg+gdGQ63mAm1E/s7aoYPFtghxmWN7fUylVmPRY79EVPLQlx0ncgeWE4VLzArH1bdniI5BRF7gtGvQ3DAbyaNn9nj82hU/wvCxEwSlkjfeM+Jeg/16spwQ8mYnI/vqeNExiMgbJBXqKicgJe8mQKXCuBsXYez1C0Snkp0Lq6d2dnYKTuJfLnw9L16dti+8lZgAAC6XhM//dgQlBfWioxCRl4y6yoVZy2dDrfbOzsa+prq6Gs3NzYiJiUFgYGD3Eu90+SRJQmdnJ8xmM0wmU/dePv1hOaFuDpsTn7yQj+ozLaKjEJGHxQwPxeKfj4NOz2LSH0mSUFNTg+bmZtFR/IbJZEJcXNyARY/lhHqwdtrx4XMH0VDZIToKEXlIWLQRS1ZNgDHEPZu0+Tun0wm73S46hs/T6XTQaAZXhllOqJeOFivef/ZbtDVYREchIjczhuiwZNUEhEUHio5C1C9OiKVegsICcNOjY7kGCpGf0Rs0WPjwGBYTkj2WE+qTKTYQCx8eA52B16OJ/IHOoMGiR8ciZlio6ChEA2I5oX7FDAvFjQ/mQq3lDHUiX6YL0GDRw2MQlxYmOgrRoLCc0CUlj4zA9T8YzYJC5KO0Aecu5cRnmERHIRo0lhMaUNrYaNz4o1xodPzrQuRLtHo1Fv4kDwmZJtFRiC4L79ahQSsvbMSGlwvgsLlERyGiAWh1aiz4SR6SRkaIjkJ02VhO6LJUnW7CZy8VwG5xio5CRP3Q6NRY8OM8JI9iMSHfxHJCl63mbAs+ffEwbF0O0VGI6Ds0WjXmP5SLlJxI0VGIrhjLCV0Rc2krPnkhH9YOFhQiuQgI1OLGB3ORmBUuOgrRkLCc0BWrr2jHJ88fQlcbl3UmEi04PAALHx6DyMRg0VGIhozlhIaksboDn76Yj/ZGq+goRIoVkRCERY+MQXC4QXQUIrdgOaEh62ixYsNfC2AubRMdhUhx4jPCMP+hPBiCuN0E+Q+WE3ILu82Jr149jrOH6kRHIVKM9HHRmPv9HK5BRH6H5YTcRpIk7PmgCIc2lYmOQuT3cmclYfodmVCpuXoz+R+WE3K7Yzsq8fXbp+By8a8WkdupgKk3p2HCDcNFJyHyGJYT8ojywkZ88fejXAuFyI30Bg3mrMhG2tho0VGIPIrlhDymsboD6186jNZ6i+goRD4vPC4QNz6Yi/C4INFRiDyO5YQ8qqvNhi//cRSVp5pFRyHyWenjo3HtvaOgN2hFRyHyCpYT8jiXS8K+j8/i4MZSgH/biAZNpVZh6uI0jJ83THQUIq9iOSGvKS6ox+a1x2Ht5DwUooEYgnW4/gc53FWYFInlhLyqtb4LX/7jKBdsI7qEmGEhuOFHuQiJ4IqvpEwsJ+R1TocLez4swuEt5bzMQ/Qdo2cm4prbMrmwGikaywkJU3KkHptfK4SlnRsHEgWF6XHtfaOQkh0pOgqRcCwnJFRHsxWbXj2OypNNoqMQCZM5MQYzlo7g/jhE57GckHCSJOHYjirs/uAM7Ban6DhEXhMQqMXMpSOQOSlWdBQiWWE5Idloa7Rg2xsnUHa8UXQUIo9Lzo7AtctHITg8QHQUItlhOSHZKdxdhV3rzvCWY/JLWr0a027NwOiZiVCpuGkfUV9YTkiWOlqs2PbmSZQU1IuOQuQ2iSPCMWvZCJhiA0VHIZI1lhOStVP7a7Dj3dO8o4d8WlCYHlfflsm5JUSDxHJCstfVZsOu98/g5L4arotCPkWtViH32iRMXpjKfXGILgPLCfmM2pJW7HzvNGrOtoiOQjSghEwTZizNQmRCsOgoRD6H5YR8zqn9NdjzYRHaG62ioxD1Ehiqx7QlGRgxJU50FCKfxXJCPslhc+LQpjIc3FgGh5Vro5B4ao0Ko2cmYvKiNAQYeQmHaChYTsindTRbseejIs5HIWFUKiBrShwmL0xFaJRRdBwiv8ByQn6htqQVu98/g6rTzaKjkFKogPRx0Zi8KA0R8UGi0xD5FZYT8itVp5uwf30JKk5wrx7ynJScSEy9OQ3RKSGioxD5JZYT8kvVRS04sKEYZce4FD65T0KmCVNuTkNChkl0FCK/xnJCfq22pBUH1hej5EiD6Cjkw+IzwjBx/nCkZEeKjkKkCCwnpAh1ZW04sKEEZw/XceIsDYparUL6hBiMmZOM2OGhouMQKQrLCSlKQ2U7CrZV4NQ3tbwFmfoUEKhF9jUJyJudhOBwg+g4RIrEckKKZO1y4MSeahzdXonm2k7RcUgGwqKNyLs2GaOmxUMXoBEdh0jRWE5I8cpPNOLotkoUF9RDcvHbQWkSMk0YMycZqXlRUKlVouMQEVhOiLq1N1lwbEcVju+sQmerTXQc8qDAUD1GTI3DqGnxCI/jGiVEcsNyQvQdTqcLxfn1OH2gFqVHG+C0u0RHIjdQa1UYPjoKI6fFY1hOBNQatehIRNQPlhOiS7B1OXD2cB1O7zejorARLl728S0qID49DFmT45AxIQaGIJ3oREQ0CCwnRINkabej6JAZp/fXoup0M/idI1MqIHZ4KFLHRCFzYiz3uyHyQSwnRFego8WKMwfMKDpkRu3ZVo6oCKYN0CB5ZDiG50VheG4UAkP1oiMR0RCwnBANka3LgYqTTSg/3oiy4w1orbeIjqQIweEBGJ4bheF5UUgcYYJWx9t/ifwFywmRmzWbO88XlUZUnmyCnYu9uYU2QIO41FAkZpkwLDcK0cncdI/IX7GcEHmQ0+lCTVELKk42wVzcitrSVlg7HKJj+YTAUD3i08MQn2FCfEYYopKCeYcNkUKwnBB5WbO5E+aSVtSWtMJc0oq68nberqwCwmMDEZcehvj0c2XEFBMoOhURCcJyQiSYy+lCQ2XHubJS2oqm6g401XTC2umfIyzBEQGITAhGRHwQIhLOvYXHB0Gn55wRIjqH5YRIpjpbbWiuPVdUWsxdaKnvQmt9F1rqumC3yHgeiwowBusQZApAsCkAYTGB3SUkIj4IeoNWdEIikjmWEyIf1NVuQ3uTFZY2O7rabei68N92e6/HrJ0OYAjf5WqtCjq9BroADbTn/6sL0CDIFNBdQIK63/QICguARsu5IUR05VhOiPyc5JLgckpwOl1wOaWL3i5633Xuzyr1RUUkQAOdXs1JqETkdSwnREREJCv8JxERERHJCssJERERyQrLCREREckKywkRERHJCssJERERyQrLCREREckKywkRERHJCssJERERyQrLCREREckKywkRERHJCssJERERyQrLCREREckKywkRERHJCssJERERyQrLCREREckKywkRERHJCssJERERyQrLCREREckKywkRERHJCssJERERyQrLCREREckKywkRERHJCssJERERyQrLCREREckKywkRERHJyv8Pp5Xtze8RaaUAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAicAAAGZCAYAAABSeJFFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA+NElEQVR4nO3deXxU5aE+8OfMkplM9n3fSQgJSdhBVDbBBXAXBKyKVq2trb22XG9be3uly++2l1q1tWoXlG5udV9BXEBkFSEsSSBA9n3fJpnMdn5/UFJiEsg67zlznu/nk0/IzMmZZ0KSefKe97xHkmVZBhEREZFC6EQHICIiIjofywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCdFF/PSnP0VWVhbcbnffbZIkYcuWLX0fb9myBZIk4eDBg323Pfroo5AkCU1NTRfc/49//GOsXLkScXFxkCQJ69evH3S79evXQ5KkvjcfHx+kpaVhw4YN6OjoGLD9X//6V6xZswaTJ0+GTqdDcnLyoPs9l300ysrKIEkSduzYMeC+rVu3YsWKFYiIiIDJZEJCQgLuvPNOFBYWDtj23NdqsLennnqqb7uhtgkPD++3r/Ofq8PhQFpaGp544olRPUci8jyD6ABESlZTU4P/+7//w5YtW6DTTUyXf/zxx5Gbm4vrrrsOzz333AW39fX1xSeffAIAaGtrw6uvvorHHnsMR48exYcffthv27/97W+oq6vDnDlz4Ha74XA4JiT/YB5++GFs2rQJV199NZ5++mlERUWhuLgYv/nNbzBjxgy88MILuOmmmwZ83tatWxEUFNTvtpSUlH4f33LLLfj+97/f7zaj0ThkFqPRiJ/85Cd46KGHcPvttyMsLGwMz4yIPIHlhOgCnnzySQQHBw/6QjpeOjs7+4rP3/72twtuq9PpMG/evL6Pr776apSUlGD79u0oLS3t90K+bdu2vv2uXLkSx48fn4D0A7344ovYtGkTvvnNb+Lpp5/uu33BggVYu3YtFi5ciNtvvx3Tpk1Dampqv8+dOXNmv1GQwURFRfX7GgzH2rVr8b3vfQ9/+MMf8KMf/WhEn0tEnsfDOkRDsNvt2Lx5M9atWzdhoyYAxrzvWbNmAQDq6+vHdb+j9Ytf/AIhISH49a9/PeA+Pz8//O53v0N3dzcef/xxj2Xy8fHBrbfeij/+8Y/gtU6JlI/lhGgI+/fvR3NzMxYvXjzgPlmWh5wb4mmlpaUwGAwDRiGGa/369aN+wU5OToYsy1i0aBEAoLa2FgUFBbjyyithsVgG/ZxLLrkEkZGR2L59+4D7XC4XnE5n35vL5RqwjSzL/bZxOp398j/66KMoKysb8HmLFi1CeXm5x0aQiGj0WE6IhrB3714AwIwZMwQn6e/cC3JzczOeffZZvP7663j44YcRGRkpOhoqKioADJwn8lUpKSl9254vOjoaRqOx7y0pKWnANk8//XS/bYxGIzZv3nzRbOf+H3fv3j2cp0JEAnHOCdEQampqBpwJIprVah0w+XPt2rX4xS9+ISjR6MiyPOgZQh999FG/CbE+Pj4Dtlm9ejX+8z//s99tQ52JdL5z5a26unqEaYnI01hOiIbQ09MDo9EIvV4vOkofX19ffPbZZwCAuro6PPbYY3jxxReRm5uLH/zgB4LTAYmJiQDOHmq6kPLyciQkJAy4PS8v76JlMCIiom+ezUiYzWYAZ/9fiUjZeFiHaAjh4eGw2+2wWq2io/TR6XSYNWsWZs2ahZUrV2Lr1q3Izs7Gxo0bUVlZKToeYmJikJ2djQ8//BDd3d2DbrN3717U19dj2bJlHs3W0tICAIoaCSOiwbGcEA0hMzMTAHDmzBnBSYZmMpnw+9//HjabDT//+c9FxwEAPPLII2htbcWGDRsG3Ge1WvHggw/CYrHgoYce8miukpISAEBWVpZHH5eIRo6HdYiGcO4MlH379iE3N3fU+3nnnXcQEBAw4PZbbrkFALBz5040NjYCOHu2Snl5OV599VUAwMKFCxEREXHB/S9cuBDLly/H888/jx/84Ad9k1ELCwv7VmOtq6tDd3d3336zsrIu+CK9ZcsW3HXXXXj++edHfFbS2rVrcejQIfz6179GWVkZ7r77bkRFReHkyZN4/PHHcebMGbzwwgujPrtotPbt2we9Xo8FCxZ49HGJaORYToiGkJCQgMsvvxxvvfUW7rvvvlHv5+677x709nOnv/7P//wPdu7c2Xf7jh07+paD//TTT/tK0oX86le/wtatW/Gzn/2sb5XZV155BRs3buy33apVq/oe89FHHx1yf11dXQDOHqYZjU2bNmHJkiV46qmncP/996OjowORkZFYsmQJ/vnPfwoZvXjzzTexfPlyBAcHe/yxiWhkJJkrEhEN6bXXXsOtt96K8vJyxMXFiY7jMatXr0ZpaSm++OIL0VHGxZkzZ5Ceno5t27Z5fK4LEY0cywnRBciyjPnz52PmzJn9LkDnzWRZRlRUFP7+97/jyiuvFB1nXNx1112oqqoadOE3IlIeHtYhugBJkvCnP/0Jb7/9Ntxut7Al4T1JkiQ0NDSIjjFunE4n0tLS8MMf/lB0FCIaJo6cEBERkaJ4/5+BREREpCosJ0RERKQoLCdERESkKCwnREREpCgsJ0RERKQoLCdERESkKCwnREREpCgsJ0RERKQoLCdERESkKCwnREREpCgsJ0RERKQoLCdERESkKCwnREREpCgsJ0RERKQoLCdERESkKCwnREREpCgsJ0RERKQoLCdERESkKCwnREREpCgsJ0RERKQoBtEBiGhsZLeM7g47bFYHenucsHc7z77vcaL33L+7HX23uZwyZLcMWZbhdp/9fHvnC9DpdJD+9abT6SDp9TAYjfANCITZ3x9m/0D4BgSc9z7g7H0BATD6mER/GYjIi7CcECmc2y2jq9WGzmYbOlvOvu9o/tfHzT3oau2F2yWP6TFsrafG9PkGow/MAQGwBAYjOCoaIbFxCImJQ3B0LEJiYmEJDBrT/olIWyRZlsf2W42IxoUsy2hv6EFTVReaKjvRVN2FlhorrK29cLsn9sfU1vqbCd2/2T8AIf8qKsExsQiJOVteQmPiYDSbJ/SxiUh9WE6IBHA6XGiutp4tIVVdaKrsQnN1Fxy9LiF5JrqcDEmSEBaXgNiMTMRkZCI2fQpC4+IhSZKYPESkCCwnRB5g73Gi5nQbqk+2orq4DU1VXZAneDRkJISVk0GY/fwRkz75bFnJmIKYSRnw8bWIjkVEHsRyQjQB7DYnak61obq4DTXFrWisVFYZ+SollZOvkiQdwhMSETt5CmInZyE5bwbnsBB5OZYTonHgdsuoPd2G8uPNqD6p/DLyVUouJ18lSTpEp2cgbcYcpM2cg/DEZNGRiGicsZwQjZLL4UZlUQtK8htRerQJti6H6EijpqZy8lVBkVFInTkHaTPmIj5rKvQGnoRIpHYsJ0QjYLc5UX68GSWHG1Fe0AyHTcwE1vGm5nJyPh9fC5LzZiBt5hykzJgNX/8A0ZGIaBRYToguorfHiTOHGlByuBFVJ1rhcrpFRxp33lJOzifpdIifMhXZC69AxrxLYTTxlGUitWA5IRpCdXErinbX4syhBjgd3ldIzueN5eR8Pr4WZM5fgKmLlyEmfbLoOER0ESwnROextvXixL5aFO2uRXtjj+g4HuPt5eR8YfGJmLpoKbIWLIElKFh0HCIaBMsJaZ7b5UbZsWYU7a5BeUGLqs6yGS9aKifn6PQGpM6YhamLlyFl+izodHrRkYjoX1hOSLOs7b04+mkVivbUoqfDLjqOUFosJ+fzCwlF1oIlmHblCgSGR4iOQ6R5LCekOa11Vhz+sAInD9TB7eS3P8Byco5Ob8CUyxZh9vU3IywuQXQcIs1iOSHNqDndhsMfVqDsWBPA7/p+WE6+QpIwadZczLlhFWImcQItkaexnJBXk90ySo804fD2ctSVdIiOo1gsJ0NLyM7FnOtvQXLeDNFRiDSD5YS8ksvlxok9tcj/qBJt9d2i4ygey8nFRaakYc71q5Axdz4knU50HCKvxnJCXsXtllG8vw5fvFeKjiab6DiqwXIyfCExsZh17c3IXngFl8onmiAsJ+QVZFnGmUONOPBOCVrrOFIyUiwnIxcSE4vLb7sL6bMvER2FyOuwnJDqVZ9sxZ7XT6OhvFN0FNViORm9hKwcLLzjHkSlpImOQuQ1WE5ItVpqrNj7xmmUHWsWHUX1WE7GRpJ0yFqwGJetuQP+oWGi4xCpHssJqU5Ppx373i5B0e5aTa7mOhFYTsaHwWTC7GtvwuzrbuaFBonGgOWEVEOWZRR+XoO9b55Br9UpOo5XYTkZX/4hobh0zR3IXngFJEkSHYdIdVhOSBWaq7uw4x8nUVfSLjqKV2I5mRiRKWlYdMc9SMjKER2FSFVYTkjRHHYXvninFEc+roSbh3AmDMvJxMpeuBSL7rgHZn9/0VGIVIHlhBSr7GgTPnupGJ0tXK9korGcTDxLUDCuuPt+ZMy7THQUIsVjOSHF6Wq1YdfLp1CS3yg6imawnHjOpNnzcMXXvwX/kFDRUYgUi+WEFKVoTw12vXIKDptLdBRNYTnxLJOfHxbfeR+yF14hOgqRIrGckCLYrA7s+PsJnDnM0RIRWE7ESJs1D1fe921YgoJFRyFSFJYTEq7yRAs+3lIEa1uv6CiaxXIijm9gEJbd8wDS584XHYVIMVhOSBiXw429b53BkY8rAX4XCsVyIl7mpQux9J4HYLJYREchEo7lhIRorunC9s2FaK7uEh2FwHKiFCExsbj2ez9CRGKy6ChEQrGckMcd/bQSe14/A5fDLToK/QvLiXIYTCYsu+cBZC1YIjoKkTAsJ+QxdpsTHz1fiNIjTaKj0FewnChP3rJrsHj9fdAbjKKjEHkcywl5RFt9N95/5iha67pFR6FBsJwoU/SkDFz70A8RGB4hOgqRR7Gc0IQrO9aE7c8Vwt7Di/UpFcuJcvkGBGL5dzYgOW+G6ChEHsNyQhPq4AdlOPB2CfhdpmwsJ8omSTpcsmot5t20hlc5Jk1gOaEJ4eh14eO/FOLMIS6qpgYsJ+qQMn0Wln97Ay8gSF6P5YTGXXtjDz549iiaq62io9AwsZyoR1BUNG76wUaExsaJjkI0YXSiA5B3qTrZin/+8gsWE6IJ0l5fh5d+8p+oPX1SdBSiCcNyQuPm9JcNeOd3+ei1cuIr0UTq6ezAP3/6CEoPHxQdhWhCsJzQuDi2owof/vk43E4eJSTyBEevDW9u+hkKdn4sOgrRuGM5oTHb/04JPnupmGfkEHmY2+XC1qcfx/43/yk6CtG4YjmhUZPdMna8cBIH3ysTHYVI0z5/8S/4ZMsfILt5SQjyDiwnNCouhxvb/nQcBZ9Vi45CRAAOf/AO3v3tJricDtFRiMbMIDoAqY+9x4n3nz2K6pNtoqMQ0XmK9+5CT0c7rt/wY5gsFtFxiEaNIyc0IrYuB974zSEWEyKFqiw4ipc3/gDdHe2ioxCNGssJDVtvtwNv/zYfTZVdoqMQ0QU0lpXgtV/8BDYrf1ZJnVhOaFjsNife+d0RNFZ0io5CRMPQUHYGr//v/8Bu6xEdhWjEWE7oohy9Lrz71BHUl3aIjkJEI1B76iTe+NVGOOy9oqMQjQjLCV2Q0+7Ce08fQe1pHr8mUqOqwuN4+9e/4Fk8pCosJzQkl8ON9589xsmvRCpXduQQ3nn8V3C7XKKjEA0LywkNyuVyY+sfj6GysEV0FCIaB2cO7sP7v/s1F2ojVWA5oQHcLjc+/HMByo41i45CROPo5N5d2PbsbyHzWhOkcCwnNMDOl4pRcrhRdAwimgAFOz/Cx889KzoG0QWxnFA/hz+sQOGuGtExiGgCHfnwPXz+0t9ExyAaEssJ9TlzuAF73jgtOgYRecD+N15G0a5PRccgGhTLCQEA6ks78NFzhQAPRRNpxod/+B1qT50UHYNoAJYTQkdzD9575iicDs7iJ9ISp8OOt379c3Q2N4mOQtQPy4nG9fY48d7vj6Knwy46ChEJYG1rxZubfgZHr010FKI+LCca5na5se2Px9BSYxUdhYgEaig9g61PP8FTjEkxWE40bOdLxagsahUdg4gUoHjf59j76ouiYxABYDnRrMLdNTxlmIj62fvaiyje97noGEQsJ1rUXN2FXS8Vi45BREojy/jg6cdRX3pGdBLSOJYTjbHbnNj6x+M8M4eIBuXs7cWbm34GaxsP+ZI4LCcas+PvJ9BW3y06BhEpWFdzE7Y+/TgnyJIwLCcacnxnFU4dbBAdg4hUoOzIIRx6/23RMUijWE40orGiE5//k0vTE9Hw7XpxCxrLS0XHIA1iOdGA3h4ntv7xGFxOzjMhouFzORx477eb4LRzkUbyLJYTDfjkr0XoaOLqj0Q0cs1VFdj59+dExyCNYTnxcgW7qlFyuFF0DCJSsfxt76Lk0BeiY5CGsJx4sY6mHux+lfNMiGjstj37JE8vJo9hOfFSsizj478UwdHrEh2FiLxAd3sbtj3zhOgYpBEsJ17q6CdVqDnVJjoGEXmR0vwvceiDd0THIA1gOfFCbfXd2Pcml58movG36x/Po6myXHQM8nIsJ15GlmV8+vcTXJ6eiCaE02HH9j8+xdVjaUKxnHiZgl01PJxDRBOqprgIx3dsFx2DvBjLiRfparVh7+s8O4eIJt6uf2xBT1en6BjkpVhOvMjOF4tht/HsHCKaeD2dHfj8xb+IjkFeiuXES5Qda0LZ0SbRMYhIQ459/CFqT58UHYO8EMuJF3C53FxsjYg8Tpbd+HjzM5DdnIBP44vlxAsc/aQKbfXdomMQkQbVl5xG/vb3RccgL8NyonLdHXYcfL9MdAwi0rDdL/8N3e1tomOQF2E5Ubn9b52BvccpOgYRaViv1corF9O4YjlRscaKThTtqRUdg4gIhZ99gqrC46JjkJdgOVGxXa8Ug4s0EpFSfPL8s1w5lsYFy4lKnTpYj9rT7aJjEBH1aawoQ/G+z0XHIC/AcqJCTocLe7gSLBEp0J5/vsBTi2nMWE5UqPDzGnS19IqOQUQ0QEt1JYp27xQdg1SO5URlXA43Dm3l5cqJSLn2vvoC3C5eSoNGj+VEZQo+r4a13S46BhHRkNrqalH42SeiY5CKsZyoiMvhxqFtFaJjEBFd1N7XXoLLyTWYaHRYTlSk4PMaWNs414SIlK+jsR7HP90uOgapFMuJSpwdNeFcEyJSj31vvAynwyE6BqkQy4lKFO7mqAkRqUtXcxOOfrRVdAxSIZYTFXA5OWpCROp04M1X4LDzDysaGZYTFSjaXYOuVv5wE5H6WNtacezjbaJjkMqwnCicLMs4/FGl6BhERKN2+IN3uGosjQjLicKVH29GR2OP6BhERKPWVl+LM4e+EB2DVITlROGO7agSHYGIaMwOvf+W6AikIiwnCtZW342KwhbRMYiIxqyy4CgaK8pExyCVYDlRsGM7qwBZdAoiovHB0RMaLpYThbLbnDixt050DCKicXNi92ewdXWJjkEqwHKiUMX762Dv4XUpiMh7OO29KNj5kegYpAIsJwp1dEe16AhEROPuCFeMpWFgOVGgyhMtaK21io5BRDTuWmuqUHH8qOgYpHAsJwpU8BlHTYjIex3Z/r7oCKRwLCcK09vjRNnRZtExiIgmzOkv9qG7vU10DFIwlhOFOXOoAS4nl3kmIu/ldjlxct/nomOQgrGcKEzxgXrREYiIJlzxXpYTGhrLiYJY23pRU9wqOgYR0YSrPlGIrhYewqbBsZwoyKmD9ZC5IiwRaYAsu1G8f7foGKRQLCcKwkM6RKQlJ3loh4bAcqIQrXVWNFZ0io5BROQxNcVF6GxuEh2DFIjlRCGKv+CoCRFpjCyjmGft0CBYThTiFA/pEJEGndy7S3QEUiCWEwVoqupEe2OP6BhERB5Xe+okOhobRMcghWE5UYDy4zydjoi0iwuy0VexnChARUGL6AhERMIU89AOfQXLiWC9PU7UnWkXHYOISJi6M6fQ0dQoOgYpCMuJYFVFLXC7ufIaEWlbxfEjoiOQgrCcCFZewPkmRESVLCd0HpYTwTjfhIgIqCg8JjoCKYhBdAAta6rqgrWtV3QMIrqIPafLsfdMOVqsZ0/5jw7yx9KsdEyJiQQAbHjlvUE/b0VuJhZnpg1637GqWnxcdAZNXVa43DIiAvywMCMFM5Pj+7Y5VF6N946egN3lwpyUBFybN6XvvhZrN/648wD+Y9mlMBuN4/VUhelqbkJLTTVCY+NERyEFYDkRqIKHdIhUIchixvLcTIT7WwAAB8uqsGX3QTy07HJEBwXgJ9de0W/7E3WN+OcXR5EbHzPkPn19fHDFlEmIDPSDXqdDUU0DXv7iKPzNJkyOjoC1145XDh7Fmtl5CPW3YPOuL5AWEYqs2CgAwGtfHseK3MleUUzOqSw4wnJCAHhYRyiub0KkDtmxUZgSE4mIAH9EBPjjmpxM+BgMKG9uBQAE+pr7vRVU1yMtMgxh/yozg5kUGYac+GhEBQYg3N8Pl2ekICYoAKWNZw/1Nnd1w9doxLTEWCSGBmNSZBjqO7oAnB1RMeh0yLlA+VGjiuNHRUcghWA5EcTlcKOulKcQE6mN2y3jcEUN7E4XksJCBtzfaetFUW0D5qQkDHufsizjVH0TGjqtSI0IBQCEB/jB7nShurUd3b12VLa0ITY4EN29dmwrKMaNM7LH7TkpRWXhMcgyz14kHtYRpqGiE24nfwiJ1KK2rQO/+2QPnC43fAx6rL90JqKDAgZsd7CsCiajATnx0RfdZ4/dgZ+9+zGcLjd0koSbZkxFRnQEAMDiY8SaOXl48cAROFwuzEyKx+ToCLx84Agum5SMZms3nvv8IFxuN67MzkBegvpHUXo62tFUUYaIpBTRUUgwlhNB6ko4akKkJhEB/vjessvR43DgWFUdXjpwBN9cNG9AQTlQWokZibEw6vUX3afJaMD3ll2OXqcTpxqa8faRQoT6WzApMgwAkBMf3a/knG5oRm17J26cMRW/fP9T3DZvOgLMJvz2491IjQhFgNk0vk9agIrjR1lOiId1RKnnIR0iVTHodQgP8ENCaDCW52YiNigAn58q67dNSWMLGjutmJuaOKx96iQJ4QF+iAsJwqLJqciNj8EnRacH3dbpcuH1Q8dxy6ycs2f4yDLSIsMQGeiPcH8/VLS0jfEZKkNFAdc7IZYTYepKOkRHIKIxkAE43e5+tx0orUR8SBBigwNHvdev7vOc7YWnkRkdgfiQIMiyDPd5czPcsuw1czWqiwrgdrtExyDBWE4E6Gq1cX0TIhV5/+gJlDS2oMXajdq2Dnxw7ATONDZjRmJs3zY2hwNHKmuHnAj74v58vH/0RN/HHxedRnFdI5q7utHQ0YWdJ0twsKwaM5MGnkpb196JI5U1uGpqBgAgMsAfEoD9JRUorKlHQ0cXEkKCx/U5i9LbbUVTRbnoGCQY55wIwFETInXp6u3Fi/vz0WHrhdloQGxQAO69fE7f5FUAyK+oBSBj+nmF5Xyt3T2QJKnvY7vz7GGath4bjHo9IgP8sG7uNEz7yufLsoxXDx7DddOyYDKc/ZVtNOixZk4eXj9UAJfbjRtnZCPIYh7/Jy5IY3kpIpNTRccggSTZW8YCVeTzV0/hyEeVomMQ9bG1/kZ0BKI+M1fcgEV33CM6BgnEwzoC1PNMHSKiITVWlImOQIKxnHiYy+lGY0WX6BhERIrVWF4qOgIJxnLiYS21Vricg8/GJyKis4uxWdtaRccggVhOPKy1zio6AhGR4nH0RNtYTjysta5bdAQiIsVjOdE2lhMPa2M5ISK6KE6K1TaWEw/jyAkR0cU1ceRE01hOPEh2y2hvYDkhIrqY5uoquJxO0TFIEJYTD+psscHp4Jk6REQX43Y50VLNxSq1iuXEg3hIh4ho+JqrKkRHIEFYTjyIpxETEQ1fZ0uz6AgkCMuJB7XWc+SEiGi4ulhONIvlxIM4GZaIaPhYTrSL5cSDulp7RUcgIlKNzpYm0RFIEJYTD7K220VHICJSDY6caBfLiYf09jjh7HWJjkFEpBrW1lbIsiw6BgnAcuIh1jYe0iEiGgm3y4nu9jbRMUgAlhMPsbaznBARjRQP7WgTy4mH9HRyvgkR0UhxrRNtYjnxkJ4Oh+gIRESqw5ETbWI58ZCeLo6cEBGNFMuJNrGceEhPJ0dOiIhGqquV5USLWE48xNbFckJENFKOXp5MoEUsJx7i6HWKjkBEpDouBw+JaxHLiYc4HW7REYiIVMdpZznRIpYTD3GxnBARjRjLiTaxnHiIy8lyQkQ0Ujyso00sJx7CwzpERCPHkRNtYjnxEB7WISIaOSdHTjSJ5cRDOHJCRDRyHDnRJpYTD+HICRHRyDkdXCNKi1hOPITlhIho5Jx2LsKmRSwnHuB2y3C7ZdExiIhUx2XnyIkWsZwQEWInzxIdgWhQsuyGy8kVtrWG5cQDdDoJkk4SHYNoSC2NlyMuc47oGESD0un1oiOQh7GceIjewHJCCiZLaK6/FHFTLhGdhKgfg9EHksTfn1rDcuIheiO/1KR0Eprr5iE+6zLRQYj6GEwm0RFIAL5ieojBwC81qYGExtrZSMheKDoIEQDAaDKLjkAC8BXTQzhyQmohQUJjzUwkTF0iOgoRR040iq+YHqLnyAmpTGP1NCTmLBMdgzTO6MNyokV8xfQQjpyQGjVU5SAx9yrRMUjDOHKiTXzF9BCOnJBaNVRmIzF3uegYpFFGlhNN4iumhxg4ckIq1lCZicS8laJjkAaxnGgTXzE9xGDiIkKkbg0VGUjMvUF0DNIYA+ecaBLLiYf4BviIjkA0Zg2VqUjMvQngoljkIUYzTyXWIpYTD7EEspyQd2ioTEZizs0sKOQRPFtHm1hOPMTCkRPyIg2ViUicugqSxF8hNLHMAQGiI5AA/M3iIRw5IW/TUBWP+KmrIen4a4QmTkBYhOgIJAB/q3gIywl5o8aqWMRlreFVY2nCBISFi45AArCceIgvywl5qabqaMROWQu9wSA6CnkhjpxoE8uJh3DkhLxZU3Ukoievg95oFB2FvExAOEdOtIjlxEPMfkboDDy7gbxXc004otLXweDDIk7jwxwQyLN1NIrlxIN4xg55u5baMESmreNl7mlccL6JdrGceBAP7ZAWtNSFIjxlHYxmX9FRSOVYTrSL5cSDgiItoiMQeURrfTDCktbBx5ff8zR6geGcDKtVLCceFBzFX9SkHW0NQQiJvw0mP3/RUUileKaOdrGceFBINMsJaUt7UwCCYtbB7B8oOgqpEA/raBfLiQdx5IS0qKPZHwFRa+EbGCw6CqkMy4l2sZx4UHCUBeDZxKRBnS1+8A9fA0twqOgopCJBkdGiI5AgLCceZPTRwz+E5+yTNnW2WuAbfCv8QvjXMF2cyc+PIycaxnLiYSHRfqIjEAljbfeFOWg1/DnRkS4iPCFJdAQSiOXEwzjvhLTO2m6G0W8VAsOjREchBQtPSBYdgQRiOfGwEJYTIvR0mqHzXYWgyFjRUUihwhOTRUcggVhOPIynExOdZevygeRzE4Kj4kVHIQUKT+RhHS1jOfGw8IQA0RGIFMNm9YFsuBEhMYmio5CSSBIiOHKiaSwnHmb2MyIoktccITqnt9sIp3Q9QuNSREchhQiOiobJwpMHtIzlRIDolCDREYgUxdFjhNN9LcIS0kRHIQWISk0XHYEEM4gOoEVRKYE4ub9OdIxx02ZtxFv7/oSCygNwuOyIDIrHbQs3IDEiAy6XE+988RwKKg+guaMWZh8/ZMbNwHVz70Gw39BrGDzx9vdwuvbIgNuzE+fim9f8PwDAF6c+wlv7/wy704ZLJl+DGy/5Rt92zZ11eOq9h/HwTc/A14d/gamB3WaA7LMC4YkfoKnilOg4JFB06iTREUgwlhMBolO9Z+Sku7cTv3nzu0iPnYZvLf8lAnyD0dReA1+fsxd7szttqGw6hWtmfA1xYWno7u3Ea3uexh+2/jf+6+ZnhtzvvVc+Cpfb2fex1daB/331XkxPXQAA6Oppxws7H8PXFj2M8MAYPPPBI0iPzcPUpHkAgJd3PYHr59zLYqIyDrsBsrwcEcnb0Fh2QnQcEiQqjSMnWsdyIkBYnB8MRh2cDrfoKGO2Pf8lhPhH4PbFD/fdFhbw7yWnfU3++M7KTf0+Z9Wl38amNx5AS2c9QgMGX+vCz9z/QnFfnv4UPgYzpqcuBAA0dZ4dhZk5aTEAICN2GupayzE1aR6+OPUx9DojpqVePi7PkTzL6dCju/sqRKbq0FBSKDoOeZokISqFh/e0jnNOBNDpdYhI8o6zdo6V7UFixGRs3r4RP/jLzfjlq9/A7qL3Lvg5PXYrJEjwNfkP+3H2nPwAM9IWw2Q8O5k4MigODmcvKptOwWrrQHnjScSGpcJq68B7B7dg9WXfGdPzIrFcDj26Oq9EVFqO6CjkYaGx8fDx5ZILWseRE0GiUoJQe7pddIwxa+qsxa7Ct7Ek5xZcOX0dyhtO4NXdT8GgN2JuxpUDtnc47Xhr/58xa9KSYR9yKWs4gdqWUty2cEPfbRZTAG5f/F/466e/gsPZizkZy5CVMBt/37EJC6fegOaOOvxh63/D5XZi+aw7+kZcSD3cTh06269AdLoedafyRcchD0mcmic6AikAy4kgUcmBF99IBWRZRmJEBq6bew8AICE8HbWt5dhV8PaAcuJyOfH8xz+DDDdWX/7dYT/G3hPvIyY0BcmRmf1uz0u5DHkpl/V9XFyTj5qWUqy+9Dt49KU7cNcVjyDQEopNbzyASTG5CPANGcMzJRHcLh3aWxYhJkOP2uIvRcchD0jKmSY6AikAD+sI4i2TYgMtoYgO6b+SY3RwIlq7Gvrd5nI5sfmjn6K5ow7fXvF/wx41sTts+PLMDszPvOaC2zlcdryy60msvfw/0NhRDbfbhfTYPEQFJyAyKB5l9UUje2KkGLJbh7amBYjNnC06Ck0wSadDQnau6BikACwngviHmBAUof7F2FKjp6KhrbLfbQ3tVf0mup4rJo3t1fj2yk3wNw+/mB0q2QGny47Z6UsvuN3WL/+OrMQ5SIjIgFt2wy27/v34bifcsvonH2uZLEtoabgMcVPmiY5CEyg6LR0mC+ebEMuJUIlTw0RHGLMlOTejtKEI2w79A43t1fji1MfYXfQeFmRfDwBwuV348/aNqGgsxp1X/Aiy7EZHdws6ulvgdDn69vPXT36Jt/b/ecD+9574ALnJl16w0NS2lOHQmR1YMWs9ACAqOBGSJGHPifdxvHwf6tsqkBQ5eXyfOHmeLKG57hLEZ10qOglNEB7SoXM450SgxKxQHPu0SnSMMUmKzMS9V27E2wc244NDf0NYQAxunv+tvpGONmsjjpXvAQD88tX7+n3ug9c+hozYaQCAlq4GSJLU7/76tkqcqTuOB1b8asjHl2UZL372G9w0/5t9Z/L4GEz42qKH8crnv4XT5cDqS7+DYL+I8XrKJJSExto5SMjWo7LgM9FhaJwl5UwXHYEUQpJlWRYdQqucdhf+/P1dcHnBeidEnhYRdxiVxz8VHYPGidFkxgPPvQS9gX8zEw/rCGXw0SM2PVh0DCJVaqyejsScC89FIvWIn5LNYkJ9WE4ES8wKFR2BSLUaqnKRmDtwPR1Sn0TON6HzsJwIluQFk2KJRGqonIrE3Aufak7Kl5TL+Sb0bywngoVE+yEgzCw6BpGqNVROQWLuStExaJQsQcGISEwWHYMUhOVEARKzOXpCNFYNlRlIzLtedAwaheS8GaIjkMKwnChAUjbnnRCNh4aKNCTm3gh85bR0UrbJ83kFceqP5UQBEqaEwmjWi45B5BUaKlOQmHMzC4pKmAMCub4JDcByogAGHz1S87hIGNF4aahMRELOKkgSf8UpXcbc+TyFmAbgT65CpM+OuvhGRDRsjZXxiJ+6GpKOv+aULHP+AtERSIH4U6sQCVNC4BtgFB2DyKs0VsUiPnsNdHoeNlUi/5BQxE+ZKjoGKRDLiULo9DqkzYgUHYPI6zRWRSN2yloeOlCgyfMv58gWDYrfFQrCQztEE6OpOhIxk9dCb+TopJJkzl8oOgIpFMuJgsSkBSEglAuyEU2EppoIRKevg8HHR3QUAhAcFYPoSRmiY5BCsZwoiCRJSJ/NQztEE6W5NgwRabfB4GMSHUXzJnMiLF0Ay4nCpM+OFh2ByKu11oUgIvU2GM0cpRQp81KWExoay4nChMf7IzTWT3QMIq/WWh+MsKTb4ONrER1Fk8ITkxGekCQ6BikYy4kCZV0WKzoCkddrawhCSMI6mPz8RUfRnJzFy0RHIIVjOVGgzEtiYPDhfw3RRGtvDERQ7FqY/QNER9EMH19fZC9iOaEL4yugApl8DTytmMhDOpoCEBi9Fr4BQaKjaELWgitgsvBwGl0YVyVSqKkL4lC0u1Z0DCJN6Gj2h3/EWki6l9Hd3io6jveSJEy/+lrRKUbM5XLB4XCIjqF6RqMR+mGu1sxyolCRSYGITA5EQ1mH6ChEmtDVaoFf6BpIuldgbW0WHccrpeTNQGhsnOgYwybLMurq6tDW1iY6itcIDg5GdHQ0pItcNZzlRMFyF8fjo+cLRccg0gxrmy/8glZDkl5FV0uj6DheZ/o114mOMCLniklkZCQsFstFX1BpaLIso7u7Gw0NDQCAmJiYC27PcqJgk2ZFYs/rp9HdbhcdhUgzrO2+sASsRoDuVXQ21YuO4zVCYuORnDdDdIxhc7lcfcUkLCxMdByv4OvrCwBoaGhAZGTkBQ/xcEKsgun1OkxdoJ4hUCJv0d1pgsFyC4IiL/zXHQ3f9KtXqmrk4dwcEwsn746rc1/Pi83hYTlRuOzL46A38L+JyNN6Ok2QfG5GUBT/QBgrk8UP2QuvEB1jVNRUqNRguF9PvuopnCXQB5PncUl7IhFsVh/AcCNCYhJFR1G17EVL4WP2FR2DVITlRAVmXp0EnY7tnUiE3m4fuHADQuOSRUdRJUnSqfL0YRKLE2JVIDDcF5PnRaNoD9c9IRLBbjMA5usQFv8umqtKRMdRlUlz5iE4yrtGf39//ycefbwHnl0yrvsrKytDSkoKDh8+jGnTpo3rvscLR05UYuY1yRw9IRLIbjPA7liJ8MR00VFUQ5J0uHT110TH0BRJki74tn79+mHtx2azYf369cjJyYHBYMANN9wwobm/iuVEJYIifJHBuSdEQjnsBthsyxGRNFl0FFXIvGwhwuI5X8eTamtr+96eeOIJBAYG9rvtySefHNZ+XC4XfH198eCDD2Lp0qUTnHoglhMVmXUN554QieZ06NHdczUiU7JER1E0nd6A+atuEx1Dc6Kjo/vegoKCIEnSgNvOKSkpweLFi2GxWJCXl4e9e/f23efn54dnnnkG9957L6KjPf+HMcuJigRFWJAxhxcEJBLN5dDD2rUMUWlTRUdRrKmLl3rdXBNv88gjj2DDhg3Iz89HRkYG1q5dC6fTKToWAJYT1Zm5PBkSR0+IhHM59ehsX4roSXmioyiOweiDeTevER2DLmLDhg1YsWIFMjIysHHjRpSXl+P06dOiYwFgOVGd4EgLMmZz9IRICdwuHdrbFiMmQz3LsntC3pXXICA0XHQMuojc3Ny+f5+71s25a9+IxnKiQrOW88wdIqWQXTq0NS1E7OTZoqMogtHsizk3rBYdg4bBaDT2/fvcyq1ut1tUnH5YTlQoOMqCqYu4pDaRUsiyhJbGyxCXOVd0FOFmLr8OlsCgi29IdAEsJyo1Z2UKzP7Gi29IRJ4hS2iun4+4KfNFJxHG7OePWdfeJDoGjZPCwkLk5+ejpaUF7e3tyM/PR35+vkcemyvEqpTJYsTca1Ow88Vi0VGIqI+Eprq5iM/Wo6pgl+gwHjfr2ptgsviJjjHhxnvFVqVavnw5ysvL+z6ePn06AECW5Ql/bEn2xKPQhHC7ZbzyiwNorraKjkJE55EhIzLuMCqP7xAdxWMCIyKx/rGnYTSZRUcZFzabDaWlpUhJSYHZ7B3PSQmG+3XlYR0V0+kkXLaKS2kTKY0ECY3VM5CYc4XoKB6z5K77vaaYkHgsJyoXnxmKlDyeskekRA1VeUjMWSY6xoSbNHse0mbOER2DvAjLiRe49JZJ0Bv4X0mkRA1VOUjMvVp0jAljNPti8fpviI5BXoavaF4gKMKCvCviRccgoiE0VGYhMXeF6BgTYv4taxEYHiE6BnkZlhMvMfOaZPgFm0THIKIhNFRORmLudaJjjKuIpBTMWH696BjkhVhOvISP2YBFt/Ey7kRK1lA5CYm5N4iOMT4kCUvveQA6vV50EvJCLCdeJDknHJPn8iqgRErWUJmKxNybAUndl6DIXXIVYjMyRccgL8Vy4mUuW50OS6CP6BhEdAENlUlIzLkFkqTOX8GWoGBcvm696BjkxdT5k0FDMvsZsXAdD+8QKV1DZQLip66CpFPfr+GFX7sbZn9/0TFolMrKyiBJkseWoh8NLl/vhVKnRSB9ViROHVTGpa+JaHCNVXGIz74V1YWvwO1yiY4zLIlT85C1QBvLtw/lsVtXevTxvv/yu8PeVrrI4cI777wTjz766EX3Y7PZcP/99+PLL79EUVERVq5ciTfffLPfNuvXr8df/vKXAZ+blZWFgoKCYWcejPoqOw3LgjWT4RvACwMSKV1jVQxip6yBTq/8vxXNAYG4+oGHRMegC6itre17e+KJJxAYGNjvtieffHJY+3G5XPD19cWDDz6IpUuXDrrNk08+2W/flZWVCA0NxapVq8b8PFhOvJTZ34gFa3h4h0gNmqqjEJO5Fnqjsv+guOobDyIglCtSK1l0dHTfW1BQECRJGnDbOSUlJVi8eDEsFgvy8vKwd+/evvv8/PzwzDPP4N5770V09OAnWgQFBfXb98GDB9Ha2oq77rprzM+D5cSLTZoZibQZXByJSA2aayIQnbEWeqMyJ7TnLVuOSbPniY5B4+iRRx7Bhg0bkJ+fj4yMDKxduxZOp3PU+9u8eTOWLl2KpKSkMWdjOfFyC9dNhn8IF2cjUoPmmnBEpa+DwUdZP7Nh8YlYeMfXRcegcbZhwwasWLECGRkZ2LhxI8rLy3H69OlR7au2thYffPAB7rnnnnHJxnLi5Xz9fXDl17Oh06l7TQUirWipDUVE6m0wXuBy8p5kMPpg5XcfhlFhhYnGLjc3t+/fMTExAICGhtGdSLFlyxYEBwfjhhtuGI9oLCdaEDMpGHOvTxUdg4iGqbU+GGFJt8HH1yI6ChbcfjfCE5NFx6AJYDxvjtO5s3zcbveI9yPLMp577jncfvvt8PEZn8OSLCcaMf3KRCTlhImOQUTD1NYQhJCEdTBZ/IRlSJs1F9Ov8uxps6Q+O3fuxOnTp/H1r4/foT+WE42QJAlL78zi/BMiFWlvDERw3G0w+wd4/LH9Q0Jx1f3f9fjjknIUFhYiPz8fLS0taG9vR35+/qALt23evBlz587F1KlTx+2xlX9iPY0bs78RV907FW88dghulyw6DhENQ3uTPwKj10GqfxE9nR0eeUxJ0uGab38fvgGBHnk8Uqbly5ejvLy87+Pp06cDOHsY55z29na89tprw14/Zbgk+fxHIU04vL0Ce14b3YxsIhLDP7Qb3Y0vobujbcIfa+6Nq3HZmjsm/HGUzGazobS0FCkpKTArZHKyNxju15WHdTRo+rJEJOdyISUiNelqscASvhZ+waET+jhps+bh0tVfm9DHILoYlhONuuLOKQiK9BUdg4hGoKvVF6bgNfCfoFVaI5JTseI7G1R5MULyLvwO1CiznxErH8iDyY/TjojUpLvdDJ+A1QgIixzX/fqFhOLGh3+imPVVSNtYTjQsOMqC5ffnQGfgAm1EatLdYYbBbxUCIwa/5slIGXxMuGHDjxEQxsO9pAwsJxoXmx6CxV/LFB2DiEaop9MEvelmBEXFjm1HkoSrv/UQoidljE8wL8NzRsbXcL+eLCeEzHkxmLU8WXQMIhqhHqsJMN6M4Oj4Ue9j/qp1mHzJZeOYyjucWz21u7tbcBLvcu7rabzIFbg54YAAAHOuTUF7QzdOHRzddRWISIxeqxE+vjciJPZttNaUX/wTzpN56UJccvPaCUqmbnq9HsHBwX3XmrFYLH1LvNPIybKM7u5uNDQ0IDg4GHq9/oLbc50T6uN0uPDW44dRV+KZhZ6IaPwYfR0wSu+ipbp0WNvHpE/G6p/8LwzjdC0UbyTLMurq6tDW1iY6itcIDg5GdHT0RYseywn109Npx6u/OoiOJpvoKEQ0QkaTCybje2iqvPAii4ERkVj388fgFxzioWTq5nK54HA4RMdQPaPReNERk3NYTmiAtvpuvP7YIfR02EVHIaIRMvi44Gv+AI3lxYPe7xsYhFsf/SXC4hI8nIxo+DghlgYIjrLg+u9Og9nvwhOWiEh5nHY9unuuQWTylAH3mf38ccsjP2MxIcVjOaFBhcX547rvToPJwjnTRGrjcuhhtV6JqNR/XyXWaPbFTT/ciMjkVIHJiIaH5YSGFJEYgJXfyYPRPLxjhESkHC6nHp0dSxE9KRcGHxNufPi/EZM+WXQsomHhnBO6qJpTbXjnd/lw2t2ioxDRCBlMwNVfj0JSbrboKETDxnJCw1J5ogXv/f4oXA4WFCK10BkkXPONHCTncFl6Uhce1qFhScgMxdX3TeV1eIhUQmeQcM19LCakTiwnNGzJOeG46h4WFCKl0xkkXH1fDpJzWUxInXhYh0assrAFH/zhGBy9LtFRiOgrDD46XHXvVI6YkKqxnNCo1Jd14N2njsDWxVUTiZTC7GfEigdyEZ0aJDoK0ZiwnNCotdZZ8fZv89HV0is6CpHm+YeacN2D0xAS7Sc6CtGYsZzQmHS12vD2b4+gtdYqOgqRZoXG+uHa70yDf4hJdBSiccFyQmNmszrw7lNHUF/KqxkTeVpMWhCWfyuXl5sgr8JyQuPCYXdh6x+OoaKgRXQUIs1Izg3HVfdkw+DDVZzJu7Cc0Lhxudz49K8ncHJ/negoRF5vyqUxWHRbJnQ6ntpP3oflhMbdl1vLsP+tEvA7i2j8SRIw57pUzLomWXQUognDckITovRoE7Y/VwCHjWuhEI0Xk8WAZXdnI2lqmOgoRBOK5YQmTHNNF95/+ig6mmyioxCpXmisH5Z/MwdBERbRUYgmHMsJTSib1YHtmwtQUciJskSjlTYjAkvumAIfs0F0FCKPYDmhCSe7Zex7uwSHtpUD/G4jGjZJAuZen4qZVyeLjkLkUSwn5DElhxvx0V8KOQ+FaBhMFgOWfT0bSdmcX0Law3JCHtVW343tzxWgobxTdBQixQpP8MfV903l/BLSLJYT8jiXy40Db5fi8IflPN2Y6DySBExbmoi516dCb9CJjkMkDMsJCVNd3IqPthTywoFEAPxDTLhifRbiJ4eIjkIkHMsJCdXb7cCOF07i9MEG0VGIhEmfFYmF6ybDZOH1cYgAlhNSiBP7avHZS8WcLEua4uNrwII1GZg8N1p0FCJFYTkhxeho6sH25wpRV9IuOgrRhItND8YV66cgMMxXdBQixWE5IUVxu2Uc/aQS+98phbOXoyjkfQxGHWavTMH0ZYmQeNE+okGxnJAidbbY8NlLxSg72iQ6CtG4ScoJw4JbMxAYztESogthOSFFK8lvxK6Xi9HVyjN6SL38Q0y4bHU60qZHio5CpAosJ6R4dpsTB94pxdFPqyC7+e1K6qHTSchZEo85K1N4XRyiEWA5IdVorOjEjn+c4OqypArRqYFYuC4T4fH+oqMQqQ7LCamK7JZx/LNqHHinFDarQ3QcogFMFgMuuTENWZfFQpI44ZVoNFhOSJV6e5w4vK0cRz6phNPuFh2HCAajDjmL4zHjqiSY/biYGtFYsJyQqlnbe3Hg3VIU7a7lfBQSQqeTkDk/BrNXpMA/xCQ6DpFXYDkhr9BaZ8W+N0tQkt8oOgppSNqMCMy9LhUh0X6ioxB5FZYT8ip1Je3Y+8YZ1JxqEx2FvFjc5BBccmMaopIDRUch8kosJ+SVyo414eD7Zagv7RAdhbxIZFIA5l2fhoSsUNFRiLwaywl5tZpTrTi0rQLlBc0Av9NplBKzQzF9WSLiM1lKiDyB5YQ0obm6C4c/rMCpg/Vwu/gtTxen00tInx2F6csSERbHtUqIPInlhDSls8WGIx9XovDzGjh4YUEahI9Zj6zL45C3JB7+IWbRcYg0ieWENMlmdeD4zmoc21GF7g676DikAH7BJuQuiUf25XEw+XKpeSKRWE5I09wuN8qONaNodw3KC1q4VorGSBKQkBWGKfNjkDItHHq9TnQkIgLLCVEfa1svivbUomhPDTqabKLj0AQKDDdjyvwYZF4Sw0M3RArEckL0FbIso+pkK4p216LkcCNcTi6P7w0MRh1SZ0RgyvxYxGUE87o3RArGckJ0ATarA8UH6nDqi3rUlXbwdGQVikwKwJRLY5E+O4pzSYhUguWEaJis7b0oOdyIkvxG1BS3wc35KcokAdEpgUidHom06REIDPcVnYiIRojlhGgUbFYHSo80oSS/EZWFLTz0I5hOLyE2PRgpeeFInRbJC/ARqRzLCdEY2W1OlB9vRkl+I6pOtMLW5RAdSRNMFgMSs8OQkheOxOwwHrIh8iIsJ0TjSJZltNRYUXWyFdUnW1Fzqg293U7RsbyCyWJAbHowYtODEZcRgvB4f0g6Tmol8kYsJ0QTSHbLaKrqQnXxv8uK3caVaYfD5GdA7KSzRSQ2IxjhcSwjRFrBckLkQW63jKbKTtSXdqChohON5Z1orbVqfnKt3qhDaIwfwuP9EZ4QgNj0YITF+fF0XyKNYjkhEszpcKGpqgvN/3prqu5CS43Vaw8HWQJ9EB7vj7B4/7NlJD4AwdEW6DgqQkT/wnJCpFCdLTa0NXSjs9mGzmYbOpp6zr5vtqG7vRdK/cmVpLPXqQkINcM/1IyAMDMCQs0ICvdFWLw/LIE+oiMSkcKxnBCpkMvpRmeLDZ1NNnQ098DabkdvtwP2bids3U7Ye5zo7Xait8eB3m7n2Sswj/InXZIAH18DfMyGs+999TBZjGffmw0wB/gg4F8lJDDMDL8QE69RQ0RjwnJCpAFutwx7z9nScu5Hvu8n/yu/Ac7db/DRw2QxwGjSc+4HEXkUywkREREpCsdeiYiISFFYToiIiEhRWE6IiIhIUVhOiIiISFFYToiIiEhRWE6IiIhIUVhOiIiISFFYToiIiEhRWE6IiIhIUVhOiIiISFFYToiIiEhRWE6IiIhIUVhOiIiISFFYToiIiEhRWE6IiIhIUVhOiIiISFFYToiIiEhRWE6IiIhIUVhOiIiISFFYToiIiEhRWE6IiIhIUVhOiIiISFFYToiIiEhRWE6IiIhIUVhOiIiISFH+P4i8Tt6nhn3vAAAAAElFTkSuQmCC", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAicAAAGZCAYAAABSeJFFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA8EUlEQVR4nO3deXyU9b3+/2u2JJM9IYQkJIGwBQOEXS2KLAJawKVqa7VasdV+u2nPotZzupzas9Tan+3xnPqz9lut1qqtdcUNqwKiiMgi+x5ICEkg+77N9v0DiUQCJCSZzz0zr+fjkYdhMpm5Jibk4nN/7vdtCwQCAQEAAFiE3XQAAACAk1FOAACApVBOAACApVBOAACApVBOAACApVBOAACApVBOAACApVBOAACApVBOAACApVBOgHPw85//XAUFBfL7/V232Ww2PfHEE11/fuKJJ2Sz2bRx48au2372s5/JZrOpurr6jI//4x//WEuXLtXw4cNls9m0bNmyHu+3bNky2Wy2rreoqCiNHj1ad911lxobG0+5/+cz9sXcuXN7zFFaWqrvf//7Gj16tGJiYpSSkqK5c+fq6aef1ucHUBcXF3fLe/LbjBkzTvu6Tn577bXXuj3W6tWruz7vJz/5iaZNm9bt/wuA0OM0HQAINeXl5XrggQf0xBNPyG4fnH7/m9/8RoWFhbryyiv1+OOPn/G+brdbK1eulCTV19fr+eef14MPPqht27bp73//+6DkO2Ht2rVaunSp4uPjdffdd6uwsFANDQ167rnndNNNN+nVV1/VM888c8rX6Y477tCNN97Y7bb4+PjTvq6TjR8//rR57rrrLv32t7/Vk08+qVtvvbUfrwyASZQToI8eeughJScn65prrhm052hqaur6hf7UU0+d8b52u10XXnhh158vv/xyHTx4UG+//bYOHTqkvLy8QclYX1+va665RklJSVq/fr2GDRvW9bGrrrpKhYWFuvfeezVlyhTde++93T43Nze3W+aefP519UZSUpJuuukm3X///V2rLwBCD4d1gD7o7OzUY489phtvvHHQVk0k9fuxTxwiOXbs2EDE6dEf/vAHVVZW6v777+9WTE645557NH78eP3qV7+Sx+MZtByfd/PNN2vfvn1atWpV0J4TwMBi5QTog/Xr16umpkbz5s075WNWusD3oUOH5HQ6NWrUqG639yfj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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for mutant, res in filtered_mutations_Th1.items():\n", + " res.plot_piechart()\n", + " plt.title(mutant)\n" + ] + }, + { + "cell_type": "code", + "execution_count": 23, + "id": "b146de32-5b7c-44cc-a713-9c6820b9b9a0", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:34.941720Z", + "iopub.status.busy": "2024-06-07T17:39:34.941533Z", + "iopub.status.idle": "2024-06-07T17:39:34.948307Z", + "shell.execute_reply": "2024-06-07T17:39:34.947836Z", + "shell.execute_reply.started": "2024-06-07T17:39:34.941702Z" + } + }, + "outputs": [], + "source": [ + "filtered_mutations_Th17 = maboss.pipelines.filter_sensitivity(updated_mutations, node=\"Th17\", minimum=0.4)" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "id": "b083b81a-1c96-4dc6-977b-d12a00a935ec", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:34.949120Z", + "iopub.status.busy": "2024-06-07T17:39:34.948945Z", + "iopub.status.idle": "2024-06-07T17:39:35.767861Z", + "shell.execute_reply": "2024-06-07T17:39:35.766915Z", + "shell.execute_reply.started": "2024-06-07T17:39:34.949103Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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wOPyio4lTGzyKRQd/MAnj2UOCUXSiFFIzhyNpMwxiElJhaTT+eSxiUhZWE6IBpDb6UHFqUZU5DfgdH4DKvIb4WjRzshKVEI1So++3q/7WsPCkZQ5BkkjRyF55GhEJQ/mxfaINILlhMjP6k/bUZHf0PFRW9YSsJNrg8NaUVPwco/H6Q0GRCalIHbwECRmjEBS5mhEJib5ISERKRHLCZFgTocbteUtqC1r/2hGTVkL7AGwrb6k88JR93vI3m9PbQUFByNmcBpiBw9BTOoQxKYOQVRSMpf5ElEHlhMihXK0uDrKSn1VK5prHGiqdaCprg2tTU5AwX9zTWY9QmMsCI2yIDTyMEKiIhARn4iIhEGwRUaJjkdECsdyQqRCbpcHzbVtaKpzoKnGgZb6NjiaXWizu9FmP/Nfx1l/vqBJuRJgMOigN+lgDNLDGmKCJcQES4gRlhATrKHffm4NNcEWYYY5mKMgRNR/LCdEGuB2eeBq88DrkSF7ZXg9Mrzf/Lf9c1mWodPrYDDpYDDqv/mvDnqjjhNRicivWE6IiIhIUbhJABERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESnK/wclfpEMm8FGXwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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ei4RdS2WE6KTQkNDYbPZUFdXB5PJ1ObxX3zxBV577TVMmzYNDz74YKvHZWRkYOPGjQCA+Pj4Fo9ZtWpVk0uPNRpNh37oLly4ED4+Ppg+fXqzj6WkpAAA9u7d2+zy5r179zZ+vLNptVqMGzcOK1euRG5ubovrTnJzc7Fjxw5ceeWVHSqFnaGioqJDo2RE5D5cc0J00qk9NVpbA3K633//HXfeeSdSUlLaXNR66uMLFixAenp6k7dTayY+/PDDc85dWFiIFStW4JprrmkcJTldTEwMhg8fjk8//bTJotMtW7bg0KFDuO666875tdvy6KOPQpZl3HPPPS0ueJ01axZkWcajjz7aZRlakp+fD6vViuTkZLe+LhG1D0dOiE4aO3YsgBM/tFu6suWUiooKXHPNNWhoaMCcOXOwd+/eFo8LCwtDQkJC49qJO++8s8XjpkyZgu+++w4lJSWtXolzNh999BEcDker5weAF198EePHj8fUqVNxzz33oLi4GI888ghSUlJw2223nfX8a9euxbhx4/Dkk0+2uOvt2YwaNQrz5s3D7NmzcdFFF+Hee+9FfHx84yZsW7duxbx58zBy5MgOnfd8bdmyBQDOOhVHRAKJ22KFSHlGjx4tT5w48azHnNqorK23W2+9VV66dKkMQJ43b16r51u5cqUMQH711VdlWW59E7bW9O7dW05MTJRdLtdZj1u9erU8YsQI2WAwyMHBwfItt9wiFxUVtXn+5cuXywDk9957r92ZzrR582b5+uuvlyMiImSdTieHh4fL1113nbxp06Zmx3bmJmytmT59ujxgwIBzei4RdT1JllvYBIBIpZYsWYJp06YhOzsbMTExouMowsMPP4wvvvgChw8fhsFgEB3nvFVXVyM6Ohqvv/46Zs6cKToOEbWAa06ITnPddddh2LBheP7550VHUYz09HQ8/vjjXlFMAOD1119HfHx8m9NZRCQO15wQnUaSJCxYsADfffcdXC7XOW1j7222bdsmOkKnCggIwOLFi5vtmUJEysFpHSIiIlIU/lpIREREisJyQkRERIrCckJERESKwnJCREREisJyQkRERIrCckJERESKwnJCREREisJyQkRERIrCckJERESKwnJCREREisJyQkRERIrCckJERESKwnJCREREisJyQkRERIrCckJERESKwnJCREREisJyQkRERIrCckJE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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAicAAAGZCAYAAABSeJFFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/XklEQVR4nO3dd3hUVcIG8PdOy2QmZdJ7SOg1hCKgqAgIoqKoK6KurNjL7rKirGVt2F076mIF0U9x1VWxIUWaSpWqdNJ772X6/f4AIjGUlMmcO3Pf3/PkIZnM3HmTQOblnHPPlWRZlkFERESkEBrRAYiIiIiOx3JCREREisJyQkRERIrCckJERESKwnJCREREisJyQkRERIrCckJERESKwnJCREREisJyQkRERIrCckLURY8//jgGDhwIt9vdcpskSVi8eHHLx4sXL4YkSdi2bVu7jzt8+HBIkoQXXnih5bZ169ZBkqR2vR3/vJ2Rk5MDSZKwbt26Np9bvnw5Lr74YkRFRSEgIABJSUm4/vrrsW/fvjb3nTdv3kkzvv766y33O9l9IiMjWx0rJSWl5WOHw4FevXrhlVde6dTXSETKpBMdgMiXFRUV4bnnnsPixYuh0Xiu6+/atQs7d+4EACxcuBBz584FcKSwbNq0qdV9L7/8cvTq1atVielO9957L55//nlMmTIFCxYsQExMDA4dOoSXXnoJw4cPx5IlS3DFFVe0edzy5csRGhra6rbU1NRWH1955ZW45557Wt2m1+tPmkWv1+ORRx7BnDlzMHPmTERERHThKyMipWA5IeqC+fPnw2KxnPDFuCveffddAMDFF1+M7777Dhs3bsRZZ52FkJAQjBkzptV9AwICYLFY2tzeHT7++GM8//zzuOOOO7BgwYKW288991xcc801GDduHGbOnIn09HT07Nmz1WNHjBjRahTkRGJiYjr8dVxzzTW4++678dZbb+Ff//pXhx5LRMrEaR2iTrLb7Vi4cCGuvfZaj46aWK1WLFmyBCNGjMDLL78MAFi0aJHHjt8VTz31FMLCwk44SmM2m/Haa6+hqampJbc3GAwGzJgxA2+//TZ4HVMi/8ByQtRJW7ZsQWVlJcaPH9/mc7IsY9asWZ067hdffIHq6mrceOON6NOnD84++2x88sknaGho6PCxZs2a1ekX7JSUFMiyjPPOOw8AUFxcjL1792Ly5MkwmUwnfMyZZ56J6OhorFq1qs3nXC4XnE5ny5vL5WpzH1mWW93H6XS2yj9v3jzk5OS0edx5552H3Nxc7Nmzp1NfKxEpC8sJUScdW/sxfPhwjx534cKFMBqNuPbaawEAN910ExoaGvDpp5969Hk6Ki8vD0DbdSJ/lJqa2nLf48XGxkKv17e89ejRo819FixY0Oo+er0eCxcuPG22Yz+DDRs2tOdLISKF45oTok4qKipqczZJV2VnZ2Pt2rW45pprYLFYAADTp0/H7NmzsWjRItx4440ee67uIsvyCc8Q+uGHH1otiDUYDG3uc9VVV+Gf//xnq9uOPzvnZKKjowEAhYWFHUxLRErEckLUSc3NzdDr9dBqtR475qJFiyDLMq688krU1NS03H7ppZfio48+woEDB9C/f3+PPV9HJCcnAzhSoE4lNzcXSUlJbW4fOnToaYtcVFQURo4c2eFsRqMRwJGfCRH5Pk7rEHVSZGQk7HY7GhsbPXI8t9vdsjfKFVdcgbCwsJa3jz76CIDYhbFxcXEYNGgQVq5ciaamphPeZ9OmTSgtLcWkSZO8mq2qqgoAPDqKRUTisJwQddKxEYzMzEyPHG/FihUoKCjAX//6V6xdu7bN26BBg/DBBx/A6XR65Pk648EHH0R1dXXLvivHa2xsxOzZs2EymTBnzhyv5srKygIADBw40KvPS0Tdg9M6RJ107CyWzZs3Iy0trV2PWbNmzQnPNrnooouwcOFC6HQ6/Otf/0J8fHyb+9x2222YPXs2vvvuO0ybNq3TuRcvXowbbrgB7733XofPKLrmmmuwY8cOvPDCC8jJycGNN96ImJgYHDx4EC+//DIyMzOxZMmSNnucdLfNmzdDq9Xi3HPP9erzElH3YDkh6qSkpCScc845+Oqrr3Drrbe26zH33XffCW//5Zdf8M0332Dq1KknLCYAMHPmTNx3331YuHBhl8rJsVOS4+LiOvX4559/HhMmTMDrr7+O22+/HXV1dYiOjsaECRPw2WefCRm9WLp0KS666KKWRcRE5NskmbsWEXXa559/jhkzZiA3NxcJCQmi47TLVVddhezsbPzyyy+io3hEZmYm+vTpgxUrVnh9rQsRdQ+WE6IukGUZZ511FkaMGNHqInZKJcsyYmJi8OGHH2Ly5Mmi43jEDTfcgIKCghNu/EZEvonTOkRdIEkS3nnnHXz99ddwu90e3ca+O0iShLKyMtExPMbpdKJXr1544IEHREchIg/iyAkREREpirL/m0dERESqw3JCREREisJyQkRERIrCckJERESKwnJCREREisJyQkRERIrCckJERESKwnJCREREisJyQkRERIrCckJERESKwnJCREREisJyQkRERIrCckJERESKwnJCREREisJyQkRERIrCckJERESKwnJCREREisJyQkRERIrCckJERESKwnJCREREiqITHYCIukaWZbgqK+EsL4errh7uhnq46uvhrm84+n4D3PX1cDUcuU22WiG73YDLBVmWAZcLG/omQaPRQNJooNFqW/7UaDQIMAchMDgEgSEhCAwOhSkk5OjHoS23azRa0d8GIvIjLCdECue22+EsKoKjuBiOoiI4ioqPvF9cBEdREZwlpZBtti49R6nO2vkHSxKMJvNxZSUUIZFRCE9IQkRCIsITkmC2hHUpHxGpC8sJkULIsgxHXh6shw7BdvAQbIcOwXbwIOz5+YDbLTreyckyrI0NsDY2oLq48IR3MQYFtyorEQlJCE9IQkhUNCRJ8nJgIlI6SZZlWXQIIrVx2+2w7tkD6569sB46CNuhw7BlZEBuahKSZ9nQXkKeVxcQgPC4RIQnJCI6tRcS+w9CTM/e0Gg5TUSkZiwnRF7gamhA886daNq2HU3bt8H6254uT8V4kqhyciL6ACPi+w1AYv9BSBwwGLF9+kGn14uORURexHJC1A2cFRVHi8iRMmI7eAhwuUTHOikllZM/0ur1iO3VF4kDBiNx4GAk9B0AvdEoOhYRdSOWEyIPkGUZ1r370LB2LRrWroV13z7RkTpEyeXkjzRa7ZEpoAGDkTJ0OJIGDeHZQkR+huWEqJPcVisaN21Cw9p1aFi3Ds6yMtGROs2XyskfBQaHoPcZY9B39FgkD0nnehUiP8ByQtQBzqoq1P/wAxrWrkPj5s2Qm5tFR/IIXy4nxzMGBaPXiNHoO2YseqSlQ6vjWhUiX8RyQnQabpsNDWvWoHbpV2jYsAFwOkVH8jh/KSfHCzCZ0XPEKPQdPRYpQ4dDZzCIjkRE7cRyQnQCsiyjeft21H71FeqWr4C7vl50pG7lj+XkeIbAQKQOOwP9zjwbPYePglbHLZ6IlIzlhOg49pwc1H79NWq//gaOggLRcbzG38vJ8cxh4UibeAHSJk5BUHiE6DhE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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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zZaZmQngdFEjIv/AaR2iZpzZcXTbtm3o27evRx/7fAs0x4wZg5iYGHz33XeYNGkSRowYgQceeACXXXYZzGYzcnJy8M0332DFihWoqKgAAFxyySX417/+hYceeggDBw7E/fffj969e0OtVqOgoABLly4FAISGhjabadasWXjhhRewdu3aRruttsTMmTOxb9++hl9vueWWRpuw1dTUYOXKlQ2bxvnKtm3bEBUV5fXRIyLyHJYToma0b98eo0ePxvfff4/777/fo4/9xhtvnPP2M8WgS5cu2LNnD95991189913+OCDD2Cz2ZCQkIBLL70UmzZtavQf/YwZMzBixAjMmzcPb731VsNi3qSkJIwcORJr1qzBuHHjms1UW1sLlUqF+Pj4Vr8etVqNJUuW4JprrsH8+fMxffp0WCwWJCYm4uqrr8ZTTz3VsDbFVyRJwvLlyzFt2rTznuJMRPKjkrx1biFRgFi6dCluueUW5OTkIDExUXQcrxo6dCiSk5Px9ddfi47iEWvWrMGkSZNw8ODBCy4sJiL5YDkhugBJkjBy5EgMGjQI7733nug4XlNdXY2YmBikpaUhJSVFdByPuOyyy9C1a1fMnz9fdBQiagVO6xBdgEqlwvz58xvONmnrNvZyFxoaCpvNJjqGx1RUVGDMmDH485//LDoKEbUSR06IiIhIVgLzR0AiIiLyWywnREREJCssJ0RERCQrLCdEREQkKywnREREJCssJ0RERCQrLCdEREQkKywnREREJCssJ0RERCQrLCdEREQkKywnREREJCssJ0RERCQrLCdEREQkKywnREREJCssJ0RERCQrLCdEREQkKywnREREJCssJ0RERCQrLCdEREQkKywnREREJCta0QGI6OI5y8vhLCqCq6oa7rpauGpq4K6phbu2Bq6aWrhrauCq/e02az3gcgNuNyT36V83d28PtVoNlVoNtUbT8KtarYbeaIIxNAym0LDffg1t9LkxOAQqNX/OISLPYTkhkjm33Q7HqVNwFBTAWVAAR34BHIWFcBTkw5lfAEdRESSr9aKeo0jb9vurVGoYgoP/V1hCQmEKj0Bku0REJXVAVFIHBEdEXlQ+IlIWlhMimZDcbjhyc2E9ehS2Y8dgO3oMtqNHYc/NBVwu0fHOS5LcqK+pRn1NNcrzTp7zGIM5GJGJ7RGV1P50YUlsj8ikDgiNjvFx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e1YW6tPTYT1wENb0dFgPH4Zks4mOJpTKYIChRw8Y+vSBIbUPjH36QN+5M1RqtehoRCQAywmRYJLTCduxY6g/cADW9AOwHTsGe04OXOXloqN5hSY8HPrkZAT17AlDn94wpqYiqGtX7s5KRA1YTohkylVdDXtODuzZObBnZ//2+9O/yn0dizosDPrk5LM+OjT8ntetIaILYTkh8kPOigo4S0rgKiuDs6wcrvIyOEvL4Cwvg6u0DM7ycrhKS+GqroZks0FyOC7uCXU6qPV6aMLCoAkPhyYiouFXbUwMtNHR0MbGnP59XBxP5SWii8JyQqQAkiRBsttPF5XffnXb7JAcdkh2O6BSQ6U/XUBU5/rg2g8i8iGWEyIiIpIV/jhEREREssJyQkRERLLCckJERESywnJCREREssJyQkRERLLCckJERESywnJCREREssJyQkRERLLCckJERESywnJCREREssJyQkRERLLCckJERESywnJCREREssJyQkRERLLCckJERESywnJCREREssJyQkRERLLCckJERESywnJCREREssJyQkRERLLCckJERESywnJCREREssJyQkRERLLCckJERESywnJCREREsvL/OkplgI1FoOAAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAicAAAGZCAYAAABSeJFFAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/PElEQVR4nO3deXhTVcIG8DdJ06Rp2qR7SzfK2rKU1SKCCrLIKCruyoeiI7iPo6Pjgg6i46jjNuI2CoOIiuuguIOigOwIlH3tSulCW7qmbZrtfn8gHUpbuiU5N7nv73nySNOb5E2F9u05556rkiRJAhEREZFMqEUHICIiIjodywkRERHJCssJERERyQrLCREREckKywkRERHJCssJERERyQrLCREREckKywkRERHJCssJERERyQrLCZGbPP300xgwYABcLlfTfSqVCu+9917Tx++99x5UKhW2bdvWdN+8efOgUqmaboGBgUhJScGf//xnVFVVNR23c+dOXHrppUhKSkJQUBDCw8MxevRofPjhhy2yjBs3DrfcckuX3se8efPQs2fPFvfX1dXh+eefx7Bhw2A0GhEcHIyhQ4fi2WefRV1dXYvje/bs2ex9nX6zWCzNvh6t3R566KFmzzVv3rymj3/++WcYjUYUFhZ26T0SkbwFiA5A5A+Kiorwwgsv4L333oNa3bXOv2LFCphMJtTW1uL777/H/PnzsXXrVmzcuBEqlQpVVVVITEzEjTfeiPj4eNTV1WHp0qW46aabkJeXhyeeeMLN7+p/jh8/jokTJyI7Oxv33XcfXnjhBQDAL7/8gmeeeQYff/wxVq1ahZiYmGaPGzNmDF566aUWz2cwGJp9vHjxYqSmpja7r0ePHm3mmTBhAjIyMjBnzhwsWbKkq2+LiGSK5YTIDebPnw+z2Yyrrrqqy88xYsQIREZGAgAmTZqEEydO4IMPPsDGjRsxZswYjBs3DuPGjWv2mKlTpyI3NxcLFizwaDm5+eabcfDgQaxevRpjx45tun/SpEm49NJLMX78eMycORMrVqxo9jiz2Yxzzz233ecfNGgQRo4c2alM99xzD66//no888wzSExM7NRjiUjeOK1D1E02mw2LFi3C9OnTuzxq0ppTP9Tz8/PPelxkZCQCAjz3e8a2bdvw448/4rbbbmtWTE4ZO3Ys/vjHP2LlypXYvn27x3Kc6bLLLoPRaMTChQu99ppE5B0cOSHqpi1btuDEiRMYP358i89156LfWVlZAICoqKhm97tcLrhcLlRWVuLzzz/HypUr8cYbbzQ7Zs2aNV1+3Xnz5jVb3/HTTz8BAKZNm9bmY6ZNm4YFCxbgp59+wogRI5rulyQJDoej2bFqtbpFiXM6nS2OO71w5eXltXjNwMBAnHfeefjuu+/w9NNPt/e2iMiHcOSEqJs2bdoEABg+fHi3nufUD+iqqiosXboUb7/9NhITE3H++ec3O+7uu++GVqtFdHQ0HnjgAbz22mu44447uvXaZ3P06FEAQEpKSpvHnPrcqWNP+f7776HVapvd5s6d2+Lx5557bovjziwrrRk+fDh27tzZ6oJcIvJdHDkh6qaioiKoVKqm9SJdFRsb2+zjMWPGYMGCBdDr9c3unzNnDmbNmoXS0lJ88803uPfee1FXV9fs7BZvOzVCpFKpmt0/duxY/Otf/2p2X2sLXd9//32kpaU1u68jU1XR0dFwuVwoKSlB7969OxubiGSK5YSomxoaGqDVaqHRaLr1PKtWrYLJZIJWq0VCQgIiIiJaPS4pKQlJSUkAgEsuuQQA8Nhjj2HmzJktpoDc4dRr5ebmon///q0ec2ra5cyFqSaTqUMLXdPS0jq9IBZAU3FraGjo9GOJSL44rUPUTZGRkbDZbN2eWhgyZAhGjhyJIUOGtFlMWpORkQGHw4GcnJxuvX5bJk2aBABYvnx5m8ec+typY72loqICALo9akVE8sJyQtRNp/bnyM7OFvL6q1evhlqtRq9evTzy/CNHjsTkyZOxaNEibNiwocXn169fj3fffRdTpkxpthjWG3JychAREdFifxUi8m2c1iHqplN7j2zevBnp6ekee53bb78doaGhyMjIQExMDMrLy/H555/j008/xV//+td2p3TGjRuHtWvXdukMovfffx8TJ07E5MmTcd9992HChAkATm7CNn/+fKSmpjbbCddbNm/ejAsvvLDFWhci8m0sJ0TddOqMmq+++gq33367x15n9OjRWLx4MZYsWYKqqioYjUYMGTIEH3zwAWbMmNHu4y0WS4tFtx0VExODzZs347XXXsNnn32G1157DQDQp08fzJkzB/fffz+Cg4O79NxdlZ2djT179jQ77ZmI/INK6s5GDEQEAFi2bBmuv/565OfnIz4+XnScFmpraxEeHo5XX30V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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + }, + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "for mutant, res in filtered_mutations_Th17.items():\n", + " res.plot_piechart()\n", + " plt.title(mutant)" + ] + }, + { + "cell_type": "markdown", + "id": "ed0dd40c-6617-428b-b218-c8f7587aaf2c", + "metadata": {}, + "source": [ + "As we can observe, several single mutations resulted in a drastic change of the original model behavior. " + ] + }, + { + "cell_type": "markdown", + "id": "bcea592d-d5b4-4b80-97ba-71d324c6a4c5", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-28T21:33:38.981506Z", + "iopub.status.busy": "2024-03-28T21:33:38.981056Z", + "iopub.status.idle": "2024-03-28T21:33:38.986815Z", + "shell.execute_reply": "2024-03-28T21:33:38.985486Z", + "shell.execute_reply.started": "2024-03-28T21:33:38.981471Z" + } + }, + "source": [ + "## Parameters\n", + "\n", + "Now that we saw that playing with mutations, we can modify the distribution of phenotypes, let's do something more : play with activation/inactivation parameters. \n", + "Let's choose two mutants that showed some effect : NFkB--, and FOXP3_2--\n", + "\n", + "\n", + "### NFkB" + ] + }, + { + "cell_type": "code", + "execution_count": 25, + "id": "5e7d975b-f6f0-4ccc-be3c-b692281c2f3b", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:35.768925Z", + "iopub.status.busy": "2024-06-07T17:39:35.768665Z", + "iopub.status.idle": "2024-06-07T17:39:36.093985Z", + "shell.execute_reply": "2024-06-07T17:39:36.093037Z", + "shell.execute_reply.started": "2024-06-07T17:39:35.768908Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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R9fadbyXj1JptbCMH4eYGTMQPX06dImJohMR0TFiOSE6Dt7WVrT/+CPav/8BnWvW8NSPaHo9rBMnImbGWYiaNo0rJERhjuWE6AT57HZ0LF+OzlWr0bl6Nbx1daIjqYIuJQXWk0+GddLJiJoyBdqYGNGRiChAWE6IAsxVWtpTVLrWroW/vV10pIigiY6GZcJ4WCfuKSS8EzBR5GI5IQoi2eeDc+tWdK5ejc6f18C5dSv8nEx7VDQWC0y5ubCePBHWk0+GacQISFqt6FhEFAIsJ0QhJPv9cJeVoXvrVji3bYdz61Y4d+yA7HKJjiaUZDLBNHgwTCNGwJQ7AuYRI2DIzoak0YiORkQCsJwQCSZ7vXDt2oXubdvg3LoNrl274K6ogK+lRXS0oNDabDBkZsI4ZAhMI4bDnJsLY04Op7MSUQ+WEyKF8rW1wV1RAXd5Bdzl5Xv/vOe/St/HoomNhSEzc7+3fj1/5n1riOhIWE6IwpC3tRXexkb4mpvhbW6Br6UZ3qZmeFua4WtqhrelBb6mJvja2iC7XJA9nhN7Qb0eGoMB2thYaG02aOPiev6rS0qCLjERuuSkPX9OSeGlvER0QlhOiFRAlmXIbveeorL3v36XG7LHDdntBiQNJMOeAiId7I17P4gohFhOiIiISFH46xAREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpyv8DkTrTaRS95AUAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "nfkb_mutant = stable_state.copy()\n", + "new_istates = change_inputs(nodes, to_istates(res_single[('NFKB', 'OFF')].get_states_probtraj(), nodes), dc_signal)\n", + "nfkb_mutant.network.set_istate(nodes, new_istates)\n", + "nfkb_mutant.network[\"NFKB\"].set_rate(str(1),str(1))\n", + "res_mutant = nfkb_mutant.run()\n", + "res_mutant.plot_piechart()" + ] + }, + { + "cell_type": "code", + "execution_count": 26, + "id": "8ca6b956-6038-467e-8036-082f8bb5cbfd", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:36.095128Z", + "iopub.status.busy": "2024-06-07T17:39:36.094914Z", + "iopub.status.idle": "2024-06-07T17:39:36.335481Z", + "shell.execute_reply": "2024-06-07T17:39:36.334242Z", + "shell.execute_reply.started": "2024-06-07T17:39:36.095110Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAicAAAGFCAYAAAAmbFOlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAAA/30lEQVR4nO3deXhU1eE+8PfOvmWy7wlJWJKwg7LIJkVxAaF1qVpxQb9K1WqttVbtD2q1Vq1bq9avu4Jb3arihvpVqICKC2BAZJcQkpA9M5NJMvvc3x9AJBIgJDNz7sx9P8+TBzLLnXd4YHhz7jnnSrIsyyAiIiJSCI3oAEREREQHYzkhIiIiRWE5ISIiIkVhOSEiIiJFYTkhIiIiRWE5ISIiIkVhOSEiIiJFYTkhIiIiRWE5ISIiIkVhOSEiIiJFYTkhIiIiRWE5ISIiIkVhOSEiIiJFYTkhIiIiRWE5ISIiIkVhOSEiIiJFYTkhIiIiRWE5ISIiIkVhOSEiIiJFYTkhIiIiRWE5ISIiIkVhOSEiIiJFYTkhIiIiRWE5ISIiIkVhOSEiIiJF0YkOQET9F2pvR8jpQsjlRNjlQsjpRMjl2vfl/PH7sNcDhMKQw6Fuv34+pAAajQbS/q8Dv9cZDDBZbTDb7TDZ7DAnJXX9ak6yw5SUBLPNDp3BIPqPgIgSCMsJURwIOhzw796NwJ498FdVwb+7Cv49exCor0fI5QICgX4dv0Hr6dfzdUYjzDY7zHY7kjOzkZqbh9S8AqTm5iMtLx/mJHu/jk9E6iLJsiyLDkFEQNjrhW/bNvh37+5WQPx79iDc1hbV1142elBUj2+yJSE1Nw9p+wtLal7+vl9z8jjqQkSHYDkhEkCWZfgrd8OzcQO8GzfCU7EB3u3bgWBQSJ5ol5PDkSQNUnLzkDekHHll5cgvG4a0/EJIkiQkDxEpA8sJUQwEHY59JWTDRng2boTnu+8QdrlEx+oiqpz0xGS1IXdIGfJKhyKvbBhyB5dCbzKJjkVEMcRyQhQFofZ2dHz2OdpXrULnurUIVO0RHemIlFROfkqj1SJjQPH+sjIUBUOHIyktQ3QsIooilhOiCPHt3In2lSvRvnIVOr/9tt+TVGNJyeWkJ5kDijHw+AkoGTseeUPKIGm4KwJRImE5IeqjsNeLji+/RMeqVWhfuQqB2lrRkfos3srJwUxJdpSMPg4Dj5+AgWPHwWC2iI5ERP3EckJ0DIIOB9wffgj3f/+Lzq+/gez1io4UEfFcTg6m1etRNHIMhkyYjEHjT4DZliQ6EhH1AcsJ0VHIfj/cn34K19vvoH3Vqrg6XdNbiVJODqbRalEwdATKJk1D2eQTYbRwRIUoXrCcEB2GZ8MGuN5+G23LPkDI6RQdJ6oSsZwcTGc0ouyEaRh50qnILx8mOg4RHQXLCdFBAnV1cL39DlzvvAP/rl2i48RMopeTg6XlF2LkjFMwbPrJsNiTRcchoh6wnJDqhf1+uD/4AM63lqLz66+BcFh0pJhTUzk5QKvTYdC4EzDypFNRNGosN34jUhCWE1KtkNMJx8svo/WlfyPU3Cw6jlBqLCcHs2dmY8TPZmLEjFOQlM49VIhEYzkh1fHv2YPWJc/B+dZbkD39u+BdolB7OTlAkjQYMmESJp59PrKKB4qOQ6RaLCekGp3ffovWZxfDvXy5Kk/dHAnLyaFKxo7DxLPOR37ZUNFRiFSH5YQSmhwOw/3JJ2h9djE8FRWi4ygWy8nhFQ4biYlnnY+iUWNERyFSDZYTSkhyIADnG2+iZfGzir+ujRKwnBxd7uAyTDjrPAw6fgInzxJFGcsJJRRZluH+4AM0PvgQAntYSnqL5aT3MgYUY+KZ56Js0jRe04coSlhOKGF0fPklGu9/AN5Nm0RHiTssJ8cuNTcPJ5z9KwydNoMjKUQRxnJCcc+7ZQsa738AHZ9/LjpK3GI56bucwaWYMf/XyCstFx2FKGGwnFDc8tfUoOnBh9D2/vsA/xr3C8tJP0kShk6ZjmkXXoqkNO6TQtRfLCcUd4IOB5ofewzOl1+BnIAX4ROB5SQy9EYTxv/iHIybezb0BqPoOERxi+WE4oYcDKL1hRfR/L//i3B7u+g4CYXlJLLsmVk48cLLUDZpmugoRHGJ5YTigmfDBtT95Tb4tm4VHSUhsZxER375cMyYvwDZAweLjkIUV1hOSNFCbW1o/Mc/4Hztde7qGkUsJ9EjSRoM/9nJmDbvUl4FmaiXWE5Isdo++AD1d96l+ovyxQLLSfSZk+yYcdmVGDpluugoRIrHckKKE2hsRP1f/4r2T5aLjqIaLCexM3j8CZh5xTWwpqSKjkKkWCwnpCjON95Ewz33INzWJjqKqrCcxJbJasOMS3+NYSeeJDoKkSLpRAcgAoBAXR3qFv2ZG6mRKng72vHBo/9EfaUWJ5w1CRa7QXQkIkXhhSFIOPeKFag88ywWE1KVwmEnYsuaEF654ytUbmgSHYdIUXhah4SR/X403H8/HM+/IDqK6vG0TmzZM3MQks5HKKDtum3olFxMPXcIDCYOaBPxXwEJ4d+zB7W/vwHe778XHYUopiRJA0vaGXA2arvdvuXzOtRud+KUy4YhZyCXHJO68bQOxVzbsmWoPPscFhNSpYIRJ8HZ2HP5aGvy4K0H1uO7T2tinIpIWThyQjET9nrRcOddcL7+uugoREKk5BSgpW7EER8TDslY9cp2NFa1Yfq8Muj02iM+nigRsZxQTPh++AG11/8evh07REchEkKj1cKYNBve5t4NWG9dU4+W2g6cfuUI2NPNUU5HpCw8rUNR53xrKSp/eS6LCalawbBT4Gq2HdNzmva48frda1G9tTVKqYiUieWEokYOh9Hw93tQ96c/QfZ4RMchEiYtvwRNtUP79FxvewDvPrwB6z+qinAqIuViOaGoCHs8qLnuOrQuWSI6CpFQWr0eWtOpkGWpz8eQwzLWvPUDPnxyE/zeYATTESkTywlFXKCxEVUXX8Jr4xAByB96Otyt1ogc64f1jXjj3nVwNnRG5HhESsVyQhHl3bYdu8//FbybNomOQiRcxoAhaKweHNFjtu7twOt/X4sazkOhBMZyQhHTvno1qubNQ7CuTnQUIuF0BiNkzUwAfT+dczh+TxDvPbIRP6xvjPixiZSA5YQiwvHyy6i+6mqEOzpERyFShLzy2ehwRW8JcCgYxkdPbcL3q2uj9hpEonCfE+oXORxG4z33ovW550RHIVKMrIHD0FBdHIUxk+5kGfj0pW3wuAMYN7s4yq9GFDssJ9RnYb8ftTfcwImvRAcxmC0IBH8GKerV5EdfvbMLnnY/pp47BJIUu9clihae1qE+Cft8qLn2WhYTop/IHnIGPG5TzF9344oafLJ4M0KhcMxfmyjSWE7omIW9XtT85hp0rFotOgqRouQMHo2m6kJhr7/96wYse/Q7BPwhYRmIIoHlhI5J2OtF9dVXo+Pzz0VHIVIUo9UGr3ea6BjY830L3nmwAt6OgOgoRH3GckK9FvZ4UH3lVehc86XoKESKkzlwLrwdBtExAAD1u1x464H16Gzzi45C1CcsJ9Qr4c5OVC/4NTq/+kp0FCLFySsbj+aaXNExumnd24F3/1UBXydHUCj+sJzQUYU7OrBnwa/RuXat6ChEimO2p6C9bZLoGD1qrm7He49sQMDHOSgUX1hO6IhC7R3Yc8UCeNatEx2FSJHSCufC71Xurgz1u9qw7LGNCAW4iofiB8sJHVaovR3Vl18Oz7ffio5CpEj5QyehZW+m6BhHVbPVgQ+f2oQwlxlTnGA5oR7Jfj9qrv0tPBs2iI5CpEjW1HS0OSaIjtFruzc2Y/lzWyCHZdFRiI6K5YR6tHfRInR+yVU5RIeTnDsHAZ9WdIxjsv3rBqx8eZvoGERHxXJCh2j854Noe+dd0TGIFKtw+IlorUsXHaNPvl+9F5+/sVN0DKIjYjmhbhyvvoaWJ54QHYNIsZIystHaNFZ0jH6p+HgPvnm/UnQMosNiOaEu7k8/Rf1f/yo6BpFiSZIGtowzEArE1+mcnnz9biW+X10rOgZRj1hOCADg+W4Tam/4AxDifghEh1MwfAYcDSmiY0TMqle2Y+8Oh+gYRIdgOSH4a2pQffXVkDs7RUchUqzk7Hy0NIwUHSOiwiEZHz65CW0tHtFRiLphOVG5kNOJ6gW/Rqi5WXQUIsXSaLUwJc9COJh4H5kedwDLHuOVjElZEu9fGvVa2O9H9W+ugb+SE+OIjqRg2Ey4muyiY0RNS007li/ZIjoGUReWExVruPtueNavFx2DSNFS84rQtHeo6BhR98P6Rqxdxh9USBlYTlTK9d77cL78iugYRIqm1emgt5wGOayOj8qv3q3Eroom0TGIWE7UyLdrF+pvvVV0DCLFyx92OtpabKJjxI4MfLJkM1r2totOQirHcqIyYY8Htb/7HcJcmUN0RBmFg9FYM0R0jJgLeENY9uhGeDsCoqOQiin3Ot8UFfW33QbfDm5dTZHhDQTx0aZt+K62Ae0+H/JT7PjF2OEYkJbS4+N3Nrbg8U8PvWbTTadPR5Z93wjF9vomvLn+e7T7fBiel41zx42CTrvv5yiPP4CHPvkcV06fiFSrOWrvS2cwAPpTAFmK2msoWVuzFx89tQk/v24MJI06/wxILJYTFXG89hpcb78jOgYlkNfXbkS9y40LJo5GssmEdVW1eHLlV/jjadORbDEd9nk3z5oOo+7Hjx+b0QgACMsyXvqqAieVD0JZTiae/2Idvtq1B1OGFAMA3t+4FZMGDYhqMQGAvPLZaKyO7msoXc1WB9Z9VIVxs4pFRyEV4mkdlfBu3oyGO+8SHYMSSCAYwnc19ThjVDkGZaYjI8mK00aUIs1qwRc/VB3xuTajEXazqetLs/+n8w6fHx0+PyYPLkJOchKG5WWjoW3f/IfK5lbUOFyYNqQkqu8rq3goGqqj+xrx4pv3KtFY1SY6BqkQy4kKhNxu1Fz/e8g+n+golEBCsoywLEOv7X6dGb1Wg8rm1iM+9x8fr8bt73yCxz/9Ejsbf9wA0GY0wG4yYnt9MwLBECqbW5GbkoRgKIw3123COceP6Coy0aA3mRGUZ0ACT2UA+3aQ/fjZzdygjWKO5UQF6v7fQgT27BEdgxKMSa9DUXoKPt68Ay6PF+GwjHVVNdjT4oTb23MRtpuM+OXxIzF/8vGYP/l4ZCZZ8cSnX+GHphYAgCRJuHjScfh48w7c+9FK5KckY0JJIVZs/QGDszKg12rxyPIvcM8Hn+KzHbsj/p5yh5yBzrbDn45SI2dDJ774D+epUWxxzkmCc7zyKtwffyw6BiWoCyaOwWvfbMQd7y6HRpKQn2rH2AF5qHH2fCogy27rmvgKAMUZqXB2erFy2y4MykwHAJRkpuH6U6Z2PabJ3Y71VTX4/SnT8Oh/12BaaQnKcjJx/0erMDAzDXkpkdm5NWfwKDTWDIjIsRLNplW1KBqZjuKRGaKjkEqwnCSwQF0dGu+7T3QMSmAZNit+M2MSfMEgfIEg7GYTXlizHmnHMGG1KD0F66tqe7xPlmW8vvY7zB09DDJk1DrbMKogFwadFoMy07CrqSUi5cRotcHnndbv4ySyFS9sxQV/ngBzkkF0FFIBntZJYHW3/gXhjg7RMUgFjDod7GYTOv0BbKtvwoi8nF4/t9bZhiRzz6dSvq6shtVgwPD8bITlfbeFwuH9v8pdt/VX5sA58HQYI3OwBOVp82PFC1tFxyCVYDlJUM4330LH6tWiY1CC21bfhK11jWhp78T2+iY8/umXyEyyYXxJAQBg2catePmriq7Hr9peiU219Whyd6De5cayjVvxXU09pg4uOuTYbq8Pn2zeiTPHDgcAWAx6ZNltWL2jErubHdjZ2Izi9NR+v4e80uPRXJPX7+Oowe6Nzfh+dc+jXESRxNM6CSjQ2IiGe+4RHYNUwBMI4ION2+D0eGEx6DGyIAezRpRBq9n3c0+b1wdHp6fr8aFwGO9u2AKXxwu9Voscuw2XTxuPoblZhxz77W83Y3rZwG77pfxq/Gi88nUFPtuxG9PLBmFAekq/8puTktHRMblfx1Cbz/6zE/mlqUjJtoiOQglMkmU5QgOjpBTV116L9k+Wi45BcWTZ6EGiIwhRMOIiNNceWozoyLKK7fjlTcdz91iKGp7WSTBty5axmBD1Qn75CSwmfdS4u42ndyiqWE4SSNDhQP3f7hQdg0jxrClpcLsmiI4R1758exc87X7RMShBsZwkkIY7/oZQ65F35iQiICVvLvxeTrnrD19nEGve/EF0DEpQLCcJwr18OdqWLRMdg0jxCoZNQ0tduugYCWHLmjrU73KJjkEJiOUkAYS9XtTf8TfRMYgULyk9C87m40THSBwysOqV7ZAjteEM0X4sJwmgdfFiBOvrRccgUjZJgi1zDoIB7dEfS73WtMeNTas4OZYii+UkzgWbm9Hy1NOiYxApXuHwGXA0pIiOkZC+eoeTYymyWE7iXNPD/0K4s1N0DCJFS87OQ0vDKNExEhYnx1KksZzEMd+OHXC+8YboGESKJmk0MCXPRjjIj7to4uRYiiT+a41jDffeB4RComMQKVrh8JlwNfX/ysV0FDKw8uVtnBxLEcFyEqfaP/ucF/YjOorUvCI01Q0THUM1mqvbsf1rTs6n/mM5iUNyOIzGe+8VHYNI0bQ6HfTm0yCH+DEXS9+8vxvhUFh0DIpz/Fcbh5xvvAHf9u2iYxApWv6w09DWahMdQ3VcTR5s+6pBdAyKcywncSbc0YGmhx8WHYNI0dILB6GxplR0DNVau6ySoyfULywncaZl8RKEmppFxyBSLJ3BAEl3KiBLoqOoVluzF1u/5NwT6juWkzgSam9H6/PPi45BpGh55bPQ7jSLjqF6a5ftRoijJ9RHLCdxxPHiSwi3tYmOQaRYmcXlaKgeKDoGAXC3eLH1izrRMShOsZzEibDHg9bnnhMdg0ix9CYTwjgJEng6RynWfrAboSBHT+jYsZzECccrryLkcIiOQaRYuaVnoMNlEh2DDtLe6sOWz/eKjkFxiOUkDoT9frQ++6zoGESKlT1oBBqri0THoB6s+7AKoQBHT+jYsJzEAdfSpQg2NYmOQaRIRosV/sB00THoMNodPnz/GUdP6NiwnCicLMtoXbxEdAwixcoaNAcet1F0DDqCDcv38Jo7dExYThSu/b//hb+yUnQMIkXKLT0OTTX5omPQUbQ1e1G5kfszUe+xnChcC+eaEPXIZLOjs2Oy6BjUSxv/Wy06AsURlhMF82zcCM/adaJjEClSZvFc+DoNomNQL9Vuc6Kltl10DIoTLCcK1vocd4Ml6kl++QQ01WaLjkHHaOMKjp5Q77CcKFTI6YT7449FxyBSHEtyKtyuE0THoD7Y/nUDvB0B0TEoDrCcKJTr3fcg+/2iYxApTmrBXPi9OtExqA+CgTC2ruGW9nR0LCcK5XzzTdERiBSnYNhUtOzNEB2D+mEz9zyhXmA5USDP99/Dt2WL6BhEimJLy4Sz5XjRMaifHPWdqN3GS3HQkbGcKJDrDY6aEHUjSbBnn4GgXys6CUXA96trRUcghWM5UZiwzwfX+++LjkGkKIXDp6O1Pk10DIqQHyqa4HFzTh0dHsuJwrg//gRhl0t0DCLFSM7KRWvDaNExKILCQRnbv24QHYMUjOVEYVxvviE6ApFiSBoNzKmzEQrydE6i2bmuUXQEUjCWEwUJ1NaiY82XomMQKUbB8JPhbEwWHYOioL7ShXaHV3QMUiiWEwVxvvkWIPPKnUQAkJJTiOa64aJjULTIwA/rm0SnIIViOVEQ19KloiMQKYJGq4Mh6XTIIX5EJbKd6zjvhHrGf/kK4d2yBYFaLq8jAoCC4aegrTlJdAyKsvrKNrhbeWqHDsVyohDu5StERyBShPSCgWiqKRcdg2JBBn5Yz4mxdCiWE4VoX8FyQqTVGyAZT4UsS6KjUIxw1Q71hOVEAQINDfBu3iw6BpFw+UNPR3urRXQMiqGG3Ty1Q4diOVEAjpoQAZlFpWisHiQ6BsWazNETOhTLiQK4V/xXdAQiofRGE0LSTAA8naNGnHdCP8VyIli4owOdX30lOgaRULlls9HpMomOQYI0cNUO/QTLiWDtn30O2c8LYJF6ZQ8cgYbqItExSLDqLa2iI5CCsJwI1r5iuegIRMIYzBb4g9Mh8XSO6tVuc4iOQArCciKQHAqhfeUq0TGIhMkePAcet1F0DFIAlhM6mE50ADXzfPstQk6n6BhEQuQOGYOmmgLRMXpt596N+GTDq9jTvANtnS1YcOrtGF0ytet+X8CDt796Cht3f44ObxvSknLwsxFnYdrwn/fq+Gt3rsCS5XdiVPFk/Pq0O7pu/2bHJ3j7q6fhD3oxqWwWzpp0Zdd9Le56PPL+Tbjp7MdgNlgj92YF6HD54ajvQGpOfL8PigyOnAjU8SUnwpI6mWxJ6PRMEx3jmPiCHuSnD8J5U37b4/1vfPEoNld/g0tO+hMWnb8YM0aeg9c//xc27v78qMdudTdg6ZdPYFDOyG63t3tc+PfKB3DWCVfimtl/x1fb/w+bqn68cvmrqx/ELyYsiPtickDtdqfoCKQQLCcCedavFx2BSIiM4rnwdehFxzgmwwdMxNwJ/4MxA3suVZUNmzGx9FSU5o1BelIOpg6bg/z0QdjTtP2Ixw2HQ1iy4i7MHjcfGfbcbvc1u+tgMlhx/OAZKMoqR2neGNQ7qgAA3+xYDq1Gf9g88ahmK0/t0D4sJ4LI4TA8GzeKjkEUc3ll49FcmyM6RsQNzBmB76rWwNnRBFmWsb32WzS6ajC0YNwRn/fBuhdgMyVjcvnsQ+7LSs5HIOhDdfMOdHjbUNW0DXnpA9HhbcP7a5fgvKk9j+LEq707HJBlWXQMUgDOORHEt307wu3tomMQxZTFngK3+wTRMaLi3CnX4t+rHsCiF38FjUYLDTSYN/0PGJQ78rDP+aF+E9Zs+wC3nPNkj/dbjEm4eMbNeP6/9yAQ9GFC6SkYVjgeL356H6aPOBMtbfV44sM/IxQOYva4SzB24PRovb2Y8LgDaN3bgfR8m+goJBjLiSCdPKVDKpRWOBfNe+PrdE5vfbrpLexu2IIrT7sDaUnZ2Fn3HV797CHYLWkoLzj+kMd7/Z14fsXduODEG2AzJx/2uKNLpnabeLt9bwX2tlbivCm/xW2vXILLTl4IuyUN9711DQbnjkKSOTUq7y9WarY6WE6I5UQUz/pvRUcgiqn8YZPRvDdTdIyo8Ad9ePfrZ7Dg1NsxomjfyFB++iDUtOzE8g2v91hOmtv2osVdjyc+XNR124FTGtc9eQr+fP5zyEzO6/acQMiP11Y/hPkn/QlNbbUIh0MYkjcaAJCVXIDdDVswsnhytN5mTNRsc2D0yYWiY5BgLCeCeL5lOSH1sKVloK3lyHMv4lkoHEQoHIQkdd9MTiNpICPc43OyUwbg/537dLfb3vvmWXj9HvxyyjVItR1a5D5c9yKGDZiAwsxSVDfvQFgOdcsQlnt+rXhSt9MJOSxD0nBjPjVjOREg0NCIQG2t6BhEsSFJsOfMQWtdfH/c+AIeNLl+/Hfb4q5HTfNOWIxJSEvKxuDc0Vj65ZPQ64xIs2VjZ90GfL39Y5w96equ5zy/4u9ItmbgFxOvgF5nQF5aSbfXMBv2nc746e0AUNe6G+t/+BS3/PIJAPvKjSRJ+GLrMtjNaWhw7kFRVlk03npM+TqDaK5tR2ZhkugoJFB8f1rEKc+3nG9C6lE47EQ07U0THaPfqpq24eF3/9D1/ZtrHgMATCw9FRfPuBn/M3MR3v7qaTy3/C50+txIS8rGnAn/g6nD5nY9p7W98ZDRld6QZRkvr/oHzp58NYx6MwDAoDPiop/dhNc+exjBUADnTfktUqyJcdqsuZrlRO0kmeu2Yq7h7rvR+tzzomMQdVk2elBUjmvPzEFIOh+hgDYqx6fENPrkQkw9d4joGCQQ9zkRoJOTYUkFJEkDS9oZLCZ0zFpquc2C2rGcxJjs98O7davoGERRVzDiJDgbD79EluhwWE6I5STG/FVVQCAgOgZRVKXkFKClboToGBSnPO4AOlw+0TFIIJaTGPPtqhQdgSiqNFotjEmzEQ7x44X6rqWGoydqxk+PGPPv+kF0BKKoKhh+KlzN3OGT+qeZp3ZUjeUkxjhyQoksLb8ETbXxv9cGicd5J+rGchJj/l27REcgigqtXg+t6VTIYX6sUP/xtI668VMkxvyVHDmhxJQ/9DS4W62iY1CCcNR3IhSK/+34qW9YTmIoUF+PcGen6BhEEZcxYAgaq7lpFkVOOCTDUcfPS7ViOYkhntKhRKQzGCFrZwLghdooshz1HaIjkCAsJzHEybCUiPLKZ6PDaRYdgxJQeyv3OlErlpMY4sgJJZqskmFoqC4WHYMSVIeT5UStWE5iyFfJckKJw2C2IBiaAYmncyhK2p1e0RFIEJaTGArU7hUdgShicgafgU63UXQMSmAcOVEvlpMYCjU3i45AFBE5g0ejsaZQdAxKcO0sJ6rFchIjYZ+Py4gpIRitNni900THIBXodPkhh2XRMUgAlpMYCbW0iI5AFBFZJXPg7TCIjkEqEA7J6HT7RccgAVhOYiTY0io6AlG/5ZWNQ1NtnugYpCKcd6JOLCcxEmrlyAnFN7M9Be3uSaJjkMq0O1hO1IjlJEaCrQ7REYj6JX3AHPg9etExSGU4cqJOLCcxwpETimf5QyehuTZLdAxSIa7YUSeWkxjhnBOKV9bUdLQ5JoiOQSrlaeOEWDViOYkRrtaheJWcOwcBn1Z0DFKpoD8kOgIJwHISI0EHR04o/hQOPxGtdemiY5CKBQNh0RFIAJaTGAlxQizFmaSMbLQ2jRUdg1QuxHKiSiwnMcLdYSmeSJIGtowzEArwdA6JxZETdWI5iRE5FBQdgajXCobPgKMhRXQMIs45USmWk1gJsf1TfEjOzkdLw0jRMYgAcORErVhOYkQOsf2T8mm0WpiSZyEc5EcDKQPLiTrxEyhWWE4oDhQMmwlXk110DKIuIZ7WUSWWkxjhyAkpXWpeEZr2DhUdg6gbjpyoE8tJrLCckIJpdTroLadBDvMjgZSF5USd+EkUIxw5ISXLH3Y62lpsomMQHSIUCEOWZdExKMZ0ogOoBcsJKVlx1V5kZSXBbciC02tCmyMA/n9AShEOydDqJNExKIZYTmKF5YQUzLbqddgAHLjucNhsg798Ijz5w9GeVIC2sB0OF+D38u8xxZYkAVodB/nVhuUkRjhyQvFE42mH6dvlMH27HKn7b5MlCcGi4fAOGouOtEFw6zPg7DTA7QwIzUqJTWvgLsVqxHISKywnFOckWYZ+9ybod29CEoCc/beH7enwlU9EZ+5QtFvz4Ara4HSEOZGRIkKn56iJGrGcxIhkMkH2eETHIIo4TVsLzF8vgxnLcOD6xbJWh8CgMfAWj0ZHagnaNGlwtGvR6eZlHOjY6AwsJ2rEchIjGpsVIZYTUgkpFIRh+1oYtq+FHUDu/ttDGfnwlY5HZ3YZ3OZcuPxmOB0hhEOcfUs90+l5WkeNWE5iRGtLQqipWXQMIqG0zbWwNNfCAiBj/22ywQR/6Th4CkeiI3kA2qQUOFwSvJ08FUocOVErlpMY0di4hwRRTyS/F8ZNn8G46TOkAMjff3swfzC8g49HZ8YQuI1c4qxWek6IVSWWkxjRJrGcEB0LXe1O2Gp3dl/ibLXDXzq+a4mzK2yHwykj4OPk20Sl5YRYVWI5iRGNLUl0BKK4p+lo67bEuRD7lzgXD4d34I9LnB0dBrS7uMQ5Eeg4cqJKLCcxwtM6RNEhyTL0lZugr/zJEufkDPjKJnRb4uxwhBHiEue4wjkn6sRyEiM8rUMUWxpXc89LnAePhbdoFJc4xwmOnKgTy0mMaKwsJ0SiSaEgDNu+gWHbN92XOGcW/LjE2ZQDp98MF5c4KwInxKoTy0mMaJI454RIqbRNNbA01Ry6xLlsPDyFI9Bh5xJnUawpBtERSACWkxjR2KyiIxDRMZD8Xhi/Ww3jd6u7L3EuGALfoOPRkTl431WcPSa0ObnEOVpsKUbREUgAlpMY0SbZRUcgogjQ1eyArmYHrPjJEueyCfuWONvyucQ5gqypJtERSACWkxjRZWWKjkBEUaLpaINp/Scwrf/kJ0ucR+xb4pw+EG4dlzj3BUdO1InlJEb0ublHfxARJYx9S5y/g77yu25LnEOpWfAPGY/OvKFot+RyifNR2FJZTtSI5SRGdFlZgE4HBLlkkUjNtI5GmL9+H2a8f+gS5+LRaE8phptLnAEARquOS4lViuUkRiStFrqsTAT31omOQkQK89MlzgeEsgbAN2QcOrLL0G7KhtNvgas1iHBYHbNvbSmcb6JWLCcxpM/NYzkhol7TNu6BpXEPLAAOzFrrWuJcMAIdKUVwyclwtEnwJeASZ1saT+moFctJDOnz8uBZt050DCKKY0da4uwddDw6M4fAbchMiKs4czKserGcxJChsEB0BCJKULqaHbDV7Oh+FWdbMvyl49GZPxwdSQVwhZLiaokzJ8OqF8tJDOkHDBAdgYhURNPu6lrinIaDljiXjIS3ZN8S5zZdBpwdOrS7lDf51so5J6rFchJDhgFFoiMQkcpJsgz9ro3Q79p4hCXOeXAGrHA6xS5x5pwT9WI5iSFDEUdOiEiZfrrEuQj7lzgPGQtv0b4lzm2aNDjdWnS2x2aUJS2Hl/1QK5aTGNKlp0NjsyHc3i46ChHRUUmhIAxbv4Fh674lznn7bz94ibPblA2Xb/9VnCO4xNlo1cHKCbGqxXISY4aiIni//150DCKiPutxibPRDF/ZOHgLRqIjecC+Jc4uCT5P35Y4p+Vy1ETNWE5izDRsKMsJESUcyeeBaeNqmDb+ZIlzYRm8g45DZ8ZguA2ZcHiMcDuDR13inJ5ni3JiUjKWkxgzDR8OvP4f0TGIiGJCV70NtuptPSxxnrB/iXM+nKEkOH+yxDktjyMnasZyEmOm4SNERyAiEmrfEuePYVr/cbclzoGBI+ErGYuOtIHIyR0mOiYJJMlyPO8fGH9kvx/bjh8HOcDLphMR9UiSUPrN19DaeGpHrTSiA6iNZDDAOGSI6BhERIplGDCAxUTlWE4EMI3gqR0iosMxDecpHbVjORHANGK46AhERIplGsZyonYsJwKYOXJCRHRYpuH8AU7tWE4EMA4ZAslgEB2DiEh5JIkjJ8RyIoKk18NYViY6BhGR4hjLy6FNThYdgwRjORGE806IiA5lnThRdARSAJYTQSxjxoiOQESkONZJJ4iOQArAciKIdfJkQJJExyAiUg6dDpZx40SnIAVgORFEl5nJeSdERAcxjxgBjZXX1CGWE6FsU6eIjkBEpBgWntKh/XjhP4GsU6ei5elnRMcgIlIE60RllpNQKIQAr4fWb3q9HlqttlePZTkRyHLccZDMZsgej+goRERCSUYjzMeNFR2jG1mWUV9fD6fTKTpKwkhJSUFOTg6ko8y5ZDkRSDIYYJkwHh0rV4mOQkQklPm4sdAobHPKA8UkKysLFovlqP+h0uHJsozOzk40NjYCAHJzc4/4eJYTwWxTprKcEJHqKe2UTigU6iom6enpouMkBLPZDABobGxEVlbWEU/xcEKsYNapU0VHICISznqCsjZfOzDHxGKxCE6SWA78eR5tDg/LiWDGgSXQ5+WJjkFEJIw2PR2mkSNFx+gRT+VEVm//PFlOFMA6hUuKiUi9kk6ZCamXqzhIHVhOFMA6jad2iEi97KfPEh2BFIYTYhXAduKJ0FitCHd0iI5CRBRT2owMWCaMFx3jmGwpHxrT1xu6dUuvH3u00ybz58/HkiVL+pko+lhOFEBjMiFp5ky43n5bdBQiopiyn3oKJA0H8SOlrq6u6/evvvoqbr31Vmzbtq3rtgMrZg4IBALQ6/Uxy9db/BuhEPY5c0RHICKKuaTTTxcdIaHk5OR0fSUnJ0OSpK7vvV4vUlJS8Nprr+FnP/sZTCYTXnzxRQDA4sWLMXToUJhMJpSXl+PRRx/tdtwvvvgCY8aMgclkwrhx47B06VJIkoSKioqovA+OnCiEdfIkaDMyEGpuFh2FiCgmdJmZvAqxADfffDMeeOABLF68GEajEU899RT+8pe/4JFHHsHYsWPx7bffYsGCBbBarZg/fz7cbjfmzp2L2bNn49///jeqqqpw/fXXRzUjy4lCSFot7LNmwfHCC6KjEBHFRNKpp/KUjgDXX389zj777K7v77jjDjzwwANdt5WUlGDz5s144oknMH/+fLz00kuQJAlPPfUUTCYThg0bhtraWixYsCBqGVlOFCR5zhksJ0SkGvbZXKUjwriDRquamppQXV2Nyy+/vFvZCAaDSE5OBgBs27YNo0aNgslk6rp/woQJUc3IcqIg5tGjoS8agEDVHtFRiIiiSpedDfNxx4mOoUpWq7Xr9+FwGADw1FNPYeLE7rv0HtheXpblQ1YBybIc1YwcT1OY5DM4MZaIEl/Saady91UFyM7ORn5+Pnbt2oXBgwd3+yopKQEAlJeXY+PGjfD5fF3PW7t2bVRzceREYexz56D5J7OkE9nMH3ZibzB4yO0XpKTglqxsPNzchFXtHagJ+GHTaDHJasENmZnI0h1+6dsOnw+PNDfhe68Xe4NB3JKZhUvS0ro95t02F/7Z1ITOcBjnJKfgj1lZXffVBvy4oroarxcVw8ZdK4miInnuXNERaL/bbrsN1113Hex2O2bNmgWfz4e1a9fC4XDghhtuwLx587Bw4UL8+te/xi233II9e/bg/vvvBxC97f05cqIwxpISmIYPFx0jZl4rKsbKQYO7vp4uKAQAnJaUBG84jM1eL65KT8d/iovxcH4+dvv9uKam9ojH9IbDKNAbcENmFjJ6KBeOYBC31tfjj5lZeKqgEG+3ubCyvb3r/tsbGnBDZhaLCVGUmEaMgFmh19JRoyuuuAJPP/00lixZgpEjR2L69OlYsmRJ18iJ3W7Hu+++i4qKCowZMwYLFy7ErbfeCgDd5qFEEkdOFCj553Ph/f570TFiIk3X/a/g060tKNTrMd5sgSRJeKZwQLf7F2Zl4/w9VdgbCCDvMBsHjTSbMXL/RkP/aGo85P7qQAA2jQaz7HYAwASLBTv9PkyHDe+1uaCXJJySlBSJt0dEPUi94ALREfrlWHZsFenSSy/FpZde2vV9cXHxYeeKzJs3D/PmzTvssSZPnowNGzZ0ff/SSy9Br9djwIABh31Of3DkRIGSf/ELSFFqo0rml2W829aGs/dvHNQTdzgMCYC9H8sPiwwGeGUZm71eOEMhbPJ6UWY0whkK4V/NzViUld3nYxPRkWmTk2E/Y7boGHSMnn/+eXz22WeorKzE0qVLcfPNN+O88847ZMfZSOHIiQJpU1KQPHcunK+/LjpKTC13u+EOhXDW/uVrP+ULh/HPpiackWTv1ymXZK0Wd+fk4k91dfDKYfzcbsdUqw0L6+pwUWoqagMBXFNbg6As45qMDJyWZO/zaxFRd8lnnw2NCn/4inf19fW49dZbUV9fj9zcXJx77rm48847o/Z6LCcKlXbJxaorJ2+6XJhmtfY42TUgy/hD3V6EIePW7P6PbMxMSsLMg07dfN3ZgR1+HxZlZ+P0Xbtwf14eMnRanF9VhXFmC9J1/KdC1G+ShNQLfiU6BfXBTTfdhJtuuilmr8fTOgplHDIE1smTRMeImdpAAGs6O3BOcsoh9wVkGTfsrUVtIIBnCgdEfKKqPxzGXxsacFt2Dvb4/QhBxniLBSUGI4oNBmz0eiL6ekRqZZ06FYYozVGgxMJyomCpl1wiOkLMvOVyIk2rxXSbrdvtB4pJld+PZwoKkRKFFTSPtbRgmtWKYSYTQgCCB00YC8gyQtHda4hINVLnxfdEWIodjlUrmG36dBiKi+HfvVt0lKgKyzLecrlwZnIydAdNhA3KMq7fW4stXi8ezS9ACEDT/j1RkrVaGPY/9pa6vcjS6XBD5r69SvyyjB/2bxYUkIGGYBBbvF5YNBoUGQzdXnuHz4cP3G14s3jfkrmBBgM0koQ3nE5k6HSo9PsxkufHifpNn58P2/TpomNQnGA5UTBJkpB60UVo+NvfREeJqjWdnagLBnH2T07pNAQD+O/+/UfOrtrd7b4lhYWYYNm3BXNdINBtCLApGMA5Bz1+saMVix2tGG8247kBRV23y7KM2+rrcUtWNiz7V/+YNBrclZOLOxrq4ZdlLMrKRvZhliwTUe+l/Op8XuSPek2So71BPvVLuLMTO342A+G2NtFRiIj6RDIYMHjlp9ClpoqO0mterxeVlZUoKSmJ2kZjatTbP1fWWIXTWCxIOecc0TGIiPrM/vO5cVVMSDyWkziQeuGFALdSJ6J4pNcj46qrRKegg+zevRuSJKGiokJ0lMPinJM4YCjIR9LJJ8P9f/8nOgoR0TFJOfMXMBQUiI4RUf971YqYvt41j5/U68ce7UJ88+fPx2233XbU43i9Xlx11VVYt24dtmzZgjlz5mDp0qW9ztFfLCdxIuOa38D98ccApwgRUbzQ65F+JUdNYqmurq7r96+++ipuvfVWbNu2res2s9kMh8Nx1OOEQiGYzWZcd911eOONN6KS9Uh4WidOmMrKYJ81S3QMIqJeSznzTBgK8kXHUJWcnJyur+T91yn76W0H7Nq1CzNmzIDFYsHo0aOxZs2arvusVisee+wxLFiwADk5OTF/HywncSTzut8C3EadiOKBXo+Mq64UnYKOYOHChbjxxhtRUVGB0tJSXHDBBQju30tKNJaTOGIoLkbKWWeKjkFEdFQpZ50FfT5HTZTsxhtvxBlnnIHS0lLcfvvtqKqqws6dO0XHAsByEncyfvMbSD/Z5ZSISEkkjprEhVGjRnX9Pjc3FwDQ2NgoKk43LCdxRp+bi5RfnS86BhHRYSWffTb0eXmiY9BR6A/a/frAKp9wOCwqTjcsJ3Eo48orobFYRMcgIjoER00oElhO4pAuPR2pl1wsOgYR0SGSf3kO9PtPEVB827x5MyoqKtDa2gqXy4WKioqYbdzGpR9xKv3yy+F4+RWEXS7RUYiIAACapCRkXnut6BgUIbNnz0ZVVVXX92PHjgWw76Kp0cYL/8Wx5iefQtM//iE6BhERACD7//0JaZdcIjpGRPDCf9HBC/+pQNrFF0GXx+FTIhLPWFq67zpgRBHAchLHNGYzchYuFB2DiAjZixZC4gVKKUJYTuJc0sknw3ZS7y8KRUQUafbZs2GdMEF0DEogLCcJIGfRQkhcWkxEAmgsFmTdfJPoGJRgWE4SgD4vD5m/uVp0DCJSofSrr4I+O1t0DEowLCcJIu3SS2EcMkR0DCJSEUNJCdLnzxcdgxIQy0mCkHQ65Nx+G7B/C2IiomjLXriQ1/qiqGA5SSCW445D8jlni45BRCpgm3kybFOniI5BCYrlJMFk33gjtKmpomMQUQLT2O3IWbRIdAxKYCwnCUabkoKsP/5RdAwiSmA5f/4z9Dk5omNQH+3evRuSJMXsOjl9wWvrJKCUs8+C69130LnmS9FRiCjB2GfPQvLcOaJjCPXA+bF9/3949b1eP1Y6yrzD+fPn47bbbjvqcbxeL6666iqsW7cOW7ZswZw5c7B06dJuj7n00kvx3HPPHfLcYcOG4fvvv+915p5w5CRB5f3979CmpIiOQUQJRJeVhZy//EV0DDqCurq6rq8HH3wQdru9220PPfRQr44TCoVgNptx3XXXYebMmT0+5qGHHup27OrqaqSlpeHcc8/t9/tgOUlQ+uxs5P7tDtExiChRSBJy77oL2uRk0UnoCHJycrq+kpOTIUnSIbcdsGvXLsyYMQMWiwWjR4/GmjVruu6zWq147LHHsGDBAuQc5hRecnJyt2OvXbsWDocDl112Wb/fB8tJAkuaORMp558vOgYRJYDUefO4OifBLFy4EDfeeCMqKipQWlqKCy64AMFgsM/He+aZZzBz5kwUFRX1OxvLSYLL/tMtMAwaJDoGEcUxQ0kJsv54o+gYFGE33ngjzjjjDJSWluL2229HVVUVdu7c2adj1dXV4YMPPsAVV1wRkWwsJwlOYzIh/4H7uVESEfWNToe8e++FxmQSnYQibNSoUV2/z83NBQA0Njb26VhLlixBSkoKzjzzzEhEYzlRA1N5ObL+cIPoGEQUhzKuvgrmkSNEx6Ao0Ov1Xb8/sMonHA4f83FkWcazzz6Liy++GIYI/SDMcqISqZdcAuuJ00THIKI4Yho9ChlXXik6BincypUrsXPnTlx++eUROybLiUpIkoS8u+6CNj1ddBQiigPa9HQUPPggJB23w1KrzZs3o6KiAq2trXC5XKioqOhx47ZnnnkGEydOxIgRkRth4986FdFlZCDv7rtQfeVVgCyLjkNESqXToeDBf0K/fx4CqdPs2bNRVVXV9f3YsWMB7DuNc4DL5cIbb7zR6/1TekuSZf4vpTaNDz6IlsefEB2DiBQqe9EipF10oegYQnm9XlRWVqKkpAQmTgaOmN7+ufK0jgpl/u53sM2YIToGESlQ8jlnq76YkHgsJyokSRLy7ruX+58QUTem0aO4PT0pAsuJSmltNhT+7yPQ2O2ioxCRAmgzM1Dw8L+g4Z5IpAAsJypmKC5G/gMPAFqt6ChEJJCk16PgoYehz84SHYUIAMuJ6tmmTUX2LbeIjkFEAmX/eREsx40VHUORuGYksnr758lyQki7+CKkXnSR6BhEJEDK+ecj9bzzRMdQnAO7p3Z2dgpOklgO/HkevDttT7jPCQHYd4HAQHU12leuFB2FiGLEOmUKchYtFB1DkbRaLVJSUrquNWOxWLq2eKdjJ8syOjs70djYiJSUFGiPMp2A+5xQl3BHB3ZfeBF8W7eKjkJEUWYaORJFSxZDY7WKjqJYsiyjvr4eTqdTdJSEkZKSgpycnKMWPZYT6ibQ0ICqeRciUFsrOgoRRYmhqAhFL/8burQ00VHiQigUQiAQEB0j7un1+qOOmBzAckKH8NfUoOrCixBsaBAdhYgiTJeZiaKXX4ahIF90FKLD4oRYOoShoAADFi+GNiNDdBQiiiCN3Y7Cp55kMSHFYzmhHhkHlmDAM89Am5wsOgoRRYDGYsGAJ5+AqbxcdBSio2I5ocMylZWi8JlnoElKEh2FiPpBMhpR8OijMI8ZIzoKUa+wnNARmUcMR+ETT0CyWERHIaK+0OtR8PBDsJ4wUXQSol5jOaGjshw3FoWPPgrJaBQdhYiOhVaL/PvuhW36dNFJiI4Jywn1ivWEiSj418OQjrKrHxEpg2QwIP/Bf8J++umioxAdMy4lpmPi/uQT1Fz/eyAYFB2FiA5DslhQ+Mi/YJ08WXQUoj5hOaFj1r56NWp+dz1kXnOCSHE0yckY8MTjnPxKcY3lhPrEs3Ejqq+8CiGHQ3QUItpPl5mJwmeehqm0VHQUon5hOaE+81VWovqKBdzqnkgB9AUFGPDsMzAMGCA6ClG/cUIs9ZmxpARFL/8bxrIy0VGIVM0weBCKXnqJxYQSBssJ9Ys+KwtFL74Ay/jxoqMQqZJp5EgUvfAC9NlZoqMQRQzLCfWbNikJhc88jaRTTxUdhUhVLBMnYsDixdClpoqOQhRRLCcUEZr9eyqkzrtAdBQiVUj+5TkY8NST0NqsoqMQRRwnxFLENT/2GJoe/hfAv1pEkafTIfuWW5B20YWikxBFDcsJRYX7k0+w95Y/IdzeLjoKUcLQpqYi/8EHYZ04QXQUoqhiOaGo8VVWova66+DbsVN0FKK4Zxw6FIWP/Av6/HzRUYiijnNOKGqMJSUofvVV2GfPEh2FKK7ZZ89C8b9fYjEh1eDICcVEy5IlaLz/AV6Th+hYaDTI/P31yFiwQHQSophiOaGY6fzmG9T8/gaEmptFRyFSPI3djvz774PtxBNFRyGKOZYTiqlAQyNqf/97eNavFx2FSLGM5eXI/+c/YCwpER2FSAiWE4o5ORBAwz33wvHii6KjECmLRoP0/7kMmdddB8lgEJ2GSBiWExKm7eOPUX/b7Qi1tIiOQiScPi8Peff8nZeCIALLCQkWdDhQf9vtcH/0kegoRMIk/+IXyP7zImhtNtFRiBSB5YQUwfX++2i4428IOZ2ioxDFjDY5GTm33w776aeJjkKkKCwnpBjB5mbU3foXtK9YIToKUdRZp05F7p138mrCRD1gOSHFcS5dioa77ka4rU10FKKIk0wmZN14I1IvnAdJkkTHIVIklhNSpEBDA+oW/Rkdq1eLjkIUMZYTTkDOrbfCOJBLhImOhOWEFM3x+utovO9+jqJQXNNlZyP7lpthn8VLORD1BssJKV7Q4UDTgw/B+Z//AKGQ6DhEvafXI33+Jci4+mporFbRaYjiBssJxQ3vtm1ouOtudH71legoREdlnTwJ2YsWwThwoOgoRHGH5YTiTtv//R8a770PgZoa0VGIDqHLzUX2zTdzeTBRP7CcUFwK+/1ofXYxWp58EuHOTtFxiCDp9Ui77DJkXHUlNBaL6DhEcY3lhOJaoLERTQ/8A6533gH4V5lEkCQknXYaMn93HS/URxQhLCeUEDwbN6Lh3nvhWbtOdBRSC0lC0syTkXHtb2EqKxWdhiihsJxQQun4+mu0PP44Or5YIzoKJTDbSSch87fXwjR0qOgoRAmJ5YQSkqeiAs2PPY72lStFR6EEYps+HRm//S3MI4aLjkKU0FhOKKF5N29G82OPw/3JJ5yTQn1mnToVmdf9FuZRo0RHIVIFlhNSBd+OHWh+4km0ffABN3Kj3pEkWKdMQcZvfgPLcWNFpyFSFZYTUhX/7t1ofvIptL37LuRAQHQcUiCNzYbks85C6gUX8Bo4RIKwnJAqBVtb4XrzTTheex2BPXtExyEFMA4ZgtQL5yF57lxuNU8kGMsJqZosy+j88ks4Xn0N7uXLAY6mqItOh6STTkLqhRfCOnGC6DREtB/LCdF+wZYWON98E87X/8PRlASnzchAyrm/ROqvfgV9drboOET0EywnRD8hyzI6vvgCztdeh3vFCo6mJAjJaIR12lQkz56NpJkzIRkMoiMR0WGwnBAdQbC5Ga733oP7w4/g2bCBy5HjjKTXwzplCuyzZ8F20snQ2jiXhCgesJwQ9VKgvh5tH37IoqJ0Oh2sJ5wA+6xZSDplJrR2u+hERHSMWE6I+iBQXw/38uVoX74CHd98w1M/omm1sEwYv7+QnAJdaqroRETUDywnRP0Uam9Hx6pVcC9fgfbVqxFuaxMdSRW0GRmwTp4E29SpsE6dCl1amuhIRBQhLCdEESSHQvBu3YrOb75B59q18Kxdh5DTKTpWQpDMZljGjoF1yhRYp0yBsawMkiSJjkVEUcByQhRFsizDt2MHOteu7SosoaZm0bHigmSxwDJmDCwTJsAyYTzMI0dC0utFxyKiGGA5IYoxX2VlV1nxfrcJ/j17VH+9H43FAmNpKYxDy2EqHwrTsKEwlZezjBCpFMsJkWBhvx/+Xbvg27ETvh074Nu5E76dOxGoqQHCYdHxIk6XlfVjCRlaDlN5OfQDBkDSaERHIyKFYDkhUqiwxwPfD7v2F5Z9pSW4tw7BpiZlz2PR6aDPyoIuNxf63Fzoc3Ogy8mBobgYpqFDOXGViI6K5YQoDsl+P4LNzQg2NR361bj/1+ZmhH0+yH4/ZL+/z6eOJJMJGrN535fVAslsgcZshtaeBF3OjwVEn5sLXW4udJmZHAUhon5hOSFSCTkU6ioqB77Cfj9kf2B/eQlCMpuhsVi6yohkNrNoEFHMsZwQERGRovBHIiIiIlIUlhMiIiJSFJYTIiIiUhSWEyIiIlIUlhMiIiJSFJYTIiIiUhSWEyIiIlIUlhMiIiJSFJYTIiIiUhSWEyIiIlIUlhMiIiJSFJYTIiIiUhSWEyIiIlIUlhMiIiJSFJYTIiIiUhSWEyIiIlIUlhMiIiJSFJYTIiIiUhSWEyIiIlIUlhMiIiJSFJYTIiIiUhSWEyIiIlIUlhMiIiJSFJYTIiIiUhSWEyIiIlKU/w8/9xhP5ny6SwAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "nfkb_mutant.network[\"NFKB\"].set_rate(str(0.1),str(1))\n", + "res_mutant = nfkb_mutant.run()\n", + "res_mutant.plot_piechart()" + ] + }, + { + "cell_type": "code", + "execution_count": 27, + "id": "ffb4a632-0b62-467a-9da2-35ad81e66ad2", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:36.336628Z", + "iopub.status.busy": "2024-06-07T17:39:36.336373Z", + "iopub.status.idle": "2024-06-07T17:39:36.589377Z", + "shell.execute_reply": "2024-06-07T17:39:36.588392Z", + "shell.execute_reply.started": "2024-06-07T17:39:36.336605Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "nfkb_mutant.network[\"NFKB\"].set_rate(str(0.01),str(1))\n", + "res_mutant = nfkb_mutant.run()\n", + "res_mutant.plot_piechart()" + ] + }, + { + "cell_type": "code", + "execution_count": 28, + "id": "2da37d74-dd0f-4006-9ce9-a320e68a0641", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:36.590415Z", + "iopub.status.busy": "2024-06-07T17:39:36.590206Z", + "iopub.status.idle": "2024-06-07T17:39:36.781803Z", + "shell.execute_reply": "2024-06-07T17:39:36.780790Z", + "shell.execute_reply.started": "2024-06-07T17:39:36.590397Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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hQsXavjw4dq2bZuRXMFgsN3PKSkp0euvv64rrvjvWaW1tbU65ZRT1KtXL3366ad6/PHHNXnyZE2ZMmWvr3XiiSfqpZdeUmFhoebMmaNvv/1W559/fsv94XBYZ555phoaGvTBBx9o9uzZmjNnjiZMmNDymAkTJig/P19ffPGF8vLydOutt7bcN3v2bHk8Hp133nm7vO8rrrhCf/nLXxQOh9v9OdgZxS2GZZ19tjJOO810DHSwhkhYD5Rv0cnfrtVRqws1esMGLW9qarl/ayikP2zepJFr1+qHqwt17caNKtrhN8bduax4gw4p/GaXt+tKNrY85o3aGp307Vodu2a1Hi4vb/X80mBAp6/7VvUd8E0JzpR1zjnK+OlPTcdAG4wZM0Y+n0/z58/XyJEj1bdvX51++ul65513VFpaqonfHR11wgknaMOGDRo3bpwsy5JlWa1eZ968eRoyZIjS09N12mmnafPmza3unz59uoYMGaLk5GQNHjxYTz75ZMt9RUVFsixLL730kk444QQlJydr5syZ2rBhg8466yx16dJFaWlpOvTQQ/XWW2/t8WN56aWXNHToUPXu3bvltlmzZsnv92vGjBk67LDDdO655+oPf/iDpkyZstdRt3HjxunYY49Vv379NGLECP3ud7/TkiVLWgrl/PnztXLlSs2cOVNHHXWUfvrTn+qRRx7RtGnTVFtbK0latWqVLrvsMh100EG6/PLLtXLlSklSdXW1br/9dj3xxBO7fd+jRo1SZWWl3nvvvT3mayuKW4zrec/d8ubnm46BDnRHWZn+09Cgh3r20mv9CzQiLVVXlWzUlmBQtm3rptISbQwG9UR+vub076+eXq+u2lisxkhkj685Nb+33hs4qOVtbv8CeSSN+m5qoioU0p1lZfpN9x6a1ruP5tbW6L36+pbn/3HLFo3v3kPpHk9nf/gwILFXT+XezjmRbrBt2zbNmzdPN9xwg1JSUlrdl5eXp1/+8pd68cUXZdu2XnnlFfXu3Vt33323Nm/e3KqYNTY2avLkyXruuee0ePFiFRcXtxpdmjZtmiZOnKj77rtPq1at0v3336877rhD//jHP1q9z9tuu00333yzVq1apVGjRmnMmDFqbm7W4sWLtXz5cj300ENKT0/f48ezePFiDRs2rNVtH330kUaOHKmkpKSW20aNGqVNmzapqKiozZ+nWbNmacSIEfJ6vS2ve9hhh6lXr16tXre5uVmff/65JGno0KF65513FIlENH/+fB1xxBGSpFtvvVU33nij+vbtu9v35/P5NHToUL3//vttyrc3FLcY58nIUP4jk6VE9qHEAn8kogV1dbq1ew8NS01VP59PN+Z0V77Xq9nV1doQDOorv1935ubp8JQUFfiSdGdurhojEb313W+Mu5Pt8ah7YmLL20cNDUpOSNCojExJ0sZgUOkJCTo9M1OHp6To6NRUrQ00S5LerK2R17J0igsXDaMNEhLU6/775dnLD1c4x5o1a2TbtoYMGbLb+4cMGaKqqipVVFSoa9eu8ng8ysjIUF5envLy8loeFwwG9dRTT2nYsGH64Q9/qBtvvFELFy5suf+ee+7RI488onPPPVcFBQU699xzNW7cOP31r39t9f7Gjh3b8phevXqpuLhYxx13nA4//HANGDBAP/vZz3T88cfv8eMpKipqVaQkqaysTLm5ua1u+/7vZWVle/383HbbbUpLS1O3bt1UXFysuXPn7vV1u3TpIp/P1/K6kydP1jfffKP+/ftrzZo1mjx5shYvXqyvvvpKl156qS688EINGDBA1113Xau1cZKUn5/f5mK5NxS3OJBy5JHqftNNpmOgA4RlKyzJt9OURrJlaWlTowL29lG1pB3u91iWvN/d31Zzamp0RkaGUhO2f4vo5/PJb9ta6ferOhzWCr9fP0hKUnU4rMe3btXtPXL38Ypwq5zrr1fasceajoEO8v1U4s7TojtLTU3VwIEDW/7es2dPlX+3RKKioqJl80N6enrL27333qtvv/221evsPFp28803695779Vxxx2nu+66S8uWLdtrjqamJiUnJ+9y+8752/px/eY3v9EXX3yh+fPny+Px6NJLL201vbq759u23XJ7fn6+3nzzTRUXF+vNN99UTk6ObrjhBv31r3/Vvffeq4yMDBUWFmrNmjW7lNiUlBQ1Nrb9+/CeUNziRLdrrlbaiOGmY+AApSV4dGRyip6q3KryUFBh29brNTVa5verIhRWgS9JvRIT9ejWCtWEwwrYtqZVVmprOKyKUNvWny1ratKaQLPOy8puuS3L49EDeT31+82bddGGIp2dman/SUvXw+Xl+lWXLioNBnVu0XqdvX6d5tXteWQP7pI2YoRyxtxgOgbaYdCgQbIsq2Xt1c6++eYbdenSRTn7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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "nfkb_mutant.network[\"NFKB\"].set_rate(str(0.001),str(1))\n", + "res_mutant = nfkb_mutant.run()\n", + "res_mutant.plot_piechart()" + ] + }, + { + "cell_type": "markdown", + "id": "9891cb8d-6c11-48b2-a3ae-07477b53ea8b", + "metadata": {}, + "source": [ + "By lowering the activation rate of NFkB (making it difficult to activate, so similar to a knock off ??), we increase the proportion of Tregs." + ] + }, + { + "cell_type": "markdown", + "id": "6dc3747c-299d-4dc1-90c6-db6d331d1b61", + "metadata": {}, + "source": [ + "### FOXP3_2" + ] + }, + { + "cell_type": "code", + "execution_count": 29, + "id": "dd62d9c0-4582-4b64-8c3d-3d04c7908a8b", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:36.782880Z", + "iopub.status.busy": "2024-06-07T17:39:36.782674Z", + "iopub.status.idle": "2024-06-07T17:39:37.124539Z", + "shell.execute_reply": "2024-06-07T17:39:37.123648Z", + "shell.execute_reply.started": "2024-06-07T17:39:36.782861Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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Y9FqYZ4yBYkLFiBxwXzos7NFJyKiU8RyQnQaAp2dcH72GRyfrEbvhg28MrJgksEAy6xZSDx/Aazz5kGXkiI6EhENAssJ0SCFXC44162Dc/VqOD9fg6DdfvJ/RIOmTU+HZcYMWOfNhfXcOdBaeUVgonjBckIURnIoBO/+/ejdsgWuzVvg2r4doZ4e0bHigiYxEebp02GZMQOWWTNhHMldW4niFcsJUQTJoRA8pWVwbdkC1+bNh8sKd6YdECkhAebJk2GeNROWmTNhGjsWklYrOhYRRQHLCVEUycEgPGX74dm3D57SUnjKyuAtL1f9mhXJaIRx9CgknDEOpjPOgGncOBiLRrCMEKkUywmRYHIgAO+hSnjKSuEpLYW3tAye/fvjdoRFm5wMQ0EBjGPHIGHc4TJiLCri7qxE1IflhEihAm1t8NXVwVdbC39tHXx1dfDX1sJXV4dgZ6foeCekSUqCYdiww2/5+TAUDOt7n9etIaKTYTkhikFBZy/8dbUItLYi0NWFYGcXgl2dR/y9C8HOTgS6uw8vyB3kr7lkMEAyGqFNTIQ2LQ261FRo09OgS02DNi0VurR06NJSD38sM5On8hLRoLCcEMU5WZYh+3yQPR6EvF7IXi9kvx9yIAAEg5ADQSAUhKTXQzIaD78ZDNB89XejkVu9E1FUsZwQERGRomhEByAiIiI6EssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpCssJERERKQrLCRERESkKywkREREpyv8DX4+EI9zkAOcAAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fox_mutant = stable_state.copy()\n", + "new_istates = change_inputs(nodes, to_istates(res_single[('FOXP3_2', 'OFF')].get_states_probtraj(), nodes), dc_signal)\n", + "fox_mutant.network.set_istate(nodes, new_istates)\n", + "fox_mutant.network[\"FOXP3_2\"].set_rate(str(1),str(1))\n", + "res_mutant = fox_mutant.run()\n", + "res_mutant.plot_piechart()" + ] + }, + { + "cell_type": "code", + "execution_count": 30, + "id": "b3cb4413-7129-4793-89dd-ffe50a3d4559", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:37.125537Z", + "iopub.status.busy": "2024-06-07T17:39:37.125347Z", + "iopub.status.idle": "2024-06-07T17:39:37.394224Z", + "shell.execute_reply": "2024-06-07T17:39:37.393404Z", + "shell.execute_reply.started": "2024-06-07T17:39:37.125520Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fox_mutant.network[\"FOXP3_2\"].set_rate(str(0.2),str(1))\n", + "res_mutant = fox_mutant.run()\n", + "res_mutant.plot_piechart()" + ] + }, + { + "cell_type": "code", + "execution_count": 31, + "id": "6724235e-01db-4aa7-a6aa-0f61d72d4ae4", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:37.395263Z", + "iopub.status.busy": "2024-06-07T17:39:37.395076Z", + "iopub.status.idle": "2024-06-07T17:39:37.669058Z", + "shell.execute_reply": "2024-06-07T17:39:37.668116Z", + "shell.execute_reply.started": "2024-06-07T17:39:37.395247Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAAicAAAGFCAYAAAAmbFOlAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/H5lhTAAAACXBIWXMAAA9hAAAPYQGoP6dpAABCJUlEQVR4nO3dd3zU9eE/8Net3MzdZV8WJOy9RHCgQB1VxNZdbW2xVfrVWq21fju+Wmtrd6utXf7qqNZqW0EUpaI4QQQFGYGwEkJ2ctm3L7c/vz+iEcpIQpJ7f+4+r+fjwYPkcvncKyk2r7zXRyVJkgQiIiIimVCLDkBERER0NJYTIiIikhWWEyIiIpIVlhMiIiKSFZYTIiIikhWWEyIiIpIVlhMiIiKSFZYTIiIikhWWEyIiIpIVlhMiIiKSFZYTIiIikhWWEyIiIpIVlhMiIiKSFZYTIiIikhWWEyIiIpIVlhMiIiKSFZYTIiIikhWWEyIiIpIVlhMiIiKSFZYTIiIikhWWEyIiIpIVlhMiIiKSFZYTIiIikhWWEyIiIpIVlhMiIiKSFa3oAEQ0fPFYAiF/FL3+KEKBKEL9f0f6HwsHYojHEpAkCYm4BCkBSJIEKSFh/o5fAWo1VGp1398aDVRmEzRmC9QWC9RmM9QWMzSWT963QGPNhCY3FzqHAxqrVfS3gIjSCMsJUQro9UXgag/C3R6Eq63v74A73F9EouH4sK4f2r9/WJ+vMpmgy8+H1uGArqAA2oICaB0F0BUWIqOsDBljxkCl0QzrNYhIOVhOiGQiHk/A29nbXz5cbYG+v9uDCAdiouOdkhQMIlJfj0h9/Qk/rsrI6Csp48dBP34C9BPGQz9+PDLKyqDS6ZIblohkj+WESAApIaHHGYCzxg3nEQ86GnzwdvYikZBERxsVUiSCcHU1wtXV8B39Aa0WGWVjYZwxE8Y5s2GcPRv6SZM4ykKkcCpJktLz/w2JZCQWiaO9zgvnEQ+cRzxor/MgHJTPaMhnNt4uOkI/lckE44wZMM6e3VdY5syBNidHdCwiSiKWE6JREPRG4DzSNyrirPGgq8mHRFy+/6nJqZyciG7MGJjPPQeWc8+F6ayzobGYRUciolHEckI0QjoavKit6ETdni70tAZExxkSuZeTY2i1MM6ZDcuiRTCfuwiGGdOhUqlEpyKiEcRyQnSaEvEEWg67UVfRhbo9nfC7wqIjnbaUKif/RZOVBfPZZ8OydCksS5dyVIUoDbCcEA1BNBJH4/5u1FV0oX5fl+x30QxWKpeTo6n0epjPWwTrJZcic+kSqM0sKkSpiOWEaAChQBR1ezpRW9GF5oM9iEUToiONuHQpJ0dTGQywnHcerJdeAsuSJVCbTKIjEdEgsZwQnURzlQsHNregtqIL8Vj6FZKjpWM5OZrKaIRl8WLYr7oS5kWL+k7CJSLZYjkhOkqvP4JDW9twYEsr3O1B0XGSJt3LydF0RUWwXX0V7NdcA11Bgeg4RHQCLCekeJIkoaXKhf3vt6K2ohOJmPL+k1BSOemn0cBy3nmwX3cdLIvP58FvRDLCckKK1euL4OBWJw5saYWno1d0HKEUWU6Ooi0ogP3qq2C/7jroHA7RcYgUj+WEFMd5xIO97zShdo8yR0lOROnlpJ9OB+sllyDnqzfBMG2a6DREisVyQorRUuXCR+vr0FLlFh1FdlhOjmdauBA5N38NlvPPFx2FSHF44z9Ke00HevDR+jo4azyio1AKCW7bhuC2bdBPmYKclbfAesklXJdClCQcOaG0VV/ZhR3r69Fe5xUdRfY4cjIw3ZgxyFl5C+xXXgmVlr/XEY0mlhNKK5IkoW5PXynpbPSJjpMyWE4GL2PsWOTeeQesy5bxnj5Eo4TlhNKClJBwZHcndqyvR3eLX3SclMNyMnT6qVOR/+27uCaFaBSwnFDKazrUg/dXHU65OwHLCcvJ6TPOPwP5d98N07x5oqMQpQ2WE0pZ3u5ebHmhBrW7O0VHSXksJ8NnWbwYeXffDcPkSaKjEKU8lhNKObFIHLs2NGD3G41peRM+EVhORohGg6zrr0feXd+CJjNTdBqilMVyQinlyK4ObHmhBr6ekOgoaYXlZGRpcnKQ/53vwHblFVw0S3QaWE4oJfS0BrB5VTWaD7lER0lLLCejwzh3Lhz3/xCGqVNFRyFKKSwnJGvh3hi2r6vFvo0tSCT4T3W0sJyMIk71EA0ZywnJ1sGtTnzwUg16fVHRUdIey8no0+TkoOD734ft8uWioxDJHssJyY7fFca7zx5E4/4e0VEUg+UkeTIvugiOB34EbU6O6ChEsqUWHYDoaIc+dOLfD25jMaG05XvzTdRe/jl4X98gOgqRbHHkhGQh6I1g43OHULenS3QUReLIiRjWZcvguP+H0NjtoqMQyQpHTki42opO/Osn21hMSHG869fjyOWXw/fOu6KjEMkKywkJE43E8e5zh/Da/6tEyM9Fr6RM8c4uNH/jG2j9wf8hEeAtGIgAlhMSpLPRh9U//wgHNreKjkIkC56XXkLdtdchVF0tOgqRcCwnlFSSJGH3G4144dc74GoLio5DJCuR2lrUf+F6uF98SXQUIqFYTihpIqEY1j9aia0v1iAR4zpsohORenvh/L//65vmCfE2DaRMLCeUFO6OIF741U7U7+WiV6LB8Lz0Euqv+wLCtXWioxAlHcsJjbqmAz144Zc74HJysR/RUISrq1F/zTXw/OdV0VGIkorlhEZVxVuNWPenPQgHY6KjEKWkRDCI1nvuQfuvfg0pkRAdhygpWE5oVMSjCbz99AFseaEGEm/YRzRsPU89heY77kQiyIXklP5YTmjEBTxhvPTwLhz6sE10FKK04n/7bdTfeCOi7e2ioxCNKpYTGlHtdV6s/vlHaK/zio5ClJbCBw6i/trr0Ltvv+goRKOG5YRGTNWHTrz08C4EPBHRUYjSWqyjAw1f/jK8G94QHYVoVLCc0Ij46NU6vPX0QcSjXLBHlAxSby9a7roLXX99THQUohHHckLDtmVNDbav41kMREknSej83e/Q9rOfgzeYp3TCckKnTZIkbPpnFSrebBQdhUjRXP/4B5z33gcpHhcdhWhEsJzQaUkkJLz99EHse69FdBQiAuB58UW03P0dSBGu+aLUx3JCQxaPJbDh8X2o2satwkRy4tuwAU23f5P35KGUx3JCQxKLxLH+0b2o3d0pOgoRnUBg82Y03nIL4n6/6ChEp43lhAYtEoph3R/3oHF/j+goRHQKvTt2onHFTYi5XKKjEJ0WlhMalFAgipd/X4HWw27RUYhoEEL796NxxU2Iu92ioxANGcsJDSjojWDtw7vRUc9TX4lSSbi6Go0rv464n3cEp9TCckKnFOmN4ZU/VKC7hfPXRKkoVFmJplv/B4neXtFRiAaN5YROKh5NYP2je9HdzGJClMp6d+xE8zfv4DZjShksJ3RCUkLCm0/tR0u1W3QUIhoBgS1b0Hz33ZBiMdFRiAbEckIntPn5ahzZxe3CROnE/9bbaP3+DyAleA8skjeWEzrOjvX1qNzEk1+J0pH3P/9B248eEB2D6JRYTugYB7a0YtsrtaJjENEocq9ejc6//EV0DKKTYjmhfnV7OrHxuSrRMYgoCbr+8Ed4Xn5ZdAyiE2I5IQCA84gHbzyxH1KCt10nUgrnfT9E4MNtomMQHYflhNDTGsCrf96DWJSL5IiURIpG0XznnQjX1omOQnQMlhOFC3ojWPfHCoSD3F5IpEQJrxfNt93GY+5JVlhOFCyRkPDGk/vgd4VFRyEigSINDWj+1l2QolHRUYgAsJwo2raXj6Clyi06BhHJQHDbNrT99GeiYxABYDlRrNqKTux6o1F0DCKSEffzz8P90lrRMYhYTpTI0xnE238/CHBjDhH9l7af/AShqmrRMUjhWE4UJhaJ47W/7kOklwtgieh4Um8vWr71LcT9AdFRSMFYThRm4z+reJdhIjqlSH09nD+8T3QMUjCWEwXZ914Lqj5sEx2DiFKA77XX0fPMP0THIIViOVGIjgYv3l91WHQMIkoh7b/5DXorKkTHIAViOVGAUCCK1/+6D/EYT4AloiGIRtH87bsRc7lEJyGFYTlRgLefPgBfT0h0DCJKQTGnE20//onoGKQwLCdp7uBWJ+oru0XHIKIU5nv9dXj+86roGKQgLCdpLOAOY8sLXGdCRMPX9uCDiHZ0iI5BCsFyksY2/rOKN/QjohGR8HjgvI/biyk5WE7SVNW2NtTv7RIdg4jSSOC9zXCtWiU6BikAy0kaCnoj2LyKx08T0cjr+OWvEGluFh2D0hzLSRra9K8qhAOcziGikZcIBuH8/g8gJXg0AY0elpM0c3hHO2p3d4qOQURpLLhjB1zP/VN0DEpjLCdppNcXwebnOZ1DRKOv8w9/QKyTvwjR6GA5SSPvPV+NXl9UdAwiUoCEz4f23/xGdAxKUywnaaJ2dydqdvAMAiJKHu8r6xDYvl10DEpDLCdpIBaJc3cOEQnR/uCDkKIcsaWRxXKSBireaoTfFRYdg4gUKHy4Bj3PPCM6BqUZlpMUF/RGsGtDo+gYRKRgnX/+C6JtbaJjUBphOUlx29fVIhqOi45BRAomBYNo/8UvRcegNMJyksJ6WgM4sMUpOgYREXwbNiD40UeiY1CaYDlJYVtfrIGUkETHICICAHQ89LDoCJQmWE5SVNOhHjTs6xYdg4ioX29FBXxvvy06BqUBlpMUJCUkbF1TIzoGEdFxOn73O0hxroOj4WE5SUGHPmxDV5NfdAwiouNEao7As/Zl0TEoxbGcpJhYJI5tr9SKjkFEdFKdf/oTEmGevUSnj+UkxVS81YiAm//RE5F8xZxO3rWYhoXlJIWEg1HseoMHrhGR/HU/9hjiPp/oGJSiWE5SyL73WhANcaEZEclf3O2G69lnRcegFMVykiLi0QT2vtMsOgYR0aD1/ONZJEIh0TEoBbGcpIiqbW0IeiOiYxARDVq8pwfuNWtEx6AUxHKSAiRJwu43udaEiFJPz9+eghSLiY5BKUYrOgANrG5PF9ztQdExiFLWY93deMvvQ204AoNahTlGI76Tl4fyDH3/c6ZVHTrh534nLw83Z+ec8GMvedy49wR34909cRL06r7f/dZ5PfhdZyeCiQSuttnxv/n5/c9riUZwS1MTVo8tg0WjGc6XKFvRlhZ4X3sdtsuXi45CKYTlJAXsfqNBdASilLYjGMQNdjtmGIyISxIe6erELU1NWFc+DqaPS8Sm8ROO+ZzNAT9+2NaGiy2Zp7y2Ra3Gq+Xjjnnsk2LiisVwf1sbfu4oRIlOh9tamrHAZMJiiwUA8OP2dtydl5+2xeQT3U88wXJCQ8JyInOtNW601XpFxyBKaY+Vlh7z/s8chVh0pAYHQiHMN5kAAHnaY//v8B2/HwtMJpRmZJzy2qoTfO4nmqJRWNRqXGq1AgAWmEyoiYSxGBb8x+uBTqXCRZmnLj/pIFxVBf9778Fy/vmio1CK4JoTmdvNc02IRpwvkQAA2E4yYtEVi+E9vx9X22wDXiuYSOCCIzVYeqQGtzU34cBRu1PGZmQgJEk4EArBHY9jXyiEyXo93PE4/tjVhfvyC0bmC0oB3Y89LjoCpRCOnMhYjzOA+sou0TGI0ookSfh1RwfmGY2YqNef8DkvezwwqdW4aIApnXEZevzMUYhJej38iQSedblwY2MDXiwrR1lGBmwaDX7hKMQPnE6EpAQ+Z7VikdmCe51O3JiVhZZoFLe3NCMmSbg9NxefzbSOxpcsC8EdO9BbuQ/GmTNER6EUwHIiYxVvNgKS6BRE6eWnHe2oCofw7JixJ33Oi14Pllut/WtHTma20YjZRmP/+/OMRlzdUI/nXC7cW9A3KnJhZiYuPGrqZnswgMORMO4rKMAltbX4bVERcrUafKGhAfONJuScZIooHbhXPc9yQoPCaR2ZCnjCqNp+/C4AIjp9P21vw7t+P54uHQOHTnfC5+wIBlEXieAam33I11erVJhpMKAheuIziSKJBH7S3o4HChxojEQQh4QzTSaUZ+hRlpGBvaHeIb9mKvG8uh5xP++oTgNjOZGpg1ucSMQ4bEI0EiRJwk/b2/CW34+/lY5BySkWub7ocWO63oApBsNpvc6hcBh5mhOPfjza3Y3zzGZMMxgQBxCTPv1vPCpJiKf5f/JSMAjvunWiY1AKYDmRIUmScPADp+gYRGnjwY52rPN68ZvCIpjVanTGYuiMxRD6eGHsJ/zxODb4fLjafuKFsN93tuLhzo7+9//c1YX3A340RSI4GArhvrY2HAqF8AW7/bjPPRwO4zWfF3fk5gEAxmVkQK1SYY3bjU1+P+oiEcw8jUKUalzPrxIdgVJA+k5uprDWaje8nek9vEuUTP92uwEAK5qO3f32M4cDVx41fbPe54ME4LKTLEx1RqPH/EbnS8Txo7Y2dMXjyFSrMVVvwDNjxmLWUetQgL5fOB5oa8P38wv6z1UxqNX4uaMQD7a3ISJJuC+/AAUnmWpKJ+FDh9C7Zw+Ms2eLjkIyppIkKc0HElPPm0/tR/W2dtExSEE+s/F20RFIQWxXXYWin/9MdAySMU7ryEy4N4baXZ2iYxARjRrva68h7vOJjkEyxnIiM4c/akcsmhj4iUREKUrq7YXnlVdExyAZYzmRmaoPuX2YiNKfd91/REcgGWM5kRFvVy/aaj2iYxARjbrePXsQbWkRHYNkiuVERqp56BoRKYUkwfv666JTkEyxnMhI9Xbu0CEi5fCuf010BJIplhOZ6Gz0wdUWFB2DiChpQvv3I9LQIDoGyRDLiUzwPjpEpETe1zh6QsdjOZGJugqebUJEyuN9db3oCCRDLCcy4G4PwtsVEh2DiCjpwocPI1xTIzoGyQzLiQw07OsWHYGISBjvhg2iI5DMsJzIQMN+lhMiUi7/pvdERyCZYTkRLBqJo7XaLToGEZEwocpKxLr5Sxp9iuVEsJZDLsRjvJcOESmYJMG/ebPoFCQjLCeCcUqHiAjwb9okOgLJCMuJYI0sJ0RECG79AFKCo8jUh+VEIFdbgFuIiYgAxD0ehPbvFx2DZILlRCBuISYi+lRgyxbREUgmWE4E4pQOEdGnAlu2io5AMsFyIkg0HEfrYY/oGEREstG7Zw8SkYjoGCQDWtEBlKrtiCeltxBv3v8KNh94BT2+dgCAI2ssLj3jy5g+ZiEAIBztxcvbHsfe+i0IhLzIznRgyYwrcd70z530mr9/5W7UOPcc9/j0MQtx26U/BwB8dPgtvLztCURiIZw9+VJcefb/9D+v29eGP736XXz3qkdhzDCP5JdLREkgRSII7d8P09y5oqOQYCwngrQ3eEVHGBa7ORefX7gSudYiAMC26jfw2Ib78f2r/4rC7DKs2foXVLdW4Cuf+QFyMh042LQDq95/BDZzDmaVnXvCa668+AHEE7H+9wMhL37xwkrMHXc+AMDf68E/Nz2EG5d8F7nWQjz62r2YWDQbM8aeBQB4fvPv8fkFK1lMiFJYb8UelhPitI4oHfWpXU5mlp2D6WMWosBeigJ7KT634GbodUbUdRwAANS1H8DCSRdjUtEc5GQ6sGjachTnjEdjZ/VJr2k2WGE1Zff/OdS8ExlaA+aOWwwA6PI5Ycgw44wJSzE2fwomFc1Bm6sBAPDR4behUeswZ9x5o//FE9Go6d29W3QEkgGWE0E6G32iI4yYRCKOHTXvIBINobxgGgBgnGMGKhs+gDvQCUmSUN2yGx2eZkwtmT/o626teg3zxi+FXmcEAOTbihGNhdHUdRiBkBcNnVUoyhmHQMiLV3c8jesW3TEqXx8RJU9vRYXoCCQDnNYRIOAJw+8Ki44xbC3dtXho7R2IxSPQ64xY+dkfozCrDABw7bnfxD/fewj3PXs91GoN1FDji4u/g/GFMwd17fqOQ3D21OFLi+/pf8ykz8SXl34Pz7z7K0RjYSyYdBGmlZ6JZzf+BotnXIFubxv++voPEU/EsGz+V/pHXIgodcQ6OhBtaYGuuFh0FBKI5USAzob0GDUpsJfiB9c8hmDEj4razfjHu7/Ctz73MAqzyrBx30uobz+I//nsg8jOLECNsxLPv/8IrKZsTCk5Y8Brf3BoPQqzy1GWP+WYx2eXL8Ls8kX971e3VqC1pw7XnXsHHvj3V/DVC+6F1ZSN37x0OyYUzkKmMWvEv24iGl3BigrYWE4UjdM6AqT6YthPaDU65NmKMTZvMj6/8BYU54zHxsoXEYmFsW77k7jq7Nsws+wcFOeMx+IZV2De+CV4e8/qAa8biYaw88hGnDPl0lM+LxqPYNXmR3DDeXeh09uCRCKOiUWzUWAvRb6tBPXtB0fqSyWiJOrdXSE6AgnGciJAuoyc/DdJkhCLRxFPxBBPxKBSqY75uFqlhoSBt0/vqt2IWDyCMydeeMrnvb7zWUwbswCleZOQkBJISPH+j8UTMSSk1N2qTaRkXHdCLCcCdKTByMkr255AjXMvun1taOmuxSvbn8Rh5x7Mn3gBjBlmTCicjbUfPobq1gp0eZ34sOp1bK9+E7PLPp2SeeadX+LlbU8cd+0PDr2GWWXnwmKwnfT1nT312HVkIy6bfxMAoMA+BiqVClsPrce+hg/R7m7E2PzJI/51E9HoC1dXQ4rHB34ipS2uOUkyX08Ivb6o6BjD5ut14Zl3fglvsAeGDDOKc8bhG8t+0b8b52sX3oeXtz2Bv7/9cwTDPmRnFmD5gq9h0bTL+6/R4+84bnSl3d2EI237cPtlvzrpa0uShH+99zCuOue2/p08GVo9blzyXax6/w+IxaO47tw7YDfnjcJXTkSjTYpEEGlshL68XHQUEkQlSZIkOoSSHNnVgdcf2yc6BtExPrPxdtERiI5R/Mc/wHrRRaJjkCCc1kmydJjSISIabeHDh0VHIIFYTpIsnQ5fIyIaLZGaGtERSCCWkyRzt/eKjkBEJHvhwywnSsZykkSJeAJ+d+qfDEtENNoi9fWQYrGBn0hpieUkifyuMKQE1x8TEQ1EikYRaWgQHYMEYTlJIm8Xp3SIiAaLUzvKxXKSRN7ukOgIREQpI9rcJDoCCcJykkQ+lhMiokGLOttERyBBWE6SiNM6RESDF21jOVEqlpMk4sgJEdHgxZxO0RFIEJaTJOLICRHR4HHkRLlYTpIkHk0g4I2IjkFElDLiPT1IhHk2lBKxnCSJrycE8IgTIqIhiXH0RJFYTpKEUzpEREPHHTvKxHKSJDy2noho6KJtXBSrRCwnSRINxUVHICJKOXG3W3QEEoDlJEkiId7AiohoqBI+v+gIJADLSZJw5ISIaOgSfp/oCCQAy0mSRMIsJ0REQxXnyIkisZwkSZTTOkREQ5bwceREiVhOkiTCaR0ioiGLc1pHkVhOkiQa5sgJEdFQcUGsMrGcJAkXxBIRDR2ndZSJ5SRJOK1DRDR0cT9HTpSI5SRJeM4JEdHQSdGo6AgkAMtJknBah4joNEi8Y6oSsZwkgSRJiEZYToiIhiyREJ2ABGA5SQJJAsDyT0Q0dBw5USSWkyRQq1VQqUSnICJKPawmyqQVHUAp1Fo14lEOT5L8ZBd2o/6CRciGBuZQBDq3B2h1IuFyiY5GxGkdhWI5SRINywnJkDXHj6661WjtDX76oBbAmGxYJhbBYbYiR6tHZiQGvccHdUcn4m1t/IFBycNpHUViOUkSjZbzOiQvBnMEge4XETm6mBzFHw6hJhxCzdEP5hmhdUxAYWYW8nQGWOMSTIEgNN09SLS0QgqFkpKdFITlRJFYTpJEreHyHpIPjS4OtfQqAq6uIX9uLB5Hk7sLTUc/aFEBk4uRZ7GhwGBGFtQwh8LQ9bghOduQcLtHKjopjMRyokgsJ0nCkROSDwlW23twHq4b8St3+j3o9Hs+fSADwNgcZE4uRaE5E9lqHTIjcei9XqjaOxFvb+cUEZ2SOiNDdAQSgOUkSTRajpyQPOQV70HTvt1JfU1fKAhf6L+mj/JNyCiaBIfF1jdFFEvAGOiFpqsLiVYnpHA4qRlJntQmk+gIJADLSZJwWofkIL+0Do173xEdo18kFkWjuwuNRz9o1UBlLUV+phX5Bgvskgrm3jB0PS5IrU4kvF5RcUkAtdksOgIJwHKSJJzWIdFyirrQtO9l0TEGRYKEdp8H7b6jpoj0AMrzYDOWwWHKRLZaC0s41jdF1NaBeEcHF0+mIY6cKBPLSZJwWodEsub40XFkFaQ0WN/h6Q3A0xs49kGHBfqSbBRabMjR6WGLJWDwB6Dp6u7bRcSbx6UsjpwoE8tJkqg5ckKCGCwRBLpeQDTNt/mGYxHUuztRf/SDNi1U9rFwZNqRpzfCLqlhCob6pohaWpHw+wWlpcHiyIkysZwkiUarER2BFEiri0Od+A8C7h7RUYSRJAlOrwtOHHXirQHA+AJkGcehwGxFNjSwRGLIcHugav94iohkgSMnysRykiRGi050BFIalQSLdSPaaupFJ5EtV28ArqOniNQACjNhGJODQosdudoMWGMJGHwBqDs7EW91ArGYsLxKxHKiTCwnSWK2c68+JVde0W407dsjOkZKCkUjqHN14JiTYLIyoMkpR77Fjny9EfYEYAqGoO12IdHaCikQONnlaBg4raNMLCdJYrLpRUcgBckvrUXj3o2iY6SdeCIBp7cHzqMfNAGY4EC2yYICUyayVFpYQmFkuL1AWxsSXd2C0qYHTVaW6AgkAMtJkphZTihJcoo60VT5iugYitMT9KMneNQCWw2AYjtM5Q44LFbkfnwDRYMv8OkNFDlFNCBtQYHoCCQAy0mSmG2c1qHRZ8v1o6NmNSQp9bcMp4tgJITanhBqj34wRw9t3ri+XUQZBtgSKhgDwb4popYWSL29ouLKjjY/T3QEEoDlJEnMdo6c0OgyZobh61iNaDi9twyni1gijmZPN5qPftAMYFIRcsxWFBjNyFJpYAlFoHN5AGcbEj3K23Wl48iJIrGcJAmndWg0aTPiQHQdgh7XwE8m2esOeNEdOOqYfi2A0ixYJhSiwGJDjloHazQOvdcHdUdX3xRRPC4s72jS5ueLjkACsJwkiUanht6kRTjIOWYaYSoJZss7aD/SOPBzKaX5wyH4wyEcOfrBXAO0BeP7tj5nGGBLAKZALzSd3X27iFL48D2V0QiN1So6BgnAcpJEZrue5YRGXF7hTjTtrxQdgwSKxeNo8nSj6egHM1XA5GLkWazIN1qQJalhDkWQ4XJDcrYh4ZL/KBvXmygXy0kSmW0Z6GnlWQg0cvJLa9C49z3RMUjGOv1edPqPmiLSARiTDcukEhSaMpGj0SEzEoPe6+87Hbe9HZDJPZh0+VxvolQsJ0nEdSc0knKLO9BU+R/RMShF+UNBHA4FcfjoB/NNyCiaBIfZitwMI2zxBIxHTxGFw0nNyPUmysVykkQm7tihEWLL86KtmluGaeRFYlE0erpxzAomqxoqaynyMm0o0Jtghxrm3jB0Ljek1lYkPN6TXW5YdMXFo3Jdkj+WkyTKzDaIjkBpwJQZhrftBcQiyf0tlpRNgoQOnxsdPvenD2YAKMuD1TAWhWYrstVaWCIx6D1eqNo7+6aIJOm0XzOjvHzYuSk1sZwkUXYhb2BFw6PTx5GIvIxer1t0FKJ+3lAQ3lDw2AcLzMgonty3i0inhy2egMEXhKaru++guWh0wOtmlI0dpcQkdywnSZRTYhEdgVKYSiXBZHoL7bXNAz+ZSAYisSga3J1oOPpBmwYq+1gUWGzIN5j7bqDYG4auxwWp1YmEz9f/1IyysmRHJplgOUkivVELS7Ye/h4Ox9PQ5Tg+QvOB/aJjEA2bJElo87nRdvQUkQHAuHzYjeVwmDKRZ7JAy5v+KZZadAClySnm6AkNXX5pNZoPvC86BtGoc/cGcKi7DXUWrtFTMpaTJGM5oaHKLW5DY+WromMQJVVOKdebKBnLSZLlspzQENjzPXBWvTCsHQ9EqSi3ZIzoCCQQy0mSZRdzxw4NjtkWgqd1NeLRiOgoREmXU8pyomQsJ0mWVWCCRstvO51ahiGGWO9a9PpG53ArIrnL5bSOovGnZJKpNWpkFZpExyAZU6kTMBjehKe9VXQUIiEyc/NgzOTdiJWM5UQALoqlU8nO346OuoOiYxAJUzx5mugIJBjLiQA5RSwndGL5pYfQcnCr6BhEQhVNmiI6AgnGciJALk+KpRPIK3GisfI10TGIhCuaNFV0BBKM5USAvLGZgEp0CpKTrHwPWg9xyzCRTm9AXhlv+Kd0LCcCGMw6Tu1QP7OtF66W1YgP4kZoROnOMWES1GqN6BgkGMuJIEWT7KIjkAzojFHEgmsR8nPLMBEAFE/mlA6xnAhTNMEuOgIJptIkYMh4A54Op+goRLLB9SYEsJwIUzTRLjoCCZad9yE666tExyCSD5UKhdypQ2A5EcZkzUCWg4exKVV+yQG0HPxQdAwiWckpLoXBzPV4xHIiVPHkLNERSIC8khY0Vr4uOgaR7BRxvQl9TCs6gJKVTs3Gvk0tomNQEmUVuNF6cI3oGESyNHbmXNERTigejyPK3XTDptPpoNEMbicWy4lAxZOzoFarkEjwbAslsGT1oqdpFeKxmOgoRLKj1mhRNnue6BjHkCQJbW1tcLvdoqOkDbvdDofDAZXq1Id9sZwIpDdqkV9mRVutR3QUGmUZxigi3hcRDvhFRyGSpZKp06E3yWsd3ifFJD8/HyaTacAfqHRykiQhGAyio6MDAFBYWHjK57OcCFY6LZvlJM2pNQnodRvQ2douOgqRbI2bt0B0hGPE4/H+YpKTkyM6TlowGo0AgI6ODuTn559yiocLYgUrnZotOgKNIgkSsnK3orOhWnQUIlkbf4a8yskna0xMMhvNSXWffD8HWsPDciJYQbkVejMHsNJVQckBtBzaLjoGkaxlF5XA7jj1ML8onMoZWYP9frKcCKZWqzB+Tp7oGDQK8kqb0Vi5QXQMItkbJ7NRExKP5UQGJswvEB2BRliWw4WW/S+KjkGUEsbLbL1Juquvr4dKpUJFRYXoKCfF+QQZKJ6cBWOmDr0+7qNPB5asIHoaViER55ZhooEYzBYUTUmtw9f+fOs7SX292//fZwb93IGmTVasWIEHHnhgwOuEQiHceuut2LlzJw4ePIjly5dj7dq1g84xXCwnMqBWqzB+Xj4PZEsDelMEYc+LCAcDoqMQpYSyOWdArR7cwVw0MKfz0xuJPv/887j//vtRVfXpPbyMRiNcLteA14nH4zAajbjzzjuxZk3yD47ktI5MTOTUTsrTaOPQql+Dr7tDdBSilDF+/kLREdKKw+Ho/2Oz2aBSqY577BO1tbVYunQpTCYTZs+ejQ8++KD/Y2azGY8++ihWrlwJh8OR9K+D5UQmCifYYLbrRceg0yRBgi17C7qbjoiOQpQyMowmlhOB7r33Xtxzzz2oqKjApEmTcMMNNyAmkxOsWU5kQqVSYcK8fNEx6DQVlOxDa9UO0TGIUsqksxZBl8FfykS55557cNlll2HSpEn48Y9/jIaGBtTU1IiOBYDlRFYmnMlykorySxvRWPmm6BhEKWf6kgtER1C0WbNm9b/9yXHynxwvLxrLiYw4ym3IzDGIjkFDkF3Yjeb9L4mOQZRy7AWFKJkyXXQMRdPpdP1vf7LLJ5FIiIpzDJYTmZk4n6MnqSIzO4CuutVIxOOioxClnGnnD357LCkPy4nMTDiDu3ZSgcEcQa/rRUR6g6KjEKUelQrTF3NKR+4OHDiAiooK9PT0wOPxoKKiImkHt/GcE5nJG5OJLIcJrjb+0JMrjS4ODdbD3dMpOgpRSiqdOgPWPI4Sy92yZcvQ0NDQ//7cuXMBAJIkjfprq6RkvAoNyd53m7D5+cOiY9AJScjK2wRn9S7RQYhS1mdvuwszllwoOsYphUIh1NXVoby8HAYD1wKOlMF+XzmtI0NTzi5EhoEnJspRXvFeFhOiYdDpDZh01rmiY5DMsZzIUIZBiylny/P24UqWX9qApn1vi45BlNImLjwHGQaj6BgkcywnMjVzaQlw6vs3URLlFHahaR+3DBMN15yLLxMdgVIAy4lM2fNNGDs9R3QMAmDNCaCjdjUkmez/J0pVRZOnoXDiZNExKAWwnMjYrKUloiMontEcRqD7BURDvaKjEKW8+cuvEB2BUgTLiYyVTstGlsMkOoZiaXRxqKT1CLi6RUchSnl2RyEmzD9LdAxKESwnMqZSqTBzCUdPxJCQaduEnpY60UGI0sK8ZZ+HSs0fOTQ4/Jcic5PPcnBbsQB5xRVoO1whOgZRWjBYMmV/rgnJC8uJzGUYtJhyDrcVJ1P+mDo07XtXdAyitDH7okuh0/MgMxo8lpMUMGtpCVTcVpwUuUWdaKp8WXQMorSh0Wox95LLRcego9TX10OlUiXtPjmng/fWSQG2PBPK5+Shdjfv5TKarLk+tNdwyzDRSJqyaAnM9izRMUbUQ19YntTX+87z/xn0c1UD/Ca7YsUKPPDAAwNeJxQK4dZbb8XOnTtx8OBBLF++HGvXrj3mOTfddBP+/ve/H/e506ZNw/79+wed+UQ4cpIiFl4+jqMno8iYGYa/cw2i4ZDoKERpZf5lV4iOoChOp7P/z+9//3tYrdZjHnvkkUcGdZ14PA6j0Yg777wTF1544vVCjzzyyDHXbmpqQnZ2Nq699tphfx0sJykiu8iMiQsKRMdIS1pdHIj9B0F3j+goRGll/PyFyB1TJjqGojgcjv4/NpsNKpXquMc+UVtbi6VLl8JkMmH27Nn44IMP+j9mNpvx6KOPYuXKlXA4HCd8LZvNdsy1d+zYAZfLha9+9avD/jpYTlLIguXjoNZw+GREqSRYrO/C1dow8HOJaNBUKjUWXf8V0THoFO69917cc889qKiowKRJk3DDDTcgFoud9vWefPJJXHjhhRg7duyws7GcpBBbnhFTzy0SHSOt5BXuQlvNXtExiNLO1POWILd0+D+kaPTcc889uOyyyzBp0iT8+Mc/RkNDA2pqak7rWk6nE6+99hpuueWWEcnGcpJizlxWBo2O/7ONhPzSI2jav0l0DKK0o9Fqce51N4qOQQOYNWtW/9uFhX1HVnR0dJzWtZ5++mnY7XZcccUVIxGN5STVmO16zFxcLDpGysst6kBT5TrRMYjS0qyLLoU1L190DBqATqfrf/uTXT6J09itKEkS/va3v+HLX/4yMjIyRiQby0kKmnfJWOh4auxps+X50HZ4NSSJW4aJRprOYMRZV10vOgYl0aZNm1BTU4Obb755xK7JcpKCjJYMzL6gVHSMlGTMDMHXthqxSFh0FKK0NH/5FTBZbQM/kWTvwIEDqKioQE9PDzweDyoqKk54cNuTTz6JhQsXYsaMGSP22jyELUXNvXAMKjc2Ixw4/ZXVSqPLiEGKrEPQ6xYdhSgtGa02zF9+pegYNEKWLVuGhoZPdzLOnTsXQN80zic8Hg/WrFkz6PNTBkslHf0qlFJ2bWjABy8dER0jJahUEqxZb6L9yD7RUYjS1pKvrMQZl31edIwREQqFUFdXh/LychgMvC/QSBns95XTOils1tISWLL0omOkhBzHRywmRKMoMzcPsy9eJjoGpQmWkxSmzdBg0XUTRceQvfzSw2g+8L7oGERpbcmXb4b2qN0fRMPBcpLixs/NR9msXNExZCu3uA2NlYO/aRYRDV353PmYdNYi0TEojbCcpIHzr58ErZ5bi/+bPd+LtuoXAC6rIho1Wr0eF3ztNtExKM2wnKSBzGwDFlxWLjqGrJisIXhaVyMWiYiOQpTWzrrqetjyeVNSGlksJ2li9gUlyCmxiI4hCxmGGOKhl9Hr84iOQpTWckrGcOswjQqec5Im1Bo1lnxpMl789U5Fz2Ko1AkYjG+ho7ZFdBRF2FrTgA+ONKAn0AsAcNgsuHDaREwt7Du6fMO+alQ0tcIdDEGrVqEky4ZLZk7G2JysU173veo6fHCkAa5gL8wZGZhVUohlsyZDp+mbvtzV0IJX9x5CJB7HgvJSXD57av/n9gSCeGzTdtx10bkwcIHm6FGpcOHK26HR8scIjTz+q0ojjnIbpp9XjH3vKfcHc07BR2g+cEB0DMWwmQxYNmsKci0mAMCO+mY8vWUHvn3ReXDYMpGXacaV82Ygx2xCNB7He9V1ePy97fj+pUtgMZx4G/yuhhas33sI1505C2W5Wej0BfD89j0AgM/PnYZAOIJVO/bi+jNnI9tiwpObP8L4vGxMK+qbWlizcx8umzWZxWSUzVhyEUqmTBcdg9IUp3XSzFlXjofJOjI3Xko1+aVVaD6wRXQMRZleVICphfnIy7QgL9OCS2dOQYZWi4ZuFwBg3thiTCrIRY7FBIctE5+bMxWhaAxOj++k16zvdqEsNwvzxhYj22zCZEce5owpQrPLDQDo9gdh1OkwZ0wRxmTbMSE/B+1eP4C+YqNVqzGzpHDUv3YlM1ptOP/Gr4qOQWmM5STN6I1aRZ59klfiRGPletExFC2RkLC7sRWRWPyE0zaxeAIfHmmEQadFkd160uuU52aj2eVBY7cbQF8ZOeTs6J8qys00IxKLo8XlQTAcQVOPG0V2K4LhCDbsr8aV8/jb/GhbfOPXYLRkio5BaYzTOmlo4vwCHNrqROOBHtFRksKe70HroTXcMiyI0+3FH9/Zilg8gQytBjedewYctk9/cB1obcezH+5GNBZHplGPry9eCLP+5KN7c8cUIRAO48/vboUkAQlJwtnjx+AzUycAAEwZOly/YDb+tX0PovE4zhhbgsmOPDy/fQ8WTShDdyCIv72/A/FEAhdPn4TZpRxFGUljZs7B9MUXiI4h1MEpUwd+0giaeujgoJ+rUqlO+fEVK1bg6aefHmai0cdykqYWf3Eynv/pdkRCcdFRRpXJFoK7ZTXiUW4ZFiUv04K7LzoPvdEoKpvb8O/te3DbkrP6C8r4/BzcfdF5CEQi2FbbiH98sAt3XnAuMk+y5qSmoxtvHzyCq+bNwJhsO7r8QbxcsR9v7j+Mi6b3jQrOLHFgZonjmM9xeny4ct4M/HL9u/jSWXORadDjD29vwbi87JO+Fg2NIdOKS7/xbdEx6BScTmf/288//zzuv/9+VFVV9T9mNBqPeX40GoVOhuuzOK2Tpqy5Riz50hTRMUZVhiGGeHAtQn6v6CiKptWokZtpRmm2HctmTUGRLRPvH67v/7heq0Vuphljc7Jw3ZmzoVGpsL2u6aTX27CvCvPGFmPhuDEotFsxs8SBS2dOxjuHapA4wehYLB7Hi7v24Zr5M9HlDyAuSRifn4N8qwW5FjMae9yj8FUr08X/cwcs2TmiY9ApOByO/j82mw0qlar//VAoBLvdjlWrVmHJkiUwGAx49tlnAQBPPfUUpk6dCoPBgClTpuAvf/nLMdfdunUr5syZA4PBgPnz52Pt2rVQqVSoqKgYla+DIydpbOKZBWg62IODW50DPznFqDQJ6PVvoLO+VXQU+i8SgFgiceqPx0/+8Ug8jv8emFarVJA++eT/+uCbB2owxZGHkiwbWlyeYwpMQpLAG6+PjFkXXoKJZ54tOgaNgO9973t46KGH8NRTT0Gv1+Pxxx/Hj370I/zpT3/C3LlzsXv3bqxcuRJmsxkrVqyAz+fD5ZdfjmXLluGf//wnGhoacNddd41qRpaTNHfe9ZPQVuuBqy0oOsqIys7bhpaDh0THULz1ew9hSmE+7CYDwtEYKppacaSzGyvPW4BwLIa3D9RgenEBMg16BCNRbK1pgCcYOmYdyL+2VcBm7NuSDADTCgvwXnUdirNsGJNtR7c/gNf3VWN6UQHU6mObSZvHhz1Nrfj2xecBAPIzLVAB2FbbiEyDHh1eP0qz7Mn6dqSt7KISLPnKLaJj0Ai56667cNVVV/W//+CDD+Khhx7qf6y8vBwHDhzAX//6V6xYsQLPPfccVCoVHn/8cRgMBkybNg0tLS1YuXLlqGVkOUlzugwNLr5lBl741Q7Eoyf/bTWV5JceROPeD0THIAD+cBj/2lYBbyjctwvHlomV5y3AJEceovE4Onx+7NjajEA4CnOGDqXZdnzjM2cfs2DWFew9ZhHfhdMmQKUCXt9XBU9vCBZ9BqYVFuDSmZOPeW1JkvDCjkp8bs406D8+CEyn1eD6BbPx4q79iCcSuHLedNhMhuR8M9KURqvFZd/6LnR6fh/Txfz58/vf7uzsRFNTE26++eZjykYsFoPNZgMAVFVVYdasWTAYPv03sGDBglHNyHKiALklFpx79QS89+9q0VGGLa+kFY17XxMdgz523ZmzT/oxnUaDm86df9KPf+IbS4+dKtCo1bh4+iRcPH3SKT9PpVLhmxecc9zj04oK+g9ko+FbdMMK5JeNEx2DRpDZbO5/O/HxFOzjjz+OhQsXHvM8zccnMkuSdNwuoNGeLmU5UYiZS0rQXOVC7e5O0VFOW1aBu2/LMBElxdhZc3HGZVeIjkGjqKCgAMXFxaitrcWXvvSlEz5nypQpeO655xAOh6HX9+1827Fjx6jm4m4dBVl64xRYslNzS6XZ3gtX82rEo1HRUYgUwWi14dLb7x7w3AxKfQ888AB+8Ytf4JFHHkF1dTUqKyvx1FNP4eGHHwYAfPGLX0QikcDXv/51HDx4EBs2bMBvf/tbAAOfq3K6WE4UxGDW4eKbZxy3qFDuMgwxRP0vIeQ/+ZHnRDSCVCpccttdMNtPfYNGSg+33HILnnjiCTz99NOYOXMmFi9ejKeffhrl5eUAAKvVinXr1qGiogJz5szBvffei/vvvx8AjlmHMpJUEvfZKc6O9fXY9kqt6BiDotYkYDavR2dD6q+XIUoVZ1/zRZxz7RdFxxAqFAqhrq4O5eXlo/YDOJU999xz+OpXvwqPx3PcwW6nMtjvK9ecKNAZl4xF62EXmg66REcZUFbuB2g5xGJClCwTzjwLZ19zg+gYJDPPPPMMxo0bh+LiYuzZswff+973cN111w2pmAwFp3UUSKVW4bMrZyDLYRId5ZTySw+g5dA20TGIFCOnZAzXmdAJtbW14cYbb8TUqVPx7W9/G9deey0ee+yxUXs9TusomLerFy/8agd6ffJbZJpf0ozGylWiYxApht5sxpd+9jCyCotFR5EFTuuMjsF+XzlyomDWXCOW3TYLGp28/hlkO3rQfOBF0TGIFEOt0WD5Xd9nMSHZkNdPJUo6xzgbLlgx9bj7lYiSmRVEd+MLSMRjoqMQKcbSFV9H2ay5omPIEicXRtZgv58sJ4SJ8wuw8HPiT4DUm6IIeV9COOAXHYVIMeZ8djnmfPYy0TFkR6fTAQCCwfS6L5lon3w/P/n+ngx36xAAYP6lZfB09uKQoDsYq7UJ6DSvo6urXcjrEylR2ex5WHrT6N28LZVpNBrY7XZ0dHQAAEwmExcKD4MkSQgGg+jo6IDdbu8/Gv9kWE6o35IvTYavO4SWquRuMZYgwZ69Ba1Vh5P6ukRKll8+Hsvv+j7U6lP/kFAyh8MBAP0FhYbPbrf3f19Phbt16BjhYBRrfr0TrrbkDWXml1SisfLNpL0ekdJlF5fiCw/8EiarTXSUlBCPxxHlrTOGTafTDThi8gmWEzqOp7MXa36dnC3G+aVNaNy7etRfh4j6WPMKcP1PfoXM7FzRUYhOigti6Ti2PCMu+8ZsZBhGd7g329GD5v3cMkyULOasbFx7309ZTEj2WE7ohArKrbj8zjmjVlAs2UF01a9CIh4flesT0bEMlkxc838/gd1RKDoK0YBYTuikHONsuPzOOdCNcEHRm6MIudcg0sstekTJoDMYcdUPHkDumDLRUYgGheWETskxzobPjWBB0Wjj0KrWw9/dOSLXI6JT0+oycOV3f4jCCZNFRyEaNJYTGpBjnA2X3zH8giJBgjXrfXQ3HRmhZER0KmqNBsu//X2UTp8lOgrRkLCc0KAUjh9+Qckv2Qtn9c4RTEVEJ6PWaLHsjv/F+DMWiI5CNGTcSkxD4qxxY92f9iAaGtpC1vzSBjTuXTNKqYjoaFq9Hp+/+/9QNucM0VGITgvLCQ2Zs8aNdX/cg2h4cAUlp7AbzqpnuTOHKAn0ZjOu/N4DKJ48VXQUotPGckKnZbAFxZrjh7vlWe7MIUoCk82Oa+59EHljy0VHIRoWlhM6bc4jHrz6lz0IB2In/LjBHEE08G8EXF1JTkakPNa8Alxz34PIchSJjkI0bCwnNCyutgDW/XEPfN2hYx7X6OLQ615BT0udoGREypFTMgZX3/sTnvxKaYPlhIYt4Anj1T/vRWej7+NHJGTlboTz8G6huYiUwDF+Iq76wY9hzLSKjkI0YlhOaEREQjFseHw/Gvd3I6+4Ak373hEdiSjtlU6fhSv+9z5kGE2ioxCNKJYTGjGJeAIfrt2ED1Y9JDoKUdqbecFnccHXboVGqxMdhWjEsZzQiPto3YvY/NzTkKSE6ChEaUet0WDJipWY+9nloqMQjRqWExoVR3Zuw6t/+C2ioV7RUYjShjHTisvv/gFKp80UHYVoVLGc0KjpbKjDS7/+CXxdvMkf0XDljSnD5//3h7DlF4iOQjTqWE5oVAXcLqz/42/QuG+v6ChEKWviwnNw6Tfuhs5gEB2FKClYTmjUSYkEPljzb3y45t9ch0I0FCoVzrnmizjr6uuhUqlEpyFKGpYTSprGfXuw/o+/RcDtEh2FSPZ0BiMu/ebdmHjm2aKjECUdywklVd80z2/RuG+P6ChEsuUYPxHL7rgHWYXFoqMQCcFyQknHaR6iE1Op1FhwxbU459ovQq3RiI5DJAzLCQnDaR6iT1nz8nHpN7+DkinTRUchEo7lhITiNA8RMOXcxbjwlm9AbzKLjkIkCywnJJwkSah441Vs/uffeWgbKYreZMYFX7sVU89bKjoKkaywnJBseLs68Objf0Z9xU7RUYhGXfGUaVj2zXtgzcsXHYVIdlhOSHb2b3obG595AiG/T3QUohGn1etx9tU3YP7lV0Kt5qJXohNhOSFZCrhdePtvj+Lwtq2ioxCNmHFnLMAFX72VoyVEA2A5IVmr3rYF7/zt/3FHD6W0zNw8fOam/8GEM88SHYUoJbCckOyF/H5sfOYJ7N/0lugoREOi1mgwb9nncc41X+R9cYiGgOWEUkbzof3Y9MwTaDtyWHQUogEVT5mGC2/+BnLHlImOQpRyWE4opUiShEPvb8Tmfz8DX1en6DhExzFkWnH+l27CjCUX8WZ9RKeJ5YRSUiwSwc5X12L7y6sR6eXZKCSeVpeB2Rcvw8Irr4Mx0yo6DlFKYzmhlBZwu7B11XOofPcNSAnep4eST63RYPqSC3H21TcgMydXdByitMByQmmhq6kBm/7xJOr37BIdhZRCpcLksxbhnOtuRHYR7x5MNJJYTiit1O/Zha2rn4PzcJXoKJTGyuecgXOv/woKyseLjkKUllhOKC017tuLbWtXobGyQnQUSiNFk6fhvBu+gpKpM0RHIUprLCeU1tpqqrFt7SrU7NgG8J86naaSaTNw5ueuxri5Z4qOQqQILCekCN3Njdi2djWqtr6HRDwuOg6lALVGi8lnL8IZl12BgnETRMchUhSWE1IUT0cbPnplDfZtfAvxaFR0HJIhg9mCmRdegrmXLEdmNnffEInAckKKFHC7UPn2BlS++wa8nR2i45AM2B2FmLfs85ix+EIeNU8kGMsJKZqUSKB+725Uvr0BR3Zu45SPApVMnYEzLrsC489YAJVaLToOEYHlhKhfwO3CvnffROW7b8DT3iY6Do0ic1Y2pp23FNOXXIic4lLRcYjov7CcEP0XSZLQWLkHe99+HTUffYhEPCY6Eo0AjVaLcfMWYMbSi1A2Zx7Uao3oSER0EiwnRKcQ9LhxaOt7OLxtK1oOHYAk8Yj8lKJSoWTKdExdtAQTzzoXRkum6ERENAgsJ0SDFPS4UfPRh6jetgVN+ys5oiJjeWXjMOWc8zHl3PNhzc0XHYeIhojlhOg0hPx+HNm5DYe3b0XDnt2IRSOiIymaTm/AmJmzMW7umSifO5834CNKcSwnRMMUCfWibvcOHN62FQ379iDk84qOpAi2AgfGzT0T4+bOR8n0WdDqdKIjEdEIYTkhGkGSJKGrsR5NByrRtL8SzYf2s6yMELVGi+Ip0zBu7nyUzzuTu2yI0hjLCdEoYlk5feasbBRNnILCSVNQNHEKCsZNgDYjQ3QsIkoClhOiJJIkCZ0NdWg+uB/ttYfRUXcEPa3Nij/8Ta3RIr+svL+IFE2aCmseF7ISKRXLCZFgsUgEXY31aK87gs6GOnQ3N6KruTE9R1hUKmRm5yK7uARZhcXILipGXtk4FIybAF2GXnQ6IpIJlhMimQq4XX1FpakR3q4O+Lq74OvuhK+7CwFXD6SEfM9c0ekNyCoqRnbRxyWkuOTjt4ug0/O+NUR0aiwnRCkokYjD39MDX3cX/D1d8HV1flxeuhAO+hEJhRANhRANhz5+u3fYd2HOMJpgstlgstr7/rbZ+/5YbUf9nQWTzQaDJRMqlWqEvloiUhqWEyKFSCTiiIZCiIR6+4pLKAQAUGs0UGu10Gi0UGs1UGu0UGs00Gj7/lZrtNBotYLTE5GSsJwQERGRrPD+4ERERCQrLCdEREQkKywnREREJCssJ0RERCQrLCdEREQkKywnREREJCssJ0RERCQrLCdEREQkKywnREREJCssJ0RERCQrLCdEREQkKywnREREJCssJ0RERCQrLCdEREQkKywnREREJCssJ0RERCQrLCdEREQkKywnREREJCssJ0RERCQrLCdEREQkKywnREREJCssJ0RERCQrLCdEREQkKywnREREJCssJ0RERCQr/x8GfPe8p7RGdQAAAABJRU5ErkJggg==", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fox_mutant.network[\"FOXP3_2\"].set_rate(str(0.1),str(1))\n", + "res_mutant = fox_mutant.run()\n", + "res_mutant.plot_piechart()" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "id": "284c1bdd-1598-46d4-aed3-b7895145a5ca", + "metadata": { + "execution": { + "iopub.execute_input": "2024-06-07T17:39:37.671495Z", + "iopub.status.busy": "2024-06-07T17:39:37.671156Z", + "iopub.status.idle": "2024-06-07T17:39:37.923128Z", + "shell.execute_reply": "2024-06-07T17:39:37.922191Z", + "shell.execute_reply.started": "2024-06-07T17:39:37.671463Z" + } + }, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "fox_mutant.network[\"FOXP3_2\"].set_rate(str(0.01),str(1))\n", + "res_mutant = fox_mutant.run()\n", + "res_mutant.plot_piechart()" + ] + }, + { + "cell_type": "markdown", + "id": "05a3a7da-94e5-48cf-9319-552c6b7d6030", + "metadata": { + "execution": { + "iopub.execute_input": "2024-03-28T21:49:31.935769Z", + "iopub.status.busy": "2024-03-28T21:49:31.935356Z", + "iopub.status.idle": "2024-03-28T21:49:31.942644Z", + "shell.execute_reply": "2024-03-28T21:49:31.941418Z", + "shell.execute_reply.started": "2024-03-28T21:49:31.935737Z" + } + }, + "source": [ + "In the same idea, by decreasing the activation rate of FOXP3_2, we decrase the proportion of Tregs." + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "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.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/sample_projects_intracellular/boolean/tutorial/scripts/README.md b/sample_projects_intracellular/boolean/tutorial/scripts/README.md new file mode 100644 index 000000000..58e52e3cd --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/scripts/README.md @@ -0,0 +1,30 @@ +# PhysiBoSS Tutorial Jupyter Notebook + +In this folder we provide a few jupyter notebooks which analyse either the intracellular Boolean models or the PhysiBoSS models. + +## Available notebooks + +CellFate_Analysis.ipynb : Analysis of the Calzone's cell fate model. + +Cell_cycle_boolean_analysis.ipynb : Analysis of the results of the cell cycle intracellular model + +Cell_cycle_analysis.ipynb : Analysis of the results of the cell cycle PhysiBoSS model + +Corral_analysis.ipynb : Analysis of the Corral model + + +## Running the notebooks + +To install dependencies, you can use conda and run : + +`conda env create --file environment.yml` + +and then activate your environment with : + +`conda activate tutorial-notebooks` + +Finally, you can run Jupyter Lab and open the notebooks : + +`jupyter-lab` + + diff --git a/sample_projects_intracellular/boolean/tutorial/scripts/environment.yml b/sample_projects_intracellular/boolean/tutorial/scripts/environment.yml new file mode 100644 index 000000000..e2bb63330 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/scripts/environment.yml @@ -0,0 +1,26 @@ +name: tutorial-notebooks +channels: + - colomoto + - conda-forge + - defaults +dependencies: + - pandas + - matplotlib + - python + - scipy + - numpy + - jupyterlab + - maboss + - pymaboss + - ginsim + - ginsim-python + - pygraphviz + - graphviz + - pydot + - tqdm + - scipy + - scikit-learn + - seaborn + - pip + - pip: + - pcdl[scverse] diff --git a/sample_projects_intracellular/boolean/tutorial/scripts/pyMCDS_cells.py b/sample_projects_intracellular/boolean/tutorial/scripts/pyMCDS_cells.py new file mode 100644 index 000000000..8fbcd6f58 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/scripts/pyMCDS_cells.py @@ -0,0 +1,505 @@ +import xml.etree.ElementTree as ET +import numpy as np +import pandas as pd +import scipy.io as sio +import sys +import warnings +from pathlib import Path + +class pyMCDS_cells: + """ + This class contains a dictionary of dictionaries that contains all of the + output from a single time step of a PhysiCell Model. This class assumes that + all output files are stored in the same directory. Data is loaded by reading + the .xml file for a particular timestep. + + Parameters + ---------- + xml_name: str + String containing the name of the xml file without the path + output_path: str, optional + String containing the path (relative or absolute) to the directory + where PhysiCell output files are stored (default= ".") + + Attributes + ---------- + data : dict + Hierarchical container for all of the data retrieved by parsing the xml + file and the files referenced therein. + """ + def __init__(self, xml_file, output_path='.'): + self.data = self._read_xml(xml_file, output_path) + + ## METADATA RELATED FUNCTIONS + + def get_time(self): + return self.data['metadata']['current_time'] + + ## MESH RELATED FUNCTIONS + + def get_mesh(self, flat=False): + """ + Return a meshgrid of the computational domain. Can return either full + 3D or a 2D plane for contour plots. + + Parameters + ---------- + flat : bool + If flat is set to true, we return only the x and y meshgrid. + Otherwise we return x, y, and z + + Returns + ------- + splitting : list length=2 if flat=True, else length=3 + Contains arrays of voxel center coordinates as meshgrid with shape + [nx_voxel, ny_voxel, nz_voxel] or [nx_voxel, ny_voxel] if flat=True. + """ + if flat == True: + xx = self.data['mesh']['x_coordinates'][:, :, 0] + yy = self.data['mesh']['y_coordinates'][:, :, 0] + + return [xx, yy] + + # if we dont want a plane just return appropriate values + else: + xx = self.data['mesh']['x_coordinates'] + yy = self.data['mesh']['y_coordinates'] + zz = self.data['mesh']['z_coordinates'] + + return [xx, yy, zz] + + def get_2D_mesh(self): + """ + This function returns the x, y meshgrid as two numpy arrays. It is + identical to get_mesh with the option flat=True + + Returns + ------- + splitting : list length=2 + Contains arrays of voxel center coordinates in x and y dimensions + as meshgrid with shape [nx_voxel, ny_voxel] + """ + xx = self.data['mesh']['x_coordinates'][:, :, 0] + yy = self.data['mesh']['y_coordinates'][:, :, 0] + + return [xx, yy] + + def get_linear_voxels(self): + """ + Helper function to quickly grab voxel centers array stored linearly as + opposed to meshgrid-style. + """ + return self.data['mesh']['voxels']['centers'] + + def get_mesh_spacing(self): + """ + Returns the space in between voxel centers for the mesh in terms of the + mesh's spatial units. Assumes that voxel centers fall on integer values. + + Returns + ------- + dx : float + Distance between voxel centers in the same units as the other + spatial measurements + """ + centers = self.get_linear_voxels() + X = np.unique(centers[0, :]) + Y = np.unique(centers[1, :]) + Z = np.unique(centers[2, :]) + + dx = (X.max() - X.min()) / X.shape[0] + dy = (Y.max() - Y.min()) / Y.shape[0] + dz = (Z.max() - Z.min()) / Z.shape[0] + + if np.abs(dx - dy) > 1e-10 or np.abs(dy - dz) > 1e-10 \ + or np.abs(dx - dz) > 1e-10: + print('Warning: grid spacing may be axis dependent.') + + return round(dx) + + def get_containing_voxel_ijk(self, x, y, z): + """ + Internal function to get the meshgrid indices for the center of a voxel + that contains the given position. + + Note that pyMCDS stores meshgrids as 'cartesian' + (indexing='xy' in np.meshgrid) which means that we will have + to use these indices as [j, i, k] on the actual meshgrid objects + + Parameters + ---------- + x : float + x-coordinate for the position + y : float + y-coordinate for the position + z : float + z-coordinate for the position + + Returns + ------- + ijk : list length=3 + contains the i, j, and k indices for the containing voxel's center + """ + xx, yy, zz = self.get_mesh() + ds = self.get_mesh_spacing() + + if x > xx.max(): + warnings.warn('Position out of bounds: x out of bounds in pyMCDS._get_voxel_idx({0}, {1}, {2}). Setting x = x_max!'.format(x, y, z)) + x = xx.max() + elif x < xx.min(): + warnings.warn('Position out of bounds: x out of bounds in pyMCDS._get_voxel_idx({0}, {1}, {2}). Setting x = x_min!'.format(x, y, z)) + x = xx.min() + elif y > yy.max(): + warnings.warn('Position out of bounds: y out of bounds in pyMCDS._get_voxel_idx({0}, {1}, {2}). Setting y = y_max!'.format(x, y, z)) + y = yy.max() + elif y < yy.min(): + warnings.warn('Position out of bounds: y out of bounds in pyMCDS._get_voxel_idx({0}, {1}, {2}). Setting y = y_min!'.format(x, y, z)) + y = yy.min() + elif z > zz.max(): + warnings.warn('Position out of bounds: z out of bounds in pyMCDS._get_voxel_idx({0}, {1}, {2}). Setting z = z_max!'.format(x, y, z)) + z = zz.max() + elif z < zz.min(): + warnings.warn('Position out of bounds: z out of bounds in pyMCDS._get_voxel_idx({0}, {1}, {2}). Setting z = z_min!'.format(x, y, z)) + z = zz.min() + + i = np.round((x - xx.min()) / ds) + j = np.round((y - yy.min()) / ds) + k = np.round((z - zz.min()) / ds) + + ii, jj, kk = int(i), int(j), int(k) + + return [ii, jj, kk] + + ## MICROENVIRONMENT RELATED FUNCTIONS + + def get_substrate_names(self): + """ + Returns list of chemical species in microenvironment + + Returns + ------- + species_list : array (str), shape=[n_species,] + Contains names of chemical species in microenvironment + """ + species_list = [] + for name in self.data['continuum_variables']: + species_list.append(name) + + return species_list + + def get_concentrations(self, species_name, z_slice=None): + """ + Returns the concentration array for the specified chemical species + in the microenvironment. Can return either the whole 3D picture, or + a 2D plane of concentrations. + + Parameters + ---------- + species_name : str + Name of the chemical species for which to get concentrations + + z_slice : float + z-axis position to use as plane for 2D output. This value must match + a plane of voxel centers in the z-axis. + Returns + ------- + conc_arr : array (np.float) shape=[nx_voxels, ny_voxels, nz_voxels] + Contains the concentration of the specified chemical in each voxel. + The array spatially maps to a meshgrid of the voxel centers. + """ + if z_slice is not None: + # check to see that z_slice is a valid plane + zz = self.data['mesh']['z_coordinates'] + assert z_slice in zz, 'Specified z_slice {} not in z_coordinates'.format(z_slice) + + # do the processing if its ok + mask = zz == z_slice + full_conc = self.data['continuum_variables'][species_name]['data'] + conc_arr = full_conc[mask].reshape((zz.shape[0], zz.shape[1])) + else: + conc_arr = self.data['continuum_variables'][species_name]['data'] + + return conc_arr + + def get_concentrations_at(self, x, y, z): + """ + Return concentrations of each chemical species inside a particular voxel + that contains the point described in the arguments. + + Parameters + ---------- + x : float + x-position for the point of interest + y : float + y_position for the point of interest + z : float + z_position for the point of interest + + Returns + ------- + concs : array, shape=[n_substrates,] + array of concentrations in the order given by get_substrate_names() + """ + i, j, k = self.get_containing_voxel_ijk(x, y, z) + sub_name_list = self.get_substrate_names() + concs = np.zeros(len(sub_name_list)) + + for ix in range(len(sub_name_list)): + concs[ix] = self.get_concentrations(sub_name_list[ix])[j, i, k] + + return concs + + + ## CELL RELATED FUNCTIONS + + def get_cell_df(self): + """ + Builds DataFrame from data['discrete_cells'] + + Returns + ------- + cells_df : pd.Dataframe, shape=[n_cells, n_variables] + Dataframe containing the cell data for all cells at this time step + """ + cells_df = pd.DataFrame(self.data['discrete_cells']) + return cells_df + + def get_cell_variables(self): + """ + Returns the names of all of the cell variables tracked in ['discrete cells'] + dictionary + + Returns + ------- + var_list : list, shape=[n_variables] + Contains the names of the cell variables + """ + var_list = [] + for name in self.data['discrete_cells']: + var_list.append(name) + return var_list + + def get_cell_df_at(self, x, y, z): + """ + Returns a dataframe for cells in the same voxel as the position given by + x, y, and z. + + Parameters + ---------- + x : float + x-position for the point of interest + y : float + y_position for the point of interest + z : float + z_position for the point of interest + + Returns + ------- + vox_df : pd.DataFrame, shape=[n_cell_in_voxel, n_variables] + cell dataframe containing only cells in the same voxel as the point + specified by x, y, and z. + """ + ds = self.get_mesh_spacing() + xx, yy, zz = self.get_mesh() + i, j, k = self.get_containing_voxel_ijk(x, y, z) + x_vox = xx[j, i, k] + y_vox = yy[j, i, k] + z_vox = zz[j, i, k] + + cell_df = self.get_cell_df() + inside_voxel = ( (cell_df['position_x'] < x_vox + ds/2.) & + (cell_df['position_x'] > x_vox - ds/2.) & + (cell_df['position_y'] < y_vox + ds/2.) & + (cell_df['position_y'] > y_vox - ds/2.) & + (cell_df['position_z'] < z_vox + ds/2.) & + (cell_df['position_z'] > z_vox - ds/2.) ) + vox_df = cell_df[inside_voxel] + return vox_df + + def _read_xml(self, xml_file, output_path='.'): + """ + Does the actual work of initializing MultiCellDS by parsing the xml + """ + + output_path = Path(output_path) + xml_file = output_path / xml_file + tree = ET.parse(xml_file) + + # print('Reading {}'.format(xml_file)) + + root = tree.getroot() + MCDS = {} + + # Get current simulated time + metadata_node = root.find('metadata') + time_node = metadata_node.find('current_time') + MCDS['metadata'] = {} + MCDS['metadata']['current_time'] = float(time_node.text) + MCDS['metadata']['time_units'] = time_node.get('units') + + # Get current runtime + time_node = metadata_node.find('current_runtime') + MCDS['metadata']['current_runtime'] = float(time_node.text) + MCDS['metadata']['runtime_units'] = time_node.get('units') + + # # find the microenvironment node + # me_node = root.find('microenvironment') + # me_node = me_node.find('domain') + + # # find the mesh node + # mesh_node = me_node.find('mesh') + # MCDS['metadata']['spatial_units'] = mesh_node.get('units') + # MCDS['mesh'] = {} + + # # while we're at it, find the mesh + # coord_str = mesh_node.find('x_coordinates').text + # delimiter = mesh_node.find('x_coordinates').get('delimiter') + # x_coords = np.array(coord_str.split(delimiter), dtype=np.float) + + # coord_str = mesh_node.find('y_coordinates').text + # delimiter = mesh_node.find('y_coordinates').get('delimiter') + # y_coords = np.array(coord_str.split(delimiter), dtype=np.float) + + # coord_str = mesh_node.find('z_coordinates').text + # delimiter = mesh_node.find('z_coordinates').get('delimiter') + # z_coords = np.array(coord_str.split(delimiter), dtype=np.float) + + # # reshape into a mesh grid + # xx, yy, zz = np.meshgrid(x_coords, y_coords, z_coords) + + # MCDS['mesh']['x_coordinates'] = xx + # MCDS['mesh']['y_coordinates'] = yy + # MCDS['mesh']['z_coordinates'] = zz + + # # Voxel data must be loaded from .mat file + # voxel_file = mesh_node.find('voxels').find('filename').text + # voxel_path = output_path / voxel_file + # try: + # initial_mesh = sio.loadmat(voxel_path)['mesh'] + # except: + # raise FileNotFoundError( + # "No such file or directory:\n'{}' referenced in '{}'".format(voxel_path, xml_file)) + # sys.exit(1) + + # print('Reading {}'.format(voxel_path)) + + # # center of voxel specified by first three rows [ x, y, z ] + # # volume specified by fourth row + # MCDS['mesh']['voxels'] = {} + # MCDS['mesh']['voxels']['centers'] = initial_mesh[:3, :] + # MCDS['mesh']['voxels']['volumes'] = initial_mesh[3, :] + + # # Continuum_variables, unlike in the matlab version the individual chemical + # # species will be primarily accessed through their names e.g. + # # MCDS['continuum_variables']['oxygen']['units'] + # # MCDS['continuum_variables']['glucose']['data'] + # MCDS['continuum_variables'] = {} + # variables_node = me_node.find('variables') + # file_node = me_node.find('data').find('filename') + + # # micro environment data is shape [4+n, len(voxels)] where n is the number + # # of species being tracked. the first 3 rows represent (x, y, z) of voxel + # # centers. The fourth row contains the voxel volume. The 5th row and up will + # # contain values for that species in that voxel. + # me_file = file_node.text + # me_path = output_path / me_file + # # Changes here + # try: + # me_data = sio.loadmat(me_path)['multiscale_microenvironment'] + # except: + # raise FileNotFoundError( + # "No such file or directory:\n'{}' referenced in '{}'".format(me_path, xml_file)) + # sys.exit(1) + + # print('Reading {}'.format(me_path)) + + # var_children = variables_node.findall('variable') + + # # we're going to need the linear x, y, and z coordinates later + # # but we dont need to get them in the loop + # X, Y, Z = np.unique(xx), np.unique(yy), np.unique(zz) + + # for si, species in enumerate(var_children): + # species_name = species.get('name') + # MCDS['continuum_variables'][species_name] = {} + # MCDS['continuum_variables'][species_name]['units'] = species.get( + # 'units') + + # print('Parsing {:s} data'.format(species_name)) + + # # initialize array for concentration data + # MCDS['continuum_variables'][species_name]['data'] = np.zeros(xx.shape) + + # # travel down one level on tree + # species = species.find('physical_parameter_set') + + # # diffusion data for each species + # MCDS['continuum_variables'][species_name]['diffusion_coefficient'] = {} + # MCDS['continuum_variables'][species_name]['diffusion_coefficient']['value'] \ + # = float(species.find('diffusion_coefficient').text) + # MCDS['continuum_variables'][species_name]['diffusion_coefficient']['units'] \ + # = species.find('diffusion_coefficient').get('units') + + # # decay data for each species + # MCDS['continuum_variables'][species_name]['decay_rate'] = {} + # MCDS['continuum_variables'][species_name]['decay_rate']['value'] \ + # = float(species.find('decay_rate').text) + # MCDS['continuum_variables'][species_name]['decay_rate']['units'] \ + # = species.find('decay_rate').get('units') + + # # store data from microenvironment file as numpy array + # # iterate over each voxel + # for vox_idx in range(MCDS['mesh']['voxels']['centers'].shape[1]): + # # find the center + # center = MCDS['mesh']['voxels']['centers'][:, vox_idx] + + # i = np.where(np.abs(center[0] - X) < 1e-10)[0][0] + # j = np.where(np.abs(center[1] - Y) < 1e-10)[0][0] + # k = np.where(np.abs(center[2] - Z) < 1e-10)[0][0] + + # MCDS['continuum_variables'][species_name]['data'][j, i, k] \ + # = me_data[4+si, vox_idx] + + # in order to get to the good stuff we have to pass through a few different + # hierarchal levels + cell_node = root.find('cellular_information') + cell_node = cell_node.find('cell_populations') + cell_node = cell_node.find('cell_population') + cell_node = cell_node.find('custom') + # we want the PhysiCell data, there is more of it + for child in cell_node.findall('simplified_data'): + if child.get('source') == 'PhysiCell': + cell_node = child + break + + MCDS['discrete_cells'] = {} + data_labels = [] + # iterate over 'label's which are children of 'labels' these will be used to + # label data arrays + for label in cell_node.find('labels').findall('label'): + # I don't like spaces in my dictionary keys + fixed_label = label.text.replace(' ', '_') + if int(label.get('size')) > 1: + # tags to differentiate repeated labels (usually space related) + dir_label = ['_x', '_y', '_z'] + for i in range(int(label.get('size'))): + data_labels.append(fixed_label + dir_label[i]) + else: + data_labels.append(fixed_label) + + # load the file + cell_file = cell_node.find('filename').text + cell_path = output_path / cell_file + try: + cell_data = sio.loadmat(cell_path)['cells'] + except: + raise FileNotFoundError( + "No such file or directory:\n'{}' referenced in '{}'".format(cell_path, xml_file)) + sys.exit(1) + + # print('Reading {}'.format(cell_path)) + + for col in range(len(data_labels)): + MCDS['discrete_cells'][data_labels[col]] = cell_data[col, :] + + return MCDS diff --git a/sample_projects_intracellular/boolean/tutorial/scripts/tools.py b/sample_projects_intracellular/boolean/tutorial/scripts/tools.py new file mode 100644 index 000000000..0730bffb7 --- /dev/null +++ b/sample_projects_intracellular/boolean/tutorial/scripts/tools.py @@ -0,0 +1,141 @@ +import networkx as nx +from networkx.drawing.nx_pydot import graphviz_layout +from networkx.drawing.nx_agraph import to_agraph, graphviz_layout +import matplotlib as mpl +import matplotlib.pyplot as plt +from IPython.display import Image +import numpy as np + +def load_trajs(path, outputs): + + trajs = [] + all_states = set() + + with open(path + "/res_traj.txt", "r") as res_traj: + id_trajectory = 0 + states = [] + + for line in res_traj.readlines(): + + if line.startswith("Trajectory"): + if id_trajectory > 0: + trajs.append(states) + states = [] + + id_trajectory = int(line.split("#")[1]) + current_time = 0 + + elif line.startswith(" istate"): + state = line.split("\t")[1].strip() + state_array = " -- ".join(sorted([node for node in state.split(" -- ") if node in outputs])) + if state_array == '': + state_array = "" + + all_states.add(state_array) + states.append(state_array) + + elif line == "\n": + pass + + else: + tokens = line.split("\t") + state = tokens[1].strip() + + state_array = " -- ".join(sorted([node for node in state.split(" -- ") if node in outputs])) + + if state_array == '': + state_array = "" + + if (len(states) == 0 or states[len(states)-1] != state_array): + + all_states.add(state_array) + states.append(state_array) + + + return trajs, all_states + +def draw_graph_from_pandas(data, prog="neato"): + G = nx.from_pandas_adjacency(data, create_using=nx.DiGraph()) + + edge_colors = [edge['weight'] for _, edge in G.edges.items()] + + pos = graphviz_layout(G, prog=prog) + fig = plt.figure(figsize=(12,6), dpi=100) + + nx.draw(G, pos, with_labels=True, edgelist=[], node_size=0) + cmap = mpl.colors.ListedColormap(plt.cm.Blues(np.linspace(0.2, 1, 100))) + + edges = nx.draw_networkx_edges( + G, + pos, + arrowstyle="->", + arrowsize=10, + edgelist=G.edges().keys(), + edge_color=edge_colors, + edge_cmap=cmap, + width=2, + connectionstyle='arc3, rad = 0.1' + ) + + pc = mpl.collections.PatchCollection(edges, cmap=cmap) + pc.set_array(edge_colors) + plt.colorbar(pc, ax=fig.axes[0]) + plt.show() + + +def visit(node, start_node, array, proba, paths_dict, probas, ids_state, nb_loops): + + array.append(node) + + nonzeros = {ids_state[ind]:probas.loc[node,:].iloc[ind] for ind in probas.loc[node, :].to_numpy().nonzero()[0]} + for state in sorted(nonzeros, key=nonzeros.get, reverse=True): + + if state == start_node: + paths_dict[proba*nonzeros[state]] = array + + elif array.count(state) < nb_loops+1: + visit(state, start_node, []+array, proba*nonzeros[state], paths_dict, probas, ids_state, nb_loops) + +def compute_circuits(probas, ids_state, node, nb_loops): + paths_dict = {} + visit(node, node, [], 1, paths_dict, probas, ids_state, nb_loops) + return paths_dict + +def compute_stg_counts(trajs, all_states): + state_ids = {state:ind for ind, state in enumerate(sorted(list(all_states))) } + ids_state = {ind:state for ind, state in enumerate(sorted(list(all_states))) } + stg_counts = np.zeros((len(all_states), len(all_states))) + for i, t_traj in enumerate(trajs): + for j, t_state in enumerate(t_traj): + if j > 0: + stg_counts[state_ids[t_traj[j-1]], state_ids[t_state]] += 1 + + return stg_counts, state_ids, ids_state + +def to_bits(state, nodes): + if state == "": + return tuple([0]*len(nodes)) + bits = [] + state_list = state.split(" -- ") + for node in nodes: + bits.append(1 if node in state_list else 0) + return tuple(bits) + +def to_istates(table, nodes): + istates = {} + for index, value in table.iloc[-1, :].items(): + istates.update({to_bits(index, nodes): value}) + return istates + +def change_inputs(nodes, istates, name_value): + new_istates = {} + for bits, proba in istates.items(): + new_bits = list(bits) + for name in name_value: + new_bits[nodes.index(name)] = name_value[name] + new_tuples = tuple(new_bits) + if new_tuples not in new_istates.keys(): + new_istates[new_tuples] = proba + else: + new_istates[new_tuples] += proba + return new_istates diff --git a/sample_projects_intracellular/fba/cancer_metabolism/custom_modules/cancer_metabolism.cpp b/sample_projects_intracellular/fba/cancer_metabolism/custom_modules/cancer_metabolism.cpp index 0a2b1468f..1357fe7e2 100755 --- a/sample_projects_intracellular/fba/cancer_metabolism/custom_modules/cancer_metabolism.cpp +++ b/sample_projects_intracellular/fba/cancer_metabolism/custom_modules/cancer_metabolism.cpp @@ -72,7 +72,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/sample_projects_intracellular/fba/ecoli_acetic_switch/custom_modules/ecoli_acetic_switch.cpp b/sample_projects_intracellular/fba/ecoli_acetic_switch/custom_modules/ecoli_acetic_switch.cpp index c8f6df449..8d28c3b28 100644 --- a/sample_projects_intracellular/fba/ecoli_acetic_switch/custom_modules/ecoli_acetic_switch.cpp +++ b/sample_projects_intracellular/fba/ecoli_acetic_switch/custom_modules/ecoli_acetic_switch.cpp @@ -135,7 +135,11 @@ void create_bacteria_cell ( void ) void create_cell_types( void ) { - SeedRandom( parameters.ints("random_seed") ); + // set the random seed + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } // housekeeping initialize_default_cell_definition(); diff --git a/sample_projects_intracellular/ode/ode_energy/custom_modules/custom.cpp b/sample_projects_intracellular/ode/ode_energy/custom_modules/custom.cpp index f1175d525..acbd054a6 100644 --- a/sample_projects_intracellular/ode/ode_energy/custom_modules/custom.cpp +++ b/sample_projects_intracellular/ode/ode_energy/custom_modules/custom.cpp @@ -78,7 +78,10 @@ extern "C" rrc::RRHandle createRRInstance(); void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/sample_projects_intracellular/ode/ode_energy/main.cpp b/sample_projects_intracellular/ode/ode_energy/main.cpp index 7b11e6b77..61ef138f0 100644 --- a/sample_projects_intracellular/ode/ode_energy/main.cpp +++ b/sample_projects_intracellular/ode/ode_energy/main.cpp @@ -131,7 +131,7 @@ int main( int argc, char* argv[] ) char filename[1024]; sprintf( filename , "%s/initial" , PhysiCell_settings.folder.c_str() ); - save_PhysiCell_to_MultiCellDS_xml_pugi( filename , microenvironment , PhysiCell_globals.current_time ); + save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); // save a quick SVG cross section through z = 0, after setting its // length bar to 200 microns @@ -188,7 +188,7 @@ 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_xml_pugi( filename , microenvironment , PhysiCell_globals.current_time ); + save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); } PhysiCell_globals.full_output_index++; @@ -254,7 +254,7 @@ int main( int argc, char* argv[] ) // save a final simulation snapshot sprintf( filename , "%s/final" , PhysiCell_settings.folder.c_str() ); - save_PhysiCell_to_MultiCellDS_xml_pugi( filename , microenvironment , PhysiCell_globals.current_time ); + save_PhysiCell_to_MultiCellDS_v2( filename , microenvironment , PhysiCell_globals.current_time ); sprintf( filename , "%s/final.svg" , PhysiCell_settings.folder.c_str() ); SVG_plot( filename , microenvironment, 0.0 , PhysiCell_globals.current_time, cell_coloring_function ); diff --git a/tests/cases/output_heterogeneity-sample/snapshot00000000.svg b/tests/cases/output_heterogeneity-sample/snapshot00000000.svg new file mode 100644 index 000000000..4d367b065 --- /dev/null +++ b/tests/cases/output_heterogeneity-sample/snapshot00000000.svg @@ -0,0 +1,3596 @@ + + + + + + Current time: 0 days, 0 hours, and 0.00 minutes, z = 0.00 μm + + + 889 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0053 seconds + + + + diff --git a/tests/cases/output_heterogeneity-sample/snapshot00000001.svg b/tests/cases/output_heterogeneity-sample/snapshot00000001.svg new file mode 100644 index 000000000..5d087e6cb --- /dev/null +++ b/tests/cases/output_heterogeneity-sample/snapshot00000001.svg @@ -0,0 +1,3596 @@ + + + + + + Current time: 0 days, 1 hours, and 0.00 minutes, z = 0.00 μm + + + 889 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 2.1319 seconds + + + + diff --git a/tests/cases/output_interaction-sample/snapshot00000000.svg b/tests/cases/output_interaction-sample/snapshot00000000.svg new file mode 100644 index 000000000..8b3677eef --- /dev/null +++ b/tests/cases/output_interaction-sample/snapshot00000000.svg @@ -0,0 +1,2680 @@ + + + + + + Current time: 0 days, 0 hours, and 0.00 minutes, z = 0.00 μm + + + 660 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0048 seconds + + + + diff --git a/tests/cases/output_interaction-sample/snapshot00000001.svg b/tests/cases/output_interaction-sample/snapshot00000001.svg new file mode 100644 index 000000000..b317af36c --- /dev/null +++ b/tests/cases/output_interaction-sample/snapshot00000001.svg @@ -0,0 +1,2668 @@ + + + + + + Current time: 0 days, 0 hours, and 30.00 minutes, z = 0.00 μm + + + 657 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.3906 seconds + + + + diff --git a/tests/cases/output_interaction-sample/snapshot00000002.svg b/tests/cases/output_interaction-sample/snapshot00000002.svg new file mode 100644 index 000000000..c97a925e3 --- /dev/null +++ b/tests/cases/output_interaction-sample/snapshot00000002.svg @@ -0,0 +1,2664 @@ + + + + + + Current time: 0 days, 1 hours, and 0.00 minutes, z = 0.00 μm + + + 656 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.7860 seconds + + + + diff --git a/tests/cases/output_interaction-sample/snapshot00000003.svg b/tests/cases/output_interaction-sample/snapshot00000003.svg new file mode 100644 index 000000000..14cb7689c --- /dev/null +++ b/tests/cases/output_interaction-sample/snapshot00000003.svg @@ -0,0 +1,2652 @@ + + + + + + Current time: 0 days, 1 hours, and 30.00 minutes, z = 0.00 μm + + + 653 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 1.1774 seconds + + + + diff --git a/tests/cases/output_mechano-sample/snapshot00000000.svg b/tests/cases/output_mechano-sample/snapshot00000000.svg new file mode 100644 index 000000000..fc7ee99ec --- /dev/null +++ b/tests/cases/output_mechano-sample/snapshot00000000.svg @@ -0,0 +1,2232 @@ + + + + + + Current time: 0 days, 0 hours, and 0.00 minutes, z = 0.00 μm + + + 548 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0032 seconds + + + + diff --git a/tests/cases/output_mechano-sample/snapshot00000001.svg b/tests/cases/output_mechano-sample/snapshot00000001.svg new file mode 100644 index 000000000..b21170487 --- /dev/null +++ b/tests/cases/output_mechano-sample/snapshot00000001.svg @@ -0,0 +1,2232 @@ + + + + + + Current time: 0 days, 1 hours, and 0.00 minutes, z = 0.00 μm + + + 548 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.6763 seconds + + + + diff --git a/tests/cases/output_mechano-sample/snapshot00000002.svg b/tests/cases/output_mechano-sample/snapshot00000002.svg new file mode 100644 index 000000000..e01fae8a6 --- /dev/null +++ b/tests/cases/output_mechano-sample/snapshot00000002.svg @@ -0,0 +1,2232 @@ + + + + + + Current time: 0 days, 2 hours, and 0.00 minutes, z = 0.00 μm + + + 548 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 1.3726 seconds + + + + diff --git a/tests/cases/output_physiboss-cell-lines-sample/snapshot00000000.svg b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000000.svg new file mode 100644 index 000000000..777ac796b --- /dev/null +++ b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000000.svg @@ -0,0 +1,1984 @@ + + + + + + Current time: 0 days, 0 hours, and 0.00 minutes, z = 0.00 μm + + + 486 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0039 seconds + + + + diff --git a/tests/cases/output_physiboss-cell-lines-sample/snapshot00000001.svg b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000001.svg new file mode 100644 index 000000000..bab4dc3fb --- /dev/null +++ b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000001.svg @@ -0,0 +1,1984 @@ + + + + + + Current time: 0 days, 0 hours, and 10.00 minutes, z = 0.00 μm + + + 486 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0602 seconds + + + + diff --git a/tests/cases/output_physiboss-cell-lines-sample/snapshot00000002.svg b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000002.svg new file mode 100644 index 000000000..9ffd9fc5e --- /dev/null +++ b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000002.svg @@ -0,0 +1,1984 @@ + + + + + + Current time: 0 days, 0 hours, and 20.00 minutes, z = 0.00 μm + + + 486 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.1177 seconds + + + + diff --git a/tests/cases/output_physiboss-cell-lines-sample/snapshot00000003.svg b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000003.svg new file mode 100644 index 000000000..49091f0c2 --- /dev/null +++ b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000003.svg @@ -0,0 +1,1984 @@ + + + + + + Current time: 0 days, 0 hours, and 30.00 minutes, z = 0.00 μm + + + 486 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.1753 seconds + + + + diff --git a/tests/cases/output_physiboss-cell-lines-sample/snapshot00000004.svg b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000004.svg new file mode 100644 index 000000000..12515dc1d --- /dev/null +++ b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000004.svg @@ -0,0 +1,1984 @@ + + + + + + Current time: 0 days, 0 hours, and 40.00 minutes, z = 0.00 μm + + + 486 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.2330 seconds + + + + diff --git a/tests/cases/output_physiboss-cell-lines-sample/snapshot00000005.svg b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000005.svg new file mode 100644 index 000000000..1e0a3aa7b --- /dev/null +++ b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000005.svg @@ -0,0 +1,1984 @@ + + + + + + Current time: 0 days, 0 hours, and 50.00 minutes, z = 0.00 μm + + + 486 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.2915 seconds + + + + diff --git a/tests/cases/output_physiboss-cell-lines-sample/snapshot00000006.svg b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000006.svg new file mode 100644 index 000000000..784cfe457 --- /dev/null +++ b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000006.svg @@ -0,0 +1,1984 @@ + + + + + + Current time: 0 days, 1 hours, and 0.00 minutes, z = 0.00 μm + + + 486 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.3497 seconds + + + + diff --git a/tests/cases/output_physiboss-cell-lines-sample/snapshot00000007.svg b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000007.svg new file mode 100644 index 000000000..1fdcfe4cb --- /dev/null +++ b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000007.svg @@ -0,0 +1,1984 @@ + + + + + + Current time: 0 days, 1 hours, and 10.00 minutes, z = 0.00 μm + + + 486 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.4075 seconds + + + + diff --git a/tests/cases/output_physiboss-cell-lines-sample/snapshot00000008.svg b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000008.svg new file mode 100644 index 000000000..ffaf96e5d --- /dev/null +++ b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000008.svg @@ -0,0 +1,1984 @@ + + + + + + Current time: 0 days, 1 hours, and 20.00 minutes, z = 0.00 μm + + + 486 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.4658 seconds + + + + diff --git a/tests/cases/output_physiboss-cell-lines-sample/snapshot00000009.svg b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000009.svg new file mode 100644 index 000000000..254c2f1e2 --- /dev/null +++ b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000009.svg @@ -0,0 +1,1984 @@ + + + + + + Current time: 0 days, 1 hours, and 30.00 minutes, z = 0.00 μm + + + 486 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.5248 seconds + + + + diff --git a/tests/cases/output_physiboss-cell-lines-sample/snapshot00000010.svg b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000010.svg new file mode 100644 index 000000000..a48b7c87b --- /dev/null +++ b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000010.svg @@ -0,0 +1,1984 @@ + + + + + + Current time: 0 days, 1 hours, and 40.00 minutes, z = 0.00 μm + + + 486 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.5842 seconds + + + + diff --git a/tests/cases/output_physiboss-cell-lines-sample/snapshot00000011.svg b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000011.svg new file mode 100644 index 000000000..fa604e642 --- /dev/null +++ b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000011.svg @@ -0,0 +1,1984 @@ + + + + + + Current time: 0 days, 1 hours, and 50.00 minutes, z = 0.00 μm + + + 486 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.6481 seconds + + + + diff --git a/tests/cases/output_physiboss-cell-lines-sample/snapshot00000012.svg b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000012.svg new file mode 100644 index 000000000..374ace2c6 --- /dev/null +++ b/tests/cases/output_physiboss-cell-lines-sample/snapshot00000012.svg @@ -0,0 +1,1984 @@ + + + + + + Current time: 0 days, 2 hours, and 0.00 minutes, z = 0.00 μm + + + 486 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.7119 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000000.svg b/tests/cases/output_physiboss-tutorial/snapshot00000000.svg new file mode 100644 index 000000000..0e3dbe4b0 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000000.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 0 hours, and 0.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0004 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000001.svg b/tests/cases/output_physiboss-tutorial/snapshot00000001.svg new file mode 100644 index 000000000..212dc3299 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000001.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 0 hours, and 6.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0026 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000002.svg b/tests/cases/output_physiboss-tutorial/snapshot00000002.svg new file mode 100644 index 000000000..3d04181e8 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000002.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 0 hours, and 12.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0042 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000003.svg b/tests/cases/output_physiboss-tutorial/snapshot00000003.svg new file mode 100644 index 000000000..6f3395773 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000003.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 0 hours, and 18.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0060 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000004.svg b/tests/cases/output_physiboss-tutorial/snapshot00000004.svg new file mode 100644 index 000000000..551a294f2 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000004.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 0 hours, and 24.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0079 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000005.svg b/tests/cases/output_physiboss-tutorial/snapshot00000005.svg new file mode 100644 index 000000000..96a813654 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000005.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 0 hours, and 30.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0094 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000006.svg b/tests/cases/output_physiboss-tutorial/snapshot00000006.svg new file mode 100644 index 000000000..63f653d60 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000006.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 0 hours, and 36.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0109 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000007.svg b/tests/cases/output_physiboss-tutorial/snapshot00000007.svg new file mode 100644 index 000000000..41a94665b --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000007.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 0 hours, and 42.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0123 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000008.svg b/tests/cases/output_physiboss-tutorial/snapshot00000008.svg new file mode 100644 index 000000000..d3aa88820 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000008.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 0 hours, and 48.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0138 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000009.svg b/tests/cases/output_physiboss-tutorial/snapshot00000009.svg new file mode 100644 index 000000000..edc8a2a2b --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000009.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 0 hours, and 54.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0152 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000010.svg b/tests/cases/output_physiboss-tutorial/snapshot00000010.svg new file mode 100644 index 000000000..c9a649a0d --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000010.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 1 hours, and 0.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0166 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000011.svg b/tests/cases/output_physiboss-tutorial/snapshot00000011.svg new file mode 100644 index 000000000..a8212bfed --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000011.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 1 hours, and 6.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0182 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000012.svg b/tests/cases/output_physiboss-tutorial/snapshot00000012.svg new file mode 100644 index 000000000..15de28d2b --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000012.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 1 hours, and 12.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0196 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000013.svg b/tests/cases/output_physiboss-tutorial/snapshot00000013.svg new file mode 100644 index 000000000..86f953449 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000013.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 1 hours, and 18.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0212 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000014.svg b/tests/cases/output_physiboss-tutorial/snapshot00000014.svg new file mode 100644 index 000000000..b26e61737 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000014.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 1 hours, and 24.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0227 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000015.svg b/tests/cases/output_physiboss-tutorial/snapshot00000015.svg new file mode 100644 index 000000000..13a71d181 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000015.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 1 hours, and 30.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0243 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000016.svg b/tests/cases/output_physiboss-tutorial/snapshot00000016.svg new file mode 100644 index 000000000..9091ef2aa --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000016.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 1 hours, and 36.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0259 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000017.svg b/tests/cases/output_physiboss-tutorial/snapshot00000017.svg new file mode 100644 index 000000000..48de87c9d --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000017.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 1 hours, and 42.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0274 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000018.svg b/tests/cases/output_physiboss-tutorial/snapshot00000018.svg new file mode 100644 index 000000000..59f68d0cb --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000018.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 1 hours, and 48.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0290 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000019.svg b/tests/cases/output_physiboss-tutorial/snapshot00000019.svg new file mode 100644 index 000000000..b87fc5148 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000019.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 1 hours, and 54.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0305 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000020.svg b/tests/cases/output_physiboss-tutorial/snapshot00000020.svg new file mode 100644 index 000000000..c54060fdf --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000020.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 2 hours, and 0.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0319 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000021.svg b/tests/cases/output_physiboss-tutorial/snapshot00000021.svg new file mode 100644 index 000000000..5385c62a2 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000021.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 2 hours, and 6.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0335 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000022.svg b/tests/cases/output_physiboss-tutorial/snapshot00000022.svg new file mode 100644 index 000000000..f6cf88b6c --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000022.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 2 hours, and 12.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0350 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000023.svg b/tests/cases/output_physiboss-tutorial/snapshot00000023.svg new file mode 100644 index 000000000..287da5dde --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000023.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 2 hours, and 18.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0365 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000024.svg b/tests/cases/output_physiboss-tutorial/snapshot00000024.svg new file mode 100644 index 000000000..1b3b488e2 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000024.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 2 hours, and 24.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0379 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000025.svg b/tests/cases/output_physiboss-tutorial/snapshot00000025.svg new file mode 100644 index 000000000..dce88fea4 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000025.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 2 hours, and 30.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0393 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000026.svg b/tests/cases/output_physiboss-tutorial/snapshot00000026.svg new file mode 100644 index 000000000..dcb446eca --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000026.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 2 hours, and 36.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0409 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000027.svg b/tests/cases/output_physiboss-tutorial/snapshot00000027.svg new file mode 100644 index 000000000..94599a6f8 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000027.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 2 hours, and 42.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0424 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000028.svg b/tests/cases/output_physiboss-tutorial/snapshot00000028.svg new file mode 100644 index 000000000..12050a953 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000028.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 2 hours, and 48.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0440 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000029.svg b/tests/cases/output_physiboss-tutorial/snapshot00000029.svg new file mode 100644 index 000000000..b50334242 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000029.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 2 hours, and 54.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0455 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000030.svg b/tests/cases/output_physiboss-tutorial/snapshot00000030.svg new file mode 100644 index 000000000..249e3ae2e --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000030.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 3 hours, and 0.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0469 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000031.svg b/tests/cases/output_physiboss-tutorial/snapshot00000031.svg new file mode 100644 index 000000000..38293d2d4 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000031.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 3 hours, and 6.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0485 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000032.svg b/tests/cases/output_physiboss-tutorial/snapshot00000032.svg new file mode 100644 index 000000000..fc2128ccc --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000032.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 3 hours, and 12.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0499 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000033.svg b/tests/cases/output_physiboss-tutorial/snapshot00000033.svg new file mode 100644 index 000000000..26a2917ad --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000033.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 3 hours, and 18.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0515 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000034.svg b/tests/cases/output_physiboss-tutorial/snapshot00000034.svg new file mode 100644 index 000000000..d3da2a434 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000034.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 3 hours, and 24.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0529 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000035.svg b/tests/cases/output_physiboss-tutorial/snapshot00000035.svg new file mode 100644 index 000000000..89d04e22f --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000035.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 3 hours, and 30.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0544 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000036.svg b/tests/cases/output_physiboss-tutorial/snapshot00000036.svg new file mode 100644 index 000000000..1802e5e1f --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000036.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 3 hours, and 36.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0560 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000037.svg b/tests/cases/output_physiboss-tutorial/snapshot00000037.svg new file mode 100644 index 000000000..53dc58130 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000037.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 3 hours, and 42.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0575 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000038.svg b/tests/cases/output_physiboss-tutorial/snapshot00000038.svg new file mode 100644 index 000000000..a3b2f1342 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000038.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 3 hours, and 48.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0591 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000039.svg b/tests/cases/output_physiboss-tutorial/snapshot00000039.svg new file mode 100644 index 000000000..84a6c58a4 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000039.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 3 hours, and 54.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0606 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000040.svg b/tests/cases/output_physiboss-tutorial/snapshot00000040.svg new file mode 100644 index 000000000..090b10870 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000040.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 4 hours, and 0.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0621 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000041.svg b/tests/cases/output_physiboss-tutorial/snapshot00000041.svg new file mode 100644 index 000000000..3e9929220 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000041.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 4 hours, and 6.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0638 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000042.svg b/tests/cases/output_physiboss-tutorial/snapshot00000042.svg new file mode 100644 index 000000000..7f437c58f --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000042.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 4 hours, and 12.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0653 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000043.svg b/tests/cases/output_physiboss-tutorial/snapshot00000043.svg new file mode 100644 index 000000000..e9e37d7c2 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000043.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 4 hours, and 18.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0669 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000044.svg b/tests/cases/output_physiboss-tutorial/snapshot00000044.svg new file mode 100644 index 000000000..d1b1e15b3 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000044.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 4 hours, and 24.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0684 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000045.svg b/tests/cases/output_physiboss-tutorial/snapshot00000045.svg new file mode 100644 index 000000000..ee23dda09 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000045.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 4 hours, and 30.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0699 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000046.svg b/tests/cases/output_physiboss-tutorial/snapshot00000046.svg new file mode 100644 index 000000000..74147e110 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000046.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 4 hours, and 36.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0715 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000047.svg b/tests/cases/output_physiboss-tutorial/snapshot00000047.svg new file mode 100644 index 000000000..8f414b16f --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000047.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 4 hours, and 42.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0731 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000048.svg b/tests/cases/output_physiboss-tutorial/snapshot00000048.svg new file mode 100644 index 000000000..54a2dc63b --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000048.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 4 hours, and 48.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0750 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000049.svg b/tests/cases/output_physiboss-tutorial/snapshot00000049.svg new file mode 100644 index 000000000..528374bd7 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000049.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 4 hours, and 54.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0765 seconds + + + + diff --git a/tests/cases/output_physiboss-tutorial/snapshot00000050.svg b/tests/cases/output_physiboss-tutorial/snapshot00000050.svg new file mode 100644 index 000000000..22e67d454 --- /dev/null +++ b/tests/cases/output_physiboss-tutorial/snapshot00000050.svg @@ -0,0 +1,92 @@ + + + + + + Current time: 0 days, 5 hours, and 0.00 minutes, z = 0.00 μm + + + 13 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0780 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000000.svg b/tests/cases/output_physimess-sample/snapshot00000000.svg new file mode 100644 index 000000000..9c56e60f3 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000000.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 0 hours, and 0.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0057 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000001.svg b/tests/cases/output_physimess-sample/snapshot00000001.svg new file mode 100644 index 000000000..11b33940d --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000001.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 0 hours, and 5.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.7302 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000002.svg b/tests/cases/output_physimess-sample/snapshot00000002.svg new file mode 100644 index 000000000..1a92059dc --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000002.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 0 hours, and 10.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 1.4226 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000003.svg b/tests/cases/output_physimess-sample/snapshot00000003.svg new file mode 100644 index 000000000..0891b987e --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000003.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 0 hours, and 15.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 2.1154 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000004.svg b/tests/cases/output_physimess-sample/snapshot00000004.svg new file mode 100644 index 000000000..deb081381 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000004.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 0 hours, and 20.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 2.8063 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000005.svg b/tests/cases/output_physimess-sample/snapshot00000005.svg new file mode 100644 index 000000000..5ab48b1c5 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000005.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 0 hours, and 25.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 3.4972 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000006.svg b/tests/cases/output_physimess-sample/snapshot00000006.svg new file mode 100644 index 000000000..55241f221 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000006.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 0 hours, and 30.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 4.2035 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000007.svg b/tests/cases/output_physimess-sample/snapshot00000007.svg new file mode 100644 index 000000000..273859a50 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000007.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 0 hours, and 35.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 4.9070 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000008.svg b/tests/cases/output_physimess-sample/snapshot00000008.svg new file mode 100644 index 000000000..e37b8fb75 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000008.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 0 hours, and 40.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 5.5983 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000009.svg b/tests/cases/output_physimess-sample/snapshot00000009.svg new file mode 100644 index 000000000..0236e4f0a --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000009.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 0 hours, and 45.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 6.2893 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000010.svg b/tests/cases/output_physimess-sample/snapshot00000010.svg new file mode 100644 index 000000000..cc5c9b1b1 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000010.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 0 hours, and 50.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 6.9802 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000011.svg b/tests/cases/output_physimess-sample/snapshot00000011.svg new file mode 100644 index 000000000..fa39fa655 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000011.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 0 hours, and 55.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 7.6718 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000012.svg b/tests/cases/output_physimess-sample/snapshot00000012.svg new file mode 100644 index 000000000..db989c471 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000012.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 1 hours, and 0.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 8.3614 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000013.svg b/tests/cases/output_physimess-sample/snapshot00000013.svg new file mode 100644 index 000000000..c7da67fa6 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000013.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 1 hours, and 5.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 9.0630 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000014.svg b/tests/cases/output_physimess-sample/snapshot00000014.svg new file mode 100644 index 000000000..7983d7751 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000014.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 1 hours, and 10.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 9.7567 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000015.svg b/tests/cases/output_physimess-sample/snapshot00000015.svg new file mode 100644 index 000000000..6de2169fd --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000015.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 1 hours, and 15.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 10.4476 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000016.svg b/tests/cases/output_physimess-sample/snapshot00000016.svg new file mode 100644 index 000000000..cd45a76ea --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000016.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 1 hours, and 20.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 11.1413 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000017.svg b/tests/cases/output_physimess-sample/snapshot00000017.svg new file mode 100644 index 000000000..575bb96b6 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000017.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 1 hours, and 25.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 11.8342 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000018.svg b/tests/cases/output_physimess-sample/snapshot00000018.svg new file mode 100644 index 000000000..71fda85b3 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000018.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 1 hours, and 30.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 12.5651 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000019.svg b/tests/cases/output_physimess-sample/snapshot00000019.svg new file mode 100644 index 000000000..789ba502f --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000019.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 1 hours, and 35.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 13.2719 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000020.svg b/tests/cases/output_physimess-sample/snapshot00000020.svg new file mode 100644 index 000000000..716f3d177 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000020.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 1 hours, and 40.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 13.9746 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000021.svg b/tests/cases/output_physimess-sample/snapshot00000021.svg new file mode 100644 index 000000000..a3e05b592 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000021.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 1 hours, and 45.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 14.6726 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000022.svg b/tests/cases/output_physimess-sample/snapshot00000022.svg new file mode 100644 index 000000000..290a4e8f7 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000022.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 1 hours, and 50.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 15.3679 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000023.svg b/tests/cases/output_physimess-sample/snapshot00000023.svg new file mode 100644 index 000000000..e0f89219a --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000023.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 1 hours, and 55.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 16.0678 seconds + + + + diff --git a/tests/cases/output_physimess-sample/snapshot00000024.svg b/tests/cases/output_physimess-sample/snapshot00000024.svg new file mode 100644 index 000000000..d48bf7334 --- /dev/null +++ b/tests/cases/output_physimess-sample/snapshot00000024.svg @@ -0,0 +1,1172 @@ + + + + + + Current time: 0 days, 2 hours, and 0.00 minutes, z = 0.00 μm + + + 1 cells, 376 fibres + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 16.7702 seconds + + + + diff --git a/tests/cases/output_rules-sample/snapshot00000000.svg b/tests/cases/output_rules-sample/snapshot00000000.svg new file mode 100644 index 000000000..71ddf3f7c --- /dev/null +++ b/tests/cases/output_rules-sample/snapshot00000000.svg @@ -0,0 +1,5240 @@ + + + + + + Current time: 0 days, 0 hours, and 0.00 minutes, z = 0.00 μm + + + 1300 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0076 seconds + + + + diff --git a/tests/cases/output_rules-sample/snapshot00000001.svg b/tests/cases/output_rules-sample/snapshot00000001.svg new file mode 100644 index 000000000..6f4faa229 --- /dev/null +++ b/tests/cases/output_rules-sample/snapshot00000001.svg @@ -0,0 +1,5240 @@ + + + + + + Current time: 0 days, 1 hours, and 0.00 minutes, z = 0.00 μm + + + 1300 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 2.3034 seconds + + + + diff --git a/tests/cases/output_rules-sample/snapshot00000002.svg b/tests/cases/output_rules-sample/snapshot00000002.svg new file mode 100644 index 000000000..c9e492d19 --- /dev/null +++ b/tests/cases/output_rules-sample/snapshot00000002.svg @@ -0,0 +1,5232 @@ + + + + + + Current time: 0 days, 2 hours, and 0.00 minutes, z = 0.00 μm + + + 1298 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 4.5500 seconds + + + + diff --git a/tests/cases/output_template/snapshot00000000.svg b/tests/cases/output_template/snapshot00000000.svg new file mode 100644 index 000000000..12ccd3380 --- /dev/null +++ b/tests/cases/output_template/snapshot00000000.svg @@ -0,0 +1,60 @@ + + + + + + Current time: 0 days, 0 hours, and 0.00 minutes, z = 0.00 μm + + + 5 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0003 seconds + + + + diff --git a/tests/cases/output_template/snapshot00000001.svg b/tests/cases/output_template/snapshot00000001.svg new file mode 100644 index 000000000..319d5c7b2 --- /dev/null +++ b/tests/cases/output_template/snapshot00000001.svg @@ -0,0 +1,60 @@ + + + + + + Current time: 0 days, 1 hours, and 0.00 minutes, z = 0.00 μm + + + 5 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.2920 seconds + + + + diff --git a/tests/cases/output_template/snapshot00000002.svg b/tests/cases/output_template/snapshot00000002.svg new file mode 100644 index 000000000..88069f6ab --- /dev/null +++ b/tests/cases/output_template/snapshot00000002.svg @@ -0,0 +1,60 @@ + + + + + + Current time: 0 days, 2 hours, and 0.00 minutes, z = 0.00 μm + + + 5 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.5886 seconds + + + + diff --git a/tests/cases/output_template_BM/snapshot00000000.svg b/tests/cases/output_template_BM/snapshot00000000.svg new file mode 100644 index 000000000..12ccd3380 --- /dev/null +++ b/tests/cases/output_template_BM/snapshot00000000.svg @@ -0,0 +1,60 @@ + + + + + + Current time: 0 days, 0 hours, and 0.00 minutes, z = 0.00 μm + + + 5 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0003 seconds + + + + diff --git a/tests/cases/output_template_BM/snapshot00000001.svg b/tests/cases/output_template_BM/snapshot00000001.svg new file mode 100644 index 000000000..319d5c7b2 --- /dev/null +++ b/tests/cases/output_template_BM/snapshot00000001.svg @@ -0,0 +1,60 @@ + + + + + + Current time: 0 days, 1 hours, and 0.00 minutes, z = 0.00 μm + + + 5 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.2920 seconds + + + + diff --git a/tests/cases/output_template_BM/snapshot00000002.svg b/tests/cases/output_template_BM/snapshot00000002.svg new file mode 100644 index 000000000..88069f6ab --- /dev/null +++ b/tests/cases/output_template_BM/snapshot00000002.svg @@ -0,0 +1,60 @@ + + + + + + Current time: 0 days, 2 hours, and 0.00 minutes, z = 0.00 μm + + + 5 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.5886 seconds + + + + diff --git a/tests/cases/output_virus-macrophage-sample/snapshot00000000.svg b/tests/cases/output_virus-macrophage-sample/snapshot00000000.svg new file mode 100644 index 000000000..31763c78e --- /dev/null +++ b/tests/cases/output_virus-macrophage-sample/snapshot00000000.svg @@ -0,0 +1,4280 @@ + + + + + + Current time: 0 days, 0 hours, and 0.00 minutes, z = 0.00 μm + + + 1060 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0070 seconds + + + + diff --git a/tests/cases/output_virus-macrophage-sample/snapshot00000001.svg b/tests/cases/output_virus-macrophage-sample/snapshot00000001.svg new file mode 100644 index 000000000..fb9d7e94c --- /dev/null +++ b/tests/cases/output_virus-macrophage-sample/snapshot00000001.svg @@ -0,0 +1,4280 @@ + + + + + + Current time: 0 days, 0 hours, and 10.00 minutes, z = 0.00 μm + + + 1060 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.2000 seconds + + + + diff --git a/tests/cases/output_virus-macrophage-sample/snapshot00000002.svg b/tests/cases/output_virus-macrophage-sample/snapshot00000002.svg new file mode 100644 index 000000000..f6642fde1 --- /dev/null +++ b/tests/cases/output_virus-macrophage-sample/snapshot00000002.svg @@ -0,0 +1,4280 @@ + + + + + + Current time: 0 days, 0 hours, and 20.00 minutes, z = 0.00 μm + + + 1060 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.3975 seconds + + + + diff --git a/tests/cases/output_virus-macrophage-sample/snapshot00000003.svg b/tests/cases/output_virus-macrophage-sample/snapshot00000003.svg new file mode 100644 index 000000000..732e47d67 --- /dev/null +++ b/tests/cases/output_virus-macrophage-sample/snapshot00000003.svg @@ -0,0 +1,4280 @@ + + + + + + Current time: 0 days, 0 hours, and 30.00 minutes, z = 0.00 μm + + + 1060 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.5968 seconds + + + + diff --git a/tests/cases/output_virus-macrophage-sample/snapshot00000004.svg b/tests/cases/output_virus-macrophage-sample/snapshot00000004.svg new file mode 100644 index 000000000..a99ceae56 --- /dev/null +++ b/tests/cases/output_virus-macrophage-sample/snapshot00000004.svg @@ -0,0 +1,4280 @@ + + + + + + Current time: 0 days, 0 hours, and 40.00 minutes, z = 0.00 μm + + + 1060 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.8009 seconds + + + + diff --git a/tests/cases/output_virus-macrophage-sample/snapshot00000005.svg b/tests/cases/output_virus-macrophage-sample/snapshot00000005.svg new file mode 100644 index 000000000..32b96d0eb --- /dev/null +++ b/tests/cases/output_virus-macrophage-sample/snapshot00000005.svg @@ -0,0 +1,4280 @@ + + + + + + Current time: 0 days, 0 hours, and 50.00 minutes, z = 0.00 μm + + + 1060 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.9972 seconds + + + + diff --git a/tests/cases/output_virus-macrophage-sample/snapshot00000006.svg b/tests/cases/output_virus-macrophage-sample/snapshot00000006.svg new file mode 100644 index 000000000..790787e5e --- /dev/null +++ b/tests/cases/output_virus-macrophage-sample/snapshot00000006.svg @@ -0,0 +1,4280 @@ + + + + + + Current time: 0 days, 1 hours, and 0.00 minutes, z = 0.00 μm + + + 1060 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 1.1982 seconds + + + + diff --git a/tests/cases/output_virus-macrophage-sample/snapshot00000007.svg b/tests/cases/output_virus-macrophage-sample/snapshot00000007.svg new file mode 100644 index 000000000..fc0e0e719 --- /dev/null +++ b/tests/cases/output_virus-macrophage-sample/snapshot00000007.svg @@ -0,0 +1,4280 @@ + + + + + + Current time: 0 days, 1 hours, and 10.00 minutes, z = 0.00 μm + + + 1060 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 1.4178 seconds + + + + diff --git a/tests/cases/output_virus-macrophage-sample/snapshot00000008.svg b/tests/cases/output_virus-macrophage-sample/snapshot00000008.svg new file mode 100644 index 000000000..6802978a2 --- /dev/null +++ b/tests/cases/output_virus-macrophage-sample/snapshot00000008.svg @@ -0,0 +1,4276 @@ + + + + + + Current time: 0 days, 1 hours, and 20.00 minutes, z = 0.00 μm + + + 1059 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 1.6177 seconds + + + + diff --git a/tests/cases/output_virus-macrophage-sample/snapshot00000009.svg b/tests/cases/output_virus-macrophage-sample/snapshot00000009.svg new file mode 100644 index 000000000..5333bf6f0 --- /dev/null +++ b/tests/cases/output_virus-macrophage-sample/snapshot00000009.svg @@ -0,0 +1,4276 @@ + + + + + + Current time: 0 days, 1 hours, and 30.00 minutes, z = 0.00 μm + + + 1059 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 1.8174 seconds + + + + diff --git a/tests/cases/output_virus-macrophage-sample/snapshot00000010.svg b/tests/cases/output_virus-macrophage-sample/snapshot00000010.svg new file mode 100644 index 000000000..3b7ff4b4c --- /dev/null +++ b/tests/cases/output_virus-macrophage-sample/snapshot00000010.svg @@ -0,0 +1,4276 @@ + + + + + + Current time: 0 days, 1 hours, and 40.00 minutes, z = 0.00 μm + + + 1059 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 2.0222 seconds + + + + diff --git a/tests/cases/output_virus-macrophage-sample/snapshot00000011.svg b/tests/cases/output_virus-macrophage-sample/snapshot00000011.svg new file mode 100644 index 000000000..d44089631 --- /dev/null +++ b/tests/cases/output_virus-macrophage-sample/snapshot00000011.svg @@ -0,0 +1,4276 @@ + + + + + + Current time: 0 days, 1 hours, and 50.00 minutes, z = 0.00 μm + + + 1059 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 2.2246 seconds + + + + diff --git a/tests/cases/output_virus-macrophage-sample/snapshot00000012.svg b/tests/cases/output_virus-macrophage-sample/snapshot00000012.svg new file mode 100644 index 000000000..17575adbd --- /dev/null +++ b/tests/cases/output_virus-macrophage-sample/snapshot00000012.svg @@ -0,0 +1,4276 @@ + + + + + + Current time: 0 days, 2 hours, and 0.00 minutes, z = 0.00 μm + + + 1059 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 2.4265 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000000.svg b/tests/cases/output_worm-sample/snapshot00000000.svg new file mode 100644 index 000000000..85e12f643 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000000.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 0.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0017 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000001.svg b/tests/cases/output_worm-sample/snapshot00000001.svg new file mode 100644 index 000000000..364e0c68b --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000001.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 3.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0263 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000002.svg b/tests/cases/output_worm-sample/snapshot00000002.svg new file mode 100644 index 000000000..bdf4e2802 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000002.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 6.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0495 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000003.svg b/tests/cases/output_worm-sample/snapshot00000003.svg new file mode 100644 index 000000000..4d91b49d3 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000003.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 9.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0729 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000004.svg b/tests/cases/output_worm-sample/snapshot00000004.svg new file mode 100644 index 000000000..c20c0285e --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000004.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 12.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.0969 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000005.svg b/tests/cases/output_worm-sample/snapshot00000005.svg new file mode 100644 index 000000000..a9274f606 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000005.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 15.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.1216 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000006.svg b/tests/cases/output_worm-sample/snapshot00000006.svg new file mode 100644 index 000000000..4db1cc0f7 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000006.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 18.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.1466 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000007.svg b/tests/cases/output_worm-sample/snapshot00000007.svg new file mode 100644 index 000000000..117d57f58 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000007.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 21.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.1719 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000008.svg b/tests/cases/output_worm-sample/snapshot00000008.svg new file mode 100644 index 000000000..2a9435c36 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000008.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 24.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.1970 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000009.svg b/tests/cases/output_worm-sample/snapshot00000009.svg new file mode 100644 index 000000000..c9d057feb --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000009.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 27.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.2228 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000010.svg b/tests/cases/output_worm-sample/snapshot00000010.svg new file mode 100644 index 000000000..804a2ddb3 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000010.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 30.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.2488 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000011.svg b/tests/cases/output_worm-sample/snapshot00000011.svg new file mode 100644 index 000000000..47c929ead --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000011.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 33.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.2750 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000012.svg b/tests/cases/output_worm-sample/snapshot00000012.svg new file mode 100644 index 000000000..72036eadb --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000012.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 36.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.3009 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000013.svg b/tests/cases/output_worm-sample/snapshot00000013.svg new file mode 100644 index 000000000..88c05ae08 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000013.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 39.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.3272 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000014.svg b/tests/cases/output_worm-sample/snapshot00000014.svg new file mode 100644 index 000000000..8fdec4be4 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000014.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 42.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.3532 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000015.svg b/tests/cases/output_worm-sample/snapshot00000015.svg new file mode 100644 index 000000000..4acac341a --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000015.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 45.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.3794 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000016.svg b/tests/cases/output_worm-sample/snapshot00000016.svg new file mode 100644 index 000000000..ad9a81923 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000016.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 48.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.4054 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000017.svg b/tests/cases/output_worm-sample/snapshot00000017.svg new file mode 100644 index 000000000..870ce4b25 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000017.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 51.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.4319 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000018.svg b/tests/cases/output_worm-sample/snapshot00000018.svg new file mode 100644 index 000000000..a3f63cf6f --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000018.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 54.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.4583 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000019.svg b/tests/cases/output_worm-sample/snapshot00000019.svg new file mode 100644 index 000000000..dc73ea07a --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000019.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 0 hours, and 57.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.4850 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000020.svg b/tests/cases/output_worm-sample/snapshot00000020.svg new file mode 100644 index 000000000..3b04390d8 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000020.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 0.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.5119 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000021.svg b/tests/cases/output_worm-sample/snapshot00000021.svg new file mode 100644 index 000000000..e469a3e6b --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000021.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 3.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.5386 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000022.svg b/tests/cases/output_worm-sample/snapshot00000022.svg new file mode 100644 index 000000000..30417e0c0 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000022.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 6.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.5654 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000023.svg b/tests/cases/output_worm-sample/snapshot00000023.svg new file mode 100644 index 000000000..930dd5b19 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000023.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 9.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.5941 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000024.svg b/tests/cases/output_worm-sample/snapshot00000024.svg new file mode 100644 index 000000000..6b96c2b0f --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000024.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 12.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.6217 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000025.svg b/tests/cases/output_worm-sample/snapshot00000025.svg new file mode 100644 index 000000000..d8595ac3b --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000025.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 15.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.6478 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000026.svg b/tests/cases/output_worm-sample/snapshot00000026.svg new file mode 100644 index 000000000..336b1bf48 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000026.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 18.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.6746 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000027.svg b/tests/cases/output_worm-sample/snapshot00000027.svg new file mode 100644 index 000000000..41626c086 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000027.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 21.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.7018 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000028.svg b/tests/cases/output_worm-sample/snapshot00000028.svg new file mode 100644 index 000000000..f500501ed --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000028.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 24.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.7289 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000029.svg b/tests/cases/output_worm-sample/snapshot00000029.svg new file mode 100644 index 000000000..730c5c112 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000029.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 27.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.7561 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000030.svg b/tests/cases/output_worm-sample/snapshot00000030.svg new file mode 100644 index 000000000..3ead1e0bb --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000030.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 30.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.7830 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000031.svg b/tests/cases/output_worm-sample/snapshot00000031.svg new file mode 100644 index 000000000..cf5b96334 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000031.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 33.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.8097 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000032.svg b/tests/cases/output_worm-sample/snapshot00000032.svg new file mode 100644 index 000000000..772364edc --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000032.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 36.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.8363 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000033.svg b/tests/cases/output_worm-sample/snapshot00000033.svg new file mode 100644 index 000000000..37c0627c7 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000033.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 39.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.8634 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000034.svg b/tests/cases/output_worm-sample/snapshot00000034.svg new file mode 100644 index 000000000..c9941c442 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000034.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 42.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.8903 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000035.svg b/tests/cases/output_worm-sample/snapshot00000035.svg new file mode 100644 index 000000000..b70730976 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000035.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 45.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.9171 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000036.svg b/tests/cases/output_worm-sample/snapshot00000036.svg new file mode 100644 index 000000000..e696f3346 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000036.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 48.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.9438 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000037.svg b/tests/cases/output_worm-sample/snapshot00000037.svg new file mode 100644 index 000000000..eaf983cb9 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000037.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 51.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.9705 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000038.svg b/tests/cases/output_worm-sample/snapshot00000038.svg new file mode 100644 index 000000000..69f462aa7 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000038.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 54.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 0.9971 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000039.svg b/tests/cases/output_worm-sample/snapshot00000039.svg new file mode 100644 index 000000000..1b24ed55d --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000039.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 1 hours, and 57.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 1.0238 seconds + + + + diff --git a/tests/cases/output_worm-sample/snapshot00000040.svg b/tests/cases/output_worm-sample/snapshot00000040.svg new file mode 100644 index 000000000..c558b5784 --- /dev/null +++ b/tests/cases/output_worm-sample/snapshot00000040.svg @@ -0,0 +1,1084 @@ + + + + + + Current time: 0 days, 2 hours, and 0.00 minutes, z = 0.00 μm + + + 261 agents + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 200 μm + + + 0 days, 0 hours, 0 minutes, and 1.0503 seconds + + + + diff --git a/unit_tests/custom_DCs_2substrates/custom_modules/custom.cpp b/unit_tests/custom_DCs_2substrates/custom_modules/custom.cpp index 48876f71d..657f9267f 100644 --- a/unit_tests/custom_DCs_2substrates/custom_modules/custom.cpp +++ b/unit_tests/custom_DCs_2substrates/custom_modules/custom.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/unit_tests/custom_DCs_2substrates/custom_modules/custom_v1.cpp b/unit_tests/custom_DCs_2substrates/custom_modules/custom_v1.cpp index 48876f71d..657f9267f 100644 --- a/unit_tests/custom_DCs_2substrates/custom_modules/custom_v1.cpp +++ b/unit_tests/custom_DCs_2substrates/custom_modules/custom_v1.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/unit_tests/custom_DCs_2substrates/custom_modules/custom_v2.cpp b/unit_tests/custom_DCs_2substrates/custom_modules/custom_v2.cpp index 92cb0c5a0..9cc6ab602 100644 --- a/unit_tests/custom_DCs_2substrates/custom_modules/custom_v2.cpp +++ b/unit_tests/custom_DCs_2substrates/custom_modules/custom_v2.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/unit_tests/custom_voxel_values/custom_modules/custom.cpp b/unit_tests/custom_voxel_values/custom_modules/custom.cpp index 74f057adb..a60a9ecd7 100644 --- a/unit_tests/custom_voxel_values/custom_modules/custom.cpp +++ b/unit_tests/custom_voxel_values/custom_modules/custom.cpp @@ -70,7 +70,10 @@ void create_cell_types( void ) { // set the random seed - SeedRandom( parameters.ints("random_seed") ); + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + } /* Put any modifications to default cell definition here if you diff --git a/unit_tests/substrate_internalization/custom_modules/custom.cpp b/unit_tests/substrate_internalization/custom_modules/custom.cpp index 6378cef68..28fb3e3ec 100644 --- a/unit_tests/substrate_internalization/custom_modules/custom.cpp +++ b/unit_tests/substrate_internalization/custom_modules/custom.cpp @@ -78,7 +78,11 @@ void create_cell_types( void ) // that future division and other events are still not identical // for all runs - SeedRandom( parameters.ints("random_seed") ); // or specify a seed here + // set the random seed + if (parameters.ints.find_index("random_seed") != -1) + { + SeedRandom(parameters.ints("random_seed")); + }// or specify a seed here // housekeeping