Commit 931e5956 authored by Fang Yuedong's avatar Fang Yuedong
Browse files

update output catalog, apply astrometry module to galaxy catalog, add new PSF tests

parent a5d541c9
Loading
Loading
Loading
Loading
+46 −7
Original line number Diff line number Diff line
@@ -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]
@@ -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)
@@ -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()
@@ -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]
+67 −59
Original line number Diff line number Diff line
@@ -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)
+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
+25 −21
Original line number Diff line number Diff line
@@ -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
+9 −9

File changed.

Preview size limit exceeded, changes collapsed.

Loading