Source code for pyspeckit.wrappers.fit_gaussians_to_simple_spectra

"""
======================
Simple Gaussian Fitter
======================
"""
from __future__ import print_function
from ..spectrum.classes import Spectrum

[docs]def fit_gaussians_to_simple_spectra(filename, unit='km/s', doplot=True, baseline=True, plotresiduals=False, figuresavename=None, croprange=None, savename=None, **kwargs): """ As stated in the name title, will fit Gaussians to simple spectra! kwargs will be passed to specfit *figuresavename* [ None | string ] After fitting, save the figure to this filename if specified *croprange* [ list of 2 floats ] Crop the spectrum to (min,max) in the specified units *savename* [ None | string ] After fitting, save the spectrum to this filename Note that this wrapper can be used from the command line: python fit_gaussians_to_simple_spectra.py spectrum.fits """ # load a FITS-compliant spectrum spec = Spectrum(filename) if spec.xarr.unit != units: spec.xarr.frequency_to_velocity() spec.xarr.convert_to_unit(units) if croprange is not None and len(croprange) == 2: spec.crop(*croprange) if doplot: spec.plotter() if baseline: spec.baseline() spec.specfit(**kwargs) spec.specfit(guesses=spec.specfit.modelpars) if plotresiduals: spec.specfit.plotresiduals() if figuresavename is not None: spec.plotter.figure.savefig(figuresavename) if savename is not None: spec.write(savename) return spec
if __name__ == "__main__": import sys import optparse parser=optparse.OptionParser() parser.add_option("--units","--unit","-u",help="Units. Default is km/s",default="km/s") parser.add_option("--plot","--doplot","-p",help="Plot spectrum. Default is "+\ "True, but will not save unless a savename is specified. You can "+\ "set the savename with this option.",default=True) parser.add_option("--baseline","-b",help="Baseline the spectrum? Default is True",default=True) parser.add_option("--plotresiduals",help="Plot the residual spectrum? Default is False",default=False) parser.add_option("--savename","-s",help="Savename for the .fits or .txt (or other format) file.",default=None) parser.add_option("--crop","-c",help="Crop the spectrum? Syntax is [x1,x2]",default=None) parser.set_description("""Fit a gaussian to a spectrum, optionally after baselining. Save a figure and/or a binary image. Extra arguments will be passed via kwargs to spectrum.specfit""") options,args = parser.parse_args() croprange = [int(i) for i in options.crop.strip('[]').split(',')] if len(args) > 1: kwargs = args[1:] fit_gaussians_to_simple_spectra(args[0],unit=options.units, doplot=bool(options.plot), baseline=options.baseline, plotresiduals=options.plotresiduals, figuresavename=options.plot, croprange=croprange, savename=options.savename, **kwargs)