# Baseline Fitting¶

There are a number of cool features in baselining that aren’t well-described below, partly due to Sphinx errors as of 12/22/2011.

exclude and include allow you to specify which parts of the spectrum to use for baseline fitting. Enter values as pairs of coordinates.

Excludefit makes use of an existing fit and excludes all points with signal above a (very low) threshold when fitting the baseline. Going back and forth between baseline(excludefit=True) and specfit() is a nice way to iteratively measure the baseline & emission/absorption line components.

## API¶

class pyspeckit.spectrum.baseline.Baseline(Spectrum)[source] [github] [bitbucket]

Class to measure and subtract baselines from spectra.

While the term ‘baseline’ is generally used in the radio to refer to broad-band features in a spectrum not necessarily associated with a source, in this package it refers to general continuum fitting. In principle, there’s no reason to separate ‘continuum’ and ‘spectral feature’ fitting into different categories (both require some model, data, and optional weights when fitting). In practice, however, ‘continuum’ is frequently something to be removed and ignored, while spectral features are the desired measurable quantity. In order to accurately measure spectral features, it is necessary to allow baselines of varying complexity.

The Baseline class has both interactive and command-based data selection features. It can be used to fit both polynomial and power-law continua. Blackbody fitting is not yet implemented [12/21/2011]. Baseline fitting is a necessary prerequisite for Equivalent Width measurement.

As you may observe in the comments on this code, this has been one of the buggiest and least adequately tested components of pyspeckit. Bug reports are welcome. (as of 1/15/2012, a major change has probably fixed most of the bugs, and the code base is much simpler)

__call__(*args, **kwargs) [github] [bitbucket]

Fit and remove a polynomial from the spectrum. It will be saved in the variable “self.basespec” and the fit parameters will be saved in “self.order”

Parameters: order: int Order of the polynomial to fit excludefit: bool If there is a spectroscopic line fit, you can automatically exclude the region with signal above some tolerance set by exclusionlevel (it works for absorption lines by using the absolute value of the signal) exclusionlevel: float The minimum value of the spectroscopic fit to exclude when fitting the baseline save: bool Write the baseline fit coefficients into the spectrum’s header in the keywords BLCOEFnn interactive: bool Specify the include/exclude regions through the interactive plot window fit_original: bool Fit the original spectrum instead of the baseline-subtracted spectrum. If disabled, will overwrite the original data with the baseline-subtracted version. Warning If this is set False, behavior of unsubtract may be unexpected fit_plotted_area: bool Will respect user-specified zoom (using the pan/zoom buttons) unless xmin/xmax have been set manually reset_selection: bool Reset the selected region to those specified by this command only (will override previous xmin/xmax settings) select_region: bool Run the region selection procedure? If false, will leave ‘includemask’ untouched baseline_fit_color: color name (string) [plot parameter] Color to plot the baseline clear_all_connections: bool [plot parameter] Disable any previous interactive sessions highlight_fitregion: bool [plot parameter] Highlight the selected region for baseline fitting (default green)
__init__(Spectrum)[source] [github] [bitbucket]

Declare interactive variables.

Must have a parent Spectrum class

Must declare button2action and button3action

__module__ = 'pyspeckit.spectrum.baseline'
annotate(loc='upper left', fontsize=10)[source] [github] [bitbucket]
button2action(event=None, debug=False, subtract=True, powerlaw=None, fit_original=False, spline=False, spline_sampling=None, spline_downsampler=<function median>, baseline_fit_color='orange', **kwargs)[source] [github] [bitbucket]

Do the baseline fitting and save and plot the results.

Note that powerlaw fitting will only consider positive data.

button3action(*args, **kwargs)[source] [github] [bitbucket]

Wrapper - same as button2action, but with subtract=False

clearlegend()[source] [github] [bitbucket]
copy(parent=None)[source] [github] [bitbucket]

Create a copy of the baseline fit

[ parent ]
A spectroscopic axis instance that is the parent of the specfit instance. This needs to be specified at some point, but defaults to None to prevent overwriting a previous plot.
crop(x1pix, x2pix)[source] [github] [bitbucket]

When spectrum.crop is called, this must be too

downsample(factor)[source] [github] [bitbucket]
fit(powerlaw=None, order=None, includemask=None, spline=False, spline_sampling=10, spline_downsampler=<function median>, xarr_fit_unit='pixels', **kwargs)[source] [github] [bitbucket]

Run the fit and set self.basespec

get_model(xarr=None, baselinepars=None)[source] [github] [bitbucket]
plot_baseline(annotate=True, baseline_fit_color='orange', use_window_limits=None, linewidth=1, alpha=0.75, plotkwargs={}, **kwargs)[source] [github] [bitbucket]

Overplot the baseline fit

Parameters: Other Parameters: annotate : bool Display the fit parameters for the best-fit baseline on the top-left of the plot baseline_fit_color : matplotlib color What color to use for overplotting the line (default is slightly transparent orange) use_window_limits : None or bool Keep the current window or expand the plot limits? If left as None, will use self.use_window_limits linewidth : number alpha : float [0-1] plotkwargs : dict Are passed to matplotlib’s plot function
savefit()[source] [github] [bitbucket]
set_basespec_frompars(baselinepars=None, xarr_fit_unit=None)[source] [github] [bitbucket]

Set the baseline spectrum based on the fitted parameters

Parameters: baselinepars : list Optional list of fit parameters, e.g. a list of polynomial coefficients xarr_fit_unit : None or ‘pixels’ or ‘native’ or unit The units that were used in the baseline fit
set_spectofit(fit_original=True, fit_residuals=False)[source] [github] [bitbucket]

Reset the spectrum-to-fit from the data

unsubtract(replot=True, preserve_limits=True)[source] [github] [bitbucket]

Restore the spectrum to “pristine” state (un-subtract the baseline)

replot [ True ]
Re-plot the spectrum? (only happens if unsubtraction proceeds, i.e. if there was a baseline to unsubtract)
preserve_limits [ True ]
Preserve the current x,y limits