FTIR2.txt
PM-FTIR Spectra Normalization Procedure
Normalizing polarization-modulation Fourier transform infrared (PM-FTIR)
spectra entails removing the broad background PM curve and converting the
differential reflectivity into absorbance units. The normalization
procedure is given below in the form of macros for the Macintosh software
program IGOR PRO (Wavemetric's, Inc.). For those not familiar with this
program, it calls a list of data points a "wave," and a variable is
clearly just a single value. Mathematical operations are carried out on
these waves just as on a spreadsheet column, for example.
Prior to running the normalization macros, the PM-FTIR spectra need to be
loaded into waves within IGOR PRO. The spectra are saved as ASCII tables
on the IBM compatible computer controlling the FTIR spectrometer. Then,
they are easily loaded into IGOR PRO as "general text;" upon loading they
are given wave names of wn?? and tr??. This nomenclature is necessary for
the specific macros below which operate only on waves named wn?? and tr??,
where the ?? denotes a suffix (e.g. aa, 01, etc.). At this point, the
macro "setup" can be executed.
Before running the actual calculation macro "cnc," a few variables need to
be assigned numerical values. The first is the gain for the demodulation
electronics (g). The other parameters (xtop, xbot, ytop, ybot, and dr)
define the computer generated background PM curve (bg??). Initially, dr
is set to 0, which makes this theory PM curve a quadratic; non-zero values
of dr give small amounts of cubic character to this PM curve. Values are
assigned to xtop and ytop by choosing a point at the vertex of the
experimental PM curve in the PM-FTIR spectrum, which was plotted by the
setup macro. Since the vertex is one of the points, only one other point
is required to define the quadratic, and the x and y values of that point
are assigned to xbot and ybot. Finally, the "cnc" macro can be executed
to yield a normalized spectrum in absorbance units.
Frequently, a better normalization (flatter baseline) is achieved by
slightly varying the values of xtop, xbot, ytop, ybot, and dr. The
computer generated background PM curve is plotted with the non-normalized
spectrum, and so one can observe the quality of the fit. The macro
"recrv" can be used to recalculate the background curve and look for
improvements in the fit. Once satisfied, the "recnc" macro is used to
recalculate the final normalized absorbance spectrum.
Macro setup(suffix)
String suffix,wn,tr,bg,no,absrb | creates strings
Variable/G xtop,ytop,xbot,ybot,xdel,c,dr,g | creates variables
wn="wn"+suffix | assigns wn as wn??, etc.
tr="tr"+suffix | hereafter called $wn, etc.
bg="bg"+suffix
no="no"+suffix
absrb="absrb"+suffix
Duplicate $wn $bg,$no,$absrb | creates waves $bg, $no, $absrb
DefaultFont "Helvetica"
Display $tr vs $wn | plots $tr vs $wn
PauseUpdate |
SetAxis bottom 2000,950 |
SetAxis left 55,116 | simply graphing parameters
ShowInfo |
ResumeUpdate |
EndMacro
Macro cnc(suffix)
String suffix,wn,tr,bg,no,absrb
Variable bl
wn="wn"+suffix
tr="tr"+suffix
bg="bg"+suffix
no="no"+suffix
absrb="absrb"+suffix
bl=(ytop/g/100) | bl, xdel, and c are intermediate values
xdel = xbot - xtop | used in background curve ($bg) calc
c = (ybot - ytop)/(xdel^2 + dr*xdel^3)
$bg = ytop + c*($wn - xtop)^2 + c*dr*($wn - xtop)^3 | eqn. to generate $bg
Append $bg vs $wn | displays $bg on same plot as spectrum
$no = ($tr*ytop)/($bg*g*100) |
$no=1-$no | $no is intermed. wave which ends up
$no= bl +$no | equivalent to a transmittance spectrum
$absrb = - log ($no) | and is then converted to $absrb
Display $absrb vs $wn
PauseUpdate |
Modify lowTrip(left)=0.01,notation(left)=1 |
Modify fSize=18 |
SetAxis bottom 2000,9500 | simply graphing parameters
Label bottom "\Z24Wavenumber" |
Label left "\Z24Absorbance" |
Textbox /A=LT/X=1/Y=1 "\Z18 " |
ShowInfo |
ResumeUpdate |
EndMacro
Macro recrv(suffix) | recalc $bg w/o extra stuff of cnc macro
String suffix,wn,tr,bg,no,absrb
Variable bl
wn="wn"+suffix
tr="tr"+suffix
bg="bg"+suffix
no="no"+suffix
absrb="absrb"+suffix
bl=(ytop/g/100)
xdel = xbot - xtop
c = (ybot - ytop)/(xdel^2 + dr*xdel^3)
$bg = ytop + c*($wn - xtop)^2 + c*dr*($wn - xtop)^3
Endmacro
Macro recnc(suffix) | renormalize after using recrv macro
String suffix,wn,tr,bg,no,absrb
Variable bl
wn="wn"+suffix
tr="tr"+suffix
bg="bg"+suffix
no="no"+suffix
absrb="absrb"+suffix
bl=(ytop/g/100)
xdel = xbot - xtop
c = (ybot - ytop)/(xdel^2 + dr*xdel^3)
$bg = ytop + c*($wn - xtop)^2 + c*dr*($wn - xtop)^3
$no = ($tr*ytop)/($bg*g*100)
$no=1-$no
$no= bl +$no
$absrb = - log ($no)
EndMacro