Oxygen Binding Explorer

Myoglobin and hemoglobin O2 binding curves, with every major regulator of hemoglobin affinity on a live two-state allosteric model.

P50 26.8 mmHg
standard
Hill n2.78
SaO297.2%
SvO275.8%
O2 delivered4.4

Set the scene

Choose which set of constants the model runs on, who the explanations are written for, and which curves are drawn. Then load a scenario, or go straight to the Curves tab and start moving sliders.

Constants
Explanations written for
Changes the wording of scenario explainers and mechanism captions only — the mathematics underneath is identical.
Curves on the main plot
Myoglobin
Standard reference
Non-cooperative Hb
The non-cooperative curve is a hypothetical hemoglobin with the same P50 but no subunit communication (n = 1). It is the control experiment for the whole lecture.
Scenarios
Try this
  1. Load Exercising muscle and watch P50 in the bar above. Which single slider moved it most?
  2. Load Stored banked blood. The curve goes far left — so why is that blood worse at its job, when it holds oxygen so tightly?
  3. Turn on Non-cooperative Hb, go to Curves, and compare how much O2 each version delivers between lung and tissue.
Blood gas & pH
pH
PCO2 mmHg
HCO3− mM
Coupled: pH is computed from PCO2 and bicarbonate by Henderson–Hasselbalch, so raising CO2 acidifies the blood the way it does in a tissue. Moving the pH slider adjusts the metabolic (bicarbonate) side. Switch to Independent to vary one at a time.
CO2 acts by
Red cell environment
2,3-BPG mM
Temperature °C
Chloride mM
Hemoglobin
[Hb] g/dL
HbCO %
MetHb %
HbF %
HbS %
Myoglobin & operating points
Mb P50 mmHg
Lung pO2
Tissue pO2
Both operating points can also be dragged directly on the curve.
Oxygen binding curves
y axis
Y = [α(1+α)3 + Lcα(1+cα)3] / [(1+α)4 + L(1+cα)4] · α = pO2/KR · c = KR/KT
Hill plot
Try this
  1. Drop pH from 7.6 to 7.2. Which way did the curve move, and why does that help a working muscle?
  2. Set HbCO to 50%, then switch the second panel to O2 content. Saturation still looks respectable — is the patient fine?
  3. Take 2,3-BPG to 0 (banked blood) and drag the tissue point to 20 mmHg. Watch O2 delivered.
  4. With Shift breakdown open, raise PCO2 to 70 and read how much of the shift is H+ and how much is carbamate.

What the protein is actually doing

Everything on this tab is driven by the same state as the curves — move a slider on the Curves tab and these update with it.

Quaternary state: T ⇄ R
L = [T0]/[R0] · allosteric effectors raise L and hold the tetramer in T
T state (tense, low affinity)R state (relaxed, high affinity)
The 2,3-BPG pocket
one BPG per tetramer, in the central cavity between the β chains
Why a sigmoid and not a hyperbola
same lung and tissue pressures — the only difference is cooperativity
Try this
  1. On the Curves tab set 2,3-BPG to 0, then come back and look at the T/R bar. Which state did BPG have been holding the protein in?
  2. Set HbF to 100% and watch the BPG pocket diagram. What changed, and why does that matter to a fetus?
  3. Read the two delivery numbers under the sigmoid-vs-hyperbola plot. That difference is the entire evolutionary argument for cooperativity.

The Bohr effect, taken apart

CO2 reaches hemoglobin by two different routes, and they are not the same mechanism. Below, each contribution to the current P50 is measured separately in mmHg.

Three routes to a right shift
Contribution to the current P50
Δlog P50 attributed mechanism by mechanism
The Haldane effect — the mirror image
deoxygenated hemoglobin carries more CO2 at the same PCO2
Try this
  1. On the Curves tab, switch off the carbamate route and raise PCO2 to 70. How much of the Bohr shift disappears?
  2. Set pH to 7.2 with Independent coupling, then produce the same pH by raising PCO2 with Coupled on. Compare the two P50 values — why aren't they equal?
  3. On the Haldane plot, read the CO2 content difference between arterial and venous blood at the same PCO2. That gap is oxygen doing CO2 transport a favour.

How the curve is actually measured

Simulated tonometry: equilibrate blood at a series of oxygen tensions, read saturation on a co-oximeter, fit a Hill equation. The fit is what gives you a published P50 and n — and noise decides how much you can trust them.

Experiment
Points
Noise ± % sat
Replicates
The fitted values come from a least-squares fit of the Hill equation to the simulated points, not from the model that generated them — so they will not match the true values exactly, and with enough noise they will not match them at all.
Measured saturation and fitted curve
Y = pO2n / (P50n + pO2n)
Try this
  1. Set noise to 0 and 8 points. Now raise noise to 5%. How far can the fitted n drift from the truth?
  2. Press New sample five times at 4% noise and watch the fitted P50. That spread is why papers report a standard error.
  3. Cut the points to 4 and put them all above 60 mmHg — on the flat part. Can the fit still find P50?
cochranlearning.com · biochemistry tutorial module · Y = α(1+α)3 + Lcα(1+cα)3 over (1+α)4 + L(1+cα)4