Exemple #1
0
"""
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
Exemple #2
0
#!/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})
Exemple #3
0
#!/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
Exemple #4
0
"""

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)
        
Exemple #5
0
   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,