CARSMath
index
/usr/local/python/epics/CARSMath.py

This module contains miscellaneous math functions
 
Author:
   Mark Rivers
 
Created: 
   Sept. 16, 2002
 
Modifications:
   Sept. 26, 2002  MLR
      - Added newton function from scipy.optimize.  Put here so users don't
        need scipy

 
Modules
            
LinearAlgebra
Numeric
 
Functions
            
compress_array(array, compress)
Compresses an 1-D array by the integer factor "compress".  
Temporary fix until the equivalent of IDL's 'rebin' is found.
expand_array(array, expand, sample=0)
Expands an 1-D array by the integer factor "expand".  
if 'sample' is 1 the new array is created with sampling, if 1 then
the new array is created via interpolation (default)
Temporary fix until the equivalent of IDL's 'rebin' is found.
fit_gaussian(chans, counts)
Fits a peak to a Gaussian using a linearizing method
Returns (amplitude, centroid, fwhm).
Inputs:
   chans:
      An array of x-axis coordinates, typically channel numbers
 
   counts:
      An array of y-axis coordinates, typically counts or intensity
 
Outputs:
   Returns a tuple(amplitude, centroid, fwhm)
   amplitude:
      The peak height of the Gaussian in y-axis units
   centroid:
      The centroid of the gaussian in x-axis units
 
   fwhm:
      The Full Width Half Maximum (FWHM) of the fitted peak
 
Method:
   Takes advantage of the fact that the logarithm of a Gaussian peak is a
   parabola.  Fits the coefficients of the parabola using linear least
   squares.  This means that the input Y values (counts)  must not be 
   negative.  Any values less than 1 are replaced by 1.
newton(func, x0, fprime=None, args=(), tol=1.48e-08, maxiter=50)
newton is taken directly from scipy.optimize.minpack.py.  
I have extracted it here so that users of my software don't have to install 
scipy.  This may change in the future as I use more scipy features, and 
scipy will be required
 
Given a function of a single variable and a starting point,
find a nearby zero using Newton-Raphson.
fprime is the derivative of the function.  If not given, the
Secant method is used.
polyfitw(x, y, w, ndegree, return_fit=0)
Performs a weighted least-squares polynomial fit with optional error estimates.
 
Inputs:
   x: 
      The independent variable vector.
 
   y: 
      The dependent variable vector.  This vector should be the same 
      length as X.
 
   w: 
      The vector of weights.  This vector should be same length as 
      X and Y.
 
   ndegree: 
      The degree of polynomial to fit.
 
Outputs:
   If return_fit==0 (the default) then polyfitw returns only C, a vector of 
   coefficients of length ndegree+1.
   If return_fit!=0 then polyfitw returns a tuple (c, yfit, yband, sigma, a)
      yfit:  
         The vector of calculated Y's.  Has an error of + or - Yband.
 
      yband: 
         Error estimate for each point = 1 sigma.
 
      sigma: 
         The standard deviation in Y units.
 
      a: 
         Correlation matrix of the coefficients.
 
Written by:   George Lawrence, LASP, University of Colorado,
              December, 1981 in IDL.
              Weights added, April, 1987,  G. Lawrence
              Fixed bug with checking number of params, November, 1998, 
              Mark Rivers.  
              Python version, May 2002, Mark Rivers
 
Data
             __file__ = './CARSMath.pyc'
__name__ = 'CARSMath'