This repository contains a CompuCell3D simulation modeling oxygen-driven growth, fate and mitosis of a single-cell-initiated spheroid. The model demonstrates a two-threshold oxygen-driven phenotype switching (Normoxic → Hypoxic → Necrotic), deterministic growth of normoxic cells, and optional radiotherapy using a linear-quadratic (LQ) kill model.
mitosis_O2.cc3d— CompuCell3D project file (entry point for the GUI runner).Simulation/mitosis_O2.py— Main Python runner that registers steppables and starts the simulation.Simulation/mitosis_O2.xml— CompuCell3D XML configuration containing the Potts model settings andUserParametersused by steppables.Simulation/mitosis_O2Steppables.py— Python steppables implementing initialization, oxygen-driven fate and growth, mitosis, radiotherapy, compaction, and light analysis/plotting.
-
Geometry: 3D Potts model with domain size defined in
mitosis_O2.xml(default 100x100x100 voxels). -
Cell types:
Medium(TypeId=0)Normoxic(TypeId=1) — actively growing, can divideHypoxic(TypeId=2) — reduced activity, does not growNecrotic(TypeId=3) — dead, shrinks and may be removed after a lifetime
-
Oxygen field:
- DiffusionSolverFE provides a global
Oxygenfield with boundary planes held at concentration 1.0. - Cells consume oxygen via Michaelis–Menten uptake (per-type uptake parameters in the XML).
- Two threshold rules drive phenotype transitions (parameters in
UserParameters):O2_Thresh_NormoxicHypoxic(default 0.15)O2_Thresh_HypoxicNecrotic(default 0.05)
- DiffusionSolverFE provides a global
-
Fate and growth:
O2DrivenFateSteppablesamples oxygen at each cell's center-of-mass and switches types according to thresholds.- Normoxic cells grow their
targetVolumedeterministically byGrowthRateNormoxicper MCS and updatetargetSurfaceaccordingly. - Hypoxic cells do not grow but keep targets unchanged.
- Necrotic cells shrink at
NecroticShrinkageRateand are removed probabilistically afterNecroticLifetimeMCS.
-
Mitosis:
- Implemented in
O2MitosisSteppable: when a cell'stargetVolumereachesFinalTargetVolume(default 63), it may divide with probabilityDivProbNormoxic. - Post-mitosis the parent and child targets are split equally and surfaces recomputed.
- Implemented in
-
Radiotherapy (optional):
RadiotherapySteppableapplies external-beam fractions using a linear-quadratic survival model controlled byRT_*parameters in XML (RT_Enable,RT_DoseGy,RT_Alpha,RT_Beta,RT_StartMCS,RT_PeriodMCS,RT_Fractions).
-
Center compaction:
CenterCompactionSteppableapplies an inward force (CenterPushStrength) to compact the spheroid toward the domain center.
-
Analysis:
LightAnalysisSteppableprovides simple plots for total volume and cell counts (Normoxic/Hypoxic/Necrotic) and logs oxygen statistics periodically.
InitialCellRadius(voxels) — starting sphere radius for the single seed cell. Default: 1.8FinalTargetVolume— target volume to trigger mitosis. Default: 63GrowthRateNormoxic— targetVolume increment per MCS for normoxic cells. Default: 1.95LambdaVolume*,LambdaSurface*— per-type constraint strengthsO2_Thresh_NormoxicHypoxic,O2_Thresh_HypoxicNecrotic— oxygen thresholds for phenotype switchingNecroticShrinkageRate,NecroticLifetime— necrotic cell dynamicsCenterPushStrength— inward compaction force magnitudeRT_*— radiotherapy controls (enable, dose, timing, alpha/beta)OutputFrequency— analysis/logging frequency
Notes:
- Parameters can be tweaked directly in
mitosis_O2.xmlunder<UserParameters>; the steppables read those values at start. - Enable radiotherapy by setting
RT_Enableto1and adjustRT_*parameters as needed.
- Vary
InitialCellRadiusandGrowthRateNormoxicto observe different spheroid growth rates. - Toggle
RT_Enableand test different fractionation schemes usingRT_FractionsandRT_PeriodMCS. - Adjust
O2_Thresh_*values to probe sensitivity of necrotic core formation.
- This model uses spherical approximations for surface calculations and simplified per-cell mechanics. It is designed for demonstration and exploratory simulations, not for direct clinical predictions.
- The code assumes a 3D domain and uses COM-based sampling which may be noisy for very small cells; adjust
InitialCellRadiusaccordingly.