Competitive ligand binding


Scheme is for competitive binding of \(A\) and \(B\) to protein \(P\):

\[A + P \rightleftharpoons PA\]
\[B + P \rightleftharpoons PB\]

To describe this, we use the following equilibrium constants:

\[K_{A} = \frac{[PA]}{[P]_{free}[A]_{free}}\]
\[K_{B} = \frac{[PB]}{[P]_{free}[B]_{free}}\]


parameter variable parameter name class
association constant for A \(K_{A}\) K thermodynamic
association constant for B \(K_{B}\) Kcompetitor thermodynamic
binding enthalpy for A \(\Delta H_{A}\) dH thermodynamic
binding enthalpy for B \(\Delta H_{B}\) dHcompetitor thermodynamic
fraction competent fx_competent nuisance
slope of heat of dilution dilution_heat nuisance
intercept of heat of dilution dilution_intercept nuisance


We can only manipulate \([P]_{total}\), \([A]_{total}\) and \([B]_{total}\) experimentally, so our first goal is to determine the concentrations of species such as \([PA]\), which we cannot manipulate or directly observe. Start by writing concentrations as mole fractions:

\[x_{P} = \frac{[P]_{free}}{[P]_{total}}\]
\[x_{PA} = \frac{[PA]}{[P]_{total}}\]
\[x_{PB} = \frac{[PB]}{[P]_{total}}\]
\[x_{P} + x_{PA} + x_{PB} = 1\]

A root of the binding polynomial has been found that describes \(x_{P}\) only in terms of \(K_{A}\), \(K_{B}\), \([A]_{total}\), \([B]_{total}\) and \([P]_{total}\). Start with some convenient definitions:

\[c_{A} = K_{A}[P]_{total}\]
\[c_{B} = K_{B}[P]_{total}\]
\[r_{A} = \frac{[A]_{total}}{P_{total}}\]
\[r_{B} = \frac{[B]_{total}}{P_{total}}\]

The value of \(x_{P}\) is given by:

\[\alpha = \frac{1}{c_{A}} + \frac{1}{c_{B}} + r_{A} + r_{B} - 1\]
\[\beta = \frac{r_{A}-1}{c_{B}} + \frac{r_{B} - 1}{c_{A}} + \frac{1}{c_{A}c_{B}}\]
\[\gamma = -\frac{1}{c_{A}c_{B}}\]
\[\theta = arccos \Big ( \frac{-2\alpha^{3} + 9\alpha \beta -27\gamma}{2\sqrt{(\alpha^2 - 3 \beta)^3}} \Big)\]
\[x_{P} = \frac{2\sqrt{\alpha^2 - 3 \beta}\ cos(\theta/3) - \alpha}{3}\]

Once this is known \(x_{PA}\) and \(x_{PB}\) are uniquely determined by:

\[x_{PA} = \frac{r_{A} x_{P}}{1/C_{A} + x_{P}}\]
\[x_{PB} = \frac{r_{B} x_{P}}{1/C_{B} + x_{P}}\]


The heat for each shot \(i\) (\(q_{i}\)) is:

\[q_{i} = V_{0}P_{total}(\Delta H_{A}(x_{PA,i} - f_{i}x_{PA,i-1}) + \Delta H_{B}(x_{PB,i} - f_{i}x_{PB,i-1})) + q_{dilution},\]

where \(V_{0}\) is the volume of the cell, \(\Delta H_{A}\) is the enthalpy for binding ligand \(A\), \(\Delta H_{B}\) is the enthalpy for binding ligand \(B\). \(f_{i}\) is the dilution factor for each injection:

\[f_{i} = exp(-V_{i}/V_{0}),\]

where \(V_{0}\) is the volume of the cell and \(V_{i}\) is the volume of the \(i\)-th injection.

pytc calculates \(x_{PA,i}\) and friends for the entire titration, correcting for dilution. This means the \(f_{i}\) term is superfluous. Thus, heats are related by:

\[q_{i} = V_{0}P_{total,i}(\Delta H_{A}(x_{PA,i} - x_{PA,i-1}) + \Delta H_{B}(x_{PB,i} - x_{PB,i-1})) + q_{dilution}.\]

Note that \(V_{0}\) is held constant (it is the cell volume) as only that volume is detected, not the neck of the cell.