/TumorGrowth.jl

Simple predictive models for tumor growth, and tools to apply them to clinical data

Primary LanguageJuliaMIT LicenseMIT

TumorGrowth.jl

Predictive models for tumor growth, and tools to apply them to clinical data

Lifecycle:Experimental Build Status Coverage Docs

Please refer to the documentation for an overview of this package.

Code snippet:

using TumorGrowth, Lux, Random

times = [0.1, 6.0, 12.0, 18.0, 25.0, 30.0, 35.0, 41.0, 47.0]
volumes = [0.013, 0.0072, 0.0043, 0.0021, 0.0043, 0.0043, 0.0044, 0.0058, 0.015]

# define an experimental model based on a neural ODE:
network = Lux.Chain(Dense(2, 3, Lux.tanh; init_weight=Lux.zeros64), Dense(3, 2))
neural_model = neural2(Random.default_rng(), network)

# compare with with some classical models:
models = [neural_model, logistic, bertalanffy]

julia> comparison = compare(times, volumes, models, holdouts=2)
ModelComparison with 2 holdouts:
  metric: mae
  neural2 (19 params):  0.002656
  logistic:     0.00651
  bertalanffy:  0.006542

using Plots

julia> plot(comparison)

comparison plot

Acknowledgements

The datasets provided the TumorGrowth.jl software are sourced from Laleh et al. (2022) "Classical mathematical models for prediction of response to chemotherapy and immunotherapy", PLOS Computational Biology", with some restructuring provided by Yasin Elmaci and Okon Samuel.