Symbolic Matrix-Based Models
Provides an API to define epidemiological models in terms of sympy symbolic expressions based on a matrix description.
- class epipack.symbolic_matrix_epi_models.SymbolicMatrixEpiModel(compartments, initial_population_size=1, correct_for_dynamical_population_size=False)[source]
Bases:
SymbolicMixin,MatrixEpiModelA general class to define standard mean-field compartmental epidemiological model.
- compartments
A list containing strings that describe each compartment, (e.g. "S", "I", etc.).
- linear_rates
Matrix containing transition rates of the linear processes.
- Type
sympy.Matrix
- quadratic_rates
List of matrices that contain transition rates of the quadratic processes for each compartment.
- Type
list of sympy.Matrix
- affected_by_quadratic_process
List of integer compartment IDs, collecting compartments that are affected by the quadratic processes
Example
>>> epi = SymbolicMatrixEpiModel(symbols("S I R")) >>> print(epi.compartments) [ S, I, R ]
- set_linear_rates(rate_list, reset_rates=True, allow_nonzero_column_sums=True)[source]
Define the linear transition rates between compartments.
- Parameters
A list of tuples that contains transitions rates in the following format:
[ ( acting_compartment, affected_compartment, rate ), ... ]
allow_nonzero_column_sums (
bool, default : False) -- This keyword has no function in this classreset_rates (bool, default : True) -- Whether to reset all linear rates to zero before setting the new ones.
- set_quadratic_rates(rate_list, reset_rates=True, allow_nonzero_column_sums=False)[source]
Define the quadratic transition processes between compartments.
- Parameters
A list of tuples that contains transitions rates in the following format:
[ ("coupling_compartment_0", "coupling_compartment_1", "affected_compartment", rate ), ... ]
allow_nonzero_column_sums (
bool, default : False) -- This keyword has no function in this classreset_rates (bool, default : True) -- Whether to reset all quadratic rates to zero before setting the new ones.
Example
For an SEIR model.
epi.set_quadratic_rates([ ("S", "I", "S", -1 ), ("S", "I", "E", +1 ) ])
Read as
"Coupling of S and I leads to a reduction in "S" proportional to \(S\times I\) and rate -1/time_unit. Furthermore, coupling of S and I leads to an increase in "E" proportional to \(S\times I\) and rate +1/time_unit."
- class epipack.symbolic_matrix_epi_models.SymbolicMatrixSIModel(infection_rate, initial_population_size=1)[source]
Bases:
SymbolicMatrixEpiModelAn SI model derived from
epipack.symbolic_epi_models.SymbolicMatrixEpiModel.
- class epipack.symbolic_matrix_epi_models.SymbolicMatrixSIRModel(infection_rate, recovery_rate, initial_population_size=1)[source]
Bases:
SymbolicMatrixEpiModelAn SIR model derived from
epipack.symbolic_epi_models.SymbolicMatrixEpiModel.
- class epipack.symbolic_matrix_epi_models.SymbolicMatrixSIRSModel(infection_rate, recovery_rate, waning_immunity_rate, initial_population_size=1)[source]
Bases:
SymbolicMatrixEpiModelAn SIRS model derived from
epipack.symbolic_epi_models.SymbolicMatrixEpiModel.
- class epipack.symbolic_matrix_epi_models.SymbolicMatrixSISModel(infection_rate, recovery_rate, initial_population_size=1)[source]
Bases:
SymbolicMatrixEpiModelAn SIS model derived from
epipack.symbolic_epi_models.SymbolicMatrixEpiModel.