diff --git a/_posts/2024-03-18-Hypothesis-why-do-neutralizing-antibody-titers-max-out.md b/_posts/2024-03-18-Hypothesis-why-do-neutralizing-antibody-titers-max-out.md index 6a16543..b109cfd 100644 --- a/_posts/2024-03-18-Hypothesis-why-do-neutralizing-antibody-titers-max-out.md +++ b/_posts/2024-03-18-Hypothesis-why-do-neutralizing-antibody-titers-max-out.md @@ -50,11 +50,11 @@ $$ (\text{post-challenge titer}) = \text{c}*(\text{viable dose})*(\text{pre-chal ## When we look at what we know about poliovirus infectiousness in humans and antibody titers, we see something super cool -What is the relevant viable dose at the start of a polio infection? Well, each infected cell makes about 1000 infectious units per replication cycle ([one source of many](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4093869/)). So, in the absence of any prior immunity, the viable dose should be about 1000. But, as described in the first post in this series, we know from human challenge studies that only 1 in 33 of the typical poliovirus infectious units cause infection in an unimmized person, and that the dependence of the probability a cell culture infectious unit is infectious in a person with pre-challenge neutralizing antibody titers looks like +What is the relevant viable dose at the start of a polio infection? Well, each infected cell makes about 900 infectious units per replication cycle ([one source of many](https://www.ncbi.nlm.nih.gov/pmc/articles/PMC4093869/)). So, in the absence of any prior immunity, the viable dose should be about 900. But, as described in the first post in this series, we know from human challenge studies that only 1 in 33 of the typical poliovirus infectious units cause infection in an unimmized person, and that the dependence of the probability a cell culture infectious unit is infectious in a person with pre-challenge neutralizing antibody titers looks like $$\bar{r}_{\text{pre-challenge titer}}=\frac{1}{1+\frac{\beta}{\alpha}(\text{pre-challenge titer})^{\gamma}}$$ -with $\alpha=0.44$, $\beta=2.3$, and $\gamma=0.46$ for wild poliovirus ([source](https://journals.plos.org/plosbiology/article?id=10.1371/journal.pbio.2002468#sec016)). So the viable dose shed by each infected cell in a person is roughly $1000\bar{r}_{\text{pre-challenge titer}}$, and our simple immune response model is +with $\alpha=0.44$, $\beta=2.3$, and $\gamma=0.46$ for wild poliovirus ([source](https://journals.plos.org/plosbiology/article?id=10.1371/journal.pbio.2002468#sec016)). So the viable dose shed by each infected cell in a person is roughly $900\bar{r}_{\text{pre-challenge titer}}$, and our simple immune response model is $$ (\text{post-challenge titer}) = \text{c}*(900\bar{r}_{\text{pre-challenge titer}})*(\text{pre-challenge titer}) \tag{3} $$ diff --git a/assets/2024-03-18-Hypothesis-why-do-neutralizing-antibody-titers-max-out/linkages_among_polio_immune_model_components.R b/assets/2024-03-18-Hypothesis-why-do-neutralizing-antibody-titers-max-out/linkages_among_polio_immune_model_components.R index 3eb015c..0f7ad66 100644 --- a/assets/2024-03-18-Hypothesis-why-do-neutralizing-antibody-titers-max-out/linkages_among_polio_immune_model_components.R +++ b/assets/2024-03-18-Hypothesis-why-do-neutralizing-antibody-titers-max-out/linkages_among_polio_immune_model_components.R @@ -123,11 +123,11 @@ mean(c(11.1,11.2,15.3,12.9,15.5,15.2)) pred=data.frame(preExposureTiter=2^seq(0,-1/res@coef[3],by=0.01)) |> - mutate(median=exp(res@coef[1]*(1+res@coef[3]*log2(preExposureTiter)))) |> - mutate(lower=exp(res@coef[1]*(1+res@coef[3]*log2(preExposureTiter))-(res@coef[2]*(1+res@coef[3]*log2(preExposureTiter))))) |> - mutate(upper=exp(res@coef[1]*(1+res@coef[3]*log2(preExposureTiter))+(res@coef[2]*(1+res@coef[3]*log2(preExposureTiter))))) |> - mutate(lower2=exp(res@coef[1]*(1+res@coef[3]*log2(preExposureTiter))-2*(res@coef[2]*(1+res@coef[3]*log2(preExposureTiter))))) |> - mutate(upper2=exp(res@coef[1]*(1+res@coef[3]*log2(preExposureTiter))+2*(res@coef[2]*(1+res@coef[3]*log2(preExposureTiter))))) + mutate(median=2^(res@coef[1]*(1+res@coef[3]*log2(preExposureTiter)))) |> + mutate(lower=2^(res@coef[1]*(1+res@coef[3]*log2(preExposureTiter))-(res@coef[2]*(1+res@coef[3]*log2(preExposureTiter))))) |> + mutate(upper=2^(res@coef[1]*(1+res@coef[3]*log2(preExposureTiter))+(res@coef[2]*(1+res@coef[3]*log2(preExposureTiter))))) |> + mutate(lower2=2^(res@coef[1]*(1+res@coef[3]*log2(preExposureTiter))-2*(res@coef[2]*(1+res@coef[3]*log2(preExposureTiter))))) |> + mutate(upper2=2^(res@coef[1]*(1+res@coef[3]*log2(preExposureTiter))+2*(res@coef[2]*(1+res@coef[3]*log2(preExposureTiter))))) ggplot(df)+ geom_jitter(aes(x=log2(preExposureTiter),y=postExposureTiter/preExposureTiter,color=seroconverted)) + @@ -136,7 +136,7 @@ ggplot(df)+ geom_ribbon(data=pred,aes(x=log2(preExposureTiter),ymin=lower,ymax=upper),alpha=0.1)+ geom_ribbon(data=pred,aes(x=log2(preExposureTiter),ymin=lower2,ymax=upper2),alpha=0.1)+ scale_x_continuous(breaks=(3*(0:5)))+ - scale_y_continuous(trans='log2',breaks=2^(2*(0:5))) + scale_y_continuous(trans='log2',breaks=2^(2*(0:8))) ## venom