47 lines
886 B
Python
47 lines
886 B
Python
|
from astropy.modeling import models, fitting
|
||
|
|
||
|
from .utils import get_hist
|
||
|
|
||
|
|
||
|
def fit_line(x, y, model):
|
||
|
"""
|
||
|
Line fitting kx+b
|
||
|
|
||
|
Parameters
|
||
|
----------
|
||
|
x/y : array
|
||
|
x/y data
|
||
|
|
||
|
Returns
|
||
|
-------
|
||
|
fitted_model : astropy fitting model
|
||
|
fitting gaussian model
|
||
|
"""
|
||
|
fitter = fitting.LevMarLSQFitter()
|
||
|
fitted_model = fitter(model, x, y)
|
||
|
|
||
|
return fitted_model
|
||
|
|
||
|
|
||
|
def fit_hist_gaussian(x):
|
||
|
"""
|
||
|
Gaussian fitting is performed on the histogram
|
||
|
|
||
|
Parameters
|
||
|
----------
|
||
|
x : array
|
||
|
data point
|
||
|
|
||
|
Returns
|
||
|
-------
|
||
|
fitted_model : astropy fitting model
|
||
|
fitting gaussian model
|
||
|
"""
|
||
|
fitter = fitting.LMLSQFitter()
|
||
|
|
||
|
count, center = get_hist(x)
|
||
|
model = models.Gaussian1D(amplitude=count.max(), mean=x.mean(), stddev=x.std())
|
||
|
fitted_model = fitter(model, center, count)
|
||
|
|
||
|
return fitted_model
|