Next Article in Journal
Cidofovir for the Treatment of Molluscum Contagiosum Virus
Next Article in Special Issue
Biophysical Properties of Bifunctional Phage-Biosensor
Previous Article in Journal
Detection of Torquetenovirus and Redondovirus DNA in Saliva Samples from SARS-CoV-2-Positive and -Negative Subjects
Previous Article in Special Issue
Analysis of Compositional Bias in a Commercial Phage Display Peptide Library by Next-Generation Sequencing
 
 
Font Type:
Arial Georgia Verdana
Font Size:
Aa Aa Aa
Line Spacing:
Column Width:
Background:
Article

Cocktail, a Computer Program for Modelling Bacteriophage Infection Kinetics

by
Anders S. Nilsson
Department of Molecular Biosciences, The Wenner-Gren Institute, Stockholm University, SE-106 91 Stockholm, Sweden
Submission received: 30 September 2022 / Revised: 27 October 2022 / Accepted: 3 November 2022 / Published: 9 November 2022
(This article belongs to the Special Issue State-of-the-Art Bacteriophage Research in the Nordic Countries)

Abstract

:
Cocktail is an easy-to-use computer program for mathematical modelling of bacteriophage (phage) infection kinetics in a chemostat. The infection of bacteria by phages results in complicated dynamic processes as both have the ability to multiply and change during the course of an infection. There is a need for a simple way to visualise these processes, not least due to the increased interest in phage therapy. Cocktail is completely self-contained and runs on a Windows 64-bit operating system. By changing the publicly available source code, the program can be developed in the directions that users see fit. Cocktail’s models consist of coupled differential equations that describe the infection of a bacterium in a vessel by one or two (interfering) phages. In the models, the bacterial population can be controlled by sixteen parameters, for example, through different growth rates, phage resistance, metabolically inactive cells or biofilm formation. The phages can be controlled by eight parameters each, such as different adsorption rates or latency periods. As the models in Cocktail describe the infection kinetics of phages in vitro, the program is primarily intended to generate hypotheses, but the results can however be indicative in the application of phage therapy.

1. Introduction

The ability of bacteriophages to kill bacteria has attracted increased interest in recent times. This is probably partly due to reports from clinics where they have been used for decades as bactericidal agents in the treatment of various infections, so-called phage therapy, but more recently also to a large number of studies of isolated phages (short for bacteriophages) which in laboratory experiments have been shown to be able to effectively kill bacteria in vitro, including antibiotic-resistant strains [1,2]. The increasing interest has also led to experimental treatments of severe infections, being carried out at other clinics than where they have traditionally been used for a long time [3,4]. The outcomes of clinical treatments are nevertheless difficult to predict, depending on many factors. Both bacteria and phages show an enormous variation between different clones and can change during the course of treatment, which together with largely unknown pharmacokinetics and pharmacodynamics results in treatments not being comparable and the effect of a certain treatment not being predictable. Although the variation between clinical experiments is very large, the combined results of them suggest that there is reason to continue studying how phage treatments against bacterial infections can be optimised.
A large number of mathematical models have been developed to study the dynamics between host organisms and their parasites, and bacteria–phages are no exception. Depending on the question, models use everything from evolutionary game theory (EGT), for example, on the evolution of the life cycle of phages, or networks of bacteria’s genetic changes after a bacteriophage infection (flux-balance analysis, FBA), but the most common bacteria–bacteriophage models are reaction kinetic models [5] (and references therein). These models essentially consist of coupled differential equations that describe the changes in the bacterial and bacteriophage population sizes over time in a vessel given a set of parameters. In their simplest form, the models describe the titre of susceptible, infected and resistant bacteria (classic SIR models) as well as the titre of the infecting bacteriophage. As mentioned above, bacteria and phages are self-replicating entities that can both change genetically, in the case of bacteria also phenotypically, through altered transcription [6,7]. Although simple models can provide valuable information, many models are more elaborate (for a review, see [8]). Several authors have contributed to the development of models that describe the dynamics of systems with, for example, more than one type of virulent bacteriophage, the formation of protective biofilms by bacteria or degradation of phages [9,10,11,12,13]. If models are also to be able to describe the dynamics in vitro, for example, during phage therapy of a human bacterial infection, it is also necessary to take into account the additional complexities that arise in interaction with human tissues and cells, for example, synergies between the immune system and phages, in the killing of bacteria or neutralisation of phages and phagocytosis by macrophages [14,15,16,17]. However, many of these in vitro interactions are still largely unknown in detail [18].
The purpose of the Cocktail program is to model the infection dynamics of one, or a combination of two, phage(s) infecting a bacterial species under varying relevant parameter settings, and in the latter case, to some extent, the interference between two phages infecting at the same time. The aim is to supply an easier way to carry out modelling in phage infection biology, e.g., for a better understanding of the complex dynamics during phage therapy. Although the program is easy to use, the most important parameters are included. The mathematical models are based on the basic models described, for example, by Levin et al. [10], Gill [13], Lenski [19], or Levin and Bull [20] and some of the additions discussed by Abedon [11]. It is thus possible in the program to also study the effect of metabolically inactive cells or biofilm formation as well as the decay of bacteria and phages, analogous to the action of an immune response (Figure 1).
As with all models, there has to be a balance between reality and generality. Hence, it is important to stress that some parameters, e.g., temperature, pH, release of nutrients from lysed bacteria or phages binding to cell debris, are not included in the program and others, e.g., modelling of the dynamics of an immune defence or cells in biofilm, are simplified. Therefore, the program should be seen as a tool for inducing hypotheses about the population dynamics of bacteria and phages during a phage infection and not exact predictions. This is especially important to stress regarding phage therapy experiments. The program does not consider the in vitro pharmacokinetics and pharmacodynamics of phages. Hypotheses will always need to be tested experimentally. Mathematical modelling of phage infection in a chemostat may however set boundaries to what can be expected while it can reflect the dynamics under ideal conditions (e.g., constant nutrient supply and agitation).
The following information describes the models and calculations in more detail. The basic condition is a bacterial population, growing in a vessel in a constant volume of nutrient, which can become infected by phages at varying titres and times. Although the volume is constant in such a chemostat, there could be an inflow and outflow of nutrients, and an outflow of bacteria and phages.

2. Materials and Methods

An overview of symbols used for all bacteria, phages and parameters can be found in Table 1. In the program, values can in general be given with three significant digits. If the input should be an integer, it can be given either as that or in scientific notation, e.g., 1,000,000 or 1.0 × 106. Real numbers should be given either in decimal or scientific format with a point as the decimal separator. If the wrong format is used, values are auto corrected in most cases. Hovering with the mouse pointer above a box displays a hint on which values can be given. The tab key can be used for jumping between boxes and it is also possible to use the up and down arrows in some boxes to increase or decrease values in fixed steps. Please note that some parameter values should be given per hour and others per minute, as shown by the default values (Table 1). Additionally, note that many parameters are represented with their average values despite in reality being distributed in time or size, e.g., the latent period will vary from cell to cell and not all cells will generate the same burst size (produce exactly the same number of phages).

2.1. Bacteria

For most bacteria, the rate of growth mainly depends on the concentration of nutrients (physical factors, e.g., temperature and the presence of various gases are of course also important). In a closed system, while nutrients are consumed by the bacteria, their concentration decreases and growth slows. Seen over time, in such cases the bacterial growth becomes a logistic function of the concentration of nutrients. One of the most widely used relationships between growth rate and nutrient concentration was formulated by Monod [21]; the growth of bacteria depends on three parameters, µ = µmax × s/(Ks + s) where the growth rate, µ, is a function of the maximum growth rate, µmax, a constant, K, and the concentration of nutrients, s. This is also the basic growth function in the Cocktail program where most parameter symbols and default parameter settings are taken from Lenski [19] (Table 1). In the program, the max growth rate per hour is denoted as ψ, a real number between 0 and 1.5 and the Monod half-saturation constant, K in µg/mL, is a real number between 0.01 and 100. The reason for allowing this large span is the observed variation among strains and experimental conditions when assessing the half-saturation constant, but the values are usually between 0.1 and 10 µg/mL [22]. The concentration of nutrients varies in a chemostat while the nutrients are consumed by bacteria and where there is an inflow and outflow. It is denoted C in the program and the concentration of nutrients over time equation is described in more detail below. While mutated bacteria may suffer from reduced fitness, the growth rate of bacteria that have become resistant to either one or both phages can be entered separately. Bacteria can become resistant to phage infection by mutation but only at cell division when new cells are produced. The mutation rates should also be written as decimal numbers or in scientific notation. Note that bacteria becoming resistant to both phages, A and B, occurs at a rate being the product of the rate of mutation to resistance against A and B, respectively, and does not need to be specified. It is also possible that the starting population of bacteria may contain resistant bacteria to either one or both phages. These frequencies are also entered either as decimal numbers or in scientific notation as above.
Bacteria can also decay from natural causes, and not just die from a phage infection. In an in vitro situation, this would be, e.g., from neutralisation by antibodies or phagocytosis. This results in an exponential decay Nt = N0 × e−γt where N0 is the number of bacteria at time 0 and Nt at time t and γ is the decay rate constant. The decay is calculated as Nt+1 = Nt − (Nt × γ) in the equations below while this equals N0 × e−γt. γ is quite small for bacteria growing in a chemostat, half of the population has decayed at t = ln(2)/γ, and values of γ is generally around 0.02 per hour in nature [23,24]. The decay rate per hour, γ, should be given as a real number between 0 and 1. Note that new bacteria resulting from cell division each generation is excluded from decay.

2.2. Resources

The addition of nutrition is necessary for the growth of bacteria. The concentration of nutrients is regulated by the flow into and out of the system at a rate of ω turnovers/hour. The starting concentration, C0 in µg/mL, can be set independently from the concentration of nutrients continuously flowing into the system, C in µg/mL. The flow in and out of the system causes dynamic changes in the system while it is not just nutrients flowing out but also bacteria and phages. The conversion efficiency, the resources used by one dividing cell, is denoted as ε and given in µg/cell as a decimal number or in scientific notation, e.g., 1.0 × 10−6. The equation for dC/dt is shown below in the following text.

2.3. Phages

Two virulent phages, A and B, can infect the bacterial population in different titres, adsorption rates, and at different times while it is possible to let the bacterial population grow for some time and add phages at three different time points. As with the bacteria, phages can decay and be washed out of the system. Phages inactivated by binding to lysed cell debris cannot be entered separately but must be included in the decay. Phage populations grow by two additional parameters. When the latent period comes to an end, infected bacteria burst open producing the burst size number of phages. Note that a fast phage of one type, e.g., A, infecting a bacterium already infected with a slower phage, e.g., B, will produce only type A phages if its latent period is shorter than the remaining time of phage B’s latent period. If only one phage is chosen to infect, the added titre of the other phage should be set to 0. Additionally, if one wants to study a nonproductive infection, the burst size should be set to zero.

2.4. Model Settings

A phage infection starts with the adsorption of the phage to receptors on the bacterial surface. The adsorption can be set to happen by different mathematical models described in the following text. In short, phages can adsorb one by one per unit time as described in the primary adsorption “Standard” model below or several phages at once per unit time according to the Poisson probability of infection. The “Poisson” setting hence allows for multiple adsorption proportional to the multiplicity of infection. It is also possible to adjust both models to allow adsorption to uninfected and non-resistant cells only or to all susceptible and non-resistant cells irrespective if they have already been infected. These secondary adsorption alternatives are chosen with the settings “Uninfected” or “Susceptible”. An overview over which types of cells that get adsorbed and infected by which phages is given in Table 2. Details and the mathematical background to all models is given in the text that follows.

2.4.1. Primary Adsorption: Standard Model

Bacteria can divide and the population grow, but bacteria can also decay, be completely resistant or mutate to resistance against phage infection (Section 2.4.3), hide in a refuge (Section 2.4.4) as well as become infected by phages and lyse from the infection. In the Cocktail program, this results in the possibility of thirteen types of bacteria being present in the system at the same time (Table 1). As mentioned, phages A and B can infect at different times and by different adsorption rates, and after varying latent periods lyse infected bacteria resulting in a burst of phages of different size. Bacteria and phages can both flow out of the system. Starting with the concentration of nutrients, this results in the following basic equations:
d C d t = C 0 C ω ε N ψ C K + C
The first Equation (1) describes the nutrient content in the system over time where C is the concentration of nutrient in µg/mL (C0 is the start concentration), ω is the flow rate in turnovers/h, ε is the resource consumption by one bacterium in µg/cell and ψ is the specific growth rate of bacteria per hour. N stands for the S and R types of bacteria (S, RA, RB, RAB) as the infected bacteria are supposed to cease both to consume nutrients and to divide. K is the Monod half-saturation constant in µg/mL (the concentration of nutrients resulting in half the maximum growth of the bacteria). For simplicity, ε and K are the same for all dividing bacteria, but ψ can vary and be different for phage-resistant bacteria.
d S d t = S ψ S C K + C ( μ A + μ B + μ A B ) S ψ S C K + C + ρ S r σ S γ S δ A S A δ B S B ω S
This second Equation (2) describes the growth and losses of susceptible bacteria. The losses over time are due to bacteria mutating to become resistant against phage A or B or both at a specific rate of μ per cell division (µAB is calculated as µA × µB). This means that it is only divided bacteria that mutate. Bacteria can also move into a refuge population, Sr, at a rate of σ where they may or may not be adsorbed by phages, and move out of the refuge at a rate of ρ. Bacteria can also decay or be neutralised at a rate γ, becoming infected by phages at the adsorption rate δ, and finally be washed out of the system at a rate of ω. The equations for phage-resistant bacteria become:
d R A d t = R A ψ R A C K + C + μ A S + ρ R r A σ R A γ R A μ B R A δ B R A B ω R A
d R B d t = R B ψ R B C K + C + μ B S + ρ R r B σ R B γ R B μ A R B δ A R B A ω R B
d R A B d t = R A B ψ R A B C K + C + μ A B S + ρ R r A B σ R A B γ R A B + μ A R B + μ B R A ω R A B
Phage resistance is intended to result in complete blocking of adsorption by the phage. Hence, a bacterium resistant to phage A can mutate to become resistant to phage B as well but also be infected by phage B, and vice versa. Needless to say, a bacterium resistant to both phages (Equation (5)) cannot become infected at all.
Infected bacteria (Equations (6)–(8)) are thought not to consume resources or divide and not to be part of the refuge population of cells. Cells in the refuge (see Equations (26) and (27) below) is simulating the presence of either metabolically inactive cells or cells in biofilm and inhibited phage propagation. Phages can however adsorb to different classes of bacteria depending on the secondary adsorption mode setting. In the “Uninfected” setting, phages are adsorbing to uninfected bacteria only, which is common in basic mathematical models, where phage A adsorbs only to S, IB, and RB. In the “Susceptible” setting, on the other hand, phages are allowed to adsorb to already-infected bacteria as well, i.e., A adsorbs to S, IA, IB, IAB, RB and RBIA (referred to as secondary adsorption [11]). In addition to this, A can also adsorb to the Sr and RrB cells in the refuge if the “Standard” primary adsorption model is applied, the “Planktonic” mode is set and the rate of cells in and out of the refuge are given values. Phage B adsorbs to Sr and RrA as well with this setting. Cells in the refuge will however not be infected, only adsorbed by phages.
d I A d t = δ A S A γ I A δ B I A B I A t l A ω I A
d I B d t = δ B S B γ I B δ A I B A I B t l B ω I B
d I A B d t = δ A I B A + δ B I A B γ I A B I A B t l B I A B t l A ω I A B
The expressions I A t l A , I B t l B , I A B t l B and I A B t l A , part of the delayed differential Equations (6)–(8), are all describing the loss of infected bacteria due to lysis, after the latency time lA or lB. A bacterium simultaneously infected by two phages will lyse at time lA if the latency of phage A is shorter than the latency time for phage B, lB. This results in that I A B t l B becomes zero for a bacterium when I A B t l A becomes positive. One of I A B t l A and I A B t l B subsequently always becomes zero. A bacterium infected with phage B at time tB and superinfected with phage A at time tA will lyse and produce phages of type A only if tA + lA is shorter than the remaining time to lysis caused by phage B, i.e., tA + lA < tA + lA − tB + lB = tA < tA − tB + lB. This means that in an infection with both phages, A and B will interfere with each other and not produce the number of phages expected from single and separate infections by A or B. Other interference between phages, e.g., by actively impeding the other phage’s transcription or replication, is not considered.
Finally, bacteria that are resistant to infections by one phage can become infected with the other phage (Equations (9) and (10)).
d R B I A d t = δ A R B A γ R B I A δ A R B I A t l A ω R B I A
d R A I B d t = δ B R A B γ R A I B δ B R A I B t l B ω R A I B
Titres of phages A and B can grow through the release of phages from all types of infected bacteria (13 and 14). After the phage specific latency periods mentioned above, each bacterial cell gives rise to the number of phages equal to the phage’s burst size, β. Phages will be lost by adsorption to the bacteria mentioned above, and adsorbed phages representing phages bound to bacteria, is denoted PA and PB, respectively (11 and 12). Phages can also decompose at a rate of φ, and be washed out at a rate of ω. With the no secondary adsorption “Uninfected” setting:
P A = δ A A S + I B + R B   and   P B = δ B B S + I A + R A
Additionally, with the “Susceptible” setting:
P A = δ A A S + I B + R B + I A + I A B + R B I A and P B = δ B B S + I A + R A + I B + I A B + R A I B
The change in phage titres will hence be:
d A d t = β A I A t l A + I A B t l A + R B I A t l A P A φ A A ω A
d B d t = β B I B t l B + I A B t l B + R A I B t l B P B φ B B ω B

2.4.2. Secondary Adsorption: Poisson

Only uninfected bacteria can be infected by phages in the “Standard” model with the “Secondary adsorption Uninfected” setting ( δ A S A in the equations). This is in many cases a good approximation but neglects that several phages may adsorb to a single bacterial cell, assuming that the number of cell receptors is not limited, i.e., multiple adsorption [11]. Phages adsorbed to cells will follow Poisson probabilities. While more phages per bacterium can infect, this is referred to as MOIactual in contrast to MOIinput [11,25]. Bound phages will hence be:
P t + 1 = 1 e δ M t P t
Here, P is the titre of phages and M is the sum of all bacteria that can be adsorbed by a particular phage. These are denoted MA for phage A and are bacteria S, IB, and RB, in the “Uninfected” adsorption mode and S, IA, IB, IAB, RB and RBIA with the “Susceptible” setting, i.e., the same sets of bacteria as in the “Standard” primary adsorption model. MB is accordingly bacteria S, IA, and RA, and S, IB, IA, IAB, RA and RAIB, respectively. While more phages than one may adsorb to a cell, infected bacteria will equal:
I t + 1 = ( 1 e P t M t ) M t
Taking Equation (16) into account, the equations describing the change in uninfected bacterial titres (17–19) will have to change to:
d S d t = S ψ S C K + C ( μ A + μ B + μ A B ) S ψ S C K + C + ρ S r σ S γ S ( ( 1 e P A M A ) M A ) ( ( 1 e P B M B ) M B ) ω S
The equations for resistant bacteria will change accordingly:
d R A d t = R A ψ R A C K + C + μ A S + ρ R r A σ R A γ R A μ B R A ( ( 1 e P B R A ) R A ) ω R A
d R B d t = R B ψ R B C K + C + μ B S + ρ R r B σ R B γ R B μ A R B ( ( 1 e P A R B ) R B ) ω R B
d R A B d t = R A B ψ R A B C K + C + μ A B S + ρ R r A B σ R A B γ R A B + μ A R B + μ B R A ω R A B
If the infection is by the primary adsorption option “Poisson” and bacteria are chosen to be in the planktonic refuge and entered at a certain rate (see Equation (26) below), phages are additionally also adsorbing to the bacteria in the refuge. Phage A will additionally adsorb to Sr and RrB cells and phage B to Sr and RrA cells. However, this is not the case if the last-in-first-out (“LIFO”) type of refuge cells is selected (27). Bound phages, A and B, are again denoted PA and PB, respectively. In the Poisson mode, this results in Equations (21)–(25) for infected bacteria:
d I A d t = ( ( 1 e P A M A ) M A ) γ I A μ B I A ( ( 1 e P A I B ) I B ) I A t l A ω I A
d I B d t = ( ( 1 e P B M B ) M B ) γ I B μ A I B ( ( 1 e P B I A ) I A ) I B t l B ω I B
d I A B d t = ( ( 1 e P A I B ) I B ) + ( ( 1 e P B I A ) I A ) γ I A B I A B t l B I A B t l A ω I A B
d R B I A d t = ( ( 1 e P A R B ) R B ) γ R B I A R B I A t l A ω R B I A
d R A I B d t = ( ( 1 e P B R A ) R A ) γ R A I B R A I B t l B ω R A I B
The expression of phages A and B lost by adsorption to bacteria is the same as in the “Standard” model, described in Equations (13) and (14), but bound phages PA and PB is calculated differently as shown in Equation (15) above.
It should be pointed out that the difference between the “Standard” mode of infection and the “Poisson” mode is obviously small at a MOI around 1. It is only when there are phages in excess, a probability of more than one phage infecting a bacterium, that a difference may be observed as a more rapid loss of adsorbed phages.

2.4.3. Resistance Mutation

Dividing bacteria can mutate at a rate of µ, and the mutant frequencies in the population can be calculated in two different ways. In the “Deterministic” mode, each class of newly divided bacteria contains N × µ mutants, where N is the number of newly divided bacteria. With the “Stochastic” alternative, mutations are introduced by random sampling from a Poisson distribution having a mean of N × µ = λ if λ ≤ 10 or from sampling a normal distribution if λ > 10. The normal distribution, (λ;√ λ), is generated by the Box-Müller algorithm and all random numbers are generated by a Mersenne Twister algorithm. This results in good, but somewhat slow, generation of pseudo random numbers but this does not have a great impact on the overall program performance. When stochastic mutation is active, results will of course vary from run to run. With small numbers of divided bacteria per millilitre, for example, 105 bacteria, and a mutation rate of 10−7, the resulting frequency of mutants is bound to be very low. There would be only 0.01 mutant bacteria in the population and these would be eliminated if the option of rounding off values below one is activated. In the program, resistance is modelled as affecting the adsorption and regarded as complete. Therefore, resistant bacteria do not adsorb any phages.

2.4.4. Refuge Cells

The refuge population is simulating the existence of metabolically inactive cells, with the “Planktonic” setting, or cells forming biofilm with the last-in-first-out (“LIFO”) setting. The “LIFO” setting means that the last cells that entered the refuge are reintroduced to the normal pool of cells followed by the next to last cells and so forth. The rate of cells moving into the refuge can be set to at most 0.01, which means that 1% of the current population will enter the refuge per minute. Another limitation is that there has to be more than 10 cells outside of the refuge. In such a case, only 0.1 cells enter the refuge. If only whole cells should be allowed to enter, the round off <1 option should be chosen. Both boxes, the rate in/min and rate out/min must be given a value in order to activate the refuge cells models. While in the refuge, these cells are not dividing and cannot produce phages or mutate and become resistant which they can become upon reintroduction to the normal pool of cells. Infected bacteria (IA, IB, IAB, RAIB, RBIA) are not part of either refuge population, as these cells will lyse in any event. In the “Planktonic” mode, cells can be flushed out of the system or decay whereas in “LIFO” mode cells are thought to be metabolically inactive and sessile until reintroduced. Planktonic refuge cells:
d S r d t = σ S ρ S r γ S r ω S r   ;   d R r A d t = σ R A ρ R r A γ R r A ω R r A d R r B d t = σ R B ρ R r B γ R r B ω R r B   ;   d R r A B d t = σ R A B ρ R r A B γ R r A B ω R r A B
Cells in the last-in-first-out (LIFO) mode:
d S r d t = σ S ρ S r   ;   d R r A d t = σ R A ρ R r A d R r B d t = σ R B ρ R r B   ;   d R r A B d t = σ R A B ρ R r A B

2.4.5. Time Step Size

Calculations of differential equations in Cocktail are done using Euler’s method, taking the input values as the initial values for calculating the values numerically after the chosen time interval, set either as one minute or as a 30-, 15- or 5-second time step size. At large time intervals, other methods for solving differential equations result in smaller errors, but the differences between methods become smaller and smaller as the step size (time interval) decreases. Hence, running the program with a step size of one minute results in a larger discretisation error than with a five-second step size, but is considerably faster. On the other hand, the program speed depends mainly on the length of the phages’ latent periods and the rates of bacteria into and out of refuge populations. These are stored on arrays in dynamic memory that need to be recalculated in each step, which will slow down the program performance if a long running time is set. However, there is virtually no time difference between short and long time step sizes if a short running time and no refuge cells are chosen. If accuracy and a small discretisation error is preferred, step size should be set to five-second intervals.

3. Results

Examples of Cocktail outputs can be studied by running the example data files provided as Supplementary Materials. The file Bohannan_Lenski_1997_Fig 3B.ctl contains input parameter values and a comparison to a chemostat experiment where the authors found that the titre of Escherichia coli bacteria and an infecting T4 phage can oscillate over time [26]. The phage titre decreases over time when there are very few bacteria to infect which in turn results in a higher titre of bacteria and so forth (Figure 2A). Coexistence can theoretically be shown to occur at higher bacterial titres as well. Running the parameter settings in the file Lenski_1988_Fig_2a.ctl from Lenski [19] results in oscillations leading to stable coexistence of bacteria in a titre of about 107 and phage titres being around 109 (Figure 2B). However, a fourfold increase in the concentration of nutrients, from 25 to 100 µg/mL results in increasingly large oscillations, but as in the first case, bacteria never become extinct (Figure 2C).
It is also possible to analyse more complex problems and formulate hypotheses that later can be evaluated experimentally. The last example describes two phages in a cocktail with different latent periods, added in the same titres, and at the same time to the bacteria. Most parameters were entered with their default values (Table 1). Parameters set to different values were the bacteria’s starting titre, 1 × 108, and the program was executed with the standard model where phages only adsorb to uninfected cells, mutations are set to be deterministic and no cells were allowed to be resistant to either phage A or B or both, metabolically inactive or form biofilm. The log10 option was selected for the output. While log10(0) = −∞, a titre of 0 is represented as −16 (log10 of 10−16). The data can be retrieved by running the file Fig_2D.ctl. The result showed that bacteria resistant to phage A will disappear from the system within an hour (Figure 2D). Phage B has a shorter latent period, and has outcompeted phage A, by infecting most of the susceptible bacteria. The mutation rate of bacteria becoming resistant to both phages was set to 10−7 × 10−7 (the product of mutation rate for resistance to A and B, respectively) which resulted in a low titre of double resistant cells, as the bacteria had a good supply of nutrients and were able to divide, but the titre of such cells will grow to about a thousand cells/mL in 48 h. Allowing resistant cells from the beginning, in the start population, results in higher titres of such cells.

4. Technical Information

Cocktail runs on Windows 64-bit systems. The program interface (Figure 1) is in English, but some instructions may turn up in the language set on your computer when Windows DLLs are called (e.g., file dialogs). There is no support for other languages in Cocktail. The program is developed in Object Pascal from the Free Pascal Team (Free Pascal: A 32-, 64- and 16-bit professional Pascal compiler. Version 3.2.0. URL https://www.freepascal.org. RRID:SCR_014360), accessed on 28 September 2022, using the Lazarus IDE and libraries developed by the Lazarus Team (Lazarus: The professional Free Pascal RAD IDE. Version 2.0.10. URL http://www.lazarus-ide.org. RRID:SCR_014362, accessed on 28 September 2022). The IDE, compiler and program libraries can be downloaded from: https://www.lazarus-ide.org/index.php?page=downloads, accessed on 28 September 2022. Source code files (cocktailunit1.pas, cocktailunit2.pas, cocktailunit1.lfm, cocktailunit2.lfm, Cocktail.lps, Cocktail1.lpr, Cocktail1.res, Cocktail.dbg, globalvariables.pas, Cocktail.ico and the Lazarus project information file Cocktail.lpi) as well as updates will be available from GitHub at https://github.com/ASNilsson/Cocktail-phage-infection-kinetics, accessed on 28 September 2022.
The Cocktail program and source code files are distributed under the license Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. In short, this means that it is free for everyone to use, to modify the source code, build upon the program or code, and free to distribute in any medium. However, you must give appropriate credit and a link to the license. If changes were made to the program or code, these must be specified, and distribution of modifications must be under the same license. It is not allowed for anyone to use any part of the program or code for commercial purposes. A short description of the license can be found at: https://creativecommons.org/licenses/by-nc-sa/4.0/, accessed on 28 September 2022. The license and program version number can be found by double clicking anywhere in the Cocktail parameter settings window.
The results of the program can be saved as charts, in PNG or SVG graphics file formats, and/or as a .ctl data file. The items in the .ctl file constitute the complete settings for running the program. The file format is a plain .txt file, but note that the format is fixed as in the example .ctl file. Moving items to another position in the file will inevitably result in a file error. A comma (,) is often used as a delimiter when more than one item is to be found on a line. The advantage of this is that the file can contain a short label of each of the items which makes reading and editing a file much easier. The disadvantage is that omitting a comma, or using another delimiter, will result in a file error. Selected output parameters should however be surrounded by at least one blank in the list following the label “Output parameters:”, e.g., 1 11 14 (note the blank after the last number). A .ctl file can easily be created by running the program and saving the result by clicking on the “Save” button at the bottom of the result window. Editing such a .ctl file that has been shown to work as a template, and saving it under a new name, is a good idea. Double clicking on a .ctl file will open a new instance of the program provided that a link to the program has been established in the Windows “How do you want to open this file?” dialog by marking the Cocktail program and checking the “Always use this app to open .ctl files” box.

Supplementary Materials

The following supporting information can be downloaded at: https://0-www-mdpi-com.brum.beds.ac.uk/article/10.3390/v14112483/s1, Executable and supporting files: Cocktail.exe, Readme.txt and the runtime information file Cocktail.pdf. Example files: Lenski_1988_Fig_2a.ctl, Lenski_1988_Fig_2b.ctl, Abedon_2009_Fig_2F.ctl and Fig_2_demo.ctl. Note that source code files can be downloaded from GitHub (link in technical information above).

Funding

This work was supported by the Swedish Research Council for Environment, Agricultural Sciences and Spatial Planning (FORMAS) coordinated by the Animal Health and Welfare (ANIHWA) project within the European Research Area (ERA-NET) under grant number 221-2015-1894 and the Olle Engkvist Byggmästare Foundation under grant number 2015/419.

Institutional Review Board Statement

Not applicable.

Informed Consent Statement

Not applicable.

Data Availability Statement

Source files, data files and updates can be downloaded from https://github.com/ASNilsson/Cocktail-phage-infection-kinetics (accessed on 30 September 2022).

Acknowledgments

The Cocktail program is based on established mathematical models and extensions thereof but, as with all models, it only represents a part of the reality. Users of the program should be aware that the program results are approximations and are asked to check results by means of their own calculations. The main purpose of the program is to generate hypotheses on bacteriophage infection dynamics that can be experimentally tested and compare different mathematical models. The author disclaims any responsibility for results generated for other purposes.

Conflicts of Interest

The author declares no conflict of interest.

References

  1. Hasan, M.; Ahn, J. Evolutionary Dynamics between Phages and Bacteria as a Possible Approach for Designing Effective Phage Therapies against Antibiotic-Resistant Bacteria. Antibiotics 2022, 11, 915. [Google Scholar] [CrossRef] [PubMed]
  2. Kortright, K.E.; Chan, B.K.; Koff, J.L.; Turner, P.E. Phage Therapy: A Renewed Approach to Combat Antibiotic-Resistant Bacteria. Cell Host Microbe 2019, 25, 219–232. [Google Scholar] [CrossRef] [PubMed] [Green Version]
  3. Międzybrodzki, R.; Borysowski, J.; Weber-Dąbrowska, B.; Fortuna, W.; Letkiewicz, S.; Szufnarowski, K.; Pawełczyk, Z.; Rogóż, P.; Kłak, M.; Wojtasik, E.E.; et al. Clinical Aspects of Phage Therapy. Adv. Virus Res. 2012, 83, 73–121. [Google Scholar] [PubMed]
  4. Chanishvili, N. Phage Therapy-History from Twort and d’Herelle Through Soviet Experience to Current Approaches. Adv. Virus Res. 2012, 83, 3–40. [Google Scholar] [PubMed]
  5. Styles, K.M.; Brown, A.T.; Sagona, A.P. A Review of Using Mathematical Modeling to Improve Our Understanding of Bacteriophage, Bacteria, and Eukaryotic Interactions. Front. Microbiol. 2021, 12, 2752. [Google Scholar] [CrossRef]
  6. Bull, J.J.; Vegge, C.S.; Schmerer, M.; Chaudhry, W.N.; Levin, B.R. Phenotypic resistance and the dynamics of bacterial escape from phage control. PLoS ONE 2014, 9, e94690. [Google Scholar]
  7. Chaudhry, W.N.; Pleška, M.; Shah, N.N.; Weiss, H.; McCall, I.C.; Meyer, J.R.; Gupta, A.; Guet, C.C.; Levin, B.R. Leaky resistance and the conditions for the existence of lytic bacteriophage. PLoS Biol. 2018, 16, e2005971. [Google Scholar] [CrossRef] [Green Version]
  8. Krysiak-Baltyn, K.; Martin, G.J.O.; Stickland, A.D.; Scales, P.J.; Gras, S.L. Computational models of populations of bacteria and lytic phage. Crit. Rev. Microbiol. 2016, 7828, 942–968. [Google Scholar] [CrossRef]
  9. Bull, J.J.; Levin, B.R.; Molineux, I.J. Promises and pitfalls of in vivo evolution to improve phage therapy. Viruses 2019, 11, 1083. [Google Scholar] [CrossRef] [Green Version]
  10. Levin, B.R.; Stewart, F.M.; Chao, L. Resource-limited growth, competition, and predation: A model and experimental studies with bacteria and bacteriophage. Am. Nat. 1977, 111, 3–24. [Google Scholar] [CrossRef]
  11. Abedon, S. Deconstructing Chemostats Towards Greater Phage-Modeling Precision. In Contemporary Trends in Bacteriophage Research; Adams, H., Ed.; Nova Science Publishers: New York, NY, USA, 2009; pp. 249–283. ISBN 9781606921814. [Google Scholar]
  12. Cairns, B.J.; Timms, A.R.; Jansen, V.A.; Connerton, I.F.; Payne, R.J. Quantitative models of in vitro bacteriophage-host dynamics and their application to phage therapy. PLoS Pathog 2009, 5, e1000253. [Google Scholar] [CrossRef] [PubMed]
  13. Gill, J.J. Modeling of bacteriophage therapy. In Bacteriophage Ecology: Population Growth, Evolution, and Impact of Bacterial Viruses; Abedon, S.T., Ed.; Cambridge University Press: Cambridge, UK, 2008; pp. 439–464. ISBN 9780511541483. [Google Scholar]
  14. Hodyra-Stefaniak, K.; Miernikiewicz, P.; Drapała, J.; Drab, M.; Jonczyk-Matysiak, E.; Lecion, D.; Kazmierczak, Z.; Beta, W.; Majewska, J.; Harhala, M.; et al. Mammalian Host-Versus-Phage immune response determines phage fate in vivo. Sci. Rep. 2015, 5, 14802. [Google Scholar] [CrossRef] [PubMed] [Green Version]
  15. Leung, C.Y.J.; Weitz, J.S. Modeling the synergistic elimination of bacteria by phage and the innate immune system. J. Theor. Biol. 2017, 429, 241–252. [Google Scholar] [CrossRef] [PubMed]
  16. Kyaw, E.E.; Zheng, H.; Wang, J.; Hlaing, H.K. Stability analysis and persistence of a phage therapy model. Math. Biosci. Eng. 2021, 18, 5552–5570. [Google Scholar] [CrossRef]
  17. Li, G.; Leung, C.Y.; Ward, Y.; Debarbieux, L.; Weitz, J.S. Optimizing the Timing and Composition of Therapeutic Phage Cocktails: A Control-Theoretic Approach. Bull. Math. Biol. 2021, 82, 75. [Google Scholar] [CrossRef]
  18. Nilsson, A.S. Pharmacological limitations of phage therapy. Ups. J. Med. Sci. 2019, 124, 218–227. [Google Scholar] [CrossRef] [PubMed]
  19. Lenski, R.E. Dynamics of interactions between bacteria and virulent bacteriophage. Adv. Microb. Ecol. 1988, 10, 1–44. [Google Scholar]
  20. Levin, B.R.; Bull, J.J. Population and evolutionary dynamics of phage therapy. Nat. Rev. Microbiol. 2004, 2, 166–173. [Google Scholar] [CrossRef]
  21. Monod, J. Recherches sur la croissance des cultures bactériennes. In Actualités Scientifiques Et Industrielles; Hermann & Cie: Paris, France, 1942. [Google Scholar]
  22. Senn, H.; Lendenmann, U.; Snozzi, M.; Hamer, G.; Egli, T. The growth of Escherichia coli in glucose-limited chemostat cultures: A re-examination of the kinetics. Biochim. Biophys. Acta 1994, 1201, 424–436. [Google Scholar] [CrossRef]
  23. Wang, P.; Robert, L.; Pelletier, J.; Dang, W.L.; Taddei, F.; Wright, A.; Jun, S. Robust growth of Escherichia coli. Curr. Biol. 2010, 20, 1099–1103. [Google Scholar] [CrossRef] [Green Version]
  24. Perkins, T.L.; Perrow, K.; Rajko-Nenow, P.; Jago, C.F.; Jones, D.L.; Malham, S.K.; McDonald, J.E. Decay rates of faecal indicator bacteria from sewage and ovine faeces in brackish and freshwater microcosms with contrasting suspended particulate matter concentrations. Sci. Total Environ. 2016, 572, 1645–1652. [Google Scholar] [CrossRef] [PubMed] [Green Version]
  25. Kasman, L.M.; Kasman, A.; Westwater, C.; Dolan, J.; Schmidt, M.G.; Norris, J.S. Overcoming the phage replication threshold: A mathematical model with implications for phage therapy. J. Virol. 2002, 76, 5557–5564. [Google Scholar] [CrossRef] [PubMed]
  26. Bohannan, B.J.M.; Lenski, R.E. Effect of resource enrichment on a chemostat community of bacteria and bacteriophage. Ecology 1997, 78, 2303–2315. [Google Scholar] [CrossRef]
Figure 1. The Cocktail user interface.
Figure 1. The Cocktail user interface.
Viruses 14 02483 g001
Figure 2. Example output graphs from the Cocktail program: (A) Escherichia coli bacteria infected with phage T4 in a chemostat where both the bacteria and the phage titre fluctuate under certain conditions. The parameter settings were as in [26] with the exception of the resource density being set to 1.0 instead of 0.5 mg/L (µg/mL) in the chemostat, and the time step size set to 1 min instead of 3 min. The run was for the first 200 h of the original chemostat experiment (before development of bacterial phage resistance). Complete parameter settings can be found in the file Bohannan_Lenski_1997_Fig 3B.ctl in the Supplementary Materials. (B) Oscillations of bacterial and phage can theoretically exist even at higher titres as shown by Lenski [19]. Bacteria in a titre of 106 cell forming units is infected with virulent phages with a burst size of 100 and in a titre of 108. The stability of the system depends on a low concentration of nutrients, 25 µg/mL. The parameter settings can be found in the Supplementary Materials file Lenski_1988_Fig_2a.ctl. (C) As the concentration of nutrients increases four times, the titres of both bacteria and phages shift. This results in increasingly large oscillations where bacterial titres are reduced to a few cells every cycle, but they never become extinct. The settings are from the file Lenski_1988_Fig_2b.ctl. in the Supplementary Materials. (D) An example of bacteria at high titres simultaneously infected by two phages with different infection characteristics. Bacteria that mutate and become resistant to either one of the phages are eventually lost and non-resistant bacteria slowly become extinct but replaced by bacteria resistant to both phages. See text for more details. Settings from the file Fig_2D.ctl in the Supplementary Materials.
Figure 2. Example output graphs from the Cocktail program: (A) Escherichia coli bacteria infected with phage T4 in a chemostat where both the bacteria and the phage titre fluctuate under certain conditions. The parameter settings were as in [26] with the exception of the resource density being set to 1.0 instead of 0.5 mg/L (µg/mL) in the chemostat, and the time step size set to 1 min instead of 3 min. The run was for the first 200 h of the original chemostat experiment (before development of bacterial phage resistance). Complete parameter settings can be found in the file Bohannan_Lenski_1997_Fig 3B.ctl in the Supplementary Materials. (B) Oscillations of bacterial and phage can theoretically exist even at higher titres as shown by Lenski [19]. Bacteria in a titre of 106 cell forming units is infected with virulent phages with a burst size of 100 and in a titre of 108. The stability of the system depends on a low concentration of nutrients, 25 µg/mL. The parameter settings can be found in the Supplementary Materials file Lenski_1988_Fig_2a.ctl. (C) As the concentration of nutrients increases four times, the titres of both bacteria and phages shift. This results in increasingly large oscillations where bacterial titres are reduced to a few cells every cycle, but they never become extinct. The settings are from the file Lenski_1988_Fig_2b.ctl. in the Supplementary Materials. (D) An example of bacteria at high titres simultaneously infected by two phages with different infection characteristics. Bacteria that mutate and become resistant to either one of the phages are eventually lost and non-resistant bacteria slowly become extinct but replaced by bacteria resistant to both phages. See text for more details. Settings from the file Fig_2D.ctl in the Supplementary Materials.
Viruses 14 02483 g002
Table 1. Symbols and parameters.
Table 1. Symbols and parameters.
Start Values
SymbolDescriptionDefaultAllowed RangeUnit
Bacteria
SUninfected, susceptible bacteria1 × 10510−1 × 1012CFU/mL
IABacteria infected by phage A--|
IBBacteria infected by phage B--|
IABBacteria infected by phages A and B--|
RABacteria resistant to phage A1 × 10−70–1 × 10−2|
RBBacteria resistant to phage B1 × 10−70–1 × 10−2|
RABBacteria resistant to phages A and B1 × 10−140–1 × 10−6|
RAIBBacteria resistant to A infected with B--|
RBIABacteria resistant to B infected with A--|
SrSusceptible bacteria in a refuge0-|
RrABacteria resistant to A in a refuge--|
RrBBacteria resistant to B in a refuge--|
RrABBacteria resistant to AB in a refuge--CFU/mL
Parameters
ψGrowth rate of S 0.70–1.5 /h
KMonod constant5.00.01–100µg/mL *
εResource for division of one bacterium2 × 10−61 × 10−8–1 × 10−4µg/cell *
γBacterial decay rate00–1/h
µAMutation rate for resistance against A 1 × 10−70–1 × 10−2/cell div.
µBMutation rate for resistance against B1 × 10−70–1 × 10−2/cell div.
ψ R A Growth rate of RA0.70–1.5/h
ψ R B Growth rate of RB0.70–1.5/h
ψ R A B Growth rate of RAB0.70–1.5/h
σRate of bacteria into refuge00–0.01/min
ρRate of bacteria out from refuge00–0.01/min
C0Available resources from start1000–1000µg/mL *
CResources flowing in from a reservoir1000–1000µg/mL *
ωFlow rate0.20–100/h
Phages
Parameters
ATitre of phage A1 × 1080–1 × 1013PFU/mL
BTitre of phage B1 × 1080–1 × 1013PFU/mL
δAAdsorption rate of A1 × 10−101 × 10−14–1 × 10−7mL/min
δBAdsorption rate of B1 × 10−101 × 10−14–1 × 10−7mL/min
lALatent period of A301–60min
lBLatent period of B201–60min
βABurst size of A1000–1000PFU/cell
βBBurst size of B1000–1000PFU/cell
φADecay rate of phage A00–1/h
φBDecay rate of phage B00–1/h
* The symbol for the micro prefix, “µ”, is denoted by “u” in the program user interface.
Table 2. Adsorbed A and B phages per unit time under the primary and secondary adsorption settings.
Table 2. Adsorbed A and B phages per unit time under the primary and secondary adsorption settings.
Primary Adsorption SettingStandardPoisson
Secondary Adsorption SettingUninfectedSusceptibleUninfectedSusceptible
Phages adsorb one at a time to uninfected non-resistant cellsPhages adsorb one at a time to non-resistant cellsA number of phages adsorb according to a Poisson probability with lambda = MOI to uninfected non-resistant cellsA number of phages adsorb according to a Poisson probability with lambda = MOI to non-resistant cells
BacteriaConceivably adsorbing phages
S = SusceptibleA or BA or BA and BA and B
IA = Infected by ABA or BBA and B
IB = Infected by BAA or BAA and B
IAB = Infected by A and B-A or B-A and B
RA = Resistant to infections by ABBBB
RB = Resistant to infections by BAAAA
RAB = Resistant to infections by A and B----
RAIB = Resistant to infections by A infected with B-B-B
RBIA = Resistant to infections by B infected with A-A-A
Sr = Susceptible planktonic bacteria in a refuge-A or B
No infection
A and B
No infection
A and B
No infection
RrA = Planktonic bacteria resistant to A in a refuge-B
No infection
B
No infection
B
No infection
RrB = Planktonic bacteria resistant to B in a refuge-A
No infection
A
No infection
A
No infection
RrAB = Planktonic bacteria resistant to AB in a refuge----
Sr = Susceptible bacteria in a LIFO refuge----
RrA = Bacteria resistant to A in a LIFO refuge----
RrB = Bacteria resistant to B in a LIFO refuge----
RrAB = Bacteria resistant to AB in a LIFO refuge----
Publisher’s Note: MDPI stays neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Share and Cite

MDPI and ACS Style

Nilsson, A.S. Cocktail, a Computer Program for Modelling Bacteriophage Infection Kinetics. Viruses 2022, 14, 2483. https://0-doi-org.brum.beds.ac.uk/10.3390/v14112483

AMA Style

Nilsson AS. Cocktail, a Computer Program for Modelling Bacteriophage Infection Kinetics. Viruses. 2022; 14(11):2483. https://0-doi-org.brum.beds.ac.uk/10.3390/v14112483

Chicago/Turabian Style

Nilsson, Anders S. 2022. "Cocktail, a Computer Program for Modelling Bacteriophage Infection Kinetics" Viruses 14, no. 11: 2483. https://0-doi-org.brum.beds.ac.uk/10.3390/v14112483

Note that from the first issue of 2016, this journal uses article numbers instead of page numbers. See further details here.

Article Metrics

Back to TopTop