def do_fit_wavelengths(pixels, lambdas, alphaguess, sinbetaguess, gammaguess, deltaguess, band, pixel_y, error=None): ''' THIS HSOULD BE REMOVED''' bmap = {"Y": 6, "J": 5, "H": 4, "K": 3} order = bmap[band] parinfo = [ {'fixed': 1, 'value': order, 'parname': 'order', 'limited': [0,0], 'limits': [0,0]}, {'fixed': 1, 'value': pixel_y, 'parname': 'Y', 'limited': [0,0], 'limits': [0,0]}, {'fixed': 0, 'value': alphaguess, 'parname': 'alpha', 'step': 1e-5, 'limited': [0,0], 'limits': [0,0]}, {'fixed': 0, 'value': sinbetaguess, 'parname': 'sinbeta', 'step': 1e-5, 'limited': [0,0], 'limits': [30,50]}, {'fixed': 0, 'value': gammaguess, 'parname': 'gamma','step': 1e-15, 'limited': [1,1], 'limits': [0,20e-13]}, {'fixed': 0, 'value': deltaguess, 'parname': 'delta', 'step': 1e-1, 'limited': [1,1], 'limits': [0,2048]}, ] fa = {"x": pixels, "y": lambdas} if error is not None: fa["error"] = error lsf = mpfit.mpfit(wavelength_residuals, parinfo=parinfo, functkw=fa, quiet=1, maxiter=20) return lsf
def mpfitpeaks(x, y, N, error=None): pars = [1, np.min(y), 0] parinfo = [ {"value": N, "fixed": 1, "name": "Number of Peaks", "limited": [0, 0], "limits": [0, 0]}, {"value": 1.6, "fixed": 0, "name": "Sigma", "limited": [0, 0], "limits": [0, 0]}, {"value": pars[1], "fixed": 0, "name": "Offset", "limited": [0, 0], "limits": [0, 0]}, {"value": pars[2], "fixed": 0, "name": "Slope", "limited": [0, 0], "limits": [0, 0]}] for i in range(N): v = {"value": np.max(y)/2., "fixed": 0, "name": "Peak Value(%i)" % i, "limited": [1, 0], "limits": [0, 0]} pars.append(np.max(y)) parinfo.append(v) v = {"value": x[np.argmax(y)], "fixed": 0, "name": "Centroid(%i)" % i} pars.append(x[np.argmax(y)]) parinfo.append(v) fa = {"x": x, "y": y} if error is not None: fa["error"] = error return mpfit.mpfit(multi_gaussian_residuals, parinfo=parinfo, functkw=fa, quiet=1)
def mpfitpeaks(x, y, N, error=None): pars = [1, np.min(y), 0] parinfo = [{ "value": N, "fixed": 1, "name": "Number of Peaks", "limited": [0, 0], "limits": [0, 0] }, { "value": 1.6, "fixed": 0, "name": "Sigma", "limited": [0, 0], "limits": [0, 0] }, { "value": pars[1], "fixed": 0, "name": "Offset", "limited": [0, 0], "limits": [0, 0] }, { "value": pars[2], "fixed": 0, "name": "Slope", "limited": [0, 0], "limits": [0, 0] }] for i in range(N): v = { "value": np.max(y) / 2., "fixed": 0, "name": "Peak Value(%i)" % i, "limited": [1, 0], "limits": [0, 0] } pars.append(np.max(y)) parinfo.append(v) v = {"value": x[np.argmax(y)], "fixed": 0, "name": "Centroid(%i)" % i} pars.append(x[np.argmax(y)]) parinfo.append(v) fa = {"x": x, "y": y} if error is not None: fa["error"] = error return mpfit.mpfit(multi_gaussian_residuals, parinfo=parinfo, functkw=fa, quiet=1)
def mpfit_do(residual_fun, # function returned from mpfit_residuals() above x, # input x y, # input y = f(x) parinfo, # initial parameter guess error=None, maxiter=20): #TODO : Document parinfo part fa = {"x": x, "y": y} if error is not None: fa["error"] = error lsf = mpfit.mpfit(residual_fun, parinfo=parinfo, functkw=fa, quiet=1, maxiter=maxiter) return lsf
def mpfitpeak(x, y, error=None): parinfo = [{"value": np.max(y), "fixed": 0, "name": "Peak Value", 'step': 10}, {"value": x[np.argmax(y)], "fixed": 0, "name": "Centroid", 'step': .1}, {"value": 1.1, "fixed": 0, "name": "Sigma", 'step': .1}, {"value": np.min(y), "fixed": 0, "name": "Offset", 'step': 10}, {"value": 0, "fixed": 0, "name": "Slope", 'step': 1e-5}] fa = {"x": x, "y": y} if error is not None: fa["error"] = error return mpfit.mpfit(gaussian_residuals, parinfo=parinfo, functkw=fa, quiet=1)
def mpfit_do( residual_fun, # function returned from mpfit_residuals() above x, # input x y, # input y = f(x) parinfo, # initial parameter guess error=None, maxiter=20): #TODO : Document parinfo part fa = {"x": x, "y": y} if error is not None: fa["error"] = error lsf = mpfit.mpfit(residual_fun, parinfo=parinfo, functkw=fa, quiet=1, maxiter=maxiter) return lsf
def mpfitpeak(x, y, error=None): parinfo = [{ "value": np.max(y), "fixed": 0, "name": "Peak Value", 'step': 10 }, { "value": x[np.argmax(y)], "fixed": 0, "name": "Centroid", 'step': .1 }, { "value": 1.1, "fixed": 0, "name": "Sigma", 'step': .1 }, { "value": np.min(y), "fixed": 0, "name": "Offset", 'step': 10 }, { "value": 0, "fixed": 0, "name": "Slope", 'step': 1e-5 }] fa = {"x": x, "y": y} if error is not None: fa["error"] = error return mpfit.mpfit(gaussian_residuals, parinfo=parinfo, functkw=fa, quiet=1)
def do_fit_wavelengths(pixels, lambdas, alphaguess, sinbetaguess, gammaguess, deltaguess, band, pixel_y, error=None): ''' THIS HSOULD BE REMOVED''' bmap = {"Y": 6, "J": 5, "H": 4, "K": 3} order = bmap[band] parinfo = [ { 'fixed': 1, 'value': order, 'parname': 'order', 'limited': [0, 0], 'limits': [0, 0] }, { 'fixed': 1, 'value': pixel_y, 'parname': 'Y', 'limited': [0, 0], 'limits': [0, 0] }, { 'fixed': 0, 'value': alphaguess, 'parname': 'alpha', 'step': 1e-5, 'limited': [0, 0], 'limits': [0, 0] }, { 'fixed': 0, 'value': sinbetaguess, 'parname': 'sinbeta', 'step': 1e-5, 'limited': [0, 0], 'limits': [30, 50] }, { 'fixed': 0, 'value': gammaguess, 'parname': 'gamma', 'step': 1e-15, 'limited': [1, 1], 'limits': [0, 20e-13] }, { 'fixed': 0, 'value': deltaguess, 'parname': 'delta', 'step': 1e-1, 'limited': [1, 1], 'limits': [0, 2048] }, ] fa = {"x": pixels, "y": lambdas} if error is not None: fa["error"] = error lsf = mpfit.mpfit(wavelength_residuals, parinfo=parinfo, functkw=fa, quiet=1, maxiter=20) return lsf