Loading Catalog/C3Catalog.py +46 −7 Original line number Diff line number Diff line Loading @@ -84,10 +84,46 @@ class C3Catalog(CatalogBase): self.rng_sedGal = random.Random() self.rng_sedGal.seed(pix_id) # Use healpix index as the random seed self.ud = galsim.UniformDeviate(pix_id) # Apply astrometric modeling # in C3 case only aberration ra_arr = gals['ra_true'][:] dec_arr = gals['dec_true'][:] if self.config["obs_setting"]["enable_astrometric_model"]: ra_list = ra_arr.tolist() dec_list = dec_arr.tolist() pmra_list = np.zeros(ngals).tolist() pmdec_list = np.zeros(ngals).tolist() rv_list = np.zeros(ngals).tolist() parallax_list = [1e-9] * ngals dt = datetime.fromtimestamp(self.pointing.timestamp) date_str = dt.date().isoformat() time_str = dt.time().isoformat() ra_arr, dec_arr = on_orbit_obs_position( input_ra_list=ra_list, input_dec_list=dec_list, input_pmra_list=pmra_list, input_pmdec_list=pmdec_list, input_rv_list=rv_list, input_parallax_list=parallax_list, input_nstars=ngals, input_x=self.pointing.sat_x, input_y=self.pointing.sat_y, input_z=self.pointing.sat_z, input_vx=self.pointing.sat_vx, input_vy=self.pointing.sat_vy, input_vz=self.pointing.sat_vz, input_epoch="J2015.5", input_date_str=date_str, input_time_str=time_str ) for igals in range(ngals): param = self.initialize_param() param['ra'] = gals['ra_true'][igals] param['dec'] = gals['dec_true'][igals] param['ra'] = ra_arr[igals] param['dec'] = dec_arr[igals] param['ra_orig'] = gals['ra_true'][igals] param['dec_orig'] = gals['dec_true'][igals] if not self.chip.isContainObj(ra_obj=param['ra'], dec_obj=param['dec'], margin=200): continue param['mag_use_normal'] = gals['mag_true_g_lsst'][igals] Loading Loading @@ -129,7 +165,8 @@ class C3Catalog(CatalogBase): param['star'] = 2 # Quasar self.ids += 1 param['id'] = self.ids # param['id'] = self.ids param['id'] = gals['galaxyID'][igals] if param['star'] == 0: obj = Galaxy(param, self.rotation) Loading @@ -141,9 +178,9 @@ class C3Catalog(CatalogBase): def _load_stars(self, stars, pix_id=None): nstars = len(stars['sourceID']) # Apply astrometric modeling # in C3 case only aberration ra_arr = stars["RA"][:] dec_arr = stars["Dec"][:] # if "astrometric_lib" in self.config["obs_setting"] and self.config["obs_setting"]["enable_astrometric_model"]: if self.config["obs_setting"]["enable_astrometric_model"]: ra_list = ra_arr.tolist() dec_list = dec_arr.tolist() Loading @@ -170,20 +207,22 @@ class C3Catalog(CatalogBase): input_vz=self.pointing.sat_vz, input_epoch="J2015.5", input_date_str=date_str, input_time_str=time_str, # lib_path=lib_path input_time_str=time_str ) for istars in range(nstars): param = self.initialize_param() param['ra'] = ra_arr[istars] param['dec'] = dec_arr[istars] param['ra_orig'] = stars["RA"][istars] param['dec_orig'] = stars["Dec"][istars] if not self.chip.isContainObj(ra_obj=param['ra'], dec_obj=param['dec'], margin=200): continue param['mag_use_normal'] = stars['app_sdss_g'][istars] if param['mag_use_normal'] >= 26.5: continue self.ids += 1 param['id'] = self.ids # param['id'] = self.ids param['id'] = stars['sourceID'][istars] param['sed_type'] = stars['sourceID'][istars] param['model_tag'] = stars['model_tag'][istars] param['teff'] = stars['teff'][istars] Loading ObservationSim/Config/ChipOutput.py +67 −59 Original line number Diff line number Diff line Loading @@ -23,73 +23,81 @@ class ChipOutput(object): self.cat_name = 'MSC_' + config["obs_setting"]["date_obs"] + config["obs_setting"]["time_obs"] + "_" + str(pointing_ID).rjust(7, '0') + "_" + self.chipLabel.rjust(2,'0') + ".cat" self.subdir = subdir # hdr1 = "#ID ID_chip filter xImage yImage ra dec z mag flag SNR " hdr1 = "#ID ID_chip filter xImage yImage ra dec z mag flag " hdr2 = "thetaR bfrac hlr_disk hlr_bulge e1_disk e2_disk e1_bulge e2_bulge " hdr3 = "e1PSF e2PSF e1 e2 g1 g2 e1OBS e2OBS " hdr4 = "sed_type av redden " hdr5 = "star_model teff logg feh\n" # fmt1 = "%10d %4d %5s %10.3f %10.3f %15.6f %15.6f %7.4f %8.4f %2d %9.2f " fmt1 = "%10d %4d %5s %10.3f %10.3f %15.6f %15.6f %7.4f %8.4f %2d " fmt2 = "%8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f " fmt3 = "%8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f " fmt4 = "%2d %8.4f %8.4f " fmt5 = "%10s %8.4f %8.4f %8.4f\n" self.hdr = hdr1 + hdr2 + hdr3 + hdr4 + hdr5 self.fmt = fmt1 + fmt2 + fmt3 + fmt4 + fmt5 hdr1 = "obj_ID ID_chip filter xImage yImage ra dec ra_orig dec_orig z mag obj_type " hdr2 = "thetaR bfrac hlr_disk hlr_bulge e1_disk e2_disk e1_bulge e2_bulge g1 g2 " hdr3 = "sed_type av redden " hdr4 = "pm_ra pm_dec RV parallax\n" fmt1 = "%10d %4d %5s %10.3f %10.3f %15.8f %15.8f %15.8f %15.8f %7.4f %8.4f %15s " fmt2 = "%8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f " fmt3 = "%2d %8.4f %8.4f " fmt4 = "%15.8f %15.8f %15.8f %15.8f\n" self.hdr = hdr1 + hdr2 + hdr3 + hdr4 self.fmt = fmt1 + fmt2 + fmt3 + fmt4 print("pointing_type = %s\n"%(pointing_type)) if pointing_type == 'MS': self.cat = open(os.path.join(self.subdir, self.cat_name), "w") print("Creating catalog file %s ...\n"%(os.path.join(self.subdir, self.cat_name))) self.cat.write(self.hdr) def updateHDR(self, hdr): hdrNew = [{"name":"RDNOISE", "value":self.chip.read_noise, "comment":"read noise in e-/pixel"}, {"name":"DARK", "value":self.chip.dark_noise, "comment":"Dark noise (e-/pixel/s)"}, {"name":"EXPTIME", "value":self.exptime, "comment":"exposure time in second"}, {"name":"GAIN", "value":self.chip.gain, "comment":"CCD gain in e-/ADU"}, {"name":"SATURATE","value":65535.0, "comment":"saturation level"}, {"name":"CCDCHIP", "value":int(self.chipLabel), "comment":"chip ID in the CCD mosaic"}, {"name":"FILTER", "value":self.filt.filter_type, "comment":"filter name"}, {"name":"MJD-OBS", "value":self.mjdTime, "comment":"Modified Julian Date (MJD) of observation"}, {"name":"DATE-OBS","value":self.imgKey1, "comment":"Date of observation"}, {"name":"EQUINOX", "value":2000.0}, {"name":"RADECSYS","value":"ICRS"}, {"name":"RA", "value":self.ra_cen, "comment":"telescope pointing center"}, {"name":"DEC", "value":self.dec_cen, "comment":"telescope pointing center"}, {"name":"OBJECT", "value":"CSS-OS"}, {"name":"WCSDIM", "value":2.0, "comment":"WCS Dimensionality"}, {"name":"EXTNAME", "value":"IM1", "comment":"Extension name"}, {"name":"BSCALE", "value":1.0}, {"name":"BZERO", "value":0.0}, {"name":"OBSID", "value":self.imgKey0, "comment":"Observation ID"}, {"name":"CCDNAME", "value":"ccd"+self.chipLabel,"comment":"CCD name"}, {"name":"RSPEED", "value":10.0, "comment":"Read speed"}, {"name":"CHIPTEMP","value":-100.0, "comment":"Chip temperature"}, {"name":"DATASEC", "value":"1:%d,1:%d"%(self.chip.npix_x,self.chip.npix_y), "comment":"Data section"}, {"name":"CCDSUM", "value":self.chip.npix_x*self.chip.npix_y, "comment":"CCD pixel summing"}, {"name":"NSUM", "value":self.chip.npix_x*self.chip.npix_y, "comment":"CCD pixel summing"}, {"name":"AUTHOR", "value":"CSST-Sim Group"}, {"name":"GROUP", "value":"Weak Lensing Working Group for CSST"}] for item in hdrNew: hdr.add_record(item) return hdr # def updateHDR(self, hdr): # hdrNew = [{"name":"RDNOISE", "value":self.chip.read_noise, "comment":"read noise in e-/pixel"}, # {"name":"DARK", "value":self.chip.dark_noise, "comment":"Dark noise (e-/pixel/s)"}, # {"name":"EXPTIME", "value":self.exptime, "comment":"exposure time in second"}, # {"name":"GAIN", "value":self.chip.gain, "comment":"CCD gain in e-/ADU"}, # {"name":"SATURATE","value":65535.0, "comment":"saturation level"}, # {"name":"CCDCHIP", "value":int(self.chipLabel), "comment":"chip ID in the CCD mosaic"}, # {"name":"FILTER", "value":self.filt.filter_type, "comment":"filter name"}, # {"name":"MJD-OBS", "value":self.mjdTime, "comment":"Modified Julian Date (MJD) of observation"}, # {"name":"DATE-OBS","value":self.imgKey1, "comment":"Date of observation"}, # {"name":"EQUINOX", "value":2000.0}, # {"name":"RADECSYS","value":"ICRS"}, # {"name":"RA", "value":self.ra_cen, "comment":"telescope pointing center"}, # {"name":"DEC", "value":self.dec_cen, "comment":"telescope pointing center"}, # {"name":"OBJECT", "value":"CSS-OS"}, # {"name":"WCSDIM", "value":2.0, "comment":"WCS Dimensionality"}, # {"name":"EXTNAME", "value":"IM1", "comment":"Extension name"}, # {"name":"BSCALE", "value":1.0}, # {"name":"BZERO", "value":0.0}, # {"name":"OBSID", "value":self.imgKey0, "comment":"Observation ID"}, # {"name":"CCDNAME", "value":"ccd"+self.chipLabel,"comment":"CCD name"}, # {"name":"RSPEED", "value":10.0, "comment":"Read speed"}, # {"name":"CHIPTEMP","value":-100.0, "comment":"Chip temperature"}, # {"name":"DATASEC", "value":"1:%d,1:%d"%(self.chip.npix_x,self.chip.npix_y), "comment":"Data section"}, # {"name":"CCDSUM", "value":self.chip.npix_x*self.chip.npix_y, "comment":"CCD pixel summing"}, # {"name":"NSUM", "value":self.chip.npix_x*self.chip.npix_y, "comment":"CCD pixel summing"}, # {"name":"AUTHOR", "value":"CSST-Sim Group"}, # {"name":"GROUP", "value":"Weak Lensing Working Group for CSST"}] # for item in hdrNew: # hdr.add_record(item) # return hdr # def cat_add_obj(self, obj, pos_img, snr, pos_shear, g1, g2): def cat_add_obj(self, obj, pos_img, pos_shear, g1, g2): def cat_add_obj(self, obj, pos_img, pos_shear): ximg = pos_img.x - self.chip.bound.xmin + 1.0 yimg = pos_img.y - self.chip.bound.ymin + 1.0 e1, e2, g1, g2, e1OBS, e2OBS = obj.getObservedEll(g1, g2) if obj.type == 'galaxy': line = self.fmt%(obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], obj.thetaR, obj.bfrac, obj.hlr_disk, obj.hlr_bulge, obj.e1_disk, obj.e2_disk, obj.e1_bulge, obj.e2_bulge, pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, obj.sed_type, obj.param['av'], obj.param['redden'], 'n', 0, 0, 0) elif obj.type == "quasar": line = self.fmt % (obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, obj.sed_type, obj.param['av'], obj.param['redden'], 'n', 0.0, 0.0, 0.0) else: line = self.fmt%(obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, 0, 0.0, 0.0, obj.param['model_tag'], obj.param['teff'], obj.param['logg'],obj.param['feh']) # line = self.fmt%(obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS) # if obj.type == 'galaxy': # line = self.fmt%(obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], obj.thetaR, obj.bfrac, obj.hlr_disk, obj.hlr_bulge, # obj.e1_disk, obj.e2_disk, obj.e1_bulge, obj.e2_bulge, # pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, obj.sed_type, obj.param['av'], obj.param['redden'], 'n', 0, 0, 0) # elif obj.type == "quasar": # line = self.fmt % (obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, # obj.getMagFilter(self.filt), obj.param["star"], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, # pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, obj.sed_type, obj.param['av'], obj.param['redden'], 'n', 0.0, 0.0, 0.0) # else: # line = self.fmt%(obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, # pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, 0, 0.0, 0.0, obj.param['model_tag'], obj.param['teff'], obj.param['logg'],obj.param['feh']) # print( # obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.ra_orig, obj.dec_orig, obj.z, obj.getMagFilter(self.filt), obj.type, # obj.thetaR, obj.bfrac, obj.hlr_disk, obj.hlr_bulge, obj.e1_disk, obj.e2_disk, obj.e1_bulge, obj.e2_bulge, obj.g1, obj.g2, # obj.sed_type, obj.av, obj.redden, # obj.pmra, obj.pmdec, obj.rv, obj.parallax) line = self.fmt%( obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.ra_orig, obj.dec_orig, obj.z, obj.getMagFilter(self.filt), obj.type, obj.thetaR, obj.bfrac, obj.hlr_disk, obj.hlr_bulge, obj.e1_disk, obj.e2_disk, obj.e1_bulge, obj.e2_bulge, obj.g1, obj.g2, obj.sed_type, obj.av, obj.redden, obj.pmra, obj.pmdec, obj.rv, obj.parallax) self.cat.write(line) ObservationSim/MockObject/Catalog.pydeleted 100644 → 0 +0 −179 Original line number Diff line number Diff line import os import numpy as np import random import galsim import h5py as h5 import healpy as hp from astropy.table import Table from astropy.coordinates import spherical_to_cartesian from ObservationSim.MockObject.Star import Star from ObservationSim.MockObject.Galaxy import Galaxy from ObservationSim.MockObject.Quasar import Quasar from ObservationSim.MockObject._util import seds, sed_assign, extAv NSIDE = 128 class Catalog(object): def __init__(self, config, chip, cat_dir=None, pRa=None, pDec=None, sed_dir=None, rotation=None): if cat_dir is not None: self.cat_dir = cat_dir else: self.cat_dir = os.path.join(config["data_dir"], config["input_path"]["cat_dir"]) self.sed_dir = sed_dir self.chip = chip self.seed_Av = config["random_seeds"]["seed_Av"] if pRa is not None: self.pRa = float('{:8.4f}'.format(pRa)) if pDec is not None: self.pDec = float('{:8.4f}'.format(pDec)) # star_file = 'stars_ccd' + chip.getChipLabel(chip.chipID) + '_p_RA'+str(self.pRa) + '_DE' + str(self.pDec) + '.hdf5' # galaxy_file = 'galaxies_ccd' + chip.getChipLabel(chip.chipID) + '_p_RA'+str(self.pRa) + '_DE' + str(self.pDec) + '.hdf5' if "star_cat" in config["input_path"] and config["input_path"]["star_cat"]: star_file = config["input_path"]["star_cat"] star_SED_file = config["SED_templates_path"]["star_SED"] self.star_path = os.path.join(self.cat_dir, star_file) self.star_SED_path = os.path.join(config["data_dir"], star_SED_file) self._load_SED_lib_star() if "galaxy_cat" in config["input_path"] and config["input_path"]["galaxy_cat"]: galaxy_file = config["input_path"]["galaxy_cat"] self.galaxy_path = os.path.join(self.cat_dir, galaxy_file) self.galaxy_SED_path = os.path.join(config["data_dir"], config["SED_templates_path"]["galaxy_SED"]) self._load_SED_lib_gals() if "rotateEll" in config["shear_setting"]: self.rotation = float(int(config["shear_setting"]["rotateEll"]/45.)) else: self.rotation = 0. # self._load_SED_info() self._get_healpix_list() self._load() def _get_healpix_list(self): self.sky_coverage = self.chip.getSkyCoverageEnlarged(self.chip.img.wcs, margin=0.2) # self.sky_coverage_enlarged = self.chip.getSkyCoverageEnlarged(self.chip.img.wcs, margin=0.5) ra_min, ra_max, dec_min, dec_max = self.sky_coverage.xmin, self.sky_coverage.xmax, self.sky_coverage.ymin, self.sky_coverage.ymax ra = np.deg2rad(np.array([ra_min, ra_max, ra_max, ra_min])) dec = np.deg2rad(np.array([dec_max, dec_max, dec_min, dec_min])) # phi, theta = ra, np.pi/2. - dec # vertices_pix = np.unique(hp.ang2pix(NSIDE, theta, phi)) # print(vertices_pix) vertices = spherical_to_cartesian(1., dec, ra) self.pix_list = hp.query_polygon(NSIDE, np.array(vertices).T, inclusive=True) print("HEALPix List: ", self.pix_list) def _load_SED_lib_star(self): self.tempSED_star = h5.File(self.star_SED_path,'r') def _load_SED_lib_gals(self): # tempdir_gal = os.path.join(self.template_dir, "Galaxy/") # tempdir_star = os.path.join(self.template_dir, "PicklesStars/") # self.tempSed_star, self.tempRed_star = seds("star.list", seddir=tempdir_star) self.tempSed_gal, self.tempRed_gal = seds("galaxy.list", seddir=self.galaxy_SED_path) def _load_SED_info(self): sed_info_file = os.path.join(self.sed_dir, "sed.info") sed_info = Table.read(sed_info_file, format="ascii") self.cosids = sed_info["IDCosmoDC2"] self.objtypes = sed_info["objType"] def _load_gals(self, gals, pix_id=None): ngals = len(gals['galaxyID']) self.rng_sedGal = random.Random() self.rng_sedGal.seed(pix_id) # Use healpix index as the random seed self.ud = galsim.UniformDeviate(pix_id) for igals in range(ngals): param = {} param['ra'] = gals['ra_true'][igals] param['dec'] = gals['dec_true'][igals] param['z'] = gals['redshift_true'][igals] param['model_tag'] = 'None' param['gamma1'] = 0 param['gamma2'] = 0 param['kappa'] = 0 param['delta_ra'] = 0 param['delta_dec'] = 0 sersicB = gals['sersic_bulge'][igals] hlrMajB = gals['size_bulge_true'][igals] hlrMinB = gals['size_minor_bulge_true'][igals] sersicD = gals['sersic_disk'][igals] hlrMajD = gals['size_disk_true'][igals] hlrMinD = gals['size_minor_disk_true'][igals] aGal = gals['size_true'][igals] bGal = gals['size_minor_true'][igals] param['bfrac'] = gals['bulge_to_total_ratio_i'][igals] param['theta'] = gals['position_angle_true'][igals] param['hlr_bulge'] = np.sqrt(hlrMajB * hlrMinB) param['hlr_disk'] = np.sqrt(hlrMajD * hlrMinD) param['ell_bulge'] = (hlrMajB - hlrMinB)/(hlrMajB + hlrMinB) param['ell_disk'] = (hlrMajD - hlrMinD)/(hlrMajD + hlrMinD) param['ell_tot'] = (aGal - bGal) / (aGal + bGal) # Assign each galaxy a template SED param['sed_type'] = sed_assign(phz=param['z'], btt=param['bfrac'], rng=self.rng_sedGal) param['redden'] = self.tempRed_gal[param['sed_type']] param['av'] = self.avGal[int(self.ud()*self.nav)] if param['sed_type'] <= 5: param['av'] = 0.0 param['redden'] = 0 param['star'] = 0 # Galaxy if param['sed_type'] >= 29: param['av'] = 0.6 * param['av'] / 3.0 # for quasar, av=[0, 0.2], 3.0=av.max-av.im param['star'] = 2 # Quasar if not self.chip.isContainObj(ra_obj=param['ra'], dec_obj=param['dec'], margin=200): continue param['mag_use_normal'] = gals['mag_true_g_lsst'][igals] if param['mag_use_normal'] >= 26.5: continue self.ids += 1 param['id'] = self.ids if param['star'] == 0: obj = Galaxy(param, self.rotation) self.objs.append(obj) if param['star'] == 2: obj = Quasar(param) self.objs.append(obj) def _load_stars(self, stars, pix_id=None): nstars = len(stars['sourceID']) for istars in range(nstars): param = {} param['ra'] = stars['RA'][istars] param['dec'] = stars['Dec'][istars] if not self.chip.isContainObj(ra_obj=param['ra'], dec_obj=param['dec'], margin=200): continue param['mag_use_normal'] = stars['app_sdss_g'][istars] if param['mag_use_normal'] >= 26.5: continue self.ids += 1 param['id'] = self.ids param['sed_type'] = stars['sourceID'][istars] param['model_tag'] = stars['model_tag'][istars] param['teff'] = stars['teff'][istars] param['logg'] = stars['grav'][istars] param['feh'] = stars['feh'][istars] param['z'] = 0.0 param['star'] = 1 # Star obj = Star(param) self.objs.append(obj) def _load(self): self.nav = 15005 self.avGal = extAv(self.nav, seed=self.seed_Av) gals_cat = h5.File(self.galaxy_path, 'r')['galaxies'] star_cat = h5.File(self.star_path, 'r')['catalog'] self.objs = [] self.ids = 0 for pix in self.pix_list: gals = gals_cat[str(pix)] stars = star_cat[str(pix)] self._load_gals(gals, pix_id=pix) self._load_stars(stars, pix_id=pix) print("number of objects in catalog: ", len(self.objs)) del self.avGal No newline at end of file ObservationSim/MockObject/CatalogBase.py +25 −21 Original line number Diff line number Diff line Loading @@ -29,29 +29,33 @@ class CatalogBase(metaclass=ABCMeta): "star":-1, "id":-1, "ra":0, "dec":0, "z":0, "dec":0., "ra_orig":0., "dec_orig":0., "z":0., "sed_type":-1, "model_tag":"unknown", "mag_use_normal":100, "theta":0, "kappa":0, "gamma1":0, "gamma2":0, "bfrac":0, "hlr_bulge":0, "hlr_disk":0, "ell_bulge":0, "ell_disk":0, "ell_tot":0, "teff":0, "logg":0, "feh":0, "g1":0, "g2":0, "pmra":0, "pmdec":0, "rv":0, "mag_use_normal":100., "theta":0., "kappa":0., "gamma1":0., "gamma2":0., "bfrac":0., "av":0., "redden":0., "hlr_bulge":0., "hlr_disk":0., "ell_bulge":0., "ell_disk":0., "ell_tot":0., "teff":0., "logg":0., "feh":0., "g1":0., "g2":0., "pmra":0., "pmdec":0., "rv":0., "parallax":1e-9 } return param Loading ObservationSim/MockObject/Galaxy.py +9 −9 File changed.Preview size limit exceeded, changes collapsed. Show changes Loading
Catalog/C3Catalog.py +46 −7 Original line number Diff line number Diff line Loading @@ -84,10 +84,46 @@ class C3Catalog(CatalogBase): self.rng_sedGal = random.Random() self.rng_sedGal.seed(pix_id) # Use healpix index as the random seed self.ud = galsim.UniformDeviate(pix_id) # Apply astrometric modeling # in C3 case only aberration ra_arr = gals['ra_true'][:] dec_arr = gals['dec_true'][:] if self.config["obs_setting"]["enable_astrometric_model"]: ra_list = ra_arr.tolist() dec_list = dec_arr.tolist() pmra_list = np.zeros(ngals).tolist() pmdec_list = np.zeros(ngals).tolist() rv_list = np.zeros(ngals).tolist() parallax_list = [1e-9] * ngals dt = datetime.fromtimestamp(self.pointing.timestamp) date_str = dt.date().isoformat() time_str = dt.time().isoformat() ra_arr, dec_arr = on_orbit_obs_position( input_ra_list=ra_list, input_dec_list=dec_list, input_pmra_list=pmra_list, input_pmdec_list=pmdec_list, input_rv_list=rv_list, input_parallax_list=parallax_list, input_nstars=ngals, input_x=self.pointing.sat_x, input_y=self.pointing.sat_y, input_z=self.pointing.sat_z, input_vx=self.pointing.sat_vx, input_vy=self.pointing.sat_vy, input_vz=self.pointing.sat_vz, input_epoch="J2015.5", input_date_str=date_str, input_time_str=time_str ) for igals in range(ngals): param = self.initialize_param() param['ra'] = gals['ra_true'][igals] param['dec'] = gals['dec_true'][igals] param['ra'] = ra_arr[igals] param['dec'] = dec_arr[igals] param['ra_orig'] = gals['ra_true'][igals] param['dec_orig'] = gals['dec_true'][igals] if not self.chip.isContainObj(ra_obj=param['ra'], dec_obj=param['dec'], margin=200): continue param['mag_use_normal'] = gals['mag_true_g_lsst'][igals] Loading Loading @@ -129,7 +165,8 @@ class C3Catalog(CatalogBase): param['star'] = 2 # Quasar self.ids += 1 param['id'] = self.ids # param['id'] = self.ids param['id'] = gals['galaxyID'][igals] if param['star'] == 0: obj = Galaxy(param, self.rotation) Loading @@ -141,9 +178,9 @@ class C3Catalog(CatalogBase): def _load_stars(self, stars, pix_id=None): nstars = len(stars['sourceID']) # Apply astrometric modeling # in C3 case only aberration ra_arr = stars["RA"][:] dec_arr = stars["Dec"][:] # if "astrometric_lib" in self.config["obs_setting"] and self.config["obs_setting"]["enable_astrometric_model"]: if self.config["obs_setting"]["enable_astrometric_model"]: ra_list = ra_arr.tolist() dec_list = dec_arr.tolist() Loading @@ -170,20 +207,22 @@ class C3Catalog(CatalogBase): input_vz=self.pointing.sat_vz, input_epoch="J2015.5", input_date_str=date_str, input_time_str=time_str, # lib_path=lib_path input_time_str=time_str ) for istars in range(nstars): param = self.initialize_param() param['ra'] = ra_arr[istars] param['dec'] = dec_arr[istars] param['ra_orig'] = stars["RA"][istars] param['dec_orig'] = stars["Dec"][istars] if not self.chip.isContainObj(ra_obj=param['ra'], dec_obj=param['dec'], margin=200): continue param['mag_use_normal'] = stars['app_sdss_g'][istars] if param['mag_use_normal'] >= 26.5: continue self.ids += 1 param['id'] = self.ids # param['id'] = self.ids param['id'] = stars['sourceID'][istars] param['sed_type'] = stars['sourceID'][istars] param['model_tag'] = stars['model_tag'][istars] param['teff'] = stars['teff'][istars] Loading
ObservationSim/Config/ChipOutput.py +67 −59 Original line number Diff line number Diff line Loading @@ -23,73 +23,81 @@ class ChipOutput(object): self.cat_name = 'MSC_' + config["obs_setting"]["date_obs"] + config["obs_setting"]["time_obs"] + "_" + str(pointing_ID).rjust(7, '0') + "_" + self.chipLabel.rjust(2,'0') + ".cat" self.subdir = subdir # hdr1 = "#ID ID_chip filter xImage yImage ra dec z mag flag SNR " hdr1 = "#ID ID_chip filter xImage yImage ra dec z mag flag " hdr2 = "thetaR bfrac hlr_disk hlr_bulge e1_disk e2_disk e1_bulge e2_bulge " hdr3 = "e1PSF e2PSF e1 e2 g1 g2 e1OBS e2OBS " hdr4 = "sed_type av redden " hdr5 = "star_model teff logg feh\n" # fmt1 = "%10d %4d %5s %10.3f %10.3f %15.6f %15.6f %7.4f %8.4f %2d %9.2f " fmt1 = "%10d %4d %5s %10.3f %10.3f %15.6f %15.6f %7.4f %8.4f %2d " fmt2 = "%8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f " fmt3 = "%8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f " fmt4 = "%2d %8.4f %8.4f " fmt5 = "%10s %8.4f %8.4f %8.4f\n" self.hdr = hdr1 + hdr2 + hdr3 + hdr4 + hdr5 self.fmt = fmt1 + fmt2 + fmt3 + fmt4 + fmt5 hdr1 = "obj_ID ID_chip filter xImage yImage ra dec ra_orig dec_orig z mag obj_type " hdr2 = "thetaR bfrac hlr_disk hlr_bulge e1_disk e2_disk e1_bulge e2_bulge g1 g2 " hdr3 = "sed_type av redden " hdr4 = "pm_ra pm_dec RV parallax\n" fmt1 = "%10d %4d %5s %10.3f %10.3f %15.8f %15.8f %15.8f %15.8f %7.4f %8.4f %15s " fmt2 = "%8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f %8.4f " fmt3 = "%2d %8.4f %8.4f " fmt4 = "%15.8f %15.8f %15.8f %15.8f\n" self.hdr = hdr1 + hdr2 + hdr3 + hdr4 self.fmt = fmt1 + fmt2 + fmt3 + fmt4 print("pointing_type = %s\n"%(pointing_type)) if pointing_type == 'MS': self.cat = open(os.path.join(self.subdir, self.cat_name), "w") print("Creating catalog file %s ...\n"%(os.path.join(self.subdir, self.cat_name))) self.cat.write(self.hdr) def updateHDR(self, hdr): hdrNew = [{"name":"RDNOISE", "value":self.chip.read_noise, "comment":"read noise in e-/pixel"}, {"name":"DARK", "value":self.chip.dark_noise, "comment":"Dark noise (e-/pixel/s)"}, {"name":"EXPTIME", "value":self.exptime, "comment":"exposure time in second"}, {"name":"GAIN", "value":self.chip.gain, "comment":"CCD gain in e-/ADU"}, {"name":"SATURATE","value":65535.0, "comment":"saturation level"}, {"name":"CCDCHIP", "value":int(self.chipLabel), "comment":"chip ID in the CCD mosaic"}, {"name":"FILTER", "value":self.filt.filter_type, "comment":"filter name"}, {"name":"MJD-OBS", "value":self.mjdTime, "comment":"Modified Julian Date (MJD) of observation"}, {"name":"DATE-OBS","value":self.imgKey1, "comment":"Date of observation"}, {"name":"EQUINOX", "value":2000.0}, {"name":"RADECSYS","value":"ICRS"}, {"name":"RA", "value":self.ra_cen, "comment":"telescope pointing center"}, {"name":"DEC", "value":self.dec_cen, "comment":"telescope pointing center"}, {"name":"OBJECT", "value":"CSS-OS"}, {"name":"WCSDIM", "value":2.0, "comment":"WCS Dimensionality"}, {"name":"EXTNAME", "value":"IM1", "comment":"Extension name"}, {"name":"BSCALE", "value":1.0}, {"name":"BZERO", "value":0.0}, {"name":"OBSID", "value":self.imgKey0, "comment":"Observation ID"}, {"name":"CCDNAME", "value":"ccd"+self.chipLabel,"comment":"CCD name"}, {"name":"RSPEED", "value":10.0, "comment":"Read speed"}, {"name":"CHIPTEMP","value":-100.0, "comment":"Chip temperature"}, {"name":"DATASEC", "value":"1:%d,1:%d"%(self.chip.npix_x,self.chip.npix_y), "comment":"Data section"}, {"name":"CCDSUM", "value":self.chip.npix_x*self.chip.npix_y, "comment":"CCD pixel summing"}, {"name":"NSUM", "value":self.chip.npix_x*self.chip.npix_y, "comment":"CCD pixel summing"}, {"name":"AUTHOR", "value":"CSST-Sim Group"}, {"name":"GROUP", "value":"Weak Lensing Working Group for CSST"}] for item in hdrNew: hdr.add_record(item) return hdr # def updateHDR(self, hdr): # hdrNew = [{"name":"RDNOISE", "value":self.chip.read_noise, "comment":"read noise in e-/pixel"}, # {"name":"DARK", "value":self.chip.dark_noise, "comment":"Dark noise (e-/pixel/s)"}, # {"name":"EXPTIME", "value":self.exptime, "comment":"exposure time in second"}, # {"name":"GAIN", "value":self.chip.gain, "comment":"CCD gain in e-/ADU"}, # {"name":"SATURATE","value":65535.0, "comment":"saturation level"}, # {"name":"CCDCHIP", "value":int(self.chipLabel), "comment":"chip ID in the CCD mosaic"}, # {"name":"FILTER", "value":self.filt.filter_type, "comment":"filter name"}, # {"name":"MJD-OBS", "value":self.mjdTime, "comment":"Modified Julian Date (MJD) of observation"}, # {"name":"DATE-OBS","value":self.imgKey1, "comment":"Date of observation"}, # {"name":"EQUINOX", "value":2000.0}, # {"name":"RADECSYS","value":"ICRS"}, # {"name":"RA", "value":self.ra_cen, "comment":"telescope pointing center"}, # {"name":"DEC", "value":self.dec_cen, "comment":"telescope pointing center"}, # {"name":"OBJECT", "value":"CSS-OS"}, # {"name":"WCSDIM", "value":2.0, "comment":"WCS Dimensionality"}, # {"name":"EXTNAME", "value":"IM1", "comment":"Extension name"}, # {"name":"BSCALE", "value":1.0}, # {"name":"BZERO", "value":0.0}, # {"name":"OBSID", "value":self.imgKey0, "comment":"Observation ID"}, # {"name":"CCDNAME", "value":"ccd"+self.chipLabel,"comment":"CCD name"}, # {"name":"RSPEED", "value":10.0, "comment":"Read speed"}, # {"name":"CHIPTEMP","value":-100.0, "comment":"Chip temperature"}, # {"name":"DATASEC", "value":"1:%d,1:%d"%(self.chip.npix_x,self.chip.npix_y), "comment":"Data section"}, # {"name":"CCDSUM", "value":self.chip.npix_x*self.chip.npix_y, "comment":"CCD pixel summing"}, # {"name":"NSUM", "value":self.chip.npix_x*self.chip.npix_y, "comment":"CCD pixel summing"}, # {"name":"AUTHOR", "value":"CSST-Sim Group"}, # {"name":"GROUP", "value":"Weak Lensing Working Group for CSST"}] # for item in hdrNew: # hdr.add_record(item) # return hdr # def cat_add_obj(self, obj, pos_img, snr, pos_shear, g1, g2): def cat_add_obj(self, obj, pos_img, pos_shear, g1, g2): def cat_add_obj(self, obj, pos_img, pos_shear): ximg = pos_img.x - self.chip.bound.xmin + 1.0 yimg = pos_img.y - self.chip.bound.ymin + 1.0 e1, e2, g1, g2, e1OBS, e2OBS = obj.getObservedEll(g1, g2) if obj.type == 'galaxy': line = self.fmt%(obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], obj.thetaR, obj.bfrac, obj.hlr_disk, obj.hlr_bulge, obj.e1_disk, obj.e2_disk, obj.e1_bulge, obj.e2_bulge, pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, obj.sed_type, obj.param['av'], obj.param['redden'], 'n', 0, 0, 0) elif obj.type == "quasar": line = self.fmt % (obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, obj.sed_type, obj.param['av'], obj.param['redden'], 'n', 0.0, 0.0, 0.0) else: line = self.fmt%(obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, 0, 0.0, 0.0, obj.param['model_tag'], obj.param['teff'], obj.param['logg'],obj.param['feh']) # line = self.fmt%(obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS) # if obj.type == 'galaxy': # line = self.fmt%(obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], obj.thetaR, obj.bfrac, obj.hlr_disk, obj.hlr_bulge, # obj.e1_disk, obj.e2_disk, obj.e1_bulge, obj.e2_bulge, # pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, obj.sed_type, obj.param['av'], obj.param['redden'], 'n', 0, 0, 0) # elif obj.type == "quasar": # line = self.fmt % (obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, # obj.getMagFilter(self.filt), obj.param["star"], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, # pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, obj.sed_type, obj.param['av'], obj.param['redden'], 'n', 0.0, 0.0, 0.0) # else: # line = self.fmt%(obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.z, obj.getMagFilter(self.filt), obj.param["star"], 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, # pos_shear.g1, pos_shear.g2, e1, e2, g1, g2, e1OBS, e2OBS, 0, 0.0, 0.0, obj.param['model_tag'], obj.param['teff'], obj.param['logg'],obj.param['feh']) # print( # obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.ra_orig, obj.dec_orig, obj.z, obj.getMagFilter(self.filt), obj.type, # obj.thetaR, obj.bfrac, obj.hlr_disk, obj.hlr_bulge, obj.e1_disk, obj.e2_disk, obj.e1_bulge, obj.e2_bulge, obj.g1, obj.g2, # obj.sed_type, obj.av, obj.redden, # obj.pmra, obj.pmdec, obj.rv, obj.parallax) line = self.fmt%( obj.id, int(self.chipLabel), self.filt.filter_type, ximg, yimg, obj.ra, obj.dec, obj.ra_orig, obj.dec_orig, obj.z, obj.getMagFilter(self.filt), obj.type, obj.thetaR, obj.bfrac, obj.hlr_disk, obj.hlr_bulge, obj.e1_disk, obj.e2_disk, obj.e1_bulge, obj.e2_bulge, obj.g1, obj.g2, obj.sed_type, obj.av, obj.redden, obj.pmra, obj.pmdec, obj.rv, obj.parallax) self.cat.write(line)
ObservationSim/MockObject/Catalog.pydeleted 100644 → 0 +0 −179 Original line number Diff line number Diff line import os import numpy as np import random import galsim import h5py as h5 import healpy as hp from astropy.table import Table from astropy.coordinates import spherical_to_cartesian from ObservationSim.MockObject.Star import Star from ObservationSim.MockObject.Galaxy import Galaxy from ObservationSim.MockObject.Quasar import Quasar from ObservationSim.MockObject._util import seds, sed_assign, extAv NSIDE = 128 class Catalog(object): def __init__(self, config, chip, cat_dir=None, pRa=None, pDec=None, sed_dir=None, rotation=None): if cat_dir is not None: self.cat_dir = cat_dir else: self.cat_dir = os.path.join(config["data_dir"], config["input_path"]["cat_dir"]) self.sed_dir = sed_dir self.chip = chip self.seed_Av = config["random_seeds"]["seed_Av"] if pRa is not None: self.pRa = float('{:8.4f}'.format(pRa)) if pDec is not None: self.pDec = float('{:8.4f}'.format(pDec)) # star_file = 'stars_ccd' + chip.getChipLabel(chip.chipID) + '_p_RA'+str(self.pRa) + '_DE' + str(self.pDec) + '.hdf5' # galaxy_file = 'galaxies_ccd' + chip.getChipLabel(chip.chipID) + '_p_RA'+str(self.pRa) + '_DE' + str(self.pDec) + '.hdf5' if "star_cat" in config["input_path"] and config["input_path"]["star_cat"]: star_file = config["input_path"]["star_cat"] star_SED_file = config["SED_templates_path"]["star_SED"] self.star_path = os.path.join(self.cat_dir, star_file) self.star_SED_path = os.path.join(config["data_dir"], star_SED_file) self._load_SED_lib_star() if "galaxy_cat" in config["input_path"] and config["input_path"]["galaxy_cat"]: galaxy_file = config["input_path"]["galaxy_cat"] self.galaxy_path = os.path.join(self.cat_dir, galaxy_file) self.galaxy_SED_path = os.path.join(config["data_dir"], config["SED_templates_path"]["galaxy_SED"]) self._load_SED_lib_gals() if "rotateEll" in config["shear_setting"]: self.rotation = float(int(config["shear_setting"]["rotateEll"]/45.)) else: self.rotation = 0. # self._load_SED_info() self._get_healpix_list() self._load() def _get_healpix_list(self): self.sky_coverage = self.chip.getSkyCoverageEnlarged(self.chip.img.wcs, margin=0.2) # self.sky_coverage_enlarged = self.chip.getSkyCoverageEnlarged(self.chip.img.wcs, margin=0.5) ra_min, ra_max, dec_min, dec_max = self.sky_coverage.xmin, self.sky_coverage.xmax, self.sky_coverage.ymin, self.sky_coverage.ymax ra = np.deg2rad(np.array([ra_min, ra_max, ra_max, ra_min])) dec = np.deg2rad(np.array([dec_max, dec_max, dec_min, dec_min])) # phi, theta = ra, np.pi/2. - dec # vertices_pix = np.unique(hp.ang2pix(NSIDE, theta, phi)) # print(vertices_pix) vertices = spherical_to_cartesian(1., dec, ra) self.pix_list = hp.query_polygon(NSIDE, np.array(vertices).T, inclusive=True) print("HEALPix List: ", self.pix_list) def _load_SED_lib_star(self): self.tempSED_star = h5.File(self.star_SED_path,'r') def _load_SED_lib_gals(self): # tempdir_gal = os.path.join(self.template_dir, "Galaxy/") # tempdir_star = os.path.join(self.template_dir, "PicklesStars/") # self.tempSed_star, self.tempRed_star = seds("star.list", seddir=tempdir_star) self.tempSed_gal, self.tempRed_gal = seds("galaxy.list", seddir=self.galaxy_SED_path) def _load_SED_info(self): sed_info_file = os.path.join(self.sed_dir, "sed.info") sed_info = Table.read(sed_info_file, format="ascii") self.cosids = sed_info["IDCosmoDC2"] self.objtypes = sed_info["objType"] def _load_gals(self, gals, pix_id=None): ngals = len(gals['galaxyID']) self.rng_sedGal = random.Random() self.rng_sedGal.seed(pix_id) # Use healpix index as the random seed self.ud = galsim.UniformDeviate(pix_id) for igals in range(ngals): param = {} param['ra'] = gals['ra_true'][igals] param['dec'] = gals['dec_true'][igals] param['z'] = gals['redshift_true'][igals] param['model_tag'] = 'None' param['gamma1'] = 0 param['gamma2'] = 0 param['kappa'] = 0 param['delta_ra'] = 0 param['delta_dec'] = 0 sersicB = gals['sersic_bulge'][igals] hlrMajB = gals['size_bulge_true'][igals] hlrMinB = gals['size_minor_bulge_true'][igals] sersicD = gals['sersic_disk'][igals] hlrMajD = gals['size_disk_true'][igals] hlrMinD = gals['size_minor_disk_true'][igals] aGal = gals['size_true'][igals] bGal = gals['size_minor_true'][igals] param['bfrac'] = gals['bulge_to_total_ratio_i'][igals] param['theta'] = gals['position_angle_true'][igals] param['hlr_bulge'] = np.sqrt(hlrMajB * hlrMinB) param['hlr_disk'] = np.sqrt(hlrMajD * hlrMinD) param['ell_bulge'] = (hlrMajB - hlrMinB)/(hlrMajB + hlrMinB) param['ell_disk'] = (hlrMajD - hlrMinD)/(hlrMajD + hlrMinD) param['ell_tot'] = (aGal - bGal) / (aGal + bGal) # Assign each galaxy a template SED param['sed_type'] = sed_assign(phz=param['z'], btt=param['bfrac'], rng=self.rng_sedGal) param['redden'] = self.tempRed_gal[param['sed_type']] param['av'] = self.avGal[int(self.ud()*self.nav)] if param['sed_type'] <= 5: param['av'] = 0.0 param['redden'] = 0 param['star'] = 0 # Galaxy if param['sed_type'] >= 29: param['av'] = 0.6 * param['av'] / 3.0 # for quasar, av=[0, 0.2], 3.0=av.max-av.im param['star'] = 2 # Quasar if not self.chip.isContainObj(ra_obj=param['ra'], dec_obj=param['dec'], margin=200): continue param['mag_use_normal'] = gals['mag_true_g_lsst'][igals] if param['mag_use_normal'] >= 26.5: continue self.ids += 1 param['id'] = self.ids if param['star'] == 0: obj = Galaxy(param, self.rotation) self.objs.append(obj) if param['star'] == 2: obj = Quasar(param) self.objs.append(obj) def _load_stars(self, stars, pix_id=None): nstars = len(stars['sourceID']) for istars in range(nstars): param = {} param['ra'] = stars['RA'][istars] param['dec'] = stars['Dec'][istars] if not self.chip.isContainObj(ra_obj=param['ra'], dec_obj=param['dec'], margin=200): continue param['mag_use_normal'] = stars['app_sdss_g'][istars] if param['mag_use_normal'] >= 26.5: continue self.ids += 1 param['id'] = self.ids param['sed_type'] = stars['sourceID'][istars] param['model_tag'] = stars['model_tag'][istars] param['teff'] = stars['teff'][istars] param['logg'] = stars['grav'][istars] param['feh'] = stars['feh'][istars] param['z'] = 0.0 param['star'] = 1 # Star obj = Star(param) self.objs.append(obj) def _load(self): self.nav = 15005 self.avGal = extAv(self.nav, seed=self.seed_Av) gals_cat = h5.File(self.galaxy_path, 'r')['galaxies'] star_cat = h5.File(self.star_path, 'r')['catalog'] self.objs = [] self.ids = 0 for pix in self.pix_list: gals = gals_cat[str(pix)] stars = star_cat[str(pix)] self._load_gals(gals, pix_id=pix) self._load_stars(stars, pix_id=pix) print("number of objects in catalog: ", len(self.objs)) del self.avGal No newline at end of file
ObservationSim/MockObject/CatalogBase.py +25 −21 Original line number Diff line number Diff line Loading @@ -29,29 +29,33 @@ class CatalogBase(metaclass=ABCMeta): "star":-1, "id":-1, "ra":0, "dec":0, "z":0, "dec":0., "ra_orig":0., "dec_orig":0., "z":0., "sed_type":-1, "model_tag":"unknown", "mag_use_normal":100, "theta":0, "kappa":0, "gamma1":0, "gamma2":0, "bfrac":0, "hlr_bulge":0, "hlr_disk":0, "ell_bulge":0, "ell_disk":0, "ell_tot":0, "teff":0, "logg":0, "feh":0, "g1":0, "g2":0, "pmra":0, "pmdec":0, "rv":0, "mag_use_normal":100., "theta":0., "kappa":0., "gamma1":0., "gamma2":0., "bfrac":0., "av":0., "redden":0., "hlr_bulge":0., "hlr_disk":0., "ell_bulge":0., "ell_disk":0., "ell_tot":0., "teff":0., "logg":0., "feh":0., "g1":0., "g2":0., "pmra":0., "pmdec":0., "rv":0., "parallax":1e-9 } return param Loading
ObservationSim/MockObject/Galaxy.py +9 −9 File changed.Preview size limit exceeded, changes collapsed. Show changes