[AstroPy] Gaussian models fitter non-functional?
Erik Bray
embray at stsci.edu
Mon Oct 19 11:00:05 EDT 2015
On 10/16/2015 09:47 AM, Giuliano Iorio wrote:
>
> Hi Jeff,
> this is the kind of staff that usually happens if the position of the initial guess is too far away the right one. Did you plot the contour of the fitted gaussian on the image?
> It can be also that the image is too noisy around the target to fit. I usually use only a little subarray around the target, then I search the position of the maximum and I set the initial guess of xo and yo to its position. After I normalize all the subarray to the value of the maximum and cut all the signal below a certain threshold (usually 0.1).
> In this way I am able to obtain a robust fit also in very noisy map.
I agree pretty much with all of Giuliano's advice. And again it might help to
exclude data outside a smaller subarray. Without actually seeing the data it's
hard to provide much other advice.
Have you tried a different optimizer? There are a couple other non-linear
fitters in the package and some have different sensitivities to initial
conditions. But it's certainly not "non-functional".
Erik
>> Hi Jeff--
>>
>> The fitted model will not be in g_init (this remains unchanged), but in g. If you take a look in g, you should be able to see the fitted results.
>>
>> Cheers
>> Steve
>>
>> ----- Original Message -----
>> From: "Jeff Mangum" <jmangum at nrao.edu>
>> To: astropy at scipy.org
>> Sent: Friday, October 16, 2015 3:11:56 PM
>> Subject: [AstroPy] Gaussian models fitter non-functional?
>>
>> Hello,
>>
>> Long-time listener but first-time caller. Have been trying to use the
>> 2D Gaussian fitting capabilities within astropy.models to fit a 2D
>> Gaussian to an image (in FITS format). Here is my script:
>>
>> import numpy as np
>> import radio_beam
>> from astropy.modeling import models, fitting
>> from astropy import units as u
>> from astropy.io import fits
>> import astropy.coordinates as coord
>> import astropy.wcs as wcs
>> import matplotlib
>> import pylab as pl
>>
>> # The following is the position of the peak in both J1 and J2, so use
>> # it as the starting guess
>> ra0 = '13h15m03.50s'
>> dec0 = '24d37m08.2s'
>>
>> radeg = coord.Angle(ra0, unit=u.hour).degree
>> decdeg = coord.Angle(dec0, unit=u.degree)
>>
>> # Now open the image
>> hdulist = fits.open('IC860CbandCarrayH2COJ1_moment0.fits')
>> #hdulist = fits.open('IC860KubandDarrayH2COJ2_moment0.fits')
>> w = wcs.WCS(hdulist[0].header, hdulist)
>>
>> yy,xx = np.indices(hdulist[0].data.shape)
>>
>> x0,y0 = w.wcs_world2pix(radeg, decdeg, 1)
>>
>> # Now fit 2D gaussian
>> g_init = models.Gaussian2D(amplitude=1., x_mean=x0, y_mean=y0,
>> x_stddev=1, y_stddev=1)
>> fit_g = fitting.LevMarLSQFitter()
>> g = fit_g(g_init, xx, yy, hdulist[0].data)
>>
>>
>> When I look at g_init (which is where I believe the fit results should
>> be), I see that the fit has not moved from its initial settings. It
>> appears that the fitter just did not run. With Adam Ginsburg's help I
>> have a workaround using gaussfitter, but would certainly like to make
>> this work with astropy.models. Thanks!
>>
>> -- Jeff
>> _______________________________________________
>> AstroPy mailing list
>> AstroPy at scipy.org
>> https://mail.scipy.org/mailman/listinfo/astropy
>>
>> !DSPAM:5620f7a993681466218807!
>>
>>
>> _______________________________________________
>> AstroPy mailing list
>> AstroPy at scipy.org
>> https://mail.scipy.org/mailman/listinfo/astropy
> _______________________________________________
> AstroPy mailing list
> AstroPy at scipy.org
> https://mail.scipy.org/mailman/listinfo/astropy
>
More information about the AstroPy
mailing list