Oncology
Oncology: tumour growth, the vessels that feed it, and the therapies that treat it.
AndrogenReceptorProstateElement(label, visual=None, *, N=1.5, AD=1.0, AI=0.0, UIP=0.0, UP=0.0, UT=40.0, UD=40.0, m1=0.0001, b2=22.4, b3=22.4, c1=0.0, psi1_n=0.0001202, psi1_d=0.001048, psi1_i=9.8e-05, phi1_n=0.0001281, phi1_d=0.00111, phi1_i=0.000279, psi2=12.355, phi2=49.587, psi3_n=0.008, psi3_d=0.15, psi3_i=0.01, psi4=62.162, Vc=5.56, v1=18.397, v2=63.753, v3=28.4, phi=12.0, age=60.0, du1=0.001515, du2=0.05635, du3=5.776, gamma_p=0.3125, KP=800.0, beta_n=0.0022622, beta_d=0.002, beta_i=0.003, sigma=10.0)
Bases: Element
Normal epithelium and prostate cancer cells driven by activated androgen receptors, with tissue and serum PSA.
The normal cells follow dN/dt = r1 N (1 - (N + c1 (AD + AI)) / b1) - d1 N, the dependent cells
dAD/dt = r2 AD (1 - m1)(1 - L) - d2 AD, and the independent cells dAI/dt = r3 AI (1 - (c1 N + AD + AI) / b3)
- d3 AI + m1 r2 AD (1 - L), where L = (c1 N + AD + AI) / b2. The rates are
r_i = psi1_i UD^2 / (psi2^2 + UD^2) + phi1_i UT^2 / (phi2^2 + UT^2) and d_i = psi3_i / (psi4 + UD + UT) for
the receptors activated by DHT, UD, and by testosterone, UT. The tissue PSA follows
dUIP/dt = -du1 UIP Nf - gamma_p UIP (AD + AI)^2 / (KP + AD + AI) - du2 UIP + r4, with the production
r4 = sum_i beta_i (UT + UD + sigma) X_i over the cell types, and the serum PSA gains the leaks and is cleared
at du3. The capacity of the normal cells b1 and their share Nf = N / b1 follow the prostate volume
v1 a^phi / (v2^phi + a^phi) + v3 at the age a, divided by the volume Vc of a billion cells.
The element holds the states and parameters and has no laws of its own: the interactions of
prostate_androgen_receptor read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the prostate. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
N
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial normal epithelial cells. |
1.5
|
AD
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial androgen-dependent cells. |
1.0
|
AI
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial androgen-independent cells. |
0.0
|
UIP
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial tissue PSA. |
0.0
|
UP
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial serum PSA. |
0.0
|
UT
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The concentration of receptors activated by testosterone. |
40.0
|
UD
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The concentration of receptors activated by dihydrotestosterone. |
40.0
|
m1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The fraction of the divisions of dependent cells that yields independent cells. |
0.0001
|
b2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The carrying capacity of the dependent cells. |
22.4
|
b3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The carrying capacity of the independent cells. |
22.4
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The interaction between normal and cancer cells. |
0.0
|
psi1_n
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maximum growth of the normal cells driven by DHT. |
0.0001202
|
psi1_d
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maximum growth of the dependent cells driven by DHT. |
0.001048
|
psi1_i
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maximum growth of the independent cells driven by DHT. |
9.8e-05
|
phi1_n
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maximum growth of the normal cells driven by testosterone. |
0.0001281
|
phi1_d
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maximum growth of the dependent cells driven by testosterone. |
0.00111
|
phi1_i
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maximum growth of the independent cells driven by testosterone. |
0.000279
|
psi2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The DHT-activated receptors at which the growth is half way. |
12.355
|
phi2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The testosterone-activated receptors at which the growth is half way. |
49.587
|
psi3_n
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death of the normal cells. |
0.008
|
psi3_d
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death of the dependent cells. |
0.15
|
psi3_i
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death of the independent cells. |
0.01
|
psi4
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The activated receptors at which the death is halved. |
62.162
|
Vc
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The volume of a billion cells. |
5.56
|
v1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The prostate volume that ageing adds. |
18.397
|
v2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The age at which half of that volume is added. |
63.753
|
v3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The prostate volume of a young man. |
28.4
|
phi
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The steepness of the growth of the prostate with age. |
12.0
|
age
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The age of the patient at the start. |
60.0
|
du1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which tissue PSA leaks through normal epithelium. |
0.001515
|
du2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of tissue PSA. |
0.05635
|
du3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The clearance rate of serum PSA. |
5.776
|
gamma_p
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which tissue PSA leaks through cancer cells. |
0.3125
|
KP
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The cancer cells at which the leak per cell is half its maximum. |
800.0
|
beta_n
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The PSA production of the normal cells. |
0.0022622
|
beta_d
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The PSA production of the dependent cells. |
0.002
|
beta_i
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The PSA production of the independent cells. |
0.003
|
sigma
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The PSA production independent of the receptors. |
10.0
|
Examples:
>>> from skcomplex.models.biology.oncology import AndrogenReceptorProstateElement
>>> AndrogenReceptorProstateElement('prostate').KP
800.0
Source code in src/skcomplex/models/biology/oncology/_androgen_receptor_prostate.py
158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 | |
AndrogenSuppressionElement(label, visual=None, *, AD=10.0, AI=0.14, U=20.0, r1=0.025, r2=0.006, b=9.1e-11, c1=0.9, c2=0.8, d1=0.064, m1=5e-05, U0=20.0, du=0.08, a=0.9)
Bases: Element
Androgen-dependent and androgen-independent prostate cancer cells under continuous androgen suppression.
The dependent cells follow dAD/dt = r1 U (1 - b (AD + c1 AI)) AD - (d1 + m1)(1 - U / U0) AD, the independent
cells dAI/dt = r2 (1 - b (AI + c2 AD)) AI + m1 (1 - U / U0) AD, and the serum androgen
du/dt = -du (U - U0) - U0 du a, which the drug efficacy a lowers to U0 (1 - a).
The element holds the states and parameters and has no laws of its own: the interactions of
continuous_androgen_suppression read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
AD
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of androgen-dependent cells. |
10.0
|
AI
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of androgen-independent cells. |
0.14
|
U
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial serum androgen concentration. |
20.0
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of the dependent cells per unit of androgen. |
0.025
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of the independent cells. |
0.006
|
b
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The reciprocal carrying capacity. |
9.1e-11
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The competition of the independent cells on the dependent ones. |
0.9
|
c2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The competition of the dependent cells on the independent ones. |
0.8
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of the dependent cells under androgen deprivation. |
0.064
|
m1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which androgen deprivation turns dependent cells independent. |
5e-05
|
U0
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The normal androgen concentration. |
20.0
|
du
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The elimination rate of the androgen. |
0.08
|
a
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The efficacy of the suppression. |
0.9
|
Examples:
>>> from skcomplex.models.biology.oncology import AndrogenSuppressionElement
>>> AndrogenSuppressionElement('tumour', a=0.6).a
0.6
Source code in src/skcomplex/models/biology/oncology/_androgen_suppression.py
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 | |
AngiogenesisImmunotherapyTumourElement(label, visual=None, *, A=5000.0, Vb=625.0, E=0.1, c_an=0.0, q_an=0.0, R_an=0.0, c_im=0.0, q_im=0.0, R_im=0.0, v1=0.025, v2=0.2, a1=0.1, xi_s=8.7, xi_i=0.00873, a2=1.35, r1=3e-05, c1=0.0005, d1=0.37451, s_e=0.15, a3=0.1, alpha_an=0.4811, beta_an=0.0348, k12_an=0.223, k21_an=0.215, u50_an=11.4274, alpha_im=0.5827, beta_im=0.0271, k12_im=0.3, k21_im=0.2455, u50_im=7.1903, g=1.0, delta_r=0.01, u_theta=5.0, tox_an=10.0, tox_im=10.0, dose_an=15.0, dose_im=20.0, period=21.0, width=1 / 24, doses=6)
Bases: Element
Tumour with its vasculature and effector cells under bevacizumab and atezolizumab, with resistance.
The tumour A grows by the Hahnfeldt law toward its vascular capacity Vb and effector cells E kill it. The
capacity is stimulated and inhibited by the tumour and destroyed by the antiangiogenic effect UAn, and the
immunotherapy effect UIm boosts the effector cells. Each drug follows a two-compartment model with central amount
c and peripheral amount q, in mg per kg, infused for width days every period days. Its effect is
c^g / ((f U50)^g + c^g), where f = 1 + delta_r R and R integrates max(0, u_theta - c), so the drug loses
potency while its concentration stays low. Volumes are in mm³, and time is in days.
The element holds the states and parameters and has no laws of its own: the interactions of
angiogenesis_immunotherapy read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
A
|
Annotated[float, StateSpec(domain=open(0, oo))]
|
The initial tumour volume. |
5000.0
|
Vb
|
Annotated[float, StateSpec(domain=open(0, oo))]
|
The initial vascular capacity. |
625.0
|
E
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial effector cells, dimensionless. |
0.1
|
c_an
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial central amount of the antiangiogenic drug. |
0.0
|
q_an
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial peripheral amount of the antiangiogenic drug. |
0.0
|
R_an
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial resistance integral of the antiangiogenic drug. |
0.0
|
c_im
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial central amount of the immunotherapeutic drug. |
0.0
|
q_im
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial peripheral amount of the immunotherapeutic drug. |
0.0
|
R_im
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial resistance integral of the immunotherapeutic drug. |
0.0
|
v1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth constant of the tumour. |
0.025
|
v2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The spontaneous loss of vasculature. |
0.2
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of the tumour by effector cells. |
0.1
|
xi_s
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The stimulation of the vasculature by the tumour. |
8.7
|
xi_i
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inhibition of the vasculature by the tumour. |
0.00873
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The highest destruction rate of the vasculature by the antiangiogenic drug. |
1.35
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The proliferation rate of effector cells. |
3e-05
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inverse of the tumour volume above which the tumour suppresses the effector cells. |
0.0005
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of effector cells. |
0.37451
|
s_e
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The influx of effector cells. |
0.15
|
a3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The highest boost of effector cells by the immunotherapeutic drug. |
0.1
|
alpha_an
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The distribution rate of the antiangiogenic drug. |
0.4811
|
beta_an
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The elimination rate of the antiangiogenic drug. |
0.0348
|
k12_an
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate from the central to the peripheral compartment of the antiangiogenic drug. |
0.223
|
k21_an
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The rate from the peripheral to the central compartment of the antiangiogenic drug. |
0.215
|
u50_an
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The amount of antiangiogenic drug of half effect before resistance. |
11.4274
|
alpha_im
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The distribution rate of the immunotherapeutic drug. |
0.5827
|
beta_im
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The elimination rate of the immunotherapeutic drug. |
0.0271
|
k12_im
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate from the central to the peripheral compartment of the immunotherapeutic drug. |
0.3
|
k21_im
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The rate from the peripheral to the central compartment of the immunotherapeutic drug. |
0.2455
|
u50_im
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The amount of immunotherapeutic drug of half effect before resistance. |
7.1903
|
g
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The steepness of the drug effects. |
1.0
|
delta_r
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The capacity of the tumour to resist the drugs. |
0.01
|
u_theta
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The amount below which resistance develops. |
5.0
|
tox_an
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The amount of antiangiogenic drug at which its toxicity turns exponential. |
10.0
|
tox_im
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The amount of immunotherapeutic drug at which its toxicity turns exponential. |
10.0
|
dose_an
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The dose of the antiangiogenic drug, in mg per kg. |
15.0
|
dose_im
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The dose of the immunotherapeutic drug, in mg per kg. |
20.0
|
period
|
float
|
The time between the starts of doses. |
21.0
|
width
|
float
|
The duration of an infusion. |
1 / 24
|
doses
|
int
|
The number of doses. |
6
|
Examples:
>>> from skcomplex.models.biology.oncology import AngiogenesisImmunotherapyTumourElement
>>> AngiogenesisImmunotherapyTumourElement('tumour').Vb
625.0
Source code in src/skcomplex/models/biology/oncology/_angiogenesis_immunotherapy_tumour.py
161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 | |
AngiogenicTumourElement(label, visual=None, *, A=17347.0, Vb=17347.0, U=0.0, lambda1=0.192, lambda2=0.0, xi_s=5.85, xi_i=0.00873, a=0.66, du=1.3, dose=20.0, period=1.0, width=1.0, start=0.0)
Bases: Element
Tumour volume, the vascular volume that sets its carrying capacity, and an angiogenesis inhibitor.
The tumour follows dA/dt = -lambda1 A log(A / Vb), the vasculature
dVb/dt = -lambda2 Vb + xi_s A - xi_i Vb A^(2/3) - a Vb U, and the inhibitor dU/dt = -du U + u(t), where the
infusion u is dose for width time units every period, from start on. A width equal to the period
is a continuous infusion.
The element holds the states and parameters and has no laws of its own: the interactions of
hahnfeldt read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
A
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial tumour volume. |
17347.0
|
Vb
|
Annotated[float, StateSpec(domain=open(0, oo))]
|
The initial vascular volume. |
17347.0
|
U
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial concentration of the inhibitor. |
0.0
|
lambda1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The rate at which the tumour approaches its capacity. |
0.192
|
lambda2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The spontaneous loss rate of the vasculature. |
0.0
|
xi_s
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The angiogenic stimulation by the tumour. |
5.85
|
xi_i
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The angiogenic inhibition by the tumour. |
0.00873
|
a
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The vascular loss per unit of inhibitor. |
0.66
|
du
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The clearance rate of the inhibitor. |
1.3
|
dose
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infusion rate during a dose. |
20.0
|
period
|
float
|
The time between the starts of doses. |
1.0
|
width
|
float
|
The duration of a dose. |
1.0
|
start
|
float
|
The time of the first dose. |
0.0
|
Examples:
>>> from skcomplex.models.biology.oncology import AngiogenicTumourElement
>>> AngiogenicTumourElement('tumour').xi_s
5.85
Source code in src/skcomplex/models/biology/oncology/_angiogenic_tumour.py
78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 | |
BoneMarrowBloodElement(label, visual=None, *, NBM=10000000000000.0, NPB=3500000000.0, ABM=400000000000.0, APB=5000000000.0, AS=100000.0, r1=0.149, b1=58000000000000.0, b2=10000000000000.0, theta1=10000000000.0, m1=0.0013, m2=27000.0, theta2=10000000000.0, r2=1e-12, m3=1e-07, c1=1e-14, alpha1=0.02, tau1=96.0, c2=1e-14, d1=0.0083, r3=0.00396, b3=368800000000000.0, theta3=10000000000.0, m4=0.0065, m5=0.05, alpha2=0.002, tau2=576.0, r4=1e-12, d2=0.2, r5=0.05, b4=1e-06)
Bases: Element
Normal and malignant cells in the bone marrow and the peripheral blood, and cancer stem cells.
Normal marrow cells renew as r1 NBM log((b1 + b2) / (theta1 + NBM)), mutate into blasts at the rate m1 and
into cancer stem cells at the rate m3, and move to the blood, where they arrive after the maturation time
tau1 with the survival exp(-alpha1 tau1 - r2 APB(t - tau1)). Blasts grow as r3 ABM log(b3 / (theta3 + ABM))
and move to the blood at the rate m4. Cancer stem cells renew logistically and convert into blasts after the
time tau2. Malignant cells inhibit normal ones in both places.
The element holds the states and parameters and has no laws of its own: the interactions of
bone_marrow_blood_leukaemia read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the patient. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
NBM
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial normal marrow cells. |
10000000000000.0
|
NPB
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial normal blood cells. |
3500000000.0
|
ABM
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial marrow blasts. |
400000000000.0
|
APB
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial blood blasts. |
5000000000.0
|
AS
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cancer stem cells. |
100000.0
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of normal marrow cells. |
0.149
|
b1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The carrying capacity of normal marrow cells. |
58000000000000.0
|
b2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The carrying capacity of normal blood cells. |
10000000000000.0
|
theta1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The threshold of the renewal of normal marrow cells. |
10000000000.0
|
m1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The mutation rate of normal marrow cells into blasts. |
0.0013
|
m2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The largest release rate of normal marrow cells into the blood. |
27000.0
|
theta2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The number of normal blood cells that halves the release. |
10000000000.0
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inhibition of the release by blood blasts. |
1e-12
|
m3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The mutation rate of normal marrow cells into cancer stem cells. |
1e-07
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inhibition of normal marrow cells by marrow blasts. |
1e-14
|
alpha1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The loss rate of normal cells during maturation. |
0.02
|
tau1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The maturation time of normal cells. |
96.0
|
c2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inhibition of normal blood cells by blood blasts. |
1e-14
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of normal blood cells. |
0.0083
|
r3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of marrow blasts. |
0.00396
|
b3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The carrying capacity of marrow blasts. |
368800000000000.0
|
theta3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The threshold of the growth of marrow blasts. |
10000000000.0
|
m4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which marrow blasts move to the blood. |
0.0065
|
m5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The conversion rate of cancer stem cells into blasts. |
0.05
|
alpha2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The loss rate of converting stem cells. |
0.002
|
tau2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The conversion time of cancer stem cells into blasts. |
576.0
|
r4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inhibition of the conversion by blood blasts. |
1e-12
|
d2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The loss rate of blood blasts. |
0.2
|
r5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The renewal rate of cancer stem cells. |
0.05
|
b4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The reciprocal carrying capacity of cancer stem cells. |
1e-06
|
Examples:
>>> from skcomplex.models.biology.oncology import BoneMarrowBloodElement
>>> BoneMarrowBloodElement('patient').tau1
96.0
Source code in src/skcomplex/models/biology/oncology/_bone_marrow_blood.py
130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 | |
CellCycleElement(label, visual=None, *, A1=15.0, A2=3.8, A3=0.8, l1=0.197, l2=0.395, l3=0.107, u1=0.0, u2=0.0)
Bases: Element
Tumour cells in three phases of the cell cycle under a killing and a blocking agent.
The compartments hold the cells in G0 and G1 A1, in S A2, and in G2 and M A3, and follow
dA1/dt = -l1 A1 + 2 (1 - u1) l3 A3, dA2/dt = l1 A1 - (1 - u2) l2 A2, and dA3/dt = (1 - u2) l2 A2 - l3 A3.
The killing agent kills the fraction u1 of the cells that divide, and the blocking agent slows the transit
through S by the fraction u2.
The element holds the states and parameters and has no laws of its own: the interactions of
cell_cycle_chemotherapy read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
A1
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cells in G0 and G1. |
15.0
|
A2
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cells in S. |
3.8
|
A3
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cells in G2 and M. |
0.8
|
l1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The rate of exit from G0 and G1. |
0.197
|
l2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The rate of exit from S. |
0.395
|
l3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The rate of exit from G2 and M. |
0.107
|
u1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The fraction of dividing cells the killing agent kills. |
0.0
|
u2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The fraction by which the blocking agent slows the transit through S. |
0.0
|
Examples:
>>> from skcomplex.models.biology.oncology import CellCycleElement
>>> CellCycleElement('tumour').l2
0.395
Source code in src/skcomplex/models/biology/oncology/_cell_cycle.py
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | |
CellQuotaProstateElement(label, visual=None, *, AD=15.0, AI=0.0, Q1=0.5, Q2=0.5, P=3.4, U=15.0, rm=0.025, q1=0.3, q2=0.15, d1=0.015, d2=0.015, d3=0.09, qm=5.0, vm=0.275, v50=4.0, mx1=0.00015, mx2=0.0001, m501=0.08, m502=1.7, n=3.0, r0=0.01, r1=0.15, r2=0.15, rho1=1.3, rho2=1.1, theta=3.0, du=0.08, U0=15.0, Umin=0.5, du1=0.08, period=500.0, width=250.0)
Bases: Element
Prostate cancer cells whose growth and mutation follow their androgen cell quota, with the PSA they release.
The cells grow at the Droop rate rm (1 - q_i / Q_i), die at d_i, and switch from dependent to independent at
mx1 m501^n / (Q1^n + m501^n) and back at mx2 Q2^n / (Q2^n + m502^n). The quotas follow
dQ_i/dt = vm (qm - Q_i) / (qm - q_i) U / (U + v50) - rm (Q_i - q_i) - d3 Q_i, and the serum PSA
dP/dt = r0 (AD + AI) + r1 AD Q1^theta / (Q1^theta + rho1^theta) + r2 AI Q2^theta / (Q2^theta + rho2^theta)
- du P. The serum androgen relaxes at the rate du1 to Umin during the width days of therapy that open
every period days and to U0 otherwise.
The element holds the states and parameters and has no laws of its own: the interactions of
prostate_cell_quota read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
AD
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of androgen-dependent cells. |
15.0
|
AI
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of androgen-independent cells. |
0.0
|
Q1
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cell quota of the dependent cells. |
0.5
|
Q2
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cell quota of the independent cells. |
0.5
|
P
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial serum PSA. |
3.4
|
U
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial serum androgen. |
15.0
|
rm
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maximum proliferation rate. |
0.025
|
q1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The minimum quota of the dependent cells. |
0.3
|
q2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The minimum quota of the independent cells. |
0.15
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of the dependent cells. |
0.015
|
d2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of the independent cells. |
0.015
|
d3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The degradation rate of the quota. |
0.09
|
qm
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The maximum quota. |
5.0
|
vm
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maximum uptake rate of androgen. |
0.275
|
v50
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The serum androgen at which the uptake is half way. |
4.0
|
mx1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maximum mutation rate from dependent to independent. |
0.00015
|
mx2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maximum mutation rate from independent to dependent. |
0.0001
|
m501
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The quota at which the mutation to independence is half way. |
0.08
|
m502
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The quota at which the mutation back to dependence is half way. |
1.7
|
n
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The steepness of the mutation rates. |
3.0
|
r0
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The baseline PSA production per cell. |
0.01
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The androgen-driven PSA production per dependent cell. |
0.15
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The androgen-driven PSA production per independent cell. |
0.15
|
rho1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The quota at which the PSA production of the dependent cells is half way. |
1.3
|
rho2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The quota at which the PSA production of the independent cells is half way. |
1.1
|
theta
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The steepness of the PSA production. |
3.0
|
du
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The clearance rate of the PSA. |
0.08
|
U0
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The normal serum androgen. |
15.0
|
Umin
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The serum androgen under therapy. |
0.5
|
du1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the serum androgen relaxes. |
0.08
|
period
|
float
|
The time between the starts of therapy periods. |
500.0
|
width
|
float
|
The duration of a therapy period. |
250.0
|
Examples:
>>> from skcomplex.models.biology.oncology import CellQuotaProstateElement
>>> CellQuotaProstateElement('tumour').qm
5.0
Source code in src/skcomplex/models/biology/oncology/_cell_quota_prostate.py
137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 | |
CheckpointTumourElement(label, visual=None, *, E=0.006, A=0.3968, UAP=0.0, ENC=0.0001, r1=8.81, r2=0.5, C1_50=1.5e-10, C2_50=2.37e-11, C1_ss=1.5e-10, C2_ss=2.37e-11, psi_pp=1.365e-18, d1=0.05, r3=0.18, b=1 / 0.8, a_rho=57.5, a_rl=4908500.0, rho_r=3.19e-07, du1=10.0, du2=0.033, sigma_l=3.56e-07, c_l=1.0, sigma=5.0, u_ap=1e-10)
Bases: Element
Activated T cells, tumour cells, and an anti-PD-1 drug that frees T cells from PD-1-PD-L1 inhibition.
The T cells follow dE/dt = (r1 ENC C1 / (C1_50 + C1) + r2 E C2 / (C2_50 + C2)) / (1 + UPP / psi_pp) - d1 E, with
the cytokines at their steady states C1 = C1_ss and C2 = C2_ss, the tumour
dA/dt = r3 A (1 - b A) - a_rho A E, and the drug dUAP/dt = u_ap - a_rl UFP1 UAP - du2 UAP. Free PD-1 is
UFP1 = max(rho_r - du1 UAP, 0) E, free PD-L1 UFL1 = sigma_l (E + c_l A), and the complex
UPP = sigma UFP1 UFL1.
The element holds the states and parameters and has no laws of its own: the interactions of anti_pd1_checkpoint
read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour site. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
E
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial activated T cells. |
0.006
|
A
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial tumour cells. |
0.3968
|
UAP
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial drug concentration. |
0.0
|
ENC
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The naive T cells. |
0.0001
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The activation rate of naive T cells by IL-12. |
8.81
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The proliferation rate of T cells by IL-2. |
0.5
|
C1_50
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The IL-12 at half activation. |
1.5e-10
|
C2_50
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The IL-2 at half proliferation. |
2.37e-11
|
C1_ss
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The steady IL-12 concentration. |
1.5e-10
|
C2_ss
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The steady IL-2 concentration. |
2.37e-11
|
psi_pp
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The PD-1-PD-L1 complex at half inhibition. |
1.365e-18
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of T cells. |
0.05
|
r3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The growth rate of the tumour. |
0.18
|
b
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inverse carrying capacity of the tumour. |
1 / 0.8
|
a_rho
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of tumour cells by T cells. |
57.5
|
a_rl
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The blocking rate of PD-1 by the drug. |
4908500.0
|
rho_r
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The expression of PD-1 on T cells. |
3.19e-07
|
du1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The depletion of PD-1 per unit of drug. |
10.0
|
du2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The degradation rate of the drug. |
0.033
|
sigma_l
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The expression of PD-L1 on T cells. |
3.56e-07
|
c_l
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The expression of PD-L1 on tumour cells relative to T cells. |
1.0
|
sigma
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The ratio of association to dissociation of PD-1 and PD-L1. |
5.0
|
u_ap
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infusion rate of the drug. |
1e-10
|
Examples:
>>> from skcomplex.models.biology.oncology import CheckpointTumourElement
>>> CheckpointTumourElement('site').a_rho
57.5
Source code in src/skcomplex/models/biology/oncology/_checkpoint_tumour.py
109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 | |
ChemoimmunotherapyTumourElement(label, visual=None, *, A=1000000.0, N=50000.0, E=100.0, C=11000000.0, I=0.0, M=0.0, r1=0.431, b1=2.17e-08, c1=7.13e-10, a1=8.17, g1=0.618, l=0.657, a2=0.9, m1=0.00129, d1=0.0412, r2=0.4198, g2=20200000.0, psi1=1e-07, a3=0.6, r3=0.996, g3=303000.0, d2=0.02, psi2=3.42e-10, psi3=1.8e-08, r4=1.1e-07, r5=3e-11, a4=0.6, r6=0.125, g4=20000000.0, s1=121000.0, d3=0.012, a5=0.6, d_u1=10.0, d_u2=0.9, u_til=10000000.0, u_il2=10000000.0, u_chemo=2.0, start=7.0, period=7.0, width=1.0, doses=3)
Bases: Element
Tumour with NK cells, CD8 T cells, and circulating lymphocytes under chemotherapy, IL-2, and TIL injection.
The tumour A grows logistically and NK cells N and CD8 T cells E kill it. CD8 T cells kill at the rate
D = a1 (E / A)^l / (g1 + (E / A)^l). The circulating lymphocytes C feed the NK cells. The chemotherapy M
kills a fraction 1 - exp(-M) of every population at its own rate, IL-2 I stimulates the CD8 T cells, and a TIL
injection adds CD8 T cells. All three drugs follow the same schedule of doses at the rates u_til, u_il2, and
u_chemo. Cells are counted, and time is in days.
The element holds the states and parameters and has no laws of its own: the interactions of
chemoimmunotherapy read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
A
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of tumour cells. |
1000000.0
|
N
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of NK cells. |
50000.0
|
E
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of CD8 T cells. |
100.0
|
C
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of circulating lymphocytes. |
11000000.0
|
I
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial amount of IL-2. |
0.0
|
M
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial amount of chemotherapeutic drug. |
0.0
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of the tumour. |
0.431
|
b1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The reciprocal carrying capacity of the tumour. |
2.17e-08
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which NK cells kill tumour cells. |
7.13e-10
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The highest rate at which CD8 T cells kill tumour cells. |
8.17
|
g1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half-saturation of the CD8 T cell kill. |
0.618
|
l
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The exponent of the CD8 T cell kill. |
0.657
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The chemotherapy kill rate of tumour cells. |
0.9
|
m1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which circulating lymphocytes become NK cells. |
0.00129
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of NK cells. |
0.0412
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The highest recruitment rate of NK cells by the tumour. |
0.4198
|
g2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half-saturation of the NK cell recruitment, in cells². |
20200000.0
|
psi1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the tumour inactivates NK cells. |
1e-07
|
a3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The chemotherapy kill rate of NK cells. |
0.6
|
r3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The highest recruitment rate of CD8 T cells by the tumour kill. |
0.996
|
g3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half-saturation of the CD8 T cell recruitment, in cells². |
303000.0
|
d2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of CD8 T cells. |
0.02
|
psi2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the tumour inactivates CD8 T cells. |
3.42e-10
|
psi3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which NK cells regulate CD8 T cells. |
1.8e-08
|
r4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the NK cell kill of tumour cells activates CD8 T cells. |
1.1e-07
|
r5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which circulating lymphocytes meeting tumour cells activate CD8 T cells. |
3e-11
|
a4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The chemotherapy kill rate of CD8 T cells. |
0.6
|
r6
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The highest rate at which IL-2 stimulates CD8 T cells. |
0.125
|
g4
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half-saturation of the IL-2 stimulation. |
20000000.0
|
s1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The influx of circulating lymphocytes. |
121000.0
|
d3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of circulating lymphocytes. |
0.012
|
a5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The chemotherapy kill rate of circulating lymphocytes. |
0.6
|
d_u1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The decay rate of IL-2. |
10.0
|
d_u2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The decay rate of the chemotherapeutic drug. |
0.9
|
u_til
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate of TIL injection during a dose, in cells per day. |
10000000.0
|
u_il2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate of IL-2 injection during a dose. |
10000000.0
|
u_chemo
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate of chemotherapy infusion during a dose. |
2.0
|
start
|
float
|
The time of the first dose. |
7.0
|
period
|
float
|
The time between the starts of doses. |
7.0
|
width
|
float
|
The duration of a dose. |
1.0
|
doses
|
int
|
The number of doses. |
3
|
Examples:
>>> from skcomplex.models.biology.oncology import ChemoimmunotherapyTumourElement
>>> ChemoimmunotherapyTumourElement('tumour').r1
0.431
Source code in src/skcomplex/models/biology/oncology/_chemoimmunotherapy_tumour.py
163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 | |
ChemovirotherapyTumourElement(label, visual=None, *, AU=1.0, AV=0.0, V=0.1, U=0.1, r1=0.206, b=1e-06, alpha=0.001, a1=0.005, a2=0.5115, a3=0.006, beta_v=10.0, d1=0.001, d_u=4.16, u1=10.0, infusion='constant')
Bases: Element
Uninfected and infected tumour cells, an oncolytic virus, and a chemotherapeutic drug.
The uninfected cells AU grow logistically, the virus V infects them, and infected cells AV burst at the rate
a2, releasing beta_v virions each. The drug U kills both kinds of cells and is infused at the rate u1,
constantly, as u1 exp(-d_u t), or as u1 sin(d_u t)^2. One unit of cells is a million cells, and one unit of time
is two days.
The element holds the states and parameters and has no laws of its own: the interactions of
chemovirotherapy read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
AU
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of uninfected cells. |
1.0
|
AV
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of infected cells. |
0.0
|
V
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of virions. |
0.1
|
U
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial amount of drug. |
0.1
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of uninfected cells. |
0.206
|
b
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The reciprocal carrying capacity. |
1e-06
|
alpha
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infection rate. |
0.001
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The drug kill rate of uninfected cells. |
0.005
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the virus kills infected cells. |
0.5115
|
a3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The drug kill rate of infected cells. |
0.006
|
beta_v
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The burst size. |
10.0
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of the virus. |
0.001
|
d_u
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The decay rate of the drug. |
4.16
|
u1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infusion rate of the drug. |
10.0
|
infusion
|
str
|
The form of the infusion, |
'constant'
|
Raises:
| Type | Description |
|---|---|
ParameterError
|
The infusion is not one of the known forms. |
Examples:
>>> from skcomplex.models.biology.oncology import ChemovirotherapyTumourElement
>>> ChemovirotherapyTumourElement('tumour', infusion='periodic').infusion
'periodic'
Source code in src/skcomplex/models/biology/oncology/_chemovirotherapy_tumour.py
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 | |
ClonalTumourElement(label, visual=None, *, A1=90000.0, A2=40000.0, E=500.0, r1=0.15, r2=0.11, b1=2e-08, b2=2e-08, c1=0.1, c2=5.5, c3=0.1, c4=5.5, r3=0.8, theta=300000.0, s1=0.0018, s2=0.0018, u_chemo1=0.2, u_chemo2=0.02, u_vaccine=20.0)
Bases: Element
Two competing tumour clones and an immune response under chemotherapy and a dendritic-cell vaccine.
Each clone grows logistically, competes with the other clone and with the immune cells E, and dies at the
chemotherapy rate u_chemo1 or u_chemo2 and at the rate b UIm E of the vaccine-recruited immune cells. The
immune cells grow logistically to theta and are recruited by both clones. Cells are counted, and time is in days.
The element holds the states and parameters and has no laws of its own: the interactions of
clonal_chemoimmunotherapy read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
A1
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of cells of the first clone. |
90000.0
|
A2
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of cells of the second clone. |
40000.0
|
E
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of immune cells. |
500.0
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of the first clone. |
0.15
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of the second clone. |
0.11
|
b1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The reciprocal carrying capacity of the first clone. |
2e-08
|
b2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The reciprocal carrying capacity of the second clone. |
2e-08
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The competition of the second clone on the first. |
0.1
|
c2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The competition of the immune cells on the first clone. |
5.5
|
c3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The competition of the first clone on the second. |
0.1
|
c4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The competition of the immune cells on the second clone. |
5.5
|
r3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of the immune cells. |
0.8
|
theta
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The immune threshold. |
300000.0
|
s1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the first clone recruits immune cells. |
0.0018
|
s2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the second clone recruits immune cells. |
0.0018
|
u_chemo1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The chemotherapy kill rate of the first clone. |
0.2
|
u_chemo2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The chemotherapy kill rate of the second clone. |
0.02
|
u_vaccine
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The level of the immunotherapeutic agent. |
20.0
|
Examples:
>>> from skcomplex.models.biology.oncology import ClonalTumourElement
>>> ClonalTumourElement('tumour').theta
300000.0
Source code in src/skcomplex/models/biology/oncology/_clonal_tumour.py
92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | |
DelayedVaccinatedTumourElement(label, visual=None, *, A=500000.0, ENK=44000.0, ENC=120000.0, E=10.0, ED=10.0, C=48.0, ER=1100000.0, ENH=126000.0, E1H=10.0, r1=0.16, b=5000000000.0, a1=6.9, g1=3.5, a2=7.13e-10, s1=13200.0, d1=0.0412, rho1=0.0668, g2=25000.0, psi1=1e-07, s2=500000.0, d2=0.03, rho2=1.2, g3=10 ** 5.4, d3=0.4, rho3=8.98e-07, m1=0.38, rho4=0.19, g4=6250000.0, psi2=4.3e-07, d4=0.237, kappa1=24380.0, g5=100000.0, s3=280.5, d5=5.5, rho5=1.1, g6=100000000000.0, rho6=4.99, g7=100000.0, s4=321200.0, d6=0.3, rho7=0.26, g8=4.5e+17, rho8=0.399, g9=10 ** 4.4, s5=550000.0, d7=0.03, rho9=1.05, d8=0.44, m2=0.45, psi3=8e-07, rho10=1.4, tau1=1.26, tau2=0.45, tau3=0.47, dose=1000000.0, period=7.0, width=1.0, start=0.0, doses=4)
Bases: Element
Tumour, natural killer cells, naive and mature CD8+ cells, dendritic cells, IL-2, regulatory, and helper cells.
The equations are those of Padmanabhan et al. (4.13) to (4.21), with the delays tau1, tau2, and tau3 of one
division of natural killer, CD8+, and helper cells. Naive CD8+ cells mature after 7 tau2 and naive helper cells
after 2 tau3. The tumour is killed by mature CD8+ cells through a1 x^5 / (g1 + x^5) with
x = log(E) / log(A). The vaccine u is dose for width time units every period from start, doses
times.
The element holds the states and parameters and has no laws of its own: the interactions of delayed_dc_vaccine
read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour site. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
A
|
Annotated[float, StateSpec(domain=open(0, oo))]
|
The initial tumour cells. |
500000.0
|
ENK
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial natural killer cells. |
44000.0
|
ENC
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial naive CD8+ cells. |
120000.0
|
E
|
Annotated[float, StateSpec(domain=open(0, oo))]
|
The initial mature CD8+ cells. |
10.0
|
ED
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial dendritic cells. |
10.0
|
C
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial IL-2 concentration. |
48.0
|
ER
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial regulatory T cells. |
1100000.0
|
ENH
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial naive helper T cells. |
126000.0
|
E1H
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial type 1 helper T cells. |
10.0
|
r1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The growth rate of the tumour. |
0.16
|
b
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The carrying capacity of the tumour. |
5000000000.0
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maximal kill rate by mature CD8+ cells. |
6.9
|
g1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The steepness of the kill by mature CD8+ cells. |
3.5
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate by natural killer cells. |
7.13e-10
|
s1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The influx of natural killer cells. |
13200.0
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of natural killer cells. |
0.0412
|
rho1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The production rate of natural killer cells by IL-2. |
0.0668
|
g2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The IL-2 at half production of natural killer cells. |
25000.0
|
psi1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inactivation rate of natural killer cells by regulatory cells. |
1e-07
|
s2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The influx of naive CD8+ cells. |
500000.0
|
d2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of naive CD8+ cells. |
0.03
|
rho2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The activation rate of naive CD8+ cells by dendritic cells. |
1.2
|
g3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The dendritic cells at half activation. |
10 ** 5.4
|
d3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of mature CD8+ cells. |
0.4
|
rho3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The production rate of mature CD8+ cells by dendritic cells. |
8.98e-07
|
m1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The proliferation rate of mature CD8+ cells with dendritic cells. |
0.38
|
rho4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The proliferation rate of mature CD8+ cells by IL-2. |
0.19
|
g4
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The squared IL-2 at half proliferation. |
6250000.0
|
psi2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inactivation rate of mature CD8+ cells by regulatory cells. |
4.3e-07
|
d4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of dendritic cells. |
0.237
|
kappa1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The production of dendritic cells from tumour antigen. |
24380.0
|
g5
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The tumour at half production of dendritic cells. |
100000.0
|
s3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The influx of IL-2. |
280.5
|
d5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of IL-2. |
5.5
|
rho5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The secretion rate of IL-2 by mature CD8+ cells. |
1.1
|
g6
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The squared mature CD8+ cells at half secretion. |
100000000000.0
|
rho6
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The secretion rate of IL-2 by type 1 helper cells. |
4.99
|
g7
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The type 1 helper cells at half secretion. |
100000.0
|
s4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The influx of regulatory cells. |
321200.0
|
d6
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of regulatory cells. |
0.3
|
rho7
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The production rate of regulatory cells by the tumour. |
0.26
|
g8
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The squared tumour at half production of regulatory cells. |
4.5e+17
|
rho8
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The production rate of regulatory cells by IL-2. |
0.399
|
g9
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The IL-2 at half production of regulatory cells. |
10 ** 4.4
|
s5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The influx of naive helper cells. |
550000.0
|
d7
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of naive helper cells. |
0.03
|
rho9
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The activation rate of naive helper cells by dendritic cells. |
1.05
|
d8
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of type 1 helper cells. |
0.44
|
m2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maturation rate of naive helper cells. |
0.45
|
psi3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inactivation rate of type 1 helper cells by regulatory cells. |
8e-07
|
rho10
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The proliferation rate of type 1 helper cells with dendritic cells. |
1.4
|
tau1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The division time of natural killer cells. |
1.26
|
tau2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The division time of CD8+ cells. |
0.45
|
tau3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The division time of helper cells. |
0.47
|
dose
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The injection rate of dendritic cells during a dose. |
1000000.0
|
period
|
float
|
The time between the starts of doses. |
7.0
|
width
|
float
|
The duration of a dose. |
1.0
|
start
|
float
|
The time of the first dose. |
0.0
|
doses
|
int
|
The number of doses. |
4
|
Examples:
>>> from skcomplex.models.biology.oncology import DelayedVaccinatedTumourElement
>>> DelayedVaccinatedTumourElement('site').tau1
1.26
Source code in src/skcomplex/models/biology/oncology/_delayed_vaccinated_tumour.py
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 | |
DormantCellCycleElement(label, visual=None, *, A0=6.5, A1=0.2, A2=0.1, l0=0.05, l1=0.5, l2=1.0, b0=0.9, b1=0.1, u=0.0, v=0.0)
Bases: Element
Tumour cells in a dormant phase and two cycling phases under a killing and a recruiting agent.
The compartments hold the dormant cells in G0 A0, the cells in G1 and S A1, and the cells in G2 and M A2.
A fraction b0 of the daughters enters G0 and b1 enters G1, so dA0/dt = -l0 (1 + v) A0 + 2 b0 (1 - u) l2 A2,
dA1/dt = l0 (1 + v) A0 - l1 A1 + 2 b1 (1 - u) l2 A2, and dA2/dt = l1 A1 - l2 A2. The killing agent kills the
fraction u of the cells that divide, and the recruiting agent speeds the exit from G0 by the factor 1 + v.
The element holds the states and parameters and has no laws of its own: the interactions of
cell_cycle_chemotherapy read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
A0
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial dormant cells. |
6.5
|
A1
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cells in G1 and S. |
0.2
|
A2
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cells in G2 and M. |
0.1
|
l0
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The rate of exit from G0. |
0.05
|
l1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The rate of exit from G1 and S. |
0.5
|
l2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The rate of exit from G2 and M. |
1.0
|
b0
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The fraction of daughters that enters G0. |
0.9
|
b1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The fraction of daughters that enters G1. |
0.1
|
u
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The fraction of dividing cells the killing agent kills. |
0.0
|
v
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The relative increase of the exit from G0 the recruiting agent causes. |
0.0
|
Examples:
>>> from skcomplex.models.biology.oncology import DormantCellCycleElement
>>> DormantCellCycleElement('tumour').b0
0.9
Source code in src/skcomplex/models/biology/oncology/_dormant_cell_cycle.py
69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | |
ErythropoiesisElement(label, visual=None, *, L=3.84, Q=19.6, P=2.16, MCV=85.0, r1=0.00139, d1=0.0071, a0=0.00022, tau_h=0.68, MCV_h=85.0, MCV0=85.0, g1=0.0317, m0=1.01, Q50=0.027, n=1.0, lifespan=120.0, U=0.0)
Bases: Element
Quiescent, proliferating, and mature red cells and their mean volume under a constant 6-mercaptopurine level.
The drug sets the death rate of proliferating cells a1 = a0 U and the cell-cycle time
tau = (g1 U + MCV0) tau_h / MCV_h. Quiescent cells enter the cycle at the rate
m(Q) = m0 Q50^n / (Q50^n + Q^n), of which the fraction exp(-a1 tau) survives to give two daughters, and leave
to mature at the rate r1, so dQ/dt = -r1 Q + (2 exp(-a1 tau) - 1) m(Q) Q. The proliferating cells follow
dP/dt = -a1 P + (1 - exp(-a1 tau)) m(Q) Q, the mature cells, which live lifespan days,
dL/dt = r1 Q - d1 L(t - lifespan), and their mean corpuscular volume
dMCV/dt = ((g1 U + MCV0) r1 Q - 0.85 MCV(t - lifespan) d1 L(t - lifespan) - 0.15 MCV d1 L) / L. Before the start
the mature cells and their volume keep their initial values.
The element holds the states and parameters and has no laws of its own: the interactions of
erythropoiesis_mercaptopurine read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the patient. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
L
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial mature red cells. |
3.84
|
Q
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial quiescent cells. |
19.6
|
P
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial proliferating cells. |
2.16
|
MCV
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial mean corpuscular volume. |
85.0
|
r1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The rate of differentiation of quiescent cells. |
0.00139
|
d1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The death rate of mature cells. |
0.0071
|
a0
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of proliferating cells per unit of drug. |
0.00022
|
tau_h
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The cell-cycle time of healthy cells. |
0.68
|
MCV_h
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The healthy mean corpuscular volume. |
85.0
|
MCV0
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The volume of new cells without the drug. |
85.0
|
g1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The increase of the volume of new cells per unit of drug. |
0.0317
|
m0
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The maximum rate at which quiescent cells enter the cycle. |
1.01
|
Q50
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The quiescent cells at which the rate of entry is half its maximum. |
0.027
|
n
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The sensitivity of the rate of entry to the quiescent cells. |
1.0
|
lifespan
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The life span of mature cells. |
120.0
|
U
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The concentration of the drug. |
0.0
|
Examples:
>>> from skcomplex.models.biology.oncology import ErythropoiesisElement
>>> ErythropoiesisElement('patient').lifespan
120.0
Source code in src/skcomplex/models/biology/oncology/_erythropoiesis.py
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | |
ExponentialLinearGrowthInteraction(label, *, target, r0=0.31, r=67.8)
Bases: RateInteraction
Growth that is exponential, dn/dt = r0 n, until it reaches the linear rate r, and linear after.
The switch happens at tau = log(r / (r0 n0)) / r0, where the two rates meet, so the solution is continuously
differentiable.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the interaction. |
required |
target
|
Annotated[str, RoleSpec()]
|
The path of the tumour. |
required |
r0
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The exponential growth rate. |
0.31
|
r
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The linear growth rate. |
67.8
|
Examples:
>>> from skcomplex.models.biology.oncology import ExponentialLinearGrowthInteraction
>>> ExponentialLinearGrowthInteraction('growth', target='tumour', r=67.8).r
67.8
Source code in src/skcomplex/models/biology/oncology/_exponential_linear_growth.py
42 43 44 45 46 47 48 49 50 51 52 | |
GliomaBrainElement(label, visual=None, *, G=5940000000000.0, N=5940000000000.0, AU=60000000000.0, AV=0.0, V=1000000000.0, U=0.0, r1=0.0068, r2=0.012, b=1.67e-13, c1=3.0769e-15, c2=3.0769e-16, a1=280800.0, a2=280800.0, a3=280800000.0, g1=6000000000000.0, g2=6000000000000.0, g3=6000000000000.0, psi=3.418e-13, alpha=1.2e-10, a4=0.5, beta_v=1000.0, d_u1=24.0, d_u2=0.2, u1=400.0)
Bases: Element
Glia, neurons, and a glioma under temozolomide and an oncolytic virus.
Normal glia G and the glioma compete. Neurons N die in proportion to the loss of glia,
psi dG/dt H(-dG/dt) N. The drug U kills glia, neurons, and glioma with saturating kills. The virus V infects
only glioma cells, and the infected cells AV burst. Cells and virions are counted, the drug is in mg per m², and
time is in days.
The element holds the states and parameters and has no laws of its own: the interactions of
glioma_chemovirotherapy read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the brain. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
G
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of glial cells. |
5940000000000.0
|
N
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of neurons. |
5940000000000.0
|
AU
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of uninfected glioma cells. |
60000000000.0
|
AV
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of infected glioma cells. |
0.0
|
V
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of virions. |
1000000000.0
|
U
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial amount of drug. |
0.0
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of glia. |
0.0068
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of the glioma. |
0.012
|
b
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The reciprocal carrying capacity of glia and glioma. |
1.67e-13
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The competition of the glioma on glia. |
3.0769e-15
|
c2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The competition of glia on the glioma. |
3.0769e-16
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The drug kill rate of glia. |
280800.0
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The drug kill rate of neurons. |
280800.0
|
a3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The drug kill rate of the glioma. |
280800000.0
|
g1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half-saturation of the drug kill of glia. |
6000000000000.0
|
g2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half-saturation of the drug kill of neurons. |
6000000000000.0
|
g3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half-saturation of the drug kill of the glioma. |
6000000000000.0
|
psi
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The loss of neurons per glial cell lost. |
3.418e-13
|
alpha
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infection rate. |
1.2e-10
|
a4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the virus kills infected cells. |
0.5
|
beta_v
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The burst size. |
1000.0
|
d_u1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of the virus. |
24.0
|
d_u2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The clearance rate of the drug. |
0.2
|
u1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infusion rate of the drug, in mg per m² per day. |
400.0
|
Examples:
>>> from skcomplex.models.biology.oncology import GliomaBrainElement
>>> GliomaBrainElement('brain').u1
400.0
Source code in src/skcomplex/models/biology/oncology/_glioma_brain.py
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 | |
Her2TumourElement(label, visual=None, *, A=0.035, Ab=0.0, Pin=0.0, r=0.83, kc=0.67, a1=2.51, a2=23.0, gamma_p=6.35, sigma=1.0, theta_ab=8.78, theta_r=1940000.0, alpha_p=0.68, antibody=0.2, paclitaxel=2.0, t_antibody=1.0, t_a=2.0, t_p=1.0)
Bases: Element
HER2+ breast cancer cells under trastuzumab and paclitaxel, with antibody binding and drug uptake.
The tumour grows logistically, dA/dt = r (1 - DIm) (1 - A / (kc - DCh)) A. The bound antibody Ab lowers the
proliferation by DIm = a1 Ab from the time t_a on, and the internalized paclitaxel Pin lowers the carrying
capacity by DCh = sigma a2 exp(-gamma_p (t - t_p)) Pin from the dose time t_p on. The free antibody and the
free paclitaxel are drivers, held at the levels antibody and paclitaxel from their dose times on. The antibody
binds the receptors, dAb/dt = theta_ab (Af - Ab) (theta_r A - Ab), and the paclitaxel enters the cells,
dPin/dt = alpha_p (Pf - Pin) A, while the free drugs are present. Cells are counted in millions, so the carrying
capacity is 0.67, the antibody is in millions of molecules, and time is in days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
A
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of cells. |
0.035
|
Ab
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial bound antibody. |
0.0
|
Pin
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial internalized paclitaxel. |
0.0
|
r
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate. |
0.83
|
kc
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The carrying capacity. |
0.67
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inhibition of proliferation per unit of bound antibody. |
2.51
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The reduction of the carrying capacity per unit of internalized paclitaxel. |
23.0
|
gamma_p
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of the cytotoxicity of paclitaxel. |
6.35
|
sigma
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The synergy of the two drugs, 1 for none. |
1.0
|
theta_ab
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The binding rate of the antibody. |
8.78
|
theta_r
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The number of receptors per cell. |
1940000.0
|
alpha_p
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The uptake rate of paclitaxel. |
0.68
|
antibody
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The level of free antibody from its dose on. |
0.2
|
paclitaxel
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The level of free paclitaxel from its dose on, in pmol. |
2.0
|
t_antibody
|
float
|
The time of the antibody dose. |
1.0
|
t_a
|
float
|
The time from which the bound antibody inhibits proliferation. |
2.0
|
t_p
|
float
|
The time of the paclitaxel dose. |
1.0
|
Examples:
>>> from skcomplex.models.biology.oncology import Her2TumourElement
>>> Her2TumourElement('tumour').kc
0.67
Source code in src/skcomplex/models/biology/oncology/_her2_tumour.py
93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 | |
IntermittentSuppressionElement(label, visual=None, *, AD=5.0, AI=0.0, U=30.0, u=0.0, r1=0.0204, r2=0.0242, d1=0.0076, d2=0.0168, m1=5e-05, k1=0.0, k2=2.0, k3=8.0, k4=0.5, U0=30.0, du=0.08, x1=1.0, x2=1.0)
Bases: Element
Prostate cancer cells under androgen suppression that PSA thresholds switch on and off.
The dependent cells follow dAD/dt = r1 (k1 + (1 - k1) U / (U + k2)) AD - d1 (k3 + (1 - k3) U / (U + k4)) AD
- m1 (1 - U / U0) AD, the independent cells dAI/dt = m1 (1 - U / U0) AD + r2 (1 - U / U0) AI - d2 AI, and
the serum androgen du/dt = -du (U - U0) - U0 du u. The therapy u turns 1 when the PSA x1 AD + x2 AI rises
through h1 and 0 when it falls through h0.
The element holds the states and parameters and has no laws of its own: the interactions of
ideta_intermittent_androgen read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
AD
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of androgen-dependent cells. |
5.0
|
AI
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of androgen-independent cells. |
0.0
|
U
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial serum androgen concentration. |
30.0
|
u
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial therapy, 1 on and 0 off. |
0.0
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of the dependent cells. |
0.0204
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of the independent cells. |
0.0242
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of the dependent cells. |
0.0076
|
d2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of the independent cells. |
0.0168
|
m1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maximum rate at which dependent cells turn independent. |
5e-05
|
k1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth of the dependent cells without androgen, relative to |
0.0
|
k2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The androgen at which the growth of the dependent cells is half way. |
2.0
|
k3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death of the dependent cells without androgen, relative to |
8.0
|
k4
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The androgen at which the death of the dependent cells is half way. |
0.5
|
U0
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The normal androgen concentration. |
30.0
|
du
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The elimination rate of the androgen. |
0.08
|
x1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The PSA per dependent cell. |
1.0
|
x2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The PSA per independent cell. |
1.0
|
Examples:
>>> from skcomplex.models.biology.oncology import IntermittentSuppressionElement
>>> IntermittentSuppressionElement('tumour').U0
30.0
Source code in src/skcomplex/models/biology/oncology/_intermittent_suppression.py
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 | |
IrradiatedTumourElement(label, visual=None, *, A1=27.0, A2=0.0, A3=0.0, A4=0.0, A5=0.0, A6=0.0, Us=0.0, u_tot=0.0, r=0.04, m1=0.26, a_gamma=0.004, du=5.544)
Bases: Element
Tumour in six compartments under linear-quadratic radiation fractions and a radiosensitizer.
The proliferating cells follow dA1/dt = r A1 exp(-a_gamma u_tot), where u_tot is the dose that the fractions of
an irradiation accumulate. The lethally irradiated cells of A5 divide once into A6, dA5/dt = -(r + m1) A5 and
dA6/dt = 2 r A5 - m1 A6, and both feed the dying chain A2 -> A3 -> A4, which leaves the tumour at the rate
m1. The radiosensitizer is eliminated as dUs/dt = -du Us.
The element holds the states and parameters and has no laws of its own: the interactions of lq_radiosensitizer
read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
A1
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial volume of proliferating cells. |
27.0
|
A2
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial volume of the first dying compartment. |
0.0
|
A3
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial volume of the second dying compartment. |
0.0
|
A4
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial volume of the third dying compartment. |
0.0
|
A5
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial volume of lethally irradiated cells that divide once more. |
0.0
|
A6
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial volume of lethally irradiated cells that no longer divide. |
0.0
|
Us
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial plasma concentration of the radiosensitizer. |
0.0
|
u_tot
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial accumulated dose. |
0.0
|
r
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate. |
0.04
|
m1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The transit rate of the damaged cells. |
0.26
|
a_gamma
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inhibition of proliferation per unit of accumulated dose. |
0.004
|
du
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The elimination rate of the radiosensitizer. |
5.544
|
Examples:
>>> from skcomplex.models.biology.oncology import IrradiatedTumourElement
>>> IrradiatedTumourElement('tumour', A1=10.0).A1
10.0
Source code in src/skcomplex/models/biology/oncology/_irradiated_tumour.py
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 | |
IrradiationInteraction(label, *, target, alpha=0.054, beta=0.0054, ap=0.42, au=0.15, dose=2.0, period=1.0, start=0.125, fractions=10)
Bases: ImpulseInteraction
Radiation fractions of a dose d, which move the lethally irradiated part of the proliferating cells.
A fraction at the time start + i period moves the part M = 1 - exp(-(1 + ap Us)(alpha d + beta d^2)) of the
proliferating cells A1 to the lethally irradiated cells A5 and raises the accumulated dose u_tot by
(1 + au Us) d, where Us is the radiosensitizer. Every fraction is an event labelled by the interaction.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the interaction and of its events. |
required |
target
|
Annotated[str, RoleSpec()]
|
The path of the tumour, with the states |
required |
alpha
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The linear coefficient of the linear-quadratic model. |
0.054
|
beta
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The quadratic coefficient of the linear-quadratic model. |
0.0054
|
ap
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The potency of the radiosensitizer in raising the cell kill. |
0.42
|
au
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The potency of the radiosensitizer in raising the accumulated dose. |
0.15
|
dose
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The dose of a fraction. |
2.0
|
period
|
float
|
The time between fractions. |
1.0
|
start
|
float
|
The time of the first fraction. |
0.125
|
fractions
|
int
|
The number of fractions. |
10
|
Raises:
| Type | Description |
|---|---|
ValidationError
|
The times, the period, or the count of the fractions cannot be taken. |
Examples:
>>> from skcomplex.models.biology.oncology import IrradiationInteraction
>>> IrradiationInteraction('fraction', target='tumour', fractions=5).check().count
5
Source code in src/skcomplex/models/biology/oncology/_irradiation.py
65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | |
KirschnerPanettaTumourElement(label, visual=None, *, E=1.0, A=1.0, C=1.0, alpha_a=0.02, d1=0.03, rho1=0.1245, alpha1=20000000.0, r1=0.18, b=1e-09, c1=1.0, alpha2=100000.0, rho2=5.0, alpha3=1000.0, du=10.0, a1=500.0, a2=70000000.0, u1=0.0, u2=0.0)
Bases: Element
Effector cells, tumour cells, and IL-2 under adoptive cellular therapy and IL-2 injection.
The effector cells follow dE/dt = alpha_a A - d1 E + a1 u1 + rho1 E C / (alpha1 + C), the tumour
dA/dt = r1 A (1 - b A) - c1 E A / (alpha2 + A), and the IL-2 dC/dt = a2 u2 + rho2 E A / (alpha3 + A) - du C,
with constant inputs u1 and u2. The element holds the states and parameters and has no laws of its own: the
rate and reaction interactions of kirschner_panetta read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour site. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
E
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial effector cells. |
1.0
|
A
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial tumour cells. |
1.0
|
C
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial IL-2 concentration. |
1.0
|
alpha_a
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The antigenicity of the tumour. |
0.02
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of effector cells. |
0.03
|
rho1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The proliferation rate of effector cells stimulated by IL-2. |
0.1245
|
alpha1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The IL-2 at half the proliferation. |
20000000.0
|
r1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The growth rate of the tumour. |
0.18
|
b
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inverse carrying capacity of the tumour. |
1e-09
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of tumour cells by effector cells. |
1.0
|
alpha2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The tumour at half the kill. |
100000.0
|
rho2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The IL-2 production rate by effector-tumour encounters. |
5.0
|
alpha3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The tumour at half the IL-2 production. |
1000.0
|
du
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The loss rate of IL-2. |
10.0
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The effector cells per unit of adoptive therapy. |
500.0
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The IL-2 per unit of IL-2 injection. |
70000000.0
|
u1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The adoptive therapy input. |
0.0
|
u2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The IL-2 injection input. |
0.0
|
Examples:
>>> from skcomplex.models.biology.oncology import KirschnerPanettaTumourElement
>>> KirschnerPanettaTumourElement('site').rho1
0.1245
Source code in src/skcomplex/models/biology/oncology/_kirschner_panetta_tumour.py
90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | |
LeukaemiaStemCellsElement(label, visual=None, *, NS=100.0, NPr=0.0, ND=0.0, AS=1.0, AD=0.0, r1=0.6, m1=0.2, d1=0.1, r2=0.3, r3=0.1, d2=0.4, m2=0.5, d3=0.2, r4=0.7, m3=0.2, d4=0.1, r5=0.3, d5=0.2, beta1=0.01, beta2=0.01, beta3=0.01)
Bases: Element
Normal and leukaemic stem cells that share a niche, with the progeny that feeds back on them.
Stem cells renew symmetrically at the rate r e^-psi1 and differentiate symmetrically at the rate
m e^-psi1 e^-psi3, where psi1 = beta1 (NS + AS) counts the stem cells in the niche and
psi2 = beta2 (NPr + ND + AD) and psi3 = beta3 (NPr + ND + AD) count their progeny. Asymmetric division at
the rate r e^-psi1 e^-psi2 and symmetric differentiation feed the progenitors and the leukaemic cells.
The element holds the states and parameters and has no laws of its own: the interactions of
leukaemia_stem_cells read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the niche. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
NS
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial normal stem cells. |
100.0
|
NPr
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial normal progenitors. |
0.0
|
ND
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial normal differentiated cells. |
0.0
|
AS
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial leukaemic stem cells. |
1.0
|
AD
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial differentiated leukaemic cells. |
0.0
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The symmetric renewal rate of normal stem cells. |
0.6
|
m1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The symmetric differentiation rate of normal stem cells. |
0.2
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of normal stem cells. |
0.1
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The asymmetric division rate of normal stem cells. |
0.3
|
r3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The proliferation rate of progenitors. |
0.1
|
d2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which progenitors leave their compartment. |
0.4
|
m2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The fraction of leaving progenitors that become differentiated cells. |
0.5
|
d3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of differentiated cells. |
0.2
|
r4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The symmetric renewal rate of leukaemic stem cells. |
0.7
|
m3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The symmetric differentiation rate of leukaemic stem cells. |
0.2
|
d4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of leukaemic stem cells. |
0.1
|
r5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The asymmetric division rate of leukaemic stem cells. |
0.3
|
d5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of differentiated leukaemic cells. |
0.2
|
beta1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The feedback gain of the stem cells. |
0.01
|
beta2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The feedback gain of the progeny on asymmetric division. |
0.01
|
beta3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The feedback gain of the progeny on differentiation. |
0.01
|
Examples:
>>> from skcomplex.models.biology.oncology import LeukaemiaStemCellsElement
>>> LeukaemiaStemCellsElement('niche').beta1
0.01
Source code in src/skcomplex/models/biology/oncology/_leukaemia_stem_cells.py
102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 | |
LinearQuadraticSurvivalElement(label, *, survival=1.0, protraction=1.0, effective_dose=0.0, alpha=0.3, beta=0.03, dose=2.0, fractions=1.0, repair_rate=0.46, delivery_time=0.001)
Bases: Element
Surviving fraction of cells, Lea-Catcheside factor, and biologically effective dose of a total dose.
The survival is S = exp(-alpha D - beta G D^2), where D is the total dose. The Lea-Catcheside factor of n
fractions, each delivered at a constant rate in a time T with repair at the rate mu, far enough apart to repair
between them, is G = 2 (mu T - 1 + exp(-mu T)) / (n (mu T)^2), which tends to 1 / n as T tends to 0. The
biologically effective dose is BED = D (1 + G D beta / alpha).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the cells. |
required |
survival
|
Annotated[float, StateSpec()]
|
The initial guess of the surviving fraction, which the equations replace. |
1.0
|
protraction
|
Annotated[float, StateSpec()]
|
The initial guess of the Lea-Catcheside factor, which the equations replace. |
1.0
|
effective_dose
|
Annotated[float, StateSpec()]
|
The initial guess of the biologically effective dose, which the equations replace. |
0.0
|
alpha
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The linear coefficient, per Gy. |
0.3
|
beta
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The quadratic coefficient, per Gy squared. |
0.03
|
dose
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The total dose, in Gy. |
2.0
|
fractions
|
Annotated[float, ParameterSpec(domain=closed_open(1, oo))]
|
The number of fractions. |
1.0
|
repair_rate
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The rate of repair of sublethal damage, per hour. |
0.46
|
delivery_time
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The time to deliver one fraction, in hours. |
0.001
|
Examples:
>>> from skcomplex.models.biology.oncology import LinearQuadraticSurvivalElement
>>> LinearQuadraticSurvivalElement('cells', dose=60.0, fractions=30.0).fractions
30.0
Source code in src/skcomplex/models/biology/oncology/_linear_quadratic_survival.py
64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 | |
LogKillInteraction(label, *, target, a=0.5, dose=1.0, period=7.0, width=1.0, start=0.0)
Bases: RateInteraction
Cell kill proportional to the tumour and to a drug exposure given in a train of rectangular doses.
The kill is dn/dt = -a n U(t), where the exposure U is dose for width time units every period, from
start on. Without growth, every dose lowers log n by a dose width.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the interaction. |
required |
target
|
Annotated[str, RoleSpec()]
|
The path of the tumour. |
required |
a
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate per unit of exposure. |
0.5
|
dose
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The exposure during a dose. |
1.0
|
period
|
float
|
The time between the starts of doses. |
7.0
|
width
|
float
|
The duration of a dose. |
1.0
|
start
|
float
|
The time of the first dose. |
0.0
|
Examples:
>>> from skcomplex.models.biology.oncology import LogKillInteraction
>>> LogKillInteraction('kill', target='tumour', period=21.0).period
21.0
Source code in src/skcomplex/models/biology/oncology/_log_kill.py
51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | |
MetastasisChemotherapyElement(label, visual=None, *, Np=1460.0, Ap=165.0, Up=0.0, Ns=1750.0, As=0.0, Us=0.0, r1=1.5, r2=10.0, r3=2.0, r4=12.0, b1=0.00068, b2=0.00047, b3=0.00057, b4=0.00043, c1=0.0075, c2=0.005, c3=0.002, c4=0.001, a1=0.0008, a2=0.08, a3=0.0006, a4=0.1, g1=0.0024, g2=0.24, g3=0.0018, g4=0.3, bc=1.0, k=20.0, delta=0.1, epsilon=0.0001, tau=1.0, up=0.0, us=0.0)
Bases: Element
Normal and tumour cells at a primary and a secondary site, each with its drug, and a delayed migration.
At each site the normal and tumour cells grow logistically, compete, and a drug kills them with a saturating
response, a N U / (bc + N). The drug at a site follows dU/dt = u - (k + g1 N / (bc + N) + g2 A / (bc + A)) U.
Tumour cells leave the primary site at the rate delta, and a fraction epsilon of them reaches the secondary site
after the delay tau, dAs/dt = ... + epsilon delta Ap(t - tau). Before the start the primary tumour keeps its
initial value.
The element holds the states and parameters and has no laws of its own: the interactions of delayed_metastasis
read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the patient. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
Np
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial normal cells at the primary site. |
1460.0
|
Ap
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial tumour cells at the primary site. |
165.0
|
Up
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial drug concentration at the primary site. |
0.0
|
Ns
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial normal cells at the secondary site. |
1750.0
|
As
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial tumour cells at the secondary site. |
0.0
|
Us
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial drug concentration at the secondary site. |
0.0
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of normal cells at the primary site. |
1.5
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of tumour cells at the primary site. |
10.0
|
r3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of normal cells at the secondary site. |
2.0
|
r4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of tumour cells at the secondary site. |
12.0
|
b1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The reciprocal carrying capacity of normal cells at the primary site. |
0.00068
|
b2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The reciprocal carrying capacity of tumour cells at the primary site. |
0.00047
|
b3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The reciprocal carrying capacity of normal cells at the secondary site. |
0.00057
|
b4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The reciprocal carrying capacity of tumour cells at the secondary site. |
0.00043
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the tumour competes with normal cells at the primary site. |
0.0075
|
c2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which normal cells compete with the tumour at the primary site. |
0.005
|
c3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the tumour competes with normal cells at the secondary site. |
0.002
|
c4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which normal cells compete with the tumour at the secondary site. |
0.001
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of the drug on normal cells at the primary site. |
0.0008
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of the drug on tumour cells at the primary site. |
0.08
|
a3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of the drug on normal cells at the secondary site. |
0.0006
|
a4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of the drug on tumour cells at the secondary site. |
0.1
|
g1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the drug combines with normal cells at the primary site. |
0.0024
|
g2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the drug combines with tumour cells at the primary site. |
0.24
|
g3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the drug combines with normal cells at the secondary site. |
0.0018
|
g4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the drug combines with tumour cells at the secondary site. |
0.3
|
bc
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half saturation of the kill and of the binding. |
1.0
|
k
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The elimination rate of the drug at both sites, |
20.0
|
delta
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which tumour cells leave the primary site. |
0.1
|
epsilon
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The fraction of leaving cells that reaches the secondary site. |
0.0001
|
tau
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The delay of the migration. |
1.0
|
up
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infusion rate of the drug at the primary site. |
0.0
|
us
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infusion rate of the drug at the secondary site. |
0.0
|
Examples:
>>> from skcomplex.models.biology.oncology import MetastasisChemotherapyElement
>>> MetastasisChemotherapyElement('patient').epsilon
0.0001
Source code in src/skcomplex/models/biology/oncology/_metastasis_chemotherapy.py
139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 | |
MultidrugResistanceElement(label, visual=None, *, S=460500000000.0, R1=0.0, R2=0.0, R3=0.0, R12=0.0, R13=0.0, R23=0.0, R123=0.0, U1=0.0, U2=0.0, U3=0.0, TX1=0.0, TX2=0.0, TX3=0.0, r=0.0099, m1=0.008, m2=0.01, m3=0.014, a1=0.0084, a2=0.0074, a3=0.0092, Uth=10.0, k1=0.32, k2=0.27, k3=0.25, eta1=0.4, eta2=0.5, eta3=0.45, u1=0.0, u2=0.0, u3=0.0)
Bases: Element
Tumour cells split by their resistance to three drugs, each given by a constant infusion with its toxicity.
The sensitive cells S, the cells resistant to one drug R1, R2, R3, to two drugs R12, R13, R23, and
to all three R123 grow at the same rate r. A fraction m_i of the offspring of a population gains resistance
to drug i, so dS/dt = r (1 - m1 - m2 - m3) S - K S, dRi/dt = r ((1 - mj - mk) Ri + mi S) - K Ri, and so on,
where K sums the kill a_i (U_i - Uth) F(U_i - Uth) of every drug the population is sensitive to. The drugs
follow dU_i/dt = u_i - k_i U_i and their toxicities dTX_i/dt = U_i - eta_i TX_i.
The element holds the states and parameters and has no laws of its own: the interactions of multidrug_resistance
read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
S
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial sensitive cells. |
460500000000.0
|
R1
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cells resistant to drug 1. |
0.0
|
R2
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cells resistant to drug 2. |
0.0
|
R3
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cells resistant to drug 3. |
0.0
|
R12
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cells resistant to drugs 1 and 2. |
0.0
|
R13
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cells resistant to drugs 1 and 3. |
0.0
|
R23
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cells resistant to drugs 2 and 3. |
0.0
|
R123
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cells resistant to all drugs. |
0.0
|
U1
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial concentration of drug 1. |
0.0
|
U2
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial concentration of drug 2. |
0.0
|
U3
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial concentration of drug 3. |
0.0
|
TX1
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial toxicity of drug 1. |
0.0
|
TX2
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial toxicity of drug 2. |
0.0
|
TX3
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial toxicity of drug 3. |
0.0
|
r
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of every population. |
0.0099
|
m1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate of mutation to resistance against drug 1. |
0.008
|
m2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate of mutation to resistance against drug 2. |
0.01
|
m3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate of mutation to resistance against drug 3. |
0.014
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of drug 1 per unit of concentration above the threshold. |
0.0084
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of drug 2 per unit of concentration above the threshold. |
0.0074
|
a3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of drug 3 per unit of concentration above the threshold. |
0.0092
|
Uth
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The concentration above which a drug kills. |
10.0
|
k1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of drug 1, |
0.32
|
k2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of drug 2, |
0.27
|
k3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of drug 3, |
0.25
|
eta1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The metabolic rate that lowers the toxicity of drug 1. |
0.4
|
eta2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The metabolic rate that lowers the toxicity of drug 2. |
0.5
|
eta3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The metabolic rate that lowers the toxicity of drug 3. |
0.45
|
u1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infusion rate of drug 1. |
0.0
|
u2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infusion rate of drug 2. |
0.0
|
u3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infusion rate of drug 3. |
0.0
|
Examples:
>>> from skcomplex.models.biology.oncology import MultidrugResistanceElement
>>> MultidrugResistanceElement('tumour').Uth
10.0
Source code in src/skcomplex/models/biology/oncology/_multidrug_resistance.py
133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 | |
OncolyticVirusDendriticElement(label, visual=None, *, AU=60.0, AV=0.0, V=0.0, E=0.0, EN=0.0, D=0.0, r1=0.3198, alpha=0.00100854, a0=0.0, a1=5.954e-07, a2=1.0, r2=3500.0, du1=2.3, a3=1.6984, m=0.0, a4=4.6754, d1=0.35, a5=0.22, d2=0.35, du2=0.35, uv=2500000000.0, ud=1000000.0)
Bases: Element
Tumour cells, an oncolytic adenovirus, activated and naive T cells, and injected dendritic cells.
The uninfected cells grow at the rate r1 and the virus infects them at the rate alpha AU V / Atot, where
Atot = AU + AV + E + EN. Activated T cells kill both kinds of tumour cells at the rate
(a0 + a1 AV) E / Atot. Infected cells lyse at the rate a2 and release r2 virions each. The infected cells,
the naive T cells, and the dendritic cells activate T cells.
The element holds the states and parameters and has no laws of its own: the interactions of
oncolytic_virus_dendritic read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour site. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
AU
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial uninfected tumour volume. |
60.0
|
AV
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial infected tumour volume. |
0.0
|
V
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of virions. |
0.0
|
E
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of activated T cells. |
0.0
|
EN
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of naive T cells. |
0.0
|
D
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of dendritic cells. |
0.0
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of uninfected cells. |
0.3198
|
alpha
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infection rate. |
0.00100854
|
a0
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of T cells that does not depend on the virus. |
0.0
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of T cells per infected cell. |
5.954e-07
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The lysis rate of infected cells. |
1.0
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The number of virions released per lysed cell. |
3500.0
|
du1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of virions. |
2.3
|
a3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The activation rate of T cells by infected cells. |
1.6984
|
m
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The activation rate of naive T cells. |
0.0
|
a4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The activation rate of T cells by dendritic cells. |
4.6754
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of activated T cells. |
0.35
|
a5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The recruitment rate of naive T cells by infected cells. |
0.22
|
d2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of naive T cells. |
0.35
|
du2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of dendritic cells. |
0.35
|
uv
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infusion rate of virions. |
2500000000.0
|
ud
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The injection rate of dendritic cells. |
1000000.0
|
Examples:
>>> from skcomplex.models.biology.oncology import OncolyticVirusDendriticElement
>>> OncolyticVirusDendriticElement('site').r2
3500.0
Source code in src/skcomplex/models/biology/oncology/_oncolytic_virus_dendritic.py
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 | |
OncolyticVirusElement(label, visual=None, *, AU=0.1, AV=0.0001, alpha=1.0, r=0.5, d=0.5)
Bases: Element
Uninfected and infected tumour cells that share a carrying capacity, with infection by mass action.
In units of the carrying capacity and of the growth time of uninfected cells, the uninfected cells follow
dAU/dt = AU (1 - AU - AV) - alpha AU AV and the infected cells dAV/dt = r AV (1 - AU - AV) + alpha AU AV - d AV.
The element holds the states and parameters and has no laws of its own: the interactions of oncolytic_virus read
its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
AU
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial uninfected tumour cells. |
0.1
|
AV
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial infected tumour cells. |
0.0001
|
alpha
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infection rate. |
1.0
|
r
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of infected cells. |
0.5
|
d
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of infected cells. |
0.5
|
Examples:
>>> from skcomplex.models.biology.oncology import OncolyticVirusElement
>>> OncolyticVirusElement('tumour').alpha
1.0
Source code in src/skcomplex/models/biology/oncology/_oncolytic_virus.py
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | |
OptimalChemotherapyElement(label, visual=None, *, E=0.15, A=0.25, N=1.0, U=0.0, s=0.33, rho=0.01, alpha=0.3, c1=1.0, c2=0.5, c3=1.0, c4=1.0, d1=0.2, r1=1.5, r2=1.0, b1=1.0, b2=1.0, a1=0.2, a2=0.3, a3=0.1, k=1.0, u=0.0, w=0.1)
Bases: TumourImmuneChemotherapyElement
Immune, tumour, and normal cells under a chemotherapy whose infusion rate is a bounded control input.
The cells and the drug follow the model of de Pillis and Radunskaya, TumourImmuneChemotherapyElement, with the
infusion rate u between 0 and its largest dose. The oncologist minimises the tumour burden and the toxicity of
the drug, ∫ (A + w u^2 / 2) dt + A(T), where the terminal term weighs the tumour left at the end of the
treatment.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the patient. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
E
|
float
|
The initial immune cells. |
0.15
|
A
|
float
|
The initial tumour cells. |
0.25
|
N
|
float
|
The initial normal cells. |
1.0
|
U
|
float
|
The initial drug concentration. |
0.0
|
s
|
float
|
The influx of immune cells. |
0.33
|
rho
|
float
|
The immune response rate. |
0.01
|
alpha
|
float
|
The immune threshold. |
0.3
|
c1
|
float
|
The rate at which the tumour inactivates immune cells. |
1.0
|
c2
|
float
|
The rate at which immune cells kill the tumour. |
0.5
|
c3
|
float
|
The rate at which normal cells compete with the tumour. |
1.0
|
c4
|
float
|
The rate at which the tumour competes with normal cells. |
1.0
|
d1
|
float
|
The death rate of immune cells. |
0.2
|
r1
|
float
|
The growth rate of the tumour. |
1.5
|
r2
|
float
|
The growth rate of normal cells. |
1.0
|
b1
|
float
|
The reciprocal carrying capacity of the tumour. |
1.0
|
b2
|
float
|
The reciprocal carrying capacity of normal cells. |
1.0
|
a1
|
float
|
The fraction of immune cells the drug kills. |
0.2
|
a2
|
float
|
The fraction of tumour cells the drug kills. |
0.3
|
a3
|
float
|
The fraction of normal cells the drug kills. |
0.1
|
k
|
float
|
The decay rate of the drug, |
1.0
|
u
|
Annotated[float, ParameterSpec(adaptive=True, bounds=(0.0, MAX_DOSE))]
|
The infusion rate of the drug, the control input. |
0.0
|
w
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The weight of the squared infusion rate in the cost. |
0.1
|
Examples:
>>> from skcomplex.models.biology.oncology import OptimalChemotherapyElement
>>> OptimalChemotherapyElement('patient', w=0.5).w
0.5
Source code in src/skcomplex/models/biology/oncology/_optimal_chemotherapy.py
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 | |
OptimalImmunotherapyElement(label, visual=None, *, x=0.1, y=1.0, z=0.0, u1=0.0, u2=0.0, alpha_a=0.005, d1=0.03, rho1=0.1245, r1=0.18, b=0.0001, c1=1.0, rho2=0.025, alpha3=0.01, du=10.0, a1=0.05, a2=3.5, w1=1.0, w2=1.0)
Bases: Element
Effector cells, tumour cells, and IL-2 under adoptive therapy and IL-2 injection at bounded rates.
The Kirschner-Panetta model in scaled units, with the effector and tumour cells in units of 10^5 and IL-2 in
units of 2 10^7, follows x' = alpha_a y - d1 x + a1 u1 + rho1 x z / (1 + z) for the effector cells,
y' = r1 y (1 - b y) - c1 x y / (1 + y) for the tumour, and z' = a2 u2 + rho2 x y / (alpha3 + y) - du z for
IL-2. The adoptive therapy u1 and the IL-2 injection u2 are control inputs between 0 and 1, and the oncologist
minimises ∫ (y + w1 u1^2 / 2 + w2 u2^2 / 2) dt + y(T).
The element holds the states and parameters and has no laws of its own: the interactions of optimal_immunotherapy
read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour site. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
x
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial effector cells. |
0.1
|
y
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial tumour cells. |
1.0
|
z
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial IL-2 concentration. |
0.0
|
u1
|
Annotated[float, ParameterSpec(adaptive=True, bounds=(0.0, MAX_DOSE))]
|
The adoptive therapy rate, a control input. |
0.0
|
u2
|
Annotated[float, ParameterSpec(adaptive=True, bounds=(0.0, MAX_DOSE))]
|
The IL-2 injection rate, a control input. |
0.0
|
alpha_a
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The antigenicity of the tumour. |
0.005
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of effector cells. |
0.03
|
rho1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The proliferation rate of effector cells stimulated by IL-2. |
0.1245
|
r1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The growth rate of the tumour. |
0.18
|
b
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inverse carrying capacity of the tumour. |
0.0001
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of tumour cells by effector cells. |
1.0
|
rho2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The IL-2 production rate by effector-tumour encounters. |
0.025
|
alpha3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The tumour at half the IL-2 production. |
0.01
|
du
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The loss rate of IL-2. |
10.0
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The effector cells per unit of adoptive therapy. |
0.05
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The IL-2 per unit of IL-2 injection. |
3.5
|
w1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The weight of the squared adoptive therapy rate in the cost. |
1.0
|
w2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The weight of the squared IL-2 injection rate in the cost. |
1.0
|
Examples:
>>> from skcomplex.models.biology.oncology import OptimalImmunotherapyElement
>>> OptimalImmunotherapyElement('site').rho1
0.1245
Source code in src/skcomplex/models/biology/oncology/_optimal_immunotherapy.py
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | |
PiecewiseLinearProstateElement(label, visual=None, *, AD=17.84, AIR=0.778, AII=0.382, u=1.0, w11_on=-0.043844, w21_on=0.00130716, w22_on=-0.004282, w31_on=0.0, w32_on=0.0, w33_on=0.00181, w11_off=0.00223, w12_off=0.1, w22_off=0.00392, w33_off=-0.2, x1=1.0, x2=1.0, x3=1.0)
Bases: Element
Androgen-dependent, reversibly and irreversibly independent prostate cancer cells under intermittent therapy.
During therapy, u = 1, the cells follow dAD/dt = w11_on AD, dAIR/dt = w21_on AD + w22_on AIR, and
dAII/dt = w31_on AD + w32_on AIR + w33_on AII. Off therapy they follow dAD/dt = w11_off AD + w12_off AIR,
dAIR/dt = w22_off AIR, and dAII/dt = w33_off AII. Switches on the PSA x1 AD + x2 AIR + x3 AII set the
therapy u.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
AD
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial androgen-dependent cells. |
17.84
|
AIR
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial reversibly independent cells. |
0.778
|
AII
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial irreversibly independent cells. |
0.382
|
u
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial therapy, 1 on and 0 off. |
1.0
|
w11_on
|
Annotated[float, ParameterSpec()]
|
The net growth rate of the dependent cells during therapy. |
-0.043844
|
w21_on
|
Annotated[float, ParameterSpec()]
|
The rate at which dependent cells adapt during therapy. |
0.00130716
|
w22_on
|
Annotated[float, ParameterSpec()]
|
The net growth rate of the adapted cells during therapy. |
-0.004282
|
w31_on
|
Annotated[float, ParameterSpec()]
|
The rate at which dependent cells mutate during therapy. |
0.0
|
w32_on
|
Annotated[float, ParameterSpec()]
|
The rate at which adapted cells mutate during therapy. |
0.0
|
w33_on
|
Annotated[float, ParameterSpec()]
|
The net growth rate of the mutated cells during therapy. |
0.00181
|
w11_off
|
Annotated[float, ParameterSpec()]
|
The net growth rate of the dependent cells off therapy. |
0.00223
|
w12_off
|
Annotated[float, ParameterSpec()]
|
The rate at which adapted cells return to dependence off therapy. |
0.1
|
w22_off
|
Annotated[float, ParameterSpec()]
|
The net growth rate of the adapted cells off therapy. |
0.00392
|
w33_off
|
Annotated[float, ParameterSpec()]
|
The net growth rate of the mutated cells off therapy. |
-0.2
|
x1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The PSA per dependent cell. |
1.0
|
x2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The PSA per adapted cell. |
1.0
|
x3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The PSA per mutated cell. |
1.0
|
Examples:
>>> from skcomplex.models.biology.oncology import PiecewiseLinearProstateElement
>>> PiecewiseLinearProstateElement('tumour').u
1.0
Source code in src/skcomplex/models/biology/oncology/_piecewise_linear_prostate.py
89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | |
RadiationCompetitionElement(label, visual=None, *, N=0.5, A=0.8, r1=0.008, r2=0.4, b1=1.0, b2=1.0, c1=0.01, c2=0.15, a2=0.2, epsilon=0.001, period=7.0, width=5.0)
Bases: Element
Normal and tumour cells in Lotka-Volterra competition under periodic irradiation.
The normal cells follow dN/dt = r1 N (1 - b1 N) - c1 N A - epsilon N and the tumour cells
dA/dt = r2 A (1 - b2 A) - c2 N A - a2 D(t) A, where the irradiation D is 1 for width time units every period
and 0 otherwise, and epsilon N is the radiation that spills over to the normal tissue.
The element holds the states and parameters and has no laws of its own: the interactions of
radiotherapy_competition read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tissue. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
N
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial concentration of normal cells. |
0.5
|
A
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial concentration of tumour cells. |
0.8
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of the normal cells. |
0.008
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of the tumour cells. |
0.4
|
b1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The reciprocal carrying capacity of the normal cells. |
1.0
|
b2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The reciprocal carrying capacity of the tumour cells. |
1.0
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the tumour cells suppress the normal cells. |
0.01
|
c2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the normal cells suppress the tumour cells. |
0.15
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The per capita rate at which the radiation kills tumour cells during an irradiation. |
0.2
|
epsilon
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The per capita rate at which the spilled radiation kills normal cells. |
0.001
|
period
|
float
|
The time between the starts of irradiations. |
7.0
|
width
|
float
|
The duration of an irradiation. |
5.0
|
Examples:
>>> from skcomplex.models.biology.oncology import RadiationCompetitionElement
>>> RadiationCompetitionElement('tissue', N=0.5, A=0.8).A
0.8
Source code in src/skcomplex/models/biology/oncology/_radiation_competition.py
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | |
ResistanceSwitchingElement(label, visual=None, *, S=0.01, Rm=0.0, Rp=0.0, r1=1.0, r2=0.2, r3=0.2, b=1.0, m1=1e-06, m2=0.0, alpha_m=0.01, alpha_p=0.0, m5=0.0, a=1.0, am=0.0, ap=0.0, u=1.0)
Bases: Element
Sensitive cells and cells resistant by mutation or by a reversible phenotype switch, under a constant dose.
With the total V = S + Rm + Rp, the sensitive cells follow
dS/dt = r1 (1 - b V) S - (m1 + m2) S - (alpha_m + alpha_p) u S - a u S + m5 Rp, the mutated cells
dRm/dt = r2 (1 - b V) Rm + m1 S + alpha_m u S - am u Rm, and the switched cells
dRp/dt = r3 (1 - b V) Rp + m2 S + alpha_p u S - m5 Rp - ap u Rp. The rates m1 and m2 are the spontaneous
(acquired) resistance, alpha_m and alpha_p the resistance the drug induces, and m5 the resensitization of
switched cells.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
S
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial sensitive cells. |
0.01
|
Rm
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cells resistant by mutation. |
0.0
|
Rp
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cells resistant by phenotype switching. |
0.0
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of sensitive cells. |
1.0
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of mutated cells. |
0.2
|
r3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of switched cells. |
0.2
|
b
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The reciprocal carrying capacity of the tumour. |
1.0
|
m1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate of spontaneous resistance by mutation. |
1e-06
|
m2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate of spontaneous resistance by phenotype switching. |
0.0
|
alpha_m
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate per unit of dose of resistance induced by mutation. |
0.01
|
alpha_p
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate per unit of dose of resistance induced by phenotype switching. |
0.0
|
m5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which switched cells become sensitive again. |
0.0
|
a
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of sensitive cells per unit of dose. |
1.0
|
am
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of mutated cells per unit of dose. |
0.0
|
ap
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of switched cells per unit of dose. |
0.0
|
u
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The effective dose. |
1.0
|
Examples:
>>> from skcomplex.models.biology.oncology import ResistanceSwitchingElement
>>> ResistanceSwitchingElement('tumour').alpha_m
0.01
Source code in src/skcomplex/models/biology/oncology/_resistance_switching.py
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 | |
RestingHuntingChemotherapyElement(label, visual=None, *, E=0.01, Q=0.48, A=0.18, U=0.0, m1=0.093, d1=0.0412, c1=0.005133, c2=1.6515, r1=0.0245, b1=1.5, r2=0.18, b2=3.0, a=0.001, bd=0.0001, g=0.1, k=0.2, tau=45.6, u=0.0)
Bases: Element
Hunting immune cells recruited from resting cells after a delay, a tumour, and a drug that kills all three.
The hunting cells follow dE/dt = m1 E Q(t - tau) - d1 E - c1 A E - a E / (bd + E) U, the resting cells
dQ/dt = r1 Q (1 - b1 Q) - m1 E Q(t - tau) - a Q / (bd + Q) U, the tumour
dA/dt = r2 A (1 - b2 A) - c2 A E - a A / (bd + A) U, and the drug
dU/dt = u - (k + g (E / (bd + E) + Q / (bd + Q) + A / (bd + A))) U, which binds to the cells it kills. Before
the start the resting cells keep their initial value.
The element holds the states and parameters and has no laws of its own: the interactions of
delayed_resting_hunting_chemotherapy read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the patient. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
E
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial hunting cells. |
0.01
|
Q
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial resting cells. |
0.48
|
A
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial tumour cells. |
0.18
|
U
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial drug concentration. |
0.0
|
m1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which resting cells become hunting cells. |
0.093
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of hunting cells. |
0.0412
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the tumour inactivates hunting cells. |
0.005133
|
c2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which hunting cells kill the tumour. |
1.6515
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of resting cells. |
0.0245
|
b1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The reciprocal carrying capacity of resting cells. |
1.5
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of the tumour. |
0.18
|
b2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The reciprocal carrying capacity of the tumour. |
3.0
|
a
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of the drug on every population. |
0.001
|
bd
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half saturation of the kill. |
0.0001
|
g
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the drug combines with every population. |
0.1
|
k
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The elimination rate of the drug, |
0.2
|
tau
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The delay of the conversion of resting cells to hunting cells. |
45.6
|
u
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The constant infusion rate of the drug. |
0.0
|
Examples:
>>> from skcomplex.models.biology.oncology import RestingHuntingChemotherapyElement
>>> RestingHuntingChemotherapyElement('patient').tau
45.6
Source code in src/skcomplex/models/biology/oncology/_resting_hunting_chemotherapy.py
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | |
SirnaTgfBetaElement(label, visual=None, *, E=1000.0, A=1000.0, C1=0.0, C2=0.0, G=0.0, alpha=0.035, gamma1=10.0, d1=0.03, g1=20000000.0, rho1=0.1245, rmax=0.1121, g2=2000000.0, r1=0.18, b=1e-09, a1=1.0, g3=100000.0, rho2=0.27, g4=20000000.0, rho3=5.0, g5=1000.0, gamma2=0.001, d2=10.0, rho4=300000000.0, mu=1000000.0, psi=1.0, gamma3=1.0, d3=10.0, u=0.0, du=0.66)
Bases: Element
Effector cells, tumour cells, IL-2, TGF-beta, and the siRNA that silences the production of TGF-beta.
The model extends Kirschner and Panetta. TGF-beta lowers the recruitment and the IL-2 driven proliferation of
effector cells and the production of IL-2, and raises the growth of the tumour. The siRNA, infused at the rate
u, divides the production of TGF-beta by 1 + psi G^gamma3.
The element holds the states and parameters and has no laws of its own: the interactions of sirna_tgf_beta read
its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour site. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
E
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of effector cells. |
1000.0
|
A
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of tumour cells. |
1000.0
|
C1
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial concentration of IL-2. |
0.0
|
C2
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial concentration of TGF-beta. |
0.0
|
G
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial amount of siRNA. |
0.0
|
alpha
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The antigenicity of the tumour. |
0.035
|
gamma1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inhibition of the recruitment of effector cells by TGF-beta. |
10.0
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of effector cells. |
0.03
|
g1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half-saturation constant of the proliferation of effector cells by IL-2. |
20000000.0
|
rho1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The proliferation rate of effector cells without TGF-beta. |
0.1245
|
rmax
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The largest inhibition of that proliferation by TGF-beta. |
0.1121
|
g2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half-saturation constant of that inhibition. |
2000000.0
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of tumour cells. |
0.18
|
b
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The reciprocal carrying capacity of tumour cells. |
1e-09
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of tumour cells by effector cells. |
1.0
|
g3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half-saturation constant of the kill. |
100000.0
|
rho2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The largest growth of tumour cells that TGF-beta adds. |
0.27
|
g4
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half-saturation constant of that growth. |
20000000.0
|
rho3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The production rate of IL-2. |
5.0
|
g5
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half-saturation constant of the production of IL-2. |
1000.0
|
gamma2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inhibition of the production of IL-2 by TGF-beta. |
0.001
|
d2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of IL-2. |
10.0
|
rho4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The largest production rate of TGF-beta. |
300000000.0
|
mu
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The number of tumour cells at which the production of TGF-beta rises. |
1000000.0
|
psi
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The fraction of the siRNA bound to the mRNA. |
1.0
|
gamma3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The exponent of the suppression of the mRNA by the siRNA. |
1.0
|
d3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of TGF-beta. |
10.0
|
u
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infusion rate of siRNA. |
0.0
|
du
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of siRNA. |
0.66
|
Examples:
>>> from skcomplex.models.biology.oncology import SirnaTgfBetaElement
>>> SirnaTgfBetaElement('site').rho4
300000000.0
Source code in src/skcomplex/models/biology/oncology/_sirna_tgf_beta.py
125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 | |
SproutElement(label, visual=None, *, chemotaxis=30.0, branching=0.02, activation=0.01)
Bases: Element
Endothelial tip cell that climbs the VEGF gradient and leaves a new vessel segment behind it.
Every step the tip moves to a neighbouring cell with a probability that grows with exp(chemotaxis * VEGF /
VEGF_here), so it senses the relative gradient, and it leaves a vessel segment where there was none. With
probability branching the tip splits in two, the new tip standing where the tip was. Below the VEGF level
activation the tip stays put. The model adds the vessel segment, the branching, and the step as member
interactions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the agent or group. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
chemotaxis
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
How strongly VEGF draws the tip. |
30.0
|
branching
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The probability per step of a new tip. |
0.02
|
activation
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The VEGF above which the tip moves. |
0.01
|
Examples:
>>> from skcomplex.core.elements import GroupElement
>>> from skcomplex.models.biology.oncology import SproutElement
>>> GroupElement('sprouts', element=SproutElement, size=2, location=(0, 5)).size
2
Source code in src/skcomplex/models/biology/oncology/_sprout.py
48 49 50 51 52 53 54 55 56 57 58 59 60 | |
StemCellDifferentiationElement(label, visual=None, *, NSq=100.0, NPr=1000.0, NBs=2000.0, ND=2000.0, ASq=5.0, APr=0.0, ABs=0.0, AD=0.0, d1=0.0001, d2=0.001, d3=0.01, d4=0.001, d5=0.001, d6=0.01, d7=0.01, d8=0.01, k12=0.5, k21=0.05, k23=0.5, k34=0.06, k56=0.1, k65=0.9, k67=0.3, k78=0.05, r1=0.1, r2=0.001, r3=0.001, r4=0.001, m1=0.005, NPinf=100.0, APinf=100.0, NPmax=10000.0, APmax=50000.0, Nbmax=10000.0, Abmax=5000.0, beta0=5.0, kappa0=2000.0, delta=1.0, up=30.0, uc=10.0, therapy='continuous', start=100.0, duration=100.0)
Bases: Element
Normal and malignant lineages of quiescent stem cells, progenitors, basal cells, and differentiated cells.
In each lineage the quiescent stem cells become progenitors at the rate k12 and progenitors return at the rate
k21 (1 - NPr / (NPr + NPinf)). Progenitors renew logistically, become basal cells, and basal cells
differentiate. The renewal of normal progenitors gets the feedback beta0 (1 - ND / (ND + kappa0)) of the
differentiated cells. Normal progenitors mutate into malignant ones at the rate m1. A therapy multiplies the
death rates of the progenitors and the basal cells by its dose, and that of the normal progenitors also by
1 + delta times their renewal rate. A pulsed therapy multiplies them by 4 more from start for duration.
The element holds the states and parameters and has no laws of its own: the interactions of
stem_cell_differentiation read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tissue. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
NSq
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial normal quiescent stem cells. |
100.0
|
NPr
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial normal progenitors. |
1000.0
|
NBs
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial normal basal cells. |
2000.0
|
ND
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial normal differentiated cells. |
2000.0
|
ASq
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial malignant quiescent stem cells. |
5.0
|
APr
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial malignant progenitors. |
0.0
|
ABs
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial malignant basal cells. |
0.0
|
AD
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial malignant differentiated cells. |
0.0
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of normal quiescent stem cells. |
0.0001
|
d2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of normal progenitors. |
0.001
|
d3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of normal basal cells. |
0.01
|
d4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of normal differentiated cells. |
0.001
|
d5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of malignant quiescent stem cells. |
0.001
|
d6
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of malignant progenitors. |
0.01
|
d7
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of malignant basal cells. |
0.01
|
d8
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of malignant differentiated cells. |
0.01
|
k12
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which normal quiescent stem cells become progenitors. |
0.5
|
k21
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The largest rate at which normal progenitors return to quiescence. |
0.05
|
k23
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which normal progenitors become basal cells. |
0.5
|
k34
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which normal basal cells differentiate. |
0.06
|
k56
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which malignant quiescent stem cells become progenitors. |
0.1
|
k65
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The largest rate at which malignant progenitors return to quiescence. |
0.9
|
k67
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which malignant progenitors become basal cells. |
0.3
|
k78
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which malignant basal cells differentiate. |
0.05
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The renewal rate of normal progenitors. |
0.1
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The renewal rate of normal basal cells. |
0.001
|
r3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The renewal rate of malignant progenitors. |
0.001
|
r4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The renewal rate of malignant basal cells. |
0.001
|
m1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The mutation rate of normal progenitors. |
0.005
|
NPinf
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The saturation constant of the return of normal progenitors. |
100.0
|
APinf
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The saturation constant of the return of malignant progenitors. |
100.0
|
NPmax
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The largest number of normal progenitors. |
10000.0
|
APmax
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The largest number of malignant progenitors. |
50000.0
|
Nbmax
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The largest number of normal basal cells. |
10000.0
|
Abmax
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The largest number of malignant basal cells. |
5000.0
|
beta0
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The feedback constant. |
5.0
|
kappa0
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The number of differentiated cells that halves the feedback. |
2000.0
|
delta
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The weight of the renewal in the death the therapy causes to normal progenitors. |
1.0
|
up
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The dose of the pulsed therapy. |
30.0
|
uc
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The dose of the continuous therapy. |
10.0
|
therapy
|
str
|
The mode of therapy, |
'continuous'
|
start
|
float
|
The time the pulse of a pulsed therapy starts. |
100.0
|
duration
|
float
|
The duration of the pulse of a pulsed therapy. |
100.0
|
Examples:
>>> from skcomplex.models.biology.oncology import StemCellDifferentiationElement
>>> StemCellDifferentiationElement('tissue', therapy='pulsed').therapy
'pulsed'
Source code in src/skcomplex/models/biology/oncology/_stem_cell_differentiation.py
170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 | |
SuppressedTumourElement(label, visual=None, *, A=1.0, EUD=1e-05, ED=1e-05, EPC=1e-05, E=1e-05, EPH=1e-05, EH=1e-05, EPR=1e-05, ER=1e-05, C1=0.0, C2=0.0, C3=0.0, r1=0.333, r2=333.0, n=0.5, p=3.0, q=2 / 3, a1=0.9, g1=1.2, g2=11.0, g3=100.0, C3_50=3.5, alpha_a=1.0, C2_50=0.4, ER_50=20000000.0, lambda_a=0.5, d1=0.14, d2=0.5, a2=23.0, g4=0.33, d3=0.2, a3=16.0, EC1_50=0.3, EC3_50=2.9, d4=1.0, a4=9.9, d5=0.2, a5=1.9, a6=0.022, g5=1.7, d6=0.1, a7=5.1, d7=0.2, a8=2.1, d8=0.1, a9=1.7e-05, CC2_50=0.75, CC3_50=0.9, tau1=0.08, r3=1.4e-08, r4=1.3e-10, tau2=0.05, r5=1.8e-08, r6=1.1e-07, tau3=0.07, EMC=10000.0, EMH=10000.0, EMR=10000.0)
Bases: Element
Tumour, dendritic cells, proliferating and active T cells, IL-2, IL-10, and TGF-beta.
The equations are those of Padmanabhan et al. (4.22) to (4.33). The tumour grows by the smooth minimum
A / ((1 / r1)^p + (A^(1 - n) / r2)^p)^(1/p) of exponential and power growth and is killed through its fraction
A* = A / (1 + (A^(1 - q) / g3)^p)^(1/p) accessible to the cytotoxic T cells E, at the rate
a1 A* E / (E + A* / g1 + ER / g2) / (1 + C3 / C3_50). Antigen matures unlicensed dendritic cells, which helper
memory cells license, and dendritic cells recruit the memory pools EMC, EMH, and EMR into proliferating
cytotoxic, helper, and regulatory cells, which IL-2 matures. IL-10 and TGF-beta, from regulatory and tumour cells,
suppress maturation, IL-2 production, and killing, and TGF-beta converts helper into regulatory cells.
The element holds the states and parameters and has no laws of its own: the interactions of
tumour_immune_suppression read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour site. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
A
|
Annotated[float, StateSpec(domain=open(0, oo))]
|
The initial tumour cells. |
1.0
|
EUD
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial unlicensed dendritic cells. |
1e-05
|
ED
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial licensed dendritic cells. |
1e-05
|
EPC
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial proliferating cytotoxic T cells. |
1e-05
|
E
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial active cytotoxic T cells. |
1e-05
|
EPH
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial proliferating helper T cells. |
1e-05
|
EH
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial active helper T cells. |
1e-05
|
EPR
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial proliferating regulatory T cells. |
1e-05
|
ER
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial active regulatory T cells. |
1e-05
|
C1
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial IL-2 concentration. |
0.0
|
C2
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial IL-10 concentration. |
0.0
|
C3
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial TGF-beta concentration. |
0.0
|
r1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The exponential growth rate of the tumour. |
0.333
|
r2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The power growth coefficient of the tumour. |
333.0
|
n
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The exponent of the power growth. |
0.5
|
p
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The smoothness of the transitions. |
3.0
|
q
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The exponent of the accessible fraction of a large tumour. |
2 / 3
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maximal kill rate of tumour cells. |
0.9
|
g1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The ratio of tumour to cytotoxic cells at half kill. |
1.2
|
g2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The ratio of regulatory to cytotoxic cells at half kill. |
11.0
|
g3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The size scale of the accessible fraction. |
100.0
|
C3_50
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The TGF-beta at half kill. |
3.5
|
alpha_a
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The antigenicity of the tumour. |
1.0
|
C2_50
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The IL-10 at half dendritic maturation. |
0.4
|
ER_50
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The regulatory cells at half dendritic maturation. |
20000000.0
|
lambda_a
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The licensing rate of dendritic cells. |
0.5
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of unlicensed dendritic cells. |
0.14
|
d2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of licensed dendritic cells. |
0.5
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The recruitment rate of proliferating cytotoxic cells. |
23.0
|
g4
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The steepness of the recruitment by dendritic cells. |
0.33
|
d3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of proliferating cytotoxic cells. |
0.2
|
a3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maturation rate of cytotoxic cells. |
16.0
|
EC1_50
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The IL-2 at half maturation. |
0.3
|
EC3_50
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The TGF-beta at half maturation. |
2.9
|
d4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of active cytotoxic cells. |
1.0
|
a4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The recruitment rate of proliferating helper cells. |
9.9
|
d5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of proliferating helper cells. |
0.2
|
a5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maturation rate of helper cells. |
1.9
|
a6
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The conversion rate of helper into regulatory cells. |
0.022
|
g5
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The TGF-beta at half conversion. |
1.7
|
d6
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of active helper cells. |
0.1
|
a7
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The recruitment rate of proliferating regulatory cells. |
5.1
|
d7
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of proliferating regulatory cells. |
0.2
|
a8
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The maturation rate of regulatory cells. |
2.1
|
d8
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of active regulatory cells. |
0.1
|
a9
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The IL-2 production by helper cells. |
1.7e-05
|
CC2_50
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The IL-10 at half suppression of IL-2. |
0.75
|
CC3_50
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The TGF-beta at half suppression of IL-2. |
0.9
|
tau1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The lifetime of IL-2. |
0.08
|
r3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The IL-10 production by regulatory cells. |
1.4e-08
|
r4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The IL-10 production by tumour cells. |
1.3e-10
|
tau2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The lifetime of IL-10. |
0.05
|
r5
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The TGF-beta production by regulatory cells. |
1.8e-08
|
r6
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The TGF-beta production by tumour cells. |
1.1e-07
|
tau3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The lifetime of TGF-beta. |
0.07
|
EMC
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The memory cytotoxic T cells. |
10000.0
|
EMH
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The memory helper T cells. |
10000.0
|
EMR
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The memory regulatory T cells. |
10000.0
|
Examples:
>>> from skcomplex.models.biology.oncology import SuppressedTumourElement
>>> SuppressedTumourElement('site').lambda_a
0.5
Source code in src/skcomplex/models/biology/oncology/_suppressed_tumour.py
216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 | |
TamoxifenTumourElement(label, visual=None, *, Ag=900.0, As=50.0, Am=50.0, X0=0.0, X1=0.0, X2=0.0, X3=0.0, E=10.0, mg=0.0013, ms=0.039, mm=0.0169, Asat=10000.0, a1=0.0062, a2=0.01, delta1=25.0, delta2=25.0, k01=0.048, k12=0.993, k23=35.932, du1=1.145, du2=39.525, V=8.592, s=0.121, d1=0.012, u=12.5)
Bases: Element
Breast tumour in three Gompertzian cell-cycle phases under tamoxifen, its metabolite, and the lymphocytes.
The phases follow dAg/dt = -mg Ag L + 2 mm Am L - a1 Ag (UX + delta1 UH), dAs/dt = -ms As + mg Ag L, and
dAm/dt = -mm Am L + ms As, with L = log(Asat / (Ag + As + Am)). Tamoxifen passes from the gut X0 through
X1 to the plasma X2, dX0/dt = -k01 X0 + u(t), dX1/dt = k01 X0 - k12 X1,
dX2/dt = k12 X1 - (du1 + k23) X2, and the plasma turns it into 4-hydroxytamoxifen,
dX3/dt = k23 X2 - du2 X3, with the concentrations UX = X2 / V and UH = X3 / V. The lymphocytes follow
dE/dt = s - d1 E - a2 E (UX + delta2 UH), and tamoxifen enters the gut at the constant rate u.
The element holds the states and parameters and has no laws of its own: the interactions of
tamoxifen_cell_cycle read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
Ag
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial volume of cells in the growth phase. |
900.0
|
As
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial volume of cells in the synthesis phase. |
50.0
|
Am
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial volume of cells in mitosis. |
50.0
|
X0
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial tamoxifen in the gut. |
0.0
|
X1
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial tamoxifen in the second compartment. |
0.0
|
X2
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial tamoxifen in the plasma. |
0.0
|
X3
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial 4-hydroxytamoxifen. |
0.0
|
E
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial circulating lymphocytes, in millions. |
10.0
|
mg
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The transit rate out of the growth phase. |
0.0013
|
ms
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The transit rate out of the synthesis phase. |
0.039
|
mm
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The transit rate out of mitosis. |
0.0169
|
Asat
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The volume at which growth saturates. |
10000.0
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of the tumour per unit of drug. |
0.0062
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of the lymphocytes per unit of drug. |
0.01
|
delta1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The tumour kill of the metabolite relative to tamoxifen. |
25.0
|
delta2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The lymphocyte kill of the metabolite relative to tamoxifen. |
25.0
|
k01
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The transfer rate from the gut. |
0.048
|
k12
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The transfer rate to the plasma. |
0.993
|
k23
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the plasma metabolizes tamoxifen. |
35.932
|
du1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The elimination rate of tamoxifen. |
1.145
|
du2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The elimination rate of the metabolite. |
39.525
|
V
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The volume of distribution. |
8.592
|
s
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The influx of lymphocytes, in millions per unit of time. |
0.121
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of lymphocytes. |
0.012
|
u
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infusion rate of tamoxifen. |
12.5
|
Examples:
>>> from skcomplex.models.biology.oncology import TamoxifenTumourElement
>>> TamoxifenTumourElement('tumour').Asat
10000.0
Source code in src/skcomplex/models/biology/oncology/_tamoxifen_tumour.py
116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 | |
TcrGeneTherapyElement(label, visual=None, *, E=1000.0, A=1000.0, s=1.0, alpha=0.05, d1=0.03, r1=0.1245, g1=0.001, r2=0.18, b=1e-09, a=1.0, g2=100000.0)
Bases: Element
Effector cells and tumour cells under a gene therapy that makes the T cells express a tumour receptor.
The effector cells follow dE/dt = s + alpha A - d1 E + r1 E / (E + g1) and the tumour cells
dA/dt = r2 A (1 - b A) - a E A / (A + g2), a predator-prey model of the immune attack.
The element holds the states and parameters and has no laws of its own: the interactions of tcr_gene_therapy read
its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour site. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
E
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of effector cells. |
1000.0
|
A
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of tumour cells. |
1000.0
|
s
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The influx rate of effector cells. |
1.0
|
alpha
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The antigenicity of the tumour. |
0.05
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of effector cells. |
0.03
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The proliferation rate of effector cells. |
0.1245
|
g1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half-saturation constant of the proliferation of effector cells. |
0.001
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of tumour cells. |
0.18
|
b
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The reciprocal carrying capacity of tumour cells. |
1e-09
|
a
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate that the therapy gives the effector cells. |
1.0
|
g2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The half-saturation constant of the kill. |
100000.0
|
Examples:
>>> from skcomplex.models.biology.oncology import TcrGeneTherapyElement
>>> TcrGeneTherapyElement('site').r2
0.18
Source code in src/skcomplex/models/biology/oncology/_tcr_gene_therapy.py
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | |
TherapySwitchInteraction(label, *, target, signal, threshold=0.0, value=1.0, state='u', direction=1)
Bases: CrossingInteraction
Switch that sets the therapy state of a tumour to a value when a signal crosses a threshold in a direction.
A pair of switches, one that sets the therapy to 1 when the signal rises through a high threshold and one that sets it to 0 when the signal falls through a low one, is the relay with hysteresis of intermittent therapy. Every switch is an event labelled by the interaction.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the interaction and of its events. |
required |
target
|
Annotated[str, RoleSpec()]
|
The path of the tumour. |
required |
signal
|
Callable[[SimpleNamespace], object]
|
A function of the namespace that returns the signal, such as the PSA of the tumour. |
required |
threshold
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The value of the signal at the switch. |
0.0
|
value
|
float
|
The value of the therapy state after the switch. |
1.0
|
state
|
str
|
The name of the therapy state. |
'u'
|
direction
|
int
|
The direction of the crossing, 1 for a rising and -1 for a falling signal. |
1
|
Raises:
| Type | Description |
|---|---|
ValidationError
|
The direction is not -1, 0, or 1, or the signal is not a function. |
Examples:
>>> from skcomplex.models.biology.oncology import TherapySwitchInteraction
>>> switch = TherapySwitchInteraction('on', target='tumour', signal=lambda s: s.target.AD, threshold=15.0)
>>> switch.check().threshold
15.0
Source code in src/skcomplex/models/biology/oncology/_therapy_switch.py
57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | |
TissueElement(label, visual=None, *, oxygen=0.0, vegf=0.0, D_oxygen=1.0, decay_oxygen=0.05, D_vegf=1.0, decay_vegf=0.005)
Bases: Element
Tissue in which oxygen and the vascular endothelial growth factor VEGF diffuse and decay.
Both follow u' = D Δu - lambda u, and cells add or remove amounts at their sites: vessels supply oxygen, tumour
cells consume it, and hypoxic tumour cells secrete VEGF. The model adds the diffusion and the decay as
interactions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tissue or the lattice field. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
oxygen
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial oxygen. |
0.0
|
vegf
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial VEGF. |
0.0
|
D_oxygen
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The diffusion of oxygen. |
1.0
|
decay_oxygen
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of oxygen. |
0.05
|
D_vegf
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The diffusion of VEGF. |
1.0
|
decay_vegf
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of VEGF. |
0.005
|
Examples:
>>> from skcomplex.models.biology.oncology import TissueElement
>>> TissueElement('tissue').D_vegf
1.0
Source code in src/skcomplex/models/biology/oncology/_tissue.py
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 | |
TumourCellElement(label, visual=VisualSpec('agents', {'color_by': 'hypoxic', 'color_range': (0.0, 1.0)}), *, hypoxic=0.0, consumption=0.1, proliferation=1.0, division=0.2, hypoxia=0.5, secretion=1.0, necrosis=0.0)
Bases: Element
Tumour cell that consumes oxygen, divides when supplied, secretes VEGF when hypoxic, and dies without oxygen.
Every step the cell takes up consumption oxygen at its site, or what is left. Above proliferation it divides
with probability division into a free neighbouring cell. Below hypoxia it secretes secretion VEGF, and below
necrosis it dies. The model adds the uptake, the hypoxia, the secretion, and the life cycle as member
interactions.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the agent or group. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
VisualSpec('agents', {'color_by': 'hypoxic', 'color_range': (0.0, 1.0)})
|
hypoxic
|
Annotated[float, StateSpec(domain=FiniteEnumeratedSet([0, 1]))]
|
Whether the cell is hypoxic, |
0.0
|
consumption
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The oxygen a cell takes up per step. |
0.1
|
proliferation
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The oxygen above which a cell divides. |
1.0
|
division
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The probability per step of a division. |
0.2
|
hypoxia
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The oxygen below which a cell secretes VEGF. |
0.5
|
secretion
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The VEGF a hypoxic cell secretes per step. |
1.0
|
necrosis
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The oxygen below which a cell dies. |
0.0
|
Examples:
>>> from skcomplex.core.elements import GroupElement
>>> from skcomplex.models.biology.oncology import TumourCellElement
>>> GroupElement('tumour', element=TumourCellElement, size=3, location=(5, 5)).size
3
Source code in src/skcomplex/models/biology/oncology/_tumour_cell.py
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | |
TumourImmuneChemotherapyElement(label, visual=None, *, E=0.15, A=0.25, N=1.0, U=0.0, s=0.33, rho=0.01, alpha=0.3, c1=1.0, c2=0.5, c3=1.0, c4=1.0, d1=0.2, r1=1.5, r2=1.0, b1=1.0, b2=1.0, a1=0.2, a2=0.3, a3=0.1, k=1.0, u=0.0)
Bases: Element
Immune, tumour, and normal cells that compete and that a drug kills, after de Pillis and Radunskaya.
The immune cells follow dE/dt = s + rho E A / (alpha + A) - d1 E - c1 E A - a1 (1 - exp(-U)) E, the tumour
dA/dt = r1 A (1 - b1 A) - c2 E A - c3 N A - a2 (1 - exp(-U)) A, the normal cells
dN/dt = r2 N (1 - b2 N) - c4 N A - a3 (1 - exp(-U)) N, and the drug dU/dt = u - k U under a constant infusion
u.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the patient. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
E
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial immune cells. |
0.15
|
A
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial tumour cells. |
0.25
|
N
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial normal cells. |
1.0
|
U
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial drug concentration. |
0.0
|
s
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The influx of immune cells. |
0.33
|
rho
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The immune response rate. |
0.01
|
alpha
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The immune threshold. |
0.3
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the tumour inactivates immune cells. |
1.0
|
c2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which immune cells kill the tumour. |
0.5
|
c3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which normal cells compete with the tumour. |
1.0
|
c4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the tumour competes with normal cells. |
1.0
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of immune cells. |
0.2
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of the tumour. |
1.5
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of normal cells. |
1.0
|
b1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The reciprocal carrying capacity of the tumour. |
1.0
|
b2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The reciprocal carrying capacity of normal cells. |
1.0
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The fraction of immune cells the drug kills. |
0.2
|
a2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The fraction of tumour cells the drug kills. |
0.3
|
a3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The fraction of normal cells the drug kills. |
0.1
|
k
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The decay rate of the drug, |
1.0
|
u
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The constant infusion rate of the drug. |
0.0
|
Examples:
>>> from skcomplex.models.biology.oncology import TumourImmuneChemotherapyElement
>>> TumourImmuneChemotherapyElement('patient', u=1.0).u
1.0
Source code in src/skcomplex/models/biology/oncology/_tumour_immune_chemotherapy.py
101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 | |
VaccinatedTumourElement(label, visual=None, *, EH=0.02, E=0.02, A=0.1, ED=0.0, C=0.0, s1=0.0001, s2=0.0001, rho1=10.0, rho2=10.0, r1=0.01, r2=0.01, r3=0.02, r4=0.01, b1=1.0, b2=1.0, b3=1.0, d1=0.005, d2=0.005, d3=0.01, c1=0.1, c2=0.1, c3=1e-07, dose=0.5, period=168.0, width=1.0, start=0.0, doses=8)
Bases: Element
Helper T cells, cytotoxic T cells, tumour cells, dendritic cells, and IL-2 under dendritic-cell vaccination.
The helper cells follow dEH/dt = s1 + rho1 ED r1 EH (1 - b1 EH) - d1 EH, the cytotoxic cells
dE/dt = s2 + rho2 C (A + ED) r2 E (1 - b2 E) - d2 E, the tumour dA/dt = r3 A (1 - b3 A) - c1 A E, the
dendritic cells dED/dt = -c2 E ED + u(t), and the IL-2 dC/dt = r4 EH ED - c3 E C - d3 C. The vaccine u is
dose for width time units every period from start, doses times.
The element holds the states and parameters and has no laws of its own: the interactions of dendritic_cell_vaccine
read its parameters.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour site. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
EH
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial helper T cells. |
0.02
|
E
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial cytotoxic T cells. |
0.02
|
A
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial tumour cells. |
0.1
|
ED
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial dendritic cells. |
0.0
|
C
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial IL-2 concentration. |
0.0
|
s1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The influx of helper T cells. |
0.0001
|
s2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The influx of cytotoxic T cells. |
0.0001
|
rho1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The proliferation constant of helper T cells. |
10.0
|
rho2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The proliferation constant of cytotoxic T cells. |
10.0
|
r1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of helper T cells. |
0.01
|
r2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The growth rate of cytotoxic T cells. |
0.01
|
r3
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The growth rate of the tumour. |
0.02
|
r4
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The IL-2 secretion rate. |
0.01
|
b1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inverse capacity of helper T cells. |
1.0
|
b2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inverse capacity of cytotoxic T cells. |
1.0
|
b3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The inverse capacity of the tumour. |
1.0
|
d1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of helper T cells. |
0.005
|
d2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The death rate of cytotoxic T cells. |
0.005
|
d3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The degradation rate of IL-2. |
0.01
|
c1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of tumour cells by cytotoxic T cells. |
0.1
|
c2
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The kill rate of dendritic cells by cytotoxic T cells. |
0.1
|
c3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The consumption rate of IL-2 by cytotoxic T cells. |
1e-07
|
dose
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The injection rate of dendritic cells during a dose. |
0.5
|
period
|
float
|
The time between the starts of doses. |
168.0
|
width
|
float
|
The duration of a dose. |
1.0
|
start
|
float
|
The time of the first dose. |
0.0
|
doses
|
int
|
The number of doses. |
8
|
Examples:
>>> from skcomplex.models.biology.oncology import VaccinatedTumourElement
>>> VaccinatedTumourElement('site').r3
0.02
Source code in src/skcomplex/models/biology/oncology/_vaccinated_tumour.py
120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 | |
VascularSupportInteraction(label, *, tumour, vasculature, r=2.63, d=0.829)
Bases: Interaction
Gompertz growth under a carrying capacity that the vessels on the tumour surface raise.
The tumour follows dn/dt = r n log(K / n) and the capacity dK/dt = d n^(2/3).
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the interaction. |
required |
tumour
|
Annotated[str, RoleSpec()]
|
The path of the tumour. |
required |
vasculature
|
Annotated[str, RoleSpec()]
|
The path of the vasculature. |
required |
r
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The rate at which the growth slows. |
2.63
|
d
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which the surface of the tumour raises the capacity. |
0.829
|
Examples:
>>> from skcomplex.models.biology.oncology import VascularSupportInteraction
>>> VascularSupportInteraction('support', tumour='tumour', vasculature='vessels').d
0.829
Source code in src/skcomplex/models/biology/oncology/_vascular_support.py
44 45 46 47 48 49 50 51 52 53 54 55 56 57 | |
VascularizedSpheroidElement(label, visual=None, *, Ar=13.0, Ac=3.0, Ap=495.0, An=0.0, Vbc=0.0, Vbp=0.0, U=0.0, r1=1.2, r2=12.0, r3=0.06, m=1.0, a1=1.0, p1=1.0, p2=400000.0, p3=0.2, p4=0.45, p_g=400000.0, kappa1=0.17, kappa2=-45000.0, kappa3=-0.04, kappa4=-0.06, kappa_g=55000.0, theta1=0.3, theta2=0.3, beta=1.2, xi_e=0.8, rv_ref=0.005, Vx=0.005, du=INHIBITOR_CLEARANCE, dose=5.0, period=7.0, width=1.0, start=0.0)
Bases: Element
Tumour spheroid with a live core, a live periphery, a necrotic core, and the vasculature of core and periphery.
The radius grows as dAr/dt = r1 g(Ap / Vp), with g a sigmoid of the peripheral cell density. The core volume
Vc = 4/3 pi (dc Ar)^3 and the periphery Vp = 4/3 pi Ar^3 - Vc follow from the radius and the core-periphery
ratio dc(Ar). The increments of the radius, the core volume, and the tumour volume are read as rates, so
dAr = dAr/dt, dVc = 4/3 pi (dc (Ar + dAr))^3 - Vc and dVt = 4/3 pi ((Ar + dAr)^3 - Ar^3) are per unit
time. Peripheral cells pass to the core at the rate dVc / Vp, proliferate with the nutrient Vbp / (Vp rv_ref)
and the density, and core cells die by necrosis when the core nutrient Vbc / (Vc rv_ref) is low. The vasculature
grows by tumour angiogenic factor, which the inhibitor U lowers by exp(-xi_e U), the periphery takes in
external vasculature of density Vx as the tumour grows, and peripheral vessels pass to the core.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the tumour. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
Ar
|
Annotated[float, StateSpec(domain=open(0, oo))]
|
The initial radius. |
13.0
|
Ac
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of live core cells. |
3.0
|
Ap
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of live peripheral cells. |
495.0
|
An
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial number of necrotic cells. |
0.0
|
Vbc
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial vascular volume of the core. |
0.0
|
Vbp
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial vascular volume of the periphery. |
0.0
|
U
|
Annotated[float, StateSpec(domain=closed_open(0, oo))]
|
The initial concentration of the inhibitor. |
0.0
|
r1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The growth rate of the radius. |
1.2
|
r2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The proliferation rate of the peripheral cells. |
12.0
|
r3
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The rate at which peripheral vessels pass to the core. |
0.06
|
m
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The necrosis rate of the core cells. |
1.0
|
a1
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The angiogenesis rate. |
1.0
|
p1
|
Annotated[float, ParameterSpec()]
|
The peripheral nutrient at half proliferation. |
1.0
|
p2
|
Annotated[float, ParameterSpec()]
|
The peripheral density at half proliferation. |
400000.0
|
p3
|
Annotated[float, ParameterSpec()]
|
The core nutrient at half necrosis. |
0.2
|
p4
|
Annotated[float, ParameterSpec()]
|
The core nutrient at half angiogenic factor production. |
0.45
|
p_g
|
Annotated[float, ParameterSpec()]
|
The peripheral density at half the radial growth. |
400000.0
|
kappa1
|
Annotated[float, ParameterSpec()]
|
The width of the nutrient switch of proliferation. |
0.17
|
kappa2
|
Annotated[float, ParameterSpec()]
|
The width of the density switch of proliferation, negative so that crowding stops it. |
-45000.0
|
kappa3
|
Annotated[float, ParameterSpec()]
|
The width of the necrosis switch, negative so that starvation causes it. |
-0.04
|
kappa4
|
Annotated[float, ParameterSpec()]
|
The width of the angiogenic factor switch, negative so that starvation causes it. |
-0.06
|
kappa_g
|
Annotated[float, ParameterSpec()]
|
The width of the density switch of the radial growth. |
55000.0
|
theta1
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The exponent of the necrosis switch. |
0.3
|
theta2
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The exponent of the angiogenic factor switch. |
0.3
|
beta
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The exponent of the radius in the passage of vessels to the core. |
1.2
|
xi_e
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The efficiency of the inhibitor. |
0.8
|
rv_ref
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The reference vascular fraction that supports tumour cells. |
0.005
|
Vx
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The vascular density of the surrounding tissue. |
0.005
|
du
|
Annotated[float, ParameterSpec(domain=open(0, oo))]
|
The clearance rate of the inhibitor. |
INHIBITOR_CLEARANCE
|
dose
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The infusion rate during a dose. |
5.0
|
period
|
float
|
The time between the starts of doses. |
7.0
|
width
|
float
|
The duration of a dose. |
1.0
|
start
|
float
|
The time of the first dose. |
0.0
|
Examples:
>>> from skcomplex.models.biology.oncology import VascularizedSpheroidElement
>>> VascularizedSpheroidElement('tumour').Ap
495.0
Source code in src/skcomplex/models/biology/oncology/_vascularized_spheroid.py
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 | |
VasculatureElement(label, visual=None, *, K=1.0)
Bases: Element
Vasculature of a tumour, which sets its carrying capacity.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the vasculature. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
K
|
Annotated[float, StateSpec(domain=open(0, oo))]
|
The initial carrying capacity. |
1.0
|
Examples:
>>> from skcomplex.models.biology.oncology import VasculatureElement
>>> VasculatureElement('vessels', K=12.7).K
12.7
Source code in src/skcomplex/models/biology/oncology/_vasculature.py
34 35 36 37 38 39 40 41 42 | |
VesselElement(label, visual=None, *, supply=1.0)
Bases: Element
Segment of a blood vessel, which supplies oxygen to its site every step, a member transfer of the model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
label
|
str
|
The label of the agent or group. |
required |
visual
|
VisualSpec | None
|
How the element is drawn, or |
None
|
supply
|
Annotated[float, ParameterSpec(domain=closed_open(0, oo))]
|
The oxygen supplied per step. |
1.0
|
Examples:
>>> from skcomplex.core.elements import GroupElement
>>> from skcomplex.models.biology.oncology import VesselElement
>>> GroupElement('vessels', element=VesselElement, size=2, location=[(0, 0), (0, 1)]).size
2
Source code in src/skcomplex/models/biology/oncology/_vessel.py
36 37 38 39 40 41 42 43 44 | |
activity_grid(classes)
Return the activity of every class, evenly spaced from 0 to 1.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
classes
|
int
|
The number of activity classes. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
activities |
NDArray[float64]
|
The activity of every class. |
Examples:
>>> from skcomplex.models.biology.oncology import activity_grid
>>> activity_grid(5).tolist()
[0.0, 0.25, 0.5, 0.75, 1.0]
Source code in src/skcomplex/models/biology/oncology/_immune_competition.py
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 | |
angiogenesis_immunotherapy(A=5000.0, Vb=625.0, E=0.1, *, dose_an=15.0, dose_im=20.0, a2=1.35, a3=0.1, period=21.0, doses=6)
Return the Hahnfeldt tumour with effector cells under bevacizumab and atezolizumab every three weeks.
Each drug alone holds the tumour or slows it, and together they shrink it. The drug amounts follow the
two-compartment model whose bolus solution is the book's closed form, with the elimination rate
k10 = alpha beta / k21. The effector cells grow as r1 (A - c1 A^2) E, so 1 / c1 is the volume above which the
tumour suppresses them. The drug effects in the vasculature and effector balances are the saturating effects of
the book's pharmacodynamics. The resistance capacity delta_r = 0.01 and its threshold u_theta = 5 mg per kg
are a choice, since the book gives none. The toxicity of each drug is exp(c / tox) - 1, linear for a low amount
and exponential for a high one, and the observable toxicity is the mean of both. Volumes are in mm³, drug amounts
in mg per kg, and time is in days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
A
|
float
|
The initial tumour volume. |
5000.0
|
Vb
|
float
|
The initial vascular capacity. |
625.0
|
E
|
float
|
The initial effector cells, dimensionless. |
0.1
|
dose_an
|
float
|
The dose of bevacizumab, in mg per kg, 0 for immunotherapy alone. |
15.0
|
dose_im
|
float
|
The dose of atezolizumab, in mg per kg, 0 for antiangiogenic therapy alone. |
20.0
|
a2
|
float
|
The highest destruction rate of the vasculature by bevacizumab, in the book's range of 1.35 to 11.25. |
1.35
|
a3
|
float
|
The highest boost of effector cells by atezolizumab, in the book's range of 0.1 to 0.5. |
0.1
|
period
|
float
|
The time between doses. |
21.0
|
doses
|
int
|
The number of doses. |
6
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the tumour |
Examples:
>>> from skcomplex.models.biology.oncology import angiogenesis_immunotherapy
>>> angiogenesis_immunotherapy(dose_an=0.0).elements[0].dose_an
0.0
Source code in src/skcomplex/models/biology/oncology/_combination_therapy.py
786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 | |
anti_pd1_checkpoint(E=0.006, A=0.3968, *, u_ap=1e-10, sigma=5.0, ENC=0.0001, r3=0.18, b=1 / 0.8, c_l=1.0)
Return activated T cells, a tumour, and an anti-PD-1 drug that frees the T cells from checkpoint inhibition.
The PD-1-PD-L1 complex inhibits the activation and proliferation of T cells, and the drug lowers the free PD-1 on
T cells. The cytokines are at their steady states, as in the book. The book gives neither the naive T cells ENC
nor the association ratio sigma, which are set so that the T cells settle below the level that controls the
tumour. The ranged parameters take the low ends of the book's ranges, and the drug is the book's continuous
infusion of 10^-10 per day. A larger infusion frees more T cells and lowers the tumour. The book's free PD-1
(rho_r - du1 UAP) E turns negative once the drug exceeds rho_r / du1, and it is held at 0 there. With all PD-1
blocked nothing limits the T cells, which grow without bound and clear the tumour. Cells and the drug are in g/cm³
and time in days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
E
|
float
|
The initial activated T cells. |
0.006
|
A
|
float
|
The initial tumour cells. |
0.3968
|
u_ap
|
float
|
The infusion rate of the drug, 0 for no treatment. |
1e-10
|
sigma
|
float
|
The ratio of association to dissociation of PD-1 and PD-L1. |
5.0
|
ENC
|
float
|
The naive T cells. |
0.0001
|
r3
|
float
|
The growth rate of the tumour. |
0.18
|
b
|
float
|
The inverse carrying capacity of the tumour. |
1 / 0.8
|
c_l
|
float
|
The expression of PD-L1 on tumour cells relative to T cells. |
1.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the T cells |
Examples:
>>> from skcomplex.models.biology.oncology import anti_pd1_checkpoint
>>> anti_pd1_checkpoint(u_ap=0.0).elements[0].u_ap
0.0
Source code in src/skcomplex/models/biology/oncology/_immunotherapy.py
319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 | |
bone_marrow_blood_leukaemia(*, m1=0.0013, m3=1e-07, tau1=96.0, tau2=576.0)
Return the bone marrow and blood model of leukaemia, in which blasts crowd out the normal cells.
Normal marrow cells renew, mutate into blasts and cancer stem cells, and mature into blood cells after the delay
tau1. Blasts grow in the marrow, move to the blood, and inhibit the normal cells, and cancer stem cells convert
into blasts after the delay tau2. Cells are counts, time is in hours, and the history before the start is the
initial state. The book's table gives ranges, and the defaults are values in them: the largest growth rate of
normal marrow cells and carrying capacity of blasts, the smallest delays, and the release rate m2 that keeps
the normal blood cells near their initial number. The book prints the arrival of marrow cells in the blood with
a minus sign, and the model uses the plus sign of the release it balances. The blasts take over the marrow and
the normal blood cells fall by orders of magnitude.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
m1
|
float
|
The mutation rate of normal marrow cells into blasts, per hour. |
0.0013
|
m3
|
float
|
The mutation rate of normal marrow cells into cancer stem cells, per hour. |
1e-07
|
tau1
|
float
|
The maturation time of normal cells, in hours. |
96.0
|
tau2
|
float
|
The conversion time of cancer stem cells into blasts, in hours. |
576.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the normal marrow and blood cells |
Examples:
>>> from skcomplex.models.biology.oncology import bone_marrow_blood_leukaemia
>>> bone_marrow_blood_leukaemia(tau1=144.0).elements[0].tau1
144.0
Source code in src/skcomplex/models/biology/oncology/_stem_cells.py
251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 | |
cell_cycle_chemotherapy(*, dormant=False, u1=0.0, u2=0.0, v=0.0)
Return tumour cells in cell-cycle compartments under killing, blocking, and recruiting agents.
Without a dormant phase the cells cycle through G0 and G1, S, and G2 and M, a killing agent kills a fraction u1 of
the dividing cells, and a blocking agent slows the transit through S by u2. With a dormant phase the cells rest
in G0, cycle through G1 and S and through G2 and M, the killing agent kills u1 of the dividing cells, and a
recruiting agent speeds the exit from G0 by the factor 1 + v. Each division gives 2 (1 - u1) cells, so the
tumour grows for u1 < 1/2 and shrinks for u1 > 1/2, whatever the blocking and the recruitment. The parameters
and initial cells are those of Tables 3.8 and 3.9 of Padmanabhan et al., in cell counts and per unit time. The
book prints the agents as additive terms 2 l3 u1 and garbles the indices of the dormant model, so the model
takes the form of Świerniak et al., where the agents act on the cells of the compartment they leave. Constant
agents are given, untreated by default.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dormant
|
bool
|
Whether the cells have a dormant phase, the model of Table 3.9, or not, the model of Table 3.8. |
False
|
u1
|
float
|
The fraction of dividing cells the killing agent kills. |
0.0
|
u2
|
float
|
The fraction by which the blocking agent slows the transit through S, without a dormant phase. |
0.0
|
v
|
float
|
The relative increase of the exit from G0 the recruiting agent causes, with a dormant phase. |
0.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Examples:
>>> from skcomplex.models.biology.oncology import cell_cycle_chemotherapy
>>> type(cell_cycle_chemotherapy(dormant=True).elements[0]).__name__
'DormantCellCycleElement'
Source code in src/skcomplex/models/biology/oncology/_cell_kinetics.py
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 | |
cell_density(s, activities)
Return the density of a population of cells, the order-0 moment of its distribution.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
s
|
SimpleNamespace
|
The namespace of one member of the distribution. |
required |
activities
|
NDArray[float64]
|
The activity of every class. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
density |
Expression
|
The order-0 moment. |
Source code in src/skcomplex/models/biology/oncology/_immune_competition.py
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | |
chemoimmunotherapy(A=1000000.0, N=50000.0, E=100.0, C=11000000.0, *, u_til=10000000.0, u_il2=10000000.0, u_chemo=2.0, start=7.0, period=7.0, width=1.0, doses=3)
Return a tumour with NK cells, CD8 T cells, and lymphocytes under chemotherapy, IL-2, and TIL injection.
The tumour, implanted in a mouse, grows toward a high equilibrium that the immune cells cannot hold back. The doses of chemotherapy shrink it, and the injected tumour-infiltrating lymphocytes clear what the drug leaves. The parameters are the table of the book, except the decay rates of the drugs, which the book's table swaps. The chemotherapeutic drug decays at 0.9 per day and IL-2 at 10 per day, as in de Pillis et al. 2006. The schedule of three weekly one-day doses from day 7 is a choice, since the book gives none. Cells are counted, and time is in days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
A
|
float
|
The initial number of tumour cells. |
1000000.0
|
N
|
float
|
The initial number of NK cells. |
50000.0
|
E
|
float
|
The initial number of CD8 T cells. |
100.0
|
C
|
float
|
The initial number of circulating lymphocytes. |
11000000.0
|
u_til
|
float
|
The rate of TIL injection during a dose, in cells per day. |
10000000.0
|
u_il2
|
float
|
The rate of IL-2 injection during a dose. |
10000000.0
|
u_chemo
|
float
|
The rate of chemotherapy infusion during a dose. |
2.0
|
start
|
float
|
The time of the first dose. |
7.0
|
period
|
float
|
The time between the starts of doses. |
7.0
|
width
|
float
|
The duration of a dose. |
1.0
|
doses
|
int
|
The number of doses. |
3
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the states |
Examples:
>>> from skcomplex.models.biology.oncology import chemoimmunotherapy
>>> chemoimmunotherapy(u_til=0.0).elements[0].u_til
0.0
Source code in src/skcomplex/models/biology/oncology/_combination_therapy.py
76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 | |
chemovirotherapy(AU=1.0, V=0.1, U=0.1, *, u1=10.0, infusion='constant')
Return uninfected and infected tumour cells, an oncolytic virus, and a chemotherapeutic drug.
The virus infects the growing tumour, and the drug kills both uninfected and infected cells. Over the default run of 64 days, before the virus bursts through the tumour, the combination leaves the smallest tumour. Later the virus alone clears the tumour slightly faster, because the drug also kills the infected cells that make the virus. The infusion rate is a choice, since the book gives none. One unit of cells is a million cells, and one unit of time is two days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
AU
|
float
|
The initial number of uninfected cells. |
1.0
|
V
|
float
|
The initial number of virions, 0 for chemotherapy alone. |
0.1
|
U
|
float
|
The initial amount of drug. |
0.1
|
u1
|
float
|
The infusion rate of the drug, 0 for virotherapy alone. |
10.0
|
infusion
|
str
|
The form of the infusion, |
'constant'
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Examples:
>>> from skcomplex.models.biology.oncology import chemovirotherapy
>>> chemovirotherapy(infusion='exponential').elements[0].infusion
'exponential'
Source code in src/skcomplex/models/biology/oncology/_combination_therapy.py
475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 | |
clonal_chemoimmunotherapy(A1=90000.0, A2=40000.0, E=500.0, *, c1=0.1, c3=0.1, u_chemo1=0.2, u_chemo2=0.02, u_vaccine=20.0)
Return two competing tumour clones, sensitive and resistant to chemotherapy, under a drug and a vaccine.
The chemotherapy kills the sensitive first clone ten times faster than the resistant second clone. Alone, it removes the sensitive clone and frees the resistant clone from competition, so the tumour relapses resistant. With the dendritic-cell vaccine, the recruited immune cells clear both clones. The book does not model the drugs, so their effects are constant rates, and their values are a choice. The competition rates take a value in the book's range of 0.01 to 1. Cells are counted, and time is in days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
A1
|
float
|
The initial number of cells of the sensitive clone. |
90000.0
|
A2
|
float
|
The initial number of cells of the resistant clone. |
40000.0
|
E
|
float
|
The initial number of immune cells. |
500.0
|
c1
|
float
|
The competition of the second clone on the first. |
0.1
|
c3
|
float
|
The competition of the first clone on the second. |
0.1
|
u_chemo1
|
float
|
The chemotherapy kill rate of the first clone. |
0.2
|
u_chemo2
|
float
|
The chemotherapy kill rate of the second clone. |
0.02
|
u_vaccine
|
float
|
The level of the immunotherapeutic agent. |
20.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the clones |
Examples:
>>> from skcomplex.models.biology.oncology import clonal_chemoimmunotherapy
>>> clonal_chemoimmunotherapy(u_vaccine=0.0).elements[0].u_vaccine
0.0
Source code in src/skcomplex/models/biology/oncology/_combination_therapy.py
322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 | |
continuous_androgen_suppression(AD=10.0, AI=0.14, U=20.0, *, r1=0.025, r2=0.006, b=9.1e-11, c1=0.9, c2=0.8, d1=0.064, m1=5e-05, U0=20.0, du=0.08, a=0.9)
Return prostate cancer under continuous androgen suppression, which androgen-independent cells survive.
The suppression lowers the serum androgen from U0 to U0 (1 - a) at the rate du. The androgen-dependent cells
grow in proportion to the androgen and die and turn independent in proportion to the deprivation 1 - U / U0, so
they decline once the suppression is deep enough, while the independent cells grow regardless and cause the
relapse. Cells are counted, androgen is in ng/mL, and time is in days. The book's efficacy lies between 0.6 and
0.9, and only the upper end makes the dependent cells decline.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
AD
|
float
|
The initial androgen-dependent cells. |
10.0
|
AI
|
float
|
The initial androgen-independent cells. |
0.14
|
U
|
float
|
The initial serum androgen. |
20.0
|
r1
|
float
|
The growth rate of the dependent cells per unit of androgen. |
0.025
|
r2
|
float
|
The growth rate of the independent cells. |
0.006
|
b
|
float
|
The reciprocal carrying capacity. |
9.1e-11
|
c1
|
float
|
The competition of the independent cells on the dependent ones. |
0.9
|
c2
|
float
|
The competition of the dependent cells on the independent ones. |
0.8
|
d1
|
float
|
The death rate of the dependent cells under androgen deprivation. |
0.064
|
m1
|
float
|
The rate at which androgen deprivation turns dependent cells independent. |
5e-05
|
U0
|
float
|
The normal androgen concentration. |
20.0
|
du
|
float
|
The elimination rate of the androgen. |
0.08
|
a
|
float
|
The efficacy of the suppression. |
0.9
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Examples:
>>> from skcomplex.models.biology.oncology import continuous_androgen_suppression
>>> continuous_androgen_suppression(a=0.6).elements[0].a
0.6
Source code in src/skcomplex/models/biology/oncology/_hormone_therapy.py
95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 | |
de_pillis_radunskaya(E=0.15, A=0.25, N=1.0, *, u=0.0, s=0.33, r1=1.5, a2=0.3)
Return the de Pillis-Radunskaya model of immune, tumour, and normal cells under a constant drug infusion.
The cells are normalised so that the carrying capacity of normal cells is 1, and time is in days. Untreated, a
tumour that starts at 0.25 escapes the immune cells and settles at the high equilibrium where it outnumbers the
normal cells. A constant infusion u = 1 clears it, while the normal cells stay above 0.7. The parameters are those
of Table 3.3 of Padmanabhan et al. The book's initial tumour of 1e-5 lies in the basin of the tumour-free
equilibrium, which is stable since r1 < c2 s / d1 + c3, so the defaults are the initial conditions of de Pillis
and Radunskaya 2003, E = 0.15, A = 0.25, N = 1. The book prints no infusion schedule, so the infusion is a
constant rate u per day, untreated by default.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
E
|
float
|
The initial immune cells. |
0.15
|
A
|
float
|
The initial tumour cells. |
0.25
|
N
|
float
|
The initial normal cells. |
1.0
|
u
|
float
|
The constant infusion rate of the drug. |
0.0
|
s
|
float
|
The influx of immune cells. |
0.33
|
r1
|
float
|
The growth rate of the tumour. |
1.5
|
a2
|
float
|
The fraction of tumour cells the drug kills. |
0.3
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Examples:
>>> from skcomplex.models.biology.oncology import de_pillis_radunskaya
>>> de_pillis_radunskaya(u=1.0).elements[0].u
1.0
Source code in src/skcomplex/models/biology/oncology/_chemotherapy.py
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | |
delayed_dc_vaccine(*, dose=1000000.0, period=7.0, width=1.0, start=0.0, doses=4, tau1=1.26, tau2=0.45, tau3=0.47)
Return a tumour and eight innate and adaptive immune populations, with division delays, under a vaccine.
Natural killer cells divide in tau1, CD8+ cells mature after seven divisions 7 tau2, and naive helper cells
become type 1 helper cells after two divisions 2 tau3. Regulatory T cells, driven by the tumour and IL-2, inhibit
natural killer, CD8+, and helper cells. The book's growth term m1 ED E of mature CD8+ cells has no saturation and
makes them diverge within a day, so it saturates in the dendritic cells as m1 ED E / (g3 + ED), like every other
term the dendritic cells drive. The book gives no schedule, and the vaccine is a one-day injection of dose
dendritic cells per day every week, 4 times. The parameters and initial state are the book's, and with them the
regulatory T cells hold the adaptive response down, so the tumour grows toward its capacity b. Cells are counts,
IL-2 is in IU/L, and time in days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dose
|
float
|
The injection rate of dendritic cells during a dose, 0 for no vaccine. |
1000000.0
|
period
|
float
|
The time between the starts of doses. |
7.0
|
width
|
float
|
The duration of a dose. |
1.0
|
start
|
float
|
The time of the first dose. |
0.0
|
doses
|
int
|
The number of doses. |
4
|
tau1
|
float
|
The division time of natural killer cells. |
1.26
|
tau2
|
float
|
The division time of CD8+ cells. |
0.45
|
tau3
|
float
|
The division time of helper cells. |
0.47
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the tumour |
Examples:
>>> from skcomplex.models.biology.oncology import delayed_dc_vaccine
>>> delayed_dc_vaccine(tau2=0.5).elements[0].tau2
0.5
Source code in src/skcomplex/models/biology/oncology/_immunotherapy.py
444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 | |
delayed_metastasis(Np=1460.0, Ap=165.0, Ns=1750.0, As=0.0, *, up=0.0, us=0.0, tau=1.0)
Return normal and tumour cells at a primary and a secondary site, with a delayed migration of tumour cells.
Untreated, the faster tumour cells outcompete the normal cells at the primary site, and the cells that migrate seed
a tumour that does the same at the secondary site. The parameters are those of Table 3.7 of Padmanabhan et al.,
with time in days, and the initial cells are at the upper ends of the book's ranges with the secondary site free
of tumour. The book prints the kill at the secondary site with the infusion us in place of the concentration
Us, so the model uses Us as at the primary site. The infusions are constant rates, untreated by default, within
the book's range of 0 to 650.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
Np
|
float
|
The initial normal cells at the primary site. |
1460.0
|
Ap
|
float
|
The initial tumour cells at the primary site, also their history. |
165.0
|
Ns
|
float
|
The initial normal cells at the secondary site. |
1750.0
|
As
|
float
|
The initial tumour cells at the secondary site. |
0.0
|
up
|
float
|
The infusion rate of the drug at the primary site. |
0.0
|
us
|
float
|
The infusion rate of the drug at the secondary site. |
0.0
|
tau
|
float
|
The delay of the migration. |
1.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Examples:
>>> from skcomplex.models.biology.oncology import delayed_metastasis
>>> delayed_metastasis(up=650.0).elements[0].up
650.0
Source code in src/skcomplex/models/biology/oncology/_chemotherapy.py
432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 | |
delayed_resting_hunting_chemotherapy(E=0.01, Q=0.48, A=0.18, *, u=0.0, tau=45.6, a=0.001)
Return the tumour-immune model of resting and hunting cells with a conversion delay, under a drug infusion.
Resting immune cells become hunting cells after the delay tau, and hunting cells kill the tumour. Time and the
cells are dimensionless. The parameters and initial conditions are those of Table 3.6 of Padmanabhan et al., and
the infusion is a constant rate u, untreated by default, within the book's range of 0 to 0.03.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
E
|
float
|
The initial hunting cells. |
0.01
|
Q
|
float
|
The initial resting cells, also their history. |
0.48
|
A
|
float
|
The initial tumour cells. |
0.18
|
u
|
float
|
The constant infusion rate of the drug. |
0.0
|
tau
|
float
|
The delay of the conversion of resting cells to hunting cells. |
45.6
|
a
|
float
|
The kill rate of the drug on every population. |
0.001
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Examples:
>>> from skcomplex.models.biology.oncology import delayed_resting_hunting_chemotherapy
>>> delayed_resting_hunting_chemotherapy(tau=10.0).elements[0].tau
10.0
Source code in src/skcomplex/models/biology/oncology/_chemotherapy.py
305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 | |
dendritic_cell_vaccine(A=0.1, *, rho2=10.0, r4=0.01, dose=0.5, period=168.0, width=1.0, start=0.0, doses=8)
Return helper and cytotoxic T cells, a tumour, dendritic cells, and IL-2 under a dendritic-cell vaccine.
Vaccinated dendritic cells drive the proliferation of helper cells, which secrete IL-2, and IL-2 with the antigen
drives the proliferation of cytotoxic cells, which kill the tumour. The book gives no initial state or schedule.
The T cells start at their resting level s / d = 0.02, the dendritic cells and IL-2 at 0, and the vaccine is a
one-hour injection of dose per hour every week, 8 times. Without vaccine the tumour settles at
1 - c1 s2 / (d2 r3) = 0.9. The populations are in cells per mm³ scaled by the carrying capacity, IL-2 in
pg/mm³, and time in hours.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
A
|
float
|
The initial tumour cells. |
0.1
|
rho2
|
float
|
The proliferation constant of cytotoxic T cells. |
10.0
|
r4
|
float
|
The IL-2 secretion rate. |
0.01
|
dose
|
float
|
The injection rate of dendritic cells during a dose, 0 for no vaccine. |
0.5
|
period
|
float
|
The time between the starts of doses. |
168.0
|
width
|
float
|
The duration of a dose. |
1.0
|
start
|
float
|
The time of the first dose. |
0.0
|
doses
|
int
|
The number of doses. |
8
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the helper cells |
Examples:
>>> from skcomplex.models.biology.oncology import dendritic_cell_vaccine
>>> dendritic_cell_vaccine(dose=0.0).elements[0].dose
0.0
Source code in src/skcomplex/models/biology/oncology/_immunotherapy.py
162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 | |
drug_resistance_switching(S=0.01, *, u=1.0, m1=1e-06, m2=0.0, alpha_m=0.01, alpha_p=0.0, m5=0.0, r2=0.2, r3=0.2)
Return sensitive cells and cells resistant by mutation or by a reversible phenotype switch under a dose.
The drug kills the sensitive cells, so the resistant cells, which grow slower, take the tumour over. Resistance is
acquired spontaneously at the rates m1 and m2 and induced by the drug at the rates alpha_m and alpha_p per
unit of dose, and switched cells return to sensitivity at the rate m5. Time and the cells are dimensionless, the
carrying capacity being 1. The book gives values only for the two-population model of Greene, Sanchez-Tapia, and
Sontag, its Table 3.5, which is this model without switched cells. The defaults are that model, with the
induced rate alpha_m = 0.01 of the table and an effective dose of 1, so switching is off until m2, alpha_p,
or m5 is set.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
S
|
float
|
The initial sensitive cells, the resistant cells starting at 0. |
0.01
|
u
|
float
|
The effective dose. |
1.0
|
m1
|
float
|
The rate of spontaneous resistance by mutation. |
1e-06
|
m2
|
float
|
The rate of spontaneous resistance by phenotype switching. |
0.0
|
alpha_m
|
float
|
The rate per unit of dose of resistance induced by mutation. |
0.01
|
alpha_p
|
float
|
The rate per unit of dose of resistance induced by phenotype switching. |
0.0
|
m5
|
float
|
The rate at which switched cells become sensitive again. |
0.0
|
r2
|
float
|
The growth rate of mutated cells relative to sensitive cells. |
0.2
|
r3
|
float
|
The growth rate of switched cells relative to sensitive cells. |
0.2
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Examples:
>>> from skcomplex.models.biology.oncology import drug_resistance_switching
>>> drug_resistance_switching(alpha_m=0.0).elements[0].alpha_m
0.0
Source code in src/skcomplex/models/biology/oncology/_chemotherapy.py
225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 | |
dynamic_carrying_capacity(n=1.0, K=12.7, *, r=2.63, d=0.829)
Return Gompertz growth under a carrying capacity that the vessels on the tumour surface keep raising.
The tumour follows dn/dt = r n log(K / n) and the capacity dK/dt = d n^(2/3), so the tumour first fills its
initial capacity and then grows as fast as its vasculature, roughly as t^3. The defaults are the fit to breast
cancer volumes in mm³ and days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n
|
float
|
The initial volume. |
1.0
|
K
|
float
|
The initial carrying capacity. |
12.7
|
r
|
float
|
The rate at which the growth slows. |
2.63
|
d
|
float
|
The rate at which the surface of the tumour raises the capacity. |
0.829
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the volume |
Examples:
>>> from skcomplex.models.biology.oncology import dynamic_carrying_capacity
>>> dynamic_carrying_capacity().elements[1].K
12.7
Source code in src/skcomplex/models/biology/oncology/_growth.py
217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 | |
erythropoiesis_mercaptopurine(*, U=500.0, r1=0.00139, d1=0.0071, m0=1.01, Q50=0.027, n=1.0)
Return the production of red cells under a constant level of 6-mercaptopurine, starting from health.
The drug kills proliferating cells and lengthens their cycle, so fewer quiescent cells survive to mature, the mature
red cells fall, and their mean volume rises to MCV0 + g1 U. The cells are in 10^12 per kg, the volume in fL, the
drug in pMol per 8 x 10^8 red cells, and time in days. The parameters are those of Table 3.10 of Padmanabhan et al.,
with its half saturation of 2.7 x 10^10 cells per kg written as Q50 = 0.027. The patient starts at the healthy
steady state, Q = Q50 (m0 / r1 - 1)^(1/n), L = r1 Q / d1, the book's ratio of proliferating to quiescent cells
0.71 / 6.43, and MCV = 85. The book garbles equation 3.36 as -r1 AQ (2 exp(a1 tau) - 1) m(AQ) AQ. The model
takes the standard form of Mackey 1978 that Noble et al. use, dQ/dt = -r1 Q + (2 exp(-a1 tau) - 1) m(Q) Q, in
which cells leave to mature at the rate r1 and the cells that enter the cycle return doubled once they survive the
drug. Its healthy steady state gives 3.8 x 10^12 mature cells per kg, within the book's range.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
U
|
float
|
The concentration of the drug, which the book ranges from 158 to 1000. |
500.0
|
r1
|
float
|
The rate of differentiation of quiescent cells. |
0.00139
|
d1
|
float
|
The death rate of mature cells. |
0.0071
|
m0
|
float
|
The maximum rate at which quiescent cells enter the cycle. |
1.01
|
Q50
|
float
|
The quiescent cells at which the rate of entry is half its maximum. |
0.027
|
n
|
float
|
The sensitivity of the rate of entry to the quiescent cells. |
1.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Examples:
>>> from skcomplex.models.biology.oncology import erythropoiesis_mercaptopurine
>>> erythropoiesis_mercaptopurine(U=0.0).elements[0].MCV
85.0
Source code in src/skcomplex/models/biology/oncology/_cell_kinetics.py
135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 | |
exponential_linear_growth(n=2.0, *, r0=0.31, r=67.8)
Return a tumour that grows exponentially while small and linearly once its growth reaches a limiting rate.
The defaults are the fit to breast cancer volumes in mm³ and days, which switches near day 15.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n
|
float
|
The initial volume. |
2.0
|
r0
|
float
|
The exponential growth rate. |
0.31
|
r
|
float
|
The linear growth rate. |
67.8
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the volume |
Examples:
>>> from skcomplex.models.biology.oncology import exponential_linear_growth
>>> exponential_linear_growth().interactions[0].r0
0.31
Source code in src/skcomplex/models/biology/oncology/_growth.py
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | |
generalized_logistic(n=10.0, *, r=0.305, K=1221.0, p=1.0)
Return a tumour that saturates at a carrying capacity, dn/dt = r n (1 - (n / K)^p), logistic for p = 1.
The volume follows n0 K / (n0^p + (K^p - n0^p) exp(-r p t))^(1/p). The defaults are the logistic fit to breast
cancer volumes in mm³ and days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n
|
float
|
The initial volume. |
10.0
|
r
|
float
|
The growth rate at low density. |
0.305
|
K
|
float
|
The carrying capacity. |
1221.0
|
p
|
float
|
The exponent of the saturation. |
1.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the volume |
Examples:
>>> from skcomplex.models.biology.oncology import generalized_logistic
>>> generalized_logistic(p=0.5).interactions[0].p
0.5
Source code in src/skcomplex/models/biology/oncology/_growth.py
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 | |
glioma_chemovirotherapy(AU=60000000000.0, V=1000000000.0, *, u1=400.0)
Return glia, neurons, and a glioma under a constant temozolomide infusion and an oncolytic virus.
Untreated, the glioma grows and crowds out the glia, and the neurons die with the glia. The virus or the drug clears the glioma, and the neurons survive. The drug also kills some neurons. The book gives no initial virus or drug, so the run starts with no drug and with a billion virions. Cells and virions are counted, the drug is in mg per m², and time is in days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
AU
|
float
|
The initial number of glioma cells. |
60000000000.0
|
V
|
float
|
The initial number of virions, 0 for chemotherapy alone. |
1000000000.0
|
u1
|
float
|
The infusion rate of temozolomide, in mg per m² per day, 0 for virotherapy alone. |
400.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the glia |
Examples:
>>> from skcomplex.models.biology.oncology import glioma_chemovirotherapy
>>> glioma_chemovirotherapy(u1=0.0).elements[0].u1
0.0
Source code in src/skcomplex/models/biology/oncology/_combination_therapy.py
585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 | |
gompertz(n=10.0, *, r=0.0719, K=1964.0)
Return a tumour whose growth slows as the logarithm of the room left, dn/dt = r n log(K / n).
The volume follows K exp(log(n0 / K) exp(-r t)) and tends to K. The rate is the fitted decay of the
proliferation of breast cancer, per day, and the capacity is in mm³.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n
|
float
|
The initial volume. |
10.0
|
r
|
float
|
The rate at which the growth slows. |
0.0719
|
K
|
float
|
The carrying capacity. |
1964.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the volume |
Examples:
>>> from skcomplex.models.biology.oncology import gompertz
>>> gompertz(K=1000.0).interactions[0].K
1000.0
Source code in src/skcomplex/models/biology/oncology/_growth.py
180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 | |
hahnfeldt(A=17347.0, Vb=17347.0, *, lambda1=0.192, lambda2=0.0, xi_s=5.85, xi_i=0.00873, a=0.66, du=1.3, dose=20.0, period=1.0, width=1.0, start=0.0)
Return the Hahnfeldt model, a tumour whose carrying capacity is the vasculature it stimulates and inhibits.
The tumour follows dA/dt = -lambda1 A log(A / Vb) and the vasculature
dVb/dt = -lambda2 Vb + xi_s A - xi_i Vb A^(2/3) - a Vb U. The inhibitor follows dU/dt = -du U + u(t), the
differential form of the book's convolution. Untreated, tumour and vasculature tend to the volume
(xi_s / xi_i)^(3/2), about 17347 mm³, which is the initial state. The inhibitor parameters are those of endostatin
in Lewis lung carcinoma, and the default schedule is the continuous infusion of 20 mg/kg/day of Hahnfeldt et al.,
under which the vasculature and then the tumour regress. Volumes are in mm³, time in days, and the inhibitor in
mg/kg.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
A
|
float
|
The initial tumour volume. |
17347.0
|
Vb
|
float
|
The initial vascular volume. |
17347.0
|
lambda1
|
float
|
The rate at which the tumour approaches its capacity. |
0.192
|
lambda2
|
float
|
The spontaneous loss rate of the vasculature. |
0.0
|
xi_s
|
float
|
The angiogenic stimulation by the tumour. |
5.85
|
xi_i
|
float
|
The angiogenic inhibition by the tumour. |
0.00873
|
a
|
float
|
The vascular loss per unit of inhibitor. |
0.66
|
du
|
float
|
The clearance rate of the inhibitor. |
1.3
|
dose
|
float
|
The infusion rate during a dose, 0 for no treatment. |
20.0
|
period
|
float
|
The time between the starts of doses. |
1.0
|
width
|
float
|
The duration of a dose, equal to |
1.0
|
start
|
float
|
The time of the first dose. |
0.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the volumes |
Examples:
>>> from skcomplex.models.biology.oncology import hahnfeldt
>>> hahnfeldt(dose=0.0).elements[0].dose
0.0
Source code in src/skcomplex/models/biology/oncology/_antiangiogenic.py
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 | |
her2_targeted_therapy(A=0.035, *, antibody=0.2, paclitaxel=2.0, t_antibody=1.0, t_a=2.0, t_p=1.0, sigma=1.0)
Return HER2+ breast cancer cells under trastuzumab and paclitaxel, with antibody binding and drug uptake.
The free antibody and the free paclitaxel are drivers held at their levels from their doses on. The antibody binds
the receptors, which are in excess, so the bound antibody rises to the free antibody, and from the time t_a on it
lowers the growth rate to r (1 - a1 Ab). The paclitaxel enters the cells and briefly lowers the carrying capacity.
The cytotoxicity falls from one at the dose, so t_p is the dose time. The book's units cannot hold 35,000 cells
with a capacity of 0.67, so cells are counted in millions and the antibody in millions of molecules. The dose levels
and times are a choice. Time is in days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
A
|
float
|
The initial number of cells, in millions. |
0.035
|
antibody
|
float
|
The level of free antibody from its dose on. |
0.2
|
paclitaxel
|
float
|
The level of free paclitaxel from its dose on, in pmol. |
2.0
|
t_antibody
|
float
|
The time of the antibody dose. |
1.0
|
t_a
|
float
|
The time from which the bound antibody inhibits proliferation. |
2.0
|
t_p
|
float
|
The time of the paclitaxel dose. |
1.0
|
sigma
|
float
|
The synergy of the two drugs, 1 for none. |
1.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Examples:
>>> from skcomplex.models.biology.oncology import her2_targeted_therapy
>>> her2_targeted_therapy(sigma=1.5).elements[0].sigma
1.5
Source code in src/skcomplex/models/biology/oncology/_combination_therapy.py
716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 | |
ideta_intermittent_androgen(AD=5.0, AI=0.0, *, r1=0.0204, r2=0.0242, d1=0.0076, d2=0.0168, m1=5e-05, k1=0.0, k2=2.0, k3=8.0, k4=0.5, U0=30.0, du=0.08, h0=10.0, h1=15.0)
Return the Ideta model of intermittent androgen suppression, switched on and off by PSA thresholds.
The therapy starts when the serum PSA, the number of cancer cells, rises through h1 and stops when it falls
through h0. The androgen follows with the delay 1 / du, so the dependent cells shrink during therapy and regrow
after it, and the PSA cycles between the thresholds while the independent cells stay few. Cells are counted, the
PSA is in ng/mL, the androgen in nmol/L, starting at its normal level U0 within the book's 8 to 35, and time is
in days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
AD
|
float
|
The initial androgen-dependent cells. |
5.0
|
AI
|
float
|
The initial androgen-independent cells. |
0.0
|
r1
|
float
|
The growth rate of the dependent cells. |
0.0204
|
r2
|
float
|
The growth rate of the independent cells. |
0.0242
|
d1
|
float
|
The death rate of the dependent cells. |
0.0076
|
d2
|
float
|
The death rate of the independent cells. |
0.0168
|
m1
|
float
|
The maximum rate at which dependent cells turn independent. |
5e-05
|
k1
|
float
|
The growth of the dependent cells without androgen, relative to |
0.0
|
k2
|
float
|
The androgen at which the growth of the dependent cells is half way. |
2.0
|
k3
|
float
|
The death of the dependent cells without androgen, relative to |
8.0
|
k4
|
float
|
The androgen at which the death of the dependent cells is half way. |
0.5
|
U0
|
float
|
The normal androgen concentration. |
30.0
|
du
|
float
|
The elimination rate of the androgen. |
0.08
|
h0
|
float
|
The PSA below which the therapy stops. |
10.0
|
h1
|
float
|
The PSA above which the therapy starts. |
15.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Examples:
>>> from skcomplex.models.biology.oncology import ideta_intermittent_androgen
>>> ideta_intermittent_androgen(h1=20.0).interactions[-2].threshold
20.0
Source code in src/skcomplex/models/biology/oncology/_hormone_therapy.py
235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 | |
immune_competition(classes=5, *, activation=0.75, tumour=0.05, immune=1.0, growth=0.3, progression=0.05, kill=1.0, inhibition=0.2)
Return the kinetic model of the competition between tumour cells and immune cells.
Tumour cells and immune cells are distributions over activity classes, the progression of tumour cells and the
activation of immune cells, held by site groups on a lattice of the classes. Tumour cells proliferate in the host
and progress, active immune cells destroy them, and tumour cells inhibit the activation of immune cells. The
tumour starts in the lowest progression class and the immune cells in the class nearest activation. While
kill activation immune exceeds growth, the immune response wins and the tumour density decays. Below that
threshold the tumour grows, inhibits the immune cells further, and escapes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
classes
|
int
|
The number of activity classes of both distributions. |
5
|
activation
|
float
|
The initial activation of the immune cells, between 0 and 1. |
0.75
|
tumour
|
float
|
The initial density of tumour cells. |
0.05
|
immune
|
float
|
The density of immune cells. |
1.0
|
growth
|
float
|
The proliferation rate of tumour cells. |
0.3
|
progression
|
float
|
The rate at which tumour cells progress one class. |
0.05
|
kill
|
float
|
The rate at which fully active immune cells destroy tumour cells. |
1.0
|
inhibition
|
float
|
The rate at which the most progressed tumour cells inhibit immune cells. |
0.2
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the distributions |
Examples:
>>> from skcomplex.models.biology.oncology import immune_competition
>>> [item.label for item in immune_competition().elements]
['tumour', 'immune', 'host']
Source code in src/skcomplex/models/biology/oncology/_immune_competition.py
134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 | |
immune_observables(classes)
Return the tumour density, the mean tumour progression, and the mean immune activation of the model.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
classes
|
int
|
The number of activity classes. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
observables |
list[ObservableSpec]
|
The observables, each reading the moments of a distribution. |
Examples:
>>> from skcomplex.models.biology.oncology import immune_observables
>>> [item.label for item in immune_observables(5)]
['tumour_density', 'tumour_progression', 'immune_activation']
Source code in src/skcomplex/models/biology/oncology/_immune_competition.py
110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 | |
kirschner_panetta(E=1.0, A=1.0, C=1.0, *, alpha_a=0.02, r1=0.18, c1=1.0, a1=500.0, a2=70000000.0, u1=0.0, u2=0.0)
Return the Kirschner-Panetta model of effector cells, tumour cells, and IL-2 under adoptive therapy and IL-2.
Untreated, a tumour of antigenicity in the oscillatory range, such as the default 0.02, and the effector cells
oscillate in long cycles in which the tumour nearly vanishes and regrows to about 4 10^5. The adoptive therapy
adds a1 u1 effector cells per day and the IL-2 injection a2 u2 IL-2 per day. With u1 and u2 above 1, the
book's treatment factors a1 = 500 and a2 = 7 10^7 are exceeded and the tumour is cleared. The populations are
in volume units, the inputs in volume per day, and time in days, and the initial state is the book's.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
E
|
float
|
The initial effector cells. |
1.0
|
A
|
float
|
The initial tumour cells. |
1.0
|
C
|
float
|
The initial IL-2 concentration. |
1.0
|
alpha_a
|
float
|
The antigenicity of the tumour, in the book's range 0 to 0.05. |
0.02
|
r1
|
float
|
The growth rate of the tumour. |
0.18
|
c1
|
float
|
The kill rate of tumour cells by effector cells. |
1.0
|
a1
|
float
|
The effector cells per unit of adoptive therapy. |
500.0
|
a2
|
float
|
The IL-2 per unit of IL-2 injection. |
70000000.0
|
u1
|
float
|
The adoptive therapy input. |
0.0
|
u2
|
float
|
The IL-2 injection input. |
0.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the effector cells |
Examples:
>>> from skcomplex.models.biology.oncology import kirschner_panetta
>>> kirschner_panetta(u1=1.0).elements[0].u1
1.0
Source code in src/skcomplex/models/biology/oncology/_immunotherapy.py
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | |
leukaemia_stem_cells(NS=100.0, AS=1.0, *, r1=0.6, m1=0.2, d1=0.1, r4=0.7, m3=0.2, d4=0.1)
Return normal and leukaemic stem cells that compete for one niche through the feedback of their progeny.
Both kinds of stem cells renew at the rate r e^-psi1 - m e^-psi1 e^-psi3, where psi1 counts the stem cells
in the niche and psi3 their progeny, so the kind with the larger net renewal excludes the other. With the
defaults the leukaemic stem cells win and take over, and with r4 = 0.5 the leukaemia is controlled. The book
gives ranges for the rates, and the defaults are values in them with the feedback gains 0.01 of the book.
The book gives no initial cells, so a niche of 100 normal stem cells receives one leukaemic stem cell.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
NS
|
float
|
The initial normal stem cells. |
100.0
|
AS
|
float
|
The initial leukaemic stem cells. |
1.0
|
r1
|
float
|
The symmetric renewal rate of normal stem cells. |
0.6
|
m1
|
float
|
The symmetric differentiation rate of normal stem cells. |
0.2
|
d1
|
float
|
The death rate of normal stem cells. |
0.1
|
r4
|
float
|
The symmetric renewal rate of leukaemic stem cells. |
0.7
|
m3
|
float
|
The symmetric differentiation rate of leukaemic stem cells. |
0.2
|
d4
|
float
|
The death rate of leukaemic stem cells. |
0.1
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the normal cells |
Examples:
>>> from skcomplex.models.biology.oncology import leukaemia_stem_cells
>>> leukaemia_stem_cells(r4=0.5).elements[0].r4
0.5
Source code in src/skcomplex/models/biology/oncology/_stem_cells.py
403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 | |
lq_cell_survival(dose=2.0, *, fractions=1.0, alpha=0.3, beta=0.03, repair_rate=0.46, delivery_time=0.001)
Return the linear-quadratic survival of cells after a total dose, with its biologically effective dose.
The survival is exp(-alpha D - beta G D^2) (Padmanabhan et al. 2021 Eqs. 6.6-6.8), and the Lea-Catcheside factor
G holds the repair between and during fractions. A sweep of the dose through Experiment gives the survival
curve, and 30 fractions of 2 Gy at alpha / beta = 10 give the biologically effective dose of 72 Gy.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
dose
|
float
|
The total dose, in Gy. |
2.0
|
fractions
|
float
|
The number of fractions. |
1.0
|
alpha
|
float
|
The linear coefficient, per Gy. |
0.3
|
beta
|
float
|
The quadratic coefficient, per Gy squared. |
0.03
|
repair_rate
|
float
|
The rate of repair of sublethal damage, per hour. |
0.46
|
delivery_time
|
float
|
The time to deliver one fraction, in hours. |
0.001
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the states |
Examples:
>>> from skcomplex.engine.runtime import Simulation
>>> from skcomplex.models.biology.oncology import lq_cell_survival
>>> system = lq_cell_survival(60.0, fractions=30.0)
>>> trajectory = Simulation(system).check().prepare().run(1.0).trajectory_
>>> round(float(trajectory.values('cells.effective_dose')[0]), 1)
72.0
Source code in src/skcomplex/models/biology/oncology/_cell_survival.py
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | |
lq_radiosensitizer(A1=27.0, Us=2.0, *, r=0.04, m1=0.26, a_gamma=0.004, alpha=0.054, beta=0.0054, ap=0.42, au=0.15, du=5.544, dose=2.0, period=1.0, start=0.125, fractions=10)
Return a xenograft tumour irradiated in fractions that the linear-quadratic model scores, with a radiosensitizer.
Every fraction kills the part 1 - exp(-(1 + ap Us)(alpha d + beta d^2)) of the proliferating cells at once,
which divide once more and die through a chain of damaged compartments, and the accumulated dose slows the growth
of the survivors as exp(-a_gamma u_tot). The radiosensitizer, given once at time 0, raises both effects while it
lasts. Volumes are in mm³, doses in Gy, concentrations in μg/mL, and time in days, so the book's alpha = 54 and
a_gamma = 4 per kGy are 0.054 and 0.004 per Gy, beta = alpha / 10 per Gy², and the elimination rate of 0.231
per hour is 5.544 per day. Fractions are instantaneous, so the dose-protraction factor is 1. The book's equations
6.10 and 6.13 also move m1 A1 from the proliferating cells to the dying chain, which would make the untreated
tumour shrink at r - m1 < 0, so the chain is fed by the irradiated compartments alone and the tumour starts
with no damaged cells. The book derives Us(0) from a dose without its bioavailability and volume, so the
initial concentration is given directly.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
A1
|
float
|
The initial tumour volume, all proliferating. |
27.0
|
Us
|
float
|
The initial plasma concentration of the radiosensitizer. |
2.0
|
r
|
float
|
The growth rate. |
0.04
|
m1
|
float
|
The transit rate of the damaged cells. |
0.26
|
a_gamma
|
float
|
The inhibition of proliferation per unit of accumulated dose. |
0.004
|
alpha
|
float
|
The linear coefficient of the linear-quadratic model. |
0.054
|
beta
|
float
|
The quadratic coefficient of the linear-quadratic model. |
0.0054
|
ap
|
float
|
The potency of the radiosensitizer in raising the cell kill. |
0.42
|
au
|
float
|
The potency of the radiosensitizer in raising the accumulated dose. |
0.15
|
du
|
float
|
The elimination rate of the radiosensitizer. |
5.544
|
dose
|
float
|
The dose of a fraction. |
2.0
|
period
|
float
|
The time between fractions. |
1.0
|
start
|
float
|
The time of the first fraction. |
0.125
|
fractions
|
int
|
The number of fractions. |
10
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the compartments |
Examples:
>>> from skcomplex.models.biology.oncology import lq_radiosensitizer
>>> lq_radiosensitizer(Us=0.0).elements[0].Us
0.0
Source code in src/skcomplex/models/biology/oncology/_radiotherapy.py
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 | |
mean_activity(s, activities)
Return the mean activity of a population of cells.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
s
|
SimpleNamespace
|
The namespace of one member of the distribution. |
required |
activities
|
NDArray[float64]
|
The activity of every class. |
required |
Returns:
| Name | Type | Description |
|---|---|---|
mean |
Expression
|
The normalized first moment. |
Source code in src/skcomplex/models/biology/oncology/_immune_competition.py
88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 | |
multidrug_resistance(S=460500000000.0, *, r=0.0099, u1=10.0, u2=10.0, u3=10.0)
Return a tumour of eight populations resistant to subsets of three drugs, given by constant infusions.
Each drug kills the populations sensitive to it once its concentration exceeds a threshold, so the drugs clear the
sensitive cells while the cells resistant to all three keep growing. Time is in days, the cells are counted, and the
drugs are in dosage units D. The parameters are those of Table 3.4 of Padmanabhan et al. The book prints the
triple-resistant population without its own growth, dR123/dt = r (m1 R23 + m2 R13 + m3 R12), against its
assumption that all populations grow at the same rate, so the model adds the growth r R123. The book prints no
infusion schedule, so the drugs are constant infusions whose concentrations settle within the book's range of 0 to
50.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
S
|
float
|
The initial sensitive cells, all cells resistant to any drug starting at 0. |
460500000000.0
|
r
|
float
|
The growth rate of every population. |
0.0099
|
u1
|
float
|
The infusion rate of drug 1. |
10.0
|
u2
|
float
|
The infusion rate of drug 2. |
10.0
|
u3
|
float
|
The infusion rate of drug 3. |
10.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the populations |
Examples:
>>> from skcomplex.models.biology.oncology import multidrug_resistance
>>> multidrug_resistance(u2=0.0).elements[0].u2
0.0
Source code in src/skcomplex/models/biology/oncology/_chemotherapy.py
97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 | |
norton_simon(n=100.0, *, r=0.0719, K=1964.0, a=1.0, dose=1.0, period=21.0, width=1.0, start=42.0)
Return the Norton-Simon model, a Gompertzian tumour killed in proportion to its size by a dose schedule.
The tumour follows dn/dt = r n log(K / n) - a n U(t). A Gompertzian tumour regrows faster the smaller it is, so
a dose that shrinks it is followed by fast regrowth, and the schedule settles on a cycle below the capacity.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n
|
float
|
The initial volume. |
100.0
|
r
|
float
|
The rate at which the growth slows. |
0.0719
|
K
|
float
|
The carrying capacity. |
1964.0
|
a
|
float
|
The kill rate per unit of exposure. |
1.0
|
dose
|
float
|
The exposure during a dose. |
1.0
|
period
|
float
|
The time between the starts of doses. |
21.0
|
width
|
float
|
The duration of a dose. |
1.0
|
start
|
float
|
The time of the first dose. |
42.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the volume |
Examples:
>>> from skcomplex.models.biology.oncology import norton_simon
>>> norton_simon().interactions[1].start
42.0
Source code in src/skcomplex/models/biology/oncology/_growth.py
316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 | |
oncolytic_virus(AU=0.1, AV=0.0001, *, alpha=1.0, r=0.5, d=0.5)
Return uninfected and infected tumour cells that share a carrying capacity, with infection by mass action.
The uninfected cells follow dAU/dt = AU (1 - AU - AV) - alpha AU AV and the infected cells
dAV/dt = r AV (1 - AU - AV) + alpha AU AV - d AV, in units of the carrying capacity and of the growth time of
uninfected cells. The defaults lie in the ranges of the book's table. For alpha > d and 1 + alpha > r the
cells settle on the coexistence point AV = (1 - d / alpha) / (1 + alpha - r), AU = d / alpha - r AV, so the
virus reduces the tumour without eradicating it.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
AU
|
float
|
The initial uninfected cells. |
0.1
|
AV
|
float
|
The initial infected cells. |
0.0001
|
alpha
|
float
|
The infection rate. |
1.0
|
r
|
float
|
The growth rate of infected cells. |
0.5
|
d
|
float
|
The death rate of infected cells. |
0.5
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the uninfected cells |
Examples:
>>> from skcomplex.models.biology.oncology import oncolytic_virus
>>> oncolytic_virus(alpha=1.5).elements[0].alpha
1.5
Source code in src/skcomplex/models/biology/oncology/_gene_viral_therapy.py
277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 | |
oncolytic_virus_dendritic(AU=60.0, *, uv=2500000000.0, ud=1000000.0, a0=0.0, m=0.0, a5=0.22)
Return a tumour treated with an oncolytic adenovirus that expresses immune signals and with dendritic cells.
The virus infects the uninfected cells at the rate alpha AU V / Atot, where Atot = AU + AV + E + EN, the
infected cells lyse and release virions, and the T cells that the infected and the dendritic cells activate kill
both kinds of tumour cells. Volumes are in mm³, virions and cells are counts, and time is in days. The virus and
the dendritic cells are given at the constant rates of the book. The book gives no values for the kill rate
a0 independent of the virus and the activation rate m of naive T cells, so both default to 0. The virus at
the book's rate clears the tumour within days, while the dendritic cells, by raising the number of T cells in
Atot, dilute the infection and let the tumour regrow.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
AU
|
float
|
The initial uninfected tumour volume, in mm³. |
60.0
|
uv
|
float
|
The infusion rate of virions, per day. |
2500000000.0
|
ud
|
float
|
The injection rate of dendritic cells, per day. |
1000000.0
|
a0
|
float
|
The kill rate of T cells that does not depend on the virus, per day. |
0.0
|
m
|
float
|
The activation rate of naive T cells, per day. |
0.0
|
a5
|
float
|
The recruitment rate of naive T cells by infected cells, per day. |
0.22
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the tumour volumes |
Examples:
>>> from skcomplex.models.biology.oncology import oncolytic_virus_dendritic
>>> oncolytic_virus_dendritic(ud=0.0).elements[0].ud
0.0
Source code in src/skcomplex/models/biology/oncology/_gene_viral_therapy.py
349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 | |
optimal_chemotherapy(E=0.15, A=0.25, N=1.0, *, w=0.1)
Return a patient under the chemotherapy that minimises the tumour burden and the toxicity of the drug.
Run with an optimal control solver, the infusion is largest at the start, when the tumour is largest, and falls as the tumour shrinks, so the tumour ends far below its untreated level.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
E
|
float
|
The initial immune cells. |
0.15
|
A
|
float
|
The initial tumour cells. |
0.25
|
N
|
float
|
The initial normal cells. |
1.0
|
w
|
float
|
The weight of the squared infusion rate in the cost. |
0.1
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Examples:
>>> from skcomplex.models.biology.oncology import optimal_chemotherapy
>>> optimal_chemotherapy(w=1.0).elements[0].w
1.0
Source code in src/skcomplex/models/biology/oncology/_optimal_therapy.py
62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 | |
optimal_immunotherapy(x=0.1, y=1.0, *, alpha_a=0.005, w1=1.0, w2=1.0)
Return a tumour under the adoptive therapy and IL-2 injection that minimise its burden and their cost.
Run with an optimal control solver, the therapies are strongest while the tumour is large, the effector cells expand, and the tumour shrinks.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
x
|
float
|
The initial effector cells, in units of |
0.1
|
y
|
float
|
The initial tumour cells, in units of |
1.0
|
alpha_a
|
float
|
The antigenicity of the tumour. |
0.005
|
w1
|
float
|
The weight of the squared adoptive therapy rate in the cost. |
1.0
|
w2
|
float
|
The weight of the squared IL-2 injection rate in the cost. |
1.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the effector cells |
Examples:
>>> from skcomplex.models.biology.oncology import optimal_immunotherapy
>>> optimal_immunotherapy(w1=0.5).elements[0].w1
0.5
Source code in src/skcomplex/models/biology/oncology/_optimal_therapy.py
107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 | |
piecewise_linear_ias(patient=1, *, h0=4.0, h1=10.0)
Return the Hirata piecewise-linear model of intermittent androgen suppression for one of three patient types.
The androgen-dependent, adapted, and mutated cells grow and change into each other linearly, with one set of
rates during therapy and one off therapy, and the therapy switches on when the PSA, the sum of the cells, rises
through h1 and off when it falls through h0. The rates are the book's daily factors, w = omega - 1 on the
diagonal and w = omega off it. Patient 1 does not relapse, patient 2 relapses late, and patient 3 relapses,
once the mutated cells outgrow the therapy. The book only states that therapy starts above 10 ng/mL, so the
therapy stops below 4 ng/mL and is on at the start when the PSA exceeds h1. The cells are in units of the PSA,
ng/mL, and time is in days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
patient
|
int
|
The patient type, 1, 2, or 3, which sets the rates and the initial cells. |
1
|
h0
|
float
|
The PSA below which the therapy stops. |
4.0
|
h1
|
float
|
The PSA above which the therapy starts. |
10.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Raises:
| Type | Description |
|---|---|
ValidationError
|
The patient type is not 1, 2, or 3. |
Examples:
>>> from skcomplex.models.biology.oncology import piecewise_linear_ias
>>> piecewise_linear_ias(patient=3).elements[0].AD
11.02
Source code in src/skcomplex/models/biology/oncology/_hormone_therapy.py
778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 | |
power_law_growth(n=10.0, *, r=1.32, p=0.58)
Return a tumour whose proliferating part scales as a power of its size, dn/dt = r n^p.
For p < 1 the volume follows (n0^(1-p) + (1-p) r t)^(1/(1-p)), a growth slower than exponential. The defaults
are the fit to breast cancer volumes in mm³ and days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n
|
float
|
The initial volume. |
10.0
|
r
|
float
|
The growth rate. |
1.32
|
p
|
float
|
The exponent. |
0.58
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the volume |
Examples:
>>> from skcomplex.models.biology.oncology import power_law_growth
>>> power_law_growth(p=2 / 3).interactions[0].p
0.6666666666666666
Source code in src/skcomplex/models/biology/oncology/_growth.py
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 | |
prostate_androgen_receptor(N=1.5, AD=1.0, AI=0.0, *, UT=40.0, UD=40.0, m1=0.0001, age=60.0)
Return the Jain model of prostate epithelium and cancer driven by activated androgen receptors, with PSA.
The growth and death rates of the normal, androgen-dependent, and androgen-independent cells follow the receptors
activated by testosterone, UT, and dihydrotestosterone, UD, which are parameters, so androgen ablation is a
lower activation. The normal cells fill a capacity that grows with the age-dependent prostate volume, and the PSA
the cells produce in the tissue leaks into the serum through the normal epithelium and, faster, through the
tumour. Cells are in billions, receptors in nM, PSA in ng/mL, and time in hours, the age in years. The book
leaves several parts open, filled as follows. The half saturations psi2, phi2, and psi4 of the cancer cells
are those of the normal cells. The death rate is psi3_i / (psi4 + UD + UT). One activation UT, UD holds
for all cell types, and so does sigma. The independent cells gain the part m1 of the divisions of the
dependent cells. The negligible interaction c1 is 0. The capacity of the normal cells is the prostate volume
over the volume of a billion cells, and the PSA leak rate per million cells becomes 0.3125 per billion.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
N
|
float
|
The initial normal epithelial cells. |
1.5
|
AD
|
float
|
The initial androgen-dependent cells. |
1.0
|
AI
|
float
|
The initial androgen-independent cells. |
0.0
|
UT
|
float
|
The concentration of receptors activated by testosterone. |
40.0
|
UD
|
float
|
The concentration of receptors activated by dihydrotestosterone. |
40.0
|
m1
|
float
|
The fraction of the divisions of dependent cells that yields independent cells. |
0.0001
|
age
|
float
|
The age of the patient at the start. |
60.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Examples:
>>> from skcomplex.models.biology.oncology import prostate_androgen_receptor
>>> prostate_androgen_receptor(UT=5.0).elements[0].UT
5.0
Source code in src/skcomplex/models/biology/oncology/_hormone_therapy.py
621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 | |
prostate_cell_quota(AD=15.0, AI=0.0, *, rm=0.025, q1=0.3, q2=0.15, d1=0.015, d2=0.015, r0=0.01, r1=0.15, r2=0.15, n=3.0, theta=3.0, U0=15.0, Umin=0.5, du1=0.08, period=500.0, width=250.0)
Return the Portz cell-quota model of prostate cancer, whose cells grow on their internal androgen.
The androgen-dependent and independent cells grow at the Droop rate rm (1 - q_i / Q_i) of their cell quotas,
which take up serum androgen, and the PSA they release follows the quotas. A deprived dependent cell turns
independent faster, and an independent cell full of androgen turns back. The serum androgen follows the
exponential relaxation of the book's equation 7.18 between the normal level U0 and Umin, with therapy during
the first width days of every period. The book gives neither the steepness n of the mutation rates nor
theta of the PSA production, nor the serum levels, their relaxation rate, and the schedule, so these defaults
are chosen, and the other defaults lie within the book's ranges. Cells are in billions, quotas in nM, PSA in
ng/mL, and time in days. The PSA starts near its value for the initial quotas.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
AD
|
float
|
The initial androgen-dependent cells. |
15.0
|
AI
|
float
|
The initial androgen-independent cells. |
0.0
|
rm
|
float
|
The maximum proliferation rate. |
0.025
|
q1
|
float
|
The minimum quota of the dependent cells. |
0.3
|
q2
|
float
|
The minimum quota of the independent cells. |
0.15
|
d1
|
float
|
The death rate of the dependent cells. |
0.015
|
d2
|
float
|
The death rate of the independent cells. |
0.015
|
r0
|
float
|
The baseline PSA production per cell. |
0.01
|
r1
|
float
|
The androgen-driven PSA production per dependent cell. |
0.15
|
r2
|
float
|
The androgen-driven PSA production per independent cell. |
0.15
|
n
|
float
|
The steepness of the mutation rates. |
3.0
|
theta
|
float
|
The steepness of the PSA production. |
3.0
|
U0
|
float
|
The normal serum androgen. |
15.0
|
Umin
|
float
|
The serum androgen under therapy. |
0.5
|
du1
|
float
|
The rate at which the serum androgen relaxes. |
0.08
|
period
|
float
|
The time between the starts of therapy periods. |
500.0
|
width
|
float
|
The duration of a therapy period. |
250.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Examples:
>>> from skcomplex.models.biology.oncology import prostate_cell_quota
>>> prostate_cell_quota(q1=0.45).elements[0].q1
0.45
Source code in src/skcomplex/models/biology/oncology/_hormone_therapy.py
394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 | |
radiotherapy_competition(N=0.5, A=0.8, *, r1=0.008, r2=0.4, c1=0.01, c2=0.15, a2=0.2, epsilon=0.001, period=7.0, width=5.0)
Return normal and tumour cells in Lotka-Volterra competition, the tumour irradiated periodically.
The tumour cells outcompete the normal cells without treatment. The irradiation kills tumour cells at the per
capita rate a2 for width days every period days, which takes the tumour below the level at which the normal
cells can invade, so the two coexist, and the radiation that spills over removes normal cells at the rate
epsilon. The book combines a periodic constant dose with the dose proportional to the tumour. A constant dose
drives an eradicated tumour negative, so the periodic dose here is proportional to the tumour. The book gives no
schedule, so the defaults irradiate five days a week. The concentrations are normalized by the carrying
capacities, b1 = b2 = 1, and time is in days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
N
|
float
|
The initial concentration of normal cells. |
0.5
|
A
|
float
|
The initial concentration of tumour cells. |
0.8
|
r1
|
float
|
The growth rate of the normal cells. |
0.008
|
r2
|
float
|
The growth rate of the tumour cells. |
0.4
|
c1
|
float
|
The rate at which the tumour cells suppress the normal cells. |
0.01
|
c2
|
float
|
The rate at which the normal cells suppress the tumour cells. |
0.15
|
a2
|
float
|
The per capita kill rate of the radiation during an irradiation, between 0.01 and 0.2. |
0.2
|
epsilon
|
float
|
The per capita kill rate of the radiation that spills over to the normal cells. |
0.001
|
period
|
float
|
The time between the starts of irradiations. |
7.0
|
width
|
float
|
The duration of an irradiation. |
5.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the normal cells |
Examples:
>>> from skcomplex.models.biology.oncology import radiotherapy_competition
>>> radiotherapy_competition(a2=0.1).elements[0].a2
0.1
Source code in src/skcomplex/models/biology/oncology/_radiotherapy.py
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 | |
sirna_tgf_beta(E=1000.0, A=1000.0, *, alpha=0.035, rho4=300000000.0, psi=1.0, gamma3=1.0, u=0.0, du=0.66)
Return the Kirschner-Panetta model with TGF-beta, which lets the tumour evade the immune system, and siRNA.
TGF-beta lowers the recruitment of effector cells by 1 + gamma1 C2 and the production of IL-2, and raises the
growth of the tumour. Without TGF-beta, rho4 = 0, the effector cells hold the tumour near 1e4 cells. With the
book's production of TGF-beta the tumour escapes to its carrying capacity, and a large enough infusion of siRNA
clears it. Cells are counts, the cytokines are in pg/ml, and time is in days. The other parameters are those of
the book's table. Three decisions fill gaps in the book: the decay of IL-2 is d2 C1, where the book prints
d2 E; the production of TGF-beta is rho4 A^2 / (mu^2 + (1 + psi G^gamma3) A^2); and the book gives no values
for psi, gamma3, or u, so psi = gamma3 = 1 and G is in units where the infusion u is the dose.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
E
|
float
|
The initial number of effector cells. |
1000.0
|
A
|
float
|
The initial number of tumour cells. |
1000.0
|
alpha
|
float
|
The antigenicity of the tumour, per day. |
0.035
|
rho4
|
float
|
The largest production rate of TGF-beta, in pg/ml per day. |
300000000.0
|
psi
|
float
|
The fraction of the siRNA bound to the mRNA. |
1.0
|
gamma3
|
float
|
The exponent of the suppression of the mRNA by the siRNA. |
1.0
|
u
|
float
|
The infusion rate of siRNA, per day. |
0.0
|
du
|
float
|
The decay rate of siRNA, per day. |
0.66
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the effector cells |
Examples:
>>> from skcomplex.models.biology.oncology import sirna_tgf_beta
>>> sirna_tgf_beta(u=1e6).elements[0].u
1000000.0
Source code in src/skcomplex/models/biology/oncology/_gene_viral_therapy.py
128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 | |
skipper_log_kill(n=1000000.0, *, r=0.223, a=2.0, dose=1.0, period=7.0, width=1.0)
Return the log-kill model, an exponentially growing tumour of which every dose kills a fixed fraction.
The tumour follows dn/dt = r n - a n U(t), where the exposure U is dose for width days every period
days. Every dose lowers log n by a dose width, whatever the size, and the tumour regrows between doses. The
growth rate is the exponential fit to breast cancer, per day.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n
|
float
|
The initial number of cells. |
1000000.0
|
r
|
float
|
The growth rate. |
0.223
|
a
|
float
|
The kill rate per unit of exposure. |
2.0
|
dose
|
float
|
The exposure during a dose. |
1.0
|
period
|
float
|
The time between the starts of doses. |
7.0
|
width
|
float
|
The duration of a dose. |
1.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the cells |
Examples:
>>> from skcomplex.models.biology.oncology import skipper_log_kill
>>> skipper_log_kill(period=21.0).interactions[1].period
21.0
Source code in src/skcomplex/models/biology/oncology/_growth.py
258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 | |
stem_cell_differentiation(*, m0=0.005, beta0=5.0, delta=1.0, therapy='continuous', start=100.0, duration=100.0, seed=0)
Return the eight-compartment model of normal and malignant stem-cell lineages with feedback and therapy.
Each lineage runs from quiescent stem cells through progenitors and basal cells to differentiated cells, and
normal progenitors mutate into malignant ones. The mutation rate m1 = m0 (1 + w) carries the random factor w,
which is drawn once per run from the uniform distribution on [0, 1) with the seed. The parameters and the
initial cells are those of the book's table, with beta0 at the top of its range. The book gives no value for
delta, so it defaults to 1, and no times for the pulse of a pulsed therapy. The book prints the death rates
off the pulse as the death rates times the dose, and the model keeps that. Time is in the units of the source.
Under the continuous therapy the lineages settle on a steady state in which the mutation feeds a small malignant
population.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
m0
|
float
|
The mutation rate without the random factor. |
0.005
|
beta0
|
float
|
The feedback constant. |
5.0
|
delta
|
float
|
The weight of the renewal in the death the therapy causes to normal progenitors. |
1.0
|
therapy
|
Literal['none', 'pulsed', 'continuous']
|
The mode of therapy, |
'continuous'
|
start
|
float
|
The time the pulse of a pulsed therapy starts. |
100.0
|
duration
|
float
|
The duration of the pulse of a pulsed therapy. |
100.0
|
seed
|
int
|
The seed of the random factor of the mutation rate. |
0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the normal cells |
Examples:
>>> from skcomplex.models.biology.oncology import stem_cell_differentiation
>>> 0.005 <= stem_cell_differentiation(seed=1).elements[0].m1 < 0.01
True
Source code in src/skcomplex/models/biology/oncology/_stem_cells.py
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 | |
step_table(classes, step, fields=1)
Return the transition table that moves a candidate one class up or down, staying at the end classes.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
classes
|
int
|
The number of activity classes of the candidate. |
required |
step
|
int
|
|
required |
fields
|
int
|
The number of activity classes of the field. |
1
|
Returns:
| Name | Type | Description |
|---|---|---|
table |
NDArray[float64]
|
The transition table |
Examples:
>>> from skcomplex.models.biology.oncology import step_table
>>> step_table(3, -1)[:, 0].tolist()
[[1.0, 0.0, 0.0], [1.0, 0.0, 0.0], [0.0, 1.0, 0.0]]
Source code in src/skcomplex/models/biology/oncology/_immune_competition.py
43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 | |
tamoxifen_cell_cycle(Ag=900.0, As=50.0, Am=50.0, *, u=12.5, a1=0.0062, a2=0.01)
Return a breast tumour in Gompertzian cell-cycle phases under daily tamoxifen and its active metabolite.
The cells pass from the growth phase through synthesis to mitosis and divide back into the growth phase, at
rates that slow as the tumour approaches Asat. Tamoxifen is absorbed from the gut into the plasma, where it is
metabolized into 4-hydroxytamoxifen, and both kill cells in the growth phase, the metabolite 25 times more. They
also kill circulating lymphocytes, which stay at s / d1 without the drug. The book gives no infusion rate, so the
default u is 300 μg a day, given continuously. Volumes are in mm³, drug masses in μg, concentrations in
μg/mL, lymphocytes in millions, and time in hours.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
Ag
|
float
|
The initial volume of cells in the growth phase. |
900.0
|
As
|
float
|
The initial volume of cells in the synthesis phase. |
50.0
|
Am
|
float
|
The initial volume of cells in mitosis. |
50.0
|
u
|
float
|
The infusion rate of tamoxifen. |
12.5
|
a1
|
float
|
The kill rate of the tumour per unit of drug. |
0.0062
|
a2
|
float
|
The kill rate of the lymphocytes per unit of drug. |
0.01
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the phases |
Examples:
>>> from skcomplex.models.biology.oncology import tamoxifen_cell_cycle
>>> tamoxifen_cell_cycle(u=0.0).elements[0].u
0.0
Source code in src/skcomplex/models/biology/oncology/_hormone_therapy.py
851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 | |
tcr_gene_therapy(E=1000.0, A=1000.0, *, s=1.0, alpha=0.05, d1=0.03, r1=0.1245, g1=0.001, r2=0.18, b=1e-09, a=1.0, g2=100000.0)
Return the predator-prey model of a gene therapy that lets the T cells recognise the tumour.
The effector cells follow dE/dt = s + alpha A - d1 E + r1 E / (E + g1) and the tumour cells
dA/dt = r2 A (1 - b A) - a E A / (A + g2). The book takes the time-varying influx, antigenicity, growth, and
kill as constants. Cells are counts and time is in days. The tumour and the effector cells oscillate in damped
cycles and settle on a dormant tumour far below its carrying capacity.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
E
|
float
|
The initial number of effector cells. |
1000.0
|
A
|
float
|
The initial number of tumour cells. |
1000.0
|
s
|
float
|
The influx rate of effector cells, per day. |
1.0
|
alpha
|
float
|
The antigenicity of the tumour, per day. |
0.05
|
d1
|
float
|
The death rate of effector cells, per day. |
0.03
|
r1
|
float
|
The proliferation rate of effector cells, per day. |
0.1245
|
g1
|
float
|
The half-saturation constant of the proliferation of effector cells. |
0.001
|
r2
|
float
|
The growth rate of tumour cells, per day. |
0.18
|
b
|
float
|
The reciprocal carrying capacity of tumour cells, per cell. |
1e-09
|
a
|
float
|
The kill rate that the therapy gives the effector cells, per day. |
1.0
|
g2
|
float
|
The half-saturation constant of the kill, in cells. |
100000.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the effector cells |
Examples:
>>> from skcomplex.models.biology.oncology import tcr_gene_therapy
>>> tcr_gene_therapy().elements[0].g2
100000.0
Source code in src/skcomplex/models/biology/oncology/_gene_viral_therapy.py
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | |
tumour_angiogenesis(width=40, height=25, *, n_sprouts=5, radius=2, chemotaxis=30.0, random_state=0)
Return a tumour that outgrows its oxygen supply and recruits new blood vessels from a parent vessel.
The scales are coupled: tumour cells and vessel tips are agents on a grid, and oxygen and VEGF are fields on a lattice of the same shape. The tumour starts far from the parent vessel along the left edge, so its cells become hypoxic and secrete VEGF, which draws tips out of the vessel. The new vessels bring oxygen and the tumour grows.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
width
|
int
|
The number of columns. |
40
|
height
|
int
|
The number of rows. |
25
|
n_sprouts
|
int
|
The number of tips on the parent vessel. |
5
|
radius
|
int
|
The radius of the initial tumour, centred three quarters of the way to the right. |
2
|
chemotaxis
|
float
|
How strongly VEGF draws the tips. |
30.0
|
random_state
|
int | Generator | None
|
The seed or generator of the positions of the tips. |
0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the agents |
Examples:
>>> from skcomplex.models.biology.oncology import tumour_angiogenesis
>>> [group.label for group in tumour_angiogenesis().systems[0].elements]
['tumour', 'vessels', 'sprouts']
Source code in src/skcomplex/models/biology/oncology/_angiogenesis.py
222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 | |
tumour_immune_suppression(*, alpha_a=0.001, r1=0.333, r2=333.0, EMC=10000.0, EMH=10000.0, EMR=10000.0)
Return a tumour against dendritic, cytotoxic, helper, and regulatory T cells with IL-2, IL-10, and TGF-beta.
A tumour of one cell grows exponentially, then as a power of its size, and only its accessible fraction is killed.
Its antigen matures dendritic cells, which recruit T cells from the memory pools, and the regulatory cells with
IL-10 and TGF-beta suppress the response. A weakly antigenic tumour escapes, a moderately antigenic one oscillates,
and a strongly antigenic one is held to a few cells. The book's growth rows are garbled, and the exponential rate
is read as 0.333 per day and the power coefficient as 333 cells^(1/2) per day, within the book's range 100 to
1000, so the growth turns from exponential to power at 10^6 cells. The book gives no memory pools, which are
taken as constant at 10^4 cells each. The other parameters are the book's, the initial immune cells are
10^-5, cells are counts, cytokines in ng/ml, and time in days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
alpha_a
|
float
|
The antigenicity of the tumour, in the book's range |
0.001
|
r1
|
float
|
The exponential growth rate of the tumour. |
0.333
|
r2
|
float
|
The power growth coefficient of the tumour. |
333.0
|
EMC
|
float
|
The memory cytotoxic T cells. |
10000.0
|
EMH
|
float
|
The memory helper T cells. |
10000.0
|
EMR
|
float
|
The memory regulatory T cells. |
10000.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the tumour |
Examples:
>>> from skcomplex.models.biology.oncology import tumour_immune_suppression
>>> tumour_immune_suppression(alpha_a=1.0).elements[0].alpha_a
1.0
Source code in src/skcomplex/models/biology/oncology/_immunotherapy.py
744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 | |
vascular_core_periphery(*, Vx=0.005, xi_e=0.8, du=INHIBITOR_CLEARANCE, dose=5.0, period=7.0, width=1.0, start=0.0)
Return a tumour with a live core, a live periphery, and a necrotic core, each fed by its own vasculature.
The radius grows once the periphery is dense, cells pass from the periphery to the core as it grows, and core cells
die when the core vasculature is too sparse. Starved cells release angiogenic factor, which grows both vascular
compartments, and the inhibitor lowers the angiogenesis by exp(-xi_e U). The book writes the radius, core
volume, and tumour volume as increments. They are read as rates, so the increment of the radius is dAr/dt and
the others follow from it per unit time, which is how the bi-compartmental model of Csercsik et al. advances. The
book does not give the density Vx of the surrounding vasculature, which is set to the reference vascular fraction
rv_ref, nor a schedule, which is a one-day infusion of 5 mg/kg/day every week. The other parameters and the
initial state are the book's, the clearance du is log(2) / 3.9 per day, lengths are in mm, volumes in mm³,
time in days, and the inhibitor in mg/kg.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
Vx
|
float
|
The vascular density of the surrounding tissue. |
0.005
|
xi_e
|
float
|
The efficiency of the inhibitor. |
0.8
|
du
|
float
|
The clearance rate of the inhibitor. |
INHIBITOR_CLEARANCE
|
dose
|
float
|
The infusion rate during a dose, 0 for no treatment. |
5.0
|
period
|
float
|
The time between the starts of doses. |
7.0
|
width
|
float
|
The duration of a dose. |
1.0
|
start
|
float
|
The time of the first dose. |
0.0
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the radius |
Examples:
>>> from skcomplex.models.biology.oncology import vascular_core_periphery
>>> vascular_core_periphery(dose=0.0).elements[0].dose
0.0
Source code in src/skcomplex/models/biology/oncology/_antiangiogenic.py
157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 | |
von_bertalanffy(n=1.0, *, r=2.32, p=0.918, d=0.808)
Return a tumour that grows by the balance of anabolism and catabolism, dn/dt = r n^p - d n.
The volume tends to (r / d)^(1/(1-p)). The defaults are the fit to breast cancer volumes in mm³ and days.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
n
|
float
|
The initial volume. |
1.0
|
r
|
float
|
The growth rate. |
2.32
|
p
|
float
|
The exponent of the growth, below 1. |
0.918
|
d
|
float
|
The loss rate. |
0.808
|
Returns:
| Name | Type | Description |
|---|---|---|
system |
System
|
The model, with the volume |
Examples:
>>> from skcomplex.models.biology.oncology import von_bertalanffy
>>> von_bertalanffy().interactions[1].d
0.808
Source code in src/skcomplex/models/biology/oncology/_growth.py
98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | |