Changeset 20285
- Timestamp:
- Oct 20, 2008, 11:29:18 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/sj_ippTests_branch_20080929/ippTests/compIPPphoto.py
r20279 r20285 759 759 scale,x0,xsig,y0,ysig,theta = p 760 760 model=scale*gauss2D(yx,x0,xsig,y0,ysig,theta) 761 win.showArray(data-model)762 761 resid = reshape(data,(data.shape[0]*data.shape[1],))-reshape(model,(model.shape[0]*model.shape[1],)) 763 762 if (blankRadius > 0): … … 770 769 inradius = (((x-x0)**2 + (y-y0)**2) > blankRadius**2) 771 770 inradius = reshape(inradius,(inradius.shape[0]*inradius.shape[1],)) 772 resid[inradius==1] = 0 771 resid[inradius] = 0 772 # win.showArray(reshape(resid,model.shape)) 773 773 return resid 774 774 … … 794 794 theta -= 180 795 795 bestp=(scale,x0,xsig,y0,ysig,theta) 796 resid=reshape(gaussResid(bestp,yx,data,blankrad ),data.shape)796 resid=reshape(gaussResid(bestp,yx,data,blankrad,blankInner),data.shape) 797 797 mod=data-resid 798 798 return bestp,resid,mod … … 812 812 813 813 def doGaussPsfPhotometry(infile,initialGuessList=[(2000.,1011.,2.,1176.,2.,0)],\ 814 blankrad= 15,defHalfwinsize=15,HDU=0):814 blankrad=9,defHalfwinsize=15,HDU=0): 815 815 """Fit Gaussians to image in infile's HDU near the 816 816 positions and with fluxes and sigmas given in initialGuessList""" 817 # XXX Todo: Make frame with residuals. Make blank array, then insert residuals. 817 818 import pyfits 818 819 from numpy import nan 820 from numarray import ones,zeros,Float32 821 from scipy import ogrid 819 822 f_handle=pyfits.open(infile) 820 823 img = f_handle[HDU].data 824 resid_img = 1e-7*ones(img.shape,Float32) 825 print resid_img.shape,type(resid_img),img.shape,type(img) 821 826 fitlist = [] 822 827 for initialGuessTuple in initialGuessList: … … 829 834 halfwinsize = defHalfwinsize 830 835 subim = img[int(y0)-halfwinsize:int(y0)+halfwinsize+1,int(x0)-halfwinsize:int(x0)+halfwinsize+1] 831 # ds9-based coords start at 1,1, while these start at 0,0, so832 # we need to add 1 to all internally used coords to get them833 # to match with what we see in ds9834 yx= scipy.ogrid[1+y0-halfwinsize:1+y0+halfwinsize+1,1+x0-halfwinsize:1+x0+halfwinsize+1]836 # ds9-based coords start at 1,1, while numpy's start at 0,0, 837 # so we need to add 1 to all internally used coords to get the 838 # fitted coordinates to match with what we see in ds9 839 yx=ogrid[1+int(y0)-halfwinsize:1+int(y0)+halfwinsize+1,1+int(x0)-halfwinsize:1+int(x0)+halfwinsize+1] 835 840 try: 836 841 par,res,bestfit=fitGauss(yx,subim,initialGuessTuple,blankrad,blankInner=False) 837 842 except: 838 843 par=(nan,nan,nan,nan,nan,nan) 844 res = subim 839 845 (scale,x,xsig,y,ysig,theta)=par 846 win.showArray(res) 847 resid_img[int(y0)-halfwinsize:int(y0)+halfwinsize+1,int(x0)-halfwinsize:int(x0)+halfwinsize+1] = res 840 848 print initialGuessTuple, scale,x,xsig,y,ysig,theta 841 849 fitlist.append(par) 842 850 f_handle.close() 843 return par 851 outname = 'gaussfit_resid_'+infile 852 primHDU = pyfits.PrimaryHDU(resid_img) 853 hdulist = pyfits.HDUList([primHDU]) 854 hdulist.writeto(outname,clobber=True) 855 return fitlist 844 856 845 857 def doEfbComparison(simfile='simtest.1.00a.fits',efbfile='efbsim.1.00a.fits',simtab='simtest.1.00a.cmf'): 846 858 import pyfits 847 from numpy import array 859 from numpy import array, rec 860 import re 848 861 tab = pyfits.open(simtab) 849 862 tdata = tab[1].data … … 861 874 862 875 savelist = [ inparlist[i] + efbparlist[i] + simparlist[i] for i in range(nrows)] 863 saverows = numpy.rec.array(savelist,names=['counts_in','x_in','y_in',\864 'efbfit_counts','efbfit_x','efbfit_fwhm_x',\865 'efbfit_y','efbfit_fwhm_y','efbfit_theta',\866 'simfit_counts','simfit_x','simfit_fwhm_x',\867 'simfit_y','simfit_fwhm_y','simfit_theta'])876 saverows = rec.array(savelist,names=['counts_in','x_in','y_in',\ 877 'efbfit_counts','efbfit_x','efbfit_fwhm_x',\ 878 'efbfit_y','efbfit_fwhm_y','efbfit_theta',\ 879 'simfit_counts','simfit_x','simfit_fwhm_x',\ 880 'simfit_y','simfit_fwhm_y','simfit_theta']) 868 881 for col in ['efbfit_fwhm_x','efbfit_fwhm_y','simfit_fwhm_x','simfit_fwhm_y']: 869 882 saverows.field(col)[0:] *= 2.35 870 883 871 884 saveHDU = tabHDUfromRecArray(saverows) 872 saveHDU.writeto('gaussfit_'+efbfile) 873 874 885 fitsend = re.compile('(\.[sc]mf|\.fits?)$') 886 saveHDU.writeto('gaussfit_'+fitsend.sub('',efbfile)+'___'+simfile,clobber=True) 887 888 889
Note:
See TracChangeset
for help on using the changeset viewer.
