Simple fit of a stellar spectrum with scipy.optimize
The simplest way to fit a spectrum is to use one of the scipy minimzers.
It uses the minimizers given in the scipy.optimize package.
>>> from specgrid import Spectrum1D, SpectralGrid, assemble_observation, fitting
>>> spec_grid = SpectralGrid('munari.h5')
>>> model_observation = assemble_observation(spec_grid, plugin_names=['doppler', 'rotation', 'resolution'])
>>> my_spectrum = model_observation.evaluate(teff=4580., logg=3.0, feh=0.0)
>>> my_spectrum.data *= random.normal(1, 0.3, my_spectrum.flux.shape) #making my own spectrum
>>> result = fitting.fit_spectrum(my_spectrum, model_observation, teff=5780., logg=4.4, feh=-1.)
>>> result
Fit Result:
Fit successful
teff 4585.617 +/- 0.000 (5780.000)
logg 3.020 +/- 0.000 (4.400)
feh 0.038 +/- 0.000 (-1.000)
>>> result = fitting.fit_spectrum(my_spectrum, model_observation, teff=5780., logg=4.4, feh=-1., method='Nelder-Mead')
specgrid.fitting.base Module
Classes
BaseFitResult |
|
OrderedDict(*args, **kwds) |
Dictionary that remembers insertion order Initialize an ordered dictionary. |
SimpleFitResult(best_fit_values, ...) |
Simple fit result object |
SimpleLeastsqFitResult(best_fit_values, ...) |
|
Spectrum1D(flux, wcs[, unit, uncertainty, ...]) |
|