Burst Size, Latent Period, and Mutation at the Cellular Scale

The same population dynamics that govern how microbes and their hosts interact also play out one scale down, inside a single infected cell. Zoom in from the host to that cell and a virus faces a small number of decisions, each with a mathematical consequence. How long should it commandeer the cell before releasing progeny — its latent period? How many virions should it build in that time — its burst size? And how faithfully should it copy its genome — its mutation rate? Perfect copying would be a trap: some level of variation is itself an advantage, the raw material that lets the virus evolve and adapt to immunity and drugs. These three are the virus’s cellular life-history traits, and they are coupled rather than independent: a longer latent period buys a larger burst, a larger burst is a larger draw from sequence space, and the fidelity of copying sets how much of that draw is mutant. This page works through the math that links them, at the level of the cell, following the viral-ecology tradition that Joshua Weitz synthesized in Quantitative Viral Ecology and that goes back to the phage physiologists.

Left: virions accumulate inside a cell only after an eclipse period, rising then saturating as host resources deplete. Right: the phage population growth rate is maximised at an intermediate latent period, and the optimum shifts to shorter lysis when hosts are abundant.
Figure 1. Left: virions accumulate inside a cell only after an eclipse period, rising then saturating as host resources deplete. Right: the phage population growth rate is maximised at an intermediate latent period, and the optimum shifts to shorter lysis when hosts are abundant.

The cellular parameters#

The within-host models track target cells, infected cells, and free virus with rate constants; here we name the per-cell quantities those rates encode.

SymbolNameMeaning
τE\tau_Eeclipse periodtime from infection until the first progeny virion is assembled
LLlatent periodtime from infection until progeny release (lysis, or onset of budding); LτEL \ge \tau_E
ppproduction ratevirions assembled per unit time during the productive phase
BBburst sizetotal progeny virions released by one infected cell
aainfected-cell death rate1/a1/a is the mean productive lifespan of a cell
uuvirion clearance raterate at which a free virion is lost (decay, clearance)
βx0\beta x_0adsorption hazardrate a free virion successfully attaches to a target cell
μ\muper-site mutation rateprobability a given base is miscopied per replication
U=LgμU = L_g \mugenomic mutation rateexpected new mutations per genome per replication (LgL_g = genome length)

Two things separate viruses at this scale. Lytic viruses (most phages, many animal viruses) accumulate progeny internally and release them in one burst when the cell lyses, so BB and LL are tightly coupled. Budding viruses (influenza, HIV, coronaviruses) release virions continuously over the cell’s lifespan, so the “burst” is a lifetime yield rather than a single event — a distinction that turns out to matter for stochastic fate but not for mean dynamics.

Burst size is accumulated over the latent period#

Nothing is released during the eclipse; after it, progeny accumulate at rate pp, so to a first approximation the burst grows linearly with how long the virus waits to lyse,

B(L)=p(LτE),LτE.(1)B(L) = p\,(L - \tau_E), \qquad L \ge \tau_E. \tag{1}

In reality the curve in Figure 1 bends over: as the cell’s ribosomes, nucleotides, and membrane are exhausted, production saturates toward a ceiling BmaxB_{\max}, well described by B(L)=Bmax ⁣(1e(LτE)/κ)B(L) = B_{\max}\!\left(1 - e^{-(L-\tau_E)/\kappa}\right). Single-cell measurements confirm both the rising-then-saturating shape and something the deterministic picture hides: burst size is wildly heterogeneous from cell to cell. For influenza A, single infected cells span 10110^1 to 10410^4 virions, with ~10% of cells (“super-producers”) making 40–60% of all progeny; HSV-1 progeny from single keratinocytes span three orders of magnitude for the same reason. The linear law (1) is the mean of a very broad distribution — a cell-scale echo of the superspreading heterogeneity seen between hosts.

The cellular reproduction number#

The burst is only worth what its virions go on to infect. A released virion is in a race: it is cleared at hazard uu and adsorbs to a fresh target cell at hazard βx0\beta x_0, so the probability it wins the race and starts a new infection is

ρ=βx0βx0+u.(2)\rho = \frac{\beta x_0}{\beta x_0 + u}. \tag{2}

Multiplying the number of tickets by the chance each one wins gives the cellular reproduction number — how many new infected cells one infected cell produces:

R0=Bρ=Bβx0βx0+u.(3)R_0 = B\,\rho = B\,\frac{\beta x_0}{\beta x_0 + u}. \tag{3}

This is exactly the within-host R0R_0 in disguise. In the standard target-cell model an infected cell produces virus at rate kk for a mean lifespan 1/a1/a, so its lifetime burst is B=k/aB = k/a; each virion, in the small-adsorption limit βx0u\beta x_0 \ll u, infects with probability ρβx0/u\rho \approx \beta x_0/u. Substituting into (3) recovers the familiar

R0=kaβx0u=βkx0au,R_0 = \frac{k}{a}\cdot\frac{\beta x_0}{u} = \frac{\beta k x_0}{a u},

which is the formula derived from the next-generation matrix of the ODE model. The lesson is that R0R_0 at the cellular scale is nothing but burst size times per-virion establishment probability — every route to it is a way of writing BρB\rho.

Continuous versus burst production: same mean, different fate#

Here is a fact that surprises people the first time. A budding virus that trickles out virus at rate kk over a lifespan 1/a1/a, and a lytic virus that releases the whole burst B=k/aB = k/a at the instant of lysis, produce identical deterministic dynamics — the ODEs cannot tell them apart, because only the lifetime total enters the mean-field equations. But Pearson and colleagues showed that stochastically they differ, and the difference lives in the offspring distribution of a single infected cell.

Model each cell as producing a random number ZZ of successful secondary infections; by branching-process theory the probability a lineage started by one infected cell dies out is the smallest root q(0,1]q \in (0,1] of q=g(q)q = g(q), where g(s)=E[sZ]g(s) = \mathbb{E}[s^Z] is the probability generating function.

Continuous production, exponential lifespan. A cell emits successful infections as a Poisson process (rate λ=pρ\lambda = p\rho) while it lives, and dies at rate aa. Racing production against death gives a geometric offspring count with mean R0=λ/aR_0 = \lambda/a, PGF g(s)=(1θ)/(1θs)g(s) = (1-\theta)/(1-\theta s) with θ=R0/(1+R0)\theta = R_0/(1+R_0), and a clean closed-form extinction probability:

qcont=1R0.(4)q_{\text{cont}} = \frac{1}{R_0}. \tag{4}

Lytic burst. A cell releases a fixed BB virions at once, each independently establishing with probability ρ\rho, so ZBinomial(B,ρ)Z \sim \text{Binomial}(B, \rho), which for large BB and small ρ\rho is Poisson(R0)\text{Poisson}(R_0) with PGF g(s)=eR0(s1)g(s) = e^{R_0(s-1)} and extinction probability solving

qburst=eR0(qburst1).(5)q_{\text{burst}} = e^{R_0\,(q_{\text{burst}} - 1)}. \tag{5}

Both have the same mean R0R_0, but the geometric distribution is over-dispersed (variance R0+R02R_0 + R_0^2) while the Poisson burst is not (variance R0R_0). More variance means more mass on “zero offspring,” so the continuous mode is always easier to extinguish: qcont>qburstq_{\text{cont}} > q_{\text{burst}} for every R0>1R_0 > 1, as Figure 2 shows.

Probability that a single infected cell’s lineage dies out, versus the cellular reproduction number, for continuous (geometric) and lytic-burst (Poisson) production. Continuous production sits above the burst curve everywhere, so it is easier to extinguish at the same mean R0.
Figure 2. Probability that a single infected cell’s lineage dies out, versus the cellular reproduction number, for continuous (geometric) and lytic-burst (Poisson) production. Continuous production sits above the burst curve everywhere, so it is easier to extinguish at the same mean R0.
Note

Real cells sit between these extremes. With an eclipse phase and a staged infectious period, the reproduction number of a single cell is a negative binomial random variable, and the probability of establishment depends on that whole distribution, not just its mean — the same reason dispersion governs outbreak fate between hosts.

The optimal latent period: a marginal-value problem#

Waiting longer to lyse trades higher burst for slower turnover — the phage version of “a bird in the hand versus two in the bush.” The classic treatment casts it as optimal foraging via the marginal value theorem: the cell is a patch, progeny are the resource, and lysis is the decision to leave. Consider a phage growing in a well-mixed host population where a free phage takes a mean search time Ta=1/(kaS)T_a = 1/(k_a S) to find and adsorb a host (density SS). Each infection cycle multiplies the phage by B(L)B(L) over a generation of length Ta+LT_a + L, so the long-run population growth rate is

r(L)=lnB(L)Ta+L.(6)r(L) = \frac{\ln B(L)}{T_a + L}. \tag{6}

Maximising (6) — setting dr/dL=0dr/dL = 0 — gives the optimality condition

B(L\*)B(L\*)marginal gain rate=r(L\*)1average gain rate  =  lnB(L\*)Ta+L\*,(7)\underbrace{\frac{B'(L^\*)}{B(L^\*)}}_{\text{marginal gain rate}} = \underbrace{\frac{r(L^\*)}{1}}_{\text{average gain rate}} \;=\; \frac{\ln B(L^\*)}{T_a + L^\*}, \tag{7}

the marginal value theorem in one line: lyse at the moment the marginal rate of building new progeny falls to the average rate of return of the whole cycle. Because B(L)B(L) is concave (it saturates), (6) has a single interior peak — an intermediate latent period is optimal, exactly as Wang built an isogenic λ-phage panel to confirm and Kannoly verified in continuous culture. The comparative statics fall straight out of (7): when hosts are abundant (TaT_a small) the cost of a long wait is high, so the optimum shifts to shorter lysis times (right panel of Figure 1), the prediction Abedon confirmed experimentally by enriching for short-latent-period mutants at high bacterial density.

Tip

Notice how flat the fitness curve is near its peak in Figure 1. A broad optimum means selection on lysis timing is weak once you are close, which is why real latent periods are variable and why cell-to-cell noise in lysis timing both persists and biases the classic one-step growth-curve estimate of LL downward.

Mutation: burst size is a lottery for variation#

Every one of the BB progeny is a fresh copy of the genome, and copying is imperfect. If a specific escape or resistance mutation arises at per-site rate μ\mu, then the number of progeny in a single burst carrying it is Binomial(B,μ)\text{Binomial}(B, \mu), so the expected number of mutant progeny per cell is simply the product

E[site mutants]=Bμ,P(burst contains the variant)=1(1μ)B1eBμ.(8)\mathbb{E}[\text{site mutants}] = B\mu, \qquad P(\text{burst contains the variant}) = 1 - (1-\mu)^B \approx 1 - e^{-B\mu}. \tag{8}

Burst size and mutation rate enter only through BμB\mu — the per-cell mutational output — so a large burst is a large draw from sequence space even when fidelity is high (Figure 3). Counting any mutation rather than one specific site, each progeny genome carries a Poisson(U)\text{Poisson}(U) number of new mutations, so the cell emits B(1eU)B\,(1 - e^{-U}) mutant progeny per burst; for an RNA virus with U0.5U \sim 0.5 that is a mutant in roughly two of every five virions produced.

Left: the probability a single burst contains at least one copy of a specific escape mutation, versus burst size, for three per-site mutation rates. Right: the expected number of such mutants per cell, B times mu, crossing one mutant per cell as burst size grows.
Figure 3. Left: the probability a single burst contains at least one copy of a specific escape mutation, versus burst size, for three per-site mutation rates. Right: the expected number of such mutants per cell, B times mu, crossing one mutant per cell as burst size grows.

Two consequences follow. First, (8) is a mean; because a mutation that arises early in the intracellular replication tree is amplified into many progeny, the distribution of mutants per burst is heavy-tailed and Luria–Delbrück-like, with rare “jackpot” cells — the within-cell analogue of the jackpot lineages that dominate mutation-supply variance. Second, the total supply of any variant across an infection is (infected cells)×B×μ(\text{infected cells}) \times B \times \mu, so high-burst, high-mutation viruses explore genotype space fastest. Push the genomic rate UU up far enough and this becomes a liability: past the error threshold the population can no longer maintain its master sequence, the principle behind lethal mutagenesis as an antiviral strategy. Burst size and mutation rate are the numerator and the per-copy risk of the same lottery.

A worked example#

Take a lytic virus with eclipse τE=15\tau_E = 15 min, saturating yield Bmax=250B_{\max} = 250, time-scale κ=50\kappa = 50 min, so at a 60-minute latent period B(60)=250(1e0.9)148B(60) = 250(1-e^{-0.9}) \approx 148 virions. Suppose a released virion adsorbs at hazard βx0=0.8h1\beta x_0 = 0.8\,\text{h}^{-1} and is cleared at u=4h1u = 4\,\text{h}^{-1}, so ρ=0.8/4.80.167\rho = 0.8/4.8 \approx 0.167 and the cellular R0=148×0.16725R_0 = 148 \times 0.167 \approx 25 — a vigorous infection well above threshold. Near the establishment threshold, though, the production mode matters: at R0=2R_0 = 2 a continuously-shedding cell’s lineage dies out with probability qcont=1/2=0.50q_{\text{cont}} = 1/2 = 0.50, whereas an equal-mean lytic burst dies out only with qburst0.20q_{\text{burst}} \approx 0.20 — the budding virus is more than twice as likely to fizzle from a single seeding cell. On mutation, with per-site μ=3×105\mu = 3\times10^{-5} the 148-virion burst throws a given point mutant with probability 1(1μ)1480.00441 - (1-\mu)^{148} \approx 0.0044; a super-producer cell making B=5000B = 5000 raises that to 0.14\approx 0.14, and its expected genome-wide mutant output (U=0.5U = 0.5) is 5000×0.3919675000 \times 0.39 \approx 1967 mutant progeny from that one cell. The rare high-burst cells are doing most of the evolving.

Three viruses, three strategies: HIV, influenza, hantavirus#

The equations above are a common currency, so the most useful thing to do with them is compare real viruses that solve the cellular problem in very different ways. All three below are enveloped RNA viruses that leave the cell by budding rather than a lytic burst, yet they occupy opposite corners of the parameter space — and the differences explain a great deal of their epidemiology.

TraitHIV-1Influenza AHantavirus
Genomeretrovirus, +ssRNA → DNA, ~9.7 kb−ssRNA, 8 segments, ~13.5 kb−ssRNA, 3 segments, ~12 kb
Production modebudding, continuousbudding, ~continuousbudding, continuous
Infected-cell fatedies in ~1–2 days (cytopathic + CTL)dies in ~1 day (cytopathic)survives — non-cytopathic, persistent
Eclipse τE\tau_E~18–24 h~6 h~1–3 days
Burst size BB~10410^410510^5 total virions, only ~1 in 10210^210310^3 infectious~10210^210410^4 (single-cell mean ~350–700)low–moderate, IFN-limited, sustained
Per-site mutation μ\mu~2.4×1052.4\times10^{-5} (RT); up to ~4×1034\times10^{-3} in vivo via APOBEC~1.81.82.5×1042.5\times10^{-4} (2–3 per genome)RNA-range but constrained; low diversity
Evolutionary signaturequasispecies, rapid drug/immune escapeantigenic drift + segment reassortmenthost codivergence, spillover dead-end
Left: cumulative virions produced by one cell over time for the three viruses — influenza builds fast then lyses, HIV reaches a large yield before the cell dies, and hantavirus produces slowly but never lyses, so its window stays open. Right: the three viruses on the burst-size / mutation-rate plane, with diagonals of constant per-cell mutational output B times mu.
Figure 4. Left: cumulative virions produced by one cell over time for the three viruses — influenza builds fast then lyses, HIV reaches a large yield before the cell dies, and hantavirus produces slowly but never lyses, so its window stays open. Right: the three viruses on the burst-size / mutation-rate plane, with diagonals of constant per-cell mutational output B times mu.

The production window, not the burst rate, is what hantavirus changes. Recall that lifetime burst is production rate times production window, and for a lytic or cytopathic virus the window is the cell’s lifespan 1/a1/a. Influenza and HIV both kill the cell — influenza fast, HIV a little slower — so their yield is capped by how long the cell survives (left panel of Figure 4); HIV’s in-vivo per-cell yield is ~445×1045\times10^4 virions but only about one in a few hundred is infectious, so the effective burst that enters R0=BρR_0 = B\rho is far smaller than the RNA count. Hantaviruses are the striking case: they replicate in vascular endothelial cells with no cytopathic effect and establish persistent infection, so a0a \to 0 and the window is set not by lysis but by interferon. In human cells IFN-β switches on after a few days and production falls off; in the natural rodent reservoir the antiviral response is never triggered, the window stays open indefinitely, and the animal remains a lifelong low-level shedder. The same B=rate×windowB = \text{rate}\times\text{window} accounting, with the death term turned off, is the whole difference between an acute and a persistent infection.

All three are budding, so their stochastic fate follows the continuous branch. Because none release a synchronized lytic burst, the offspring distribution of a single infected cell is closer to the over-dispersed geometric of (4) than to the Poisson of (5), with extinction probability near 1/R01/R_0. This is why single-cell seeding is fragile even for a fit virus, and it is consistent with the very narrow transmission bottleneck of HIV, where a productive infection is usually founded by a single transmitted variant despite the donor carrying a diverse swarm.

Mutational output separates the fast evolvers from the stable one. The per-cell mutational output is BμB\mu, and the right panel of Figure 4 places the three viruses on the BBμ\mu plane against diagonals of constant BμB\mu. Influenza sits high on μ\mu~2×1042\times10^{-4} per site, 2–3 mutations per genome copied — which, multiplied over large bursts, is the raw material of antigenic drift, compounded by reassortment of its eight segments. HIV’s reverse transcriptase runs at the canonical RNA-virus rate ~2×1052\times10^{-5}, but its enormous within-host replication and APOBEC-driven hypermutation push the in-vivo rate to ~4×1034\times10^{-3} — the highest measured for any biological entity — which is why drug resistance is essentially pre-existing in every patient. Hantaviruses sit in the low corner: their persistent, low-turnover replication accumulates change slowly, and their tight codivergence with rodent hosts leaves them genetically stable and host-restricted — part of why human infections are typically epidemiological dead ends rather than the start of sustained human-to-human chains. Read through BμB\mu, the same product that sets a phage’s supply of escape mutants explains why two of these viruses are moving targets and the third is a fixture of its reservoir.

In code#

We reproduce all four scenarios: the cellular R0R_0 from a burst, the continuous-versus-burst extinction gap, the optimal latent period, and the mutational output per burst.

R#

R
eclipse <- 15; Bmax <- 250; kappa <- 50
burst <- function(L) ifelse(L > eclipse, Bmax * (1 - exp(-(L - eclipse) / kappa)), 0)

# cellular R0 = B * rho
beta_x0 <- 0.8; u <- 4
rho <- beta_x0 / (beta_x0 + u)
R0  <- burst(60) * rho
cat(sprintf("B(60) = %.0f, rho = %.3f, cellular R0 = %.1f\n", burst(60), rho, R0))

# continuous (geometric) vs burst (Poisson) extinction at a shared mean R0
q_burst <- function(R) uniroot(function(q) exp(R * (q - 1)) - q, c(1e-9, 1 - 1e-9))$root
for (R in c(1.5, 2, 3))
  cat(sprintf("R0=%.1f: extinction continuous %.3f vs burst %.3f\n", R, 1 / R, q_burst(R)))

# optimal latent period maximising r(L) = ln B(L) / (Ta + L)
grid <- seq(eclipse + 0.5, 160, length.out = 4000)
for (Ta in c(3, 60)) {
  Lstar <- grid[which.max(log(burst(grid)) / (Ta + grid))]
  cat(sprintf("Ta=%2.0f: optimal L = %.1f min, burst = %.0f\n", Ta, Lstar, burst(Lstar)))
}

# mutation: expected mutants and escape probability per burst
mu <- 3e-5; U <- 0.5                            # per-site rate; per-genome rate
for (B in c(30, 148, 5000))
  cat(sprintf("B=%5d: E[site mutants]=%.3f, P(escape)=%.3f, E[mutant progeny]=%.0f\n",
              B, B * mu, 1 - (1 - mu)^B, B * (1 - exp(-U))))

Python#

Python
import numpy as np
from scipy.optimize import brentq

# 1. Intracellular accumulation and the cellular reproduction number R0 = B * rho
eclipse, Bmax, kappa = 15.0, 250.0, 50.0
burst = lambda L: np.where(L > eclipse, Bmax * (1 - np.exp(-(L - eclipse) / kappa)), 0.0)
beta_x0, u = 0.8, 4.0                      # per-virion adsorption vs clearance hazards
rho = beta_x0 / (beta_x0 + u)              # prob a released virion infects a new cell
B60 = float(burst(60.0))
print(f"B(60 min) = {B60:.0f} virions, rho = {rho:.3f}, cellular R0 = {B60 * rho:.1f}")

# 2. Same mean R0, two production modes -> different extinction (near threshold)
for R in (1.5, 2.0, 3.0):
    q_burst = brentq(lambda q: np.exp(R * (q - 1)) - q, 1e-9, 1 - 1e-9)
    print(f"R0={R}: extinction  continuous {1/R:.3f}  vs  burst {q_burst:.3f}")

# 3. Optimal latent period maximises r(L) = ln B(L) / (T_a + L)
grid = np.linspace(eclipse + 0.5, 160, 4000)
for Ta in (3.0, 60.0):
    Lstar = grid[np.argmax(np.log(burst(grid)) / (Ta + grid))]
    print(f"T_a={Ta:4.0f}: optimal L = {Lstar:.1f} min, burst = {burst(Lstar):.0f}")

# 4. Mutation: expected mutants and escape probability per burst
mu, U = 3e-5, 0.5                          # per-site rate; per-genome rate (RNA scale)
for B in (30, 148, 5000):
    print(f"B={B:5d}: E[site mutants]={B*mu:.3f}, "
          f"P(escape)={1-(1-mu)**B:.3f}, E[mutant progeny]={B*(1-np.exp(-U)):.0f}")
B(60 min) = 148 virions, rho = 0.167, cellular R0 = 24.7
R0=1.5: extinction  continuous 0.667  vs  burst 0.417
R0=2.0: extinction  continuous 0.500  vs  burst 0.203
R0=3.0: extinction  continuous 0.333  vs  burst 0.060
T_a=   3: optimal L = 21.7 min, burst = 31
T_a=  60: optimal L = 32.9 min, burst = 75
B=   30: E[site mutants]=0.001, P(escape)=0.001, E[mutant progeny]=12
B=  148: E[site mutants]=0.004, P(escape)=0.004, E[mutant progeny]=58
B= 5000: E[site mutants]=0.150, P(escape)=0.139, E[mutant progeny]=1967

Julia#

Julia
using Roots

eclipse, Bmax, kappa = 15.0, 250.0, 50.0
burst(L) = L > eclipse ? Bmax * (1 - exp(-(L - eclipse) / kappa)) : 0.0

beta_x0, u = 0.8, 4.0
rho = beta_x0 / (beta_x0 + u)
println("B(60) = $(round(burst(60); digits=0)), cellular R0 = $(round(burst(60)*rho; digits=1))")

# continuous (geometric) vs lytic-burst (Poisson) extinction
for R in (1.5, 2.0, 3.0)
    qb = find_zero(q -> exp(R * (q - 1)) - q, (1e-9, 1 - 1e-9))
    println("R0=$R: extinction continuous $(round(1/R; digits=3)) vs burst $(round(qb; digits=3))")
end

# optimal latent period
grid = range(eclipse + 0.5, 160; length = 4000)
for Ta in (3.0, 60.0)
    Lstar = grid[argmax(log.(burst.(grid)) ./ (Ta .+ grid))]
    println("Ta=$Ta: optimal L = $(round(Lstar; digits=1)) min, burst = $(round(burst(Lstar); digits=0))")
end

# mutation: expected mutants and escape probability per burst
mu, U = 3e-5, 0.5                            # per-site rate; per-genome rate
for B in (30, 148, 5000)
    println("B=$B: E[site mutants]=$(round(B*mu; digits=3)), " *
            "P(escape)=$(round(1 - (1 - mu)^B; digits=3)), " *
            "E[mutant progeny]=$(round(B * (1 - exp(-U)); digits=0))")
end

Why it matters#

The three cellular traits on this page are the microscopic origins of the macroscopic quantities the rest of infectious-disease modelling takes as given. Burst size and per-virion establishment set the within-host R0R_0 that decides whether an infection takes hold; the production mode and the eclipse phase set the stochastic extinction probability that decides whether a single exposed cell — or a single spilled-over host — starts anything at all. The latent-period optimum is a life-history trade-off that natural selection actually solves, and the same B(L)B(L) curve that governs a phage’s optimal lysis time governs how a within-host virus tunes its replication against immune clearance. And the product BμB\mu is the engine of viral evolution: it is the per-cell supply of the variation that becomes drug resistance, immune escape, and — pushed too far by design — the error catastrophe that antiviral mutagens exploit. Reading a virus at the scale of the cell turns “how fast, how many, how sloppy” into equations that connect all the way up to the epidemic.