def select_objects(): from grizli.pipeline import photoz import numpy as np total_flux = 'flux_auto_fix' total_flux = 'flux_auto' # new segmentation masked SEP catalogs object_only = False self, cat, zout = photoz.eazy_photoz(root, object_only=object_only, apply_prior=False, beta_prior=True, aper_ix=2, force=True, get_external_photometry=False, compute_residuals=False, total_flux=total_flux) if False: args = np.load('fit_args.npy', allow_pickle=True)[0] phot_obj = photoz.EazyPhot(self, grizli_templates=args['t0'], zgrid=self.zgrid, apcorr=self.idx * 0. + 1) flux = self.cat[total_flux] * 1. hmag = 23.9 - 2.5 * np.log10(cat['f160w_tot_1']) # Reddest HST band lc_clip = self.lc * 1 lc_clip[self.lc > 1.55e4] = 0 # in case ground-based / WISE red band ixb = np.argmax(lc_clip) sn_red = self.cat[self.flux_columns[ixb]] / self.cat[self.err_columns[ixb]] grad = np.gradient(self.zgrid) cumpz = np.cumsum(self.pz * grad, axis=1) cumpz = (cumpz.T / cumpz[:, -1]).T chi2 = (self.chi_best / self.nusefilt) iz6 = np.where(self.zgrid > 6.0)[0][0] iz7 = np.where(self.zgrid > 7)[0][0] iz8 = np.where(self.zgrid > 8)[0][0] iz9 = np.where(self.zgrid > 9)[0][0] highz_sel = (hmag < 27.5) #& (self.cat['class_valid'] > 0.8) #highz_sel |= (cumpz[:,iz6] < 0.3) & (self.cat['flux_radius'] > 2.5) #highz_sel &= (self.cat['flux_radius'] > 2.5) highz_sel &= chi2 < 3 highz_sel &= (sn_red > 5) highz_sel &= self.nusefilt >= 3 flux_ratio = cat['f160w_flux_aper_3'] / cat['f160w_flux_aper_0'] flux_ratio /= cat.meta['APER_3']**2 / cat.meta['APER_0']**2 if False: sel = highz_sel so = np.argsort(cumpz[sel, iz7]) ids = self.cat['id'][sel][so] i = -1 so = np.argsort(flux_ratio[sel])[::-1] ids = self.cat['id'][sel][so] i = -1 highz_sel &= (cumpz[:, iz6] > 0) & (flux_ratio < 0.45) & ( (cumpz[:, iz6] < 0.3) | (cumpz[:, iz7] < 0.3) | (((cumpz[:, iz8] < 0.4) | (cumpz[:, iz9] < 0.5)) & (flux_ratio < 0.5))) # Big objects likely diffraction spikes # big = (self.cat['flux_radius'] > 10) # highz_sel &= ~big #flux_ratio = self.cat['flux_aper_0']/self.cat['flux_aper_2'] sel = highz_sel so = np.argsort(hmag[sel]) ids = self.cat['id'][sel][so] i = -1 # Red uv = -2.5 * np.log10(zout['restU'] / zout['restV']) red_sel = ((zout['z160'] > 1.) & (uv > 1.5)) | ((zout['z160'] > 1.5) & (uv > 1.1)) red_sel &= (self.zbest < 4) & (hmag < 22) # & (~hmag.mask) red_sel &= (zout['mass'] > 10**10.5) #& (self.cat['class_valid'] > 0.8) red_sel &= (self.cat['flux_radius'] > 2.5) red_sel &= (zout['restV'] / zout['restV_err'] > 3) red_sel &= (chi2 < 3) #red_sel &= (sn_red > 20) sel = red_sel so = np.argsort(hmag[sel]) ids = self.cat['id'][sel][so] i = -1 ds9 = None for j in self.idx[sel][so]: id_j, ra, dec = self.cat['id', 'ra', 'dec'][j] # Photo-z fig, data = self.show_fit(id_j, ds9=ds9, show_fnu=True) #highz_sel[j]) lab = '{0} {1}\n'.format(root, id_j) lab += 'H={0:.1f} z={1:.1f}\n'.format(hmag[j], self.zbest[j]) lab += 'U-V={0:.1f}, logM={1:4.1f}'.format(uv[j], np.log10(zout['mass'][j])) ax = fig.axes[0] ax.text(0.95, 0.95, lab, ha='right', va='top', transform=ax.transAxes, fontsize=9, bbox=dict(facecolor='w', edgecolor='None', alpha=0.5)) yl = ax.get_ylim() ax.set_ylim(yl[0], yl[1] * 1.1) fig.savefig('{0}_{1:05d}.eazy.png'.format(root, id_j), dpi=70) plt.close() # Cutout #from grizli_aws.aws_drizzle import drizzle_images #rgb_params = {'output_format': 'png', 'output_dpi': 75, 'add_labels': False, 'show_ir': False, 'suffix':'.rgb'} rgb_params = None #aws_bucket = 's3://grizli/SelectedObjects/' aws_bucket = None label = '{0}_{1:05d}'.format(root, id_j) if not os.path.exists('{0}.rgb.png'.format(label)): drizzle_images(label=label, ra=ra, dec=dec, pixscale=0.06, size=8, pixfrac=0.8, theta=0, half_optical_pixscale=False, filters=[ 'f160w', 'f814w', 'f140w', 'f125w', 'f105w', 'f110w', 'f098m', 'f850lp', 'f775w', 'f606w', 'f475w' ], remove=False, rgb_params=rgb_params, master='grizli-jan2019', aws_bucket=aws_bucket) show_all_thumbnails(label=label, filters=[ 'f775w', 'f814w', 'f098m', 'f105w', 'f110w', 'f125w', 'f140w', 'f160w' ], scale_ab=np.clip(hmag[j], 19, 22), close=True)
def auto_run(root='j023507-040202'): import os import matplotlib.pyplot as plt from grizli import utils from grizli.pipeline import auto_script, photoz utils.set_warnings() tab = utils.GTable.gread('{0}_footprint.fits'.format(root)) HOME_PATH = os.getcwd() auto_script.VALID_FILTERS = [ 'F098M', 'F105W', 'F110W', 'F125W', 'F127M', 'F139M', 'F140W', 'F153M', 'F160W', 'F410M', 'F435W', 'F438W', 'F439W', 'F450W', 'F467M', 'F475W', 'F475X', 'F547M', 'F550M', 'F555W', 'F569W', 'F600LP', 'F606W', 'F621M', 'F622W', 'F625W', 'F675W', 'F689M', 'F702W', 'F763M', 'F775W', 'F791W', 'F814W', 'F845M', 'F850LP', 'F350LP' ] IS_PARALLEL = utils.column_string_operation( tab['proposal_pi'], 'alkan', method='count', logical='or').sum() > 0 auto_script.go(root=root, maglim=[19, 23], HOME_PATH=HOME_PATH, inspect_ramps=False, manual_alignment=False, is_parallel_field=IS_PARALLEL, reprocess_parallel=False, only_preprocess=True, run_extractions=False, run_fit=False, s3_sync='cp', fine_radec=None, combine_all_filters=False, gaia_by_date=True, align_simple=False, align_clip=100, master_radec=None, is_dash=False, run_parse_visits=True, reference_wcs_filters=[ 'F160W', 'F140W', 'F125W', 'F105W', 'F110W', 'F098M', 'F814W', 'F850LP', 'F606W', 'F435W' ]) plt.ioff() fig = auto_script.field_rgb(root=root, HOME_PATH=HOME_PATH, xsize=18) plt.close(fig) # Photo-z try: out = photoz.eazy_photoz(root, object_only=False, force=True, aper_ix=1, sys_err=0.05, apply_prior=False, beta_prior=True, external_limits=3, external_sys_err=0.3) except: pass
def select_objects(): from grizli.pipeline import photoz import numpy as np total_flux = 'flux_auto_fix' total_flux = 'flux_auto' # new segmentation masked SEP catalogs self, cat, zout = photoz.eazy_photoz(root, object_only=False, apply_prior=False, beta_prior=True, aper_ix=1, force=True, get_external_photometry=False, compute_residuals=False, total_flux=total_flux) flux = self.cat[total_flux]*1. hmag = 23.9-2.5*np.log10(cat['f160w_tot_2']) # Reddest HST band lc_clip = self.lc*1 lc_clip[self.lc > 1.55e4] = 0 # in case ground-based / WISE red band ixb = np.argmax(lc_clip) sn_red = self.cat[self.flux_columns[ixb]]/self.cat[self.err_columns[ixb]] grad = np.gradient(self.zgrid) cumpz = np.cumsum(self.pz*grad, axis=1); cumpz = (cumpz.T/cumpz[:,-1]).T chi2 = (self.chi_best / self.nusefilt) iz6 = np.where(self.zgrid > 6.0)[0][0] iz7 = np.where(self.zgrid > 7)[0][0] iz8 = np.where(self.zgrid > 8)[0][0] iz9 = np.where(self.zgrid > 9)[0][0] highz_sel = (hmag < 27.5) & (self.cat['class_valid'] > 0.8) #highz_sel |= (cumpz[:,iz6] < 0.3) & (self.cat['flux_radius'] > 2.5) #highz_sel &= (self.cat['flux_radius'] > 2.5) highz_sel &= chi2 < 3 highz_sel &= (sn_red > 5) highz_sel &= self.nusefilt >= 3 flux_ratio = (cat['f160w_flux_aper_3'] - cat['f160w_bkg_aper_3'])/(cat['f160w_flux_aper_0'] - cat['f160w_bkg_aper_0']) flux_ratio /= cat.meta['APER_3']**2/cat.meta['APER_0']**2 if False: sel = highz_sel so = np.argsort(cumpz[sel,iz7]); ids = self.cat['id'][sel][so]; i=-1 so = np.argsort(flux_ratio[sel])[::-1]; ids = self.cat['id'][sel][so]; i=-1 highz_sel &= (cumpz[:,iz6] > 0) & (flux_ratio < 0.45) & ((cumpz[:,iz6] < 0.3) | (cumpz[:,iz7] < 0.3) | (((cumpz[:,iz8] < 0.4) | (cumpz[:,iz9] < 0.5)) & (flux_ratio < 0.5))) # Big objects likely diffraction spikes # big = (self.cat['flux_radius'] > 10) # highz_sel &= ~big #flux_ratio = self.cat['flux_aper_0']/self.cat['flux_aper_2'] sel = highz_sel so = np.argsort(hmag[sel]); ids = self.cat['id'][sel][so]; i=-1 # Red uv = -2.5*np.log10(zout['restU']/zout['restV']) red_sel = ((zout['z160'] > 1.) & (uv > 1.5)) | ((zout['z160'] > 1.5) & (uv > 1.1)) red_sel &= (self.zbest < 4) & (hmag < 22)# & (~hmag.mask) red_sel &= (zout['mass'] > 10**10.5) #& (self.cat['class_valid'] > 0.8) red_sel &= (self.cat['flux_radius'] > 2.5) red_sel &= (zout['restV']/zout['restV_err'] > 3) red_sel &= (chi2 < 3) #red_sel &= (sn_red > 20) sel = red_sel so = np.argsort(hmag[sel]); ids = self.cat['id'][sel][so]; i=-1 ds9 = None for j in self.idx[sel][so]: id_j, ra, dec = self.cat['id', 'ra', 'dec'][j] # Photo-z fig, data = self.show_fit(id_j, ds9=ds9, show_fnu=True) #highz_sel[j]) lab = '{0} {1}\n'.format(root, id_j) lab += 'H={0:.1f} z={1:.1f}\n'.format(hmag[j], self.zbest[j]) lab += 'U-V={0:.1f}, logM={1:4.1f}'.format(uv[j], np.log10(zout['mass'][j])) ax = fig.axes[0] ax.text(0.95, 0.95, lab, ha='right', va='top', transform=ax.transAxes, fontsize=9, bbox=dict(facecolor='w', edgecolor='None', alpha=0.5)) yl = ax.get_ylim() ax.set_ylim(yl[0], yl[1]*1.1) fig.savefig('{0}_{1:05d}.eazy.png'.format(root, id_j), dpi=70) plt.close() # Cutout #from grizli_aws.aws_drizzle import drizzle_images #rgb_params = {'output_format': 'png', 'output_dpi': 75, 'add_labels': False, 'show_ir': False, 'suffix':'.rgb'} rgb_params = None #aws_bucket = 's3://grizli/SelectedObjects/' aws_bucket = None label = '{0}_{1:05d}'.format(root, id_j) if not os.path.exists('{0}.rgb.png'.format(label)): drizzle_images(label=label, ra=ra, dec=dec, pixscale=0.06, size=8, pixfrac=0.8, theta=0, half_optical_pixscale=False, filters=['f160w', 'f814w', 'f140w', 'f125w', 'f105w', 'f110w', 'f098m', 'f850lp', 'f775w', 'f606w', 'f475w'], remove=False, rgb_params=rgb_params, master='grizli-jan2019', aws_bucket=aws_bucket) show_all_thumbnails(label=label, filters=['f775w','f814w','f098m','f105w','f110w','f125w','f140w','f160w'], scale_ab=np.clip(hmag[j],19,22), close=True)
def run_photoz(root='', k_hawki=True): # xxxx from grizli import utils from grizli.pipeline import photoz import numpy as np if k_hawki: kfilt = '269' # HAWKI else: kfilt = '259' # VISTA extra_translate = { 'HSCg_flux': 'F314', 'HSCg_err': 'E314', 'HSCr_flux': 'F315', 'HSCr_err': 'E315', 'HSCi_flux': 'F316', 'HSCi_err': 'E316', 'HSCz_flux': 'F317', 'HSCz_err': 'E317', 'HSCy_flux': 'F318', 'HSCy_err': 'E318', 'HSCn816_flux': 'F319', 'HSCn816_err': 'E319', 'ks_flux': 'F' + kfilt, 'ks_err': 'E' + kfilt, 'zMosaic3_flux_aper': 'F297', # DECam z 'zMosaic3_fluxerr_aper': 'E297', 'r90prime_flux_aper': 'F295', # DECam r 'r90prime_fluxerr_aper': 'E295' } if True: extra = { 'TEMPLATES_FILE': 'templates/fsps_full_2019/xfsps_QSF_12_v3.SB.param' } new_wave = np.hstack([ utils.log_zgrid([100, 2.e4], 1000. / 3.e5), utils.log_zgrid([2.e4, 1.e8], 1e4 / 3.e5) ]) extra['RESAMPLE_WAVE'] = new_wave extra['SYS_ERR'] = 0.03 else: extra = {} self, cat, zout = photoz.eazy_photoz(root + '_irac', object_only=False, apply_prior=False, beta_prior=True, aper_ix=1, force=True, get_external_photometry=False, compute_residuals=False, total_flux='flux_auto', extra_params=extra, extra_translate=extra_translate, zpfile='zphot.zeropoint') return self, cat, zout