posts/XSLT/chapter posts/XSLT/code
TARGETS = all clean
-SCONS_SUBDIRS = posts/Pulse_oxymetry
-
-
-all : make-all scons-all
-clean : make-clean scons-clean
+all : make-all
+clean : make-clean
$(TARGETS:%=make-%) :
@for i in $(SUBDIRS); do \
echo "make ${@:make-%=%} in $$i..."; \
(cd $$i; $(MAKE) $(MFLAGS) ${@:make-%=%}); done
-
-scons-all :
- @for i in $(SCONS_SUBDIRS); do \
- echo "scons in $$i..."; \
- (cd $$i; scons); done
-
-scons-clean :
- @for i in $(SCONS_SUBDIRS); do \
- echo "scons -c in $$i..."; \
- (cd $$i; scons -c); done
color: gray;
font-family: monospace;
}
+
+.center {
+ margin-left: auto;
+ margin-right: auto;
+}
+++ /dev/null
-My wife was recently reviewing some [pulse oxymeter][pox] notes while
-working a round of anesthesia. It took us a while to trace the logic
-through all the symbol changes and notation shifts, and my wife's
-math-discomfort and my bio-discomfort made us more cautious than it
-turns out we needed to be. There are a number of nice [review
-articles][art] out there that I turned up while looking for explicit
-derivations, but by the time I'd found them, my working notes had
-gotten fairly well polished themselves. So here's
-[[my_contribution|main.pdf]] to the pulse-ox noise ;). Highlights
-include:
-
-* Short and sweet (with pictures)
-* Symbols table
-* Baby steps during math manipulation
-
-[pox]: http://en.wikipedia.org/wiki/Pulse_oximeter
-[art]: http://journals.lww.com/anesthesiology/Citation/1989/01000/Pulse_Oximetry.19.aspx
-
-[[!tag tags/theory]]
--- /dev/null
+My wife was recently reviewing some [pulse oxymeter][pox] notes while
+working a round of anesthesia. It took us a while to trace the logic
+through all the symbol changes and notation shifts, and my wife's
+math-discomfort and my bio-discomfort made us more cautious than it
+turns out we needed to be. There are a number of nice [review
+articles][art] out there that I turned up while looking for explicit
+derivations, but by the time I'd found them, my working notes had
+gotten fairly well polished themselves. So here's my contribution to
+the pulse-ox noise ;). Highlights include:
+
+* Short and sweet (with pictures)
+* [Symbols table](#nomenclature)
+* Baby steps during math manipulation
+
+Oxygen content
+==============
+
+The circulatory system distributes oxygen ([O₂](#O2)) throughout the
+body. The amount of O₂ at any given point is measured by the O₂
+content ([O₂]), usually given in $\frac{\text{mL O₂ at BTP}}{\text{dL
+blood}}$ ([BTP](#BTP) is my acronym for body temperature and
+pressure). Most transported O₂ is bound to [hemoglobin][]
+([Hb](#Hb)), but there is also free O₂ disolved directly in the plasma
+and cytoplasm of suspended cells.
+
+<a id="eq:O2-symbolic"></a>
+
+
+\[ [\text{O₂}] = a\text{[Hb]}\text{S}_\text{O₂} + b\text{P}_\text{O₂} \;, \]
+
+where [$\text{S}_\text{O₂}$](#S-O2) is the Hb's O₂ saturation and
+[$\text{P}_\text{O₂}$](#P-O2) is the O₂ partial pressure. Don't worry
+about the coefficients $a$ and $b$ yet, we'll get back to them in a
+second.
+
+The amound of dissolved O₂ is given by its [partial pressure][partial]
+($\text{P}_\text{O₂}$). Partial pressures are generally given in mm
+of mercury ([Hg](#Hg)) at standard temperature and pressure
+([STP](#STP)). Because the partial pressure changes as blood flows
+through the body, an additional specifier $i$ may be added
+([$\text{P}i_\text{O₂}$](#Pi-O2)) to clarify the measurement location.
+
+<table id="locations" class="center">
+ <tr><th>$i$</th><th>Full symbol</th><th>Location descriptor</th></tr>
+ <tr><td>a</td><td style="text-align: center">$\text{Pa}_\text{O₂}$</td>
+ <td>arterial</td></tr>
+ <tr><td>p</td><td style="text-align: center">$\text{Pp}_\text{O₂}$</td>
+ <td>peripheral or pulsatile</td></tr>
+ <tr><td>t</td><td style="text-align: center">$\text{Pt}_\text{O₂}$</td>
+ <td>tissue</td></tr>
+ <tr><td>v</td><td style="text-align: center">$\text{Pv}_\text{O₂}$</td>
+ <td>venous</td></tr>
+</table>
+
+O₂ is carried in the blood primarily through binding to hemoglobin
+monomers (Hb), with each monomer potentially binding a single O₂.
+Oxygen saturation ($\text{S}_\text{O₂}$) is the fraction of hemoglobin
+monomers (Hb) that have bound an oxygen molecule (O₂).
+
+<a id="eq:S-O2"></a>
+
+\[ \text{S}_\text{O₂} = \frac{\text{[HbO₂]}}{\text{[Hb]}} \;. \]
+
+The ratio of concentrations, $\text{S}_\text{O₂}$, is unitless. It
+is often expressed as a percentage. [Hb] is often given in g/dL. As
+with partial pressures, an additional specifier $i$ may be added
+([$\text{S}i_\text{O₂}$](#Si-O2)) to clarify the measurement location
+($\text{Sa}_\text{O₂}$, $\text{Sp}_\text{O₂}$, …).
+
+Now we can take a second look at our [O₂ content
+formula](#eq:O2-symbolic). The coefficient $a$ must convert g/dL
+to $\frac{\text{mL O₂ at BTP}}{\text{dL blood}}$. Using the molecular
+weight of Hb and the [volume of a mole of gas at STP][mole-volume]:
+
+<a id="eq:a"></a>
+
+\[
+\begin{aligned}
+ \text{[Hb]} &= \chi \frac{\text{g Hb}}{\text{dL blood}}
+ \cdot\frac{1\text{ mol Hb}}{17\text{ kg Hb}}
+ \cdot\frac{1\text{ mol O₂}}{1\text{ mol Hb}}
+ \cdot\frac{\sim1\text{ mol ideal gas}}{1\text{ mol O₂}}
+ \cdot\frac{22.4\text{ L ideal gas at STP}}{1\text{ mol ideal gas}}
+ \cdot\frac{\sim1\text{ L ideal gas at BTP}}{1\text{ L ideal gas at STP}}
+ \\
+ &\approx
+ \chi \frac{\text{g Hb}}{\text{dL blood}}
+ \cdot 1.32 \frac{\text{mL O₂ at BTP}}{\text{g Hb}}
+ = 1.32\chi \frac{\text{mL O₂ at BTP}}{\text{dL blood}} \;,
+\end{aligned}
+\]
+
+where $\chi$ is a pure number (we're just working out the unit
+conversion here, not converting a particular Hg concentration).
+Therefore, $a=1.32 \frac{\text{mL O₂ at BTP}}{\text{g Hb}}$. The
+powers that be seem to have used a slightly different density, since
+the more commonly used value is 5% higher at $1.39$. Possibly someone
+actually measured the density of O₂ at BTP, because BTP is not STP,
+and O₂ is not an ideal gas.
+
+The coefficient $b$ must convert mm Hg at STP
+to $\frac{\text{mL O₂ at BTP}}{\text{dL blood}}$. Empirical
+experiments (?) give a value
+of $b=0.003\frac{\text{mL O₂ at BTP}}{\text{dL blood ⋅ mm Hg at STP}}$.
+Now we can write out the familiar form
+
+<a id="eq:O2"></a>
+
+\[ \text{[O₂]}
+ = 1.39 \frac{\text{mL O₂ at BTP}}{\text{g Hb}} [Hb] \text{S}_\text{O₂}
+ + 0.003\frac{\text{mL O₂ at BTP}}
+ {\text{dL blood } \cdot \text{ mm Hg at STP}}
+ \text{P}_\text{O₂} \;. \]
+
+Reasonable levels are
+
+<table class="center" style="border-spacing: 40px 0px">
+ <tr><td>[Hb]</td><td>$14\frac{\text{g Hb}}{\text{dL blood}}$</td></tr>
+ <tr><td>$\text{S}_\text{O₂}$</td><td>98%</td></tr>
+ <tr><td>$\text{P}_\text{O₂}$</td><td>100 mm Hg at STP</td></tr>
+ <tr><td>$1.39 \frac{\text{mL O₂}}{\text{g Hb}}\text{[Hb]}\text{S}_\text{O₂}$ </td><td>$19.1\frac{\text{mL O₂ at BTP}}{\text{dL blood}}$</td></tr>
+ <tr><td style="white-space: nowrap">$0.003\frac{\text{mL O₂ at BTP}}
+ {\text{dL blood } \cdot \text{ mm Hg at STP}}\text{P}_\text{O₂}$</td><td>
+ $0.300\frac{\text{mL O₂ at BTP}}{\text{dL blood}}$</td></tr>
+</table>
+
+Because the dissolved O₂ has such a tiny contribution (1.5% of the
+total in my example), it is often measured at STP rather than BTP.
+Sometimes it is dropped from the calculation entirely. We focus on
+the more imporant $\text{[Hb]}\text{S}_\text{O₂}$ in the next section.
+
+Oxygen saturation
+=================
+
+The [preceding](#eq:S-O2) [discussion](#eq:O2)
+used $\text{[Hb]}\text{S}_\text{O₂}$ to represent the concentration of
+HbO₂ complexes. This was useful while we were getting our bearings,
+but now we will replace that term with a more detailed model. Let us
+sort the Hb monomers into species:
+
+* [Hb](#Hb): all hemoglobin monomers
+* [HbO₂](#HHb): monomers complexed with O₂
+* [HHb](#HHb): reduced Hb (not complexed with O₂)
+* [dysHb](#dysHb): dys-hemoglobin (cannot complex with O₂)
+* [MHb](#MHb): methemoglobin
+* [HbCO](#HbCO): carboxyhemoglobin
+
+These species are related as follows
+
+\[
+\begin{aligned}
+ \text{[Hb]} &= \text{[HbO₂]} + \text{[HHb]} + \text{[dysHb]} \\
+ \text{[dysHb]} &= \text{[MHb]} + \text{[HbCO]} + \text{other broken forms}
+\end{aligned}
+\]
+
+Because modern two-color pulse-oximeters don't
+measure $\text{S}_\text{O₂}$ exactly, the related quantity that they
+*do* measure has been given a name of its own: the *functional*
+saturation ([$\text{Sf}_\text{O₂}$](#Sf-O2)).
+
+<a id="eq:Sfunc-O2"></a>
+
+\[
+ \text{Sf}_\text{O₂} = \frac{\text{[HbO₂]}}{\text{[HbO₂]} + \text{[HHb]}} \;.
+\]
+
+Rephrasing our [earlier saturation](#eq:S-O2), we see
+
+<a id="eq:Sfrac-O2"></a>
+
+\[
+ \text{S}_\text{O₂} = \frac{\text{[HbO₂]}}{\text{[Hb]}}
+ = \frac{\text{[HbO₂]}}{\text{[HbO₂]} + \text{[HHb]} + \text{[dysHb]}} \;.
+\]
+
+To avoid confusion with $\text{Sf}_\text{O₂}$, our
+original $\text{S}_\text{O₂}$ is sometimes referred to as the
+*fractional* saturation.
+
+The Beer-Labmert law
+====================
+
+So far we've been labeling and defining attributes of the blood. The
+point of this excercise is to understand how a pulse oximeter measures
+them. People have known for a while that different hemoglobin
+complexes (HbO₂, HHb, MHb, HbCO, …) have differnt absorbtion
+spectra (Fig.~\ref{fig:absorbtion}), and they have been using this
+difference since the 1930's to make pulse-oximeters based on two-color
+transmittance measurements (see [Tremper 1989][T89]).
+
+[[!img absorbtion.png
+ size="600x418"
+ alt="Absorbance spectra for assorted hemoglobin species"
+ caption="Absorbance spectra for assorted hemoglobin species (Tremper 1989)"]]
+
+By passing different wavelengths of light through perfused tissue, we
+can measure the relative quantities of the different Hb species.
+The basis for this analysis comes from the [Beer-Lambert law][BL].
+
+<a id="eq:BL"></a>
+
+\[ I = I_0 e^{-c \epsilon L} \;, \]
+
+where [$I_0$](#I0) is the incident intensity (entering the tissue),
+[$I$](#I0lambda) is the tranmitted intensity (leaving the tissue),
+[$c$](#c) is the tissue density (concentration),
+[$\epsilon$](#eilambda) is the extinction coefficient (molar
+absorbtivity), and [$L$](#L) is the tissue thickness. Rephrasing the
+math as English, this means that the intensity drops off exponentially
+as you pass through the tissue, and more tissue (higher $c$ or $L$) or
+more opaque tissue (higher $\epsilon$) mean you'll get less light out
+the far side. This is a very simple law, and the price of the
+simplicity is that it brushes all sorts of things under the rug.
+Still, it will help give us a basic idea of what is going on in a
+pulse-oximeter.
+
+Rather than treat the the tissue as a single substance, lets use the
+Beer-Labmert law on a mixture of substances with
+concentrations $c_1$, $c_2$, … and extinction
+coefficients $\epsilon_1$, $\epsilon_2$, ….
+
+\[ I = I_0 e^{-(c_1 \epsilon_1 + c_2 \epsilon_2 + \ldots) L} \;. \]
+
+We also notice that the intensities and extinction coefficients may
+all depend on the wavelength of light $\lambda$, so we should really
+write
+
+<a id="eq:BL-lambda"></a>
+
+\[
+ I_\lambda = I_{0\lambda} e^{-(c_1 \epsilon_{1\lambda}
+ + c_2 \epsilon_{2\lambda} + \ldots) L} \;.
+\]
+
+Once isolated, a simple spectroscopy experiment can measure the
+extinction coefficient [$\epsilon_{i\lambda}$](#eilambda) of a given
+species across a range of $\lambda$, and this has been done for all of
+our common Hb flavors. We need to play with the last equation to find
+a way to extract the unknown concentrations, which we can then use to
+[calculate the $\text{Sf}_\text{O₂}$](#eq:Sfunc-O2) and
+[$\text{S}_\text{O₂}$](#eq:Sfrac-O2) which we can use in turn to
+calculate [$\text{[O₂]}$](#eq:O2).
+
+Note that by increasing the number of [LEDs](#LED) (adding
+new $\lambda$) we increase the number of constraints on the
+unknown $c_i$. A traditional pulse-oximeter uses two LEDs, at 660 nm
+and 940 nm, to measure $\text{Sf}_\text{O₂}$ (related to [HbO₂] and
+[HHb]). More recent designs called [pulse CO-oximeters][CO-ox] use
+more wavelengths to allow measurement of quanties related to
+additional species (approaching the end goal of
+measuring $\text{S}_\text{O₂}$).
+
+Let us deal with the fact that there is a lot of stuff absorbing light
+that is not arterial blood (e.g. venous blood, other tissue, bone,
+etc). The good thing about this stuff is that it's just sitting there
+or moving through in a smooth fasion. Arterial blood is the only
+thing that's pulsing. Here's another figure from [Tremper][T89]:
+
+<a id="fig:ac-dc"></a>
+
+[[!img ac-dc.png
+ size="600x204"
+ alt="AC and DC transmission components"
+ caption="AC and DC transmission components (Tremper)"]]
+
+During a pulse, the pressure in the finger increases and non-arterial
+tissue is compressed, changing $L$ and $c_i$ from their trough values
+to peak values $L'$ and $c_i'$. Since the finger is big, the
+fractional change in width $\mathrm{d} L/L=(L'-L)/L$ is very small.
+Assuming the change in concentration is even smaller (since most
+liquids are fairly incompressible), we have
+
+<a id="eq:dI-I-naive"></a>
+
+\[
+\begin{aligned}
+ \frac{\mathrm{d} I_\lambda}{\mathrm{d} L}
+ &= \frac{\mathrm{d}}{\mathrm{d}L}
+ \left(I_{0\lambda}
+ e^{-(c_1 \epsilon_{1\lambda}
+ + c_2 \epsilon_{2\lambda} + \ldots) L}\right)
+ = \frac{\mathrm{d}}{\mathrm{d} L} \left( I_{0\lambda} e^{-X L} \right)
+ = -X I_{0\lambda} e^{-X L}
+ = -XI_\lambda \\
+ \frac{\mathrm{d} I_\lambda}{I_\lambda}
+ &= -X \mathrm{d} L \;,
+\end{aligned}
+\]
+
+where $X=c_1 \epsilon_{1\lambda} + c_2 \epsilon_{2\labmda} + \ldots$
+is just a placeholder to reduce clutter. $\mathrm{d} I_\lambda$ is
+the AC amplitude (height of wiggle top of the detected light intensity
+due to pulsatile arterial blood), while $I_\lambda$ is the DC ampltude
+(height of the static base of the detected light intensity due to
+everything else). This is actually a fairly sneaky step, because if
+we can also use it to drop the DC compents. Because we've assumed
+fixed concentrations (incompressible fluids), and there is no more DC
+material coming in during a pulse (by definition), the effective $L$
+for the DC components does not change. Separating the DC and AC
+components and running through the derivative again, we have
+
+<a id="eq:dI-I"></a>
+
+\[
+\begin{aligned}
+ \frac{\mathrm{d} I_\lambda}{\mathrm{d} L}
+ &= \frac{\mathrm{d}}{\mathrm{d} L} \left(
+ I_{0\lambda}
+ e^{-(c_{\text{DC}1}\epsilon_{\text{DC}1\lambda}
+ +c_{\text{DC}2}\epsilon_{\text{DC}2\lambda} + \ldots)
+ L_\text{DC}
+ -(c_{\text{AC}1}\epsilon_{\text{AC}1\lambda}
+ +c_{\text{AC}2}\epsilon_{\text{AC}2\lambda} + \ldots)
+ L_\text{AC}}
+ \right) \\
+ &= I_{0\lambda}
+ e^{-(c_{\text{DC}1}\epsilon_{\text{DC}1\lambda}
+ +c_{\text{DC}2}\epsilon_{\text{DC}2\lambda} + \ldots)
+ L_\text{DC}}
+ \frac{\mathrm{d}}{\mathrm{d} L} \left(
+ e^{-(c_{\text{AC}1}\epsilon_{\text{AC}1\lambda}
+ +c_{\text{AC}2}\epsilon_{\text{AC}2\lambda} + \ldots)
+ L_\text{AC}}
+ \right) \\
+ &= I_{0\lambda} Y \frac{\mathrm{d}}{\mathrm{d} L} \left(
+ e^{-Z L_\text{AC}} \right)
+ = -Z I_{0\lambda} Y e^{-Z L_\text{AC}}
+ = -Z I_\lambda \\
+ \frac{\mathrm{d} I_\lambda}{I_\lambda} &= -Z \mathrm{d} L \;,
+\end{aligned}
+\]
+
+where $Y=e^{-(c_{\text{DC}1}\epsilon_{\text{DC}1\lambda}
+ +c_{\text{DC}2}\epsilon_{\text{DC}2\lambda} + \ldots)
+ L_\text{DC}}$
+and $Z=c_{\text{AC}1}\epsilon_{\text{AC}1\lambda}
+ +c_{\text{AC}2}\epsilon_{\text{AC}2\lambda} + \ldots)$
+are just placeholders to reduce clutter. Note that the [last
+equation](#eq:dI-I) looks just like the [previous one](#eq:dI-I-naive)
+with the translation $X\rightarrow Z$. This means that if we stick to
+using the AC-DC intensity ratio ($\frac{\mathrm{d} \Il}{\Il}$) we can
+forget about the DC contribution completely.
+
+If the changing-$L$-but-static-$L_\text{DC}$ thing bothers you, you
+can imagine insteadthat $L_\text{DC}$ grows with $L$,
+but $c_{\text{DC}i}$ shrinks proportially (to conserve mass). With
+this proportionate stretching, there is still no change in absorbtion
+for that component
+so $\frac{\mathrm{d}}{\mathrm{d}L}\exp(-c_{\text{DC}i}\epsilon_{\text{DC}i\lambda}L)=0$
+and we can still pull the DC terms out of the integral as we
+[just did](#eq:dI-I).
+
+Taking a ratio of these amplitudes at two different wavelengths, we
+get optical density ratio ([R](#R))
+
+<a id="eq:R-Z"></a>
+
+\[
+ R = \frac{\frac{\text{AC}_{660}}{\text{DC}_{660}}}
+ {\frac{\text{AC}_{940}}{\text{DC}_{940}}}
+ = \frac{\frac{\mathrm{d} I_{660}}{I_{660}}}
+ {\frac{\mathrm{d} I_{940}}{I_{940}}}
+ = \frac{-Z_{660} \mathrm{d} L}{-Z_{940} \mathrm{d} L}
+ = \frac{Z_{660}}{Z_{940}} \;,
+\]
+
+because $\mathrm{d} L$ (the amount of finger expansion during a pulse)
+obviously doesn't depend on the color light you are using. Plugging
+back in for $Z$,
+
+<a id="R-ce"></a>
+
+\[
+ R = \frac{c_{\text{AC}1}\epsilon_{\text{AC}1,660}
+ + c_{\text{AC}2}\epsilon_{\text{AC}2,660} + \ldots}
+ {c_{\text{AC}1}\epsilon_{\text{AC}1,940}
+ + c_{\text{AC}2}\epsilon_{\text{AC}2,940} + \ldots}
+\]
+
+Assuming, for now, that there are only two species of Hb—HbO₂ and
+HHb—we can solve for $c_{\text{AC}1}/c_{\text{AC}2}$.
+
+\[
+\begin{aligned}
+ R &= \frac{c_{\text{AC}1}\epsilon_{\text{AC}1,660}
+ + c_{\text{AC}2}\epsilon_{\text{AC}2,660}}
+ {c_{\text{AC}1}\epsilon_{\text{AC}1,940}
+ + c_{\text{AC}2}\epsilon_{\text{AC}2,940}} \\
+ R(c_{\text{AC}1}\epsilon_{\text{AC}1,940}
+ + c_{\text{AC}2}\epsilon_{\text{AC}2,940})
+ &= c_{\text{AC}1}\epsilon_{\text{AC}1,660}
+ + c_{\text{AC}2}\epsilon_{\text{AC}2,660} \\
+ c_{\text{AC}1} (R\epsilon_{\text{AC}1,940} - \epsilon_{\text{AC}1,660})
+ &= c_{\text{AC}2} (\epsilon_{\text{AC}2,660} - R\epsilon_{\text{AC}2,940})
+ \\
+ \frac{c_{\text{AC}1}}{c_{\text{AC}2}}
+ &= \frac{\epsilon_{\text{AC}2,660} - R\epsilon_{\text{AC}2,940}}
+ {R\epsilon_{\text{AC}1,940} - \epsilon_{\text{AC}1,660}}
+ \;.
+\end{aligned}
+\]
+
+So now we know [HbO₂]/[HHb] in terms of the measured quantity $R$ and
+the empirical values $\epsilon$.
+
+Plugging in to our [equation for $\text{Sf}_\text{O₂}$](#eq:Sfunc-O2)
+to find the functional saturation:
+
+<a id="eq:Sfunc-O2-R"></a>
+
+\[
+\begin{aligned}
+ \text{Sf}_\text{O₂} &= \frac{\text{[HbO₂]}}{\text{[HbO₂]} + \text{[HHb]}}
+ = \frac{1}{1 + \frac{\text{[HHb]}}{\text{[HbO₂]}}}
+ = \frac{1}{1 + \frac{c_{\text{AC}2}}{c_{\text{AC}1}}}
+ = \frac{1}
+ {1 + \frac{R\epsilon_{\text{AC}1,940} - \epsilon_{\text{AC}1,660}}
+ {\epsilon_{\text{AC}2,660} - R\epsilon_{\text{AC}2,940}}}
+ \;.
+\end{aligned}
+\]
+
+As a check, we can rephrase this as
+
+\[
+\begin{aligned}
+ \text{Sf}_\text{O₂}
+ &= \frac{1}
+ {1 + \frac{R\epsilon_{\text{AC}1,940} - \epsilon_{\text{AC}1,660}}
+ {\epsilon_{\text{AC}2,660} - R\epsilon_{\text{AC}2,940}}}
+ = \frac{\epsilon_{\text{AC}2,660} - R\epsilon_{\text{AC}2,940}}
+ {\epsilon_{\text{AC}2,660} - R\epsilon_{\text{AC}2,940}
+ + R\epsilon_{\text{AC}1,940} - \epsilon_{\text{AC}1,660}} \\
+ &= \frac{\epsilon_{\text{AC}2,660} - R\epsilon_{\text{AC}2,940}}
+ {\epsilon_{\text{AC}2,660} - \epsilon_{\text{AC}1,660}
+ + (\epsilon_{\text{AC}1,940} - \epsilon_{\text{AC}2,940})R}
+ = \frac{-\epsilon_{\text{AC}2,660} + \epsilon_{\text{AC}2,940}R}
+ {\epsilon_{\text{AC}1,660} - \epsilon_{\text{AC}2,660}
+ + (\epsilon_{\text{AC}2,940} - \epsilon_{\text{AC}1,940})R}
+ \;,
+\end{aligned}
+\]
+
+which matches [Mendelson 1989][M89], Eq. 8 with the translations:
+
+* $\text{Sf}_\text{O₂}\rightarrow Sp\text{O₂}$,
+* $R\rightarrow R/IR$,
+* $\epsilon_{\text{AC}2,660}\rightarrow\epsilon_R(\text{Hb})$,
+* $\epsilon_{\text{AC}2,940}\rightarrow\epsilon_IR(\text{Hb})$,
+* $\epsilon_{\text{AC}1,660}\rightarrow\epsilon_R(\text{HbO₂})$, and
+* $\epsilon_{\text{AC}1,940}\rightarrow\epsilon_IR(\text{HbO₂})$.
+
+And that is the first-order explaination of how a pulse-oximeter
+measures the functional saturation!
+
+Reading extinction coefficients off the [absorbtion
+figure](#fig:absorbtion), I get
+
+\[
+\begin{aligned}
+ \epsilon_{\text{HbO₂},660} &= \epsilon_{\text{AC}1,660} = 0.10 \\
+ \epsilon_{\text{HHb},660} &= \epsilon_{\text{AC}2,660} = 0.83 \\
+ \epsilon_{\text{HbO₂},940} &= \epsilon_{\text{AC}1,940} = 0.29 \\
+ \epsilon_{\text{HHb},940} &= \epsilon_{\text{AC}2,940} = 0.17
+\end{aligned}
+\]
+
+which are comfortingly close to those given by [Mendelson][M89] in
+Table 1. The corresponding $\text{Sf}_\text{O₂}(R)$ plot (from
+[Tremper][T89]) is:
+
+[[!img SPO2vR.png
+ size="400x330"
+ alt="Experimental SpO₂ vs. R"
+ caption="Experimental SpO₂ vs. R (Tremper)"]]
+
+[[!img SfO2vR-theory.png
+ size="300x300"
+ alt="Theoretical SfO₂ vs. R"
+ caption="Theoretical SfO₂ vs. R."]]
+
+The theoretical plot was calculated using [[SfO2vR-theory.py]] and
+[our $\text{Sf}_\text{O₂}$ equation](#eq:Sfunc-O2-R). This is why
+it’s a good idea to use an empirical calibration curve! The concave
+theoretical curve is supported by [Mendelson's figure 4][M89].
+
+<!-- because LEDs are finicky, it's hard to know how bright they are
+without looking ;). Therefore, we'd like to work $I_{0\lambda}$ out
+of the picture. As blood pulses through the finger, imagine that the
+concentrations -->
+
+<a id="nomenclature"></a>
+
+Nomenclature
+============
+
+<dl>
+ <dt id="O2">O₂</dt><dd>Molecular oxygen</dd>
+ <dt id="[x]">[$x$]</dt><dd>Concentration of $x$ in the blood</dd>
+ <dt id="BTP">BTP</dt><dd>Body temperature and pressure</dd>
+ <dt id="STP">STP</dt>
+ <dd><a href="http://en.wikipedia.org/wiki/Standard_conditions_for_temperature_and_pressure">
+ Standard temperature and pressure</a></dd>
+ <dt id="P-O2">$\text{P}_\text{O₂}$</dt><dd>O₂ partial pressure</dd>
+ <dt id="Pi-O2">$\text{P}i_\text{O₂}$</dt>
+ <dd>O₂ partial pressure at <a href="#locations">location $i$</a></dd>
+ <dt id="S-O2">$\text{S}_\text{O₂}$</dt>
+ <dd><a href="#eq:Sfrac-O2">Fractional O₂ saturation</a></dd>
+ <dt id="Si-O2">$\text{S}i_\text{O₂}$</dt>
+ <dd>O₂ fractional saturation at <a href="#locations">location $i$</a></dd>
+ <dt id="Sf-O2">$\text{Sf}_\text{O₂}$</dt>
+ <dd><a href="#eq:Sfunc-O2">Functional O₂ saturation</a></dd>
+ <dt id="Hg">Hg</dt><dd>Mercury</dd>
+ <dt id="Hb">Hb</dt><dd>Hemoglobin monomer</dd>
+ <dt id="HbO2">HbO₂</dt><dd>Hemoglobin monomers complexed with O₂</dd>
+ <dt id="HHb">HHb</dt><dd>Reduced hemoglobin (not complexed with O₂)</dd>
+ <dt id="dysHb">dysHb</dt><dd>Dys-hemoglobin (cannot complex with O₂)</dd>
+ <dt id="MHb">MHb</dt>
+ <dd><a href="http://en.wikipedia.org/wiki/Methemoglobin">
+ Methemoglobin</a></dd>
+ <dt id="HbCO">HbCO</dt>
+ <dd><a href="http://en.wikipedia.org/wiki/Carboxyhemoglobin">
+ Carboxyhemoglobin</a></dd>
+ <dt id="I0lambda">$I_{0\lambda}$</dt>
+ <dd>Intensity of incident light at wavelength $\lambda$</dd>
+ <dt id="Ilambda">$I_\lambda$</dt>
+ <dd>Intensity of transmitted light at wavelength $\lambda$</dd>
+ <dt id="ci">$c_i$</dt>
+ <dd>Concentration of light-absorbing species $i$</dd>
+ <dt id="cDCi">$c_{\text{DC}i}$</dt>
+ <dd>Concentration of the $i$th DC species at wavelength $\lambda$</dd>
+ <dt id="cACi">$c_{\text{AC}i}$</dt>
+ <dd>Concentration of the $i$th AC species at wavelength $\lambda$</dd>
+ <dt id="eilambda">$\epsilon_{i\lambda}$</dt>
+ <dd>Extinction coefficient of species $i$ at wavelength $\lambda$</dd>
+ <dt id="eDCilambda">$\epsilon_{\text{DC}i\lambda}$</dt>
+ <dd>Extinction coefficient of the $i$th DC species
+ wavelength $\lambda$</dd>
+ <dt id="eACilambda">$\epsilon_{\text{DC}i\lambda}$</dt>
+ <dd>Extinction coefficient of the $i$th DC species
+ wavelength $\lambda$</dd>
+ <dt id="L">$L$</dt><dd>Length of tissue through which light must pass</dd>
+ <dt id="LDC">$L_\text{DC}$</dt><dd>Diastolic finger width</dd>
+ <dt id="R">$R$</dt><dd>Optical density ratio}</dd>
+ <dt id="LED">LED</dt><dd>Light emitting diode</dd>
+</dl>
+
+
+[pox]: http://en.wikipedia.org/wiki/Pulse_oximeter
+[art]: http://journals.lww.com/anesthesiology/Citation/1989/01000/Pulse_Oximetry.19.aspx
+[hemoglobin]: http://en.wikipedia.org/wiki/Hemoglobin
+[partial]: http://en.wikipedia.org/wiki/Partial_pressure
+[mole-volume]: http://hyperphysics.phy-astr.gsu.edu/hbase/kinetic/idegas.html
+[T89]: http://journals.lww.com/anesthesiology/Citation/1989/01000/Pulse_Oximetry.19.aspx
+[BL]: http://en.wikipedia.org/wiki/Beer\%E2\%80\%93Lambert_law
+[CO-ox]: http://en.wikipedia.org/wiki/Co-oximeter
+[M89]: http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=30810
+
+[[!tag tags/theory]]
+++ /dev/null
-import os
-
-env = Environment(ENV=os.environ)
-
-main = env.PDF('main.tex')
-SfO2vR_theory = env.Command(
- 'fig/SfO2vR-theory.png', 'fig/SfO2vR-theory.py', 'python $SOURCE')
-env.Depends(main, SfO2vR_theory)
-
-view = env.Alias('view', [main], 'xpdf -z page $SOURCE')
-env.AlwaysBuild(view)
+++ /dev/null
-@article { tremper1989,
- author = "Tremper, Kevin K. and Barker, Steven J.",
- title = "Pulse Oximetry",
- year = 1989,
- month = jan,
- journal = "Anesthesiology",
- issn = "0003-3022",
- volume = 70,
- number = 1,
- pages = "98--108",
- url = "http://journals.lww.com/anesthesiology/Citation/1989/01000/Pulse_Oximetry.19.aspx",
-}
-
-@article { mendelson1989,
- author = "Mendelson, Yitzhak and Kent, Joel C.",
- title = "Variations in Optical Absorbtion Spectra of Aduly and Fetal Hemoglobins and ITs Effect on Pulse Oximetry",
- year = 1989,
- month = aug,
- journal = "IEE Transactions on Biomedical Engineering",
- issn = "0018-9294",
- volume = 36,
- number = 8,
- pages = "844--848",
- url = "http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=30810",
-}
+++ /dev/null
-\documentclass{article}
-
-\usepackage{amsmath} % align and other math niceties
-\usepackage{makeidx} % indexing
-\makeindex % we don't actually use indexing, but having this here
- % triggers Scons' call to makeindex
-\usepackage[intoc]{nomencl} % nomenclature/symbol/abbreviation indexing
-\makenomenclature
-
-\usepackage[super,sort&compress,comma]{natbib} % fancy citation extensions
-% super selects citations in superscript mode
-% sort&compress automatically sorts and compresses compound citations
-% (\citep{a,b,...})
-% comma seperates multiple citations with commas rather than the
-% default semicolons.
-\bibliographystyle{unsrtnat} % number citations in the order referenced
-
-\usepackage{subfig} % compound figures
-\usepackage{graphicx} % include graphics
-
-\usepackage[final]{hyperref} % hyper-links
-\hypersetup{colorlinks}
-\hypersetup{pdfauthor={W. Trevor King}}
-\hypersetup{pdftitle={Pulse Oximetry}}
-\hypersetup{pdfsubject={Pulse Oximetry}}
-\title{Pulse Oximetry}
-\date{\today}
-\author{W. Trevor King}
-
-% parenthesis, for example (some stuff] would be \p({some stuff}]
-\newcommand{\p}[3]{\left#1 #2 \right#3}
-% concentration shortcut
-\newcommand{\C}[1]{\ensuremath{\p[{#1}]}}
-% the proper d to be used in derivatives and integrals
-\newcommand{\dd}{\ensuremath{\mathrm d}}
-% derivative of #2 with respect to #1
-\newcommand{\deriv}[2]{\ensuremath{\frac{\dd{#2}}{\dd{#1}}}}
-% average of #1
-\newcommand{\avg}[1]{\ensuremath{\left\langle {#1} \right\rangle}} % average
-% units without preceding value
-\newcommand{\bareU}[1]{\textnormal{#1}}
-% units shortcut
-\newcommand{\U}[1]{\textnormal{\ \bareU{#1}}}
-
-% chemicals and molecules
-\newcommand{\Ox}{\ensuremath{\mathrm O_2}}
-\newcommand{\Hb}{\ensuremath{\mathrm{Hb}}}
-\newcommand{\HHb}{\ensuremath{\mathrm{HHb}}}
-\newcommand{\dysHb}{\ensuremath{\mathrm{dysHb}}}
-\newcommand{\MHb}{\ensuremath{\mathrm{MHb}}}
-\newcommand{\CO}{\ensuremath{\mathrm{CO}}}
-\newcommand{\Hg}{\ensuremath{\mathrm{Hg}}}
-
-\newcommand{\xO}[1]{\ensuremath{{\mathrm{#1}}_{\Ox}}}
-
-% partial pressure PiO2
-\newcommand{\PxO}[1]{\xO{P#1}}
-\newcommand{\PO}{\PxO{}}
-\newcommand{\PiO}{\PxO{\mathit i}}
-
-% saturation SiO2. Also O2Sat
-\newcommand{\SxO}[1]{\xO{S#1}}
-\newcommand{\SO}{\SxO{}}
-\newcommand{\SiO}{\SxO{\mathit i}}
-
-% functional saturation
-\newcommand{\SOf}{\xO{S_{\mathit f}}}
-
-% content CoO2. Also O2CT.
-\newcommand{\CoO}{\xO{Co}}
-
-% Beer-Lambert law coefficients
-\newcommand{\Iol}{\ensuremath{I_{0 \lambda}}}
-\newcommand{\Il}{\ensuremath{I_\lambda}}
-\newcommand{\Iacl}{\ensuremath{I_{AC\lambda}}}
-\newcommand{\Idcl}{\ensuremath{I_{DC\lambda}}}
-\newcommand{\exl}[1]{\ensuremath{\epsilon_{#1 \lambda}}}
-\newcommand{\eil}{\exl{i}}
-\newcommand{\cdcx}[1]{\ensuremath{c_{DC#1 \lambda}}}
-\newcommand{\cdci}{\cdcx{i}}
-\newcommand{\cacx}[1]{\ensuremath{c_{AC#1}}}
-\newcommand{\caci}{\cacx{i}}
-\newcommand{\edcxl}[1]{\ensuremath{\epsilon_{DC#1 \lambda}}}
-\newcommand{\edcil}{\edcxl{i}}
-\newcommand{\eacxl}[1]{\ensuremath{\epsilon_{AC#1 \lambda}}}
-\newcommand{\eacil}{\eacxl{i}}
-\newcommand{\eiA}[1]{\ensuremath{\epsilon_{AC#1,660}}}
-\newcommand{\eiB}[1]{\ensuremath{\epsilon_{AC#1,940}}}
-\newcommand{\Ldc}{\ensuremath{L_{\mathrm{DC}}}}
-
-% use most of the page
-\topmargin -0.5in
-\headheight 0.0in
-\headsep 0.0in
-\textheight 9.5in % leave a bit of extra room for page numbers
-\oddsidemargin -0.5in
-\textwidth 7.5in
-
-\begin{document}
-
-\maketitle
-
-\section{Oxygen content}
-
-The circulatory system distributes oxygen (\Ox) throughout the body.
-The amount of \Ox\ at any given point is measured by the \Ox\ content
-(\CoO), usually given in $\frac{\bareU{mL \Ox at BTP}}{\bareU{dL blood}}$
-(BTP is my acronym for body temperature and pressure). Most
-transported \Ox\ is bound to
-\href{http://en.wikipedia.org/wiki/Hemoglobin}{hemoglobin} (\Hb), but
-there is also free \Ox\ disolved directly in the plasma and cytoplasm
-of suspended cells.
-\nomenclature{\Ox}{Molecular oxygen}
-\nomenclature{\CoO}{Oxygen content of blood}
-\nomenclature{BTP}{Body temperature and pressure}
-\nomenclature{\Hb}{Hemoglobin monomer}
-\nomenclature{\SO}{Fractional \Ox\ saturation}
-\nomenclature{\PO}{\Ox\ partial pressure}
-\begin{equation}
- \CoO = a\C{\Hb}\SO + b\PO \;, \label{eq:CoO-symbolic}
-\end{equation}
-where \SO is the \Hb's \Ox\ saturation and \PO is the \Ox\ partial
-pressure. Don't worry about the coefficients $a$ and $b$ yet, we'll
-get back to them in a second.
-
-The amound of dissolved \Ox is given by its
-\href{http://en.wikipedia.org/wiki/Partial_pressure}{partial pressure}
-(\PO). Partial pressures are generally given in \bareU{mm} of mercury
-(\Hg) at standard temperature and pressure
-(\href{http://en.wikipedia.org/wiki/Standard_conditions_for_temperature_and_pressure}{STP}).
-Because the partial pressure changes as blood flows through the body,
-an additional specifier $i$ may be added (\PiO) to clarify the
-measurement location. \nomenclature{\Hg}{Mercury}
-\nomenclature{STP}{Standard temperature and pressure}
-\nomenclature{\PiO}{\Ox\ partial pressure at location $i$}
-\begin{center}
-\begin{tabular}{ccl}
- $i$ & Full symbol & Location descriptor \\
- a & \PxO{a} & arterial \\
- p & \PxO{p} & peripheral or pulsatile \\
- t & \PxO{t} & tissue \\
- v & \PxO{t} & venous \\
-\end{tabular}
-\end{center}
-
-\Ox\ is carried in the blood primarily through binding to hemoglobin
-monomers (\Hb), with each monomer potentially binding a single \Ox.
-Oxygen saturation (\SO) is the fraction of hemoglobin monomers (\Hb)
-that have bound an oxygen molecule (\Ox).
-\begin{equation}
- \SO = \frac{\C{\Hb\Ox}}{\C{\Hb}} \;. \label{eq:SO}
-\end{equation}
-\SO, as a ratio of concentrations, is unitless. It is often expressed
-as a percentage. \C{\Hb} is often given in \bareU{g/dL}. As with
-partial pressures, an additional specifier $i$ may be added (\SiO) to
-clarify the measurement location (\SxO{a}, \SxO{p}, \ldots).
-\nomenclature{\SiO}{\Ox\ saturation at location $i$}
-
-Now we can take a second look at our \Ox\ content formula
-(Eq.~\ref{eq:CoO-symbolic}). The coefficient $a$ must convert
-\bareU{g/dL} to $\frac{\bareU{mL \Ox\ at BTP}}{\bareU{dL blood}}$.
-Using the molecular weight of \Hb\ and the
-\href{http://hyperphysics.phy-astr.gsu.edu/hbase/kinetic/idegas.html}{volume
- of a mole of ideal gas at STP}.
-\begin{align}
- \C{\Hb} &= \chi\frac{\bareU{g \Hb}}{\bareU{dL}}
- \cdot\frac{1\U{mol \Hb}}{17\U{kg \Hb}}
- \cdot\frac{1\U{mol \Ox}}{1\U{mol \Hb}}
- \cdot\frac{22.4\U{L ideal gas}}{1\U{mol ideal gas}} \\
- &= 1.32 \frac{\bareU{mL \Ox}}{\bareU{g \Hb}} \cdot \chi
-\end{align}
-where $\chi$ is a pure number. Therefore, $a=1.32 \frac{\bareU{mL
- \Ox}}{\bareU{g \Hb}}$. The powers that be seem to have used a
-slightly different STP, since the more commonly used value is 5\%
-higher at $1.39$.
-
-The coefficient $b$ must convert \bareU{mm \Hg\ at STP} to
-$\frac{\bareU{mL \Ox\ at BTP}}{\bareU{dL blood}}$. Empirical
-experiments (?) give a value of
-$b=0.003\frac{\bareU{mL \Ox\ at BTP}}
- {\bareU{dL blood $\cdot$ mm \Hg\ at STP}}$.
-Now we can write out the familiar form
-\begin{equation}
- \CoO =
- 1.39 \frac{\bareU{mL \Ox}}{\bareU{g \Hb}} \C{\Hb}\SO
- + 0.003\frac{\bareU{mL \Ox\ at BTP}}
- {\bareU{dL blood $\cdot$ mm \Hg\ at STP}}
- \PO \;. \label{eq:CoO}
-\end{equation}
-Reasonable levels are
-\begin{center}
-\begin{tabular}{rl}
- $\C{\Hb}$ & $14\frac{\bareU{g \Hb}}{\bareU{dL blood}}$ \\
- $\SO$ & 98\% \\
- $\PO$ & $100\U{mm \Hg\ at STP}$ \\
- $1.39 \frac{\bareU{mL \Ox}}{\bareU{g \Hb}} \C{\Hb}\SO$ &
- $19.1\frac{\bareU{mL \Ox\ at BTP}}{\bareU{dL blood}}$ \\
- $0.003\frac{\bareU{mL \Ox\ at BTP}}
- {\bareU{dL blood $\cdot$ mm \Hg\ at STP}}
- \PO$ &
- $0.299\frac{\bareU{mL \Ox\ at BTP}}{\bareU{dL blood}}$
-\end{tabular}
-\end{center}
-Because the dissolved \Ox\ has such a tiny contribution (1.5\% of the
-total in my example), it is often measured at BTP rather than STP.
-Sometimes it is dropped from the calculation entirely. We focus on
-the more imporant $\C{\Hb}\SO$ in the next section.
-
-\section{Oxygen saturation}
-
-The preceding discussion used $\C{\Hb}\SO$ to represent the
-concentration of \Hb\Ox\ complexes (Eqs.~\ref{eq:SO} and
-~\ref{eq:CoO}). This was useful while we were getting our bearings,
-but now we will replace that term with a more detailed model. Let us
-sort the \Hb\ monomers into species
-\begin{center}
-\begin{tabular}{ll}
- \Hb & all hemoglobin monomers \\
- \Hb\Ox & monomers complexed with \Ox \\
- \HHb & reduced \Hb\ (not complexed with \Ox) \\
- \dysHb & dys-hemoglobin (cannot complex with \Ox) \\
- \MHb & \href{http://en.wikipedia.org/wiki/Methemoglobin}{methemoglobin} \\
- \Hb\CO & \href{http://en.wikipedia.org/wiki/Carboxyhemoglobin}
- {carboxyhemoglobin}
-\end{tabular}
-\end{center}
-\nomenclature{\Hb\Ox}{\Hb\ monomers complexed with \Ox}
-\nomenclature{\HHb}{Reduced \Hb\ (not complexed with \Ox)}
-\nomenclature{\dysHb}{Dys-hemoglobin (cannot complex with \Ox)}
-\nomenclature{\MHb}{Methemoglobin}
-\nomenclature{\Hb\CO}{Carboxyhemoglobin}
-These species are related as follows
-\begin{align}
- \C{\Hb} &= \C{\Hb\Ox} + \C{\HHb} + \C{\dysHb} \\
- \C{\dysHb} &= \C{\MHb} + \C{\Hb\CO} + \text{other broken forms}
-\end{align}
-
-Because modern two-color pulse-oximeters don't measure \SO exactly,
-the related quantity that they \emph{do} measure has been given a name
-of its own: the \emph{functional} saturation (\SOf).
-\nomenclature{\SOf}{Functional \Ox\ saturation}
-\begin{equation}
- \SOf = \frac{\C{\Hb\Ox}}{\C{\Hb\Ox} + \C{\HHb}} \;. \label{eq:funcSO}
-\end{equation}
-Rephrasing our earier saturation in Eq.~\ref{eq:SO}, we see
-\begin{equation}
- \SO = \frac{\C{\Hb\Ox}}{\C{\Hb}}
- = \frac{\C{\Hb\Ox}}
- {\C{\Hb\Ox} + \C{\HHb} + \C{\dysHb}} \;. \label{eq:fracSO}
-\end{equation}
-To avoid confusion with \SOf, our original \SO\ is sometimes referred
-to as the\emph{fractional} saturation.
-
-\section{The Beer-Labmert law}
-
-So far we've been labeling and defining attributes of the blood. The
-point of this excercise is to understand how a pulse oximeter measures
-them. People have known for a while that different hemoglobin
-complexes (\Hb\O, \HHb, \MHb, \Hb\CO, \ldots) have differnt absorbtion
-spectra (Fig.~\ref{fig:absorbtion}), and they have been using this
-difference since the 1930's to make pulse-oximeters based on two-color
-transmittance measurements\citep{tremper1989}.
-
-\begin{figure}
- \begin{center}
- \includegraphics[width=0.6\textwidth]{fig/absorbtion}
- \end{center}
- \caption{Absorbance spectra for assorted hemoglobin
- species\citep{tremper1989}.\label{fig:absorbtion}}
-\end{figure}
-
-By passing different wavelengths of light through perfused tissue, we
-can measure the relative quantities of the different \Hb\ species.
-The basis for this analysis comes from the
-\href{http://en.wikipedia.org/wiki/Beer\%E2\%80\%93Lambert_law}{Beer-Lambert
- law}
-\begin{equation}
- I = I_0 e^{-c \epsilon L} \;, \label{eq:BL}
-\end{equation}
-where $I_0$ is the incident intensity (entering the tissue), $I$ is
-the tranmitted intensity (leaving the tissue), $c$ is the tissue
-density (concentration), $\epsilon$ is the extinction coefficient
-(molar absorbtivity), and $L$ is the tissue thickness. Rephrasing the
-math as English, this means that the intensity drops off exponentially
-as you pass through the tissue, and more tissue (higher $c$ or $L$) or
-more opaque tissue (higher $\epsilon$) mean you'll get less light out
-the far side. This is a very simple law, and the price of the
-simplicity is that it brushes all sorts of things under the rug.
-Still, it will help give us a basic idea of what is going on in a
-pulse-oximeter.
-
-Rather than treat the the tissue as a single substance, lets use the
-Beer-Labmert law on a mixture of substances with concentrations $c_1$,
-$c_2$, \ldots and extinction coefficients $\epsilon_1$, $\epsilon_2$,
-\ldots.
-\begin{equation}
- I = I_0 e^{-(c_1 \epsilon_1 + c_2 \epsilon_2 + \ldots) L} \;.
-\end{equation}
-
-We also notice that the intensities and extinction coefficients may
-all depend on the wavelength of light $\lambda$, so we should really
-write
-\begin{equation}
- \Il = \Iol e^{-(c_1 \exl{1} + c_2 \exl{2} + \ldots) L}
- \;. \label{eq:BL-lambda}
-\end{equation}
-\nomenclature{\Iol}{Intensity of incident light at wavelength $\lambda$}
-\nomenclature{\Il}{Intensity of transmitted light at wavelength $\lambda$}
-\nomenclature{$c_i$}{Concentration of species $i$}
-\nomenclature{\eil}{Extinction coefficient of species $i$ at
- wavelength $\lambda$}
-\nomenclature{$L$}{Length of tissue through which light must pass}
-
-Once isolated, a simple spectroscopy experiment can measure the
-extinction coefficient $\eil$ of a given species across a range of
-$\lambda$, and this has been done for all of our common \Hb\ flavors.
-We need to play with Eq.~\ref{eq:BL-lambda} to find a way to extract
-the unknown concentrations, which we can then use to calculate the
-\SO\ (Eqs.~\ref{eq:funcSO} and \ref{eq:fracSO}) which we can use in
-turn to calculate \CoO\ (Eq.~\ref{eq:CoO}).
-
-Note that by increasing the number of LEDs (adding new $\lambda$) we
-increase the number of constraints on the unknown $c_i$. A
-traditional pulse-oximeter uses two LEDs, at $660\U{nm}$ and
-$940\U{nm}$, to measure \SOf (related to $\C{\Hb\Ox}$ and $\C{\HHb}$).
-More recent designs called
-\href{http://en.wikipedia.org/wiki/Co-oximeter}{pulse CO-oximeters}
-use more wavelengths to allow measurement of quanties related to
-additional species (approaching the end goal of measuring \SO).
-\nomenclature{LED}{Light emitting diode}
-
-Let us deal with the fact that there is a lot of stuff absorbing light
-that is not arterial blood (e.g. venous blood, other tissue, bone,
-etc). The good thing about this stuff is that it's just sitting there
-or moving through in a smooth fasion. Arterial blood is the only
-thing that's pulsing (Fig.~\ref{fig:ac-dc}).
-
-\begin{figure}
- \begin{center}
- \includegraphics[width=0.6\textwidth]{fig/ac-dc}
- \end{center}
- \caption{AC and DC transmission
- components\citep{tremper1989}.\label{fig:ac-dc}}
-\end{figure}
-
-During a pulse, the pressure in the finger increases and non-arterial
-tissue is compressed, changing $L$ and $c_i$ from their trough values
-to peak values $L'$ and $c_i'$. Since the finger is big, the
-fractional change in width $\dd L/L=(L'-L)/L$ is very small. Assuming
-the change in concentration is even smaller (since most liquids are
-fairly incompressible), we have
-\begin{align}
- \deriv{L}{\Il}
- &= \deriv{L}{}\p({\Iol e^{-(c_1 \exl{1} + c_2 \exl{2} + \ldots) L}})
- = \deriv{L}{}\p({\Iol e^{-X L}})
- = -X \Iol e^{-X L}
- = -X\Il \\
- \frac{\dd \Il}{\Il} &= -X \dd L \;, \label{eq:dI-I-naive}
-\end{align}
-where $X=c_1 \exl{1} + c_2 \exl{2} + \ldots$ is just a placeholder to
-reduce clutter. \dd \Il is the AC amplitude (height of wiggle top of
-the detected light intensity due to pulsatile arterial blood), while
-\Il is the DC ampltude (height of the static base of the detected
-light intensity due to everything else). This is actually a fairly
-sneaky step, because if we can also use it to drop the DC compents.
-Because we've assumed fixed concentrations (incompressible fluids),
-and there is no more DC material comming in during a pulse (by
-definition), we can pull out the effective $L$ for the DC components
-does not change. Separating the DC and AC components and running
-through the derivative again, we have
-\nomenclature{\cdci}{Concentration of the $i$th DC species at
- wavelength $\lambda$} \nomenclature{\caci}{Concentration of the
- $i$th AC species at wavelength $\lambda$}
-\nomenclature{\edcil}{Extinction coefficient of the $i$th DC species
- at waveleng th $\lambda$} \nomenclature{\eacil}{Extinction
- coefficient of the $i$th AC species at waveleng th $\lambda$}
-\nomenclature{\Ldc}{DC finger width}
-\begin{align}
- \deriv{L}{\Il}
- &= \deriv{L}{}\p({
- \Iol e^{-(\cdcx{1}\edcxl{1} + \cdcx{2}\edcxl{2} + \ldots) \Ldc
- -(\cacx{1}\eacxl{1} + \cacx{2}\eacxl{2} + \ldots) L}}) \\
- &= \Iol e^{-(\cdcx{1}\edcxl{1} + \cdcx{2}\edcxl{2} + \ldots) \Ldc}
- \deriv{L}{}\p({e^{-(\cacx{1}\eacxl{1} + \cacx{2}\eacxl{2} + \ldots) L}
- }) \\
- &= \Iol Y \deriv{L}{}\p({e^{-Z L}})
- = -Z \Iol Y e^{-Z L}
- = -Z \Il \\
- \frac{\dd \Il}{\Il} &= -Z \dd L \;, \label{eq:dI-I}
-\end{align}
-where $Y=e^{-(\cdcx{1}\edcxl{1} + \cdcx{2}\edcxl{2} + \ldots) \Ldc}$
-and $Z=\cacx{1}\eacxl{1} + \cacx{2}\eacxl{2} + \ldots$ are just
-placeholders to reduce clutter. Note that Eq.~\ref{eq:dI-I} looks
-just like Eq.~\ref{eq:dI-I-naive} with the translation $X\rightarrow
-Z$. This means that if we stick to using the AC-DC intensity ratio
-($\frac{\dd \Il}{\Il}$) we can forget about the DC contribution
-completely\footnote{
-If the changing-$L$-but-static-$\Ldc$ thing bothers you, you can
-imagine insteadthat $\Ldc$ grows with $L$, but \cdci shrinks
-proportially (to conserve mass). With this proportionate stretching,
-there is still no change in absorbtion for that component so
-$\deriv{}{L}\exp(-\cdci\edcil L)=0$ and we can still pull the DC
-terms out of the integral as we did for Eq.~\ref{eq:dI-I}.}.
-
-Taking a ratio of these amplitudes at two different wavelengths, we
-get optical density ratio
-\nomenclature{$R$}{Optical density ratio}
-\begin{equation}
- R = \frac{\frac{AC_{660}}{DC_{660}}}{\frac{AC_{940}}{DC_{940}}}
- = \frac{\frac{\dd I_{660}}{I_{660}}}{\frac{\dd I_{940}}{I_{940}}}
- = \frac{-Z_{660} \dd L}{-Z_{940} \dd L}
- = \frac{Z_{660}}{Z_{940}} \;,
-\end{equation}
-because $\dd L$ (the amount of finger expansion during a pulse)
-obviously doesn't depend on the color light you are using ;).
-Plugging back in for $Z$,
-\begin{equation}
- R = \frac{\cacx{1}\eiA{1} + \cacx{2}\eiB{2} + \ldots}
- {\cacx{1}\eiB{1} + \cacx{2}\eiB{2} + \ldots} \;.
-\end{equation}
-Assuming, for now, that there are only two species of \Hb, \Hb\Ox and
-\HHb, we can solve for $\cacx{1}/\cacx{2}$.
-\begin{align}
- R &= \frac{\cacx{1}\eiA{1} + \cacx{2}\eiA{2}}
- {\cacx{1}\eiB{1} + \cacx{2}\eiB{2}} \\
- R(\cacx{1}\eiB{1} + \cacx{2}\eiB{2})
- &= \cacx{1}\eiA{1} + \cacx{2}\eiA{2} \\
- \cacx{1} (R\eiB{1} - \eiA{1}) &= \cacx{2} (\eiA{2} - R\eiB{2}) \\
- \frac{\cacx{1}}{\cacx{2}} &= \frac{\eiA{2} - R\eiB{2}}{R\eiB{1} - \eiA{1}}
- \;.
-\end{align}
-So now we know $\C{\Hb\Ox}/\C{\HHb}$ in terms of the measured quantity
-$R$.
-
-Plugging in to Eq.~\ref{eq:funcSO} to find the functional saturation
-\begin{align}
- \SOf &= \frac{\C{\Hb\Ox}}{\C{\Hb\Ox} + \C{\HHb}}
- = \frac{1}{1 + \frac{\C{\HHb}}{\C{\Hb\Ox}}}
- = \frac{1}{1 + \frac{\cacx{2}}{\cacx{1}}}
- = \frac{1}{1 + \frac{R\eiB{1} - \eiA{1}}{\eiA{2}-R\eiB{2}}}
- \;. \label{eq:SOfvR}
-\end{align}
-
-As a check, we can rephrase this as
-\begin{align}
- \SOf &= \frac{1}{1 + \frac{R\eiB{1} - \eiA{1}}{\eiA{2} - R\eiB{2}}}
- = \frac{\eiA{2} - R\eiB{2}}{\eiA{2} - R\eiB{2} + R\eiB{1} - \eiA{1}} \\
- &= \frac{\eiA{2} - \eiB{2}R}{\eiA{2} - \eiA{1} + (\eiB{1} - \eiB{2})R}
- = \frac{-\eiA{2} + \eiB{2}R}{\eiA{1} - \eiA{2} + (\eiB{2} - \eiB{1})R}
- \;,
-\end{align}
-which matches \citet{mendelson1989}, Eq.~8 with the translations
-$\SOf\rightarrow\SxO{p}$, $R\rightarrow R/IR$,
-$\eiA{2}\rightarrow\epsilon_R(\HHb)$,
-$\eiB{2}\rightarrow\epsilon_IR(\HHb)$,
-$\eiA{1}\rightarrow\epsilon_R(\Hb\Ox)$, and
-$\eiB{1}\rightarrow\epsilon_IR(\Hb\Ox)$.
-
-And that is the first-order explaination of how a pulse-oximeter
-measures the functional saturation!
-
-Reading extinction coefficients off Fig.~\ref{fig:absorbtion}, I get
-\begin{align}
- \epsilon_{\Hb\Ox,660} &= \eiA{1} = 0.10 \\
- \epsilon_{\HHb,660} &= \eiA{2} = 0.83 \\
- \epsilon_{\Hb\Ox,940} &= \eiB{1} = 0.29 \\
- \epsilon_{\HHb,940} &= \eiB{2} = 0.17
-\end{align}
-which are comfortingly close to those given by \citet{mendelson1989}
-in their Table~1. The corresponding $\SOf(R)$ plot can be seen in
-Fig.~\ref{fig:SfOvR-theory}.
-
-\begin{figure}
- \begin{center}
- \subfloat[]{\label{fig:SfOvR-experiment}
- \includegraphics[width=0.48\textwidth]{fig/SPO2vR}}
- \subfloat[]{\label{fig:SfOvR-theory}
- \includegraphics[width=0.40\textwidth]{fig/SfO2vR-theory}}
- \end{center}
- \caption{Comparison of (a) an experimental calibration
- curve\citep{tremper1989} with (b) a theoretical calibration curve
- calculated using Eq.~\ref{eq:SOfvR}. This is why it's a good idea
- to use an empirical calibration curve ;).\label{fig:SfOvR}}
- % concave theoretical SfO2vR theory curve supported by
- % mendelson1989, Fig. 4.
-\end{figure}
-
-%, because LEDs are finicky, it's hard to know how bright they are
-%without looking ;). Therefore, we'd like to work $\Iol$ out of the
-%picture. As blood pulses through the finger, imagine that the
-%concentrations
-
-\printnomenclature
-
-\phantomsection
-\addcontentsline{toc}{section}{References}
-\bibliography{main}
-
-\end{document}