def _do_measure_em2(pex, pos, ngauss, maxtry): from gmix_image import GMixEMBoot im=pex.get_rec(pos[0], pos[1]) cen_guess=pex.get_center(pos[0], pos[1]) sigma_guess=pex.get_sigma() gm=GMixEMBoot(im, ngauss, cen_guess, sigma_guess=sigma_guess, maxtry=maxtry) res=gm.get_result() flags=res['flags'] offset_arcsec=-9999. if flags != 0: print >>stderr,' failed to fit:',flags else: gmix=gm.get_gmix() dlist=gmix.get_dlist() offset=sqrt( (dlist[0]['row']-dlist[1]['row'])**2 + (dlist[0]['col']-dlist[1]['col'])**2 ) offset_arcsec=offset*PIXEL_SCALE return im,gm,flags,offset_arcsec
def _process_star(self, iobj, icutout): from gmix_image import GMixEMBoot import admom defres=({'whyflag':ZERO_WEIGHT_PIXELS}, {'flags':ZERO_WEIGHT_PIXELS}, {'flags':ZERO_WEIGHT_PIXELS}, numpy.zeros(len(WIDTHS)) - 9999, -9999.0) im,ivar,cen_guess=self._get_star_data(iobj,icutout) if im is None: return defres max_pixel = im.max() widths = measure_image_width(im, WIDTHS) cen1_guess=cen_guess sig1_guess=sqrt(2) ares = admom.admom(im, cen_guess[0], cen_guess[1], guess=sig1_guess) gm1=GMixEMBoot(im, 1, cen1_guess, sigma_guess=sig1_guess) res1=gm1.get_result() if res1['flags'] == 0: #print cen_guess #print res1['pars'] sig2_guess=sqrt( (res1['pars'][3] + res1['pars'][5])/2. ) cen2_guess=[res1['pars'][1], res1['pars'][2] ] else: sig2_guess=sig1_guess cen2_guess=cen1_guess gm2=GMixEMBoot(im, 2, cen2_guess, sigma_guess=sig2_guess) res2=gm2.get_result() if False and res2['flags'] != 0: import images images.multiview(im) resp=raw_input('hit enter (q to quit): ') if resp.lower() == 'q': stop return ares,res1,res2,widths,max_pixel