Binding Curves (or Binding Assays) are an approach to determining the equilibrium constant for the interaction of two molecules, commonly used in biochemistry1 See Pollard, Thomas (2017). A Guide to Simple and Informative Binding Assays. Molecular Biology of the Cell 21(23). Typically, the a small molecule (commonly called the “ligand”) attaches to a larger molecule such as a protein. If we denote the protein as P and the ligand as L we can express the dissociation as:
\(PL \rightleftharpoons P + L\)
and where the total protein is the bound plus unbound.
\(P_{tot} = PL + P\)
With the dissociation constant:
\(K_d = \frac{[P][L]}{PL]}\)
The concentration of the ligand is varied and the fraction bound \(\frac{[PL]}{P_{tot}}\) is plotted versus the L.2 While the mathematics is the similar, not the difference in a titration curve, where the -log(H), or the “ligand” is measured
Substituting \(P_{tot} = P + PL\) into the \(K_d\) expression:
we get
\(K_d = \frac{([P_{tot}]-[PL])[L]}{PL]} = \frac{([P_{tot}][L]-[PL]{L]}}{[PL]}\)
\(K_d[PL] + [PL][L] = [P_{tot}][L]\)
\([PL](K_d +[L]) = [P_{tot}][L]\)
and we get expression for fraction bound as a function of \(K_d\) and L.
\(\frac{[PL]}{P_{tot}} = \frac{[L]}{K_d + [L]}\)
note as L increases the fraction bound goes from 0 to 1.
Rhe key to binding assay is to find an experimental method to determine the concentration of PL, the bound form.
# Nonlinear Regression / Binding Curve
# simulate noisy data for myoglobin KD = 0.26 [L] in kPa
# includes example of a loop
# data generated with random noise added
KD <- 0.26 # initializing variables
i <- 0.0
y <- 0.0
i <- seq(.1,1.5,0.1)
i
## [1] 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5
length(i)
## [1] 15
rnd <- rnorm(15,0,0.04)
y <- i/(KD+i) + rnd
y
## [1] 0.2187558 0.4246375 0.5412278 0.6229945 0.6836800 0.7577431 0.7085906
## [8] 0.7322742 0.8186848 0.7279381 0.7853469 0.8478658 0.8002454 0.9697076
## [15] 0.8786064
length(y)
## [1] 15
tryfit <- nls(y ~ i/(KD+i),
start = c(KD = 5))
summary(tryfit)
##
## Formula: y ~ i/(KD + i)
##
## Parameters:
## Estimate Std. Error t value Pr(>|t|)
## KD 0.25371 0.01706 14.87 5.72e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.04921 on 14 degrees of freedom
##
## Number of iterations to convergence: 7
## Achieved convergence tolerance: 3.718e-07
plot(i,y, main = "Myoglobin Binding Curve", xlab = "pO2 Kpa", ylab = "Fractional Binding")
lines(i,predict(tryfit), col = "blue") # add a line fitted to points
#x <- c(1,2,4)
#y <- c(2,4,8)
# plot(x,y)
knitr::include_graphics('250px-Myoglobin.png')
…
Myoglobin
knitr::include_graphics('250px-Myoglobin.png')
i
## [1] 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0 1.1 1.2 1.3 1.4 1.5
y
## [1] 0.2747990 0.4487896 0.5363615 0.6458692 0.5918296 0.6592068 0.7916520
## [8] 0.7516527 0.7988273 0.7534327 0.7313488 0.8069766 0.8166417 0.8303163
## [15] 0.7818573
Myoglobin
plot(i,y)
lines(i,predict(tryfit), col = "blue")
We know from the first fundamental theorem of calculus that for \(x\) in \([a, b]\): \[\frac{d}{dx}\left( \int_{a}^{x} f(u)\,du\right)=f(x).\]