Overview

TumorGrowthModule

TumorGrowth.jl provides the following models for tumor growth:

modeldescriptionparameters, panalytic?
bertalanffyGeneral Bertalanffy (GB)(; v0, v∞, ω, λ)yes
bertalanffy_numericalGeneral Bertalanffy (testing only)(; v0, v∞, ω, λ)no
bertalanffy22D extension of General Bertalanffy(; v0, v∞, ω, λ, γ)no
gompertzclassical Gompertz (GB, λ=0)(; v0, v∞, ω)yes
logisticclassical Logistic/Verhulst (GB, λ=-1)(; v0, v∞, ω)yes
classical_bertalanffyclassical Bertalanffy (GB, λ=1/3)(; v0, v∞, ω)yes
exponentialexponential decay or growth(; v0, ω)yes
neural(rng, network)1D neural ODE with Lux.jl network(; v0, v∞, θ)no
neural2(rng, network)2D neural ODE with Lux.jl network(; v0, v∞, θ)no

Here a model is a callable object, that outputs a sequence of lesion volumes, given times, by solving a related ordinary differential equation with parameters (p below):

using TumorGrowth

times = times = [0.1, 6.0, 16.0, 24.0, 32.0, 39.0]
p = (v0=0.0002261, v∞=2.792e-5,  ω=0.05731) # `v0` is the initial volume
volumes = gompertz(times, p)
6-element Vector{Float64}:
 0.0002261
 0.0001240760197801191
 6.473115210101774e-5
 4.751268597529182e-5
 3.9074807723757934e-5
 3.496675045077041e-5

In every model, v0 is the initial volume, so that volumes[1] == v0.

In the case analytic solutions to the underlying ODEs are not known, optional keyword arguments for the DifferentialEquations.jl solver can be passed to the model call.

TumorGrowth.jl also provides a CalibrationProblem tool to calibrate model parameters, and a compare tool to compare models on a holdout set.

source

See Quick start for further details.

Software paper

arXiv

Bibtex entry for citations:

@misc{blaom2025newtoolscomparingclassical,
      title={New tools for comparing classical and neural ODE models for tumor growth}, 
      author={Anthony D. Blaom and Samuel Okon},
      year={2025},
      eprint={2502.07964},
      archivePrefix={arXiv},
      primaryClass={cs.LG},
      url={https://arxiv.org/abs/2502.07964}, 
}