def copy_output(self, s2, ellip, s2n, ci, res): st = zeros(1, dtype=self.out_dtype()) # first copy inputs and data from the CI st['s2'] = s2 st['s2n'] = s2n st['ellip'] = ellip st['e1true'] = ci['e1true'] st['e2true'] = ci['e2true'] st['etrue'] = ci['etrue'] st['gamma'] = e2gamma(st['etrue']) st['gamma1'],st['gamma2'] = e1e2_to_g1g2(st['e1true'],st['e2true']) st['irr_uw'] = ci['cov_uw'][0] st['irc_uw'] = ci['cov_uw'][1] st['icc_uw'] = ci['cov_uw'][2] st['irr_psf_uw'] = ci['cov_psf_uw'][0] st['irc_psf_uw'] = ci['cov_psf_uw'][1] st['icc_psf_uw'] = ci['cov_psf_uw'][2] size2psf = ci['cov_psf_uw'][0]+ci['cov_psf_uw'][2] size2obj = ci['cov_image0_uw'][0]+ci['cov_image0_uw'][2] st['s2_uw'] = size2psf/size2obj s2psf_am = ci['cov_psf_admom'][0]+ci['cov_psf_admom'][2] s2obj_am = ci['cov_image0_admom'][0]+ci['cov_image0_admom'][2] st['s2admom'] = s2psf_am/s2obj_am st['sigma_psf_admom'] = \ mom2sigma(ci['cov_psf_admom'][0]+ci['cov_psf_admom'][2]) st['sigma_admom'] = \ mom2sigma(ci['cov_image0_admom'][0]+ci['cov_image0_admom'][2]) st['sigma0_admom'] = \ mom2sigma(ci['cov_admom'][0]+ci['cov_admom'][2]) if 'psf_res' in res: for i,r in enumerate(res['psf_res']['gmix']): for k in ['p','row','col','irr','irc','icc']: st['gmix_psf'][k][0,i] = r[k] psf_moms = gmix_image.total_moms(res['psf_res']['gmix']) st['irr_psf_meas'] = psf_moms['irr'] st['irc_psf_meas'] = psf_moms['irc'] st['icc_psf_meas'] = psf_moms['icc'] st['sigma_psf_meas'] = 0.5*(psf_moms['irr']+psf_moms['icc']) st['numiter_psf'] = res['psf_res']['numiter'] st['ntry_psf'] = res['psf_res']['ntry'] st['fdiff_psf'] = res['psf_res']['fdiff'] if 'res' in res: for i,r in enumerate(res['res']['gmix']): for k in ['p','row','col','irr','irc','icc']: st['gmix'][k][0,i] = r[k] moms = gmix_image.total_moms(res['res']['gmix']) st['irr_meas'] = moms['irr'] st['irc_meas'] = moms['irc'] st['icc_meas'] = moms['icc'] st['s2_meas'] = \ (psf_moms['irr']+psf_moms['icc'])/(moms['irr']+moms['icc']) st['sigma_meas'] = 0.5*(moms['irr']+moms['icc']) st['e1_meas'] = (moms['icc']-moms['irr'])/(moms['icc']+moms['irr']) st['e2_meas'] = 2*moms['irc']/(moms['icc']+moms['irr']) st['e_meas'] = sqrt(st['e1_meas']**2 + st['e2_meas']**2) st['gamma_meas'] = e2gamma(st['e_meas']) st['gamma1_meas'],st['gamma2_meas'] = \ e1e2_to_g1g2(st['e1_meas'],st['e2_meas']) st['flags'] = res['res']['flags'] st['numiter'] = res['res']['numiter'] st['ntry'] = res['res']['ntry'] st['fdiff'] = res['res']['fdiff'] # only makes sense for ngauss==1, need to adapt if s2n > 0: Tpsf = psf_moms['irr']+psf_moms['icc'] Tobj = moms['irr']+moms['icc'] R = 1.-Tpsf/(Tpsf+Tobj) st['e1_corr'] = corr_e(st['e1_meas'], R, s2n) st['e2_corr'] = corr_e(st['e2_meas'], R, s2n) st['e_corr'] = sqrt(st['e1_corr']**2 + st['e2_corr']**2) st['gamma_corr'] = e2gamma(st['e_corr']) st['gamma1_corr'],st['gamma2_corr'] = \ e1e2_to_g1g2(st['e1_corr'],st['e2_corr']) else: st['s2_meas'] = -9999 # figure out how to measure this st['s2n_meas'] = st['s2n'] return st