Deterministic Compartment Model

radcomp.solve_dcm_from_toml(filepath: str, t_eval: ndarray, prelayer: Prelayer | None = None) DetCompModelSol

Solve a deterministic compartment model from a TOML configuration file (except for a possible prelayer).

For more information about the model or how to format the TOML file, see https://github.com/jakeforster/radcomp/blob/main/README.md.

Parameters:
  • filepath (str) – Filepath to TOML configuration file.

  • t_eval (np.ndarray) – Times (h) at which to solve the model. Must be sorted (ascending).

  • prelayer (Optional[Prelayer]) – Input time-activity curves for a nuclide that is able to transition to one or more layers in the model.

Returns:

Solution for the model.

Return type:

DetCompModelSol

radcomp.solve_dcm(trans_rates: ndarray, branching_fracs: ndarray, xfer_coeffs: ndarray, initial_nuclei: ndarray, t_eval: ndarray, prelayer: Prelayer | None = None, layer_names: list[str] | None = None, compartment_names: list[str] | None = None) DetCompModelSol

Solve a deterministic compartment model.

For more information about the model, see https://github.com/jakeforster/radcomp/blob/main/README.md.

Parameters:
  • trans_rates (numpy.ndarray) – Transition rates (h-1) of nuclides in layers. Shape (num_layers,).

  • branching_fracs (numpy.ndarray) – Branching fractions (0 to 1). Shape (num_layers, num_layers). Element [i, j] is for layer j to layer i.

  • xfer_coeffs (numpy.ndarray) – Transfer coefficients (h-1) between compartments. Shape (num_layers, num_compartments, num_compartments). Element [i, j, k] is for compartment k to compartment j in layer i.

  • initial_nuclei (numpy.ndarray) – Number of nuclei in each compartment in each layer at first element of t_eval. Shape (num_layers, num_compartments). Element [i, j] is for layer i, compartment j.

  • t_eval (numpy.ndarray) – Times (h) at which to solve the model. Must be sorted (ascending).

  • prelayer (Optional[Prelayer]) – Input time-activity curves for a nuclide that is able to transition to one or more layers in the model.

  • layer_names (Optional[list[str]]) – Names of layers in model.

  • compartment_names (Optional[list[str]]) – Names of compartments in model.

Returns:

Solution for the model.

Return type:

DetCompModelSol

class radcomp.DetCompModelSol(trans_rates: ndarray, branching_fracs: ndarray, xfer_coeffs: ndarray, t_eval: ndarray, prelayer: Prelayer | None, layer_names: list[str] | None, compartment_names: list[str] | None, num_layers: int, num_compartments: int, nuclei: ndarray)

Bases: object

Holds the solution for a deterministic compartment model.

Provides some convenient functions to inspect the model and its solution.

NB. Users should not create an instance of this class directly; use the functions solve_dcm() or solve_dcm_from_toml() to get an instance.

Parameters:
  • trans_rates (numpy.ndarray) – Transition rates (h-1) of nuclides in layers. Shape (num_layers,).

  • branching_fracs (numpy.ndarray) – Branching fractions (0 to 1). Shape (num_layers, num_layers). Element [i, j] is for layer j to layer i.

  • xfer_coeffs (numpy.ndarray) – Transfer coefficients (h-1) between compartments. Shape (num_layers, num_compartments, num_compartments). Element [i, j, k] is for compartment k to compartment j in layer i.

  • t_eval (numpy.ndarray) – Times (h) at which to solve the model. Must be sorted (ascending).

  • prelayer (Prelayer | None) – Input time-activity curves for a nuclide that is able to transition to one or more layers in the model.

  • layer_names (list[str] | None) – Names of layers in model. Length num_layers.

  • compartment_names (list[str] | None) – Names of compartments in model. Length num_compartments.

  • num_layers (int) – Number of layers in model (excluding any prelayer).

  • num_compartments (int) – Number of compartments in model.

  • nuclei (numpy.ndarray) – Shape (num_layers, num_compartments, len(t_eval)). The solution. Element [i, j, k] is the number of nuclei in layer i, compartment j at element k of t_eval.

activity() ndarray

Activities (MBq) at times in t_eval.

Returns:

Shape (num_layers, num_compartments, len(t_eval)). Element at index [i, j, k] is the activtiy (MBq) in layer i, compartment j at element k of t_eval.

Return type:

numpy.ndarray

branching_fracs: ndarray
compartment_names: list[str] | None
cumulated_activity() ndarray

Cumulated activity (MBq h) during t_eval.

Returns:

Shape (num_layers, num_compartments). Element at index [i, j] is the cumulated activity (MBq h) in layer i, compartment j during t_eval.

Return type:

numpy.ndarray

halflife() ndarray

Half-lives (h) of nuclides in layers.

Stable nuclides are assigned a half-life of numpy.inf.

Returns:

Shape (num_layers,). Element at index i is the half-life (h) of nuclide in layer i.

Return type:

numpy.ndarray

info_growth() str

Get information about the growth of nuclides in layers.

Returns:

Information.

Return type:

str

info_xfer() str

Get information about transfer coefficients between compartments.

Returns:

Information.

Return type:

str

layer_names: list[str] | None
nuclei: ndarray
num_compartments: int
num_layers: int
plot() None

Produce plots of time-activity curves or time-nuclei curves.

prelayer: Prelayer | None
save_arrays(filepath: str) None

Save the solution to npz file.

The saved arrays t_eval, nuclei, and the return of activity(). The function read_arrays() can be used to read an npz file created using this method.

Parameters:

filepath (str) – Filepath of npz file to be created. Must end with “.npz”.

t_eval: ndarray
trans_rates: ndarray
xfer_coeffs: ndarray