Second, the limitations you are seeing are due to using the outdated, no-longer-supported (for several years now actually) Ifeffit library. These data can be read and processed without problem with Larch, the replacement for Ifeffit.
Stop using Ifeffit. Use Larch instead. Really.
An example script to use larch for your `fail.dat` file is listed below. It is somewhat complicated because the raw data file is such a poor representation of EXAFS data.
##### larch script to read, smooth and process data in the horrible PFBL12C format
# read raw data, extract angle, i0, sum of fluorescence
datafile = 'fail.dat'
rawdat = read_ascii(datafile)
def degrees2eV(angle, dspace=1.63747):
from scipy.constants import hbar, c, e
hbarc = 1.e10*hbar*c/e
return (pi*hbarc/dspace) / sin(angle*pi/180.0)
#enddef
rawdat.angle = rawdat.data[0, :] # angle in degrees. yikes!
rawdat.energy = degrees2eV(rawdat.angle)
rawdat.i0 = rawdat.data[42, :]
rawdat.fluor = rawdat.data[3:42, :].sum(axis=0)
# smooth data with Savitzky-Golay (data is ~evenly sampled in angle)
smoothed = group(energy=rawdat.energy)
smoothed.i0 = savitzky_golay(rawdat.i0, 5, 1)
smoothed.fluor = savitzky_golay(rawdat.fluor, 5, 1)
newplot(smoothed.energy, rawdat.fluor, win=3)
plot(smoothed.energy, smoothed.fluor, zorder=50, linewidth=4, win=3)
### create "normal" XAFS energies, finely spaced over edge,
### but spaced evenly in k for the EXAFS
e0 = 8980.0 # nominal Cu K edge
emin = smoothed.energy.min()
emax = smoothed.energy.max() - 5.0
epre1 = e0 - 20.0
epre2 = e0 + 20.0
kmin = etok(20.0)
kmax = etok(emax-e0)
def make_range(start, stop, step):
npts = max(2, 1 + int(0.1 + abs(stop-start)/abs(step)))
return linspace(start, stop, npts)
#enddef
en_new = concatenate((make_range(emin, epre1, 5),
make_range(epre1+0.5, epre2-0.5, 0.5),
e0 + ktoe(make_range(kmin, kmax, 0.05))))
# now interpolate smoothed data onto this energy grid
dat = group(energy=en_new, filename=datafile)
dat.i0 = interp(smoothed.energy, smoothed.i0, dat.energy)
dat.fluor = interp(smoothed.energy, smoothed.fluor, dat.energy)
# run autobk
autobk(dat, rbkg=0.8, kweight=1)
# plot data
plot_mu(dat, show_norm=True)
plot_chik(dat, kweight=1, win=2)
###################################################