Exafspak Manual
Exafspak Manual
Exafspak Manual
-1-
-2-
CONTENTS
PAGE
PREFACE : HOW TO USE THIS MANUAL .. ............. ............ ........................... .................. 4
A INTRODUCTION ........................... ............. ............ ........................... .................. 5
A.1 SUMMARY OF PROGRAMS ..... ............. ............ ........................... .................. 5
A.2 SUMMARY OF FILES AND FILE TYPES . ............ ........................... .................. 6
A.3 PLOTTING ........................... ............. ............ ........................... .................. 7
A.3.1 PLOTTING DEVICES AND ROUTES ......................... .................. 7
A.3.2 GRAPHICS TEXT CONTROL CHARACTERS ........... .................. 7
A.3.3 PLOTTING SYMBOLS ..... ............ ........................... .................. 7
A.3.4 LINE TYPES AND PENS . ............ ........................... .................. 8
A.3.5 USING GRAPHICS CURSORS ..... ........................... .................. 8
A.3.6 INCORPORATING GRAPHICS OUTPUT .................. .................. 8
INTO DOCUMENTS
-3-
PREFACE : HOW TO USE THIS MANUAL
This manual describes the use of the EXAFSPAK programs for analysis of X-ray absorption
spectra. Most of these programs were originally written by Graham George, under the Open
VMS operating system, and were later ported to Linux, Tru64 UNIX and Microsoft Windows
by Simon George. The purpose of this document is not to provide a complete description of all
the capabilities of EXAFSPAK, but rather to provide sufficient information to allow the user
to analyze data effectively. In many cases we have presented worked examples as the clearest
way of describing a particular program. Rather than reading the entire manual the user may
prefer to read the program summary and then proceed directly to running the programs. The
programs PROCESS, OPT and MULDAT were initially designed to be self-sufficient and to
be used without reference to a manual. We strongly encourage the user to experiment with the
programs (especially PROCESS and OPT); they are, for the most part, quite robust, and the
menu-driven architecture should make movement between sections quite simple.
-4-
A INTRODUCTION
A.1 SUMMARY OF PROGRAMS
The EXAFSPAK programs are launced at the command-line interface and will accept either a VMS or UNIX style of qualifier.
e.g. The command:
PROCESS /REC /DUMB NI
is equivalent to
process -rec -dumb ni
For historical reasons, OpenVMS-style commands are used as examples in this manual.
The EXAFSPAK EXAFS analysis package consists of eleven main programs, together with a number of utility programs. The
capabilities and functions of the main programs are summarized in table I, below.
Table I
Mainstream Programs
Program Function and/or capabilities
MLIST Lists header comments and details of data data (XAS) files from the SSRL XAS data acquisiton package.
MVIEW MVIEW is used for examining the raw data (XAS) files.
MCALIB MCALIB is used for obtaining re-calibration points from raw data (XAS) files. In most cases a first inflection
energy of a metal foil spectrum is obtained. The result is written to an output file CALIBRATE.DAT or *.CAL
file which is used by MAVE.
MDEAD MDEAD is for use with solid state detectors which suffer from electronic deadtime problems. MDEAD reads a
raw (XAS) data file containing a deadtime curve, determines electronic deadtimes and writes the output file
DEADTIMES.DAT which is used by MAVE.
MAVE MAVE computes an averaged data file from raw (XAS) data (correcting for electronic deadtimes using the infor-
mation in DEADTIMES.DAT if needed). Selective weighting of individual data file array positions (sometimes
called channels) is also available. MAVE also allows for energy calibration of data, and generates an .AVE (aver-
aged) data file which is used by PROCESS and OPT.
PROCESS PROCESS performs all the major EXAFS data reduction manipulations. Processed data is re-written to the .AVE
file, and a number of formatted (ASCII) "data" files can be written. If Fourier filtering is required, PROCESS can
generate unformatted .FIL files to be read by OPT.
OPT OPT is the EXAFS curve fitting analysis program. It reads .AVE or .FIL files from PROCESS and can use a vari-
ety of different phase and amplitude functions.
MULDAT MULDAT reads ASCII "data" files and produces stack plots etc. which can be used for publications. MULDAT is
also useful for making measurements of peak heights, edge features, etc.
EDG_FIT EDG_FIT performs pseudo-Voigt peak deconvolution of spectra (typically of edges), using a curve-fitting ap-
proach.
DATFIT Fits spectra to a linear combination of other spectra.
FEFF_HLD Sets up a parameter .HLD file for multiple scattering curve-fitting by OPT, using files generated by FEFF.
Utility Programs
Program Function and/or capabilities
MCONV Converts between the old SSRL sdata file format and the new SSRL XAS-collect file format (VAX only).
LISTAVE Lists the header comments of .AVE files from PROCESS (see below).
MCMASTER Calculates absorption cross sections from the coefficients in the McMaster tables.
SAMPLE4 Computes ideal sample compositions for X-ray absorption transmittance measurments.
FLUOR Corrects X-ray fluorescence data contained in an ASCII data file for distortions caused by self absorption (thick-
ness) effects. The composition of the sample and the effective density must be known.
-5-
A.2 SUMMARY OF FILES AND FILE−TYPES
Table II
File Data/Contents Programs Programs Format
which create which use
.AVE Raw averaged data and results MAVE PROCESS Binary
of processing, including EXAFS. PROCESS OPT
OPT
.FIL Fourier filtered EXAFS data. PROCESS OPT Binary
.EDG Edge data and derivative. PROCESS PROCESS ASCII (DATA)
MULDAT
.FOU Output file of Fourier transform. PROCESS MULDAT ASCII (DATA)
OPT
.FRM Output of any chosen data from PROCESS MULDAT ASCII (DATA)
PROCESS.
.FRM Hexadecimal dump of PROCESS PROCESS PROCESS ASCII (HEX)
.AVE file.
.FIT EXAFS data and fit. OPT MULDAT ASCII (DATA)
.SCH Output of search profile from OPT. OPT MULDAT ASCII (DATA)
.HLD Fit parameters for use by OPT. PROCESS PROCESS ASCII/Binary
OPT OPT
.MUL Data and plotting attributes of a plot MULDAT MULDAT Binary
(a saved plot).
.STP Program setup information. PROCESS PROCESS ASCII
OPT OPT
The ASCII (DATA) format files are simply columns of numbers separated by spaces or tabs. These files can be read by MULDAT to
generate figures and are also suitable for exporting to (for example) Apple Macintosh or PC machines for plotting.
-6-
A.3 PLOTTING
A.3.1 PLOTTING DEVICES AND ROUTES
All the EXAFSPAK programs use the same graphics: the GPLOT and GRAFG graphics libraries. The former controls "low-level"
operations, such as drawing a line, while the latter deals with high level operations e.g. surface plots. In most programs the GPLOT
graphics library requires both a route and a device number. The route directs output either to a file or to the terminal (TT:). The
device numbers control which type of graphics output is produced and these are listed in the table below.
Table III — GPLOT device numbers
Device number Output device
1 Tektronix 4010/4014 (10 bit)
2 Dec ReGIS
3 HPGL (eavesdrop mode)
4 Tektronix 4010/4014 (12 bit)
5 Tektronix 4010/4014 (10 bit, LN03R-Plus)
6 Tektronix 4010/4014 (10 bit, VT terminal)
7 Tektronix 4010/4014 (12 bit, LN03R-Plus)
8 Postscript
9 Encapsulated Postscript
10 X-Windows display
11 X-Windows display (#2)
NOTES: i. Interactive graphics cursor input uses devices 1, 2 and 10 only.
ii. LN03-plus printers use device 4, route to a file (e.g. PLOT.LN0), which can then be printed (use
PRINT/PASSALL).
iii. By far the best quality output is obtained with postscript, or encapsulated postscript.
!A !B !C !D !E !F !H !I !J !K !L !M !N !O !P !Q !R !S !T !U !V !W !X !Y !Z
α β χ ∆ ε γ λ µ ν Ω φ ρ Σ θ ξ ζ δ ω σ ψ π Å ° £ √
0 1 2 3 4 5 6 7 8 9 10 11
-7-
A.3.4 LINE TYPES AND PENS
The line type refers to the style of a line (dashed, solid etc.) and pen (usually) refers to the color or gray-scale of the graphic output.
There are seven different line types available, and the number of pens depends upon the device (e.g. device=2 has 16 pens in all),
both lines and pens are referred to by number :
Line Line type
6
5
4
3
2
1
0
The procedure for accomplishing this with DECwrite is outlined step by step below.
i. Select GPLOT device number 9, and route to a file (e.g. PLOT.EPS)
ii. Within DECwrite use the Options menu to select "Full Menus"
iii. Use "File" to select "Links" and choose "Link to Picture ...".
iv. Select the encapsulated postscript file that you created.
v. The plot can be positioned within DECwrite by depressing mouse button 1, and re-sized by depressing mouse button 2
(hold the shift key down to maintain the aspect ratio).
vi. The plot should be placed in a floating frame or an in-line frame (with "Insert Styles ..."), the latter being better for
most purposes.
For Macintosh and PC the GNU program Ghostscript provides a convenient way of viewing, importing and manipulating postscript
and encapsulated postscript files. On the Macintosh Graphicconverter together with Ghostrscript can be used to generate a pict file.
-8-
A.4 MENUS
A.4.1 SOME ELEMENTARY BUT USEFUL RULES
The EXAFSPAK programs all use the same input-output library (IOPAK). This consists of routines that handle screen input and
output, which are written in a mixture of Fortran and Macro assembler. There are some elementary but useful rules which are help-
ful to remember in running EXAFSPAK programs.
i. If you are asked to "Press" a key then only a single keystroke is required.
e.g. Press 1 to plot raw data :
ii. If you are asked to "Enter" a response then the return or enter key should be pressed after typing the response. Default
or previously entered values are given in brackets. If these are acceptable then simply press return. New values can be
entered separated either by commas or spaces, if a value is omitted then the default values are taken.
e.g. Enter R(low), R(high) & R(inc) [0.0, 7.00000, .020000] :,,0.01
would result in only the value for R(inc) being changed to 0.01 .
iii. Control Z generally takes you back a level. If you are at the top level, then control Z will exit the program.
iv. Control C and control Y are sometimes trapped (e.g. in OPT), so do not rely on these to exit EXAFSPAK programs.
A.4.2 KEYSTROKE FILES
The IOPAK library can generate and use keystroke files (called .LOG files by default). These are best illustrated by an example. The
program PROCESS can be run with the qualifiers /LOGFILE, /RECOVER, /DUMB, and /AUTOMATIC. All of these work by using
keystroke files.
e.g. The command:
$ PROCESS/LOG NI
will start the program PROCESS and load the file NI.AVE. All keys press are written to the file PROCESS.LOG. If an identical
session with process is desired but using a different data file, for example the file NI2.AVE, then the session can be replayed by
using the command:
$ PROCESS/REC NI2
Alternatively, the user can specify the name of the keystroke file by /LOG=MYFILE.KEYSTROKE and
/REC=MYFILE.KEYSTROKE
Keystroke files are very useful for running identical PROCESS sessions on a number of different files. The Open VMS command file
MULPROC.COM reads a file containing a list of .AVE filenames and runs an identical PROCESS on each.
The /DUMB qualifier causes all terminal output apart from graphics to be suppressed while /RECOVER is operating.
-9-
A.5 FLOW CHART OF DATA ANALYSIS
View data
Raw Data
MVIEW
Note : the package feff is not part of EXAFSPAK and must be obtained separately.
- 10 -
B. MLIST, MVIEW, MCALIB, MDEAD and MAVE
The SSRL XAS data acquisition software outputs data in SSRL binary or SSRL ASCII-format files. The programs MVIEW, MAVE,
MDEAD and MCALIB read data directly from XAS files, to allow plotting, averaging, calculation of detector dead times and calibra-
tion, respectively.
B.1 MLIST
The program MLIST allows the user to view comments and details of raw data files.
Command:
MLIST INPUT_FILE_SPEC
Qualifiers: Specification
/HELP Lists command-line options
/XWINDOWS=on/off Specifies whether X-Windows interface is to be used.
/VERSION Gives compilation and GLIB dates.
/ARRAY Lists data file array positions and labels
/FIND=string Searched for files with "string" in comment line.
/OUTPUT=filename Writes output to a named file.
Examples:
$ mlist SEMET-C-R_010.002 /array
SEMET-C-R_010.002 Selenomethionine cystal e along c, repeat of second orientation
----------------------------------------
Label Index Array
----------------------------------------
Real time clock 1
Requested Energy 2
Achieved Energy 3
I 0 - 2 4 - 6
IF 7
----------------------------------------
This example illustrates the use of the /array qualifier.
$ mlist SE*.0* /find="powder"
SEMET-POWD_027.001 Selenomethionine powder sample, crystal moved out of beam
SEMET-POWD_027.002 Selenomethionine powder sample, crystal moved out of beam
This example illustrates the use of the /find qualifier.
- 11 -
B.2 MVIEW
The program MVIEW allows the user to plot data from a raw XAS file, with an optional ASCII dump of the plotted data. The ordi-
nate is calculated according to the information given by the /NUMERATOR and /DENOMINATOR qualifiers. If the value specified
with /DENOMINATOR is zero then no ratio is calculated, and the raw channels specified using /NUMERATOR are plotted.
Command:
MVIEW INPUT_FILE
Qualifiers: Specification Default
/HELP Lists command-line options
/XWINDOWS=on/off Specifies whether X-Windows interface is to be used.
/VERSION Gives compilation and GLIB dates.
/ABSCISSA=n Channel for abscissa (x-axis) 3
/ABSCISSA=INDEX plots point number.
/NUMERATOR=range Channel(s) for numerator 7-19
/DENOMINATOR=n Channel(s) for denominator 4
/SUMDATA Causes array positions to be summed.
/DEVICE=n GPLOT device 2
/ROUTE=route GPLOT route TT:
/COLOURS=n Max. number of colours used in the plot 16
/HIGHLIGHT Highlights one trace, space bar increments.
/CURSORS Graphics input cursors are called after plotting.
/LINE Lines are drawn in the plot (default)
/NOLINE No lines are drawn in the plot (use with /POINTS)
/POINTS=n Graphics symbol n is plotted at each data point. 0
/TAKELOG Logs to be taken.
/NOTAKELOG No logs are taken (default).
/WRITE=[file_spec] Dumps plotted data to an ASCII (DATA) file.
/XMIN=value, /XMAX=value Specifies range for abscissa range of data
/YMIN=value, /YMAX=value Specifies range for ordinate range of data
/LOGFILE=[file_spec] Keystroke file for session.
/NOLOGFILE No Keystroke file (default)
/RECOVER=[file_spec] Recover from keystroke file
/DUMB Suppress terminal output
Examples:
$ MVIEW MSOR_042.002/NUM=7-9;11;13-14;16-19
This example illustrates the use of the /NUMERATOR qualifier. Data channels 7,8,9,11,13,14,16,17,18,19 are used for the numerator
in the plot. The denominator is channel 4 by default.
$ MVIEW/NUM=4/DEN=5/TAKELOG/WRITE=TRANSMITTANCE.DATA ZN_ZNFE2O4_018.003
This example plots the natural log of the ratio of channel 5 divided by channel 6 and writes the data into the ASCII file
TRANSMITTANCE.DATA.
- 12 -
B.3 MCALIB
The program MCALIB allows the user to re-calibrate data by reading a standard from a raw XAS file. The results are displayed on
the terminal screen and written to the ASCII file CALIBRATE.DAT. The program searches for peaks in the derivative and uses a
quartic polynomial fitted to the data, combined with a Newton Raphson search algorithm to accurately find peak positions.
Command:
MCALIB INPUT_FILE
Qualifiers: Specification Default
/HELP Lists command-line options
/XWINDOWS=on/off Specifies whether X-Windows interface is to be used.
/VERSION Gives compilation and GLIB dates.
/ELEMENT=element_symbol Element for calibration e.g. Cu, W, Pt. Fe
/EDGE=edge_type Edge for calibration e.g K, L1, L3 K
/ABSCISSA=n Channel for eV. 3
/NUMERATOR=n Channel for numerator 5
/DENOMINATOR=n Channel for denominator 6
/DEVICE=n GPLOT device 2
/ROUTE=route GPLOT route TT:
/SMOOTH=value Smoothing for derivative (0.0 = automatically set) 0.0
/PEAK=value Fraction of biggest peak, below which peaks are
ignored. 0.0
/DERIVATIVE=n Derivative to be calculated. 1
/RANGE=value eVhanne range for plot. 90.0
/TAKELOG Logs to be taken (default).
/NOTAKELOG No logs are taken
/POSITIVE Positive peaks are searched for (default)
/NEGATIVE Negative peaks are searched for (e.g if /DERIV=2)
/NEWFILE Clears old calibration information in output file.
/OUT=filename Writes calibration information to file. CALIBRATE.DAT
/LOGFILE=filename Keystroke file for session.
/NOLOGFILE No Keystroke file (default).
/RECOVER=filename Recover from keystroke file
/DUMB Suppress terminal output.
Examples:
$ MCALIB/ELEM=NI/OUT=NITPP.CAL NITPP_044.001
This example calculates the calibration from the data in the file NITPP_044.001 accepting all the default values for the qualifiers,
except for the element. In this case the program would calculate an ordinate of log(Cn /Cd) where Cn and Cd are the numerator and
denominator array positions, respectively. In this particular case the default values (5 and 6, for Cn and Cd, respectively) correspond
to outputs from ion chambers on either side of an nickel foil standard. The program calculates the first derivative, finds the peaks,
which correspond to the first inflection points, and plots the result. Initially the program is focused upon the largest peak in the first
inflection, the left and right cursors on the keyboard shift the focus to the peak on the left or right of the current focus. After selecting
the appropriate peak the program can then be terminated by pressing any other key other than the cursor keys. The display would
appear as shown in Figure B.2-1.
- 13 -
6-APR-1995 17:14 0.3 CALIB 1.0 NITPP_044.001
8313.62
8314.35 0.25
8316.58
8330.41 0.2
8336.47
8343.50
8353.45 0.15
8359.50
8374.60 0.1
0.05
-0.05
8310 8320 8330 8340 8350 8360 8370 8380 8390
MCALIB outputs the file specified by the /OUT qualifier which will contain a list of all the calibrations calculated in a particular
session. Before making an entry in the output file, MCALIB checks that the edge information in the header of the file is consistent
with the current calibration. If it is, then the calibration energy and the file name are appended to the end of the file, if not then a new
output file is created. MCALIB output files can be used by MAVE to obtain values for data calibration. Note : It is important to
specify /NEWFILE when calibrating a new data set, otherwise the new values may be appended to old ones. A typical MCALIB
output file is listed below:
Calibration filename
7111.090 IQP-10-RED-FE_026.001
7111.072 IQP-10-RED-FE_027.001
7111.060 IQP-10-RED-FE_027.002
7111.074 IQP-10-RED-FE_027.003
7111.080 IQP-10-RED-FE_027.004
7111.086 IQP-10-RED-FE_027.005
7111.079 IQP-10-RED-FE_027.006
7111.086 IQP-10-RED-FE_027.007
7111.092 IQP-10-RED-FE_027.008
7111.060 IQP-10-RED-FE_027.002
- 14 -
counts rc (i.e. the counts if there were no dead-time) are given by rc = κρ, which can be calculated from the measured counts r by rc =
r eρτ.
200000
6000
A B
5000 150000
saturated
)
)
region
-1
-1
4000
2000
pseudo-linear
region 50000
1000
0 0
0 50000 100000 150000 200000 0 100000 200000 300000 400000
-1 I
ICR (counts sec ) 0
dead-time
two photons
one photon τ
τ τ
C time
Figure B.3-1 A. Typical dead time curve for a single element of a Canberra 13 element Germanium detector. The
photon energy was 10KeV, and the Gaussian shaping amplifier was operated at a shaping time of 0.5µsec. B.
Linearity for the incoming count rate (ICR) signal from the shaping amplifier with the incident beam intensity
(measured using an ion chamber). C. Schematic of origins of paralyzing electronic dead time, a single photon
causes a dead-time τ, if a second photon arrives during the dead-time from a previous photon then the dead-time is
extended by τ from the time of arrival of the second photon.
The purpose of the program MDEAD is to determine the values of κ, ρ, and τ, so that dead time corrections can be applied by the
program MAVE. The command line $ MDEAD INPUT_FILE , where INPUT_FILE is an XAS raw data file, will launch the
program MDEAD and the user is presented with the main menu, e.g.
$ MDEAD SB73_193_0012
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Deadtime Calculations x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 to read file x
x 2 to clip data x
x 3 to plot data x
x 4 to fit data x
x 5 to plot fits x
x 6 for process manager x
x 7 for calculator x
x 8 to exit x
x :1 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
The data must first be read (menu option 1) and the single channel analyzer (SCA) channels must be paired with the appropriate
amplifier incoming count rate (ICR) channels. This is illustrated in the following example dialog (note that <CR> means that return
is pressed, accepting the default value(s)).
- 15 -
Reading file ... Enter array positions for count-time and I0 [1,4] :<CR>
201 Points 201
Enter first and last SCA array positions [7, 19] :<CR>
Enter ICR array position for position 8 [20] :<CR>
Enter ICR array position for position 9 [21] :<CR>
.
.
.
Enter ICR array position for position 20 [32] :<CR>
All OK? [y/n] [Y] :<CR>
The user is then returned to the main menu, the dead time curves can now be clipped, plotted (using option 3), or fitted with the dead
time equation r = κρe−ρτ where r is the SCA, and ρ the corresponding ICR.
If the data are fitted (menu option 4) the program asks :
This controls whether the offsets for the ICRs are floated in the fit, in our example dialog we select this, and the data are then fitted.
The results are written to the file DEADTIMES.DAT , which is later read by MAVE for use in the dead-time correction process. A
typical DEADTIMES.DAT is listed below :
SCA channel SCA dead-time τ (µsec) ICR offset Initial slope κ ICR channel
8 7.2703 -1735.91 0.1766 21
9 7.2280 -1521.43 0.2449 22
10 7.0841 -1299.25 0.2689 23
11 7.1552 -1205.63 0.2327 24
12 7.4304 -1746.35 0.2207 25
13 7.1924 -1627.21 0.1923 26
14 7.0830 -1652.25 0.2024 27
15 8.5905 -1439.19 0.1827 28
16 8.7339 -1575.51 0.2559 29
17 7.2036 -1075.04 0.2423 30
18 7.3731 -1345.35 0.2218 31
19 7.2354 -1418.48 0.4387 32
20 7.4302 -1290.96 0.3716 33
11-APR-1993 14:48
9000
CUDT_012.001
FF array 8 8000
ICR array 21
7.27 µsec 7000
Ro= -1736.2
ko= 0.1766 6000
SCA
5000
4000
3000
2000
1000
0
0 50000 100000 150000 200000
ICR
Figure B.3-2 Detector dead-time fitting using the program MDEAD. The solid line represents the best fit.
Selecting floating ICR offsets gives marginally better fits to the dead-time curves, however the actual values for the dead-times do not
depend very much upon whether ICR offsets are floated.
- 16 -
B.5 MCONV
MCONV is used for converting obsolete SSRL Midas raw data sdata format binary files to the new XAS raw dat format. Files with the
old sdata format come in two basic types, root files (e.g. CUGD_0194.SDATA;1) and continuation files or c-files (e.g.
CUGD_0194.SDATA_00000001;1) both must be present in order for the sdata files to be accessed. The sdata run-time library
must also be installed on the system, and this is available for VAX OpenVMS systems only. Users not wishing to install sdata on
their systems should consider converting sdata files at SSRL where legacy OpenVMS VAX computers are maintained for this pur-
pose.
MCONV copies the ordering of array positions in the sdata file. It should be noted that this is usually slightly different than for most
XAS files :
Array positions for a typical Midas sdata file : 1: crystal, 2: mono (requested), 3: mono (achieved), 4: real-time-clock, 5: I0, 6: I1,
7: I2, 8: FF1 ... , 21: ICR1 ...
Array positions for a typical XAS file : 1: real-time-clock, 2: mono (requested), 3: mono (achieved), 4: I0, 5: I1, 6: I2, 7: FF1 ... ,
20: ICR1 ...
Command:
MCONV SDATA_ROOT_FILE
Example:
Here we use MCONV to convert the sdata files CUGD_0194, which (in our example) has three c-files, and MCONV produces three
XAS output files :
$ mconv CUGD_0194
3 MIDAS c-files to read
Reading MIDAS c-file number 1
writing XAS file CUGD_0194.001
Reading MIDAS c-file number 2
writing XAS file CUGD_0194.002
Reading MIDAS c-file number 3
writing XAS file CUGD_0194.003
B.6 MAVE
MAVE is used for averaging raw XAS data files and outputs an .AVE file. In addition to catering for simple transmittance spectra,
the program is designed to convert data from multielement solid state detector arrays and therefore can perform detector dead time
calibration, statistical weighting of data from array elements etc.
Command:
MAVE INPUT_FILE_SPEC
Qualifiers: Specification Default
/HELP Lists command-line options
/XWINDOWS=on/off Specifies whether X-Windows interface is to be used.
/VERSION Gives compilation and GLIB dates.
/MCALIB=filename MCALIB filename to read no file read if filename omitted
then CALIBRATE.DAT.
/OUTPUT=filename .AVE filename to create MAVE.AVE
/EXAPLT Output to Farrell Lytle EXAPLT file.
/EXXON Output to an Exxon EXAPLT "ENERGY" file.
/LOGFILE=[file_spec] Keystroke file for session.
/NOLOGFILE No Keystroke file (default).
/RECOVER=[file_spec] Recover from keystroke file
/DUMB Suppress terminal output.
- 17 -
Examples :
$ MAVE/OUT=NITPP.AVE NITPP_044.*,NITPP_045.002
Would generate an output file NITPP.AVE, and would average all the files indicated by the input file specification.
If the no input file specification is given then MAVE uses the filenames in CALIBRATE.DAT (if present) previously generated by
MCALIB.
$ MAVE/OUT=NITPP.AVE
To illustrate the use of MAVE, two sample dialogs are presented, the first is a simple transmittance sample, and the second is a data
set from a 13 element Canberra Ge fluorescence detector array.
Example 1:
The first example is a low molecular weight nickel complex. In the following dialog <CR> indicates that the return key has been
pressed. We assume that the program MCALIB has been run first and has generated a file named NITPP.CAL. The data files contain
the output of the I0 and I1 ion chamber in array positions 4 and 5, respectively, and we wish to calculate the absorbance which is
given by log(C4/C5). The data files will be recalibrated individually (the "shift individual spectra" question) and then interpolated to
the abscissa of the first file for the average. This option requires that filenames be read from a MCALIB output file. The strategy to be
used in averaging the data is selected by a series of questions :
$ MAVE/OUT=NITPP/MCALIB=NITPP.CAL
3 Files found :
1 NITPP_044.001
2 NITPP_044.002
3 NITPP_044.003
Do you want to remove files from this list? [y/n] [N] :<CR>
Do you want to change file weights? [y/n] [N] :<CR>
Enter array position for eV [3] :<CR>
Enter array position for rtc [1] :<CR>
Enter array position range for numerator [7, 19] :4,4<CR>
Enter array position range for denominator [4, 4] :5,5<CR>
Do you want to take logs? [y/n] [N] :y<CR>
Do you want to change array position weights? [y/n] [N] :n<CR>
Statistical weights :
Enter 1 to calculate, 2 to use weights from file, 3 for unit weights [2] :3<CR>
Do you want to exclude specific array positions? [y/n] [N] :<CR>
Recalibration ...
Do you want to shift individual spectra? [y/n] [N] :y<CR>
Enter apparent eV0, true eV0 [8330.39, 8331.60] :<CR>
Enter d-space, steps per degree [1.92013, 8000.00] :<CR>
Enter Za, E0 [28.0000, 8350.00] :<CR>
$
The file NITPP.AVE has now been created and can be analyzed using PROCESS and OPT (see below).
Example 2:
The second example is a dilute solution of a metalloprotein, measured with a Canberra 13 element Ge detector array. As before, the
program MCALIB has already been run to calibrate all the scans in the data, and again we set up the strategy for the average, this
time opting to use statistical weighting of the data. Initial questions concern the which array positions to use etc. In this example we
have already determined (using MVIEW) that array positions 10 and 15 are non-functional, so that we wish to exclude these from the
average, and that array position 12 is malfuntioning in several of the files.
$ mave/out=cu4_amt1
15 Files found :
1 CU4_AMT1_008.001
2 CU4_AMT1_008.002
3 CU4_AMT1_008.003
- 18 -
4 CU4_AMT1_008.004
5 CU4_AMT1_008.005
6 CU4_AMT1_008.006
7 CU4_AMT1_008.007
8 CU4_AMT1_008.008
9 CU4_AMT1_009.001
10 CU4_AMT1_010.001
11 CU4_AMT1_010.002
12 CU4_AMT1_010.003
13 CU4_AMT1_010.004
14 CU4_AMT1_010.005
15 CU4_AMT1_010.006
Do you want to remove files from this list? [y/n] [N] :<CR>
Do you want to change file weights? [y/n] [N] :<CR>
Enter array position for eV [3] :<CR>
Enter array position for rtc [1] :<CR>
Enter array position range for numerator [7, 19] :<CR>
Enter array position range for denominator [4, 4] :<CR>
Do you want to take logs? [y/n] [N] :<CR>
Do you want to change array position weights? [y/n] [N] :y<CR>
Answering "yes" to the last question above allows us to exclude the non-functional array positions (10 and 15) by setting the weights
to zero for these array postitions.
In the last option we have chosen to calculate statistical weighting of the data. This is done by obtaining an estimate of the signal to
noise ratio. The signal is defined as the jump (edge jump) between two energies, one above and one below the absorption edge, and
the noise is estimated by photon statistics as being proportional to the square root of the fluorescence counts (normalized to I0). In
general it is considered preferable to use weights calculated during data collection by XAS, and MAVE should only be used to calcu-
late weights if these were not computed, or if they are considered unreliable for some reason. The basic procedure for calculating
statistical weights is discussed in more detail at the end of this section.
The next question allows us to exclude specific array positions in individual sweeps. In our example previous examination with
MVIEW has indicated that array position 12 is malfunctioning in several scans. We now proceed to elmininate this array position
from files 2, 3 and 4, and then to exit from this section by answering "0" to the Enter file-number [0] : question.
- 19 -
Enter file-number [0] :4<CR>
3 CU4_AMT1_008.004
Enter array position to exclude [0] :12<CR>
Enter file-number [0] :<CR>
The program now proceeds to inquire about recalibration. For spectra which have significant calibration energies (i.e. data that do not
allign well) one might choose to shift individual spectra. If this choice is made then MAVE searches the list of files from MCALIB
(read in from the CALIBRATE.DAT file) to match the current filename and then interpolates data (with a piecewise cubic spline) so
that all files share a common calibrated energy scale (that corresponding to the first file. If the default is selected (as we do here) then
the average of the calibration energies in CALIBRATE.DAT is used and no interpolation is performed. Final questions allow the
user to confirm monochromator information derived from the input file.
Recalibration ...
Do you want to shift individual spectra? [y/n] [N] :<CR>
Enter apparent eV0, true eV0 [8982.03, 8980.30] :<CR>
Enter d-space, steps per degree [1.92013, 8000.00] :<CR>
Enter Za, E0 [29.0000, 9000.00] :<CR>
The program then proceeds through all files in the average, and creates the file CU4_AMT1.AVE which can be analyzed using
PROCESS and OPT (see below).
We will now review the weighting scheme used by MAVE for statistical weighting of array positions in multi-element array detec-
tors. Each array position will have a different signal to noise ratio (S/N), depending upon the electronics and location of the detector
with respect to the sample. The signal Si from array position i is assumed to be proportional to the edge jump (see figure B.4.1)
Si∝(Ai-Bi)=∆i , and the noise Ni is estimated from photon statistics to be proportion to the square root of the normalized fluorescence
count rate Ni ∝ √
Ai by application of a filter as previously described. Note that the points EA and EB are specified by the user at the
input line :
Defaults for EA and EB are calculated from the edge information in CALIBRATE.DAT.
The proper statistical weighting factor Wi, is proportional to (Si/Ni)2 normalized to the edge jump so that array positions with equal
signal to noise ratios contribute equally so that Wi = (Si/Ni)2/Si . The weighted average <F> of the data from all array positions Fi is
then given by <F> = Σ Wi Fi / Σ Wi
Ai
If
__
I0
Bi
EB EA
Energy
For more details of the statistical weighting of data from multi-element array detectors see Scott et al. Proc. Natl. Acad. Science USA,
1981, 78, 644-667.
- 20 -
C. PROCESS
C.1 INTRODUCTION TO PROCESS
The program PROCESS is the main data reduction program for EXAFS and edge spectra. It is defined as a VMS command and can
run with several qualifiers. The command line format is :
$ PROCESS INPUT_FILE
Where INPUT_FILE is an .AVE file generated by MAVE. This file contains averaged EXAFS data, and stores the data and details
of any processing.
Qualifiers :
On starting PROCESS without the /DUMB qualifier, the main menu will appear. In what follows we will work through an example
data set in the file MD1524.AVE, containing molybdenum K-edge EXAFS from a sample of molybdenum disulfide from the Climax
Molybdenum Co. This data set is available as an example file with the programs.
MD1524.AVE MD1524
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x PROCESS Version 2.6 1990 x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 for raw averaged data x
x 2 for baseline/pre-edge x
x 3 for spline x
x 4 for EXAFS x
x 5 for Fourier transform/filter x
x 6 for file input/output x
x 7 for utilities x
x 8 for setup x
x 9 to Quit x
x : x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
G.N.George Oct 1990
The screen is divided into two main regions; the scroll region is normally the bottom two lines on the screen, separated by a solid bar.
Questions which require some response from the user generally appear in this region. The rest of the screen is usually reserved for
plotting and for menus and other displays.
- 21 -
C.2 PROGRAM ORGANIZATION AND PLOTTING UTILITIES
Before we pursue the analysis of the molybdenum disulfide EXAFS data, it is important to understand the basic way in which PROC-
ESS works. The program is based around a large two dimensional array, the first eight columns of which are saved in the .AVE file,
together with additional information in the file header. In general, the different columns represent different stages in the data analysis.
Insight can be gained by examining the memory map in the utilities menu:
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x PROCESS Version 2.6 1990 x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqked data x
x UTILITIES xre-edge x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu x
x Press 1 to calculate derivs. etc x x
x 2 to deglitch xansform/filter x
x 3 to re-calibrate x/output x
x 4 for Calculator x x
x 5 for Monochromator calcn. x x
x 6 for comments/header x x
x 7 to plot memory x x
x 8 for memory map xqqqqqqqqqqqqqqqqj
x 9 for process manager x
x A to return x
x :8 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
The contents of each array element are described along side each column, and the histograms depict the columns that contain data.
Initially, only the first eight columns are filled, as shown in our example above. PROCESS often refers to array positions which are
the numbers given at the top of the memory map, e.g. array positions 1 and 6 would contain the energy (eV) and pre-edge subtracted
X-ray absorption spectrum. Those array positions marked with a question mark (?) at the top are subject to change without notice, as
are the spline and pre-edge array positions (although these are less frequently modified) by use as workspace. The program automati-
cally keeps track of the array positions that have been used, and these will be shown by the histogram on displaying the memory map.
After a session of data analysis the memory map might appear as follows :
- 22 -
PROCESS 2.6 - MEMORY MAP
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Array Position :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
lqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvwqvk
xaExaKxaIxaRxaMxaMx Ex Sx Kx KxaFxaFxaFxaFxaAxaPxaRx ?xa?xa?xa?x ?xa?xaPxaSx
xaVxa xa0xaAxaIxaIxaXxaMxa xa xaTxaTxaTxa xaMxaHxa xa xaKxaVxaWxaWxaWxaRxaPx
xa xa xa xaWxaNxaNxaAxaOxaWxaWxaRxaRxaRxaFxaPxaAxa xa xa xaIxaOxaOxaOxaExaLx
xa xa xa xa xaUxaUxaFxaOxaTxaTxaAxaAxaAx Ix x Sxa xa x FxaCxaRxaRxaRxa xaIx
xa xa xa xaDxaSxaSxaSxaTxaDxaDxaNxaNxaNx Lx Fx Exa xa x IxaTx KxaKxaKxaExaNx
xa xa xa xaAxa xa xa xaHxa xa xaSxaSxaSx Tx Ux xa xa x LxaOx SxaSxaSxaDxaEx
xa xa xa xaTxaBxaPxa xaExaExaSx x x x Ex Nx Fx xa x TxaRx PxaPxaPxaGxa x
xa xa xa xaAxaAxaRxa xaDxaXxaMx Px Rx Ix Rx Cx Ux xa x ExaEx AxaAxaAxaExaFx
x x x x x Sx Ex x x Ax x Ox Ex Mx x Tx Nx x x Rx Ex Cx Cx Cx x Ux
x x x x x Ex x x Ex Fx Ex Wx Ax Ax Ex x Cx x x x Nx Ex Ex Ex Fx Nx
x x x x x Lx Ex x Xx Sx Xx Ex Lx Gx Xx x Tx x x x ?x ?x ?x ?x Ux Cx
x x x x x Nx Dx x Ax x Ax Rx x x Ax x x x x x x x x x Nx Tx
x x x x x x Gx x Fx x Fx x x x Fx x x x x x x x x x Cx x
x x x x x x Ex x Sx x Sx x x x Sx x x x x x x x x x Tx x
mqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqvqqj
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
Press any key to continue ...
The contents of the various array positions can be plotted against one another using option 7 of the utilities menu.
The plotting in PROCESS is done by a single routine, which allows manipulation of the data, if required, every time a graph is plot-
ted. For example, if we select option 1 on the main menu :
The first option allows the current plot to be refreshed, the second generates a hardcopy to the designated hardcopy device and route
(determined with setup on the main menu), the third allows the user to edit the data, the fourth calls the cursors, and the fifth engages
a peak finding algorithm to look for peaks in the data (useful with edges and with Fourier transforms).
The following will describe a typical dialog of a data analysis session. Each section can be entered from the main menu, or in order.
For example, the spline section of the program can be entered from the main menu option 3. It is important to remember that control
Z will take you back to the previous (in most cases the main) menu.
The first step in data analysis is usually to view the raw data, and this is achieved by using option 1 on the main menu :
At this point if the user presses a "1" then a plot of the data is produced, or if any other key is pressed (except for the cursor or any
function keys) then the program proceeds to the next stage.
- 23 -
1
6-APR-1993 10:52
MD1524
AVERAG 0.8
0.6
Absorbance
0.4
0.2
-0.2
19500 20000 20500 21000 21500 22000
Energy (eV)
In most cases a baseline file is not required. A baseline file is an .AVE file which is heavily smoothed before subtracting from the
data. This option would be used, for example, in the case of a fluorescence spectrum of a dilute aqueous sample measured with a
fluorescent ion chamber detector. In this case a very significant background would be present in the data which could be mimicked by
running a sample of the buffer in which the sample was dissolved, and subsequently subtracted as a baseline file. We now proceed
with our example analysis, and the following dialog would appear in the scroll region at the bottom of the screen (note that <CR>
signifies pressing a carriage return). The first operation is to subtract the pre-edge function. Here we fit a curve through the region of
the data that lies before the initial rise of the absorption edge, the goal being removal of the background signal to isolate an X-ray
absorption spectrum for the absorbing atom alone (e.g. a Mo only spectrum for a Mo EXAFS experiment).
The pre-edge subtraction selected is a polynomial. The Gaussian type should be used for solid state detector arrays where there is
significant scatter is admitted to the SCA window at the low energy end of the scan. This gives a Gaussian tail to the data, and the
Gaussian pre-edge function can be used to remove this. The polynomial pre-edge subtraction works by fitting a polynomial of order
-1 in our example through the range 0.0 (ie. the start of the data) to 19980eV, just below the Mo K edge (as will generally be the case
with our PROCESS example, the defaults are accepted). The program then fits the selected region with the polynomial, extrapolates
through the whole data set, and subtracts it :
On pressing 1 the pre-edge subtracted data is plotted, and an alternative plot which shows the data before and after the pre-edge sub-
traction and the polynomial (or Gaussian) itself is given by the next option. Note that the pre-edge region has been reduced to a flat
line, and the post-edge region to a slow decay.
- 24 -
6-APR-1993 10:43 1.4
MD1524
PREEDG
-1 1.2
0.0
19800. 1
Absorbance
0.8
0.6
0.4
0.2
0
19500 20000 20500 21000 21500 22000
Energy (eV)
Figure C.3-2 Plot of the pre-edge subtraction. The raw data, the pre-edge polynomial and the pre-edge subtracted data are
superimposed.
The Gaussian and erf pre-edge functions are particularly useful when processing spectra collected on dilute samples with a solid state
detector. In this case the pre-edge has a rising Gaussian-like component which arises from X-ray scatter "leaking" into the SCA
window at low energies. Although the erf function is a more accurate model of the background function, the Gaussian background
often provides the more effective method:
Press 1 for polynomial pre-edge fit, 2 for Gaussian, 3 for erf function :3
Enter eV(low), eV(high) [0.0, 7085.0] :7075<CR>
Enter energy eV for middle of SCA window [6403.00] :<CR>
Enter window width, detector resoln. (eV) [750.000, 250.000] :720,225<CR>
Enter scaling factors a, b (y=a*y+b) [39.4161, 1.49405] :<CR>
Press 1 to plot pre-edge result :<CR>
Press 1 for total pre-edge plot :1
23-APR-2001 14:38
cco_fe 9
PREEDG
-1 8
0.0
7075.0 7
6
Absorbance
0
6900 7000 7100 7200 7300 7400 7500 7600
Energy (eV)
Figure C.3-2a Plot of the Gaussian pre-edge subtraction. Note that the data set is different than that used for the rest of this section.
The next stage in the data analysis is the subtraction of the spline. A spline is a stiff but flexible curve that is comprised of several
polynomials mathematically knotted together which is fit to the EXAFS region of the raw data. PROCESS defaults are often suffi-
ciently accurate that the user can simply accept them.
The "reset to defaults" option should be selected when there are no previous splines contained in the header of the file (i.e. no previ-
ous session of PROCESS has been run), or when the previous spline is inadequate in some way. We accept the reset option (currently
the default) and choose to spline over the entire range of the data (also the default - note that in subsequent sessions the defaults will
be the last values entered).
- 25 -
Enter order of Spline & No. of ranges [4, 3] :,4<CR>
Enter k-weighting for spline [4] :<CR>
Enter 1 to use Victoreen [1] :<CR>
Enter 1 for k-spaced spline points [0] :<CR>
The order of the spline refers to the order of the component polynomials, and the number of ranges refers to the number of individual
polynomials. Because the data is over a particularly wide range with our molybdenum disulfide example we select 4 spline ranges
(above), rather than the default of three. The other defaults are to use a k4 weighting for the spline fit, which ensures an accurate fit at
the crucial high energy end, and to use the Victoreen polynomial to normalize the data. The Victoreen polynomial is an expression for
the absorption cross-section above a particular edge. The absorption coefficient, µvic , is given by µvic = Cvicλ3+Dvicλ4 where λ, the
X-ray wavelength in Ångströms is λ=(hc/E)=12398.4/E(eV), and Cvic and Dvic are the tabulated Victoreen coefficients for a particu-
lar edge and element (in our case the Mo K-edge). Values for Cvic and Dvic are contained within PROCESS for most elements in the
periodic table. When the Victoreen is used, the oscillatory part of the X-ray absorption, the EXAFS χ(k), is calculated by χ(k) =
(µexp−µspline)/µvic where µexp is the experimental absorption (pre-edge result) and µspline is the spline fit. The use of the Victoreen
polynomial ensures that any background problems with the data, or inadequacies with the pre-edge subtraction (the former are espe-
cially common for fluorescence data) do not distort the amplitude of the EXAFS. When the Victoreen is not used the EXAFS is given
by χ(k) = (µexp−µspline)/µspline . The dialog continues with entry of the spline points, and confirmation of the edge type and Victoreen
coefficients:
If a new spline is being calculated the "Edge jump u0 for ratio" should always be set to zero. The parameter specified by "Enter eV to
calc. u0" requires some explanation. This value is the normalization point for the data, and the edge jump, or µ0 value is the value of
µspline at the normalization point energy; it should be just above the edge, but in cases where background is a problem care must be
taken in choosing this point. In general it is not necessary to alter the spline points selected by PROCESS. If, however, a poor spline
is obtained (as judged by improbably low-R (i.e. ~1Å) peaks in the Fourier transform, see below) then the user may either increase
the polynomial order, the number of ranges, or change the position of the spline points. If either of the former two options are se-
lected, then particular care must be taken to avoid removing actual EXAFS oscillations, especially at the high k-end of the spectrum.
This latter comment is also relevant when fitting data of restricted k-range (e.g. out to a maximum of 9Å-1), in this case the order
and/or the number of ranges should be reduced.
21104. 0.8
21644.
22183. 0.6
0.9870 µexp
0.4
0.2
0
19500 20000 20500 21000 21500 22000
Energy (eV)
Figure C.3-3 Spline removal, using Victoreen polynomial to ratio the EXAFS
- 26 -
The "Final falloff" is the ratio µvic/µ0 at the high energy end of the data , and should be less than 1.0 in all cases.
The EXAFS can now be viewed in k-space, and an additional option to simultaneously view I0 is often useful to identify crystal
glitches in the data. k, the photo-electron wave number is a measure of the kinetic energy of the photo-electron, with wavelength λe ,
and is given by :
r ° ±
2π
k= λ =
e
2
−
m
h2
−
E E0 .
15
6-APR-1993 13:44
MD1524
EXAFS
10
5
3
χ(k) x k
-5
-10
1 6 11 -1 16 21
k(Å )
The EXAFS data can also be Gaussian smoothed, which is useful if fast Fourier transforms are to be used later on in the data analysis
session. All fast Fourier transform algorithms require equal spacing in k , and the data must generally be interpolated to accommodate
this. This is generally the case even when data collection specifies equal k-spacing, as energy calibration, which is generally per-
formed subsequent to the collection, will change the k-spacing slightly. The smoothing makes the interpolation slightly better be-
haved in the case of noisy data.
The next section deals with Fourier transforms and filtering of the data.
Z kmax
ρ(R ) = 1
χ(k)k3 e i2kR dk
4π1= 2
kmin
It is common practice to phase-correct Fourier transforms. This is done using an EXAFS phase function, typically a theoretical one,
for the dominant absorber-backscatterer interaction in the EXAFS. The effect of phase-correcting the transform is to move the peaks
to values close to the actual absorber-backscatterer distances (R), if the absence of any phase correction the peaks will be at positions
- 27 -
R+∆, where ∆ is approximately half the average phase shift slope for a given interaction. The Fourier transform equation including
phase-correction is :
Z kmax
ρ(R ) = 1
χ(k)k3 e i2kR + iφ(k) dk
4π1= 2
kmin
Where φ(k) is the appropriate EXAFS phase function (central atom + backscatterer atom phase). In general only the power spectrum,
|ρ(R)|, of the Fourier transform is displayed, and it is important to realize that all phase information is missing in these plots. The
power spectrum is given by :
º ¢ £ ¢ £»1=2
|ρ(R )| = ℜ ρ(R ) 2
+ ℑ ρ(R )
2
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x PROCESS Version 2.6 1990 x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 for raw averaged data x
x 2 for baseline/pre-edge x
x 3 for spline x
x 4 for EXAFS lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x 5 for Fourier tx Fourier transform/filter x
x 6 for file inputqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x 7 for utilitiesx Press 1 for Fourier transform x
x 8 for setup x 2 for R-window (filter) x
x 9 to Quit x 3 for Back transform x
x :5 x 4 for phase & amplitude x
mqqqqqqqqqqqqqqqqqqqqqqx 5 to return x
x :1 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
Option 1 on the Fourier transform menu allows calculation of the Fourier transform. The option of a Gaussian k-window is given.
This has the effect of reducing the ringing or series-termination effects in the transform, but broadens transform peaks so that true
structure can be lost. In our example, we use a window width of zero (see below), so that the window function merely specifies the
range of the k-data to be transformed :
The types of Fourier transform available are Fast Fourier transform (the default), a Simpson rule integration algorithm which evalu-
ates the full Fourier transform, and a Maximum Entropy Transform. We recommend that the last option generally be left alone, as
this type of transform is prone to artifacts if incorrectly used. The R-range for the transform, and increment in Å, can also be speci-
fied. Fourier phase correction is available with a choice of phase functions (corresponding to NPT in OPT) . In the dialog example we
accept the default value of 1, which specifies the McKale tables:
Enter 1 for Fast FT, 2 for Simpson rule FT, 3 for Max Entropy Transform [1] :<CR>
Enter R(low), R(high) & R(inc) [0.0, 7.00000, .020000] :<CR>
Press 1 for phase correction :1
Enter Z for Absorber and backscatterer [42.0000, 16.0000] :<CR>
Enter 1 for theory, 2 for parameterized, 3 for F.T. [1] :<CR>
Enter edge (K, L1,..) [K] :<CR>
Enter No. of points for data interpolation [100] :200<CR>
Forward FFT - Max R : 13.33 R(inc) : 0.0178 .... 200 to 1500 points
Press 1 to plot Transform :1
- 28 -
31-MAR-1993 10:461.8
MD1524
FTRANS 1.6
1
0.3478 1.4
23.800
Transform Magnitude
0.0 1.2
0.8
0.6
0.4
0.2
0 1 2 3 4 5 6
R+ ∆ ( Å)
The number of points for data interpolation is specified as 200 in our example, rather than the default of 100, this is done because of
the extended k-range of the data. Approximate values for the interatomic distances can be obtained by selecting option 5 (peaks) in
the plot menu.
We will now proceed to Fourier filtering. The Fourier transform must first be re-calculated without phase-correction (return to the
Fourier menu with control-Z). The reason for this is that the back-transform will be distorted at low k if phase-correction is used,
although PROCESS does attempt to correct for this. This Fourier transform proceeds exactly as before, but without the phase-
correction :
Enter 1 for Fast FT, 2 for Simpson rule FT, 3 for Max Entropy Transform [1] :<CR>
Enter R(low), R(high) & R(inc) [0.0, 7.00000, .020000] :<CR>
Press 1 for phase correction :<CR>
Enter No. of points for data interpolation [200] :<CR>
Forward FFT - Max R : 13.33 R(inc) : 0.0178 .... 200 to 1500 points
Press 1 to plot Transform :
Press 1 to plot Real & Imaginary components :<CR>
Press 1 to generate transform file:<CR>
Press 1 to read R-window :1
Do you wish to use cursor input :? [y/n] [Y] :<CR>
Enter width for R-window [.300000] :<CR>
There are an number of other options in the above dialog that are worth noting. The "transform file" is an ASCII file containing R, the
power spectrum, and the real and imaginary parts of the transform, which can be plotted with MULDAT. The width for the R-window
refers to the width of the Gaussian window which is to be used for filtering, we select the default of 0.3Å (a good value for k-ranges
>10Å-1). In our example we position the cursor at R+∆=2.422Å and 3.156Å, on either side of the Mo-Mo peak, to filter out the Mo-
Mo contribution in the EXAFS.
The program will then plot the window, and ask for final confirmation that it is acceptable:
- 29 -
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Fourier-filtered data x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 for filtered + unfiltered plot x
x 2 for filtered data alone x
x 3 for filtered data + Amplitude x
x 4 for Amplitude x
x 5 for total phase x
x 6 for phase + Amplitude x
x 7 to write .FIL file x
x 8 for linear phase search x
x 9 to return x
x : x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
A number of different options are available for plotting. The first is a comparison of the filtered and unfiltered data, in our example
this would appear as shown in Figure C.3-6. Option 7 writes the Fourier filtered data to a .FIL file, which can be read by OPT. The
data are also decomposed into total effective phase and total effective amplitude, and a brief description of the method follows. For
any EXAFS signal we can write :
Where the total effective phase Φ(k) = 2kR + φ(k) , and A(k) is the total effective amplitude, we can now write :
χ(k) = 21i A(k)eiΦ(k) − 21i A(k)e−iΦ(k)
If we now Fourier transform χ(k) into ρ(k) (see above), the first term in the above equation corresponds to positive R values, while
the second corresponds to negative R values. The latter are set by the program to zero, and the backtransform into k-space is then
calculated. We then obtain a function z(k), corresponding to only the first part of then equation, which can be used to obtain the
EXAFS total phase and total amplitude functions :
º »
Φ(k) = arctan ℑ [z(k)]
ℜ [z(k)]
º » 1
A (k ) = ℜ[z(k)] + ℑ[z(k)]
2 2 2
The total phase as calculated above will generally possess discontinuities every time the total phase function changes by more than
2π; these are detected by PROCESS and automatically removed. The statement Final phase adjusted by 42PI indicates
the number of such discontinuities (42 in our example) detected by PROCESS.
χ(k) x k
χ(k) x k
0
0
-2
-5
-4
-10
1 6 11 -1 16 21 1 6 11 -1 16 21
k(Å ) k(Å )
Figure C.3-6 The effect of Fourier filtering the outer shell on the EXAFS of MoS2. The left panel shows the Fourier filtered EXAFS
plus the unfiltered data, and the right panel the filtered EXAFS plus the total amplitude function A(k).
If structural information about the compound is known, i.e. it is to be used as a model compound, then the total phase and amplitude
- 30 -
functions can be used to calculate EXAFS phase and amplitudes for use in curve fitting analysis of unknown samples. We will go
through the procedure for doing this for our example MoS2. On exiting the the filtered data menu PROCESS will return to the Fourier
transform Menu (the filtered data menu can be re-gained by selecting option 3, backtransform, on the Fourier transform Menu). Select
option 4 "phase and amplitude" and the program will prompt for various labels and input parameters, including a values for the coor-
dination number, the bond length, and an estimate for the Debye-Waller factor (Sigma**2). For well characterized tetrahedral mole-
cules, the latter can be explicitly calculated from vibrational spectral data using the program TETRA, otherwise the user should enter
a chemically reasonable value, or zero, or a value estimated by fitting the model data to theory phase and amplitudes, depending upon
personal preference (but see section H, below).
On selecting the combination plot, the plot shown in figure C.3-7 is displayed.
6-APR-1993 15:03 4
MD1524
2
BTRANS
2.3874
0
3.1899
0.3000 -2
-4
Phase α(k)
-6
-8
-10
-12
-14
1 6 11 -1 16 21
k(Å )
Figure C.3-7 EXAFS phase and amplitude functions obtained using PROCESS
The user is then prompted to change the structural input variables, or to write output files:
The files MO_MOA.HLD and MO_MOP.HLD are created in a format which can be read by the curve-fitting program OPT.
Before leaving the program PROCESS the data file must be saved (PROCESS will check that this has been done). This is done using
the files menu from the main menu.
- 31 -
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x PROCESS Version 2.6 1990 x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 for raw averaged data x
x 2 for baseline/pre-edge x
x 3 for spline x
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
x FILES xform/filter x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqutput x
x Press 1 to write .AVE file x x
x 2 to write formatted file x x
x 3 to read new .AVE file x x
x 4 to read formatted file x x
x 5 to return xqqqqqqqqqqqqqj
x :1 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
The program will overwrite the existing .AVE file, unless a new filename is specified. A variety of other output options are available
from this menu. Option 2 allows the user to create a ASCII (DATA) file containing any combination of the array positions (see section
C.2 above for a description of these).
In this and the following sections describing PROCESS we will depart from our worked example of MoS2, Mo K-edge data, turning
instead to data collected at the sulfur K-edge and the Mo LIII and LII edges for our example. PROCESS can manipulate edges using
the calculate derivs. etc option of the utilities menu :
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x PROCESS Version 2.6 1990 x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqked data x
x UTILITIES xre-edge x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu x
x Press 1 to calculate derivs. etc x x
x 2 to deglitch xansform/filter x
x 3 to re-calibrate x/output x
x 4 for Calculator x x
x 5 for Monochromator calcn. x x
x 6 for comments/header x x
x 7 to plot memory x x
x 8 for memory map xqqqqqqqqqqqqqqqqj
x 9 for process manager x
x A to return x
x :1 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
The Manipulate data menu offers a variety of derivatives smoothing and baseline subtraction options. In our example, we first select
to reset - this loads the work array positions used with data array positions selected by the user. The defaults are positions 1 and 6,
which correspond to eV and the pre-edge subtracted data, respectively.
- 32 -
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Manipulate data xqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquESS Version 2.6 1990 x
x Press 1 to reset xqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x 2 to clip data xqqqqqqqqqqqked data x
x 3 to normalize data x xre-edge x
x 4 to smooth data xqqqqqqqqqqqu x
x 5 for derivatives xerivs. etc x x
x 6 to subtract baseline x xansform/filter x
x 7 to plot xe x/output x
x 8 to write .EDG file x x x
x 9 to save xtor calcn. x x
x A to read .EDG file xeader x x
x B to return x x x
x :1 x xqqqqqqqqqqqqqqqqj
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjnager x
x A to return x
x :1 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
Option 2 allows the data to be clipped, to exclude unwanted regions of the data. As our example contains more than one edge, we first
plot it using option 7.
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Manipulate data x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 to reset x
x 2 to clip data x
x 3 to normalize data x
x 4 to smooth data x
x 5 for derivatives x
x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x x Plot x
x tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x x Press 1 to plot data x
x x 2 to plot derivative x
x x 3 to plot data + deriv. x
x x 4 to return x
mqqx :1 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
14-APR-1993 16:53
MOS2
M_DATA 0.5
0.4
Absorbance
0.3
0.2
0.1
0
2450 2500 2550 2600 2650
Energy (eV)
Figure C.3.7-1 Sulfur K (at about 2470 eV) and the Mo LIII, LII edges (2521eV
and 2625eV, respectively) for MoS2.
- 33 -
We wish to work with the sulfur K-edge, and from examining the plot we decide to clip our data from 2460 to 2500 eV. We return to
the manipulate data menu and select option 2, then proceed to normalized the data (option 3) :
The data will be normalized by dividing by the value of "y to normalize". The default is automatically set to the spline point, if one is
present, or to the ordinate value for the last point in the clipped region. In our particular example, a low order spline (actually a
straight line) was fitted to the region in between the sulfur K-edge and Molybdenum LIII edge, and the spline point is used. We will
now calculate the unsmoothed second derivative of the edge spectrum by selecting option 5 on the manipulate data menu, and then
choosing option 1 on the Derivatives menu :
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Manipulate data x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x x Derivatives x
x tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x x Press 1 for derivative x
x x 2 for smoothed derivative x
x x 3 to return x
x x :1 x
x mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
x 9 to save x
x A to read .EDG file x
x B to return x
x :5 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
The edge and its second derivative can then be displayed using the plot menu, and saved to an .EDG file using option 8 in the ma-
nipulate menu for later display (e.g. MULDAT) or further interpretation (e.g. EDG_FIT).
Absorbance
2
-5
1.5
1 -10
0.5 -15
0
2460 2465 2470 2475 2480 2485 2490 2495 2500 2466 2468 2470 2472 2474 2476 2478
Energy (eV) Energy (eV)
Option 9 in the manipulate menu is worth commenting upon. This allows the user to transfer the manipulated data back into the array
positions from whence it originally came, allowing re-insertion of the manipulated data back into the mainstream EXAFS analysis.
This might be useful, for example, if a piecewise cubic background had been subtracted from the data (option 2 of the "baseline"
menu given by "subtract baseline" on the manipulate data menu).
Data can be de-glitched in several different ways, perhaps the simplest being to edit the data just after the pre-edge subtraction stage
using the editor which is available upon plotting. Points can simply be selected and moved or deleted, according to the user’s prefer-
ence. If points are deleted the deletion will trickle through the whole data array, so that that point is eliminated in all array positions.
- 34 -
The utilities menu has specialized tools for de-glitching. Upon selecting option 2 on the utilities menu the user is presented with two
options :
In our example we elect to deglitch the pre-edge data (in general this is better for large glitches as they can distort the spline), and use
a cubic. A plot of the data will then be displayed (the user should use "zoom" to zoom in on the problem region) and the user should
use the cursors to select four points, two on either side of the glitch to be removed, which describe a cubic (in our example) which
will be interpolated through the middle two points to replace the glitch. The least squares polynomial works in a similar way, except
that the two regions flanking the glitch are fitted to a polynomial (the order is user-defined) and this is extrapolated through the mid-
dle removing the glitch. Before this occurs the user is asked to confirm the de-glitching:
0.82
14-APR-1993 18:45
NI1P01
0.8
0.78
Absorbance
0.76
Mark 0.74
Zoom
Exit
0.72
The other main deglitching option "to remove step" is useful for removing discontinuities in the data, which might be due to a some
unexpected experimental event (in which case the data really ought to be discarded) or due to edges of minor contaminants (contami-
nants at levels >0.1% cannot be treated this way), or multiple excitation edges (e.g. KLI edges), which cannot removed any other way.
14-APR-1993 18:45
NI1P01
0.8
0.78
0.76
A
Absorbance
C
0.74
B
0.72
Mark
Zoom
Exit 0.7
0.68
8500 8600 8700 8800 8900 9000 9100
Energy (eV)
In this option three energy points must be selected, two on one side (A and B in figure C.3.8-2) and one (C in the figure) on the other
side of the step. The program fits the polynomial through the region described by the first two (A and B), extrapolates between B and
C, determines the offset of the polynomial at C and shifts all the data on this side of the step by that offset. As before the user is asked
to confirm the de-glitching before the data is altered:
- 35 -
After the step has been subtracted, a final plot of the data with the step removed is displayed.
The data can be recalibrated using option three of the utilities menu, our example is a Ni K-edge data set for which the calibration was
not initially set.
The user is asked to confirm details of the monochromator (step/degree and d-space) as usual if control-Z is pressed at any point the
recalibration is aborted and the user is returned to the menu.
D. OPT
D.1 OVERVIEW OF OPT
OPT is used for curve-fitting EXAFS data to obtain structural information. The capabilities of the latest version of OPT, Version
2.8, are described below, some of the features described may not be present in earlier versions of the software. The EXAFS equation,
used by OPT in its most complete form is :
X ² ³ ² ³ h i
χ(k) ' S0 2
n N S (k, R )F (k, R )
i i i i i exp
−2Ri exp − 2σ2k
2
sin 2kRi + φi(k, Ri) + φc(k)
kR2 λ(k, Ri) i i
i=1
Variable Meaning
k Photo-electron wave number, a measure of the photoelectron wavelength, k = 2π/λe , and calculated from the
X-ray energy above the threshold by k = [0.262(E-E0)]1/2.
S02 Amplitude reduction factor due to shake up and shake off losses (otherwise known as the scale factor in
OPT).
Ni Coordination number for atom type i.
Si Total central atom loss factor. feff calculates a value for this, in other theories it is assumed to be unity.
Fi Effective EXAFS scattering amplitude function.
Ri Absorber-backscatterer distance for atom i.
λi Photoelectron mean free path or inelastic scattering correction. This is calculated explicitly by feff but is not
provided in the McKale tables. In the case of the McKale tables OPT uses an approximate curve called the
Universal curve, calculated using a semi-empirical equation. No photoelectron mean free path correction is
used with parameterized or PROCESS generated phases and amplitudes.
σi Debye-Waller factor, the mean square deviation in Ri. OPT uses a simple Gaussian model, which will prob-
ably break down at high temperatures. At lower temperatures the approximation is generally very good.
φi Backscatterer EXAFS phase function.
φc Central atom EXAFS phase function. OPT adds φc and φi for each backscatterer. φc depends only on the
edge and the type of atom that is absorbing, φr , on the other hand, depends on Ri and upon the type of
backscatterer atom.
Various types of EXAFS phase and amplitude functions can be used by OPT, these are as follows:
1. McKale curved wave theory, using 1/R interpolation to the initial value of Ri.
- 36 -
2. Parameterized phase and amplitudes.
3. Fourier filter extracted phase and amplitude functions (from PROCESS).
4. feff (version 5.05 or higher) curved wave single scattering theory.
5. feff (version 5.05 or higher) curved wave multiple scattering theory.
6. EXAFSPAK feff tables (available to feff license holders only).
7 ASCII file input - phase and amplitude data from some external source, columns of k, total phase, and amplitude are
required.
OPT can read .AVE or .FIL files, although fitting of the raw (.AVE) data is recommended. The command line to run OPT is as
follows:
$ OPT INPUT_FILE PARAMETER_FILE
Where INPUT_FILE contains the data to be fitted, and PARAMETER_FILE contains the structural information derived in the fit.
The default file-type for the input file is .AVE. The parameter file has a mandatory .HLD file-type. If the parameter file does not
exist, then OPT will warn the user and a new .HLD file will be created.
e.g.
$ OPT MD1524 MD1524
Will read data from the file MD1524.AVE and parameters from the file MD1524.HLD (MD1524.HLD will be created if it does not
exist). In the following we will review the EXAFS curve-fitting analysis of the data file MD1524.AVE, which is a sample of MoS2
obtained from the Climax Molybdenum company which was also our example for PROCESS. This file is available with the programs
on request from the authors.
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x OPT - Improved EXAFS Curve-fitting program - Version 2.8 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x OPT Version 2.8 x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 to read data etc. x
x 2 to change parameters x
x 3 to plot x
x 4 for curve-fitting x
x 5 for output x
x 6 for utilities x
x 7 to setup x
x 8 to quit x
x : x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
As with other EXAFSPAK programs, the menu items are ordered as they would normally be required. Option 1, to read the data,
must have been executed before most of the other options can be run.
- 37 -
D.3 DATA INPUT AND THE PARAMETER-EDITOR
Selecting option 1 from the main menu with our example file results in the following dialog :
The k-range selected is 2 - 18 Å-1 and the value for Delta-k is zero. Non-zero values for Delta-k cause the program
to interpolate the data to equally spaced k points with a separation of Delta-k. The lower limit to the data to be
fitted depends upon the type of phase and amplitude theory to be used; the use of curved wave theory (McKale,
feff) permits lower values. The upper limit is generally defined by the signal to noise of the data. Following this, as
the parameter file MD1524.HLD does not exist, OPT signals that it cannot be read and creates it. The number of
components that we wish to fit is two, and we select k3 weighting (the default), in order to emphasize the high-k
region of the data where the theory is most accurate, and to negate the amplitude reductions. Most of the questions
are self-explanatory. The program then returns to the main menu, option 2 should be selected, and when this is
done, the parameter editor screen will appear :
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x MD1524 k= 2.1 to 18.0 2 Shells 4 Variables 0 Iterns 0 F-evals x
x Za= 42.0 Edge=K F=0.6776E+04 CPU= 0 00:00:00.20 23-MAR-1993 10:57:18 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
1 Scale=0.9 2 Data E0=0 3 Wave-1 Sig-D=0 4 0 5 0
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Component 1 ...... ZBA=8 ZBP=8 NAT=1 NPT=1 x
x 6 N=1 7 *R=2 8 *Sig^2=0.0025 9 E0=0 10 E1=0 x
x Component 2 ...... ZBA=8 ZBP=8 NAT=1 NPT=1 x
x 11 N=1 12 *R=2 13 *Sig^2=0.0025 14 E0=0 15 E1=0 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
PF1 = Exit, PF2 = Next page, PF3 = Fix/Float/Link, PF4 = More ...
Initially, as the parameter file did not exist, all parameters have default values which are shown above. The pa-
rameter editor allows values to be readily changed using a few simple editing rules :
i The high-lighted region, containing the cursor, is the active field. A field is simply a data-entry
point, e.g. a bond length R.
ii The left and right cursor keys allow the cursor to be moved within a field and, at the ends of the
field, move to an adjacent field. The up and down cursor keys move the cursor up and down on the
page.
iii. Control H moves to the previous field, tab and enter move to the next field.
iv. Control B copies the value from the field in the previous component.
Each parameter has a parameter number, given to the left of the parameter, and can be flagged to be floated in the
fit, either freely, or in correlation with other parameters. We will now summarize the different parameters available
(those parameters marked § are not recommended to be floated in fits, ¶ indicates that the parameters have a differ-
ent function with multiple scattering fits using feff ):
1 Scale Overall scale factor S02 - this should be about 0.9 for McKale and feff.
2 Data E0 Data E0 (k=0 point ) shift in eV §.
3 Wave-1 Sig-D Anharmonic Debye-Waller for Component #1 §.
4 Not used at time of writing §.
5 Not used at time of writing §.
6 Coordination Number
7 R Absorber-backscatterer distance in Ångströms
8 Sig^2 Debye-Waller σ2 value in Å2.
9 Threshold E0 (k=0 point ) shift in eV for the component.
10 E1 Not used at time of writing §.
Fix/Float/Link flag Found to the right of the parameter number - this controls whether a variable (N, R, σ2 etc.)
is fixed, freely floated, or linked in the fit. The flag can be toggled using the PF3 key. A
fixed parameter is denoted by no character (ie. a space), a freely floating parameter is de-
noted by an asterisk (ie. *), and linked parameters by /, + or -. Linked parameters are cor-
related with the variable in the previous component (ie. component n-1 for component n), so
as to maintain either a constant ratio (/), a constant sum (+) or a constant difference (-) of
the flagged parameters. The latter is useful, for example, in the case of coordination num-
bers, where it is often the case that the total coordination number is known.
PF1 key The PF1 key exits the parameter editor, the new parameters being saved to the parameter
.HLD file.
PF2 key The PF2 key goes to the next page of parameters. OPT 2.7 can handle up to 40 components,
which fit onto 5 pages.
PF3 key The PF3 key toggles the Fix/Float/Link flag, as described above.
PF4 key The PF4 key allows access to another set of commands, when it is pressed the line at the bot-
tom of the screen becomes :
In this new mode, PF1 will delete the current component, PF2 will swap it with the one
above, PF3 will insert a new component, copying the current one. Finally, PF4 allows one to
change the absorber atomic number Za, the edge type (K, LI, LII etc.) and the number of
components. These can also be changed using option 1 of the main menu.
Please note: Many keyboards do not have PF keys, in some cases these are emulated by F1-4, or if even these are
not available then the Shift-1 through Shift-4 can be used.
The parameter editor should be used to enter reasonable starting parameters. In the case of a complete unknown,
initial estimates of bond lengths can be obtained from the Fourier transform peak positions obtained with PROCESS. Following entry
of reasonable starting parameters the parameter editor will appear as :
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x MD1524 k= 2.1 to 18.0 2 Shells 5 Variables 0 Iterns 0 F-evals x
x Za= 42.0 Edge=K F=0.6776E+04 CPU= 0 00:00:00.20 23-MAR-1993 10:57:18 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
1 Scale=0.9 2 Data E0=0 3 Wave-1 Sig-D=0 4 0 5 0
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Component 1 Mo-S ZBA=16 ZBP=16 NAT=1 NPT=1 x
x 6 N=6 7 *R=2.38 8 *Sig^2=0.0025 9 *E0=-10 10 E1=0 x
x Component 2 Mo-Mo ZBA=8 ZBP=8 NAT=1 NPT=1 x
x 11 N=6 12 *R=3.16 13 *Sig^2=0.0025 14 /E0=-10 15 E1=0 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
The default, the McKale tables, has been selected for the phase and amplitude functions, and the E0 parameters have been linked so
that they will maintain equal values in the fit. The PF1 key can now be pressed, to exit the parameter editor.
In most cases one would wish to plot the initial fit after entering reasonable parameters. This is covered in the next section.
D.4 PLOTTING
lqqqqqqqqqqqqqqqqqqqqqqqqqk
x PLOT x
tqqqqqqqqqqqqqqqqqqqqqqqqquqqqqqqqqqqqqqqqqqqqqqqqqk
x Press 1 to plot EXAFS x OPT Version 2.8 x
x 2 for phase shift xqqqqqqqqqqqqqqqqqqqqqqqqu
x 3 for amplitude x 1 to read data etc. x
x 4 for deriv phase x 2 to change parameters x
x 5 for deriv amp. x 3 to plot x
x 6 for lambda x 4 for curve-fitting x
x 7 to return x 5 for output x
x :1 x 6 for utilities x
mqqqqqqqqqqqqqqqqqqqqqqqqqj 7 to setup x
x 8 to quit x
x :3 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
A variety of plots are available, including the various pieces of the EXAFS equation - the total phase shift, the total amplitude, phase
and amplitude derivatives (used by the Marquardt algorithm - see below), the photoelectron mean free path (lambda). In the current
example we proceed directly to the PLOT EXAFS menu :
lqqqqqqqqqqqqqqqqqqqqqqqqqk
x PLOT x
tqqqqqqqqqqqqqqqqqqqqqqqqquqqqqqqqqqqqqqqqqqqqqqqqqk
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkion 2.8 x
x PLOT EXAFS xqqqqqqqqqqqqqqqu
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqud data etc. x
x Press 1 for data + fit xnge parameters x
x 2 for data xt x
x 3 for fit xrve-fitting x
x 4 for residual xtput x
x 5 for data + fit + residual xilities x
x 6 for fit deconvolution xup x
x 7 for deconv. + fit xt x
x 8 for deconv. + data + fit x x
x 9 to return xqqqqqqqqqqqqqqqj
x :1 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
- 40 -
Again, a variety of plots are available. Of particular use are the options for plotting fit deconvolutions, which show the contribution of
the various components, and the option for plotting the residual (4) which may indicate whether extra components are present. In the
example we select option 1, to plot the EXAFS data and the initial fit on the same axes. The plot of the initial fit should appear as
show in Figure D.4-1 below. The Fourier transform in our example is phase corrected using the phase function of the first shell. This
can be changed by using the setup option of the main menu.
20
15
10
5
3
χ(k) x k
-5
-10
-15
-20
4 6 8 10 12 14 16 0 1 2 3 4 5 6 7
-1
k(Å ) R+ ∆ ( Å)
Mo-S .N= 6.000 *R= 2.3800 * σ2= 0.00250 *Eo=-10.000
Mo-Mo .N= 6.000 *R= 3.1600 * σ2= 0.00250 /Eo=-10.000 23-MAR-1993 15:33
MD1524
Figure D.4-1 Initial fit of MoS2 EXAFS
From the plot above it can be clearly seen that the parameters which we guessed at require some optimization. In order to do this we
return to the main menu, and select option 4, curve fitting:
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x OPT Version 2.8 x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 to read data etc. x
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x CURVE-FITTING x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 to start Eccles algorithm x
x 2 to start Marquardt algorithm x
x 3 for best-integer fits x
x 4 to change fit mode parameters x
x 5 to generate search profile x
x 6 for linear analysis x
x 7 to return x
x :2 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
By far the best option to choose at this point is number 2, the Marquardt algorithm. This is a very efficient method of mimimization
and all options are supported by it. Option number 1, the Eccles algorithm should not be used if correlated variables are fitted. The
fitter will then launch with the same screen as the parameter editor, and will be updated every ten iterations (by default). When a
minimum has been found the following screen will be presented :
- 41 -
lqqq Fit finised, hit any key for final analysis qqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x MD1524 k= 2.1 to 18.0 2 Shells 5 Variables 48 Iterns 99 F-evals x
x Za= 42.0 Edge=K F=0.2666E+03 CPU= 0 00:00:11.56 23-MAR-1993 10:59:47 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
1 Scale=0.9 2 Data E0=0 3 Wave-1 Sig-D=0 4 0 5 0
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Component 1 Mo-S ZBA=16 ZBP=16 NAT=1 NPT=1 x
x 6 N=6 7 *R=2.40229 8 *Sig^2=0.00359 9 *E0=-13.694 10 E1=0 x
x Component 2 Mo-Mo ZBA=8 ZBP=8 NAT=1 NPT=1 x
x 11 N=6 12 *R=3.17163 13 *Sig^2=0.00551 14 /E0=-13.694 15 E1=0 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
The values in this screen are the final minimized parameters obtained by the fit. On pressing a key, a detailed final analysis of the fit
is presented :
OPT 2.8
MD1524 Kmin= 2.08 Kmax=17.96 Deltak=0.000 280 Pts 2 Comp’ts 5 Variables
48 Iter’ns 99. F eval’s Elfin=.10E-05 Dmp=.10E+03 F=0.266E+03 Za=42.0
1 Scale Factor = 0.900
2 Data Delta E0 = 0.00 eV
3 Wave 1 Sigma-D = 0.00 Angstroms
4 0.00
5 0.00
- Correlation Matrix -
Comp’t 1 1 1 2 2
R Sig^2 Eo R Sig^2
Par.# 7 8 9 12 13
7 1.000-0.301 0.898 0.806-0.140
8 1.000-0.278-0.295 0.211
9 1.000 0.892-0.248
12 1.000-0.277
13 1.000
Press any key to continue...
The various parameters and numbers given in the summary will now be described. The goodness of fit is described at the most ele-
mentary level by the F value (F=0.266E+03) in the third line of the summary, which is simply the sum of the squares of the differ-
ences between experimental and calculated curves. This is the value which is minimized by the fitting algorithms. The "Additional
- 42 -
Statistical Information" presented at the end of the summary gives various other manifestations of this number.
The F-factor F in particular is somewhat analogous to the crystallographic R-factor :
½
F = [ Σk (χexptl-χcalcd) /Σk χexptl
6 2 6 2
]
Also given in this section is the expected resolution in distance R, which is the expected smallest difference in interatomic distances
resolvable for two similar contacts. This quantity, known as ∆R is simply given by the ratio ∆R=π/2δk where δk is the k-range of the
fitted data, in Å-1. In the summary, all the components are listed, together with estimates of the integrated contribution to the overall
EXAFS amplitude, and a rank number in square brackets :
e.g.
The Mo-Mo backscattering contributes about 47% of the total EXAFS, and is the second biggest component. These integrals and
ranking are of particular use with multiple scattering calculations using feff-5 as in this case it is often nessesary to include many
different components, each one corresponding to a different multiple scattering path. The ranks and % contributions can then be used
to eliminate the less important ones.
The final refined parameters are listed, followed by estimated standard deviations in parentheses,
e.g.
* 7 Distance = 2.402298 ( 0.001396) Angstroms .
It is important to realize that the estimated standard deviations are only accurate when raw, unsmoothed, data are being fitted. Values
for the 95% confidence limits can be obtained by simply scaling the estimated standard deviations. The upper diagonal half of the
correlation matrix of parameters is also listed (the matrix is symmetrical). In the case of parameters which have been linked in the fit,
the value in the correlation matrix is the total correlation of the linked parameters. This is the case with E0 in our example, where the
values for components 1 and 2 are linked. Care should be exercised if any correlations are present that are greater than 0.9 as these
values will be determined less precisely; this will also be reflected in the estimated standard deviations of the parameters. The fit
summary can also be listed to a file (see the setup option of the main menu). Following the printout, OPT will then return to the main
menu, and a plot of the fitted data can be viewed:
10
5
3
0
χ(k) x k
-5
-10
-15
4 6 8 10 12 14 16 0 1 2 3 4 5 6 7
-1
k(Å ) R+ ∆ ( Å)
Mo-S .N= 6.000 *R= 2.4023 * σ2= 0.00360 *Eo=-13.695
Mo-Mo .N= 6.000 *R= 3.1716 * σ2= 0.00551 /Eo=-13.695 23-MAR-1993 16:27
MD1524
Figure D.5-1 Results of Marquardt algorithm curve fit.
- 43 -
D.6 OUTPUT
OPT always writes the parameter .HLD file containing the refined structural parameters (MD1524.HLD in our example), no user
input is required for this. Other types of output are available from option 5 of the main menu :
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x OPT Version 2.8 x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 to read data etc. x
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqkx
x OUTPUT xx
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqux
x Press 1 to write fit + data to .FIT file xx
x 2 to write fit to .AVE file xx
x 3 to write residual to .AVE file xx
x 4 to write Fourier transform file xx
x 5 to write chi components xx
x 6 to write Fourier components xj
x 7 to return x
x :a x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
The most often used option is the first, which writes the data fitted, plus the current fit to a .FIT file, which is simply an
ASCII(DATA) file which can be read by MULDAT later. It is important to note that the data are not k-weighted in the output file.
Also particularly useful are options 4, which outputs the Fourier transform of the data and the fit, option 5 and option 6, which output
the individual components in the fit (all are ASCII(DATA) format files).
A variety of tools to assist in curve-fitting analysis of the data are part of OPT, these include search profiles, and best-integer fits.
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk x
x SEARCH xqqqqqqqqu
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqquetc. x
x Press 1 for one parameter search xqqqqqqqqqqqqqqk
x 2 for two parameter search x x
x 3 for different functions xqqqqqqqqqqqqqqu
x 4 to plot xalgorithm x
x 5 for output file xdt algorithm x
x 6 to return x fits x
x :2 xde parameters x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjch profile x
x 6 for linear analysis x
x 7 to return x
x :5 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
Search profiles allow the fit error to be examined as a function of one or two of the variables in the fit. They are particularly useful in
obtaining initial values for fits, or in checking to see if the minimum found by curve fitting is actually a convincing one. In our exam-
ple we choose a two parameter search, and will vary the value of the coordination number against the interatomic distance for compo-
nent (shell) number 2.
- 44 -
lqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x Select 1st Parameter x lqqqqqqqqqqqqqqqqqqqqqqqqqqqk
tqqqqqqqqqqqqqqqqqqqqqqqqqqquqx Select 2nd Parameter x
x Press 1 for Atom number N xqtqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x 2 for distance R x x Press 1 for Atom number N x
x 3 for Sigma^2 xqx 2 for distance R x
x 4 for E0 xsx 3 for Sigma^2 x
x 5 for E1 xsx 4 for E0 x
x 6 to return xtx 5 for E1 x
x :1 x x 6 to return x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqj x :2 x
x 6 to return mqqqqqqqqqqqqqqqqqqqqqqqqqqqj
x :2 xde parameters x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqjch profile x
x 6 for linear analysis x
x 7 to return x
x :5 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
The ranges for the search parameters are prompted for, and the program will then proceed to calculate the the search profile :
1st param - Enter Min & Max for search [.100000, 6.10000] :,8.1<CR>
Enter No. of points [31] :<CR>
2nd param - Enter Min & Max for search [1.80000, 2.50000] :3.0,3.4<CR>
Enter No. of points [31] :<CR>
The search profile can be displayed using the plot option on the "search" menu, the "combination plot" will appear as shown in figure
D.7.1-1, below.
Note that the CPU estimates have now become not particularly useful as the speed of computer processors has increased. The projec-
tion of the CPU time used was essential when this code was first developed (on a Digital Equipment Corp. VAX 11-750), but the
CPU used for one simulation is generally less than the precision of reporting on modern computer systems.
- 45 -
2 6
A log[ Σ( χ - χ )
o c
k ]
9 3.35
log[ Σ( χ - χ ) k ]
3.3
2 6
8
3.25
o c
3.2
R
7
3.15
6 3.1
3.05
8 7 3.4
65 3.3
4 3 3.2 3
21 3.1 1 2 3 4 5 6 7 8
3 N
N R
B 10 log[ Σ( χ - χ )
2
k
6
]
o c
9 3.5
log[ Σ( χ - χ ) k ]
2 6
8 3.4
o c
3.3
R
7
3.2
6
3.1
2.45
2.4 3.4 3.5
2.35
2.3 3.2 3.3 3
2.25 2.2 2.25 2.3 2.35 2.4 2.45
3 3.1
2.2 R
R R
Figure D.7.1-1 Examples of search profiles A the worked example in the text, and, B an example
showing a false minimum.
The "output file" option on the search menu will dump the contents of the search profile to an ASCII file, which can be plotted (e.g.
using MULDAT) at a later date.
Best integer fits are a useful tool for determining coordination numbers, they allow a series of fixed coordination numbers to be
tested, while other parameters are floated in the fit, to determine the best fit. :
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x OPT Version 2.8 x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 to read data etc. x
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x CURVE-FITTING x
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x BEST-INTEGER FITS x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 to perform best N search x
x 2 to perform best 2-compt N search x
x 3 to perform best Z search x
x 4 to plot best integer profile x
x 5 to return x
x :1 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
The best-integer fits menu can be obtained by selecting option 3 of the curve-fitting menu. For our example we will perform a best N
search for the first coordination shell of MoS2. We have previously set the bond lengths and Debye-Waller factors to float in the fit,
but have constrained E0 to constant values.
- 46 -
The program will then launch the Marquardt curve-fitter for each of the specified coordination numbers. Upon completion a summary
of the best integer fits is printed, which can also be shown graphically using option 4 on the best integer fit menu.
1 3 4 5 6 7 8
8.4
2
7.9
log[( χ - χ ) k ]
2 6
7.4
o c
6.9
6.4
5.9
5.4
Coordination Number N
Figure D.7.2-1 Graphical display of best integer fit error vs. coordination number
The program feff is not part of EXAFSPAK, and must be obtained separately as described in the credits displayed by OPT. OPT will
run feff automatically, calculating the a set of phase and amplitudes which can then be used in curve fitting analysis of data. The feff
interface is in the utilities menu obtained from option 6 of the main menu. In our example we will calculate the phase and amplitude
functions for the Mo-S component, using the bond lengths we obtained in our earlier curve-fitting analysis.
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x OPT Version 2.8 x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 to read data etc. x
x 2 to change parameters x
x 3 to plot x
x lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x x UTILITIES x
x tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x x Press 1 for process manager x
x x 2 for calculator x
x x 3 for phase/amplitude calculations x
mqqqqqqx 4 to return x
x :3 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
Upon launching the feff interface the OPT displays a credits screen :
- 47 -
lqqqqqqqqqqqk lqqqqqqqqqk
x OPT 2.8 x x FEFF x
mqqqqqqqqqqqj mqqqqqqqqqj
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq CREDITS qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x The program FEFF is not part of this EXAFS analysis package. x
x FEFF can be obtained from John Rehr of the Dept. of Physics at the x
x University of Washington, Seattle, WA 98195 ([email protected]). x
x Credits : x
x J. Mustre de Leon, J.J.Rehr, R.C.Albers, S. Zabinsky x
x x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
The output which follows is from feff , after the program has completed, the user is asked to confirm whether the phase and ampli-
tudes should be added to the archive file (from where they will be accessible by OPT for curve fitting).
Feff 6.01a
MD1524 1 Mo-S OPT 2.8
Calculating potentials and phases...
free atom potential and density for atom type 0
free atom potential and density for atom type 1
overlapped potential and density for unique potential 0
overlapped potential and density for unique potential 1
muffin tin radii and interstitial parameters
phase shifts for unique potential 0
phase shifts for unique potential 1
Preparing plane wave scattering amplitudes...
Searching for paths...
Rmax 2.4023 keep and heap limits 0.0000000 0.0000000
Preparing neighbor table
nfound nheap nheapx nsc r
Paths found 1 (nheapx, nbx 1 2)
Eliminating path degeneracies...
Plane wave chi amplitude filter 2.5%
Unique paths 1, total paths 1
Calculating EXAFS parameters...
Curved wave chi amplitude ratio 4.00%
Discard feff.dat for paths with cw ratio < 2.67%
path cw ratio deg nleg reff
1 100.0000 1.000 2 2.4023
1 paths kept, 1 examined.
Calculating chi...
Use all paths with cw amplitude ratio 4.00%
Use Debye-Waller factors from files.dat. S02 1.000
feff0001.dat 100.0000
ff2chi done, 1/ 1 paths used.
Feff done. Have a nice day.
FORTRAN STOP
FEFF complete
Do you wish to add to the archive file? [y/n] [Y] :<CR>
Appending phases and amplitudes to FEFFPAR.HLD
Press any key to continue ...<CR>
The phase and amplitude functions calculated by feff can then be accessed by setting NAT=4 and NPT=4 in the parameter editor.
- 48 -
D.9 OPT feff MULTIPLE SCATTERING INTERFACE
Multiple scattering calculations using feff can, in many cases, yield a large number of individual scattering paths. Each of these paths
is treated by OPT as a separate component in the fit, and the bond lengths and Debye-Waller factors must be linked in the fit accord-
ing to the nature of the multiple scattering path concerned. Setting NAT=5 and NPT=5 causes OPT to use the feff multiple scattering
interface. feff generates files containing the effective EXAFS phase, amplitude, mean-free path etc. for each multiple scattering path
that the program considers significant. These files are named FEFFnnnn.DAT, where nnnn is the file number, e.g. the first path
would be stored in FEFF0001.DAT and the second in FEFF0002.DAT. These files must be in the current default directory for OPT
to access them correctly. When the OPT variables NAT and NPT have been set to 5, ZBA (and ZBP) no longer specifies the
backscatterer atomic number, but instead specifies the file (scattering path) number.
The program FEFF_HLD should be used to prepare OPT .HLD files correctly set up to use feff output. FEFF_HLD reads the feff
output files PATHS.DAT, FILES.DAT and SIG2.DAT, and automatically generates the file PATHS.HLD which is a OPT parame-
ter file correctly set up for the multiple scattering curve-fitting (n.b. the card PRINT 0 0 0 1 must be included in the FEFF.INP
file when running feff). The use of feff with OPT should only be attempted by expert users. Very careful attention must be paid to the
use of correlated variables in the curve-fitting or meaningless results can easily be obtained.. The flow chart shown in figure D.9-1
summarizes the sequence of programs which might be used to set up the program.
run FEFF
run FEFF_HLD
PATHS.HLD
this file should be renamed
Figure D.9-1 Possible sequence of programs for the OPT feff interface.
- 49 -
E. MULDAT
MULDAT is the major means of producing good publication quality hard copy plots with EXAFSPAK programs, although it is cer-
tainly not limited to output from EXAFSPAK. MULDAT will read any ASCII file which contains columns of decimal numbers sepa-
rated by spaces or tabs. Any header lines (lines with non-alphanumeric characters) are skipped. The program can store graphs in a
device independent way in .MUL files, which can be re-loaded in another session by simply typing MULDAT FILENAME.MUL
(.MUL files can be created using the utilities option of the main menu - see below).
Command :
MULDAT [file_spec]
Qualifiers:
/HELP Lists command-line options
/XWINDOWS=on/off Specifies whether X-Windows interface is to be used.
/VERSION Gives compilation and GLIB dates.
/FILE=[file_spec] Reads ASCII files described by file_spec, columns 1 and 2.
/SCALED Automatically scales plot.
/LOGFILE=[file_spec]
/RECOVER=[file_spec]
/DUMB
Simply typing MULDAT at the command line prompt will launch the program, and the user will be presented with the main menu:
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x MULDAT Version 1.4 x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 to input filenames x
x 2 to change offsets etc. x
x 3 to change plot scale x
x 4 to change axis setup x
x 5 to plot x
x 6 for utilities x
x 7 to annotate x
x 8 to draw line x
x 9 to draw arrow x
x A for extras x
x B to quit x
x :1 x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
We will work through the creation of an example plot, the results of curve-fitting the EXAFS of K2Ni(CN)4 using the curved-wave
multiple scattering program feff in combination with OPT. Several files are required, the .FIT file output from OPT (K2NICN4.FIT)
and the EXAFS deconvolution file also from OPT (CHI.FRM). We will display a total of six traces on the plot, the experimental data,
the results of curve-fitting, and the four main components in the EXAFS. The first two are stored in different columns of
K2NICN4.FIT, and the last four in CHI.FRM. We first input the filenames :
Enter max. number of traces in plot [0] :6<CR>
Enter trace numbers to read [1,1] :,6<CR>
Trace 1 Enter filename [] :K2NICN4.FIT<CR>
Enter column No.s (x,y) to read [1, 2]:<CR>
Trace 2 Enter filename [] :K2NICN4.FIT<CR>
Enter column No.s (x,y) to read [1, 2]:,3<CR>
Trace 3 Enter filename [] :CHI.FRM<CR>
Enter column No.s (x,y) to read [1, 2]:<CR>
Trace 4 Enter filename [] :CHI.FRM<CR>
Enter column No.s (x,y) to read [1, 2]:,3<CR>
Trace 5 Enter filename [] :CHI.FRM<CR>
Enter column No.s (x,y) to read [1, 2]:,4<CR>
Trace 6 Enter filename [] :CHI.FRM<CR>
Enter column No.s (x,y) to read [1, 2]:,5<CR>
- 50 -
The program now reads the files ...
Our next action will be to set up the offsets etc. including k3-weighting the data, as the output from OPT is unweighted.
We select various line types (see section A) for the traces in the plot, and vertically displace traces 1 and 2 by 10. The data can now
be plotted (option 5) with auto-scaling, the plot will appear as shown in figure E.1
15
10
2 4 6 8 10 12
Although we will not use it in our example, we draw attention to the cursor input facilities in MULDAT. If the C key is pressed with
the plot on the screen, then the graphics cursors are called, and a small menu will appear with the options Position, Mark, Zoom, Out
and Exit. The Position (and Mark) options allow the user to determine the position of cursor on the plot, together with the separation
from a previously Marked position. This information can be written to the file MULDAT_OUT.LIS by selecting Out option (which
itself can later be plotted with MULDAT). This option is very useful if, for example, measurements of a large number of peak posi-
tions are to be made. The scaling can be adjusted using the Zoom option in the usual way.
Returning to our example, we now decide to separate the last four traces, to do this we select option 2 again, and then plot once more
using option 5. After some cycles of positioning and plotting we decide upon the plot shown in figure E.2 We re-scale the plot using
option 3 of the menu, and add axis labels to the plot using option 4, and then re-plot the graph.
Selecting option 3 :
Enter plot x,y limits [1.02401, 13.9806, -1.04665, 37.3629] :1,14,-5,40<CR>
Enter page x,y limits [6000.00, 30000.0, 6000.00, 30000.0] :<CR>
- 51 -
40
30
20
10
1 3 5 7 9 11 13
We can now add labels to the x and y-axes using option 4 of the main menu, annotate using option 7, and draw additional straight
lines on the plot using option 8 of the main menu (n.b. see sections A.3.2-4 for information upon graphics control characters etc.).
Snap-grids can be turned on and off using option A of the main menu. These allow annotations and lines to be aligned with a grid in
the central area of the plot. The completed plot might appear as shown in figure E.3
30 data+fit
20
3
Ni-C-Ni (ss)
χ(k) x k
Ni-C-N-Ni (ms)
10
Ni-C-N-C-Ni (ms)
0 Ni-N-Ni (ss)
1 3 5 7 9 11 13
-1
k(Å )
- 52 -
F EDG_FIT
The program EDG_FIT allows peak deconvolution of X-ray absorption edge spectra, this is useful to obtain accurate peak positions
and areas. The experimental data can befitted to a sum of pseudo-Voigt peak shapes, plus a step function. The pseudo-Voigt is an
approximation of the expected lineshape function, which will be a convolution of a Gaussian lineshape, defined by the
monochromator resolution, with a Lorenztian lineshape from the core-hole broadening. The pseudo-Voigt peakshape is simply a sum
of Gaussian and Lorenztian peakshapes :
IV = mIG −
+ (1 m)IL
¡
IG = exp h
− ln E−Em
2
i
2
W + ( E−Em) η ¡ ξ 2
¢ £
W + ( E−Em) η
2
IL = ¢ £ ¡
− 2
W + ( E Em) η + E Em − 2
Where IG and IL are the Gaussian and Lorentzian lineshape components, respectively, m is the mixing factor determining the propor-
tion of each, W is the half-linewidth, E is the abscissa (X-ray energy for edge spectra), Em is the position of the peak, η is the peak
skew, and ξ is the ratio of Gaussian to Lorentzian linewidths (lw-ratio). The step function is simply the integral of this function with
η = 0 and ξ = 1 (comprised of an erf and an arctangent function for the Gaussian and Lorentzian parts, respectively). A squaric poly-
X
nomial is also inculded to approximate any background function of the spectrum. Neglecting the latter, the spectrum, I(E), is fit to the
function : I(E) = a0 I0(E) + ai IVi(E) where ai and IVi are the peak ampitudes and peak shape functions (defined above),
i
respectively, the summation is over all peaks included in the fit, and a0 and I0(E) are the step function amplitude, and the step func-
tion, respectively. The program is started by simply typing EDG_FIT, and will then display the main menu:
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
x EDG-FIT 1.1 x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 to read data x
x 2 to change parameters x
x 3 to plot x
x 4 to fit data x
x 5 for output x
x 6 for process manager x
x 7 to quit x
x :a x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
The data should first be read using option 1, in our example we will fit a sulfur K-edge .EDG data file generated by PROCESS :
Here, we have restored prarameters from a previous EDG_FIT session. The parameters can now be modified option 2 of the main
menu, to which the program responds :
The parameter X-delta is the number of half-widths either side of the peak position each peak will be calculated. This number should
be at least 4.0, and larger numbers will yield more accurate (but slower to calculate) peak fits. The "offset", "slope" and "twist" refer
to the coefficients of the background squaric polynomial function. The parameter editor is command line driven, and can be exited by
- 53 -
entering 0 or control-Z. In our example, we will change the intensity of the first peak, and then exit the parameter editor.
1 2 3 4 5 6 7
Amplitude position half-width mixing offset slope twist
1| *0.873 * 2474.070 *0.700 *0.581 0.152E-02 0.163E-02 0.336E-04
Amplitude position half-width mixing skew lw-ratio
2| * 1.72 * 2470.230 *0.571 0.599 0.000E+00 0.697 0.000E+00
3| * 3.09 * 2471.640 *0.487 ^0.599 0.000E+00 1.16 0.000E+00
4| * 1.29 * 2473.250 * 1.17 ^0.599 0.000E+00 0.710 0.000E+00
5| *0.318 * 2475.390 * 1.34 ^0.599 0.000E+00 0.507 0.000E+00
6| *0.638 * 2479.410 * 2.88 ^0.599 0.286 1.81 0.000E+00
7| *0.105 * 2485.330 * 2.47 ^0.599 0.300 1.81 0.000E+00
In EDG_FIT linked parameters simply hold the value of the corresponding parameter of the previous peak, and are denoted by the ^
character to the left of the linked parameter (freely floating parameters are denoted by an asterisk).At this stage one would normally
plot the fit, using option 3 of the main menu. In our example, however, we will go straight to fitting the data using option 4, we
choose the defaults of a maximum of 10000 total peak-shape function evaluations (the fitting routine will bail out after this number),
and a error-printout every 20 evalutations :
Unlike OPT, which uses custom-written fitting algorithms, EDG_FIT uses the double precision version of the public domain MIN-
PAK fitting library (Argonne National Laboratory; B.S. Garbow, K.E. Hillstrom, J.J. More) which can handle the large numbers of
variables (22 in our example) required in analysis of edge data. After the data have been fitted we view the fit using option 3 of the
main menu :
The fit is then displayed, together with the residual, as illustrated in figure F-1 below.
- 54 -
3.5
2.5
Normalised Absorbance
2
1.5
0.5
Figure F-1 EDG_FIT plot of peak deconvolution. The individual peaks are shown, together with the step function and the residual of
the fit (lower curve).
The final values of the parameters can be viewed by re-entering the parameter editor (menu option 2) and an ASCII (DATA) output
file of the fit can be created using option 5 of the main menu.
In this example, two processes are active; PROCESS and MULDAT, and the these are listed, with process id, title and comments.
The processes in the list can be highlighted by moving the up and down cursor keys, and the highlighted process can be attached,
deleted or it’s comments modified by pressing the PF1 key, which will pull down the options menu:
lqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
xDKA200:[GEORGE.MAIN.EXAFS.EXAFS]MULDAT.EXE;167 x
xCPU time used : 0 00:00:00.73 x
x 2E6 MULDAT x
t PROC_ID q TITLE q Comments: qqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x 21A PROC26 Working up the data here x
x 2E6 MULDAT Making the figure here x
mqqqqqqqqqqqqqqqqqqqlqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqk
Press PF1 for Optiox IOSPM - SUB-PROCESS MANAGER x
tqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqu
x Press 1 to attach to a process x
x 2 to spawn a new VMS subprocess x
x 3 for process information x
x 4 to change process comments x
x 5 to delete a process x
x 6 to return x
x :a x
mqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqj
- 55 -
H EXAFSPAK INSTALLATION
The EXAFSPAK programs can be obtained on the World-Wide-Web:
http://www-ssrl.slac.stanford.edu/exafspak.html.
Follow this link to lead to the latest versions of Open VMS, UNIX and Windows 95/98/NT/2000 EXAFSPAK, together with current
installation instructions
Comments, problems, or suspected bugs in the programs or setup procedure should be reported to the authors. Custom installations
can be performed by the authors upon request.
We welcome comments from users of EXAFSPAK. Please feel free to contact the authors, either by electronic mail, or by mail, in
order to communicate any comments (including suggestions of possible improvements), program bugs or suggestions for improve-
ment. If users believe that they have discovered a program bug a careful note should be made of the following:
1. The program, and the exact command line that was used to run it.
2. The module and routine names (and line numbers, if given) given in the symbolic stack dump (if the program crashes) and any
error messages reported by the program.
Note: Some obsolete EXAFSPAK programs (i.e. SVIEW, DEAD, CALIB and AVEX), and the EXAFSPAK converter MCONV require
sdata run time libraries in order to read SSRL raw data files. These must be obtained by separate application to the SSRL computer
group and installed upon the host machine before running the EXAFSPAK SETUP.COM. The sdata run-time library only operates
on VAX hadware.
I. BIBLIOGRAPHY
There is presently no good texts which deals with all aspects of XAS data analysis. The following is a partial list of useful reference
books which may be consulted.
X-ray Absorption. Principals, Applications, Techniques of EXAFS, SEXAFS, and XANES (Eds. Koningsberger, D.C.; Prins, R.) John
Wiley and Sons Inc., 1988 ISBN 0-471-87547-3 A compendium of eleven chapters written by thirteen international contributors. A
good reference text which is fairly up to date on most aspects of EXAFS.
Teo, B.K. EXAFS: Basic Principals and Data Analysis. Springer-Verlag 1986 ISBN 3-540-15833-2 A good general text for elemen-
tary aspects of data analysis. Multiple scattering is treated, however recent theoretical advances have made this section a little out of
date.
J. DISCLAIMER
We believe the programs that are described in this manual, collectively known as EXAFSPAK, to be largely error-free. Nevertheless,
in any large body of code it is difficult to guarantee that there are absolutely no errors. Similarly, it is also possible that in this manual
we have inadvertently made errors. The EXAFSPAK programs and any accompanying documentation are used at entirely at the
user’s own risk. The authors are not responsible for any direct or consequential damages suffered by any parties from the use of
EXAFSPAK programs or of any accompanying documentation.
_____________________________________________
- 56 -