{ "cells": [ { "cell_type": "markdown", "id": "572403ec", "metadata": {}, "source": [ "# Example 10: Rule Inactivation Sensitivity Analysis — Pancreatic Cancer Invasion Model \n", "\n", "[(GitHub link)](https://github.com/heberlr/UQ_PhysiCell/tree/main/examples/epi_caf_invasion/ex10_CoCulture.ipynb)\n", "\n", "This notebook presents a custom sensitivity analysis of rule inactivation in the model developed in [Johnson et al. 2025](https://doi.org/10.1016/j.cell.2025.06.048), which represents pancreatic cancer invasion mediated by fibroblast-ECM interactions. The analysis uses an OAT-style perturbation: starting from the nominal model (all rules active), one rule is inactivated at a time, and the deviation in model outputs relative to the full model is quantified using RMSD.\n", "\n", "**What you will learn:**\n", "- How to encode categorical/rule-based perturbations as samples in a `ModelAnalysisContext` database\n", "- How to use `load_samples` and `calculate_qoi_statistics` on a raw-MCDS database (Mode B from ex2)\n", "- How to compute and normalize RMSD across multiple initial conditions for interpretable rule ranking\n", "- How to visualize cell spatial distributions with `plot_cells_2D`\n", "\n", "**Rules analyzed** (one inactivated at a time):\n", "\n", "| Rule | Description |\n", "|---|---|\n", "| Epi. Normal CIP | Contact inhibition of proliferation in normal epithelial cells |\n", "| EMT Normal cell | Epithelial-to-mesenchymal transition in normal epithelial cells |\n", "| MET Normal cell | Inhibition of mesenchymal-to-epithelial transition in normal mesenchymal cells |\n", "| Slow/Speed up N-MC | Motility modulation of normal mesenchymal cells |\n", "| Slow/Speed up CAF | Motility modulation of cancer-associated fibroblasts |\n", "| Epi. Tumor CIP | Contact inhibition of proliferation in epithelial tumor cells |\n", "| EMT/MET Tumor cell | EMT and MET transitions in tumor cells |\n", "| Slow/Speed up TA-MC | Motility modulation of tumor-associated mesenchymal cells |\n", "\n", "Simulations were run across 7 initial conditions (epithelial tumor cell-to-CAF seeding ratios with 1,000 total cells), simulated for 7 days with multiple stochastic replicates." ] }, { "cell_type": "code", "execution_count": 1, "id": "669436b7", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "No QoI data provided, calculating QoIs from the database...\n", "2 from Samples table is missing in Output table.\n", " Missing SampleIDs: [61, 62]\n", "Warning: Database consistency check failed, but proceeding as per user request.\n", "Calculating QoIs from mcds list...\n" ] }, { "data": { "text/html": [ "
| \n", " | \n", " | epi_normal_cell_count | \n", "epi_normal_radial_dist | \n", "epi_tumor_cell_count | \n", "epi_tumor_radial_dist | \n", "fibroblast_cell_count | \n", "fibroblast_radial_dist | \n", "mesenc_normal_cell_count | \n", "mesenc_normal_radial_dist | \n", "mesenc_tumor_cell_count | \n", "mesenc_tumor_radial_dist | \n", "
|---|---|---|---|---|---|---|---|---|---|---|---|
| SampleID | \n", "time | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
| 0 | \n", "0.0 | \n", "0.0 | \n", "NaN | \n", "500.0 | \n", "192.045556 | \n", "500.0 | \n", "183.661279 | \n", "0.0 | \n", "NaN | \n", "0.0 | \n", "NaN | \n", "
| 1440.0 | \n", "0.0 | \n", "NaN | \n", "35.6 | \n", "283.491670 | \n", "500.0 | \n", "195.036377 | \n", "0.0 | \n", "NaN | \n", "544.6 | \n", "205.741238 | \n", "|
| 2880.0 | \n", "0.0 | \n", "NaN | \n", "49.4 | \n", "330.193621 | \n", "500.0 | \n", "203.653420 | \n", "0.0 | \n", "NaN | \n", "567.8 | \n", "218.598059 | \n", "|
| 4320.0 | \n", "0.0 | \n", "NaN | \n", "90.8 | \n", "354.745680 | \n", "500.0 | \n", "211.526886 | \n", "0.0 | \n", "NaN | \n", "586.6 | \n", "230.352639 | \n", "|
| 5760.0 | \n", "0.0 | \n", "NaN | \n", "150.0 | \n", "379.339727 | \n", "500.0 | \n", "218.391999 | \n", "0.0 | \n", "NaN | \n", "618.6 | \n", "242.760217 | \n", "|
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 90 | \n", "4320.0 | \n", "0.0 | \n", "NaN | \n", "2126.6 | \n", "279.996736 | \n", "90.0 | \n", "218.673131 | \n", "0.0 | \n", "NaN | \n", "317.0 | \n", "231.617323 | \n", "
| 5760.0 | \n", "0.0 | \n", "NaN | \n", "2687.0 | \n", "313.017651 | \n", "90.0 | \n", "223.993993 | \n", "0.0 | \n", "NaN | \n", "374.4 | \n", "249.552555 | \n", "|
| 7200.0 | \n", "0.0 | \n", "NaN | \n", "3342.4 | \n", "346.349592 | \n", "90.0 | \n", "229.256590 | \n", "0.0 | \n", "NaN | \n", "404.0 | \n", "255.734771 | \n", "|
| 8640.0 | \n", "0.0 | \n", "NaN | \n", "4084.4 | \n", "379.990875 | \n", "90.0 | \n", "231.584211 | \n", "0.0 | \n", "NaN | \n", "435.0 | \n", "257.400322 | \n", "|
| 10080.0 | \n", "0.0 | \n", "NaN | \n", "4896.0 | \n", "413.570264 | \n", "90.0 | \n", "233.510260 | \n", "0.0 | \n", "NaN | \n", "482.4 | \n", "265.475861 | \n", "
712 rows × 10 columns
\n", "| \n", " | IC_file | \n", "Inactive_rule | \n", "
|---|---|---|
| SampleID | \n", "\n", " | \n", " |
| 0 | \n", "cells_1_to_1.csv | \n", "None | \n", "
| 1 | \n", "cells_1_to_2.csv | \n", "None | \n", "
| 2 | \n", "cells_1_to_5.csv | \n", "None | \n", "
| 3 | \n", "cells_1_to_10.csv | \n", "None | \n", "
| 4 | \n", "cells_2_to_1.csv | \n", "None | \n", "
| ... | \n", "... | \n", "... | \n", "
| 86 | \n", "cells_1_to_5.csv | \n", "MET Tumor cell | \n", "
| 87 | \n", "cells_1_to_10.csv | \n", "MET Tumor cell | \n", "
| 88 | \n", "cells_2_to_1.csv | \n", "MET Tumor cell | \n", "
| 89 | \n", "cells_5_to_1.csv | \n", "MET Tumor cell | \n", "
| 90 | \n", "cells_10_to_1.csv | \n", "MET Tumor cell | \n", "
91 rows × 2 columns
\n", "| \n", " | epi_normal_cell_count | \n", "mesenc_normal_cell_count | \n", "fibroblast_cell_count | \n", "epi_tumor_cell_count | \n", "mesenc_tumor_cell_count | \n", "epi_normal_radial_dist | \n", "mesenc_normal_radial_dist | \n", "fibroblast_radial_dist | \n", "epi_tumor_radial_dist | \n", "mesenc_tumor_radial_dist | \n", "
|---|---|---|---|---|---|---|---|---|---|---|
| SampleID | \n", "\n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " | \n", " |
| 0 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.000000 | \n", "0.000000 | \n", "0.0 | \n", "0.0 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "
| 1 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.000000 | \n", "0.000000 | \n", "0.0 | \n", "0.0 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "
| 2 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.000000 | \n", "0.000000 | \n", "0.0 | \n", "0.0 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "
| 3 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.000000 | \n", "0.000000 | \n", "0.0 | \n", "0.0 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "
| 4 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "0.000000 | \n", "0.000000 | \n", "0.0 | \n", "0.0 | \n", "0.000000 | \n", "0.000000 | \n", "0.000000 | \n", "
| ... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "... | \n", "
| 86 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "828.170426 | \n", "378.092733 | \n", "0.0 | \n", "0.0 | \n", "2.683751 | \n", "62.263029 | \n", "31.207755 | \n", "
| 87 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "626.444774 | \n", "297.970057 | \n", "0.0 | \n", "0.0 | \n", "1.496992 | \n", "49.312425 | \n", "32.315537 | \n", "
| 88 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1275.408850 | \n", "304.361348 | \n", "0.0 | \n", "0.0 | \n", "0.858326 | \n", "63.920350 | \n", "28.567824 | \n", "
| 89 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "1287.343445 | \n", "631.416400 | \n", "0.0 | \n", "0.0 | \n", "3.967260 | \n", "32.557048 | \n", "3.908269 | \n", "
| 90 | \n", "0.0 | \n", "0.0 | \n", "0.0 | \n", "975.828130 | \n", "658.141520 | \n", "0.0 | \n", "0.0 | \n", "5.299893 | \n", "22.378075 | \n", "3.189457 | \n", "
91 rows × 10 columns
\n", "| \n", " | count | \n", "mean | \n", "std | \n", "min | \n", "25% | \n", "50% | \n", "75% | \n", "max | \n", "
|---|---|---|---|---|---|---|---|---|
| Slow down TA-MC | \n", "7.0 | \n", "0.527242 | \n", "0.082545 | \n", "0.408277 | \n", "0.480845 | \n", "0.505388 | \n", "0.589553 | \n", "0.636236 | \n", "
| Slow down CAF | \n", "7.0 | \n", "0.456883 | \n", "0.116993 | \n", "0.337297 | \n", "0.378724 | \n", "0.405487 | \n", "0.536223 | \n", "0.625503 | \n", "
| EMT Tumor cell | \n", "7.0 | \n", "0.404619 | \n", "0.114585 | \n", "0.193522 | \n", "0.380904 | \n", "0.400342 | \n", "0.461467 | \n", "0.553727 | \n", "
| MET Tumor cell | \n", "7.0 | \n", "0.326916 | \n", "0.117214 | \n", "0.126188 | \n", "0.26615 | \n", "0.336219 | \n", "0.426064 | \n", "0.441575 | \n", "
| Epi. Tumor CIP | \n", "5.0 | \n", "0.312581 | \n", "0.289664 | \n", "0.060066 | \n", "0.062364 | \n", "0.193541 | \n", "0.593677 | \n", "0.65326 | \n", "
| Speed up CAF | \n", "7.0 | \n", "0.132195 | \n", "0.047643 | \n", "0.062193 | \n", "0.104834 | \n", "0.115819 | \n", "0.173963 | \n", "0.189761 | \n", "
| Speed up TA-MC | \n", "7.0 | \n", "0.038832 | \n", "0.025087 | \n", "0.010794 | \n", "0.01431 | \n", "0.043642 | \n", "0.0616 | \n", "0.065565 | \n", "
| EMT Normal cell | \n", "7.0 | \n", "0.03876 | \n", "0.028981 | \n", "0.006251 | \n", "0.015048 | \n", "0.028163 | \n", "0.068062 | \n", "0.070685 | \n", "
| Epi. Normal CIP | \n", "7.0 | \n", "0.032798 | \n", "0.021349 | \n", "0.015944 | \n", "0.01766 | \n", "0.027006 | \n", "0.037389 | \n", "0.076541 | \n", "
| MET Normal cell | \n", "7.0 | \n", "0.031857 | \n", "0.028217 | \n", "0.005544 | \n", "0.011966 | \n", "0.020032 | \n", "0.044144 | \n", "0.085203 | \n", "
| Slow down N-MC | \n", "7.0 | \n", "0.03058 | \n", "0.018486 | \n", "0.012479 | \n", "0.01492 | \n", "0.029858 | \n", "0.040413 | \n", "0.061054 | \n", "
| Speed up N-MC | \n", "7.0 | \n", "0.028895 | \n", "0.017567 | \n", "0.009904 | \n", "0.016446 | \n", "0.01918 | \n", "0.042163 | \n", "0.055963 | \n", "
| None | \n", "0.0 | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "NaN | \n", "