""" This module defines a region of interest class and utility functions. Needs some more work. Authors/Modifications: ----------------------- * Mark Rivers, GSECARS * See http://cars9.uchicago.edu/software/python/index.html * Modified for Tdl, tpt """ ######################################################################## import sys from larch.larchlib import plugin_path sys.path.insert(0, plugin_path('xray')) from calibration import channel_to_energy, energy_to_channel ######################################################################## class Roi: """ Class that defines a Region-Of-Interest (ROI) Attributes: ----------- * left # Left channel * right # Right channel * label # Name of the ROI * bgr_width # Number of channels to use for background subtraction
#!/usr/bin/env python """ Read/Write XAS Data Interchange Format for larch install the xdi python module from https://github.com/XraySpectroscopy/XAS-Data-Interchange """ import sys from larch.larchlib import plugin_path sys.path.insert(0, plugin_path('std')) from xdi import XDIFile def xdigroup(fname, _larch=None): """simple mapping of XDI file to larch groups""" if _larch is None: raise Warning("cannot read xdigroup -- larch broken?") x = XDIFile(fname) group = _larch.symtable.create_group() group.__name__ ='XDI file %s' % fname for key, val in x.__dict__.items(): if not key.startswith('_'): setattr(group, key, val) return group def registerLarchPlugin(): return ('_io', {'xdigroup': xdigroup})
#!/usr/bin/env python """ XAFS pre-edge subtraction, normalization algorithms """ import sys import numpy as np from scipy import polyfit from larch.larchlib import plugin_path # put the 'std' and 'xafs' (this!) plugin directories into sys.path sys.path.insert(0, plugin_path("std")) # now we can reliably import other std and xafs modules... from mathutils import index_nearest, remove_dups MODNAME = "_xafs" def find_e0(energy, mu, group=None, _larch=None): """calculate E0 given mu(energy) This finds the point with maximum derivative with some checks to avoid spurious glitches. Arguments ---------- energy: array of x-ray energies, in eV mu: array of mu(E) group: output group
""" import sys, os import numpy as np from numpy import arange, interp, pi, zeros, sqrt from numpy.fft import fft, ifft from scipy.optimize import leastsq as scipy_leastsq import larch from larch.larchlib import Parameter, isParameter, plugin_path from larch.utils import OrderedDict from larch.symboltable import isgroup sys.path.insert(0, plugin_path('std')) sys.path.insert(0, plugin_path('fitter')) sys.path.insert(0, plugin_path('xafs')) from mathutils import index_of, realimag from minimizer import Minimizer from xafsft import xafsft, xafsft_prep, xafsft_fast, xafsift, ftwindow from feffdat import FeffPathGroup, _ff2chi class FilterGroup(larch.Group): def __init__(self, kmin=0, kmax=20, kw=2, dk=1, dk2=None, window='kaiser', rmin = 0, rmax=10, dr=0, rwindow='kaiser', kweight=None, nfft=2048, kstep=0.05, fitspace='r', _larch=None, **kws): larch.Group.__init__(self)
feffit sums Feff paths to match xafs data """ import sys, os import numpy as np from numpy import arange, interp, pi, zeros, sqrt from numpy.fft import fft, ifft from scipy.optimize import leastsq as scipy_leastsq import larch from larch.larchlib import Parameter, isParameter, plugin_path from larch.utils import OrderedDict from larch.symboltable import isgroup sys.path.insert(0, plugin_path('std')) sys.path.insert(0, plugin_path('fitter')) sys.path.insert(0, plugin_path('xafs')) from mathutils import index_of, realimag from minimizer import Minimizer from xafsft import xafsft, xafsft_prep, xafsft_fast, xafsift, ftwindow from feffdat import FeffPathGroup, _ff2chi class FilterGroup(larch.Group): def __init__(self, kmin=0, kmax=20, kw=2,