Convert pulse oxymetry post from LaTeX to Markdown/itex (avoid external build).
authorW. Trevor King <wking@drexel.edu>
Thu, 23 Feb 2012 18:05:01 +0000 (13:05 -0500)
committerW. Trevor King <wking@drexel.edu>
Thu, 23 Feb 2012 18:32:49 +0000 (13:32 -0500)
12 files changed:
Makefile
local.css
posts/Pulse_oxymetry.mdwn [deleted file]
posts/Pulse_oxymetry.mdwn_itex [new file with mode: 0644]
posts/Pulse_oxymetry/SConstruct [deleted file]
posts/Pulse_oxymetry/SPO2vR.png [moved from posts/Pulse_oxymetry/fig/SPO2vR.png with 100% similarity]
posts/Pulse_oxymetry/SfO2vR-theory.png [new file with mode: 0644]
posts/Pulse_oxymetry/SfO2vR-theory.py [moved from posts/Pulse_oxymetry/fig/SfO2vR-theory.py with 100% similarity]
posts/Pulse_oxymetry/absorbtion.png [moved from posts/Pulse_oxymetry/fig/absorbtion.png with 100% similarity]
posts/Pulse_oxymetry/ac-dc.png [moved from posts/Pulse_oxymetry/fig/ac-dc.png with 100% similarity]
posts/Pulse_oxymetry/main.bib [deleted file]
posts/Pulse_oxymetry/main.tex [deleted file]

index c734fa8995ace9105a346ab5aab1c596a5a5e1e0..7c0aafad6dafac980a26997bb73cc453f12a516e 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -5,23 +5,10 @@ SUBDIRS = posts/drexel-thesis posts/problempack \
        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
index 5cda467490ba9b96b2ed2fa626ae48f2d11d1d97..c61564d5297c09700e7b243ef4bc245bbf152790 100644 (file)
--- a/local.css
+++ b/local.css
@@ -84,3 +84,8 @@ code {
        color: gray;
        font-family: monospace;
 }
+
+.center {
+       margin-left: auto;
+       margin-right: auto;
+}
diff --git a/posts/Pulse_oxymetry.mdwn b/posts/Pulse_oxymetry.mdwn
deleted file mode 100644 (file)
index 2e11910..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-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]]
diff --git a/posts/Pulse_oxymetry.mdwn_itex b/posts/Pulse_oxymetry.mdwn_itex
new file mode 100644 (file)
index 0000000..755daab
--- /dev/null
@@ -0,0 +1,560 @@
+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]]
diff --git a/posts/Pulse_oxymetry/SConstruct b/posts/Pulse_oxymetry/SConstruct
deleted file mode 100644 (file)
index 306becd..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-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)
diff --git a/posts/Pulse_oxymetry/SfO2vR-theory.png b/posts/Pulse_oxymetry/SfO2vR-theory.png
new file mode 100644 (file)
index 0000000..f1b7229
Binary files /dev/null and b/posts/Pulse_oxymetry/SfO2vR-theory.png differ
diff --git a/posts/Pulse_oxymetry/main.bib b/posts/Pulse_oxymetry/main.bib
deleted file mode 100644 (file)
index 3ab909e..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-@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",
-}
diff --git a/posts/Pulse_oxymetry/main.tex b/posts/Pulse_oxymetry/main.tex
deleted file mode 100644 (file)
index 8a4a7b7..0000000
+++ /dev/null
@@ -1,499 +0,0 @@
-\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}